登録日: 2025-10-17
更新日: 2025-11-07
前回は、 「VirtualBox 7.1.10」の仮想マシンに、「Void Linux」(Xfce) を iso イメージからインストールしました:
-
「Void Linux」を「仮想マシン」として使うと、速い?と聞いていた、システムや Firefox ブラウザの起動が、なぜか普通より遅いです。(追記: 原因が判明しました)
ですが、アプリの開発環境としては、「クローン」(仮想マシンのコピー)が使えるので、「すぐに元の環境に戻せる」利点が活きてきます。
-
今回は、その「Void Linux」の「仮想マシン」に、アプリの移植(ソースをダウンロード、ビルド、配置して、パッケージ化する)作業を半自動化してくれる、「xbps-src」のビルド環境をセットアップしました。
そして、いくつかの「アプリ」で試して、
他の Linux ディストリビューションの同様のツール(ビルド環境?)に比べて、
「Void Linux」の「xbps-src」のどこが優秀なのか、確認しました:
ちなみに、ソースの修正は自己責任です。
-
その備忘録です。
-
-
使用したPC は、新しく購入した ミニPC「MINISFORUM NAB5」です。
プロセッサは「Core i5-12450H」で、メモリ 16GB、SSD 512GB です。
-
(注)リンクを戻るときはブラウザの左上の「←」をクリック
Android スマホであれば「ホーム」ボタン隣の「<」をタップ
-
-
目次
-
今回の作業:
-
作業前に、「Void Linux」の仮想マシンのクローンを作成:
「xbps-src」のビルド環境をセットアップ:
「FeatherPad」アプリを、そのまま「パッケージ化」:
アプリ名が小文字の「featherpad」アプリを新規作成し、ヘルプを xbps-src の備忘録にして「パッケージ化」:
「四川省」 (kshisen) ゲームを、移植してそのまま「パッケージ化」:
「四川省」 (kshisen) ゲームを、起動メニューを日本語化して「パッケージ化」:
-
参考になりそうな作業:
「featherpad」アプリで、「パッケージ化」にトライした履歴:
「四川省」 (kshisen) ゲームで、「パッケージ化」にトライした履歴:
「xbps-src」の「ヘルプ」を表示:
「xbps-src」で、アプリを「パッケージ化」する手順:
「xbps-src」で、patch を作る手順:
「xbps-src」のテンプレートファイルを「Haiku OS」のレシピファイルと比較:
「xbps-src」にて、いくつかのアプリの「テンプレート」を抜粋:
最新の「Firefox」のESR 版をダウンロードしてインストール:
パッケージ管理を行う「XBPS」の使い方:
XBPS を使いやすくするため、XBPS の「エイリアス」を作成:
作成した、XBPS の「エイリアス」を使ってみる:
「エイリアス」を使わずに、XBPS を実行してみる:
-
「まとめ へ」
「目次詳細 へ」
-
-
- --- - --- - --- - --- - --- - --- - --- -
ホストOS の「Xubuntu 24.04.3 LTS」を立ち上げ:
-
-
カスタマイズした画面:

前回の投稿の「項番 9.」で、色々とカスタマイズしています:
-
デスクトップ環境が同じ「Xfce」であれば、「Debian」でも「Void Linux」でも見た目もGUI での使い勝手も同じようにカスタマイズできます:
-
大きな違いは、アプリのインストールに使う、「パッケージ管理コマンド」(xbps)が異なることと、
そして、今回の「xbps-src」のビルド環境が使えることです:
-
-
- --- - --- - --- - --- - --- - --- - --- --
-
「VirtualBox 」は、Oracle(オラクル)社が開発している「仮想マシン」を構築するためのソフトウェアです。
-
-
-
- --- - --- - --- - --- - --- - --- - --- ---
-
Ubuntu の公式フレーバー(性格の違う兄弟?)です
「Xubuntu」(ズブントゥ)は、
Ubuntu ベースの、軽量な「Xfce」デスクトップ環境です。
Ubuntu ベースにつき、多くのノウハウ、情報等があること、および問題の少ない「x11」で動いていることが強みです。
-
個人的には使い慣れた環境です。
カスタマイズが色々とできるので、自分にとって使い勝手の良い環境を作れるのが利点です。
-
-
- --- - --- - --- - --- - --- - --- - --- ----
「Void Linux」について:
-
1). 公式サイト:
The Void (Linux) distribution
-

英語のみのサイトです:
-
「Void Linux」は、独立してボランティアのみで開発された、ローリングリリース安定版で提供されている、汎用 Linux オペレーティングシステムです:
-
抜粋:
Void の「パッケージマネージャ」と「ビルドシステム」はゼロから書かれています:
ソフトウェアは「バイナリパッケージ」で提供されるか、「XBPS ソースパッケージコレクション」の助けを借りて「ソース」から直接ビルドされます。
-
このディストリビューションを使う利点のひとつは、優れた「パッケージ管理」です:
→ソースからのビルドを楽しめます:
-
2). runit:
runit を「init システム」および「サービススーパーバイザー」として使用しています。
シンプルさを好む開発者も多いみたい:
-
ただし、ソースからビルドする場合に、「systemd」に依存してるアプリは、うまくビルドできなかったり、ビルドできても動かないかも:
-
3). C ライブラリの多様性( 2つの選択肢):
Void Linux は、「musl」と「GNU libc」の両方の実装をサポートします。
-
→それぞれの利点があるので、それぞれの Live イメージが提供されています:
-
「musl」だと、「GNU libc」よりもリポジトリに登録されてるアプリが(同じか)少ない? 可能性があります:
また、ソースからビルドするにしても、動くかはビルドしてみないとわかりません:
ただし、「xbps-src」のsrcpkgs ディレクトリには、「musl」に対応させたパッケージの「テンプレート」が置かれているので、移植するときは参考になります:
もし動けば、コンパクトで、速くなる?かも:
-
両方の「仮想マシン」を作成して、試してみるのもアリ:
-
4). XBPS:
XBPS(X Binary Package System)パッケージマネージャー:
-
XBPS 0.60.5_1(2025年9月19日 現在)
XBPS は「パッケージマネージャ」で、二条項 BSD ライセンスでゼロから書かれています。
→提供と改善がしやすいように、開発途中で、最もゆるいライセンス形式に変更されたようです:
-
5). xbps-src:
xbps-src は「xbps パッケージビルダー」(ビルドシステム)で、二条項 BSD ライセンスでゼロから書かれています。
-
参考:
-
(1). Void Linux は、XBPS パッケージマネージャのテストディストリビューションとして、
元 NetBSD の開発者である Juan Romero Pardines によって2008年に作成されたみたい。
-
(2). 「xbps-src」に影響を与えた?かもしれない、「pkgsrc」について:
「pkgsrc」は FreeBSD の ports システムから派生したもので、 はじめは NetBSD 専用として開発されていました。その後、 多くののプラットフォーム(Linux を含む)に対応しています。
参考:
Chapter 1. pkgsrc とは何か
-
6). 二条項 BSD ライセンス:
OS や付属するアプリの配布や改善がしやすいように、「旧 BSD ライセンス(四条項 BSD ライセンス)」から「第三条」、「第四条」を削除して、制限をゆるくしたライセンスが採用されています:
参考:
BSD 2-Clause License
-
-
現在のOS のバージョンを表示:
-
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
ホストOS : 「Xubuntu 24.04.3 LTS」
2025-10-17 現在
-
$ uname -r
:
6.8.0-85-generic
→LTS版は安定志向なので、更新の回数は少なめです:
-
リリース:
$ cat /etc/lsb-release
:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.3 LTS"
→LTS 版の更新(ポイントリリース)は、6ヶ月前後で、
今は「24.04.3」にアップされています
-
「x11」と「Wayland」のどちらで動作してるか確認:
$ echo $XDG_SESSION_TYPE
:
x11
→「Wayland」ではなく、「x11」で動作しています。
-
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
ゲストOS : 「Void Linux」
2025-10-17 現在
-
$ uname -r
6.12.52_1
→Ubuntu よりも進んでいます:
-
リリース:
$ cat /etc/os-release
:
NAME="Void"
ID="void"
PRETTY_NAME="Void Linux"
HOME_URL="https://voidlinux.org/"
DOCUMENTATION_URL="https://docs.voidlinux.org/"
LOGO="void-logo"
ANSI_COLOR="0;38;2;71;128;97"
DISTRIB_ID="void"
→ローリングリリースです:
-
「x11」と「Wayland」のどちらで動作してるか確認:
$ echo $XDG_SESSION_TYPE
x11
→「Wayland」ではなく、「x11」で動作しています。
-
-
- --- - --- - --- - --- - --- - --- - --- -----
(前回の続き:)
-
-
- --- - --- - --- - --- - --- - --- - --- ----- -
1. 作業前に、「Void Linux」の仮想マシンのクローンを作成:
-
まずは、失敗してもすぐに戻せるように、「クローン」(仮想マシンのコピー)を作成しました:
-
ディスクの空きが許せば、各ポイントでクローンを作成したいところですが、
サイズが大きいので、せいぜい 2つかな。
-
仮想マシンのショートカット(差分)を作るやり方もありますが、
管理が面倒なので、個人的には使っていません。
もし、ディスクの空きが少なく、使うときは、(わけがわからなくなるので)ひとつだけ、にするのがポイント:
-
1). 「仮想マシン」のクローンを作成:
-
(1). 「仮想マシン」の電源オフ:
-
-
(3). 「仮想マシン」の「Void-Linux」を右クリック→「クローン」

-

名前: 「Void-Linux の原本1」
→「完了」
-
コピーが終わるまで待ちます:
-
(4).「Void-Linux の原本1」にて、「説明」をクリックして、コメントを追記:

-
2). 「Void-Linux の原本1」はさわらずに、「Void-Linux」を選んで、

→「起動」をクリック:
-
3). ログイン画面が表示:

-
4). デスクトップ画面が表示:
-
5). Ctrl+Alt+T で「端末」を起動:

→ログイン画面よりも画面が広がったことに注目:
こちらが設定の「ディスプレイ」で設定している解像度(1600x900)です:
-
-
- --- - --- - --- - --- - --- - --- - --- ----- --
2. 「xbps-src」のビルド環境をセットアップ:
-
Void Linux にて、公式リポジトリにないソフトウェアを
「ソースからビルドして、インストール」するには、「xbps-src」(スクリプト)ツールを使います:
セットアップに失敗した場合は、「void-packages」フォルダを削除して、やり直せます:
-
参考:
Github に置かれた 2つの説明書:
-
「Void Linux」のリポジトリには、「XBPSソースパッケージコレクション」が含まれており、それを使って、Void Linux 配布用のバイナリパッケージがビルドされています:
-
リポジトリに含まれている「xbps-src」スクリプトを使うと、
「ソースを取得」→「コンパイル」→「コンパイル」したファイルを「DestDir」に配置でき、
「xbps-install」および「xbps-query」コマンドで、インストールまたはクエリできる、
「XBPS」バイナリパッケージを生成できます。
-
1). システム更新:
$ sudo xbps-install -Su
-
カーネルの更新があったので、再起動:
$ sudo reboot
-
2). 「xbps-src」で使われるツールがあるか確認:
-
(1). 必要なツール:
GNU bash
xbps >= 0.56
git
common POSIX utilities included by default in almost all UNIX systems
curl
flock - util-linux
bsdtar or GNU tar
install - GNU coreutils
objcopy、objdump、strip、: binutils
→これらのツールの多くは、Void Linux の基本的な「base-system」パッケージなどに含まれていますが、
足りないパッケージがあるかも:
-
(2). 試しに、インストールされているか、いくつかを確認:
$ xbps-query -l | grep -e binutils -e curl -e git
:
ii binutils-2.44_2 GNU binary utilities
ii binutils-doc-2.44_2 GNU binary utilities - info files
ii binutils-libs-2.44_2 GNU binary utilities - shared libraries
ii curl-8.16.0_1 Client that groks URLs
ii libcurl-8.16.0_1 Multiprotocol file transfer library
→「git」がインストールされていません:
-
(3). 「git」がインストールされていないことを確認:
$ xbps-query -s git
$
-
$ xbps-query -Rs git | grep Tool
:
[-] etckeeper-1.18.23_1 Tools to store /etc in a git, mercurial, or darcs repository
[-] git-2.51.0_1 Git Tree History Storage Tool
[-] git-all-2.51.0_1 Git Tree History Storage Tool - meta-package for complete Git installation
[-] git-cvs-2.51.0_1 Git Tree History Storage Tool - CVS support
[-] git-gui-2.51.0_1 Git Tree History Storage Tool - GUI tool
[-] git-libsecret-2.51.0_1 Git Tree History Storage Tool - libsecret credential helper
[-] git-mediate-1.1.0_1 Tool to help resolving git conflicts
[-] git-netrc-2.51.0_1 Git Tree History Storage Tool - netrc credential helper
[-] git-scalar-2.51.0_1 Tool for managing large Git repositories
[-] git-svn-2.51.0_1 Git Tree History Storage Tool - Subversion support
→多いので絞り込み:
-
(5). 「git」のインストール:
$ sudo xbps-install -S git
:
パスワード:
[*] Updating repository `https://repo-fi.voidlinux.org/current/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/nonfree/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/nonfree/x86_64-repodata' ...
Name Action Version New version Download size
perl-Digest-HMAC install - 1.04_1 4354B
perl-Authen-SASL install - 2.1800_1 24KB
perl-Convert-BinHex install - 1.125_3 21KB
perl-IO-stringy install - 2.113_2 27KB
perl-TimeDate install - 2.33_2 25KB
perl-MailTools install - 2.21_3 45KB
perl-MIME-tools install - 5.515_1 114KB
perl-Net-SSLeay install - 1.94_2 282KB
perl-URI install - 5.21_1 57KB
perl-IO-Socket-SSL install - 2.095_1 167KB
perl-Net-SMTP-SSL install - 1.04_3 3123B
git install - 2.51.0_1 9119KB
-
(6). 「git」がインストールされたか確認:
$ xbps-query -l | grep -e binutils -e curl -e git
:
ii binutils-2.44_2 GNU binary utilities
ii binutils-doc-2.44_2 GNU binary utilities - info files
ii binutils-libs-2.44_2 GNU binary utilities - shared libraries
ii curl-8.16.0_1 Client that groks URLs
ii git-2.51.0_1 Git Tree History Storage Tool
ii libcurl-8.16.0_1 Multiprotocol file transfer library
-
$ xbps-query -s git
:
[*] git-2.51.0_1 Git Tree History Storage Tool
→インストールされました:
-
3). 作業フォルダの作成:
$ mkdir -p ~/git/
-
4). 「void-packages」の git リポジトリをクローン(ローカルにコピー):
$ cd ~/git/
$ git clone https://github.com/void-linux/void-packages.git --depth=10
→「--depth=10」を付けて、ダウンロードする履歴の数を制限しました:
すべての履歴をダウンロードしても、スキルがないので利用できず、時間とディスク容量が無駄です:
-
5). 参考: 「--depth=10」を付けたときの、ディスク容量:
-
(1). 「--depth=10」を付けないで、clone した場合:
$ df | grep -e 使用 -e sda
:
ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
/dev/sda2 24592720 14160792 9157356 61% /
/dev/sda1 1046508 152 1046356 1% /boot/efi
→「61%」
ダウンロードだけでなく、チェックもかかるので、時間がかかりました:
-
(2). フォルダを削除:
$ sudo rm -R void-packages
パスワード:
$
-
初期のサイズ:
$ df | grep -e 使用 -e sda
:
ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
/dev/sda2 24592720 13436104 9882044 58% /
/dev/sda1 1046508 152 1046356 1% /boot/efi
→「58%」
-
(3). 「--depth=10」を付けて、clone した場合:
$ df | grep -e 使用 -e sda
:
ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
/dev/sda2 24592720 13592516 9725632 59% /
/dev/sda1 1046508 152 1046356 1% /boot/efi
→「59%」
あっという間に終わりました:
-
(4). 結果を見たいので、「tree」ツールをインストール:
$ sudo xbps-install tree
:
Name Action Version New version Download size
tree install - 2.2.1_1 45KB
-
(5). tree の結果が大きいので、ファイルに出力:
$ pwd
/home/user/git
$ tree -a >~/ドキュメント/tree.md
-
(6). tree の実行結果の確認:
$ less ~/ドキュメント/tree.md
→q で表示終了:
-
6). 「xbps-src」をセットアップ:
$ cd ~/git/void-packages/
$ ./xbps-src binary-bootstrap
→バイナリパッケージからの「ブートストラップ」は、最初のビルド時に自動で行われますが、手動で行っておくのが確実です:
:
77 downloaded, 77 installed, 0 updated, 77 configured, 0 removed, 0 on hold.
=> xbps-src: installed base-chroot successfully!
=> xbps-src: reconfiguring base-chroot...
glibc-locales: configuring ...
Generating GNU libc locales...
C.UTF-8... done.
en_US.UTF-8... done.
glibc-locales: configured successfully.
ca-certificates: configuring ...
ca-certificates: configured successfully.
=> xbps-src: removing autodeps, please wait...
=> xbps-src: cleaning up masterdir...
[user@user-pc void-packages]$
→glibc のロケールが英語に設定されました:
完了:
-
7). 「制限付き」とマークされた、配布に制限のあるパッケージもビルドできるように設定ファイルに追加:
-
(1). 作業前の確認:
$ cd ~/git/void-packages/
-
$ ls -1p etc
:
defaults.conf
defaults.virtual
xbps.d/
-
(2). 「~/git/void-packages/etc/conf」に設定を追加:
$ cd ~/git/void-packages/
$ echo XBPS_ALLOW_RESTRICTED=yes >> etc/conf
-
$ ls -1p etc
:
conf ←(新規作成)
defaults.conf
defaults.virtual
xbps.d/
-
(3). 確認:
$ cat ~/git/void-packages/etc/conf
XBPS_ALLOW_RESTRICTED=yes
→和訳: 「XBPS_制限付き許可」=はい
-
8). 再起動:
$ sudo reboot
-
確認:
$ cd ~/git/void-packages/
-
$ ls -1p
:
CONTRIBUTING.md
COPYING
Manual.md
README.md
common/
etc/
hostdir/
masterdir-x86_64/
srcpkgs/
xbps-src
-
$ ls -1p hostdir/
:
binpkgs/
repocache-x86_64/
sources/
-
$ ls masterdir-x86_64
:
bin destdir home lib32 mnt root sys var
boot dev host lib64 opt run tmp void-packages
builddir etc lib media proc sbin usr
-
$ ls masterdir-x86_64/destdir/
$
-
$ ls masterdir-x86_64/builddir/
$
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ---
3. 「featherpad」アプリを「パッケージ化」する場合:
-
トライした履歴は「項番 21.」を参照:
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----
3-1. 「FeatherPad」アプリを、そのまま「パッケージ化」:
-
1). ビルド環境に移動:
$ cd ~/git/void-packages/
-
2). 「テンプレート」ファイルを確認:
$ cat ~/git/void-packages/srcpkgs/FeatherPad/template
# Template file for 'FeatherPad'
pkgname=FeatherPad
version=1.6.2
revision=1
build_style=cmake
hostmakedepends="qt6-tools qt6-base-devel pkg-config"
makedepends="libX11-devel libXext-devel qt6-svg-devel hunspell-devel"
short_desc="Lightweight Qt6 plain-text editor for Linux"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-3.0-or-later"
homepage="https://github.com/tsujan/FeatherPad"
changelog="https://github.com/tsujan/FeatherPad/raw/master/ChangeLog"
distfiles="https://github.com/tsujan/FeatherPad/archive/V${version}.tar.gz"
checksum=9753796b2a525a4d6b13696681e9fbb094edcc20e8aadffcd5bb6fe22d0a5fdb
→「distfiles=」の ${version} に「version=」の値が入ります:
-
3). パッケージ化:
$ cd ~/git/void-packages/
$ ./xbps-src pkg FeatherPad
:
=> Registering new packages to /host/binpkgs
index: added `FeatherPad-1.6.2_1' (x86_64).
index: 1 packages registered.
=> FeatherPad-1.6.2_1: removing autodeps, please wait...
=> FeatherPad-1.6.2_1: cleaning build directory...
=> FeatherPad: removing files from destdir...
[user@user-pc void-packages]$
→完了:
パッケージは「hostdir/binpkgs」に生成されます:
-
4). すでにインストールしている「FeatherPad」を削除:
ギリギリまで使いました:
-
$ sudo xbps-remove FeatherPad
:
Name Action Version New version Download size
FeatherPad remove 1.6.2_1 - -
→設定ファイルは残ります:
-
5). 「パッケージ化」されたパッケージを、インストール:
今回は、制限のない、通常のパッケージです:
$ sudo xbps-install --repository hostdir/binpkgs FeatherPad
:
Name Action Version New version Download size
FeatherPad install - 1.6.2_1 -
-
6). インストールされたか確認:
$ xbps-query -s FeatherPad
:
[*] FeatherPad-1.6.2_1 Lightweight Qt6 plain-text editor for Linux
-
実行ファイルの場所:
$ which featherpad
/usr/bin/featherpad
→小文字です:
-
-
- --- - --- - --- - --- - --- - --- - --- ----- -----
3-2. アプリ名が小文字の「featherpad」アプリを新規作成し、ソースを修正して「パッケージ化」:
-
「FeatherPad」アプリはそのままで、小文字に変えた「featherpad」アプリを「新規作成」しました:
「ヘルプ」を日本語化する代わりに、役に立つ「xbps-src」の「備忘録」を表示するようにしました:
ちなみに、「備忘録」はテキストファイルなので、運用中に簡単に修正できます:
-
1). フォルダを作成:
$ cd ~/git/void-packages/
$ sudo mkdir -p srcpkgs/featherpad/patches/
-
2). 「テンプレート」ファイルを作成:
$ sudo featherpad ~/git/void-packages/srcpkgs/featherpad/template
↓ すべて貼り付け:
# Template file for 'featherpad'
pkgname=featherpad
version=1.6.2
revision=1
build_style=cmake
hostmakedepends="qt6-tools qt6-base-devel pkg-config"
makedepends="libX11-devel libXext-devel qt6-svg-devel hunspell-devel"
short_desc="Lightweight Qt6 plain-text editor for Linux"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-3.0-or-later"
homepage="https://github.com/tsujan/FeatherPad"
changelog="https://github.com/tsujan/FeatherPad/raw/master/ChangeLog"
distfiles="https://github.com/tsujan/FeatherPad/archive/V${version}.tar.gz"
checksum=9753796b2a525a4d6b13696681e9fbb094edcc20e8aadffcd5bb6fe22d0a5fdb
→Ctrl+S で保存:
-
3). 「パッチ」ファイルを作成 1:
「help」を新規作成するために、「help」を削除:
-
$ sudo featherpad ~/git/void-packages/srcpkgs/featherpad/patches/01.help-del.patch
↓ すべて貼り付け:
--- a/featherpad/data/help 2025-10-11 15:08:34.023423019 +0900
+++ b/featherpad/data/help 1970-01-01 09:00:00.000000000 +0900
@@ -1,292 +0,0 @@
-***************
-* General *
-***************
-
-FeatherPad is a single-instance application by default; all its windows share the same configuration and the same process, which will terminate only if all windows are closed.
-
-However, if FeatherPad is started with the command-line option "--standalone" or "-s", it will have a single window with a separate process, independently of other FeatherPad windows.
-
-Rarely, the standalone mode may be needed. For example, if you want to use FeatherPad as the "git" editor, you will need "featherpad -s" as the editor command because "git" does not work correctly with single-instance editors.
-
-Use the standalone mode with care. If a standalone window is opened alongside other windows, any change in configuration, recent files, etc., which may have been made in those windows, will not be reflected by it, and if it is the last closed window, it will overwrite those changes.
-
-The standalone mode is also an exception to the window/tab managing rules explained in this document.
-
-Enter "featherpad --help" in a terminal emulator to see all command-line options.
-
-NOTE: FeatherPad makes use of D-Bus to have a single process. Therefore, in (non-Linux) systems without D-Bus, it is always in the standalone mode, which means that its windows do not know about each other.
-
-*********************
-* Drag-and-Drop *
-*********************
-
-Files can be dragged and dropped into FeatherPad windows.
-
-Also, tabs can be dragged from a window and dropped into another window or outside all FeatherPad windows. In the first case, the dropped tab will appear after the previously active tab; in the second case, a new window containing the dropped tab will be created, i.e. the tab will be detached.
-
-************
-* Tabs *
-************
-
-Tabs can be reordered or detached by the mouse.
-
-If there is more than one tab, each one will have a right-click menu for closing its right or left tabs. With more than one tab, it is also possible to detach the active tab by clicking the related item on the File menu or with Ctrl+T.
-
-If a file is opened in a tab, the right-click menu of that tab will also contain two items for copying the name and path of the file as well as an item for opening its containing folder with the default file manager.
-
-For users' comfort, double clicking on an empty area of the tab-bar creates a new tab.
-
-There are (customizable) shortcuts for switching tabs in various ways (see the File menu), but Ctrl+Tab is not one of them because the Tab key is reserved for text editing (see Keyboard Shortcuts, near the end of this document).
-
-***********************
-* File Management *
-***********************
-
-Under X11, if there is a FeatherPad window on the current virtual desktop or viewport, so that more than half of its width as well as its height is visible, files will be opened as new tabs in it; otherwise, a new window will be created. Also, when the window on the current desktop/viewport has a modal dialog, another window is created.
-
-In this way, FeatherPad is aware of X11 virtual desktops under most Linux desktop environments, although there are exceptions (like Enlightenment).
-
-Files are always opened after the active tab unless it is empty, in which case the first file will be opened in it. If a single file is opened, its tab will be activated, but in the case of multiple files, the active tab will not change.
-
-If a file is opened multiple times, its second (third,…) instance will be uneditable by default and will have a light yellow or dark red background, depending on whether the default or the dark color scheme is used. To make it editable, click on the newly created 'Edit' button on the toolbar or the 'Edit' menu. After that, these two buttons will disappear again.
-
-If the opened file is a symbolic link (symlink), the context menu of its tab will have two extra items for copying its target path and opening its target inside the current window.
-
-Executable script files could be run from inside FeatherPad if the corresponding option is enabled in the Preferences dialog. Then also a Run button will appear on the toolbar and the File menu whenever needed. If no terminal command is used to run them, their output and error messages will be shown by a popup dialog.
-
-FeatherPad remembers recently modified or opened files, depending on which option is enabled in the Preferences dialog. It can also open the files of the last window on a session startup. However, it has a more advanced session manager, which provides the user with options for saving a session and restoring or removing saved sessions at any time and without limit.
-
-***********************************
-* Sessions and Side-Pane Mode *
-***********************************
-
-Sessions can be saved and opened by using the Session Manager dialog. As mentioned above, there is no limit to the number of stored sessions. Each session can have any name and consist of any number of files. All files of a session are opened in the current FeatherPad window, and their cursor positions are remembered.
-
-FeatherPad also has a side-pane mode, which can be enabled either temporarily or with startup. It is most suitable for working with sessions because its file list is alphabetically ordered and can be filtered. Each pane item has a right-click menu, which contains menu-items for various jobs when there is more than one page. Items can also be removed by middle-clicking without being selected.
-
-The side-pane mode does not have features provided by tabs — for example, tab drag-and-drop is missing from it — and conversely — for example, tabs are not sorted and cannot be filtered — but the side-pane and tab modes can be used interchangeably by means of the Side-Pane menu-item, its toolbar button or its shortcut (Ctrl+Alt+P by default), and also by middle-clicking an empty space inside the tab-bar or side-pane.
-
-To focus the side-pane when another widget has the focus, press Ctrl+Escape. To return the focus to the editor's main view from the side-pane or anywhere else, press the Escape key.
-
-*****************
-* Encodings *
-*****************
-
-FeatherPad tries to guess encodings when opening files. Although it often guesses them right, there is no exact way for that. Therefore, there are some encodings in the Options menu. If you choose one, the text could be saved with it by using the item "Save with Encoding" on the File menu. By default, all texts are saved with UTF-8, which covers all alphabets.
-
-As Qt6 has removed the support for the legacy encodings, they are also removed from FeatherPad. Usually, you do not need to worry about encodings; nowadays, UTF-8 is the standard and is used everywhere.
-
-*****************************
-* Programming Languages *
-*****************************
-
-The programming language of a file is detected based on its mime type or name, and its syntax will be highlighted if the syntax highlighting is enabled and supports the language in question.
-
-If a text has no programming language or its syntax is not supported, only its hyperlinks/URLs will be highlighted, and it will be possible to open them by right clicking them and activating the related menu-item or by pressing the Control key, moving the cursor over them, and clicking them while the cursor is like a pointing hand.
-
-If the option "Preferences → Text → Support syntax override" is enabled and checked, a language button will be added to the status bar for overriding the original syntax or lack of it. Reloading a document restores its original syntax.
-
-There are also options in the Preferences dialog for showing whitespaces (spaces, tabs), line and document ends, and vertical position lines when syntax highlighting is enabled (by default or temporarily).
-
-The colors of syntax highlighting can be customized in "Preferences → Syntax Colors". Each syntax color may have different meanings in different programming languages, but only the most important meanings are mentioned. The color value of whitespaces can be changed in the same place.
-
-*******************************
-* Searching and Replacing *
-*******************************
-
-In FeatherPad, searching and replacing are done by separate widgets for the user to be able to search one string and replace another. Moreover, a separate replacement widget may prevent an unintentional replacement.
-
-To remove the yellow highlights after finishing a search, you could
-
-* Click on the 'Clear' icon of the search entry, or
-* Press Ctrl+K while the search entry has focus, or
-* Empty the search entry and press Enter or F3 in it, or
-* Hide the search bar by focusing it (with Ctrl+F) and then, pressing Ctrl+F (again).
-
-Each search entry has a search history which can be shown as a popup list by clicking its arrow or by pressing Ctrl+Up/Down when it has focus. The topmost item shows the most recent searched text. When the entry has focus, Up and Down arrow keys as well as PageUp and PageDown keys can be used for selecting history items without showing the popup list: Up and Down change the selection by one item, while PageUp and PageDown select the topmost (most recent) and bottommost (oldest) items respectively.
-
-FeatherPad can use a shared history for all search entries, whether they are in the same window or in different windows of the same FeatherPad process. By default, each search entry has a separate history but that can be changed by checking "Preferences → Window → Use a shared search history".
-
-The shared search history starts with every session and is forgotten as soon as the session ends (i.e., when all windows are closed — there is no point in remembering the search history indefinitely).
-
-The 'Replace' docked window respects the settings for 'Match Case', 'Whole Word' and 'Regular Expression' on the search bar (in the last case, the matching text should be a regular expression, while the replacing text is always an ordinary string, although capturing groups like "\1", "\2",… are supported in it). It can be detached from and reattached to the main window at top or bottom. To remove the green highlights after replacing text, you could either hide/close the 'Replace' docked window or do as in the case of removing yellow search highlights.
-
-The 'Replace' docked window is never shown without the search bar because the settings of the latter are needed by the former.
-
-Pressing the Escape key is the easiest way of focusing the editor's main view, without changing anything else.
-
-NOTE: The Escape key never clears the search/replacement entry because the user might want to resume searching/replacing later. To clear the search/replacement entry when it is focused, press Ctrl+K.
-
-******************************
-* Selection Highlighting *
-******************************
-
-If "Preferences → Text → Selection highlighting" is checked, all case-sensitive and whole matches of the selected text will be highlighted by a light blue color (or dark blue when the dark color scheme is used). The selected text does not need to be a whole string but the highlighted matches are always whole strings.
-
-The selection highlighting can be used for finding nearby whole strings quickly. It is separate from the (yellow) search highlighting and can be used besides it.
-
-***********************
-* Going to A Line *
-***********************
-
-The Jump bar can be shown by clicking its item on the toolbar or the Search menu. Jumping will happen after pressing Enter while the Jump spinbox is active. If the checkbox beside it is checked, all the text between the text cursor and the target line will be selected.
-
-******************
-* Status Bar *
-******************
-
-The status bar not only shows information about the opened file but can also contain other widgets when certain properties are enabled in the Preferences dialog. You could also hide it in the Preferences dialog, in which case, the item "Document Properties" will appear on the File menu and could show it temporarily.
-
-***********************
-* Wheel Scrolling *
-***********************
-
-If the cursor is inside the text view, the speed of (mouse) wheel scrolling will be normal. If, in addition, the Shift key is pressed, the text will scroll one line per wheel turn.
-
-"Inertial" scrolling can be enabled in the Text section of the Preferences dialog. It creates a kind of inertia with wheel scrolling when the cursor is inside the text view.
-
-For fast wheel scrolling, put the cursor on the vertical scrollbar. Then, each step of wheel turn moves the view by one page. If the Shift key is also pressed, the view will be moved by half the page.
-
-Also, see the section "Keyboard Shortcuts" → "Scrolling", below.
-
-********************
-* Text Tabbing *
-********************
-
-A single text line could be tabbed by the Tab key and untabbed by Shift+Tab (which is also called "BackTab") if the cursor is at its start. If multiple lines are (partially) selected, Tab and BackTab will affect all of them, regardless of the cursor position.
-
-If Ctrl+Tab is used, the tabulation will be done by 4 spaces instead of a tab (the number of spaces can be changed in the Preferences dialog). This is sometimes called "soft tab".
-
-In FeatherPad, "hard" and "soft" tabs are not mutually exclusive because some texts may need one and some the other.
-
-With Ctrl+Meta+Tab, the text will be tabbed by 2 spaces, while Shift+Meta+Tab is for 2-space untabbing as far as possible.
-
-All text tabs of a document can be converted to spaces (soft tabs) by using the menu item "Text Tabs to Spaces" in the right-click menu or the "Edit" menu. This conversion is done based on the value of Preferences → Text → Text tab size, which is 4 by default. The document needs to be saved after the conversion.
-
-************************
-* Column Selection *
-************************
-
-A text column can be selected, starting from the current text cursor, by holding Shift+Ctrl and pressing the left mouse button anywhere inside the text, such that the positions of the current text cursor and the press point become two diagonal corners of the column.
-
-If the left mouse button is kept pressed and Shift+Ctrl is still held, moving the mouse will change the column, until the left mouse button is released.
-
-A column is deselected when the text cursor is moved in any way (e.g. by arrow keys, or by clicking anywhere without holding Shift+Ctrl) and on some other occasions, but it is kept intact on right clicking. With a selected column, the items "Cut", "Copy", "Paste" and "Delete" in the right-click and Edit menus work on that column. Column pasting may be a little confusing at first, but it can be used for pasting a copied column on another.
-
-If a character is typed when a column is selected, that character is inserted before it for all of its rows, without deselecting it. This property can be used, e.g., for commenting out multiple lines of codes together. Also, Backspace moves the whole column backward by removing the characters that immediately precede it, and the Delete key deletes the column.
-
-However, the Enter and BackTab keys do not make sense with a column, and so, they simply deselect it and do their normal jobs at the cursor position (to untab multiple lines, select them in the usual way and press the BackTab key, as explained in the section "Text Tabbing", above).
-
-NOTE: Column selection is useful only with unwrapped lines, although it is possible with wrapped lines too. Also, it may seem counter-intuitive with non-monospace fonts, with multi-character or double-width graphemes, or where hard tabs are used instead of soft tabs, because it is based on the number of characters, not their widths.
-
-********************
-* Auto-Bracket *
-********************
-
-With "auto-bracketing" enabled in Preferences, if a left parenthesis, brace, square bracket or double-quote is typed, a right parenthesis, brace, square bracket or double-quote will respectively be inserted after it and the cursor will be moved between them, provided that the next character is not a letter or number. (Although double-quote is not a bracket and has identical left and right signs, it is included in this.)
-
-Also, if any part of the text is selected from end to start, typing of a left parenthesis, brace, etc. will add a right one after the selection end, so that the selection will be put inside parentheses, braces, etc.
-
-For user convenience, if Enter/Return is pressed after a text selection is auto-bracketed by parentheses "(...)" or braces "{...}", the bracketed text will be put below the left bracket and above the right one.
-
-The same holds for RTL (right-to-left) texts but with right and left reversed.
-
-****************************
-* Ellipsis and Em Dash *
-****************************
-
-With the corresponding option enabled in Preferences and under proper circumstances, a triple period is replaced by an ellipsis ("…") and a double hyphen by an em dash (long dash, "—") while the user is typing.
-
-The proper circumstances depend on the pressed key and, maybe, what comes before those characters. For example, in the case of a triple period, the Space or Enter/Return key should be pressed and the triple period should not follow a period. Double hyphens are not replaced in programming languages because they may have special meanings.
-
-Some other strings may also be replaced appropriately in non-programming languages, e.g., "->", ">=" and "<=" may be changed to "→", "≥" and "≤" respectively. The existence of these characters are guaranteed by all good fonts.
-
-**********************
-* Spell Checking *
-**********************
-
-For spell checking, a Hunspell dictionary should be first added to Preferences → Text → Hunspell dictionary path (a Hunspell dictionary has the suffix ".dic" and should be accompanied by an affix file with the suffix ".aff"). Spell checking can be done by F2, but its shortcut can be customized.
-
-If "Ignore All" is clicked, all instances of the word will be ignored during the current check. If you know that the word is correct, you could click "Add To Dictionary" and it will be saved for all checks. If "Correct All" is clicked, other instances of the word will be corrected in the same way when reached during the current check.
-
-**************************
-* Keyboard Shortcuts *
-**************************
-
-To change a customizable shortcut, double click it and press your chosen shortcut inside the shortcut editor of the Preferences dialog. To clear a shortcut, use a modifier key (like Shift). To cancel, press the Escape key before the shortcut loses focus.
-
-All shortcuts, except for the extra ones below, can be found on menus or as tooltips, and many of them can be customized in the Preferences dialog.
-
-NOTE: Text editing shortcuts may be different for non-Linux OS's.
-
-Useful Extra (Hidden) Shortcuts:
-=================================
-
-Window:
-*********
-Escape Focus the editor's main view without changing anything else
-Ctrl+Escape Focus the side-pane if existing
-F11 (Un-)Fullscreen
-
-Zooming:
-**********
-Ctrl+= Zoom in (also Ctrl++ or Ctrl + mouse wheel)
-Ctrl+- Zoom out (also Ctrl + mouse wheel)
-Ctrl+0 Reset zooming
-
-Running a process:
-********************
-Ctrl+E Run the executable file opened in this tab (only if enabled in Preferences)
-Ctrl+Alt+E Exit (kill) the above process immediately
-
-Scrolling:
-***********
-Shift+Mouse Wheel If cursor is inside view, scroll up/down by one wrapped line;
- if cursor is on vertical scrollbar, scroll up/down by half the page
-Alt+Mouse Wheel If cursor is inside view, scroll horizontally when horizontal
- scrollbar is visible (which may happen when wrapping is disabled)
-Ctrl+Up/Down Scroll up/down by one wrapped line without moving text cursor
-Ctrl+PageUp/PageDown Scroll up/down by one page without moving text cursor
-
-Moving text cursor:
-********************
-Home Go to to the line start plus the indentation
-End Go to to the line end
-Ctrl+Home Go to to the text start
-Ctrl+End Go to to the text end
-Right/Left Move the cursor one character to the right/left
-Ctrl+Right/Left Move the cursor one word to the right/left
-Up/Down Go to the same position in the previous/next wrapped line
-Shift+Up/Down Go to the same position in the previous/next wrapped line while selecting text
-Meta+Up/Down Go to the same position in the previous/next (real) line
-Meta+Shift+Up/Down Go to the same position in the previous/next (real) line while selecting text
-PageUp/PageDown Go to the same position in the previous/next page
-
-Text tabulation:
-*****************
-Tab Ordinary text tabulation (its length can be changed in Preferences)
-Shift+Tab BackTab (the reverse of Tab)
-Ctrl+Tab 4-space text tabulation (can be changed in Preferences)
-Ctrl+Meta+Tab 2-space text tabulation
-Shift+Meta+Tab 2-space BackTab, as far as possible
-
-Text editing:
-**************
-Insert Toggle overwrite mode
-Backspace Delete to the left of the text cursor
-Ctrl+Backspace Delete to the the start of the word
-Delete Delete to the right of the text cursor (the opposite of Backspace)
-Ctrl+Delete Delete to the end of the word (the opposite of Ctrl+Backspace)
-Ctrl+K Delete to the end of the line (when the editor has focus)
-Ctrl+Shift+Up/Down Move the current line or selected lines upward/downward
-Shift+Enter Insert newline with the non-letter prefix of the current line
- (to write code comments or lists easily, for example)
-
-***********************
-* Multiple Clicks *
-***********************
-
-Double click Select a whole word
-Ctrl + Double click Select between spaces
-Triple click Select a line without its leading and trailing whitespaces
-Ctrl + Triple click Select a whole line plus its trailing newline if any
→Ctrl+S で保存:
-
4). 「パッチ」ファイルを作成 2:
「help」を "別の内容" で、新規作成:
ちなみに、下記の内容を変更するときは、行頭の「+」と、「行数」を変えてはいけません:
-
$ sudo featherpad ~/git/void-packages/srcpkgs/featherpad/patches/02.help-translation-jp.patch
↓ すべて貼り付け:
--- a/featherpad/data/help 1970-01-01 09:00:00.000000000 +0900
+++ b/featherpad/data/help 2025-10-11 23:47:17.689850053 +0900
@@ -0,0 +1,457 @@
+ sudo featherpad /usr/share/featherpad/help
+
+################################################################
+######### 「xbps-src」の使い方 ################################
+
+
+1). <パッケージ名> をビルドして、パッケージ化:
+
+$ cd ~/git/void-packages/
+$ ./xbps-src pkg <パッケージ名>
+
+
+2). パッケージ化した <パッケージ名> をインストール:
+
+$ sudo xbps-install --repository hostdir/binpkgs <パッケージ名>
+
+
+3). インストールされたか確認:
+
+$ xbps-query -Rs <パッケージ名>
+
+
+-
+
+##################################################################
+######### 「xbps-src」の「ヘルプ表示」(和訳)####################
+
+$ cd ~/git/void-packages/
+$ ./xbps-src --help
+
+---------------------------------------------------------------
+$ xbps-src [オプション] <ターゲット> [引数]
+---------------------------------------------------------------
+
+-
+
+##################################################################
+(1). ターゲットの説明: (1つだけが指定できます)
+
+-
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+binary-bootstrap
+ ホストリポジトリから <masterdir> にブートストラップパッケージを、インストールします。
+ オプションの '-A <arch>' フラグが設定されている場合、このアーキテクチャから
+ ブートストラップパッケージとその必要な XBPS ユーティリティがインストールされます。
+ <masterdir> は、chroot 操作のために初期化されます。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+bootstrap
+ ソースからブートストラップパッケージを <masterdir> にビルドして、インストールします。
+ オプションの '-A <arch>' フラグが設定されている場合、このアーキテクチャから
+ ブートストラップパッケージとその必要な XBPS ユーティリティをビルドして、インストール
+ します。
+ <masterdir> は、chroot 操作のために初期化されます。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+bootstrap-update
+ XBPS 設定ファイルの登録リポジトリから利用可能な、最新のバージョンでブートストラップ
+ パッケージを更新します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+consistency-check
+ すべてのパッケージで一貫性チェックを、実行します
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+chroot
+ <masterdir> の chroot に、入ります。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+clean-repocache
+ <hostdir>/repocache から時代遅れのパッケージを、削除します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+fetch <パッケージ名>
+ パッケージのソースファイルを、ダウンロードします。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+extract <パッケージ名>
+ パッケージのソースファイルを、ビルドディレクトリに展開します。
+ デフォルトは、<masterdir>/builddir に設定されます。
+
+ →「hostdir/sources/」ディレクトリにダウンロードはされませんが、
+ ビルドディレクトリ「masterdir-x86_64/builddir/」に、ソースが展開されます:
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+patch <パッケージ名>
+ パッケージソースにパッチを当て、設定とビルドのために
+ パッケージを準備するために必要な、他の操作を実行します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+configure <パッケージ名>
+ パッケージを構成します(Fetch + Extract + Patch + Configure)
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+build <パッケージ名>
+ パッケージのソースをビルドします(Fetch + Extract + Patch + Configure + Build)
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+check <パッケージ名>
+ パッケージのソースをビルドした後に、パッケージのチェックを実行します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+install <パッケージ名>
+ ターゲットのパッケージを <destdir> にインストールしますが、
+ 検査目的なので、バイナリパッケージのビルドをせず、ビルドディレクトリも削除しません。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+pkg <パッケージ名>
+ <パッケージ名> のバイナリパッケージ、およびすべての必要な依存関係をビルドして、
+ パッケージ化します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+clean [パッケージ名]
+ 自動で依存関係を削除し、<masterdir>/builddir および <masterdir>/destdir を
+ クリーンアップします。
+ もし、<パッケージ名> が指定されている場合は、<masterdir>/destdir のパッケージ
+ ファイルと <masterdir>/buiddir のビルドディレクトリが削除されます。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+list
+ chroot される <masterdir> にインストールされたパッケージの一覧を表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+remove <パッケージ名>
+ <destdir> からターゲットパッケージを削除します。
+ ビルドテンプレートと <パッケージ名>-<version> が一致していない場合は、何も
+ 削除されません。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+remove-autodeps
+ 自動的にインストールされたすべてのパッケージの依存関係を削除します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+purge-distfiles
+ <hostdir>/sources の、すべての時代遅れの distfiles を削除します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show <パッケージ名>
+ 指定されたパッケージの情報を表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-avail <パッケージ名>
+ 特定のアーキテクチャ用にパッケージをビルドできる場合は「0」を返します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-build-deps <パッケージ名>
+ <パッケージ名> に必要なビルドの依存関係を表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-check-deps <パッケージ名>
+ <パッケージ名> に必要なチェックの依存関係を表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-deps <パッケージ名>
+ <パッケージ名> の必要な ランタイムの依存関係を表示します。
+ パッケージは DestDir にインストールする必要があります。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-files <パッケージ名>
+ <パッケージ名> によってインストールされたファイルを表示します。
+ パッケージは DestDir にインストールする必要があります。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-hostmakedepends <パッケージ名>
+ <パッケージ名>の必要なホストビルド依存関係を表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-makedepends <パッケージ名>
+ <パッケージ名> の必要なターゲットビルド依存関係を表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-options <パッケージ名>
+ <パッケージ名>による利用可能なビルドオプションを表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-shlib-provides <パッケージ名>
+ <パッケージ名> の提供された shlibs のリストを表示します。
+ パッケージは DestDir にインストールする必要があります。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-shlib-requires <パッケージ名>
+ <パッケージ名>に必要なshlibsのリストを表示します。
+ パッケージは DestDir にインストールする必要があります。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-var <var>
+ xbps-src で定義されている場合、<var> の値を表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-repo-updates
+ XBPS リポジトリの時代遅れのパッケージのリストを表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-sys-updates
+ システム内の時代遅れのパッケージのリストを表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-local-updates
+ ローカルリポジトリの時代遅れのパッケージのリストを表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+sort-dependencies <pkg> <pkgN+1> ...
+ 追加の引数として、指定されたパッケージのリストが与えられた場合、
+ ソートされた依存関係リストが 標準出力 に返されます。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+update-bulk
+ 時代遅れのシステムリポジトリ内のすべてのパッケージを再ビルドします。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+update-sys
+ 時代遅れのシステム内のすべてのパッケージを再ビルドし、それらを更新します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+update-local
+ 時代遅れのローカルリポジトリのすべてのパッケージを再ビルドします。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+update-check <パッケージ名>
+ 新しいリリースについて、<パッケージ名> の上流サイトをチェックします。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+update-hash-cache
+ 既存のソース distfiles で、ハッシュキャッシュを更新します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+zap
+ ccache、distcc および host ディレクトリが保存された、masterdir を削除します。
+
+
+-
+
+################################################################
+(2). オプションの説明:
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-1
+ ターゲットパッケージの依存関係が欠けている場合は、それらをビルドせずに、失敗
+ します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-A <ホスト>
+ 指定のホストマシンを使用します。
+ masterdir-<ホスト> がまだ存在しない場合は自動的に作成されます。
+
+ 一部のホストマシンは、プロセッサによってネイティブにサポートされていない場合、
+ qemu-user と binfmt-support を必要とする場合があります。
+
+サポートされているホスト:
+
+ aarch64-musl
+ aarch64
+ armv5te-musl
+ armv5te
+ armv5tel-musl
+ armv5tel
+ armv6hf-musl
+ armv6hf
+ armv6l-musl
+ armv6l
+ armv7hf-musl
+ armv7hf
+ armv7l-musl
+ armv7l
+ i686-musl
+ i686
+ mips-musl
+ mipsel-musl
+ mipselhf-musl
+ mipshf-musl
+ ppc-musl
+ ppc
+ ppc64-musl
+ ppc64
+ ppc64le-musl
+ ppc64le
+ ppcle-musl
+ ppcle
+ riscv64-musl
+ riscv64
+ x86_64-musl
+ x86_64
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-a <ターゲット>
+指定されたターゲットマシンのパッケージをクロスコンパイルします。
+
+サポートされているターゲット:
+
+ aarch64-musl
+ aarch64
+ armv5te-musl
+ armv5te
+ armv5tel-musl
+ armv5tel
+ armv6hf-musl
+ armv6hf
+ armv6l-musl
+ armv6l
+ armv7hf-musl
+ armv7hf
+ armv7l-musl
+ armv7l
+ i686-musl
+ i686
+ mips-musl
+ mipsel-musl
+ mipselhf-musl
+ mipshf-musl
+ ppc-musl
+ ppc
+ ppc64-musl
+ ppc64
+ ppc64le-musl
+ ppc64le
+ ppcle-musl
+ ppcle
+ riscv64-musl
+ riscv64
+ x86_64-musl
+ x86_64
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-b
+ 壊れているとマークされている、nocross、またはアーチで除外されている場合でも、
+ パッケージをビルドします。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-c <configuration>
+ <configuration> が指定されている場合、etc/conf.<configuration> は、主要な
+ 構成ファイル名として使用されます。
+ etc/conf が存在しない場合にのみ試行されます。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-C
+ インストールが成功した後、ビルドディレクトリ、自動依存関係、パッケージ用の
+ destdir を削除しません。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-E
+ ターゲットパッケージのリポジトリに、バイナリパッケージが存在する場合は、
+ それをビルドせず、すぐに終了します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-f
+ 正常に実行された場合でも、指定されたステージ(構成/ビルド/インストール/パッケージ化)
+ を実行します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-G Enable XBPS_USE_GIT_REVS(詳細については、etc/defaults.conf を参照してください)
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-g
+ デバッグシンボルを備えた -dbg パッケージのビルドを有効にします。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-H <hostdir>
+ unset がデフォルトで、「void-packages/hostdir」がある場合に、
+ <masterdir>/host にマウントされる、バインドされるディレクトリへの絶対パスを指定。
+ host ディレクトリには、リモートリポジトリからダウンロードされたバイナリパッケージ、
+ ソース、パッケージの依存関係が保存されています。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-h
+ 使い方を表示。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-I
+ ソースを展開/読み込むのに役立つ必要な依存関係を無視します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-i
+ xbps-src の内部エラーを致命的なエラーにしません。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-j
+ パッケージをビルドするときに使用する並列ビルドジョブ(プロセッサ)の数を指定。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-L
+ ASCII の色を無効にします。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-m <masterdir>
+ unset がデフォルトで「void-packages/masterdir-<host>」がある場合に、
+ masterdir として使用するディレクトリへの絶対パスを指定。
+ masterdir は、パッケージを構築/保存/コンパイルする、メインとなるディレクトリです。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-N
+ リモートリポジトリの使用を無効にして、依存関係を解決します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-o <opt,~opt2,...>
+ パッケージビルドオプションを有効または(`~` を付けて)無効にします。
+ 「etc/conf」がすでにいくつかを指定している場合、それはマージされています。
+ 依存関係をビルドする必要がある場合、これらのオプションを継承する場合、
+ これらのオプションはビルド内のすべてのパッケージに適用されることに注意
+ してください。
+
+ 'show-options' target でサポートされているオプションを表示できます。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-p <variable,variable2,...>
+ ターゲットを表示するには、デフォルトの変数に加えて指定された変数を表示します。
+ 変数は分割され、各単語はデフォルトで別々の行で表示されます。
+ 値全体を 1行で表示するには、asterisk を変数名に追加します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-Q
+ ターゲットパッケージのみのチェックステージを実行します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-K
+ 長いテストでチェックステージを実行します。
+ -Q とは異なり、これはビルドされた依存関係のチェックステージも実行されます。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-q
+ xbps-src の情報出力をしません。(ビルド出力は引き続き表示されます)
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-r <repo>
+ 代替ローカルリポジトリを使用して、生成されたバイナリパッケージを保存します。
+ unset がデフォルトで <hostdir>/binpkgs になります。
+
+ もし、set の場合、binpkgs は <hostdir>/binpkgs/<repo> に保存されます。
+ また、この代替リポジトリは、他のリポジトリよりも優先度の高い順序で依存関係を
+ 解決するためにも使用されます。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-s
+ いくつかの警告をエラーにします。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-t
+ 現在のものを汚さないように、一時的な masterdir を作成します。
+ 既存の masterdir には、最初に binary-bootstrap を完全に入力する必要があることに
+ 注意してください。
+
+ ターゲットが終了すると、この一時的な masterdir は削除されます。
+ このフラグには xbps-uchroot(1) が必要であり、 overlayfs をサポートしていない
+ ファイルシステムでは機能しません。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-v
+ 詳細なメッセージを表示します(update-check のみに影響します)。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-V
+ xbps のバージョンを表示して、終了します。
+
+-
+
+##################################################################
+
→Ctrl+S で保存:
-
5). 「パッチ」ファイルを作成 3:
「デスクトップファイル」の修正:
-
$ sudo featherpad ~/git/void-packages/srcpkgs/featherpad/patches/03.featherpad-desktop.patch
↓ すべて貼り付け:
--- a/featherpad/data/featherpad.desktop 2025-10-11 15:08:34.023423019 +0900
+++ b/featherpad/data/featherpad.desktop 2025-10-11 16:17:35.175545023 +0900
@@ -1,5 +1,5 @@
[Desktop Entry]
-Name=FeatherPad
+Name=featherpad
GenericName=Text Editor
GenericName[cs]=Textový editor
GenericName[da]=Tekstredigering
→Ctrl+S で保存:
-
6). 確認:
$ cd ~/git/void-packages/
$ ls -1p srcpkgs/featherpad/patches/
:
01.help-del.patch
02.help-translation-jp.patch
03.featherpad-desktop.patch
-
7). 「パッケージ化」:
$ cd ~/git/void-packages/
$ ./xbps-src pkg featherpad
-
8). すでにインストールしている「FeatherPad」を削除:
ギリギリまで使いました:
-
$ sudo xbps-remove FeatherPad
:
Name Action Version New version Download size
FeatherPad remove 1.6.2_1 - -
→設定ファイルは残ります:
-
もしくは、
「featherpad」をインストールしていた場合は、
$ sudo xbps-remove featherpad
-
9). 「パッケージ化」されたパッケージを、インストール:
$ sudo xbps-install --repository hostdir/binpkgs featherpad
:
Name Action Version New version Download size
featherpad install - 1.6.2_1 -
-
10). インストールされたか確認:
$ xbps-query -s featherpad
:
[*] featherpad-1.6.2_1 Lightweight Qt6 plain-text editor for Linux
→行の先頭が [*] であれば、インストール済です:
-
11). アプリを起動して、動作確認:
メニュー→「アクセサリー」→「featherpad」

-
ヘルプを表示させると、「xbps-src」の「備忘録」が表示されました:

-
参考:
先頭行に書かれているコマンドで、ヘルプの修正が可能です:
sudo featherpad /usr/share/featherpad/help
→誤っているところの修正や、見やすくするための修正だけでなく、個人の「備忘録」として書き換えても OK:
「マークダウン」ではなく、単なる「テキストファイル」です:
書き換えた内容は、別のファイルに保存しておくと安心です:
-
もしくは、「パッチ」ファイルを修正して「パッケージ化」し直し、アプリに反映させても OK :
$ sudo featherpad ~/git/void-packages/srcpkgs/featherpad/patches/02.help-translation-jp.patch
→パッチの内容を変更するときは、行頭の「+」と、ファイルの「行数」を変えてはいけません:
ハマります:
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----- -
4. 「四川省」 (kshisen) ゲームを移植する場合:
-
ホームページ:
https://apps.kde.org/kshisen/
-
トライした履歴は「項番 22.」を参照:
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----- --
4-1. 「四川省」 (kshisen) ゲームを、移植してそのまま「パッケージ化」:
-
1). 「kshisen」パッケージのフォルダを作成:
$ cd ~/git/void-packages/srcpkgs/
$ sudo mkdir -p kshisen
-
2). 「テンプレート」ファイルを作成:
$ sudo featherpad ~/git/void-packages/srcpkgs/kshisen/template
# Template file for 'kshisen'
pkgname=kshisen
version=25.08.1
revision=1
build_style=cmake
hostmakedepends="qt6-tools qt6-base-devel pkg-config"
makedepends="gettext extra-cmake-modules ecm-devel qt6-core qt6-gui kf6-kcoreaddons-devel kf6-kconfig-devel kf6-kiconthemes-devel kf6-kconfigwidgets-devel kf6-kcrash-devel kf6-kdbusaddons-devel kf6-kdoctools-devel kf6-ki18n-devel kf6-kwidgetsaddons-devel kf6-kxmlgui-devel libkmahjongg-devel libkdegames-devel"
short_desc="Shisen-Sho is a solitaire-like game"
maintainer="Kubuntu Developers <kubuntu-devel@lists.ubuntu.com>"
license="GPL-2.0-or-later"
homepage="https://apps.kde.org/kshisen/"
changelog="https://invent.kde.org/games/kshisen/-/blob/master/ChangeLog"
distfiles="https://invent.kde.org/games/kshisen/-/archive/v${version}/kshisen-v${version}.tar.gz"
checksum=3dfc9498c7899cf6f35f42f7fbf0c4f9b53605e6fc95bad040d2b8f9827c359d
→Ctrl+S で保存:
-
3). 「kshisen」ゲームの「パッケージ化」:
$ cd ~/git/void-packages/
$ ./xbps-src pkg kshisen
:
=> Creating kshisen-25.08.1_1.x86_64.xbps for repository /host/binpkgs ...
=> kshisen-25.08.1_1: running post-pkg hook: 00-register-pkg ...
=> Registering new packages to /host/binpkgs
index: added `kshisen-25.08.1_1' (x86_64).
index: 2 packages registered.
=> kshisen-25.08.1_1: removing autodeps, please wait...
=> kshisen-25.08.1_1: cleaning build directory...
=> kshisen: removing files from destdir...
[user@user-pc void-packages]$
→「パッケージ化」が完了しました:
-
4).すでに、 flatpak でインストールされている「kshisen」ゲームを削除:
-
(1). 削除:
$ flatpak uninstall org.kde.kshisen
-
(2). 確認:
$ flatpak list | grep org.kde.kshisen
$
-
5). パッケージ化された「kshisen」ゲームをインストール:
$ sudo xbps-install --repository hostdir/binpkgs kshisen
:
Name Action Version New version Download size
kshisen install - 25.08.1_1 -
-
6). インストールされたか確認:
下記のようにしないと表示されません:
$ xbps-query -s kshisen
:
[*] kshisen-25.08.1_1 Shisen-Sho is a solitaire-like game
→行頭が [*] であれば、インストールされています:
-
7). 「kshisen」ゲームを起動して、動作を確認:
「アプリケーション」→「ゲーム」→「Shisen-Sho」
-
実行時の画面:

2回以内の折れで、同じパイを消して行きます。パイが無くなると重力で落ちます。
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----- ---
4-2. 「四川省」 (kshisen) ゲームを、ソースを修正して「パッケージ化」:
-
アプリの起動メニューを日本語化しました:
-
「項番 4-1.」を実施した後に行いました:
-
1). パッチのフォルダを作成:
$ cd ~/git/void-packages/
$ sudo mkdir -p srcpkgs/kshisen/patches/
-
2). パッチを作成:
$ sudo featherpad ~/git/void-packages/srcpkgs/kshisen/patches/01.kshisen-desktop.patch
↓ すべて貼り付け:
--- a/org.kde.kshisen.desktop 2025-10-15 19:30:58.512373693 +0900
+++ b/org.kde.kshisen.desktop 2025-10-15 19:35:15.331386199 +0900
@@ -35,7 +35,7 @@
Name[id]=Shisen-Sho
Name[is]=Shisen-Sho
Name[it]=Shisen-Sho
-Name[ja]=Shisen-Sho
+Name[ja]=Shisen-Sho 四川省
Name[ka]=Shisen-Sho
Name[kk]=Сисен-сё
Name[km]=Shisen-Sho
→Ctrl+S で保存:
-
確認:
$ ls -1p ~/git/void-packages/srcpkgs/kshisen/patches/
:
01.kshisen-desktop.patch
-
3). パッケージ化:
$ cd ~/git/void-packages/
$ ./xbps-src pkg kshisen
:
=> Creating kshisen-25.08.1_1.x86_64.xbps for repository /host/binpkgs ...
=> kshisen-25.08.1_1: running post-pkg hook: 00-register-pkg ...
=> Registering new packages to /host/binpkgs
index: added `kshisen-25.08.1_1' (x86_64).
index: 3 packages registered.
=> kshisen-25.08.1_1: removing autodeps, please wait...
=> kshisen-25.08.1_1: cleaning build directory...
=> kshisen: removing files from destdir...
[user@user-pc void-packages]$
-
4). すでにインストールしている「kshisen」アプリを削除:
$ sudo xbps-remove kshisen
:
Name Action Version New version Download size
kshisen remove 25.08.1_1 - -
-
確認:
$ xbps-query -Rs kshisen
$
-
5). パッケージ化された「kshisen」アプリをインストール:
$ sudo xbps-install --repository hostdir/binpkgs kshisen
:
Name Action Version New version Download size
kshisen install - 25.08.1_1 -
-
確認:
$ xbps-query -s kshisen
:
[*] kshisen-25.08.1_1 Shisen-Sho is a solitaire-like game
-
6). 「kshisen」アプリを起動して、動作確認:
「アプリケーション」→「ゲーム」→「Shisen-Sho 四川省」
→起動メニューが日本語化されました:
-
実行時の画面:

2回以内の折れで、同じパイを消して行きます。パイが無くなると重力で落ちます。
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----- ----
21. 参考: 「featherpad」アプリで、「パッケージ化」にトライした履歴:
-
手順の確認に行った作業なので、こちらの作業は要りません:
-
「featherpad」アプリは、リポジトリからインストールできるので、「xbps-src」に「ソースファイル」が存在します:
-
「featherpad」アプリは何回か、ソースからビルドしたことがあるので、最初に「xbps-src」でビルドを試すには、ピッタリだと思います:
それに「Void Linux」で、大文字を含む「パッケージ名」なのが気になるので、ちょうど良いかも:
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----- -----
21-1. 「FeatherPad」アプリで、依存パッケージを確認:
-
1). アプリを検索:
$ xbps-query -Rs featherpad
:
[*] FeatherPad-1.6.2_1 Lightweight Qt6 plain-text editor for Linux
→インストール済です:
大文字が含まれた「パッケージ名」に注目:
ちなみに、言語パッケージが分離されていないバージョンです:
-
2). パッケージの「ホームページ」を表示:
$ xbps-query FeatherPad -p homepage
:
https://github.com/tsujan/FeatherPad
→小文字では(パッケージ名が一致しないので)表示されません:
-
-
Debian-based systems:
* cmake
* g++ >= 12
* libx11-dev and libxext-dev (for X11)
* qt6-base-dev (for Qt6)
* qt6-svg-dev (for hard-coded SVG icons)
* libhunspell-dev (for spell checking)
* qt6-base-dev-tools (for localization)
-
Arch-based systems:
* cmake
* gcc (or gcc-multilib for multilib systems)
* libx11 and libxext (for X11)
* qt6-base (for Qt6)
* qt6-svg (for hard-coded SVG icons)
* hunspell (for spell checking)
* qt6-tools (for localization)
-
Red Hat based systems like Fedora:
* cmake
* gcc-c++
* libX11-devel
* libXext-devel
* qt6-qtbase-devel
* qt6-qtsvg-devel
* hunspell-devel
* qt6-qttools-devel
-
「Void Linux」での「パッケージ名」の付け方は、Arch 系に近いです:
Arch 系の依存パッケージまで書いているアプリは少ないと思います:
書かれていたら、参考にできます:
-
4). Arch 系の依存を参考に、パッケージを検索してみる:
ヒット数が多いので、絞り込んで表示:
-
$ xbps-query -Rs cmake | grep '] cmake'
:
[-] cmake-4.1.0_1 Cross-platform, open-source build system ★
[-] cmake-extras-1.9_1 Add-ons for CMake build tools from UBPorts
[-] cmake-gui-4.1.0_1 Cross-platform, open-source build system
[-] cmake-language-server-0.1.11_1 CMake LSP Implementation
[-] cmake-vala-1_2 Vala CMake modules
[-] cmakelang-0.6.13_2 Source code formatter for cmake listfiles
-
$ xbps-query -Rs gcc | grep '] gcc'
:
[*] gcc-14.2.1+20250405_2 GNU Compiler Collection ★
[-] gcc-ada-14.2.1+20250405_2 GNU Compiler Collection - Ada compiler frontend
[-] gcc-fortran-14.2.1+20250405_2 GNU Compiler Collection - Fortran compiler frontend
[-] gcc-go-14.2.1+20250405_2 GNU Compiler Collection - Go compiler frontend
[-] gcc-go-tools-14.2.1+20250405_2 GNU Compiler Collection - Go tools
[-] gcc-multilib-14.2.1+20250405_1 GNU Compiler Collection (multilib files)
[-] gcc-objc-14.2.1+20250405_2 GNU Compiler Collection - Objective-C support
[-] gcc-objc++-14.2.1+20250405_2 GNU Compiler Collection - Objective-C++ support
[-] gcc-objc-multilib-14.2.1+20250405_1 GNU Objective-C compiler (multilib files)
[-] gccmakedep-1.0.3_4 Program calls 'gcc -M' to output makefile rules
-
$ xbps-query -Rs qt6-base | grep '] qt6-base'
:
[-] qt6-base-6.8.2_5 Cross-platform application and UI framework (QT6) ★
[-] qt6-base-devel-6.8.2_5 Cross-platform application and UI framework (QT6) - Development files ★
[-] qt6-base-doc-6.8.2_5 Cross-platform application and UI framework (QT6) - Documentation
[-] qt6-base-private-devel-6.8.2_5 Cross-platform application and UI framework (QT6) - private development files
[-] qt6-base-32bit-6.8.2_5 Cross-platform application and UI framework (QT6) (32bit)
[-] qt6-base-devel-32bit-6.8.2_5 Cross-platform application and UI framework (QT6) - Development files (32bit)
[-] qt6-base-private-devel-32bit-6.8.2_5 Cross-platform application and UI framework (QT6) - private development files (32bit)
-
$ xbps-query -Rs qt6-svg | grep '] qt6-svg'
:
[*] qt6-svg-6.8.2_1 Cross-platform application and UI framework (QT6) - qt6-svg component ★
[-] qt6-svg-devel-6.8.2_1 Cross-platform application and UI framework (QT6) - qt6-svg component - development files ★
[-] qt6-svg-32bit-6.8.2_1 Cross-platform application and UI framework (QT6) - qt6-svg component (32bit)
[-] qt6-svg-devel-32bit-6.8.2_1 Cross-platform application and UI framework (QT6) - qt6-svg component - development files (32bit)
-
$ xbps-query -Rs qt6-tools | grep '] qt6-tools'
:
[-] qt6-tools-6.8.2_1 Cross-platform application and UI framework (QT6) - qt6-tools component ★
[-] qt6-tools-devel-6.8.2_1 Cross-platform application and UI framework (QT6) - qt6-tools component - development files ★
[-] qt6-tools-private-devel-6.8.2_1 Cross-platform application and UI framework (QT6) - qt6-tools component - private development files
[-] qt6-tools-32bit-6.8.2_1 Cross-platform application and UI framework (QT6) - qt6-tools component (32bit)
[-] qt6-tools-devel-32bit-6.8.2_1 Cross-platform application and UI framework (QT6) - qt6-tools component - development files (32bit)
[-] qt6-tools-private-devel-32bit-6.8.2_1 Cross-platform application and UI framework (QT6) - qt6-tools component - private development files (32bit)
-
$ xbps-query -Rs hunspell | grep '] hunspell'
:
[-] hunspell-1.7.2_1 Spell checker and morphological analyzer ★
[-] hunspell-af-25.8.1.1_1 Afrikaans dictionary for hunspell
:
[-] hunspell-devel-1.7.2_1 Spell checker and morphological analyzer - development files ★
[-] hunspell-el_GR-25.8.1.1_1 Greek dictionary for hunspell
[-] hunspell-en-25.8.1.1_1 English dictionary for hunspell
:
[-] hunspell-devel-32bit-1.7.2_1 Spell checker and morphological analyzer - development files (32bit)
→依存する「パッケージ名」があることが確認きました:
-
ソースからビルドするときのように、事前に「依存パッケージ」をインストールしておく必要はありません:
テンプレートファイルを書くための、依存する「パッケージ名」を確認しました。
留意することは、「-devel」が付いた「パッケージ名」にしないとダメなときがあること:
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----- ----- -
21-2. 「FeatherPad」アプリで、そのまま「パッケージ化」:
-
「項番 51.」の手順を参考にしました:
-
1). ビルド環境に移動:
$ cd ~/git/void-packages/
-
$ pwd
/home/user/git/void-packages
-
初期のファイルを確認:
$ ls -1p
CONTRIBUTING.md
COPYING
Manual.md
README.md
common/
etc/
hostdir/ ←パッケージ化のために、ビルド後にインストール(配置)される場所:
masterdir-x86_64/ ←アプリのソースがダウンロードされる場所:
srcpkgs/ ←アプリの「テンプレート」が置かれている場所:
xbps-src
-
2). ビルドしたい「パッケージ」のソースパッケージがあるか確認:
-
(1). 大文字が含まれていることを加味して、検索:
$ cd ~/git/void-packages/
$ ls srcpkgs | grep eather
FeatherPad
font-weather-icons
gnome-weather
libgweather
libgweather-devel
libmateweather
libmateweather-devel
weather
xfce4-weather-plugin
→大文字でヒット:
-
(2). ビルドを指示する「template」ファイルの内容を確認:
というか、「アプリ」のフォルダにあるのは「template」ファイルがひとつだけです:
$ cat ~/git/void-packages/srcpkgs/FeatherPad/template
# Template file for 'FeatherPad'
pkgname=FeatherPad
version=1.6.2
revision=1
build_style=cmake
hostmakedepends="qt6-tools qt6-base-devel pkg-config"
makedepends="libX11-devel libXext-devel qt6-svg-devel hunspell-devel"
short_desc="Lightweight Qt6 plain-text editor for Linux"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-3.0-or-later"
homepage="https://github.com/tsujan/FeatherPad"
changelog="https://github.com/tsujan/FeatherPad/raw/master/ChangeLog"
distfiles="https://github.com/tsujan/FeatherPad/archive/V${version}.tar.gz"
checksum=9753796b2a525a4d6b13696681e9fbb094edcc20e8aadffcd5bb6fe22d0a5fdb
→「distfiles=」の ${version} に「version=」の値が入ります:
なので、最小限の修正で、アプリのバージョンアップに対応できます:
-
(3). 上記の簡単な(必要最小限の定義の) [テンプレートファイル だけで、ビルドできることに驚きです:
利点:
- アプリのバージョンは、「template」ファイル内で定義されています:
- 「パッケージ名」のフォルダを作るだけで、アプリの「カテゴリ分け」で悩みません:
- 説明行は長くなりがちですが、「short_desc=」なので、1行で収まります:
- ビルドの指示が「build_style=cmake」だけで(定番の手順が実行される)ことに驚き:
- 依存の書き方は羅列してあるだけで、2行で済んでいます。簡単すぎて、驚き:
↓
依存の書き方:
hostmakedepends="qt6-tools qt6-base-devel pkg-config"
makedepends="libX11-devel libXext-devel qt6-svg-devel hunspell-devel"
→よく「cmake」の実行時に必要な「pkg-config」のインストールを忘れてエラーしますが、これだと忘れません:
-
(4). 依存がなければ自動でインストール、もしくは、ソースからビルドされます:
ただし、システムにはインストールされません。ビルドを行う仮想の環境にインストールされます:
事前に依存のインストールが必要でないのでエラーしませんが、その分、時間がかかります:
でも、待つだけなので楽です:
-
(5). ダウンロードする「ソースファイル」の指示:
distfiles= がソースファイルが置かれている場所:
checksum= がファイルのチェックサム値: (sha256sum)
-
$ sha256sum V1.6.2.tar.gz
9753796b2a525a4d6b13696681e9fbb094edcc20e8aadffcd5bb6fe22d0a5fdb V1.6.2.tar.gz
-
(6). ダウンロードして展開したソースファイルは、ビルドした後にパッケージ化が完了すると、削除されます:
-
(7). なので、「ソース」を修正して、ビルドしたいときは、「xbps-src」に特別なパラメータを与えて、展開した後、ビルドを止める必要があります:
-
(8). ソースファイルがダウンロードされる場所:
~/git/void-packages/hostdir/sources/FeatherPad-1.6.2/V1.6.2.tar.gz
-
3). パッケージをビルド:
-
(1). ビルドして、パッケージの作成まで行う、指示:
「cmake-bootstrap-4.1.0_1」のダウンロードとビルドがあったので、(待っていただけですが)思ったより、時間がかかりました:
-
$ cd ~/git/void-packages/
$ ./xbps-src pkg FeatherPad
=> xbps-src: updating repositories for host (x86_64)...
[*] Updating repository `https://repo-default.voidlinux.org/current/bootstrap/x86_64-repodata' ...
x86_64-repodata: 10KB [avg rate: 183MB/s]
[*] Updating repository `https://repo-default.voidlinux.org/current/x86_64-repodata' ...
x86_64-repodata: 2022KB [avg rate: 1867KB/s]
[*] Updating repository `https://repo-default.voidlinux.org/current/nonfree/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/debug/x86_64-repodata' ...
x86_64-repodata: 899KB [avg rate: 11GB/s]
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/bootstrap/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/nonfree/x86_64-repodata' ...
=> xbps-src: updating software in / masterdir...
=> xbps-src: cleaning up / masterdir...
=> FeatherPad-1.6.2_1: removing autodeps, please wait...
=> FeatherPad-1.6.2_1: building with [cmake] for x86_64...
[host] qt6-tools-6.8.2_1: found (https://repo-default.voidlinux.org/current)
[host] qt6-base-devel-6.8.2_5: found (https://repo-default.voidlinux.org/current)
[host] pkg-config-0.29.2_3: found (https://repo-default.voidlinux.org/current)
[host] cmake-bootstrap-4.1.0_1: not found
[host] ninja-1.13.1_1: found (https://repo-default.voidlinux.org/current)
[target] libX11-devel-1.8.12_2: found (https://repo-default.voidlinux.org/current)
[target] libXext-devel-1.3.6_1: found (https://repo-default.voidlinux.org/current)
[target] qt6-svg-devel-6.8.2_1: found (https://repo-default.voidlinux.org/current)
[target] hunspell-devel-1.7.2_1: found (https://repo-default.voidlinux.org/current)
=> cmake-bootstrap-4.1.0_1: building with [cmake] (dependency of FeatherPad) for x86_64...
[host] samurai-1.2_1: found (https://repo-default.voidlinux.org/current)
=> cmake-bootstrap-4.1.0_1: installing host dependencies: samurai-1.2_1 ...
=> cmake-bootstrap-4.1.0_1: running do-fetch hook: 00-distfiles ...
=> cmake-bootstrap-4.1.0_1: fetching distfile 'cmake-4.1.0.tar.gz' from 'https://www.cmake.org/files/v4.1/cmake-4.1.0.tar.gz'...
cmake-4.1.0.tar.gz: [11MB 0%] 54MB/s ETA: 00m00s
cmake-4.1.0.tar.gz: [11MB 6%] 17KB/s ETA: 10m37s
cmake-4.1.0.tar.gz: [11MB 7%] 17KB/s ETA: 10m37s
cmake-4.1.0.tar.gz: [11MB 7%] 17KB/s ETA: 10m40s
→「cmake-bootstrap」を作成するための「cmake」がなかったので、ソースをダウンロードしてビルドされています:
ダウンロードに時間がかかります
ダウンロード後は、速すぎて、記録できず:
「cmake-bootstrap-4.1.0_1」がビルドされ、パッケージ化されました:
:
=> cmake-bootstrap-4.1.0_1: running post-install hook: 99-pkglint-warn-cross-cruft ...
=> cmake-bootstrap-4.1.0_1: running pre-pkg hook: 03-rewrite-python-shebang ...
=> cmake-bootstrap-4.1.0_1: running pre-pkg hook: 04-generate-provides ...
cmake-4.1.0_1
=> cmake-bootstrap-4.1.0_1: running pre-pkg hook: 04-generate-runtime-deps ...
SONAME: libstdc++.so.6 <-> libstdc++>=4.4.0_1
SONAME: libm.so.6 <-> glibc>=2.41_1
SONAME: libgcc_s.so.1 <-> libgcc>=4.4.0_1
SONAME: libc.so.6 <-> glibc>=2.41_1
=> cmake-bootstrap-4.1.0_1: running pre-pkg hook: 05-generate-32bit-runtime-deps ...
=> cmake-bootstrap-4.1.0_1: running pre-pkg hook: 06-verify-python-deps ...
=> cmake-bootstrap-4.1.0_1: running pre-pkg hook: 90-set-timestamps ...
=> cmake-bootstrap-4.1.0_1: setting mtimes to Fri Oct 3 09:30:25 PM UTC 2025
=> cmake-bootstrap-4.1.0_1: running pre-pkg hook: 99-pkglint-subpkgs ...
=> cmake-bootstrap-4.1.0_1: running pre-pkg hook: 99-pkglint ...
=> cmake-bootstrap-4.1.0_1: running pre-pkg hook: 999-collected-rdeps ...
libstdc++>=4.4.0_1 glibc>=2.41_1 libgcc>=4.4.0_1
=> cmake-bootstrap-4.1.0_1: running do-pkg hook: 00-gen-pkg ...
=> Creating cmake-bootstrap-4.1.0_1.x86_64.xbps for repository /host/binpkgs/bootstrap ...
=> cmake-bootstrap-4.1.0_1: running post-pkg hook: 00-register-pkg ...
=> Registering new packages to /host/binpkgs/bootstrap
index: added `cmake-bootstrap-4.1.0_1' (x86_64).
index: 1 packages registered.
=> cmake-bootstrap-4.1.0_1: removing autodeps, please wait...
=> cmake-bootstrap-4.1.0_1: cleaning build directory...
=> cmake-bootstrap: removing files from destdir...
=> FeatherPad-1.6.2_1: installing host dependencies:
qt6-tools-6.8.2_1 qt6-base-devel-6.8.2_5 pkg-config-0.29.2_3 ninja-1.13.1_1 cmake-bootstrap-4.1.0_1 ...
:
=> FeatherPad-1.6.2_1: running do_install ...
[1/2] Creating fpad as a symlink to featherpad
[1/2] Install the project...
-- Install configuration: "None"
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_ar_DZ.qm
: 省略
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_ja.qm ★
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_ka.qm
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_ko.qm
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_lt.qm
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_nb_NO.qm
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_nl.qm
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_pl.qm
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_pt.qm
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_pt_BR.qm
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_ru.qm
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_si.qm
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_sk_SK.qm
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_sl.qm
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_sv.qm
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_tr.qm
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_uk.qm
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_zh_CN.qm
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/translations/featherpad_zh_TW.qm
-- Installing: /destdir/FeatherPad-1.6.2/usr/bin/featherpad ★
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/applications/featherpad.desktop ★
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/metainfo/featherpad.metainfo.xml
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/icons/hicolor/scalable/apps/featherpad.svg
-- Installing: /destdir/FeatherPad-1.6.2/usr/share/featherpad/help ★
-- Installing: /destdir/FeatherPad-1.6.2/usr/bin/fpad
=> FeatherPad-1.6.2_1: running post-install hook: 00-compress-info-files ...
=> FeatherPad-1.6.2_1: running post-install hook: 00-fixup-gir-path ...
=> FeatherPad-1.6.2_1: running post-install hook: 00-libdir ...
=> FeatherPad-1.6.2_1: running post-install hook: 00-uncompress-manpages ...
=> FeatherPad-1.6.2_1: running post-install hook: 01-remove-misc ...
=> FeatherPad-1.6.2_1: running post-install hook: 02-remove-libtool-archives ...
=> FeatherPad-1.6.2_1: running post-install hook: 02-remove-perl-files ...
=> FeatherPad-1.6.2_1: running post-install hook: 02-remove-python-bytecode-files ...
=> FeatherPad-1.6.2_1: running post-install hook: 03-remove-empty-dirs ...
=> WARNING: FeatherPad-1.6.2_1: removed empty dir: /usr/lib
=> FeatherPad-1.6.2_1: running post-install hook: 04-create-xbps-metadata-scripts ...
Added trigger 'gtk-icon-cache' for the 'INSTALL' script.
Added trigger 'update-desktopdb' for the 'INSTALL' script.
Added trigger 'gtk-icon-cache' for the 'REMOVE' script.
Added trigger 'update-desktopdb' for the 'REMOVE' script.
=> FeatherPad-1.6.2_1: running post-install hook: 05-generate-gitrevs ...
=> FeatherPad-1.6.2_1: running post-install hook: 06-strip-and-debug-pkgs ...
Stripped position-independent executable: /usr/bin/featherpad
=> FeatherPad-1.6.2_1: running post-install hook: 10-pkglint-devel-paths ...
=> FeatherPad-1.6.2_1: running post-install hook: 11-pkglint-elf-in-usrshare ...
=> FeatherPad-1.6.2_1: running post-install hook: 12-rename-python3-c-bindings ...
=> FeatherPad-1.6.2_1: running post-install hook: 13-pkg-config-clean-xbps-cross-base-ref ...
=> FeatherPad-1.6.2_1: running post-install hook: 14-fix-permissions ...
=> FeatherPad-1.6.2_1: running post-install hook: 15-qt-private-api ...
=> FeatherPad-1.6.2_1: running post-install hook: 80-prepare-32bit ...
=> FeatherPad-1.6.2_1: running post-install hook: 98-shlib-provides ...
=> FeatherPad-1.6.2_1: running post-install hook: 99-pkglint-warn-cross-cruft ...
=> FeatherPad-1.6.2_1: running pre-pkg hook: 03-rewrite-python-shebang ...
=> FeatherPad-1.6.2_1: running pre-pkg hook: 04-generate-provides ...
cmd:featherpad-1.6.2_1
=> FeatherPad-1.6.2_1: running pre-pkg hook: 04-generate-runtime-deps ...
SONAME: libQt6Svg.so.6 <-> qt6-svg>=6.8.1_1
SONAME: libQt6PrintSupport.so.6 <-> qt6-printsupport>=6.8.1_1
SONAME: libX11.so.6 <-> libX11>=1.2_1
SONAME: libhunspell-1.7.so.0 <-> libhunspell1.7>=1.7.0_1
SONAME: libQt6Widgets.so.6 <-> qt6-widgets>=6.8.1_1
SONAME: libQt6Gui.so.6 <-> qt6-gui>=6.8.1_1
SONAME: libQt6DBus.so.6 <-> qt6-dbus>=6.8.1_1
SONAME: libQt6Core.so.6 <-> qt6-core>=6.8.1_1
SONAME: libstdc++.so.6 <-> libstdc++>=4.4.0_1
SONAME: libm.so.6 <-> glibc>=2.41_1
SONAME: libgcc_s.so.1 <-> libgcc>=4.4.0_1
SONAME: libc.so.6 <-> glibc>=2.41_1
=> FeatherPad-1.6.2_1: running pre-pkg hook: 05-generate-32bit-runtime-deps ...
=> FeatherPad-1.6.2_1: running pre-pkg hook: 06-verify-python-deps ...
=> FeatherPad-1.6.2_1: running pre-pkg hook: 90-set-timestamps ...
=> FeatherPad-1.6.2_1: setting mtimes to Fri Oct 3 09:30:25 PM UTC 2025
=> FeatherPad-1.6.2_1: running pre-pkg hook: 99-pkglint-subpkgs ...
=> FeatherPad-1.6.2_1: running pre-pkg hook: 99-pkglint ...
=> FeatherPad-1.6.2_1: running pre-pkg hook: 999-collected-rdeps ...
qt6-svg>=6.8.1_1 qt6-printsupport>=6.8.1_1 libX11>=1.2_1 libhunspell1.7>=1.7.0_1 qt6-widgets>=6.8.1_1 qt6-gui>=6.8.1_1 qt6-dbus>=6.8.1_1 qt6-core>=6.8.1_1 libstdc++>=4.4.0_1 glibc>=2.41_1 libgcc>=4.4.0_1
=> FeatherPad-1.6.2_1: running do-pkg hook: 00-gen-pkg ...
=> Creating FeatherPad-1.6.2_1.x86_64.xbps for repository /host/binpkgs ...
=> FeatherPad-1.6.2_1: running post-pkg hook: 00-register-pkg ...
=> Registering new packages to /host/binpkgs ★
index: added `FeatherPad-1.6.2_1' (x86_64).
index: 1 packages registered.
=> FeatherPad-1.6.2_1: removing autodeps, please wait...
=> FeatherPad-1.6.2_1: cleaning build directory...
=> FeatherPad: removing files from destdir...
[user@user-pc void-packages]$
→ソースからビルドされ、パッケージ化用の destdir ディレクトリ配下にインストールして配置後、
/host/binpkgs 配下にパッケージが作成され、パッケージ化用の destdir ディレクトリがクリア(削除)されました:
-
(2). ビルド中に cmake がないので、自動でインストールされましたが、システムには、インストールされていません:
$ xbps-query -Rs cmake:
:
[-] cmake-4.1.0_1 Cross-platform, open-source build system
[-] cmake-extras-1.9_1 Add-ons for CMake build tools from UBPorts
[-] cmake-gui-4.1.0_1 Cross-platform, open-source build system
[-] cmake-language-server-0.1.11_1 CMake LSP Implementation
[-] cmake-vala-1_2 Vala CMake modules
[-] cmakelang-0.6.13_2 Source code formatter for cmake listfiles
[-] corrosion-0.5.2_1 Tool for integrating Rust into an existing CMake project
[-] extra-cmake-modules-6.18.0_1 Extra modules and scripts for CMake
[-] gccmakedep-1.0.3_4 Program calls 'gcc -M' to output makefile rules
[-] meson-cmake-wrapper-0.3.4_7 Build system wrapper that provides Meson integration in CMak...
[-] python3-scikit-build-core-0.11.6_1 Python CMake adaptor and API for plugins
-
(3). ちなみに、通常のリポジトリに、下記のパッケージはありません:
$ xbps-query -Rs cmake-bootstrap
$
→「xbps-src」を使った、ビルド時に使われるツールのようです:
たぶん、テンプレートファイルに「build_style=cmake」の指定があると、ビルドされると思われます:
-
4). ビルド後のパッケージについて:
-
(1). 通常のパッケージは「hostdir/binpkgs」に生成されます:
初めてのビルドなので、作成されるパッケージは「FeatherPad-1.6.2_1.x86_64.xbps」がひとつだけのはずでしたが、
bootstrap/ に「cmake-bootstrap-4.1.0_1.x86_64.xbps」が作成されました:
-
$ pwd
/home/user/git/void-packages
$ ls -l hostdir/binpkgs/
:
-rw-r--r-- 1 user user 958664 10月 4 23:59 FeatherPad-1.6.2_1.x86_64.xbps
drwxr-xr-x 2 user user 4096 10月 4 23:49 bootstrap
-rw-rw-r-- 1 user user 862 10月 4 23:59 x86_64-repodata
-
(2). 「hostdir/binpkgs/bootstrap」にもパッケージが生成されました:
$ ls -l hostdir/binpkgs/bootstrap/
:
-rw-r--r-- 1 user user 11252481 10月 4 23:49 cmake-bootstrap-4.1.0_1.x86_64.xbps
-rw-rw-r-- 1 user user 720 10月 4 23:49 x86_64-repodata
→今後、「cmake」を使うビルドがあったときは、ここからインストールされ、ビルドの時間が短縮されると思います:
-
(3). 制限のあるパッケージの場合は、「hostdir/binpkgs/nonfree」に生成されます:
今回はなし:
-
5). すでにインストールしている「FeatherPad」を削除:
「FeatherPad」は見やすいので、ギリギリまで使いました:
-
$ sudo xbps-remove FeatherPad
:
Name Action Version New version Download size
FeatherPad remove 1.6.2_1 - -
→設定ファイルは残ります:
-
6). 「パッケージ化」されたパッケージを、インストール:
ライセンス等の制限があるパッケージなのかで、置かれている場所が異なります:
-
今回は、制限のない、通常のパッケージです:
$ sudo xbps-install --repository hostdir/binpkgs FeatherPad
:
Name Action Version New version Download size
FeatherPad install - 1.6.2_1 -
→Download size に注目:
ダウンロードがないので、サイズの表示はありません:
-
7). インストールされたか確認:
-
下記の、入力の仕方だと、どれも 2つ表示されます:
リモートのリポジトリにあるパッケージに、「パッケージ化」されたパッケージが追加されて表示:
$ xbps-query --repository hostdir/binpkgs FeatherPad -s
:
[-] FeatherPad-1.6.2_1 Lightweight Qt6 plain-text editor for Linux
[-] FeatherPad-1.6.2_1 Lightweight Qt6 plain-text editor for Linux
-
$ xbps-query -s --repository hostdir/binpkgs FeatherPad
:
[-] FeatherPad-1.6.2_1 Lightweight Qt6 plain-text editor for Linux
[-] FeatherPad-1.6.2_1 Lightweight Qt6 plain-text editor for Linux
-
$ xbps-query -s FeatherPad --repository hostdir/binpkgs
:
[-] FeatherPad-1.6.2_1 Lightweight Qt6 plain-text editor for Linux
[-] FeatherPad-1.6.2_1 Lightweight Qt6 plain-text editor for Linux
-
$ xbps-query -Rs FeatherPad --repository hostdir/binpkgs
:
[-] FeatherPad-1.6.2_1 Lightweight Qt6 plain-text editor for Linux
[-] FeatherPad-1.6.2_1 Lightweight Qt6 plain-text editor for Linux
-
表示がひとつの入力の仕方:
$ xbps-query -s FeatherPad
:
[*] FeatherPad-1.6.2_1 Lightweight Qt6 plain-text editor for Linux
-
$ xbps-query -Rs FeatherPad
:
[*] FeatherPad-1.6.2_1 Lightweight Qt6 plain-text editor for Linux
-
実行ファイルの場所:
$ which FeatherPad
which: no FeatherPad in (/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin)
→実行ファイル名は、パッケージ名と同じではありません:
-
$ which featherpad
/usr/bin/featherpad
→小文字です:
-
通常は、ソースをビルドしてインストールすると「/usr/local/bin/」 に配置されます:
「パッケージ化」されたものをインストールすると、「/usr/bin/」に配置されます:
今回は、パッケージ名を変えていますが、インストール時に配置される実行ファイル名は同じ「featherpad」でした。
なので、パッケージ名を変えての共存はできません:
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----- ----- --
21-3. 「featherpad」アプリで、アプリ名を小文字に変えて「パッケージ化」:
-
「FeatherPad 1.6.2」で気づいたところ:
- パッケージ名が「FeatherPad」で、大文字が含まれており、コマンドによっては対象から漏れることがあります:
-
→「FeatherPad」はさわらずに、パッケージ名を小文字にした「featherpad」パッケージを別に作成しました:
-
1). パッケージ名が小文字の「featherpad」フォルダを、別に作成:
「FeatherPad/」フォルダをコピーして作成:
$ cd ~/git/void-packages/srcpkgs/
$ sudo cp -r FeatherPad featherpad
-
確認1:
$ ls FeatherPad/
:
template
-
確認2:
$ ls featherpad/
:
template
-
2). 「featherpad」フォルダの「テンプレート」ファイルを修正:
「パッケージ名」を小文字に修正:
$ sudo featherpad ~/git/void-packages/srcpkgs/featherpad/template
↓ 先頭の 2行(コメント行と、pkgname= 行)を「featherpad」に修正:
# Template file for 'featherpad'
pkgname=featherpad
version=1.6.2
revision=1
build_style=cmake
hostmakedepends="qt6-tools qt6-base-devel pkg-config"
makedepends="libX11-devel libXext-devel qt6-svg-devel hunspell-devel"
short_desc="Lightweight Qt6 plain-text editor for Linux"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-3.0-or-later"
homepage="https://github.com/tsujan/FeatherPad"
changelog="https://github.com/tsujan/FeatherPad/raw/master/ChangeLog"
distfiles="https://github.com/tsujan/FeatherPad/archive/V${version}.tar.gz"
checksum=9753796b2a525a4d6b13696681e9fbb094edcc20e8aadffcd5bb6fe22d0a5fdb
→Ctrl+S で保存:
-
3). 正常にパッケージ化できるか実行:
$ cd ~/git/void-packages/
$ ./xbps-src pkg featherpad
:
=> featherpad-1.6.2_1: running do-pkg hook: 00-gen-pkg ...
=> Creating featherpad-1.6.2_1.x86_64.xbps for repository /host/binpkgs ... ★
=> featherpad-1.6.2_1: running post-pkg hook: 00-register-pkg ...
=> Registering new packages to /host/binpkgs
index: added `featherpad-1.6.2_1' (x86_64).
index: 3 packages registered.
=> featherpad-1.6.2_1: removing autodeps, please wait...
=> featherpad-1.6.2_1: cleaning build directory...
=> featherpad: removing files from destdir...
[user@user-pc void-packages]$ xbps-query -Rs featherpad
[*] FeatherPad-1.6.2_1 Lightweight Qt6 plain-text editor for Linux
[user@user-pc void-packages]$
→正常に終了:
-
ダウンロードした「ソース」が置かれている場所:
$ ls -1p hostdir/sources/
:
FeatherPad-1.6.2/
by_sha256/
cmake-bootstrap-4.1.0/
featherpad-1.6.2/ ←(注目)
-
$ ls -1p hostdir/sources/featherpad-1.6.2/
:
V1.6.2.tar.gz
V1.6.2.tar.gz.part
-
パッケージ化された「パッケージ」が置かれている場所:
$ ls -1p hostdir/binpkgs/
:
FeatherPad-1.6.2_1.x86_64.xbps
bootstrap/
featherpad-1.6.2_1.x86_64.xbps ←(注目)
x86_64-repodata
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----- ----- ---
21-4. 「featherpad」アプリで、ソースを修正して「パッケージ化」:
-
「ヘルプ」を日本語化する代わりに、役に立つ「xbps-src」の「備忘録」の表示に変えました:
-
「FeatherPad 1.6.2」で気づいたところ:
- 「Void Linux」のリポジトリでインストールできる「FeatherPad 1.6.2」は、「アプリ」は日本語で表示されますが、「ヘルプ」は英語です。
-
以前の (バージョン: 1.4.1)
$ ls -1p /usr/share/featherpad/
:
help
help_ca
help_ja ←(注目)
help_pt_BR
translations/
→3つの(国の)翻訳された「ヘルプ」が あります:
「ヘルプ」は単なる「テキストファイル」なので、融通が効きます:
ヘルプの翻訳についてはサイトに記述がありますが、必要ないのか、気付かないのか、翻訳はなかなか増えません。
-
現在の (バージョン: 1.6.2)
$ ls -1p /usr/share/featherpad/
:
help
translations/
→日本語を含む、翻訳された「ヘルプ」が削除されました。
翻訳された「ヘルプ」は「需要なし」と判断されたのかも:
現在はソースに「help_ja」を追加しても、インストール時に配置されなくなりました:
たぶん、プロジェクトファイルの修正が必要:
-
1). 手動で「help_ja」を配置して、「ヘルプ」が翻訳(反映)される機能が残っているか確認:
-
(1). 「help_ja」の作成:
$ echo " ### Help test ###" >~/ドキュメント/help_ja
$ cat ~/ドキュメント/help_ja
### Help test ###
-
(2). ファイルの配置先を確認:
$ ls -1p /usr/share/featherpad/
:
help
translations/
-
(3). ファイルを配置:
$ sudo cp ~/ドキュメント/help_ja /usr/share/featherpad/help_ja
$ ls -1p /usr/share/featherpad/
:
help
help_ja
translations/
-
(4). 再起動:
$ sudo reboot
-
(5). featherpad を起動:
-
(6). ヘルプは英語のままで、「help_ja」の内容が表示されません:
以前まで使えていた、ヘルプの「国コード」での切り替えが削除されました:
→ヘルプを日本語化したい場合は、直接「help」を翻訳(上書き)する必要があります:
-
2). どうせ修正するなら、
新しく作成した「featherpad」パッケージの「ヘルプ」を、単に日本語に翻訳するのでなく、
役に立つ「xbps-src」の「備忘録」に変更しました:
-
3). ソースをダウンロード後、修正して、差分(パッチ)を作成します:
一度、「パッケージ化」を行っていれば、ダウンロードした「ソース」は残っているので、作業は要りません:
-
確認:
$ ls -1p ~/git/void-packages/hostdir/sources/featherpad-1.6.2/
:
V1.6.2.tar.gz
V1.6.2.tar.gz.part
-
もし、ダウンロードされていない場合は、下記の「項番 4).」を実行:
-
4). ソースのダウンロード:
すでにダウンロードされていたら作業は要りません:
$ cd ~/git/void-packages/
$ ./xbps-src fetch featherpad
:
=> featherpad-1.6.2_1: running do-fetch hook: 00-distfiles ...
[user@user-pc void-packages]$
-
確認:
$ ls -1p ~/git/void-packages/hostdir/sources/featherpad-1.6.2/
:
V1.6.2.tar.gz
V1.6.2.tar.gz.part
→「fetch」の実行で、「V1.6.2.tar.gz.part」が余分に作られました:
-
5). ソースの展開:
$ cd ~/git/void-packages/
$ ./xbps-src extract featherpad
=> featherpad-1.6.2_1: running do-extract hook: 00-distfiles ...
=> featherpad-1.6.2_1: extracting distfile(s), please wait...
[user@user-pc void-packages]$
-
確認:
$ cd ~/git/void-packages/
$ ls masterdir-x86_64/builddir/
:
featherpad-1.6.2
→ソースが展開されました:
-
$ ls -1p masterdir-x86_64/builddir/featherpad-1.6.2/
:
CMakeLists.txt
COPYING
ChangeLog
INSTALL
NEWS
README.md
README_OS2.md
cmake/
featherpad/
screenshots/
-
(1). ヘルプの置かれている場所:
$ cd ~/git/void-packages/
$ ls -1p masterdir-x86_64/builddir/featherpad-1.6.2/featherpad/data/
:
featherpad.desktop
featherpad.metainfo.xml
featherpad.svg
featherpad_os2.ico
featherpad_os2.rc
fp.qrc
help ←(注目)
icons/
translations/
→英語のヘルプのみで、日本語のヘルプがありません:
-
(2). 翻訳ファイルの置かれている場所:
$ ls -p masterdir-x86_64/builddir/featherpad-1.6.2/featherpad/data/translations/
:
featherpad.ts featherpad_es.ts featherpad_it.ts featherpad_ru.ts
featherpad_ar_DZ.ts featherpad_et.ts featherpad_ja.ts featherpad_si.ts
featherpad_bg.ts featherpad_fa.ts featherpad_ka.ts featherpad_sk_SK.ts
featherpad_ca.ts featherpad_fi.ts featherpad_ko.ts featherpad_sl.ts
featherpad_cs.ts featherpad_fr.ts featherpad_lt.ts featherpad_sv.ts
featherpad_cy.ts featherpad_he.ts featherpad_nb_NO.ts featherpad_tr.ts
featherpad_da.ts featherpad_hi.ts featherpad_nl.ts featherpad_uk.ts
featherpad_de.ts featherpad_hr.ts featherpad_pl.ts featherpad_zh_CN.ts
featherpad_el.ts featherpad_hu.ts featherpad_pt.ts featherpad_zh_TW.ts
featherpad_eo.ts featherpad_id.ts featherpad_pt_BR.ts
-
6). 差分ファイル(パッチ)を作成するためのフォルダを作成:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/featherpad-1.6.2/
$ sudo mkdir -p {a,b}
-
(1). 確認:
$ ls -1p
:
CMakeLists.txt
COPYING
ChangeLog
INSTALL
NEWS
README.md
README_OS2.md
a/ ←(注目)
b/ ←(注目)
cmake/
featherpad/
screenshots/
-
(2). 「a」フォルダにソースをコピー:
$ sudo cp -r featherpad a/
-
(3). 「b」フォルダにソースをコピー:
$ sudo cp -r featherpad b/
-
(4). 確認:
$ ls a/featherpad/data/
:
featherpad.desktop featherpad_os2.ico help
featherpad.metainfo.xml featherpad_os2.rc icons
featherpad.svg fp.qrc translations
-
$ ls b/featherpad/data/
:
featherpad.desktop featherpad_os2.ico help
featherpad.metainfo.xml featherpad_os2.rc icons
featherpad.svg fp.qrc translations
→今のところは、同じ内容です:
-
7). 日本語化しても「ヘルプ」は見てもらえない?と思うので、
翻訳した「xbps-src」のヘルプと「備忘録」が表示されるようにしました:
→これなら役立ちます:
-
以前のバージョンだと、ヘルプファイルに国番号が付いていれば、ヘルプを国際化できましたが、その機能が削除されたので、
直接、「help」ファイルを上書きしました:
-
8). 「help」ファイルの削除:
退避しても、パッケージ化が完了すれば削除されます:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/featherpad-1.6.2/b/featherpad/data/
$ ls
:
featherpad.desktop featherpad_os2.ico help
featherpad.metainfo.xml featherpad_os2.rc icons
featherpad.svg fp.qrc translations
-
削除:
$ sudo rm help
-
9). 差分(パッチ)の作成1:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/featherpad-1.6.2/
$ diff -Naur a b > 01.help-del.patch
→「help」を削除するパッチです:
ファイル名は任意です:
-
10). 違和感がないように、パッチファイルの先頭行を削除:
$ featherpad 01.help-del.patch
↓ 下記の先頭行を削除:
diff -Naur a/featherpad/data/help b/featherpad/data/help
-
確認:
$ cat 01.help-del.patch
--- a/featherpad/data/help 2025-10-11 15:08:34.023423019 +0900
+++ b/featherpad/data/help 1970-01-01 09:00:00.000000000 +0900
@@ -1,292 +0,0 @@
-***************
-* General *
-***************
-
-FeatherPad is a single-instance application by default; all its windows share the same configuration and the same process, which will terminate only if all windows are closed.
-
-However, if FeatherPad is started with the command-line option "--standalone" or "-s", it will have a single window with a separate process, independently of other FeatherPad windows.
-
-Rarely, the standalone mode may be needed. For example, if you want to use FeatherPad as the "git" editor, you will need "featherpad -s" as the editor command because "git" does not work correctly with single-instance editors.
-
-Use the standalone mode with care. If a standalone window is opened alongside other windows, any change in configuration, recent files, etc., which may have been made in those windows, will not be reflected by it, and if it is the last closed window, it will overwrite those changes.
-
-The standalone mode is also an exception to the window/tab managing rules explained in this document.
-
-Enter "featherpad --help" in a terminal emulator to see all command-line options.
-
-NOTE: FeatherPad makes use of D-Bus to have a single process. Therefore, in (non-Linux) systems without D-Bus, it is always in the standalone mode, which means that its windows do not know about each other.
-
-*********************
-* Drag-and-Drop *
-*********************
-
-Files can be dragged and dropped into FeatherPad windows.
-
-Also, tabs can be dragged from a window and dropped into another window or outside all FeatherPad windows. In the first case, the dropped tab will appear after the previously active tab; in the second case, a new window containing the dropped tab will be created, i.e. the tab will be detached.
-
-************
-* Tabs *
-************
-
-Tabs can be reordered or detached by the mouse.
-
-If there is more than one tab, each one will have a right-click menu for closing its right or left tabs. With more than one tab, it is also possible to detach the active tab by clicking the related item on the File menu or with Ctrl+T.
-
-If a file is opened in a tab, the right-click menu of that tab will also contain two items for copying the name and path of the file as well as an item for opening its containing folder with the default file manager.
-
-For users' comfort, double clicking on an empty area of the tab-bar creates a new tab.
-
-There are (customizable) shortcuts for switching tabs in various ways (see the File menu), but Ctrl+Tab is not one of them because the Tab key is reserved for text editing (see Keyboard Shortcuts, near the end of this document).
-
-***********************
-* File Management *
-***********************
-
-Under X11, if there is a FeatherPad window on the current virtual desktop or viewport, so that more than half of its width as well as its height is visible, files will be opened as new tabs in it; otherwise, a new window will be created. Also, when the window on the current desktop/viewport has a modal dialog, another window is created.
-
-In this way, FeatherPad is aware of X11 virtual desktops under most Linux desktop environments, although there are exceptions (like Enlightenment).
-
-Files are always opened after the active tab unless it is empty, in which case the first file will be opened in it. If a single file is opened, its tab will be activated, but in the case of multiple files, the active tab will not change.
-
-If a file is opened multiple times, its second (third,…) instance will be uneditable by default and will have a light yellow or dark red background, depending on whether the default or the dark color scheme is used. To make it editable, click on the newly created 'Edit' button on the toolbar or the 'Edit' menu. After that, these two buttons will disappear again.
-
-If the opened file is a symbolic link (symlink), the context menu of its tab will have two extra items for copying its target path and opening its target inside the current window.
-
-Executable script files could be run from inside FeatherPad if the corresponding option is enabled in the Preferences dialog. Then also a Run button will appear on the toolbar and the File menu whenever needed. If no terminal command is used to run them, their output and error messages will be shown by a popup dialog.
-
-FeatherPad remembers recently modified or opened files, depending on which option is enabled in the Preferences dialog. It can also open the files of the last window on a session startup. However, it has a more advanced session manager, which provides the user with options for saving a session and restoring or removing saved sessions at any time and without limit.
-
-***********************************
-* Sessions and Side-Pane Mode *
-***********************************
-
-Sessions can be saved and opened by using the Session Manager dialog. As mentioned above, there is no limit to the number of stored sessions. Each session can have any name and consist of any number of files. All files of a session are opened in the current FeatherPad window, and their cursor positions are remembered.
-
-FeatherPad also has a side-pane mode, which can be enabled either temporarily or with startup. It is most suitable for working with sessions because its file list is alphabetically ordered and can be filtered. Each pane item has a right-click menu, which contains menu-items for various jobs when there is more than one page. Items can also be removed by middle-clicking without being selected.
-
-The side-pane mode does not have features provided by tabs — for example, tab drag-and-drop is missing from it — and conversely — for example, tabs are not sorted and cannot be filtered — but the side-pane and tab modes can be used interchangeably by means of the Side-Pane menu-item, its toolbar button or its shortcut (Ctrl+Alt+P by default), and also by middle-clicking an empty space inside the tab-bar or side-pane.
-
-To focus the side-pane when another widget has the focus, press Ctrl+Escape. To return the focus to the editor's main view from the side-pane or anywhere else, press the Escape key.
-
-*****************
-* Encodings *
-*****************
-
-FeatherPad tries to guess encodings when opening files. Although it often guesses them right, there is no exact way for that. Therefore, there are some encodings in the Options menu. If you choose one, the text could be saved with it by using the item "Save with Encoding" on the File menu. By default, all texts are saved with UTF-8, which covers all alphabets.
-
-As Qt6 has removed the support for the legacy encodings, they are also removed from FeatherPad. Usually, you do not need to worry about encodings; nowadays, UTF-8 is the standard and is used everywhere.
-
-*****************************
-* Programming Languages *
-*****************************
-
-The programming language of a file is detected based on its mime type or name, and its syntax will be highlighted if the syntax highlighting is enabled and supports the language in question.
-
-If a text has no programming language or its syntax is not supported, only its hyperlinks/URLs will be highlighted, and it will be possible to open them by right clicking them and activating the related menu-item or by pressing the Control key, moving the cursor over them, and clicking them while the cursor is like a pointing hand.
-
-If the option "Preferences → Text → Support syntax override" is enabled and checked, a language button will be added to the status bar for overriding the original syntax or lack of it. Reloading a document restores its original syntax.
-
-There are also options in the Preferences dialog for showing whitespaces (spaces, tabs), line and document ends, and vertical position lines when syntax highlighting is enabled (by default or temporarily).
-
-The colors of syntax highlighting can be customized in "Preferences → Syntax Colors". Each syntax color may have different meanings in different programming languages, but only the most important meanings are mentioned. The color value of whitespaces can be changed in the same place.
-
-*******************************
-* Searching and Replacing *
-*******************************
-
-In FeatherPad, searching and replacing are done by separate widgets for the user to be able to search one string and replace another. Moreover, a separate replacement widget may prevent an unintentional replacement.
-
-To remove the yellow highlights after finishing a search, you could
-
-* Click on the 'Clear' icon of the search entry, or
-* Press Ctrl+K while the search entry has focus, or
-* Empty the search entry and press Enter or F3 in it, or
-* Hide the search bar by focusing it (with Ctrl+F) and then, pressing Ctrl+F (again).
-
-Each search entry has a search history which can be shown as a popup list by clicking its arrow or by pressing Ctrl+Up/Down when it has focus. The topmost item shows the most recent searched text. When the entry has focus, Up and Down arrow keys as well as PageUp and PageDown keys can be used for selecting history items without showing the popup list: Up and Down change the selection by one item, while PageUp and PageDown select the topmost (most recent) and bottommost (oldest) items respectively.
-
-FeatherPad can use a shared history for all search entries, whether they are in the same window or in different windows of the same FeatherPad process. By default, each search entry has a separate history but that can be changed by checking "Preferences → Window → Use a shared search history".
-
-The shared search history starts with every session and is forgotten as soon as the session ends (i.e., when all windows are closed — there is no point in remembering the search history indefinitely).
-
-The 'Replace' docked window respects the settings for 'Match Case', 'Whole Word' and 'Regular Expression' on the search bar (in the last case, the matching text should be a regular expression, while the replacing text is always an ordinary string, although capturing groups like "\1", "\2",… are supported in it). It can be detached from and reattached to the main window at top or bottom. To remove the green highlights after replacing text, you could either hide/close the 'Replace' docked window or do as in the case of removing yellow search highlights.
-
-The 'Replace' docked window is never shown without the search bar because the settings of the latter are needed by the former.
-
-Pressing the Escape key is the easiest way of focusing the editor's main view, without changing anything else.
-
-NOTE: The Escape key never clears the search/replacement entry because the user might want to resume searching/replacing later. To clear the search/replacement entry when it is focused, press Ctrl+K.
-
-******************************
-* Selection Highlighting *
-******************************
-
-If "Preferences → Text → Selection highlighting" is checked, all case-sensitive and whole matches of the selected text will be highlighted by a light blue color (or dark blue when the dark color scheme is used). The selected text does not need to be a whole string but the highlighted matches are always whole strings.
-
-The selection highlighting can be used for finding nearby whole strings quickly. It is separate from the (yellow) search highlighting and can be used besides it.
-
-***********************
-* Going to A Line *
-***********************
-
-The Jump bar can be shown by clicking its item on the toolbar or the Search menu. Jumping will happen after pressing Enter while the Jump spinbox is active. If the checkbox beside it is checked, all the text between the text cursor and the target line will be selected.
-
-******************
-* Status Bar *
-******************
-
-The status bar not only shows information about the opened file but can also contain other widgets when certain properties are enabled in the Preferences dialog. You could also hide it in the Preferences dialog, in which case, the item "Document Properties" will appear on the File menu and could show it temporarily.
-
-***********************
-* Wheel Scrolling *
-***********************
-
-If the cursor is inside the text view, the speed of (mouse) wheel scrolling will be normal. If, in addition, the Shift key is pressed, the text will scroll one line per wheel turn.
-
-"Inertial" scrolling can be enabled in the Text section of the Preferences dialog. It creates a kind of inertia with wheel scrolling when the cursor is inside the text view.
-
-For fast wheel scrolling, put the cursor on the vertical scrollbar. Then, each step of wheel turn moves the view by one page. If the Shift key is also pressed, the view will be moved by half the page.
-
-Also, see the section "Keyboard Shortcuts" → "Scrolling", below.
-
-********************
-* Text Tabbing *
-********************
-
-A single text line could be tabbed by the Tab key and untabbed by Shift+Tab (which is also called "BackTab") if the cursor is at its start. If multiple lines are (partially) selected, Tab and BackTab will affect all of them, regardless of the cursor position.
-
-If Ctrl+Tab is used, the tabulation will be done by 4 spaces instead of a tab (the number of spaces can be changed in the Preferences dialog). This is sometimes called "soft tab".
-
-In FeatherPad, "hard" and "soft" tabs are not mutually exclusive because some texts may need one and some the other.
-
-With Ctrl+Meta+Tab, the text will be tabbed by 2 spaces, while Shift+Meta+Tab is for 2-space untabbing as far as possible.
-
-All text tabs of a document can be converted to spaces (soft tabs) by using the menu item "Text Tabs to Spaces" in the right-click menu or the "Edit" menu. This conversion is done based on the value of Preferences → Text → Text tab size, which is 4 by default. The document needs to be saved after the conversion.
-
-************************
-* Column Selection *
-************************
-
-A text column can be selected, starting from the current text cursor, by holding Shift+Ctrl and pressing the left mouse button anywhere inside the text, such that the positions of the current text cursor and the press point become two diagonal corners of the column.
-
-If the left mouse button is kept pressed and Shift+Ctrl is still held, moving the mouse will change the column, until the left mouse button is released.
-
-A column is deselected when the text cursor is moved in any way (e.g. by arrow keys, or by clicking anywhere without holding Shift+Ctrl) and on some other occasions, but it is kept intact on right clicking. With a selected column, the items "Cut", "Copy", "Paste" and "Delete" in the right-click and Edit menus work on that column. Column pasting may be a little confusing at first, but it can be used for pasting a copied column on another.
-
-If a character is typed when a column is selected, that character is inserted before it for all of its rows, without deselecting it. This property can be used, e.g., for commenting out multiple lines of codes together. Also, Backspace moves the whole column backward by removing the characters that immediately precede it, and the Delete key deletes the column.
-
-However, the Enter and BackTab keys do not make sense with a column, and so, they simply deselect it and do their normal jobs at the cursor position (to untab multiple lines, select them in the usual way and press the BackTab key, as explained in the section "Text Tabbing", above).
-
-NOTE: Column selection is useful only with unwrapped lines, although it is possible with wrapped lines too. Also, it may seem counter-intuitive with non-monospace fonts, with multi-character or double-width graphemes, or where hard tabs are used instead of soft tabs, because it is based on the number of characters, not their widths.
-
-********************
-* Auto-Bracket *
-********************
-
-With "auto-bracketing" enabled in Preferences, if a left parenthesis, brace, square bracket or double-quote is typed, a right parenthesis, brace, square bracket or double-quote will respectively be inserted after it and the cursor will be moved between them, provided that the next character is not a letter or number. (Although double-quote is not a bracket and has identical left and right signs, it is included in this.)
-
-Also, if any part of the text is selected from end to start, typing of a left parenthesis, brace, etc. will add a right one after the selection end, so that the selection will be put inside parentheses, braces, etc.
-
-For user convenience, if Enter/Return is pressed after a text selection is auto-bracketed by parentheses "(...)" or braces "{...}", the bracketed text will be put below the left bracket and above the right one.
-
-The same holds for RTL (right-to-left) texts but with right and left reversed.
-
-****************************
-* Ellipsis and Em Dash *
-****************************
-
-With the corresponding option enabled in Preferences and under proper circumstances, a triple period is replaced by an ellipsis ("…") and a double hyphen by an em dash (long dash, "—") while the user is typing.
-
-The proper circumstances depend on the pressed key and, maybe, what comes before those characters. For example, in the case of a triple period, the Space or Enter/Return key should be pressed and the triple period should not follow a period. Double hyphens are not replaced in programming languages because they may have special meanings.
-
-Some other strings may also be replaced appropriately in non-programming languages, e.g., "->", ">=" and "<=" may be changed to "→", "≥" and "≤" respectively. The existence of these characters are guaranteed by all good fonts.
-
-**********************
-* Spell Checking *
-**********************
-
-For spell checking, a Hunspell dictionary should be first added to Preferences → Text → Hunspell dictionary path (a Hunspell dictionary has the suffix ".dic" and should be accompanied by an affix file with the suffix ".aff"). Spell checking can be done by F2, but its shortcut can be customized.
-
-If "Ignore All" is clicked, all instances of the word will be ignored during the current check. If you know that the word is correct, you could click "Add To Dictionary" and it will be saved for all checks. If "Correct All" is clicked, other instances of the word will be corrected in the same way when reached during the current check.
-
-**************************
-* Keyboard Shortcuts *
-**************************
-
-To change a customizable shortcut, double click it and press your chosen shortcut inside the shortcut editor of the Preferences dialog. To clear a shortcut, use a modifier key (like Shift). To cancel, press the Escape key before the shortcut loses focus.
-
-All shortcuts, except for the extra ones below, can be found on menus or as tooltips, and many of them can be customized in the Preferences dialog.
-
-NOTE: Text editing shortcuts may be different for non-Linux OS's.
-
-Useful Extra (Hidden) Shortcuts:
-=================================
-
-Window:
-*********
-Escape Focus the editor's main view without changing anything else
-Ctrl+Escape Focus the side-pane if existing
-F11 (Un-)Fullscreen
-
-Zooming:
-**********
-Ctrl+= Zoom in (also Ctrl++ or Ctrl + mouse wheel)
-Ctrl+- Zoom out (also Ctrl + mouse wheel)
-Ctrl+0 Reset zooming
-
-Running a process:
-********************
-Ctrl+E Run the executable file opened in this tab (only if enabled in Preferences)
-Ctrl+Alt+E Exit (kill) the above process immediately
-
-Scrolling:
-***********
-Shift+Mouse Wheel If cursor is inside view, scroll up/down by one wrapped line;
- if cursor is on vertical scrollbar, scroll up/down by half the page
-Alt+Mouse Wheel If cursor is inside view, scroll horizontally when horizontal
- scrollbar is visible (which may happen when wrapping is disabled)
-Ctrl+Up/Down Scroll up/down by one wrapped line without moving text cursor
-Ctrl+PageUp/PageDown Scroll up/down by one page without moving text cursor
-
-Moving text cursor:
-********************
-Home Go to to the line start plus the indentation
-End Go to to the line end
-Ctrl+Home Go to to the text start
-Ctrl+End Go to to the text end
-Right/Left Move the cursor one character to the right/left
-Ctrl+Right/Left Move the cursor one word to the right/left
-Up/Down Go to the same position in the previous/next wrapped line
-Shift+Up/Down Go to the same position in the previous/next wrapped line while selecting text
-Meta+Up/Down Go to the same position in the previous/next (real) line
-Meta+Shift+Up/Down Go to the same position in the previous/next (real) line while selecting text
-PageUp/PageDown Go to the same position in the previous/next page
-
-Text tabulation:
-*****************
-Tab Ordinary text tabulation (its length can be changed in Preferences)
-Shift+Tab BackTab (the reverse of Tab)
-Ctrl+Tab 4-space text tabulation (can be changed in Preferences)
-Ctrl+Meta+Tab 2-space text tabulation
-Shift+Meta+Tab 2-space BackTab, as far as possible
-
-Text editing:
-**************
-Insert Toggle overwrite mode
-Backspace Delete to the left of the text cursor
-Ctrl+Backspace Delete to the the start of the word
-Delete Delete to the right of the text cursor (the opposite of Backspace)
-Ctrl+Delete Delete to the end of the word (the opposite of Ctrl+Backspace)
-Ctrl+K Delete to the end of the line (when the editor has focus)
-Ctrl+Shift+Up/Down Move the current line or selected lines upward/downward
-Shift+Enter Insert newline with the non-letter prefix of the current line
- (to write code comments or lists easily, for example)
-
-***********************
-* Multiple Clicks *
-***********************
-
-Double click Select a whole word
-Ctrl + Double click Select between spaces
-Triple click Select a line without its leading and trailing whitespaces
-Ctrl + Triple click Select a whole line plus its trailing newline if any
-
11). パッチ1 後の「b」フォルダと同期を合わせるため、「a」フォルダの「help」ファイルを削除:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/featherpad-1.6.2/a/featherpad/data/
$ ls
:
featherpad.desktop featherpad_os2.ico help
featherpad.metainfo.xml featherpad_os2.rc icons
featherpad.svg fp.qrc translations
-
削除:
$ sudo rm help
-
12). 日本語の「ヘルプ」を(別の内容で)新規作成:
「help_ja」が存在する場合は、「help_ja」を修正し、先頭行の行末を「help」から「help_ja」に置き換えてください:
-
$ sudo featherpad ~/git/void-packages/masterdir-x86_64/builddir/featherpad-1.6.2/b/featherpad/data/help
↓ 下記をすべて貼り付け:
sudo featherpad /usr/share/featherpad/help
################################################################
######### 「xbps-src」の使い方 ################################
1). <パッケージ名> をビルドして、パッケージ化:
$ cd ~/git/void-packages/
$ ./xbps-src pkg <パッケージ名>
2). パッケージ化した <パッケージ名> をインストール:
$ sudo xbps-install --repository hostdir/binpkgs <パッケージ名>
3). インストールされたか確認:
$ xbps-query -Rs <パッケージ名>
-
##################################################################
######### 「xbps-src」の「ヘルプ表示」(和訳)####################
$ cd ~/git/void-packages/
$ ./xbps-src --help
---------------------------------------------------------------
$ xbps-src [オプション] <ターゲット> [引数]
---------------------------------------------------------------
-
##################################################################
(1). ターゲットの説明: (1つだけが指定できます)
-
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
binary-bootstrap
ホストリポジトリから <masterdir> にブートストラップパッケージを、インストールします。
オプションの '-A <arch>' フラグが設定されている場合、このアーキテクチャから
ブートストラップパッケージとその必要な XBPS ユーティリティがインストールされます。
<masterdir> は、chroot 操作のために初期化されます。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
bootstrap
ソースからブートストラップパッケージを <masterdir> にビルドして、インストールします。
オプションの '-A <arch>' フラグが設定されている場合、このアーキテクチャから
ブートストラップパッケージとその必要な XBPS ユーティリティをビルドして、インストール
します。
<masterdir> は、chroot 操作のために初期化されます。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
bootstrap-update
XBPS 設定ファイルの登録リポジトリから利用可能な、最新のバージョンでブートストラップ
パッケージを更新します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
consistency-check
すべてのパッケージで一貫性チェックを、実行します
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
chroot
<masterdir> の chroot に、入ります。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
clean-repocache
<hostdir>/repocache から時代遅れのパッケージを、削除します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
fetch <パッケージ名>
パッケージのソースファイルを、ダウンロードします。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
extract <パッケージ名>
パッケージのソースファイルを、ビルドディレクトリに展開します。
デフォルトは、<masterdir>/builddir に設定されます。
→「hostdir/sources/」ディレクトリにダウンロードはされませんが、
ビルドディレクトリ「masterdir-x86_64/builddir/」に、ソースが展開されます:
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
patch <パッケージ名>
パッケージソースにパッチを当て、設定とビルドのために
パッケージを準備するために必要な、他の操作を実行します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
configure <パッケージ名>
パッケージを構成します(Fetch + Extract + Patch + Configure)
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
build <パッケージ名>
パッケージのソースをビルドします(Fetch + Extract + Patch + Configure + Build)
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
check <パッケージ名>
パッケージのソースをビルドした後に、パッケージのチェックを実行します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
install <パッケージ名>
ターゲットのパッケージを <destdir> にインストールしますが、
検査目的なので、バイナリパッケージのビルドをせず、ビルドディレクトリも削除しません。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
pkg <パッケージ名>
<パッケージ名> のバイナリパッケージ、およびすべての必要な依存関係をビルドして、
パッケージ化します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
clean [パッケージ名]
自動で依存関係を削除し、<masterdir>/builddir および <masterdir>/destdir を
クリーンアップします。
もし、<パッケージ名> が指定されている場合は、<masterdir>/destdir のパッケージ
ファイルと <masterdir>/buiddir のビルドディレクトリが削除されます。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
list
chroot される <masterdir> にインストールされたパッケージの一覧を表示します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
remove <パッケージ名>
<destdir> からターゲットパッケージを削除します。
ビルドテンプレートと <パッケージ名>-<version> が一致していない場合は、何も
削除されません。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
remove-autodeps
自動的にインストールされたすべてのパッケージの依存関係を削除します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
purge-distfiles
<hostdir>/sources の、すべての時代遅れの distfiles を削除します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
show <パッケージ名>
指定されたパッケージの情報を表示します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
show-avail <パッケージ名>
特定のアーキテクチャ用にパッケージをビルドできる場合は「0」を返します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
show-build-deps <パッケージ名>
<パッケージ名> に必要なビルドの依存関係を表示します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
show-check-deps <パッケージ名>
<パッケージ名> に必要なチェックの依存関係を表示します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
show-deps <パッケージ名>
<パッケージ名> の必要な ランタイムの依存関係を表示します。
パッケージは DestDir にインストールする必要があります。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
show-files <パッケージ名>
<パッケージ名> によってインストールされたファイルを表示します。
パッケージは DestDir にインストールする必要があります。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
show-hostmakedepends <パッケージ名>
<パッケージ名>の必要なホストビルド依存関係を表示します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
show-makedepends <パッケージ名>
<パッケージ名> の必要なターゲットビルド依存関係を表示します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
show-options <パッケージ名>
<パッケージ名>による利用可能なビルドオプションを表示します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
show-shlib-provides <パッケージ名>
<パッケージ名> の提供された shlibs のリストを表示します。
パッケージは DestDir にインストールする必要があります。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
show-shlib-requires <パッケージ名>
<パッケージ名>に必要なshlibsのリストを表示します。
パッケージは DestDir にインストールする必要があります。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
show-var <var>
xbps-src で定義されている場合、<var> の値を表示します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
show-repo-updates
XBPS リポジトリの時代遅れのパッケージのリストを表示します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
show-sys-updates
システム内の時代遅れのパッケージのリストを表示します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
show-local-updates
ローカルリポジトリの時代遅れのパッケージのリストを表示します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
sort-dependencies <pkg> <pkgN+1> ...
追加の引数として、指定されたパッケージのリストが与えられた場合、
ソートされた依存関係リストが 標準出力 に返されます。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
update-bulk
時代遅れのシステムリポジトリ内のすべてのパッケージを再ビルドします。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
update-sys
時代遅れのシステム内のすべてのパッケージを再ビルドし、それらを更新します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
update-local
時代遅れのローカルリポジトリのすべてのパッケージを再ビルドします。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
update-check <パッケージ名>
新しいリリースについて、<パッケージ名> の上流サイトをチェックします。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
update-hash-cache
既存のソース distfiles で、ハッシュキャッシュを更新します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
zap
ccache、distcc および host ディレクトリが保存された、masterdir を削除します。
-
################################################################
(2). オプションの説明:
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-1
ターゲットパッケージの依存関係が欠けている場合は、それらをビルドせずに、失敗
します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-A <ホスト>
指定のホストマシンを使用します。
masterdir-<ホスト> がまだ存在しない場合は自動的に作成されます。
一部のホストマシンは、プロセッサによってネイティブにサポートされていない場合、
qemu-user と binfmt-support を必要とする場合があります。
サポートされているホスト:
aarch64-musl
aarch64
armv5te-musl
armv5te
armv5tel-musl
armv5tel
armv6hf-musl
armv6hf
armv6l-musl
armv6l
armv7hf-musl
armv7hf
armv7l-musl
armv7l
i686-musl
i686
mips-musl
mipsel-musl
mipselhf-musl
mipshf-musl
ppc-musl
ppc
ppc64-musl
ppc64
ppc64le-musl
ppc64le
ppcle-musl
ppcle
riscv64-musl
riscv64
x86_64-musl
x86_64
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-a <ターゲット>
指定されたターゲットマシンのパッケージをクロスコンパイルします。
サポートされているターゲット:
aarch64-musl
aarch64
armv5te-musl
armv5te
armv5tel-musl
armv5tel
armv6hf-musl
armv6hf
armv6l-musl
armv6l
armv7hf-musl
armv7hf
armv7l-musl
armv7l
i686-musl
i686
mips-musl
mipsel-musl
mipselhf-musl
mipshf-musl
ppc-musl
ppc
ppc64-musl
ppc64
ppc64le-musl
ppc64le
ppcle-musl
ppcle
riscv64-musl
riscv64
x86_64-musl
x86_64
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-b
壊れているとマークされている、nocross、またはアーチで除外されている場合でも、
パッケージをビルドします。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-c <configuration>
<configuration> が指定されている場合、etc/conf.<configuration> は、主要な
構成ファイル名として使用されます。
etc/conf が存在しない場合にのみ試行されます。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-C
インストールが成功した後、ビルドディレクトリ、自動依存関係、パッケージ用の
destdir を削除しません。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-E
ターゲットパッケージのリポジトリに、バイナリパッケージが存在する場合は、
それをビルドせず、すぐに終了します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-f
正常に実行された場合でも、指定されたステージ(構成/ビルド/インストール/パッケージ化)
を実行します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-G Enable XBPS_USE_GIT_REVS(詳細については、etc/defaults.conf を参照してください)
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-g
デバッグシンボルを備えた -dbg パッケージのビルドを有効にします。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-H <hostdir>
unset がデフォルトで、「void-packages/hostdir」がある場合に、
<masterdir>/host にマウントされる、バインドされるディレクトリへの絶対パスを指定。
host ディレクトリには、リモートリポジトリからダウンロードされたバイナリパッケージ、
ソース、パッケージの依存関係が保存されています。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-h
使い方を表示。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-I
ソースを展開/読み込むのに役立つ必要な依存関係を無視します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-i
xbps-src の内部エラーを致命的なエラーにしません。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-j
パッケージをビルドするときに使用する並列ビルドジョブ(プロセッサ)の数を指定。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-L
ASCII の色を無効にします。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-m <masterdir>
unset がデフォルトで「void-packages/masterdir-<host>」がある場合に、
masterdir として使用するディレクトリへの絶対パスを指定。
masterdir は、パッケージを構築/保存/コンパイルする、メインとなるディレクトリです。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-N
リモートリポジトリの使用を無効にして、依存関係を解決します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-o <opt,~opt2,...>
パッケージビルドオプションを有効または(`~` を付けて)無効にします。
「etc/conf」がすでにいくつかを指定している場合、それはマージされています。
依存関係をビルドする必要がある場合、これらのオプションを継承する場合、
これらのオプションはビルド内のすべてのパッケージに適用されることに注意
してください。
'show-options' target でサポートされているオプションを表示できます。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-p <variable,variable2,...>
ターゲットを表示するには、デフォルトの変数に加えて指定された変数を表示します。
変数は分割され、各単語はデフォルトで別々の行で表示されます。
値全体を 1行で表示するには、asterisk を変数名に追加します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-Q
ターゲットパッケージのみのチェックステージを実行します。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-K
長いテストでチェックステージを実行します。
-Q とは異なり、これはビルドされた依存関係のチェックステージも実行されます。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-q
xbps-src の情報出力をしません。(ビルド出力は引き続き表示されます)
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-r <repo>
代替ローカルリポジトリを使用して、生成されたバイナリパッケージを保存します。
unset がデフォルトで <hostdir>/binpkgs になります。
もし、set の場合、binpkgs は <hostdir>/binpkgs/<repo> に保存されます。
また、この代替リポジトリは、他のリポジトリよりも優先度の高い順序で依存関係を
解決するためにも使用されます。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-s
いくつかの警告をエラーにします。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-t
現在のものを汚さないように、一時的な masterdir を作成します。
既存の masterdir には、最初に binary-bootstrap を完全に入力する必要があることに
注意してください。
ターゲットが終了すると、この一時的な masterdir は削除されます。
このフラグには xbps-uchroot(1) が必要であり、 overlayfs をサポートしていない
ファイルシステムでは機能しません。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-v
詳細なメッセージを表示します(update-check のみに影響します)。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-V
xbps のバージョンを表示して、終了します。
-
##################################################################
→Ctrl+S で保存:
-
13). 差分(パッチ)の作成2:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/featherpad-1.6.2/
$ diff -Naur a b > 02.help-translation-jp.patch
→「help」を別の内容で、新規作成するパッチです:
ファイル名は任意です:
-
14). 違和感がないように、パッチファイルの 先頭行を削除:
$ sudo featherpad 02.help-translation-jp.patch
↓ 下記の先頭行を削除:
diff -Naur a/featherpad/data/help b/featherpad/data/help
-
確認:
$ cat 02.help-translation-jp.patch
--- a/featherpad/data/help 1970-01-01 09:00:00.000000000 +0900
+++ b/featherpad/data/help 2025-10-11 23:47:17.689850053 +0900
@@ -0,0 +1,457 @@
+ sudo featherpad /usr/share/featherpad/help
+
+################################################################
+######### 「xbps-src」の使い方 ################################
+
+
+1). <パッケージ名> をビルドして、パッケージ化:
+
+$ cd ~/git/void-packages/
+$ ./xbps-src pkg <パッケージ名>
+
+
+2). パッケージ化した <パッケージ名> をインストール:
+
+$ sudo xbps-install --repository hostdir/binpkgs <パッケージ名>
+
+
+3). インストールされたか確認:
+
+$ xbps-query -Rs <パッケージ名>
+
+
+-
+
+##################################################################
+######### 「xbps-src」の「ヘルプ表示」(和訳)####################
+
+$ cd ~/git/void-packages/
+$ ./xbps-src --help
+
+---------------------------------------------------------------
+$ xbps-src [オプション] <ターゲット> [引数]
+---------------------------------------------------------------
+
+-
+
+##################################################################
+(1). ターゲットの説明: (1つだけが指定できます)
+
+-
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+binary-bootstrap
+ ホストリポジトリから <masterdir> にブートストラップパッケージを、インストールします。
+ オプションの '-A <arch>' フラグが設定されている場合、このアーキテクチャから
+ ブートストラップパッケージとその必要な XBPS ユーティリティがインストールされます。
+ <masterdir> は、chroot 操作のために初期化されます。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+bootstrap
+ ソースからブートストラップパッケージを <masterdir> にビルドして、インストールします。
+ オプションの '-A <arch>' フラグが設定されている場合、このアーキテクチャから
+ ブートストラップパッケージとその必要な XBPS ユーティリティをビルドして、インストール
+ します。
+ <masterdir> は、chroot 操作のために初期化されます。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+bootstrap-update
+ XBPS 設定ファイルの登録リポジトリから利用可能な、最新のバージョンでブートストラップ
+ パッケージを更新します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+consistency-check
+ すべてのパッケージで一貫性チェックを、実行します
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+chroot
+ <masterdir> の chroot に、入ります。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+clean-repocache
+ <hostdir>/repocache から時代遅れのパッケージを、削除します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+fetch <パッケージ名>
+ パッケージのソースファイルを、ダウンロードします。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+extract <パッケージ名>
+ パッケージのソースファイルを、ビルドディレクトリに展開します。
+ デフォルトは、<masterdir>/builddir に設定されます。
+
+ →「hostdir/sources/」ディレクトリにダウンロードはされませんが、
+ ビルドディレクトリ「masterdir-x86_64/builddir/」に、ソースが展開されます:
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+patch <パッケージ名>
+ パッケージソースにパッチを当て、設定とビルドのために
+ パッケージを準備するために必要な、他の操作を実行します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+configure <パッケージ名>
+ パッケージを構成します(Fetch + Extract + Patch + Configure)
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+build <パッケージ名>
+ パッケージのソースをビルドします(Fetch + Extract + Patch + Configure + Build)
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+check <パッケージ名>
+ パッケージのソースをビルドした後に、パッケージのチェックを実行します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+install <パッケージ名>
+ ターゲットのパッケージを <destdir> にインストールしますが、
+ 検査目的なので、バイナリパッケージのビルドをせず、ビルドディレクトリも削除しません。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+pkg <パッケージ名>
+ <パッケージ名> のバイナリパッケージ、およびすべての必要な依存関係をビルドして、
+ パッケージ化します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+clean [パッケージ名]
+ 自動で依存関係を削除し、<masterdir>/builddir および <masterdir>/destdir を
+ クリーンアップします。
+ もし、<パッケージ名> が指定されている場合は、<masterdir>/destdir のパッケージ
+ ファイルと <masterdir>/buiddir のビルドディレクトリが削除されます。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+list
+ chroot される <masterdir> にインストールされたパッケージの一覧を表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+remove <パッケージ名>
+ <destdir> からターゲットパッケージを削除します。
+ ビルドテンプレートと <パッケージ名>-<version> が一致していない場合は、何も
+ 削除されません。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+remove-autodeps
+ 自動的にインストールされたすべてのパッケージの依存関係を削除します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+purge-distfiles
+ <hostdir>/sources の、すべての時代遅れの distfiles を削除します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show <パッケージ名>
+ 指定されたパッケージの情報を表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-avail <パッケージ名>
+ 特定のアーキテクチャ用にパッケージをビルドできる場合は「0」を返します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-build-deps <パッケージ名>
+ <パッケージ名> に必要なビルドの依存関係を表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-check-deps <パッケージ名>
+ <パッケージ名> に必要なチェックの依存関係を表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-deps <パッケージ名>
+ <パッケージ名> の必要な ランタイムの依存関係を表示します。
+ パッケージは DestDir にインストールする必要があります。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-files <パッケージ名>
+ <パッケージ名> によってインストールされたファイルを表示します。
+ パッケージは DestDir にインストールする必要があります。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-hostmakedepends <パッケージ名>
+ <パッケージ名>の必要なホストビルド依存関係を表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-makedepends <パッケージ名>
+ <パッケージ名> の必要なターゲットビルド依存関係を表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-options <パッケージ名>
+ <パッケージ名>による利用可能なビルドオプションを表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-shlib-provides <パッケージ名>
+ <パッケージ名> の提供された shlibs のリストを表示します。
+ パッケージは DestDir にインストールする必要があります。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-shlib-requires <パッケージ名>
+ <パッケージ名>に必要なshlibsのリストを表示します。
+ パッケージは DestDir にインストールする必要があります。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-var <var>
+ xbps-src で定義されている場合、<var> の値を表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-repo-updates
+ XBPS リポジトリの時代遅れのパッケージのリストを表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-sys-updates
+ システム内の時代遅れのパッケージのリストを表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+show-local-updates
+ ローカルリポジトリの時代遅れのパッケージのリストを表示します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+sort-dependencies <pkg> <pkgN+1> ...
+ 追加の引数として、指定されたパッケージのリストが与えられた場合、
+ ソートされた依存関係リストが 標準出力 に返されます。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+update-bulk
+ 時代遅れのシステムリポジトリ内のすべてのパッケージを再ビルドします。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+update-sys
+ 時代遅れのシステム内のすべてのパッケージを再ビルドし、それらを更新します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+update-local
+ 時代遅れのローカルリポジトリのすべてのパッケージを再ビルドします。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+update-check <パッケージ名>
+ 新しいリリースについて、<パッケージ名> の上流サイトをチェックします。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+update-hash-cache
+ 既存のソース distfiles で、ハッシュキャッシュを更新します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+zap
+ ccache、distcc および host ディレクトリが保存された、masterdir を削除します。
+
+
+-
+
+################################################################
+(2). オプションの説明:
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-1
+ ターゲットパッケージの依存関係が欠けている場合は、それらをビルドせずに、失敗
+ します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-A <ホスト>
+ 指定のホストマシンを使用します。
+ masterdir-<ホスト> がまだ存在しない場合は自動的に作成されます。
+
+ 一部のホストマシンは、プロセッサによってネイティブにサポートされていない場合、
+ qemu-user と binfmt-support を必要とする場合があります。
+
+サポートされているホスト:
+
+ aarch64-musl
+ aarch64
+ armv5te-musl
+ armv5te
+ armv5tel-musl
+ armv5tel
+ armv6hf-musl
+ armv6hf
+ armv6l-musl
+ armv6l
+ armv7hf-musl
+ armv7hf
+ armv7l-musl
+ armv7l
+ i686-musl
+ i686
+ mips-musl
+ mipsel-musl
+ mipselhf-musl
+ mipshf-musl
+ ppc-musl
+ ppc
+ ppc64-musl
+ ppc64
+ ppc64le-musl
+ ppc64le
+ ppcle-musl
+ ppcle
+ riscv64-musl
+ riscv64
+ x86_64-musl
+ x86_64
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-a <ターゲット>
+指定されたターゲットマシンのパッケージをクロスコンパイルします。
+
+サポートされているターゲット:
+
+ aarch64-musl
+ aarch64
+ armv5te-musl
+ armv5te
+ armv5tel-musl
+ armv5tel
+ armv6hf-musl
+ armv6hf
+ armv6l-musl
+ armv6l
+ armv7hf-musl
+ armv7hf
+ armv7l-musl
+ armv7l
+ i686-musl
+ i686
+ mips-musl
+ mipsel-musl
+ mipselhf-musl
+ mipshf-musl
+ ppc-musl
+ ppc
+ ppc64-musl
+ ppc64
+ ppc64le-musl
+ ppc64le
+ ppcle-musl
+ ppcle
+ riscv64-musl
+ riscv64
+ x86_64-musl
+ x86_64
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-b
+ 壊れているとマークされている、nocross、またはアーチで除外されている場合でも、
+ パッケージをビルドします。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-c <configuration>
+ <configuration> が指定されている場合、etc/conf.<configuration> は、主要な
+ 構成ファイル名として使用されます。
+ etc/conf が存在しない場合にのみ試行されます。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-C
+ インストールが成功した後、ビルドディレクトリ、自動依存関係、パッケージ用の
+ destdir を削除しません。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-E
+ ターゲットパッケージのリポジトリに、バイナリパッケージが存在する場合は、
+ それをビルドせず、すぐに終了します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-f
+ 正常に実行された場合でも、指定されたステージ(構成/ビルド/インストール/パッケージ化)
+ を実行します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-G Enable XBPS_USE_GIT_REVS(詳細については、etc/defaults.conf を参照してください)
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-g
+ デバッグシンボルを備えた -dbg パッケージのビルドを有効にします。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-H <hostdir>
+ unset がデフォルトで、「void-packages/hostdir」がある場合に、
+ <masterdir>/host にマウントされる、バインドされるディレクトリへの絶対パスを指定。
+ host ディレクトリには、リモートリポジトリからダウンロードされたバイナリパッケージ、
+ ソース、パッケージの依存関係が保存されています。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-h
+ 使い方を表示。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-I
+ ソースを展開/読み込むのに役立つ必要な依存関係を無視します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-i
+ xbps-src の内部エラーを致命的なエラーにしません。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-j
+ パッケージをビルドするときに使用する並列ビルドジョブ(プロセッサ)の数を指定。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-L
+ ASCII の色を無効にします。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-m <masterdir>
+ unset がデフォルトで「void-packages/masterdir-<host>」がある場合に、
+ masterdir として使用するディレクトリへの絶対パスを指定。
+ masterdir は、パッケージを構築/保存/コンパイルする、メインとなるディレクトリです。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-N
+ リモートリポジトリの使用を無効にして、依存関係を解決します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-o <opt,~opt2,...>
+ パッケージビルドオプションを有効または(`~` を付けて)無効にします。
+ 「etc/conf」がすでにいくつかを指定している場合、それはマージされています。
+ 依存関係をビルドする必要がある場合、これらのオプションを継承する場合、
+ これらのオプションはビルド内のすべてのパッケージに適用されることに注意
+ してください。
+
+ 'show-options' target でサポートされているオプションを表示できます。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-p <variable,variable2,...>
+ ターゲットを表示するには、デフォルトの変数に加えて指定された変数を表示します。
+ 変数は分割され、各単語はデフォルトで別々の行で表示されます。
+ 値全体を 1行で表示するには、asterisk を変数名に追加します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-Q
+ ターゲットパッケージのみのチェックステージを実行します。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-K
+ 長いテストでチェックステージを実行します。
+ -Q とは異なり、これはビルドされた依存関係のチェックステージも実行されます。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-q
+ xbps-src の情報出力をしません。(ビルド出力は引き続き表示されます)
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-r <repo>
+ 代替ローカルリポジトリを使用して、生成されたバイナリパッケージを保存します。
+ unset がデフォルトで <hostdir>/binpkgs になります。
+
+ もし、set の場合、binpkgs は <hostdir>/binpkgs/<repo> に保存されます。
+ また、この代替リポジトリは、他のリポジトリよりも優先度の高い順序で依存関係を
+ 解決するためにも使用されます。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-s
+ いくつかの警告をエラーにします。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-t
+ 現在のものを汚さないように、一時的な masterdir を作成します。
+ 既存の masterdir には、最初に binary-bootstrap を完全に入力する必要があることに
+ 注意してください。
+
+ ターゲットが終了すると、この一時的な masterdir は削除されます。
+ このフラグには xbps-uchroot(1) が必要であり、 overlayfs をサポートしていない
+ ファイルシステムでは機能しません。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-v
+ 詳細なメッセージを表示します(update-check のみに影響します)。
+
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
+-V
+ xbps のバージョンを表示して、終了します。
+
+-
+
+##################################################################
+
-
15). パッチ2 後の「b」フォルダと同期を合わせるため、「b」フォルダの「help」ファイルを「a」フォルダにコピー:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/featherpad-1.6.2/
$ sudo cp b/featherpad/data/help a/featherpad/data/help
-
16). デスクトップファイルの修正:
$ sudo featherpad ~/git/void-packages/masterdir-x86_64/builddir/featherpad-1.6.2/b/featherpad/data/featherpad.desktop
-
Name=FeatherPad
↓ 修正:
Name=featherpad
→Ctrl+S で保存:
-
17). 差分(パッチ)の作成3:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/featherpad-1.6.2/
$ diff -Naur a b > 03.featherpad-desktop.patch
→「デスクトップファイル」(メニューの名前)を修正するパッチです:
ファイル名は任意です:
-
18). 違和感がないように、パッチファイルの 先頭行を削除:
$ sudo featherpad 03.featherpad-desktop.patch
↓ 下記の先頭行を削除:
diff -Naur a/featherpad/data/featherpad.desktop b/featherpad/data/featherpad.desktop
-
確認:
$ cat 03.featherpad-desktop.patch
--- a/featherpad/data/featherpad.desktop 2025-10-11 15:08:34.023423019 +0900
+++ b/featherpad/data/featherpad.desktop 2025-10-11 16:17:35.175545023 +0900
@@ -1,5 +1,5 @@
[Desktop Entry]
-Name=FeatherPad
+Name=featherpad
GenericName=Text Editor
GenericName[cs]=Textový editor
GenericName[da]=Tekstredigering
-
19). 「テンプレート」ファイルが置かれた「パッケージ」のフォルダに、「patches」という名前のフォルダを作成:
-
テンプレートファイルがあることを確認:
$ cd ~/git/void-packages/srcpkgs/featherpad/
$ ls
:
template
-
フォルダを作成:
$ sudo mkdir -p patches/
-
確認:
$ ls -1p
:
patches/
template
-
20). そのフォルダに、作成した「.patch」ファイルを移動:
$ cd ~/git/void-packages/srcpkgs/featherpad/
$ sudo mv ~/git/void-packages/masterdir-x86_64/builddir/featherpad-1.6.2/01.help-del.patch patches/01.help-del.patch
-
$ sudo mv ~/git/void-packages/masterdir-x86_64/builddir/featherpad-1.6.2/02.help-translation-jp.patch patches/02.help-translation-jp.patch
-
$ sudo mv ~/git/void-packages/masterdir-x86_64/builddir/featherpad-1.6.2/03.featherpad-desktop.patch patches/03.featherpad-desktop.patch
-
確認:
$ cd ~/git/void-packages/
$ ls -1p srcpkgs/featherpad
:
patches/
template
-
$ ls -1p srcpkgs/featherpad/patches/
:
01.help-del.patch
02.help-translation-jp.patch
03.featherpad-desktop.patch
-
21). 「差分ファイル」の作成に使った「フォルダ」と「ファイル」を削除:
パッケージ化完了時に、作業フォルダが削除されますが、残がいがあると失敗します:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/featherpad-1.6.2/
$ sudo rm -r a/
$ sudo rm -r b/
$ sudo rm 01.help-del.patch
$ sudo rm 02.help-translation-jp.patch
$ sudo rm 03.featherpad-desktop.patch
-
22). クリーン後、「パッケージ化」してみる:
-
クリーン:
$ cd ~/git/void-packages/
$ ./xbps-src clean featherpad
:
=> featherpad-1.6.2_1: cleaning build directory...
[user@user-pc void-packages]$
-
パッケージ化:
$ cd ~/git/void-packages/
$ ./xbps-src pkg featherpad
:
=> Creating featherpad-1.6.2_1.x86_64.xbps for repository /host/binpkgs ...
=> featherpad-1.6.2_1: running post-pkg hook: 00-register-pkg ...
=> Registering new packages to /host/binpkgs
index: added `featherpad-1.6.2_1' (x86_64).
index: 3 packages registered.
=> featherpad-1.6.2_1: removing autodeps, please wait...
=> featherpad-1.6.2_1: cleaning build directory...
=> featherpad: removing files from destdir...
[user@user-pc void-packages]$
-
23). 既存の「FeatherPad」アプリを削除:
ギリギリまで使いました:
$ sudo xbps-remove FeatherPad
:
Name Action Version New version Download size
FeatherPad remove 1.6.2_1 - -
-
確認:
$ xbps-query -Rs FeatherPad
:
[-] FeatherPad-1.6.2_1 Lightweight Qt6 plain-text editor for Linux
-
24). パッケージ化された「featherpad」アプリをインストール:
$ sudo xbps-install --repository hostdir/binpkgs featherpad
:
Name Action Version New version Download size
featherpad install - 1.6.2_1 -
-
確認:
$ xbps-query -Rs featherpad
:
[-] FeatherPad-1.6.2_1 Lightweight Qt6 plain-text editor for Linux
-
$ xbps-query -s featherpad
:
[*] featherpad-1.6.2_1 Lightweight Qt6 plain-text editor for Linux
-
25). 「featherpad」アプリを起動して、動作確認:
メニュー→「アクセサリー」→「featherpad」
ヘルプで、「xbps-src」のヘルプが表示されました:
-
見やすく修正したいときは、編集できます:
$ sudo featherpad /usr/share/featherpad/help
-
$ which featherpad
/usr/bin/featherpad
-
$ ls /usr/share/featherpad/
help translations
→やはり、「help-ORG」は消えました:
-
26). リスト表示してみる:
$ cd ~/git/void-packages/
$ ./xbps-src list
ii acl-2.3.2_1 Access Control List filesystem support
ii attr-2.5.2_2 Extended attribute support library for ACL support
ii base-chroot-0.67_3 Minimal set of packages required for chroot with xbps-src
ii base-files-0.145_1 Void Linux base system files
ii binutils-2.44_2 GNU binary utilities
ii binutils-doc-2.44_2 GNU binary utilities - info files
ii binutils-libs-2.44_2 GNU binary utilities - shared libraries
ii bsdtar-3.8.1_1 BSD utilities using libarchive
ii bzip2-1.0.8_2 Freely available, patent free, high-quality data compressor
ii c-ares-1.34.5_1 Library for asynchronous DNS requests
ii ca-certificates-20250419+3.114_1 Common CA certificates for SSL/TLS from Mozilla
ii ccache-4.10.2_1 Fast C/C++ Compiler Cache
ii chroot-bash-5.3_1 GNU Bourne Again Shell -- for xbps-src use
ii chroot-distcc-3.4_1 Distributed compilation for faster C/C++ builds -- for xbps-src use
ii chroot-gawk-5.3.2_1 GNU awk utility -- for xbps-src use
ii chroot-git-2.49.0_1 GIT Tree History Storage Tool -- for xbps-src use
ii chroot-grep-3.11_1 GNU grep utility - for use with xbps-src
ii chroot-util-linux-2.40.2_1 Miscellaneous linux utilities -- for xbps-src use
ii coreutils-9.4_3 GNU core utilities
ii diffutils-3.12_1 GNU diff utilities
ii file-5.46_2 File type identification utility
ii findutils-4.10.0_1 GNU Find Utilities
ii gcc-14.2.1+20250405_2 GNU Compiler Collection
ii gcc-ada-14.2.1+20250405_2 GNU Compiler Collection - Ada compiler frontend
ii glibc-2.41_1 GNU C library
ii glibc-devel-2.41_1 GNU C library - development files
ii glibc-locales-2.41_1 GNU C library - locale data files
ii gmp-6.3.0_1 Library for arbitrary precision arithmetic
ii gzip-1.14_1 GNU compression utility (replacement for compress)
ii jansson-2.14.1_1 Library for encoding, decoding and manipulating JSON data
ii json-c-0.18_1 JSON implementation in C
ii kernel-libc-headers-6.14_1 Linux API headers for userland development
ii libada-14.2.1+20250405_2 GNU Compiler Collection - Ada library
ii libada-devel-14.2.1+20250405_2 GNU Compiler Collection - Ada library - development files
ii libarchive-3.8.1_1 Library to read/write several different streaming archive formats
ii libatomic-14.2.1+20250405_2 GNU Compiler Collection - Atomics library
ii libatomic-devel-14.2.1+20250405_2 GNU Compiler Collection - Atomics library - development files
ii libcap-2.76_1 POSIX.1e capabilities suite
ii libcrypto3-3.5.4_1 Toolkit for Secure Sockets Layer and Transport Layer Security - crypto l...
ii libcurl-8.16.0_1 Multiprotocol file transfer library
ii libdebuginfod-0.192_2 Utilities to handle ELF object files - debuginfod library
ii libelf-0.192_2 Utilities to handle ELF object files - runtime library
ii libev-4.33_1 High-performance event loop loosely modelled after libevent
ii libgcc-14.2.1+20250405_2 GNU Compiler Collection - GCC library
ii libgcc-devel-14.2.1+20250405_2 GNU Compiler Collection - GCC library - development files
ii libidn2-2.3.4_1 Internationalized string handling library
ii liblz4-1.10.0_1 LZ4 compression library
ii liblzma-5.8.1_1 XZ-format compression library
ii libmagic-5.46_2 File type identification library
ii libpsl-0.21.5_1 Public Suffix List library functions
ii libreadline8-8.2.010_1 GNU Readline Library
ii libssh2-1.11.1_1 Library implementing the SSH2 protocol
ii libssl3-3.5.4_1 Toolkit for Secure Sockets Layer and Transport Layer Security - SSL/TLS ...
ii libstdc++-14.2.1+20250405_2 GNU Compiler Collection - Standard C++ Library
ii libstdc++-devel-14.2.1+20250405_2 GNU Compiler Collection - Standard C++ Library - development files
ii libunistring-1.0_1 Library for manipulating Unicode strings and C strings
ii libxbps-0.60.5_1 XBPS package system utilities - runtime library
ii libxcrypt-compat-4.4.38_1 Modern library for one-way hashing of passwords - legacy compatibility
ii libxxHash-0.8.2_1 Fast non-cryptographic hashing algorithm - library
ii libzstd-1.5.7_1 Fast real-time compression algorithm
ii make-4.4.1_1 GNU Make build tool
ii mpfr-4.2.2_1 Library for multiple-precision floating-point computations
ii ncurses-6.5_2 System V Release 4.0 curses emulation library
ii ncurses-base-6.5_2 System V Release 4.0 curses emulation library - base terminfo files
ii ncurses-libs-6.5_2 System V Release 4.0 curses emulation library -- shared libraries
ii nghttp2-1.66.0_1 HTTP/2 C Library
ii nghttp3-1.10.1_1 HTTP/3 library written in C
ii ngtcp2-1.16.0_1 Effort to implement IETF QUIC protocol
ii openssl-3.5.4_1 Toolkit for Secure Sockets Layer and Transport Layer Security
ii patch-2.7.6_4 Patch files using diff output
ii public-suffix-2025.03.01_1 Public Suffix List
ii run-parts-5.23.2_1 Run scripts or programs in a directory
ii sed-4.9_1 The GNU stream editor
ii tzdata-2025b_2 Time zone and daylight-saving time data
ii xbps-0.60.5_1 XBPS package system utilities
ii xbps-triggers-0.129_1 XBPS triggers for Void Linux
ii zlib-1.3.1_1 Compression/decompression Library
→chroot して使われる にインストールされているパッケージの一覧を表示:
-
$ xbps-query -l
:
ii AppStream-1.0.4_2 Tools and libraries to work with AppStream metadata
ii FeatherPad-1.6.2_1 Lightweight Qt6 plain-text editor for Linux
ii NetworkManager-1.50.0_1 Network Management daemon
ii SDL2-2.32.8_1 Simple DirectMedia Layer (version 2)
: 省略
ii zd1211-firmware-1.5_3 Firmware for the Zydas 1211 wifi cards
ii zix-0.6.2_1 C library of portability wrappers and data structures
ii zlib-1.3.1_1 Compression/decompression Library
→多くのパッケージが表示されました:
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----- ----- ----
22. 参考: 「四川省」 (kshisen) ゲームで、「パッケージ化」にトライした履歴:
-
手順を確認した作業なので、こちらの作業は要りません:
-
「四川省」 (kshisen) ゲームは、「Void Linux」のリポジトリにないので、インストールできません。
ただし、Flatpak に登録があるので、Flatpak からインストールしました:
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----- ----- -----
22-1. 「kshisen」アプリの依存パッケージを確認:
-
ホストOS (Xubuntu 24.04 LTS) で、「kshisen」ゲームの情報を確認:
「Void Linux」のリポジトリに登録はありませんが、「Xubuntu 24.04 LTS」には登録されていて、
すでにインストール済です:
-
(1). ホストOS (Xubuntu 24.04 LTS) で、インストールされているか確認:
$ apt list kshisen
:
kshisen/noble,now 4:23.08.5-0ubuntu3 amd64 [インストール済み]
→インストール済です:
こちらに表示されているバージョンは、Ubuntu の .deb パッケージのバージョンなので、無視しました:
-
(2). 「kshisen」ゲームの情報を確認:
表示が言語パッケージで埋もれるので、見やすく修正しました:
-
$ apt info kshisen
Package: kshisen
Version: 4:23.08.5-0ubuntu3
Priority: optional
Section: universe/games
Origin: Ubuntu
Maintainer: Kubuntu Developers <kubuntu-devel@lists.ubuntu.com> ←(メンテナ)
Original-Maintainer: Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 2,333 kB
Depends: ←(依存)
kdegames-mahjongg-data-kf5
libc6 (>= 2.34)
libkf5configcore5 (>= 5.90.0~)
libkf5configgui5 (>= 5.90.0~)
libkf5configwidgets5 (>= 5.23.0)
libkf5coreaddons5 (>= 5.90.0~)
libkf5crash5 (>= 5.90.0~)
libkf5dbusaddons5 (>= 5.90.0~)
libkf5i18n5 (>= 4.97.0)
libkf5kdegames7 (>= 4:23.08.5~)
libkf5kmahjongglib5 (>= 4:23.08.5~)
libkf5widgetsaddons5 (>= 4.96.0)
libkf5xmlgui5 (>= 5.90.0~)
libqt5core5t64 (>= 5.15.1)
libqt5gui5t64 (>= 5.15.0~) | libqt5gui5-gles (>= 5.15.0~)
libqt5widgets5t64 (>= 5.15.0~)
libstdc++6 (>= 11)
Recommends: khelpcenter ←(おすすめ)
Breaks: kde-l10n-ja (<< 4:16.04.3-4~)
Replaces: kde-l10n-ja (<< 4:16.04.3-4~)
Homepage: http://games.kde.org/ ←(ホームページ)
Download-Size: 1,113 kB
APT-Manual-Installed: yes
APT-Sources: http://jp.archive.ubuntu.com/ubuntu noble/universe amd64 Packages
Description: Shisen-Sho solitaire game ←(説明)
KShisen is a Shisen-Sho game where the player removes adjascent pairs of
Mahjongg tiles to clear the board.
→こちらに表示されている「依存」のパッケージ名は、Ubuntu でのパッケージ名です:
なので、「Void Linux」でのパッケージ名を探さないといけません:
-
(3). ホームページについて:
Homepage: http://games.kde.org/
↓
https://apps.kde.org/categories/games/
-
https://apps.kde.org/kshisen/
右下の「Browse source code」
-
(4). ライセンス:
GPL-2.0-or-later
-
(5). プロジェクト情報
KShisen
Shisen-Sho is a solitaire-like game played using the standard set of Mahjong tiles
↓
Shisen-Sho is a solitaire-like game
-
https://invent.kde.org/games/kshisen
水色の「コード」をクリック→
ソースコードをダウンロード(tar.gz)
https://invent.kde.org/games/kshisen/-/archive/master/kshisen-master.tar.gz?ref_type=heads
-
タグ: v25.08.1 指定でダウンロード:
https://invent.kde.org/games/kshisen/-/archive/v25.08.1/kshisen-v25.08.1.tar.gz?ref_type=tags
-
$ ls -1 ~/ダウンロード/game-kshisen
:
kshisen-v25.08.1
kshisen-v25.08.1.tar.gz
-
$ sha256sum kshisen-v25.08.1.tar.gz
:
3dfc9498c7899cf6f35f42f7fbf0c4f9b53605e6fc95bad040d2b8f9827c359d kshisen-v25.08.1.tar.gz
-
https://invent.kde.org/games/kshisen/-/blob/master/ChangeLog
Changes since 1.8.2:
-
(9). 依存パッケージ:
「ソース」をダウンロードして展開後、「CMakeLists.txt」を確認:
-
含まれている、「find_package()」の行を抜粋:
find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE) ←(確認1)
find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS
Core
Gui
)
find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS ←(確認2)
CoreAddons
Config
IconThemes
ConfigWidgets
Crash
DBusAddons
DocTools
I18n
WidgetsAddons
XmlGui
)
find_package(KMahjongglib6 6.0.0 REQUIRED) ←(確認3)
find_package(KDEGames6 6.0.0 REQUIRED) ←(確認4)
↓ 上記の依存を見ながら、該当するパッケージを検索:
-
(10). 「Void Linux」で依存パッケージがインストールできるか確認:
-
確認1:
$ ls -1p srcpkgs/ | grep ecm
:
ecm/
ecm-devel
-
確認2:
$ ls -1p srcpkgs/ | grep qt6 | grep core
:
qt6-core
$ ls -1p srcpkgs/ | grep qt6 | grep gui
:
qt6-gui
-
確認3:
$ ls -1p srcpkgs/ | grep kf6-k | grep core
:
kf6-kcoreaddons/
kf6-kcoreaddons-devel
kf6-kconfig/
kf6-kconfig-devel
kf6-kiconthemes/
kf6-kiconthemes-devel
kf6-kconfigwidgets/
kf6-kconfigwidgets-devel
kf6-kcrash/
kf6-kcrash-devel
kf6-kdbusaddons/
kf6-kdbusaddons-devel
kf6-kdoctools/
kf6-kdoctools-devel
kf6-ki18n/
kf6-ki18n-devel
kf6-kwidgetsaddons/
kf6-kwidgetsaddons-devel
kf6-kxmlgui/
kf6-kxmlgui-devel
-
確認4:
$ ls -1p srcpkgs/ | grep libk | grep jongg
:
libkmahjongg/
libkmahjongg-devel
$ ls -1p srcpkgs/ | grep libk | grep game
:
libkdegames/
libkdegames-devel
→わかっている範囲で、すべての依存を確認できました:
後は、ビルドしてみないと、不足しているパッケージはわかりません:
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----- ----- ----- -
22-2. 「kshisen」アプリの「xbps-src」の「テンプレート」ファイルを作成:
-
$ cd ~/git/void-packages/
-
1). 「kshisen」パッケージのフォルダを作成:
$ cd ~/git/void-packages/srcpkgs/
$ sudo mkdir -p kshisen
-
2). 「アプリ」のビルドを指示する「template」ファイルを作成:
原案:
$ sudo featherpad ~/git/void-packages/srcpkgs/kshisen/template
# Template file for 'kshisen'
pkgname=kshisen
version=25.08.1
revision=1
build_style=cmake
hostmakedepends="qt6-tools qt6-base-devel pkg-config"
makedepends="ecm-devel qt6-core qt6-gui kf6-kcoreaddons-devel kf6-kconfig-devel kf6-kiconthemes-devel kf6-kconfigwidgets-devel kf6-kcrash-devel kf6-kdbusaddons-devel kf6-kdoctools-devel kf6-ki18n-devel kf6-kwidgetsaddons-devel kf6-kxmlgui-devel libkmahjongg-devel libkdegames-devel"
short_desc="Shisen-Sho is a solitaire-like game"
maintainer="Kubuntu Developers <kubuntu-devel@lists.ubuntu.com>"
license="GPL-2.0-or-later"
homepage="https://apps.kde.org/kshisen/"
changelog="https://invent.kde.org/games/kshisen/-/blob/master/ChangeLog"
distfiles="https://invent.kde.org/games/kshisen/-/archive/v${version}/kshisen-v${version}.tar.gz"
checksum=3dfc9498c7899cf6f35f42f7fbf0c4f9b53605e6fc95bad040d2b8f9827c359d
「distfiles=」の ${version} に「version=」の値が入ります:
-
→「項番 8-3.」にて、2つほど、依存が足りませんでした:
-
3). 追記: 最終的な「テンプレート」ファイル: ★
$ sudo featherpad ~/git/void-packages/srcpkgs/kshisen/template
# Template file for 'kshisen'
pkgname=kshisen
version=25.08.1
revision=1
build_style=cmake
hostmakedepends="qt6-tools qt6-base-devel pkg-config"
makedepends="gettext extra-cmake-modules ecm-devel qt6-core qt6-gui kf6-kcoreaddons-devel kf6-kconfig-devel kf6-kiconthemes-devel kf6-kconfigwidgets-devel kf6-kcrash-devel kf6-kdbusaddons-devel kf6-kdoctools-devel kf6-ki18n-devel kf6-kwidgetsaddons-devel kf6-kxmlgui-devel libkmahjongg-devel libkdegames-devel"
short_desc="Shisen-Sho is a solitaire-like game"
maintainer="Kubuntu Developers <kubuntu-devel@lists.ubuntu.com>"
license="GPL-2.0-or-later"
homepage="https://apps.kde.org/kshisen/"
changelog="https://invent.kde.org/games/kshisen/-/blob/master/ChangeLog"
distfiles="https://invent.kde.org/games/kshisen/-/archive/v${version}/kshisen-v${version}.tar.gz"
checksum=3dfc9498c7899cf6f35f42f7fbf0c4f9b53605e6fc95bad040d2b8f9827c359d
「distfiles=」の ${version} に「version=」の値が入ります:
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----- ----- ----- --
22-3. 「kshisen」アプリの「パッケージ化」を繰り返して、「テンプレート」を修正:
-
「テンプレート」ファイルの原本ができたので、「パッケージ化」を繰り返しながらエラーを解消、
最終的な「テンプレート」ファイルを作成しました:
-
1). 「kshisen」アプリを「パッケージ化」:
$ cd ~/git/void-packages/
$ ./xbps-src pkg kshisen
=> xbps-src: updating repositories for host (x86_64)...
[*] Updating repository `https://repo-default.voidlinux.org/current/bootstrap/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/nonfree/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/debug/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/bootstrap/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/nonfree/x86_64-repodata' ...
=> xbps-src: updating software in / masterdir...
=> xbps-src: cleaning up / masterdir...
=> kshisen-25.08.1_1: removing autodeps, please wait...
=> kshisen-25.08.1_1: building with [cmake] for x86_64...
[host] qt6-tools-6.8.2_1: found (https://repo-default.voidlinux.org/current)
[host] qt6-base-devel-6.8.2_5: found (https://repo-default.voidlinux.org/current)
[host] pkg-config-0.29.2_3: found (https://repo-default.voidlinux.org/current)
[host] cmake-bootstrap-4.1.0_1: found (/host/binpkgs/bootstrap)
[host] ninja-1.13.1_1: found (https://repo-default.voidlinux.org/current)
[target] ecm-devel-7.0.6_1: found (https://repo-default.voidlinux.org/current)
[target] qt6-core-6.8.2_5: found (https://repo-default.voidlinux.org/current)
[target] qt6-gui-6.8.2_5: found (https://repo-default.voidlinux.org/current)
[target] kf6-kcoreaddons-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] kf6-kconfig-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] kf6-kiconthemes-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] kf6-kconfigwidgets-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] kf6-kcrash-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] kf6-kdbusaddons-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] kf6-kdoctools-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] kf6-ki18n-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] kf6-kwidgetsaddons-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] kf6-kxmlgui-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] libkmahjongg-devel-25.04.3_1: found (https://repo-default.voidlinux.org/current)
[target] libkdegames-devel-24.08.0_1: found (https://repo-default.voidlinux.org/current)
=> kshisen-25.08.1_1: installing host dependencies: qt6-tools-6.8.2_1 qt6-base-devel-6.8.2_5 pkg-config-0.29.2_3 cmake-bootstrap-4.1.0_1 ninja-1.13.1_1 ...
=> kshisen-25.08.1_1: installing target dependencies: ecm-devel-7.0.6_1 qt6-core-6.8.2_5 qt6-gui-6.8.2_5 kf6-kcoreaddons-devel-6.18.0_1 kf6-kconfig-devel-6.18.0_1 kf6-kiconthemes-devel-6.18.0_1 kf6-kconfigwidgets-devel-6.18.0_1 kf6-kcrash-devel-6.18.0_1 kf6-kdbusaddons-devel-6.18.0_1 kf6-kdoctools-devel-6.18.0_1 kf6-ki18n-devel-6.18.0_1 kf6-kwidgetsaddons-devel-6.18.0_1 kf6-kxmlgui-devel-6.18.0_1 libkmahjongg-devel-25.04.3_1 libkdegames-devel-24.08.0_1 ...
→時間がかかりました:
ERROR: Package `qt6-core-6.8.2_5' already installed.
ERROR: Package `qt6-gui-6.8.2_5' already installed.
=> kshisen-25.08.1_1: running do-fetch hook: 00-distfiles ...
=> kshisen-25.08.1_1: fetching distfile 'kshisen-v25.08.1.tar.gz' from 'https://invent.kde.org/games/kshisen/-/archive/v25.08.1/kshisen-v25.08.1.tar.gz'...
kshisen-v25.08.1.tar.gz: [0B 0%] 388KB/s ETA: unknown
kshisen-v25.08.1.tar.gz: [0B 0%] 96KB/s ETA: unknown
kshisen-v25.08.1.tar.gz: [0B 0%] 424KB/s ETA: unknown
kshisen-v25.08.1.tar.gz: 1100KB [avg rate: 710KB/s]
=> kshisen-25.08.1_1: verifying checksum for distfile 'kshisen-v25.08.1.tar.gz'... OK.
=> kshisen-25.08.1_1: running do-extract hook: 00-distfiles ...
=> kshisen-25.08.1_1: extracting distfile(s), please wait...
=> kshisen-25.08.1_1: running do-patch hook: 00-patches ...
=> kshisen-25.08.1_1: running pre-configure hook: 00-gnu-configure-asneeded ...
=> kshisen-25.08.1_1: running pre-configure hook: 01-override-config ...
=> kshisen-25.08.1_1: running pre-configure hook: 02-script-wrapper ...
=> kshisen-25.08.1_1: running do_configure ...
-- The C compiler identification is GNU 14.2.1
-- The CXX compiler identification is GNU 14.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:21 (find_package):
Could not find a package configuration file provided by "ECM" (requested
version 6.0.0) with any of the following names:
ECMConfig.cmake
ecm-config.cmake
Add the installation prefix of "ECM" to CMAKE_PREFIX_PATH or set "ECM_DIR"
to a directory containing one of the above files. If "ECM" provides a
separate development package or SDK, be sure it has been installed.
-- Configuring incomplete, errors occurred!
赤色で警告表示:
=> ERROR: kshisen-25.08.1_1: do_configure: 'CFLAGS="-DNDEBUG ${CFLAGS/ -pipe / }" CXXFLAGS="-DNDEBUG ${CXXFLAGS/ -pipe / }" cmake ${cmake_args} ${configure_args} -DCMAKE_POLICY_VERSION_MINIMUM=3.5 ${LIBS:+-DCMAKE_C_STANDARD_LIBRARIES="$LIBS"} ${LIBS:+-DCMAKE_CXX_STANDARD_LIBRARIES="$LIBS"} ${wrksrc}/${build_wrksrc}' exited with 1
=> ERROR: in do_configure() at common/build-style/cmake.sh:78
[user@user-pc void-packages]$
-
2). エラーを抜粋1:
CMake Error at CMakeLists.txt:21 (find_package):
Could not find a package configuration file provided by "ECM" (requested
version 6.0.0) with any of the following names:
和訳:
「ECM」(要求バージョン 6.0.0) によって提供された、次のいずれかの名前のパッケージ構成ファイルが見つかりませんでした:
-
3). 「Could not find a package configuration file provided by "ECM" 」で検索:
↓ ヒット:
Could not find a configuration file for package "ECM" that is compatible with requested version 1.5.0
-
$ xbps-query -Rs extra-cmake-modules
:
[-] extra-cmake-modules-6.18.0_1 Extra modules and scripts for CMake
→OK
-
5). 「テンプレート」ファイルを修正:
$ sudo featherpad ~/git/void-packages/srcpkgs/kshisen/template
-
makedepends="ecm-devel qt6-core qt6-gui kf6-kcoreaddons-devel kf6-kconfig-devel kf6-kiconthemes-devel kf6-kconfigwidgets-devel kf6-kcrash-devel kf6-kdbusaddons-devel kf6-kdoctools-devel kf6-ki18n-devel kf6-kwidgetsaddons-devel kf6-kxmlgui-devel libkmahjongg-devel libkdegames-devel"
↓ 置換:
makedepends="extra-cmake-modules ecm-devel qt6-core qt6-gui kf6-kcoreaddons-devel kf6-kconfig-devel kf6-kiconthemes-devel kf6-kconfigwidgets-devel kf6-kcrash-devel kf6-kdbusaddons-devel kf6-kdoctools-devel kf6-ki18n-devel kf6-kwidgetsaddons-devel kf6-kxmlgui-devel libkmahjongg-devel libkdegames-devel"
→Ctrl+S で保存:
-
6). 確認:
$ cat ~/git/void-packages/srcpkgs/kshisen/template
# Template file for 'kshisen'
pkgname=kshisen
version=25.08.1
revision=1
build_style=cmake
hostmakedepends="qt6-tools qt6-base-devel pkg-config"
makedepends="extra-cmake-modules ecm-devel qt6-core qt6-gui kf6-kcoreaddons-devel kf6-kconfig-devel kf6-kiconthemes-devel kf6-kconfigwidgets-devel kf6-kcrash-devel kf6-kdbusaddons-devel kf6-kdoctools-devel kf6-ki18n-devel kf6-kwidgetsaddons-devel kf6-kxmlgui-devel libkmahjongg-devel libkdegames-devel"
short_desc="Shisen-Sho is a solitaire-like game"
maintainer="Kubuntu Developers <kubuntu-devel@lists.ubuntu.com>"
license="GPL-2.0-or-later"
homepage="https://apps.kde.org/kshisen/"
changelog="https://invent.kde.org/games/kshisen/-/blob/master/ChangeLog"
distfiles="https://invent.kde.org/games/kshisen/-/archive/v${version}/kshisen-v${version}.tar.gz"
checksum=3dfc9498c7899cf6f35f42f7fbf0c4f9b53605e6fc95bad040d2b8f9827c359d
-
7). 「kshisen」ゲームの「パッケージ化」をやり直し:
$ cd ~/git/void-packages/
$ ./xbps-src pkg kshisen
=> xbps-src: updating repositories for host (x86_64)...
[*] Updating repository `https://repo-default.voidlinux.org/current/bootstrap/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/nonfree/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/debug/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/bootstrap/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/nonfree/x86_64-repodata' ...
=> xbps-src: updating software in / masterdir...
=> xbps-src: cleaning up / masterdir...
=> kshisen-25.08.1_1: removing autodeps, please wait...
=> kshisen-25.08.1_1: building with [cmake] for x86_64...
: 省略
-- Found KF6ConfigWidgets: /usr/lib64/cmake/KF6ConfigWidgets/KF6ConfigWidgetsConfig.cmake (found version "6.18.0")
-- Found KF6Crash: /usr/lib64/cmake/KF6Crash/KF6CrashConfig.cmake (found version "6.18.0")
-- Found KF6DBusAddons: /usr/lib64/cmake/KF6DBusAddons/KF6DBusAddonsConfig.cmake (found version "6.18.0")
-- Found KF6DocTools: /usr/lib64/cmake/KF6DocTools/KF6DocToolsConfig.cmake (found version "6.18.0")
CMake Error at /usr/libexec/xbps-src/share/cmake-4.1/Modules/FindPackageHandleStandardArgs.cmake:227 (message):
Could NOT find Gettext (missing: GETTEXT_MSGMERGE_EXECUTABLE
GETTEXT_MSGFMT_EXECUTABLE)
Call Stack (most recent call first):
/usr/libexec/xbps-src/share/cmake-4.1/Modules/FindPackageHandleStandardArgs.cmake:591 (_FPHSA_FAILURE_MESSAGE)
/usr/libexec/xbps-src/share/cmake-4.1/Modules/FindGettext.cmake:409 (find_package_handle_standard_args)
/usr/lib64/cmake/KF6I18n/KF6I18nMacros.cmake:5 (find_package)
/usr/lib64/cmake/KF6I18n/KF6I18nConfig.cmake:48 (include)
/usr/share/ECM/find-modules/FindKF6.cmake:53 (find_package)
CMakeLists.txt:45 (find_package)
-- Configuring incomplete, errors occurred!
赤色の警告が表示:
=> ERROR: kshisen-25.08.1_1: do_configure: 'CFLAGS="-DNDEBUG ${CFLAGS/ -pipe / }" CXXFLAGS="-DNDEBUG ${CXXFLAGS/ -pipe / }" cmake ${cmake_args} ${configure_args} -DCMAKE_POLICY_VERSION_MINIMUM=3.5 ${LIBS:+-DCMAKE_C_STANDARD_LIBRARIES="$LIBS"} ${LIBS:+-DCMAKE_CXX_STANDARD_LIBRARIES="$LIBS"} ${wrksrc}/${build_wrksrc}' exited with 1
=> ERROR: in do_configure() at common/build-style/cmake.sh:78
[user@user-pc void-packages]$
-
8). エラーを抜粋2:
CMake Error at /usr/libexec/xbps-src/share/cmake-4.1/Modules/FindPackageHandleStandardArgs.cmake:227 (message):
Could NOT find Gettext (missing: GETTEXT_MSGMERGE_EXECUTABLE
GETTEXT_MSGFMT_EXECUTABLE)
→「gettext」のインストールが必要:
-
9). 「gettext」がインストールできるか確認:
$ xbps-query -Rs gettext | grep '] gettext'
:
[-] gettext-0.22.5_1 Internationalized Message Handling Library and tools
[-] gettext-devel-0.22.5_1 Internationalized Message Handling Library and tools - development files
[-] gettext-devel-examples-0.22.5_1 Internationalized Message Handling Library and tools - examples for development
[-] gettext-devel-tools-0.22.5_1 Internationalized Message Handling Library and tools - development tools
[-] gettext-stub-1_2 Gettext little stub
[-] gettext-stub-devel-1_2 Gettext little stub - development files
[-] gettext-tiny-0.3.2_1 Tiny Internationalized Message Handling Library and tools
[-] gettext-tiny-devel-0.3.2_1 Tiny Internationalized Message Handling Library and tools - development files
[-] gettext-32bit-0.22.5_1 Internationalized Message Handling Library and tools (32bit)
[-] gettext-devel-32bit-0.22.5_1 Internationalized Message Handling Library and tools - development files (32bit)
[-] gettext-stub-32bit-1_2 Gettext little stub (32bit)
[-] gettext-stub-devel-32bit-1_2 Gettext little stub - development files (32bit)
[-] gettext-tiny-devel-32bit-0.3.2_1 Tiny Internationalized Message Handling Library and tools - development files (32bit)
→いっぱい表示されたけど、必要なのは最初のひとつ:
-
10). 「テンプレート」ファイルを修正:
$ sudo featherpad ~/git/void-packages/srcpkgs/kshisen/template
-
makedepends="extra-cmake-modules ecm-devel qt6-core qt6-gui kf6-kcoreaddons-devel kf6-kconfig-devel kf6-kiconthemes-devel kf6-kconfigwidgets-devel kf6-kcrash-devel kf6-kdbusaddons-devel kf6-kdoctools-devel kf6-ki18n-devel kf6-kwidgetsaddons-devel kf6-kxmlgui-devel libkmahjongg-devel libkdegames-devel"
↓ 置換:
makedepends="gettext extra-cmake-modules ecm-devel qt6-core qt6-gui kf6-kcoreaddons-devel kf6-kconfig-devel kf6-kiconthemes-devel kf6-kconfigwidgets-devel kf6-kcrash-devel kf6-kdbusaddons-devel kf6-kdoctools-devel kf6-ki18n-devel kf6-kwidgetsaddons-devel kf6-kxmlgui-devel libkmahjongg-devel libkdegames-devel"
-
11). 最終的な「テンプレート」ファイル: ★
$ cat ~/git/void-packages/srcpkgs/kshisen/template
# Template file for 'kshisen'
pkgname=kshisen
version=25.08.1
revision=1
build_style=cmake
hostmakedepends="qt6-tools qt6-base-devel pkg-config"
makedepends="gettext extra-cmake-modules ecm-devel qt6-core qt6-gui kf6-kcoreaddons-devel kf6-kconfig-devel kf6-kiconthemes-devel kf6-kconfigwidgets-devel kf6-kcrash-devel kf6-kdbusaddons-devel kf6-kdoctools-devel kf6-ki18n-devel kf6-kwidgetsaddons-devel kf6-kxmlgui-devel libkmahjongg-devel libkdegames-devel"
short_desc="Shisen-Sho is a solitaire-like game"
maintainer="Kubuntu Developers <kubuntu-devel@lists.ubuntu.com>"
license="GPL-2.0-or-later"
homepage="https://apps.kde.org/kshisen/"
changelog="https://invent.kde.org/games/kshisen/-/blob/master/ChangeLog"
distfiles="https://invent.kde.org/games/kshisen/-/archive/v${version}/kshisen-v${version}.tar.gz"
checksum=3dfc9498c7899cf6f35f42f7fbf0c4f9b53605e6fc95bad040d2b8f9827c359d
-
12). 「kshisen」ゲームの「パッケージ化」をやり直し:
$ cd ~/git/void-packages/
$ ./xbps-src pkg kshisen
=> xbps-src: updating repositories for host (x86_64)...
[*] Updating repository `https://repo-default.voidlinux.org/current/bootstrap/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/x86_64-repodata' ...
x86_64-repodata: 2024KB [avg rate: 867KB/s]
[*] Updating repository `https://repo-default.voidlinux.org/current/nonfree/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/debug/x86_64-repodata' ...
x86_64-repodata: 900KB [avg rate: 770KB/s]
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/bootstrap/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/nonfree/x86_64-repodata' ...
=> xbps-src: updating software in / masterdir...
=> xbps-src: cleaning up / masterdir...
=> kshisen-25.08.1_1: removing autodeps, please wait...
=> kshisen-25.08.1_1: building with [cmake] for x86_64...
[host] qt6-tools-6.8.2_1: found (https://repo-default.voidlinux.org/current)
[host] qt6-base-devel-6.8.2_5: found (https://repo-default.voidlinux.org/current)
[host] pkg-config-0.29.2_3: found (https://repo-default.voidlinux.org/current)
[host] cmake-bootstrap-4.1.0_1: found (/host/binpkgs/bootstrap)
[host] ninja-1.13.1_1: found (https://repo-default.voidlinux.org/current)
[target] gettext-0.22.5_1: found (https://repo-default.voidlinux.org/current)
[target] extra-cmake-modules-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] ecm-devel-7.0.6_1: found (https://repo-default.voidlinux.org/current)
[target] qt6-core-6.8.2_5: found (https://repo-default.voidlinux.org/current)
[target] qt6-gui-6.8.2_5: found (https://repo-default.voidlinux.org/current)
[target] kf6-kcoreaddons-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] kf6-kconfig-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] kf6-kiconthemes-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] kf6-kconfigwidgets-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] kf6-kcrash-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] kf6-kdbusaddons-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] kf6-kdoctools-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] kf6-ki18n-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] kf6-kwidgetsaddons-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] kf6-kxmlgui-devel-6.18.0_1: found (https://repo-default.voidlinux.org/current)
[target] libkmahjongg-devel-25.04.3_1: found (https://repo-default.voidlinux.org/current)
[target] libkdegames-devel-24.08.0_1: found (https://repo-default.voidlinux.org/current)
=> kshisen-25.08.1_1: installing host dependencies: qt6-tools-6.8.2_1 qt6-base-devel-6.8.2_5 pkg-config-0.29.2_3 cmake-bootstrap-4.1.0_1 ninja-1.13.1_1 ...
=> kshisen-25.08.1_1: installing target dependencies: gettext-0.22.5_1 extra-cmake-modules-6.18.0_1 ecm-devel-7.0.6_1 qt6-core-6.8.2_5 qt6-gui-6.8.2_5 kf6-kcoreaddons-devel-6.18.0_1 kf6-kconfig-devel-6.18.0_1 kf6-kiconthemes-devel-6.18.0_1 kf6-kconfigwidgets-devel-6.18.0_1 kf6-kcrash-devel-6.18.0_1 kf6-kdbusaddons-devel-6.18.0_1 kf6-kdoctools-devel-6.18.0_1 kf6-ki18n-devel-6.18.0_1 kf6-kwidgetsaddons-devel-6.18.0_1 kf6-kxmlgui-devel-6.18.0_1 libkmahjongg-devel-25.04.3_1 libkdegames-devel-24.08.0_1 ...
ERROR: Package `qt6-core-6.8.2_5' already installed.
ERROR: Package `qt6-gui-6.8.2_5' already installed.
=> kshisen-25.08.1_1: running pre-configure hook: 00-gnu-configure-asneeded ...
=> kshisen-25.08.1_1: running pre-configure hook: 01-override-config ...
=> kshisen-25.08.1_1: running pre-configure hook: 02-script-wrapper ...
=> kshisen-25.08.1_1: running do_configure ...
-- Could not set up the appstream test. appstreamcli is missing.
-- Found Gettext: /usr/bin/msgmerge (found version "0.22.5")
-- Found KF6I18n: /usr/lib64/cmake/KF6I18n/KF6I18nConfig.cmake (found version "6.18.0")
-- Found KF6WidgetsAddons: /usr/lib64/cmake/KF6WidgetsAddons/KF6WidgetsAddonsConfig.cmake (found version "6.18.0")
-- Found KF6XmlGui: /usr/lib64/cmake/KF6XmlGui/KF6XmlGuiConfig.cmake (found version "6.18.0")
-- Found KF6: success (found suitable version "6.18.0", minimum required is "6.0.0") found components: CoreAddons Config IconThemes ConfigWidgets Crash DBusAddons DocTools I18n WidgetsAddons XmlGui
-- not found icons_at_22px /builddir/kshisen-25.08.1/icons/22-apps-kshisen.png
-- The following OPTIONAL packages have been found:
* OpenGL
* XKB (required version >= 0.5.0), XKB API common to servers and clients., <http://xkbcommon.org>
* WrapVulkanHeaders
* Qt6DBusTools (required version >= 6.8.2)
* Qt6CoreTools (required version >= 6.8.2)
* Qt6GuiTools (required version >= 6.8.2)
* Qt6WidgetsTools (required version >= 6.8.2)
* Qt6QmlTools (required version >= 6.8.2)
-- The following REQUIRED packages have been found:
* ECM (required version >= 6.0.0)
* Qt6 (required version >= 6.5.0)
* KF6CoreAddons (required version >= 6.0.0)
* KF6IconThemes (required version >= 6.0.0)
* KF6Crash (required version >= 6.0.0)
* KF6DBusAddons (required version >= 6.0.0)
* KF6DocTools (required version >= 6.0.0)
* Gettext
* KF6I18n (required version >= 6.0.0)
* KF6XmlGui (required version >= 6.0.0)
* KF6 (required version >= 6.0.0)
* Qt6Gui (required version >= 6.5.0)
* Qt6Core (required version >= 6.7.0)
* KMahjongglib6 (required version >= 6.0.0)
* KDEGames6 (required version >= 6.0.0)
* Qt6Test (required version >= 6.5.0)
-- Configuring done (0.3s)
-- Generating done (0.0s)
-- Build files have been written to: /builddir/kshisen-25.08.1/build
=> kshisen-25.08.1_1: running pre-build hook: 02-script-wrapper ...
=> kshisen-25.08.1_1: running do_build ...
[1/38] Generating ts...
[2/38] Generating mo...
[3/38] Generating po/de/docs/kshisen/index.cache.bz2
[4/38] Generating po/ca/docs/kshisen/index.cache.bz2
[5/38] Generating po/es/docs/kshisen/index.cache.bz2
[6/38] Generating po/cs/docs/kshisen/index.cache.bz2
[7/38] Generating po/et/docs/kshisen/index.cache.bz2
[8/38] Generating po/it/docs/kshisen/index.cache.bz2
[9/38] Generating po/fr/docs/kshisen/index.cache.bz2
[10/38] Automatic MOC for target movetest
[11/38] Generating po/nl/docs/kshisen/index.cache.bz2
[12/38] Generating po/ja/docs/kshisen/index.cache.bz2
I/O warning : failed to load "/usr/share/kf6/kdoctools/customization/xsl/ja.xml": No such file or directory
No "ja" localization of "footer-doc-comment" exists; using "en".
No "ja" localization of "footer-doc-feedback" exists; using "en".
: 省略
No "ja" localization of "footer-doc-teamname" exists; using "en".
[13/38] Building CXX object src/tests/CMakeFiles/movetest.dir/movetest_autogen/mocs_compilation.cpp.o
[14/38] Automatic MOC for target kshisen
[15/38] Generating ui_settings.h
[16/38] Generating prefs.h, prefs.cpp
[17/38] Automatic RCC for kshisen.qrc
[18/38] Building CXX object src/CMakeFiles/kshisen.dir/kshisen_autogen/mocs_compilation.cpp.o
[19/38] Generating po/pt/docs/kshisen/index.cache.bz2
[20/38] Generating po/ru/docs/kshisen/index.cache.bz2
[21/38] Generating po/pt_BR/docs/kshisen/index.cache.bz2
I/O warning : failed to load "/usr/share/kf6/kdoctools/customization/xsl/pt-BR.xml": No such file or directory
No "pt_br" localization of "footer-doc-comment" exists; using "en".
No "pt_br" localization of "footer-doc-feedback" exists; using "en".
: 省略
No "pt_br" localization of "footer-doc-feedback" exists; using "en".
No "pt_br" localization of "footer-doc-teamname" exists; using "en".
[22/38] Generating po/pl/docs/kshisen/index.cache.bz2
[23/38] Generating po/sl/docs/kshisen/index.cache.bz2
[24/38] Building CXX object src/tests/CMakeFiles/movetest.dir/__/move.cpp.o
[25/38] Building CXX object src/CMakeFiles/kshisen.dir/move.cpp.o
[26/38] Building CXX object src/CMakeFiles/kshisen.dir/kshisen_autogen/EWIEGA46WW/qrc_kshisen.cpp.o
[27/38] Generating po/sv/docs/kshisen/index.cache.bz2
[28/38] Building CXX object src/CMakeFiles/kshisen.dir/debug.cpp.o
[29/38] Generating po/uk/docs/kshisen/index.cache.bz2
[30/38] Generating index.cache.bz2
[31/38] Building CXX object src/CMakeFiles/kshisen.dir/possiblemove.cpp.o
/builddir/kshisen-25.08.1/src/possiblemove.cpp:35:28: warning: ISO C++11 requires at least one argument for the "..." in a variadic macro
35 | qCDebug(KSHISEN_General) << "isInPath:" << tilePos.x() << "," << tilePos.y();
| ^
/builddir/kshisen-25.08.1/src/possiblemove.cpp:49:36: warning: ISO C++11 requires at least one argument for the "..." in a variadic macro
: 省略
/builddir/kshisen-25.08.1/src/board.cpp:1791:39: warning: ISO C++11 requires at least one argument for the "..." in a variadic macro
1791 | qCCritical(KSHISEN_General) << errMessage;
| ^
[38/38] Linking CXX executable bin/kshisen
=> kshisen-25.08.1_1: skipping check (XBPS_CHECK_PKGS is disabled) ...
=> kshisen-25.08.1_1: running pre-install hook: 00-libdir ...
=> kshisen-25.08.1_1: running pre-install hook: 02-script-wrapper ...
=> kshisen-25.08.1_1: running pre-install hook: 98-fixup-gir-path ...
=> kshisen-25.08.1_1: running do_install ...
[1/3] Generating mo...
[2/3] Generating ts...
[2/3] Install the project...
-- Install configuration: "None"
-- Installing: /destdir/kshisen-25.08.1/usr/bin/kshisen
-- Installing: /destdir/kshisen-25.08.1/usr/share/config.kcfg/kshisen.kcfg
-- Installing: /destdir/kshisen-25.08.1/usr/share/qlogging-categories6/kshisen.categories
-- Installing: /destdir/kshisen-25.08.1/usr/share/icons/hicolor/128x128/apps/kshisen.png
-- Installing: /destdir/kshisen-25.08.1/usr/share/icons/hicolor/64x64/apps/kshisen.png
-- Installing: /destdir/kshisen-25.08.1/usr/share/icons/hicolor/48x48/apps/kshisen.png
-- Installing: /destdir/kshisen-25.08.1/usr/share/icons/hicolor/32x32/apps/kshisen.png
-- Installing: /destdir/kshisen-25.08.1/usr/share/icons/hicolor/22x22/apps/kshisen.png
-- Installing: /destdir/kshisen-25.08.1/usr/share/icons/hicolor/16x16/apps/kshisen.png
-- Installing: /destdir/kshisen-25.08.1/usr/share/sounds/kshisen/tile-fall-tile.ogg
-- Installing: /destdir/kshisen-25.08.1/usr/share/sounds/kshisen/tile-touch.ogg
-- Installing: /destdir/kshisen-25.08.1/usr/share/doc/HTML/en/kshisen/index.cache.bz2
-- Installing: /destdir/kshisen-25.08.1/usr/share/doc/HTML/en/kshisen/index.docbook
-- Installing: /destdir/kshisen-25.08.1/usr/share/doc/HTML/en/kshisen/gameboard.png
-- Installing: /destdir/kshisen-25.08.1/usr/share/doc/HTML/en/kshisen/kshisen-configuration.png
-- Installing: /destdir/kshisen-25.08.1/usr/share/applications/org.kde.kshisen.desktop
-- Installing: /destdir/kshisen-25.08.1/usr/share/metainfo/org.kde.kshisen.appdata.xml
-- Installing: /destdir/kshisen-25.08.1/usr/share/locale
-- Installing: /destdir/kshisen-25.08.1/usr/share/locale/ga
-- Installing: /destdir/kshisen-25.08.1/usr/share/locale/ga/LC_MESSAGES
-- Installing: /destdir/kshisen-25.08.1/usr/share/locale/ga/LC_MESSAGES/kshisen.mo
: 省略
-- Installing: /destdir/kshisen-25.08.1/usr/share/locale/ja
-- Installing: /destdir/kshisen-25.08.1/usr/share/locale/ja/LC_MESSAGES
-- Installing: /destdir/kshisen-25.08.1/usr/share/locale/ja/LC_MESSAGES/kshisen.mo ★
-- Installing: /destdir/kshisen-25.08.1/usr/share/locale/br
-- Installing: /destdir/kshisen-25.08.1/usr/share/locale/br/LC_MESSAGES
-- Installing: /destdir/kshisen-25.08.1/usr/share/locale/br/LC_MESSAGES/kshisen.mo
: 省略
-- Installing: /destdir/kshisen-25.08.1/usr/share/locale/ar
-- Installing: /destdir/kshisen-25.08.1/usr/share/locale/ar/LC_MESSAGES
-- Installing: /destdir/kshisen-25.08.1/usr/share/locale/ar/LC_MESSAGES/kshisen.mo
-- Installing: /destdir/kshisen-25.08.1/usr/share/doc/HTML/ca/kshisen/index.cache.bz2
-- Installing: /destdir/kshisen-25.08.1/usr/share/doc/HTML/ca/kshisen/index.docbook
-- Installing: /destdir/kshisen-25.08.1/usr/share/doc/HTML/ca/kshisen/gameboard.png
-- Installing: /destdir/kshisen-25.08.1/usr/share/doc/HTML/ca/kshisen/kshisen-configuration.png
: 省略
-- Installing: /destdir/kshisen-25.08.1/usr/share/doc/HTML/ja/kshisen/index.cache.bz2 ★
-- Installing: /destdir/kshisen-25.08.1/usr/share/doc/HTML/ja/kshisen/index.docbook
-- Installing: /destdir/kshisen-25.08.1/usr/share/doc/HTML/ja/kshisen/kshisen-configuration.png
: 省略
-- Installing: /destdir/kshisen-25.08.1/usr/share/doc/HTML/uk/kshisen/index.cache.bz2
-- Installing: /destdir/kshisen-25.08.1/usr/share/doc/HTML/uk/kshisen/index.docbook
-- Installing: /destdir/kshisen-25.08.1/usr/share/doc/HTML/uk/kshisen/gameboard.png
-- Installing: /destdir/kshisen-25.08.1/usr/share/doc/HTML/uk/kshisen/kshisen-configuration.png
=> kshisen-25.08.1_1: running post-install hook: 00-compress-info-files ...
=> kshisen-25.08.1_1: running post-install hook: 00-fixup-gir-path ...
=> kshisen-25.08.1_1: running post-install hook: 00-libdir ...
=> kshisen-25.08.1_1: running post-install hook: 00-uncompress-manpages ...
=> kshisen-25.08.1_1: running post-install hook: 01-remove-misc ...
=> kshisen-25.08.1_1: running post-install hook: 02-remove-libtool-archives ...
=> kshisen-25.08.1_1: running post-install hook: 02-remove-perl-files ...
=> kshisen-25.08.1_1: running post-install hook: 02-remove-python-bytecode-files ...
=> kshisen-25.08.1_1: running post-install hook: 03-remove-empty-dirs ...
=> WARNING: kshisen-25.08.1_1: removed empty dir: /usr/lib
=> kshisen-25.08.1_1: running post-install hook: 04-create-xbps-metadata-scripts ...
Added trigger 'gtk-icon-cache' for the 'INSTALL' script.
Added trigger 'update-desktopdb' for the 'INSTALL' script.
Added trigger 'gtk-icon-cache' for the 'REMOVE' script.
Added trigger 'update-desktopdb' for the 'REMOVE' script.
=> kshisen-25.08.1_1: running post-install hook: 05-generate-gitrevs ...
=> kshisen-25.08.1_1: running post-install hook: 06-strip-and-debug-pkgs ...
Stripped position-independent executable: /usr/bin/kshisen
=> kshisen-25.08.1_1: running post-install hook: 10-pkglint-devel-paths ...
=> kshisen-25.08.1_1: running post-install hook: 11-pkglint-elf-in-usrshare ...
=> kshisen-25.08.1_1: running post-install hook: 12-rename-python3-c-bindings ...
=> kshisen-25.08.1_1: running post-install hook: 13-pkg-config-clean-xbps-cross-base-ref ...
=> kshisen-25.08.1_1: running post-install hook: 14-fix-permissions ...
mode of '/destdir/kshisen-25.08.1/usr/share/applications/org.kde.kshisen.desktop' changed from 0755 (rwxr-xr-x) to 0644 (rw-r--r--)
=> kshisen-25.08.1_1: running post-install hook: 15-qt-private-api ...
=> kshisen-25.08.1_1: running post-install hook: 80-prepare-32bit ...
=> kshisen-25.08.1_1: running post-install hook: 98-shlib-provides ...
=> kshisen-25.08.1_1: running post-install hook: 99-pkglint-warn-cross-cruft ...
=> kshisen-25.08.1_1: running pre-pkg hook: 03-rewrite-python-shebang ...
=> kshisen-25.08.1_1: running pre-pkg hook: 04-generate-provides ...
cmd:kshisen-25.08.1_1
=> kshisen-25.08.1_1: running pre-pkg hook: 04-generate-runtime-deps ...
SONAME: libKMahjongg6.so.6 <-> libkmahjongg>=24.08.2_1
SONAME: libKDEGames6.so.6 <-> libkdegames>=24.02.0_1
SONAME: libKF6Crash.so.6 <-> kf6-kcrash>=6.0.0_1
SONAME: libKF6DBusAddons.so.6 <-> kf6-kdbusaddons>=6.0.0_1
SONAME: libKF6XmlGui.so.6 <-> kf6-kxmlgui>=6.0.0_1
SONAME: libKF6IconThemes.so.6 <-> kf6-kiconthemes>=6.0.0_1
SONAME: libKF6ConfigWidgets.so.6 <-> kf6-kconfigwidgets>=6.0.0_1
SONAME: libKF6I18n.so.6 <-> kf6-ki18n>=6.0.0_1
SONAME: libKF6WidgetsAddons.so.6 <-> kf6-kwidgetsaddons>=6.0.0_1
SONAME: libQt6Widgets.so.6 <-> qt6-widgets>=6.8.1_1
SONAME: libKF6ConfigGui.so.6 <-> kf6-kconfig>=6.0.0_1
SONAME: libKF6ConfigCore.so.6 <-> kf6-kconfig>=6.0.0_1
SONAME: libKF6CoreAddons.so.6 <-> kf6-kcoreaddons>=6.0.0_1
SONAME: libQt6Gui.so.6 <-> qt6-gui>=6.8.1_1
SONAME: libQt6Core.so.6 <-> qt6-core>=6.8.1_1
SONAME: libstdc++.so.6 <-> libstdc++>=4.4.0_1
SONAME: libm.so.6 <-> glibc>=2.41_1
SONAME: libc.so.6 <-> glibc>=2.41_1
=> kshisen-25.08.1_1: running pre-pkg hook: 05-generate-32bit-runtime-deps ...
=> kshisen-25.08.1_1: running pre-pkg hook: 06-verify-python-deps ...
=> kshisen-25.08.1_1: running pre-pkg hook: 90-set-timestamps ...
=> kshisen-25.08.1_1: setting mtimes to Fri Oct 10 11:24:06 AM UTC 2025
=> kshisen-25.08.1_1: running pre-pkg hook: 99-pkglint-subpkgs ...
=> kshisen-25.08.1_1: running pre-pkg hook: 99-pkglint ...
=> kshisen-25.08.1_1: running pre-pkg hook: 999-collected-rdeps ...
libkmahjongg>=24.08.2_1 libkdegames>=24.02.0_1 kf6-kcrash>=6.0.0_1 kf6-kdbusaddons>=6.0.0_1 kf6-kxmlgui>=6.0.0_1 kf6-kiconthemes>=6.0.0_1 kf6-kconfigwidgets>=6.0.0_1 kf6-ki18n>=6.0.0_1 kf6-kwidgetsaddons>=6.0.0_1 qt6-widgets>=6.8.1_1 kf6-kconfig>=6.0.0_1 kf6-kcoreaddons>=6.0.0_1 qt6-gui>=6.8.1_1 qt6-core>=6.8.1_1 libstdc++>=4.4.0_1 glibc>=2.41_1
=> kshisen-25.08.1_1: running do-pkg hook: 00-gen-pkg ...
=> Creating kshisen-25.08.1_1.x86_64.xbps for repository /host/binpkgs ...
=> kshisen-25.08.1_1: running post-pkg hook: 00-register-pkg ...
=> Registering new packages to /host/binpkgs
index: added `kshisen-25.08.1_1' (x86_64).
index: 2 packages registered.
=> kshisen-25.08.1_1: removing autodeps, please wait...
=> kshisen-25.08.1_1: cleaning build directory...
=> kshisen: removing files from destdir...
[user@user-pc void-packages]$
→「パッケージ化」が完了しました:
-
13).重複するので、 flatpak でインストールされている「kshisen」ゲームを削除:
-
(1). 「Application ID」を確認:
$ flatpak search kshisen
:
Name Description Application ID Version Branch Remotes
KShisen Shisen-Sho Mahjongg-like Tile Game org.kde.kshisen 1.11.25082 stable flathub
-
(2). 「kshisen」がインストールされているか確認:
$ flatpak list | grep org.kde.kshisen
:
KShisen org.kde.kshisen 1.11.25081 stable system
-
(3). 「kshisen」の削除:
$ flatpak uninstall org.kde.kshisen
-
(4). 削除されたことを確認:
$ flatpak list | grep org.kde.kshisen
$
-
14). パッケージ化された「kshisen」ゲームをインストール:
$ sudo xbps-install --repository hostdir/binpkgs kshisen
:
Name Action Version New version Download size
kshisen install - 25.08.1_1 -
-
15). インストールされたか確認:
$ xbps-query -Rs kshisen
$
-
下記のようにしないと表示されません:
$ xbps-query -s kshisen
:
[*] kshisen-25.08.1_1 Shisen-Sho is a solitaire-like game
-
16). 「kshisen」ゲームを起動して、動作を確認:
「アプリケーション」→「ゲーム」→「Shisen-Sho 四川省」
2 回以内の折れで、同じパイを消して行きます。パイが無くなると重力で落ちます。
→OK
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----- ----- ----- ---
22-4. 「kshisen」ゲームを、ソースを修正して「パッケージ化」:
-
アプリ起動のメニューを日本語化しました:
-
「kshisen」で気づいたところ:
アプリの起動のメニューが日本語化されていません:
-
1). ソースをダウンロード後、修正して、差分(パッチ)を作成:
一度、「パッケージ化」を行っていれば、ダウンロードした「ソース」は残っているので、作業は要りません:
-
確認:
$ cd ~/git/void-packages/
$ ls -1p hostdir/sources/kshisen-25.08.1/
:
kshisen-v25.08.1.tar.gz
→ありました:
-
もし、ダウンロードされていない場合は、下記の「項番 4).」を実行:
-
2). ソースのダウンロード:
すでにダウンロードされていたら作業は要りません:
$ cd ~/git/void-packages/
$ ./xbps-src fetch kshisen
:
=> kshisen-25.08.1_1: running do-fetch hook: 00-distfiles ...
[user@user-pc void-packages]$
-
確認:
$ ls -1p ~/git/void-packages/hostdir/sources/kshisen-25.08.1/
:
kshisen-v25.08.1.tar.gz
-
3). ソースの展開:
$ cd ~/git/void-packages/
$ ./xbps-src extract kshisen
:
=> kshisen-25.08.1_1: running do-fetch hook: 00-distfiles ...
=> kshisen-25.08.1_1: running do-extract hook: 00-distfiles ...
=> kshisen-25.08.1_1: extracting distfile(s), please wait...
[user@user-pc void-packages]$
-
確認:
$ cd ~/git/void-packages/
$ ls -1p masterdir-x86_64/builddir/
:
kshisen-25.08.1/
→ソースが展開されました:
-
4). 「デスクトップファイル」の置かれている場所:
$ ls -1p masterdir-x86_64/builddir/kshisen-25.08.1/
:
CMakeLists.txt
CMakePresets.json
CMakePresets.json.license
ChangeLog
Doxyfile
Doxyfile.includePrivate
LICENSES/
Mainpage.dox
Messages.sh
TODO
doc/
icons/
logo.png
org.kde.kshisen.appdata.xml
org.kde.kshisen.desktop ←(デスクトップファイル)
po/
snapcraft.yaml
sounds/
src/
→ソースの直下に置かれています:
-
5). 差分ファイル(パッチ)を作成するためのフォルダを作成:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/kshisen-25.08.1/
$ sudo mkdir -p {a,b}
-
(1). 確認:
$ ls -1p
:
CMakeLists.txt
CMakePresets.json
CMakePresets.json.license
ChangeLog
Doxyfile
Doxyfile.includePrivate
LICENSES/
Mainpage.dox
Messages.sh
TODO
a/ ←(注目)
b/ ←(注目)
doc/
icons/
logo.png
org.kde.kshisen.appdata.xml
org.kde.kshisen.desktop
po/
snapcraft.yaml
sounds/
src/
-
(2). 「a」フォルダにソースをコピー:
$ sudo cp org.kde.kshisen.desktop a/
-
(3). 「b」フォルダにソースをコピー:
$ sudo cp org.kde.kshisen.desktop b/
-
(4). 確認:
$ ls a/
:
org.kde.kshisen.desktop
-
$ ls b/
:
org.kde.kshisen.desktop
→今のところは、同じ内容です:
-
6). 「デスクトップファイル」の修正:
メニューの日本語化:
$ sudo featherpad ~/git/void-packages/masterdir-x86_64/builddir/kshisen-25.08.1/b/org.kde.kshisen.desktop
-
Name[ja]=Shisen-Sho
↓ 修正:
Name[ja]=Shisen-Sho 四川省
→Ctrl+S で保存:
-
ちなみに、「GenericName[ja]=四川省マージャン牌ゲーム」が日本語で登録されていますが、
メニューには現れません:
-
7). 差分(パッチ)の作成:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/kshisen-25.08.1/
$ diff -Naur a b > 01.kshisen-desktop.patch
-
8). 差分(パッチ)の先頭行を削除:
$ sudo featerpad 01.kshisen-desktop.patch
↓ 下記の先頭行を削除:
diff -Naur a/org.kde.kshisen.desktop b/org.kde.kshisen.desktop
-
9). 確認:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/kshisen-25.08.1/
$ cat 01.kshisen-desktop.patch
--- a/org.kde.kshisen.desktop 2025-10-15 19:30:58.512373693 +0900
+++ b/org.kde.kshisen.desktop 2025-10-15 19:35:15.331386199 +0900
@@ -35,7 +35,7 @@
Name[id]=Shisen-Sho
Name[is]=Shisen-Sho
Name[it]=Shisen-Sho
-Name[ja]=Shisen-Sho
+Name[ja]=Shisen-Sho 四川省
Name[ka]=Shisen-Sho
Name[kk]=Сисен-сё
Name[km]=Shisen-Sho
-
10). パッチのフォルダを作成:
$ cd ~/git/void-packages/
$ sudo mkdir -p srcpkgs/kshisen/patches/
-
11). 作成したパッチを、パッチのフォルダに移動:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/kshisen-25.08.1/
$ sudo mv 01.kshisen-desktop.patch ~/git/void-packages/srcpkgs/kshisen/patches/01.kshisen-desktop.patch
-
確認:
$ ls -1p
:
CMakeLists.txt
CMakePresets.json
CMakePresets.json.license
ChangeLog
Doxyfile
Doxyfile.includePrivate
LICENSES/
Mainpage.dox
Messages.sh
TODO
a/
b/
doc/
icons/
logo.png
org.kde.kshisen.appdata.xml
org.kde.kshisen.desktop
po/
snapcraft.yaml
sounds/
src/
-
$ ls -1p ~/git/void-packages/srcpkgs/kshisen/patches/
:
01.kshisen-desktop.patch
-
12). パッチを実行してみる:
$ cd ~/git/void-packages/
$ ./xbps-src patch kshisen
:
=> kshisen-25.08.1_1: running do-patch hook: 00-patches ...
=> kshisen-25.08.1_1: patching: 01.kshisen-desktop.patch.
[user@user-pc void-packages]$
-
13). 「デスクトップファイル」が変更されたか確認:
$ cat ~/git/void-packages/masterdir-x86_64/builddir/kshisen-25.08.1/org.kde.kshisen.desktop | grep ja
Name[ja]=Shisen-Sho 四川省
GenericName[ja]=四川省マージャン牌ゲーム
→OK
-
ちなみに、「GenericName[ja]=四川省マージャン牌ゲーム」が日本語で登録されていますが、
メニューには現れません:
-
14). 「差分ファイル」の作成に使った「フォルダ」と「ファイル」を削除:
パッケージ化完了時に、作業フォルダが削除されますが、残がいがあると失敗します:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/kshisen-25.08.1/
$ sudo rm -r a/
$ sudo rm -r b/
-
15). クリーン後、「パッケージ化」してみる:
-
クリーン:
$ cd ~/git/void-packages/
$ ./xbps-src clean kshisen
:
=> kshisen-25.08.1_1: cleaning build directory...
[user@user-pc void-packages]$
-
16). パッケージ化:
$ cd ~/git/void-packages/
$ ./xbps-src pkg kshisen
:
=> Registering new packages to /host/binpkgs
index: added `kshisen-25.08.1_1' (x86_64).
index: 3 packages registered.
=> kshisen-25.08.1_1: removing autodeps, please wait...
=> kshisen-25.08.1_1: cleaning build directory...
=> kshisen: removing files from destdir...
[user@user-pc void-packages]$
-
17). すでにインストールしている「kshisen」アプリを削除:
$ sudo xbps-remove kshisen
:
Name Action Version New version Download size
kshisen remove 25.08.1_1 - -
-
確認:
$ xbps-query -Rs kshisen
$
-
18). パッケージ化された「kshisen」アプリをインストール:
$ sudo xbps-install --repository hostdir/binpkgs kshisen
:
Name Action Version New version Download size
kshisen install - 25.08.1_1 -
-
確認:
$ xbps-query -s kshisen
:
[*] kshisen-25.08.1_1 Shisen-Sho is a solitaire-like game
-
19). 「kshisen」アプリを起動して、動作確認:
「アプリケーション」→「ゲーム」→「Shisen-Sho 四川省」
→起動メニューが日本語化されました:
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----- ----- ----- ----
30. 参考: 「xbps-src」の「ヘルプ」を表示:
-
「xbps-src」スクリプトで利用できる、すべてのターゲットとオプションを表示:
-
1). 「xbps-src」の「ヘルプ表示」:
スクリプトの実行:
$ cd ~/git/void-packages/
$ ./xbps-src --help
-
和訳:
xbps-src [オプション] <ターゲット> [引数]
(1). ターゲット: (1つだけが指定できます)
-
binary-bootstrap
ホストリポジトリから <masterdir> にブートストラップパッケージを、インストールします。
オプションの '-A <arch>' フラグが設定されている場合、このアーキテクチャから
ブートストラップパッケージとその必要な XBPS ユーティリティがインストールされます。
<masterdir> は、chroot 操作のために初期化されます。
bootstrap
ソースからブートストラップパッケージを <masterdir> にビルドして、インストールします。
オプションの '-A <arch>' フラグが設定されている場合、このアーキテクチャから
ブートストラップパッケージとその必要な XBPS ユーティリティをビルドして、インストール
します。
<masterdir> は、chroot 操作のために初期化されます。
bootstrap-update
XBPS 設定ファイルの登録リポジトリから利用可能な、最新のバージョンでブートストラップ
パッケージを更新します。
consistency-check
すべてのパッケージで一貫性チェックを、実行します
chroot
<masterdir> の chroot に、入ります。
clean-repocache
<hostdir>/repocache から時代遅れのパッケージを、削除します。
fetch <パッケージ名>
パッケージのソースファイルを、ダウンロードします。
extract <パッケージ名>
パッケージのソースファイルを、ビルドディレクトリに展開します。
デフォルトは、<masterdir>/builddir に設定されます。
patch <パッケージ名>
パッケージソースにパッチを当て、設定とビルドのために
パッケージを準備するために必要な、他の操作を実行します。
configure <パッケージ名>
パッケージを構成します(Fetch + Extract + Patch + Configure)
build <パッケージ名>
パッケージのソースをビルドします(Fetch + Extract + Patch + Configure + Build)
check <パッケージ名>
パッケージのソースをビルドした後に、パッケージのチェックを実行します。
install <パッケージ名>
ターゲットのパッケージを <destdir> にインストールしますが、
検査目的なので、バイナリパッケージのビルドをせず、ビルドディレクトリも削除しません。
pkg <パッケージ名>
<パッケージ名> のバイナリパッケージ、およびすべての必要な依存関係をビルドして、
パッケージ化します。
clean [パッケージ名]
自動で依存関係を削除し、<masterdir>/builddir および <masterdir>/destdir を
クリーンアップします。
もし、<パッケージ名> が指定されている場合は、<masterdir>/destdir のパッケージ
ファイルと <masterdir>/buiddir のビルドディレクトリが削除されます。
list
インストールされたパッケージを <masterdir> にリストします。
remove <パッケージ名>
<destdir> からターゲットパッケージを削除します。
ビルドテンプレートと <パッケージ名>-<version> が一致していない場合は、何も
削除されません。
remove-autodeps
自動的にインストールされたすべてのパッケージの依存関係を削除します。
purge-distfiles
<hostdir>/sources の、すべての時代遅れの distfiles を削除します。
show <パッケージ名>
指定されたパッケージの情報を表示します。
show-avail <パッケージ名>
特定のアーキテクチャ用にパッケージをビルドできる場合は「0」を返します。
show-build-deps <パッケージ名>
<パッケージ名> に必要なビルドの依存関係を表示します。
show-check-deps <パッケージ名>
<パッケージ名> に必要なチェックの依存関係を表示します。
show-deps <パッケージ名>
<パッケージ名> の必要な ランタイムの依存関係を表示します。
パッケージは DestDir にインストールする必要があります。
show-files <パッケージ名>
<パッケージ名> によってインストールされたファイルを表示します。
パッケージは DestDir にインストールする必要があります。
show-hostmakedepends <パッケージ名>
<パッケージ名>の必要なホストビルド依存関係を表示します。
show-makedepends <パッケージ名>
<パッケージ名> の必要なターゲットビルド依存関係を表示します。
show-options <パッケージ名>
<パッケージ名>による利用可能なビルドオプションを表示します。
show-shlib-provides <パッケージ名>
<パッケージ名> の提供された shlibs のリストを表示します。
パッケージは DestDir にインストールする必要があります。
show-shlib-requires <パッケージ名>
<パッケージ名>に必要なshlibsのリストを表示します。
パッケージは DestDir にインストールする必要があります。
show-var <var>
xbps-src で定義されている場合、<var> の値を表示します。
show-repo-updates
XBPS リポジトリの時代遅れのパッケージのリストを表示します。
show-sys-updates
システム内の時代遅れのパッケージのリストを表示します。
show-local-updates
ローカルリポジトリの時代遅れのパッケージのリストを表示します。
sort-dependencies <pkg> <pkgN+1> ...
追加の引数として、指定されたパッケージのリストが与えられた場合、
ソートされた依存関係リストが 標準出力 に返されます。
update-bulk
時代遅れのシステムリポジトリ内のすべてのパッケージを再ビルドします。
update-sys
時代遅れのシステム内のすべてのパッケージを再ビルドし、それらを更新します。
update-local
時代遅れのローカルリポジトリのすべてのパッケージを再ビルドします。
update-check <パッケージ名>
新しいリリースについて、<パッケージ名> の上流サイトをチェックします。
update-hash-cache
既存のソース distfiles で、ハッシュキャッシュを更新します。
zap
ccache、distcc および host ディレクトリが保存された、masterdir を削除します。
(2). オプション:
-1
ターゲットパッケージの依存関係が欠けている場合は、それらをビルドせずに、失敗
します。
-
-A <ホスト>
指定のホストマシンを使用します。
masterdir-<ホスト> がまだ存在しない場合は自動的に作成されます。
一部のホストマシンは、プロセッサによってネイティブにサポートされていない場合、
qemu-user と binfmt-support を必要とする場合があります。
サポートされているホスト:
aarch64-musl
aarch64
armv5te-musl
armv5te
armv5tel-musl
armv5tel
armv6hf-musl
armv6hf
armv6l-musl
armv6l
armv7hf-musl
armv7hf
armv7l-musl
armv7l
i686-musl
i686
mips-musl
mipsel-musl
mipselhf-musl
mipshf-musl
ppc-musl
ppc
ppc64-musl
ppc64
ppc64le-musl
ppc64le
ppcle-musl
ppcle
riscv64-musl
riscv64
x86_64-musl
x86_64
-
-a <ターゲット>
指定されたターゲットマシンのパッケージをクロスコンパイルします。
サポートされているターゲット:
aarch64-musl
aarch64
armv5te-musl
armv5te
armv5tel-musl
armv5tel
armv6hf-musl
armv6hf
armv6l-musl
armv6l
armv7hf-musl
armv7hf
armv7l-musl
armv7l
i686-musl
i686
mips-musl
mipsel-musl
mipselhf-musl
mipshf-musl
ppc-musl
ppc
ppc64-musl
ppc64
ppc64le-musl
ppc64le
ppcle-musl
ppcle
riscv64-musl
riscv64
x86_64-musl
x86_64
-
-b
壊れているとマークされている、nocross、またはアーチで除外されている場合でも、
パッケージをビルドします。
-c <configuration>
<configuration> が指定されている場合、etc/conf.<configuration> は、主要な
構成ファイル名として使用されます。
etc/conf が存在しない場合にのみ試行されます。
-C
インストールが成功した後、ビルドディレクトリ、自動依存関係、パッケージ用の
destdir を削除しません。
-E
ターゲットパッケージのリポジトリに、バイナリパッケージが存在する場合は、
それをビルドせず、すぐに終了します。
-f
正常に実行された場合でも、指定されたステージ(構成/ビルド/インストール/パッケージ化)
を実行します。
-G Enable XBPS_USE_GIT_REVS(詳細については、etc/defaults.conf を参照してください)
-g
デバッグシンボルを備えた -dbg パッケージのビルドを有効にします。
-H <hostdir>
unset がデフォルトで、「void-packages/hostdir」がある場合に、
<masterdir>/host にマウントされる、バインドされるディレクトリへの絶対パスを指定。
host ディレクトリには、リモートリポジトリからダウンロードされたバイナリパッケージ、
ソース、パッケージの依存関係が保存されています。
-h
使い方を表示。
-I
ソースを展開/読み込むのに役立つ必要な依存関係を無視します。
-i
xbps-src の内部エラーを致命的なエラーにしません。
-j
パッケージをビルドするときに使用する並列ビルドジョブ(プロセッサ)の数を指定。
-L
ASCII の色を無効にします。
-m <masterdir>
unset がデフォルトで「void-packages/masterdir-<host>」がある場合に、
masterdir として使用するディレクトリへの絶対パスを指定。
masterdir は、パッケージを構築/保存/コンパイルする、メインとなるディレクトリです。
-N
リモートリポジトリの使用を無効にして、依存関係を解決します。
-o <opt,~opt2,...>
パッケージビルドオプションを有効または(`~` を付けて)無効にします。
「etc/conf」がすでにいくつかを指定している場合、それはマージされています。
依存関係をビルドする必要がある場合、これらのオプションを継承する場合、
これらのオプションはビルド内のすべてのパッケージに適用されることに注意
してください。
'show-options' target でサポートされているオプションを表示できます。
-p <variable,variable2,...>
ターゲットを表示するには、デフォルトの変数に加えて指定された変数を表示します。
変数は分割され、各単語はデフォルトで別々の行で表示されます。
値全体を 1行で表示するには、asterisk を変数名に追加します。
-Q
ターゲットパッケージのみのチェックステージを実行します。
-K
長いテストでチェックステージを実行します。
-Q とは異なり、これはビルドされた依存関係のチェックステージも実行されます。
-q
xbps-src の情報出力をしません。(ビルド出力は引き続き表示されます)
-r <repo>
代替ローカルリポジトリを使用して、生成されたバイナリパッケージを保存します。
unset がデフォルトで <hostdir>/binpkgs になります。
もし、set の場合、binpkgs は <hostdir>/binpkgs/<repo> に保存されます。
また、この代替リポジトリは、他のリポジトリよりも優先度の高い順序で依存関係を
解決するためにも使用されます。
-s
いくつかの警告をエラーにします。
-t
現在のものを汚さないように、一時的な masterdir を作成します。
既存の masterdir には、最初に binary-bootstrap を完全に入力する必要があることに
注意してください。
ターゲットが終了すると、この一時的な masterdir は削除されます。
このフラグには xbps-uchroot(1) が必要であり、 overlayfs をサポートしていない
ファイルシステムでは機能しません。
-v
詳細なメッセージを表示します(update-check のみに影響します)。
-V
xbps のバージョンを表示して、終了します。
-
2). 使用される「ディレクトリ」について:
$ cd ~/git/void-packages/
$ ls -1p
:
CONTRIBUTING.md
COPYING
Manual.md
README.md
common/
etc/
hostdir/
masterdir-x86_64/
srcpkgs/
xbps-src
-
(1). <masterdir> は、「masterdir-<ホスト>」なので、今回は「masterdir-x86_64」になります:
masterdir は、パッケージ化(構築/保存/コンパイル)に使われる、メインとなるディレクトリです:
$ cd ~/git/void-packages/
$ ls masterdir-x86_64
:
bin destdir home lib32 mnt root sys var
boot dev host lib64 opt run tmp void-packages
builddir etc lib media proc sbin usr
-
(2). <hostdir>/binpkgs に、生成されたバイナリパッケージ(ビルドしてパッケージ化されたパッケージ)が保存されます:
$ ls -1p ~/git/void-packages/hostdir/
:
binpkgs/
repocache-x86_64/
sources/
-
「hostdir/binpkgs/」フォルダ:
$ ls -l ~/git/void-packages/hostdir/binpkgs/
:
-rw-r--r-- 1 user user 958664 10月 4 23:59 FeatherPad-1.6.2_1.x86_64.xbps
drwxr-xr-x 2 user user 4096 10月 4 23:49 bootstrap
-rw-rw-r-- 1 user user 862 10月 4 23:59 x86_64-repodata
-
「hostdir/binpkgs/bootstrap/」フォルダ:
$ ls -l ~/git/void-packages/hostdir/binpkgs/bootstrap/
:
-rw-r--r-- 1 user user 11252481 10月 4 23:49 cmake-bootstrap-4.1.0_1.x86_64.xbps
-rw-rw-r-- 1 user user 720 10月 4 23:49 x86_64-repodata
-
「hostdir/sources/」フォルダ:
$ ls -1p ~/git/void-packages/hostdir/sources/
:
FeatherPad-1.6.2/
by_sha256/
cmake-bootstrap-4.1.0/
-
ソースファイル1:
$ ls -1p ~/git/void-packages/hostdir/sources/FeatherPad-1.6.2/
:
V1.6.2.tar.gz
-
ソースファイル2:
$ ls ~/git/void-packages/hostdir/sources/cmake-bootstrap-4.1.0/
:
cmake-4.1.0.tar.gz
→「cmake-bootstrap-4.1.0」=「cmake-4.1.0」のようです:
-
チェックサムの格納:
$ ls -1p ~/git/void-packages/hostdir/sources/by_sha256/
:
81ee8170028865581a8e10eaf055afb620fa4baa0beb6387241241a975033508_cmake-4.1.0.tar.gz
9753796b2a525a4d6b13696681e9fbb094edcc20e8aadffcd5bb6fe22d0a5fdb_V1.6.2.tar.gz
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----- ----- ----- -----
31. 参考: 「xbps-src」で、アプリを「パッケージ化」して、インストールする手順:
-
1). ビルドしたい「パッケージ」のソースパッケージが「xbps-src」にあるか確認:
$ cd ~/git/void-packages/
$ ls srcpkgs | grep <パッケージ名>
-
2). パッケージをビルドして「パッケージ化」:
$ cd ~/git/void-packages/
$ ./xbps-src pkg <パッケージ名>
-
3). 「パッケージ化」にて、
-
(1). 通常のパッケージは「hostdir/binpkgs」に生成されます:
-
(2). 制限のあるパッケージの場合は、「hostdir/binpkgs/nonfree」に生成されます:
-
(3). ビルドされたパッケージを指定してインストールできます:
-
4). ビルドされたパッケージを、インストール:
-
(1). 通常のパッケージの場合:
$ sudo xbps-install --repository hostdir/binpkgs <パッケージ名>
-
もしくは、
-
(2). ライセンス等で制限があるパッケージの場合:
$ sudo xbps-install --repository hostdir/binpkg/nonfrees <パッケージ名>
-
5). インストールされたか確認:
$ xbps-query -s <パッケージ名>
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----- ----- ----- ----- -
32. 参考:「xbps-src」で使う「patch」を作る手順:
-
「xbps-src」スクリプトの中で、自動でソースファイルを修正するには、「patch」の機能を使います:
-
1). パッチファイルの作成手順:
「git 環境」でなく、手動で差分を作成する場合:
-
(1). 元のソースを「a」という名前のフォルダに、変更されたソースを「b」という名前のフォルダに保存します。
-
(2). 差分(パッチ)の作成:
diff -Naur a b > 01.fixes.patch
→ファイル名は任意ですが、意味があり、
複数のパッチが置かれている場合、数字やアルファベット順にパッチが当たります:
なので、ファイル名の先頭に「2桁の数字」を付けて、パッチの当たる順番を指定しています:
-
まとめて「差分」を作ると作業は楽ですが、
それよりも、ステップごとに修正後、差分を作り、
「a」と「b」の内容を同じにしてから、次のステップに進み、
修正して、差分を作ることで、
後からでも、わかりやすい(ちょっとしたことなら修正できる)「パッチ」ファイルを作れます:
-
(3). テンプレートファイルが置かれた「パッケージ」のフォルダに、「patches」という名前のフォルダを作成:
これがポイントみたい。たぶん、パッチファイルに「.patch」拡張子は要らないかも。
-
(4). そのフォルダに、作成した「.patch」ファイルを移動:
「パッケージ化」する前に、作成に使ったフォルダを削除しないとエラーするので、どうせなので、「コピー」よりも「移動」にすると工数が減らせます:
-
(5). xbps-src は、パッケージがビルドされるたびに、パッチファイルでパッチコマンドを実行します。
つまり、「テンプレート」の中で、パッチをしなさいという指示は必要ありません。
パッチファイルを置くだけで、パッチが当たります。
-
2). パッチファイルを使っている例を見てみる:
-
(1). patch ファイルが置かれた「フォルダ」を検索:
$ sudo find / -name patches
:
/home/user/git/void-packages/srcpkgs/lxdm/patches
:
省略
-
「lxdm」アプリを例として、見てみます:
$ ls -1p ~/git/void-packages/srcpkgs/lxdm/
:
INSTALL
files/
patches/
template
→「テンプレート」と「パッチ」以外に、「ファイル」(中身はスクリプト)や「スクリプト」も置けるみたい:
-
パッチのフォルダを確認:
$ ls -1 ~/git/void-packages/srcpkgs/lxdm/patches/
:
default-PATH.patch
default-config.patch
execinfo.patch
fix-msghdr-usage.patch
→「patches」フォルダの中に、複数の「.patch」ファイルが置かれています:
名前の付け方は任意ですが、(さりげなく、順番が指示されています)
アルファベット順とか、大文字が先とか、パッチの当たる順番があります:
2桁の「数字」を頭に付けると、自由な名前で、順番を調整できます:
-
(2). 「lxdm」アプリに対するパッチ1:
$ cat ~/git/void-packages/srcpkgs/lxdm/patches/default-PATH.patch
From e46c33735f81ca5607247fd0690ebbe9f1565708 Mon Sep 17 00:00:00 2001
From: Piotr Wójcik <chocimier@tlen.pl>
Date: Tue, 8 Oct 2019 19:32:15 +0200
Subject: [PATCH] tweak default PATH
diff --git a/src/lxdm.c b/src/lxdm.c
index a37f051..8a0e6c6 100644
--- a/src/lxdm.c
+++ b/src/lxdm.c
@@ -1399,7 +1399,7 @@ void lxdm_do_login(struct passwd *pw, char *session, char *lang, char *option)
if( G_UNLIKELY(path) && path[0] ) /* if PATH is specified in config file */
env=g_environ_setenv(env, "PATH", path, TRUE); /* override current $PATH with config value */
else /* don't use the global env, they are bad for user */
- env=g_environ_setenv(env, "PATH", "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin", TRUE); /* set proper default */
+ env=g_environ_setenv(env, "PATH", "/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin", TRUE); /* set proper default */
g_free(path);
/* optionally override $LANG, $LC_MESSAGES, and $LANGUAGE */
if( lang && lang[0] )
--
2.23.0
→最終行に git のバージョン表示があるので、git 環境で修正してコミット後、
「git format-patch -1」で差分を作成したみたい:
「-1」はコミット数(最新のコミットを 1つ)、つまり、パッチのファイル数です:
通常、コミット名をファイル名にして、サブとしてファイルが分離されますが、ファイル名は後で修正できます:
-
(3). 「lxdm」アプリに対するパッチ2:
$ cat ~/git/void-packages/srcpkgs/lxdm/patches/default-config.patch
--- a/data/lxdm.conf.in 2013-08-30 17:56:16.097006000 +0200
+++ b/data/lxdm.conf.in 2013-09-04 01:54:12.942117085 +0200
@@ -23,7 +23,7 @@
[server]
## arg used to start xserver, not fully function
-# arg=/usr/bin/X -background vt1
+arg=/usr/bin/X -background vt1
# uncomment this if you really want xserver listen to tcp
# tcp_listen=1
# uncoment this if you want reset the xserver after logou
@@ -34,7 +34,7 @@
gtk_theme=Clearlooks
## background of the greeter
-bg=/usr/share/backgrounds/default.png
+#bg=/usr/share/void-artwork/splash.png
## if show bottom pane
bottom_pane=1
--- a/data/lxdm.in 2013-08-30 17:56:16.097006000 +0200
+++ b/data/lxdm.in 2013-09-04 01:57:56.950799946 +0200
@@ -1,21 +1,13 @@
#!/bin/sh
-[ -f /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n
-
-if [ -z "$LANG" -a -e /etc/sysconfig/language ]; then
- . /etc/sysconfig/language
- if [ -n "$RC_LANG"]; then
- LANG=$RC_LANG
- fi
+if [ -r /etc/profile.d/locale.sh ]; then
+ . /etc/profile.d/locale.sh
fi
if [ -n "$LANG" ]; then
export LANG
fi
-[ -f /etc/sysconfig/desktop ] && . /etc/sysconfig/desktop
-[ -f /etc/sysconfig/windowmanager ] && . /etc/sysconfig/windowmanager
-
if [ -n "$DEFAULT_WM" ]; then
PREFERRED=$DEFAULT_WM
fi
--- a/data/Xsession 2013-08-30 17:56:16.097006000 +0200
+++ b/data/Xsession 2013-09-04 01:58:19.941348762 +0200
@@ -9,6 +9,8 @@
LXSESSION=/usr/bin/startlxde
fi
+[ -f /etc/profile ] && . /etc/profile
+[ -f ~/.profile ] && . ~/.profile
[ -f /etc/xprofile ] && . /etc/xprofile
[ -f ~/.xprofile ] && . ~/.xprofile
→a b のフォルダに置いた 3つのファイルを修正後、まとめて、手動で「diff -Naur a b > default-config.patch」で差分を作成したようです。作業は楽ですが、行が長くなると見づらくて、ちょっとした修正もしづらくなります:
他の(git で作成した)パッチと違和感がないように、先頭行と途中の(先頭)行は削除しています:
-
(4). その他の情報:
$ ls -1p ~/git/void-packages/srcpkgs/lxdm/
:
INSTALL
files/
patches/
template
→ファイルやフォルダを見ると、「xbps-src」には、「パッチ」以外の機能も持っているみたい:
-
「INSTALL」スクリプトの内容:
$ cat ~/git/void-packages/srcpkgs/lxdm/INSTALL
# Set correct permissions for LXDM.
case ${ACTION} in
post)
chown root:lxdm etc/lxdm/lxdm.conf
[ ! -d var/lib/lxdm ] && mkdir -p var/lib/lxdm
chown -R root:lxdm var/lib/lxdm
;;
esac
-
「files」フォルダ:
$ ls -1p ~/git/void-packages/srcpkgs/lxdm/files/
:
lxdm/
lxdm.pam
-
$ ls -1p ~/git/void-packages/srcpkgs/lxdm/files/lxdm/
:
run
-
$ cat ~/git/void-packages/srcpkgs/lxdm/files/lxdm/run
:
#!/bin/sh
exec 2>&1
exec lxdm
→起動を行うスクリプトみたい:
-
「lxdm.pam」ファイルの内容:
$ cat ~/git/void-packages/srcpkgs/lxdm/files/lxdm.pam
:
#%PAM-1.0
auth include system-login
-auth optional pam_gnome_keyring.so
account include system-login
password include system-login
session include system-login
-session optional pam_gnome_keyring.so auto_start
-
「テンプレート」ファイルの内容:
$ cat ~/git/void-packages/srcpkgs/lxdm/template
# Template file for 'lxdm'
pkgname=lxdm
version=0.5.3
revision=5
build_style=gnu-configure ←(ビルドスタイル)
configure_args="--disable-consolekit --with-pam --enable-gtk3" ←(パラメータの付加)
hostmakedepends="automake gettext-devel libtool pkg-config intltool"
makedepends="pam-devel gtk+3-devel iso-codes"
conf_files=" ←(見やすく書けます)
/etc/lxdm/LoginReady
/etc/lxdm/PostLogin
/etc/lxdm/PostLogout
/etc/lxdm/PreLogin
/etc/lxdm/PreReboot
/etc/lxdm/PreShutdown
/etc/lxdm/Xsession
/etc/lxdm/lxdm.conf
/etc/pam.d/lxdm"
short_desc="GUI login manager for LXDE"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-3.0-or-later"
homepage="https://lxde.org"
distfiles="${SOURCEFORGE_SITE}/lxdm/lxdm-${version}.tar.xz"
checksum=4891efee81c72a400cc6703e40aa76f3f3853833d048b72ec805da0f93567f2f
system_groups="lxdm" ←★
pre_configure() { ←★
autoreconf -fi
}
pre_build() { ←★
sed -i 's,@DATADIRNAME@,share,g' -i po/Makefile
}
post_install() { ←★
vsv lxdm
# Use our own pam file.
rm -f ${DESTDIR}/etc/pam.d/lxdm
vinstall ${FILESDIR}/lxdm.pam 644 etc/pam.d lxdm
# use tty7 for X without systemd
sed -i 's,vt1,vt7,g' ${DESTDIR}/etc/lxdm/lxdm.conf
sed -i 's,/usr/sbin,/usr/bin,g' ${DESTDIR}/usr/bin/lxdm
vmkdir var/lib/lxdm
echo 'GDK_CORE_DEVICE_EVENTS=true' > ${DESTDIR}/var/lib/lxdm/.pam_environment
}
システムで使われるアプリなので、いつものアプリのビルドよりも、ちょっと複雑です:
ちなみに、優先度は、「★」→「パラメータの付加」→「ビルドスタイル」の順で、上書きされるみたい:
つまり、「★」と「パラメータの付加」は省略すると、「ビルドスタイル」のデフォルトが取られます:
「ビルドスタイル」を省略した場合は、「★」で、パッケージ化までの手順を書く必要があります:
なので、「ビルドスタイル」は指定して、細かく指示したいところだけ、「パラメータの付加」、もしくは「★」で書くと、その他のパッケージ化等の手順を書かなくて済みます:
-
→パッチについての指示は書かれていません。ファイルが存在すると、自動でパッチが当たるようです:
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----- ----- ----- ----- --
33. 参考:「xbps-src」のテンプレートファイルを「Haiku OS」のレシピファイルと比較:
-
こちらの作業は要りません:
-
「Void Linux」でビルドの指示に使われる「テンプレート」ファイルは、
「Haiku OS」では「レシピファイル」と呼ばれます。
この機能を持つビルド環境?の「Haikuports」が提供されたことで、飛躍的に「Haiku OS」で使えるアプリが増えました(感謝 !!)
ですが、
「レシピファイル」を作るのは面倒で、とても大変です:
複雑なのは、「Haiku OS」が(Linux の発展前に作られた OS で)Linux ではないことも影響してます:
-
「Haiku OS」でアプリの移植を一度でも経験した後に、「Void Linux」の「xbps-src」のテンプレートファイルを見ると、その「必要最小限の簡潔さ」に驚きます:
- アプリの「カテゴリ分け」は行わないので、「カテゴリ分け」で悩むことはありません:
- 「パッケージ名」は、バージョンを気にせずに名前を付けられます:
- コメント行は、短い行のみ許されるので、書くのが楽です:
- 「依存の書き方」は、ほぼ羅列するだけです:
- 「ビルドの手順」は、「代表の名前」を指示するだけです:
- 依存の「共有ファイル」で、必要な「バージョン」が移植されているか、気にする必要はありません:
→「Void Linux」でアプリの移植が進んでいるのは、Linux のアプリを Linux に移植していることと、簡潔な「テンプレートファイル」を使ってビルドできる設計になっているから、だと思います:
-
「Haiku」にて「FeatherPad」を「1.1.0」にバージョンアップ〈H136-7〉 より:
「Haiku OS」に「featherpad-1.1.0」を移植したときの、「レシピファイル」と「付属ファイル」です:
-
(1). レシピファイル「featherpad-1.1.0.recipe」:
ファイル名にアプリの「バージョン」情報が含まれており、それは必須です:
-
> cat ~/Git/haikuports/app-editors/featherpad/featherpad-1.1.0.recipe
SUMMARY="A lightweight Qt5 plain-text editor for Linux"
DESCRIPTION="FeatherPad (by Pedram Pourang, a.k.a. Tsu Jan \
<tsujan2000@gmail.com>) is a lightweight Qt5 plain-text editor for Linux. \
It is independent of any desktop environment and has:
* Drag-and-drop support, including tab detachment and attachment;
* X11 virtual desktop awareness (using tabs on current desktop but opening \
a new window on another);
* An optionally permanent search-bar with a different search entry for each tab;
* Instant highlighting of found matches when searching;
* A docked window for text replacement;
* Support for showing line numbers and jumping to a specific line;
* Optional selection highlighting;
* Automatic detection of text encoding as far as possible and optional \
saving with encoding;
* Syntax highlighting for common programming languages;
* Ability to open URLs with appropriate applications;
* Session management;
* Side-pane mode;
* Auto-saving;
* Spell checking with Hunspell;
* Printing;
* Text zooming;
* Appropriate but non-interrupting prompts; and
* Other features that can be found in its settings, \
on its menus or when it is actually used."
HOMEPAGE="https://github.com/tsujan/FeatherPad"
COPYRIGHT="2016, 2018 Pedram Pourang"
LICENSE="GNU GPL v3"
REVISION="1"
SOURCE_URI="https://github.com/tsujan/FeatherPad/archive/refs/tags/V$portVersion.tar.gz"
CHECKSUM_SHA256="82bd94996f0d7be23be1b150a22d88b9c0b19c9852d5c2c7388e61ea9e05be03"
SOURCE_FILENAME="FeatherPad-$portVersion-tar.gz"
SOURCE_DIR="FeatherPad-$portVersion"
ADDITIONAL_FILES="featherpad.rdef.in"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
PROVIDES="
featherpad$secondaryArchSuffix = $portVersion
app:FeatherPad$secondaryArchSuffix = $portVersion
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libGL$secondaryArchSuffix
lib:libhunspell_1.7$secondaryArchSuffix
lib:libQt5Core$secondaryArchSuffix
lib:libQt5Gui$secondaryArchSuffix
lib:libQt5Network$secondaryArchSuffix
lib:libQt5PrintSupport$secondaryArchSuffix
lib:libQt5Svg$secondaryArchSuffix
lib:libQt5Widgets$secondaryArchSuffix
lib:libz$secondaryArchSuffix
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libGL$secondaryArchSuffix
devel:libhunspell_1.7$secondaryArchSuffix
devel:libQt5Core$secondaryArchSuffix
devel:libQt5Gui$secondaryArchSuffix
devel:libQt5Network$secondaryArchSuffix
devel:libQt5PrintSupport$secondaryArchSuffix
devel:libQt5Svg$secondaryArchSuffix
devel:libQt5Widgets$secondaryArchSuffix
devel:libz$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:find
cmd:g++$secondaryArchSuffix
cmd:ld$secondaryArchSuffix
cmd:lrelease$secondaryArchSuffix >= 5
cmd:make
cmd:pkg_config$secondaryArchSuffix
cmd:cmake
"
BUILD()
{
mkdir -p build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX:PATH="$appsDir/FeatherPad" \
-DCMAKE_BUILD_TYPE=Release
make $jobArgs
}
INSTALL()
{
cd build
make install
mv $appsDir/FeatherPad/featherpad \
$appsDir/FeatherPad/FeatherPad
local APP_SIGNATURE="application/x-vnd.featherpad"
local MAJOR="`echo "$portVersion" | cut -d. -f1`"
local MIDDLE="`echo "$portVersion" | cut -d. -f2`"
local MINOR="`echo "$portVersion" | cut -d. -f3`"
sed \
-e "s|@APP_SIGNATURE@|$APP_SIGNATURE|" \
-e "s|@MAJOR@|$MAJOR|" \
-e "s|@MIDDLE@|$MIDDLE|" \
-e "s|@MINOR@|$MINOR|" \
$portDir/additional-files/featherpad.rdef.in > featherpad.rdef
addResourcesToBinaries featherpad.rdef $appsDir/FeatherPad/FeatherPad
addAppDeskbarSymlink $appsDir/FeatherPad/FeatherPad "FeatherPad"
}
→「Haiku」では、レシピファイルのインデントは「タブ」を使うのがルールです:
ただし、ブラウザで表示すると「タブ」が「スペース」に変換されます
-
「Haiku」のレシピファイルは、「依存の定義」が簡単とは言えないし、「ビルドの手順」も定義が必要で、人によって書かれている手順が異なります。そして、多くのシステム変数が使われています。学習が必要です:
また、ここで、アプリの「説明行」がやたら長いのが目立ちます:
-
ちなみに、「INSTALL()」行の後半の文字列の操作は、リソースの定義を行う、下記の「追加ファイル」に、バージョン情報を渡すための処理です。面倒ですね:
-
(2). 追加ファイルの「featherpad.rdef.in」:
FeatherPad の実行ファイルに、ファイル属性として組み込むリソース(アイコン情報)の定義です:
「Haiku OS」で、FeatherPad のアイコンファイルがそのまま使えないので、ファイル属性として組み込む準備です:
-
これ以外に(「Haiku OS」でも動くように、ソースの一部を修正する)「.patchs」ファイルの定義があったりします:
これらは、「Haiku OS」が Linux ではないから必要になるファイルです:
-
> cat ~/Git/haikuports/app-editors/featherpad/additional-files/featherpad.rdef.in
resource app_flags B_MULTIPLE_LAUNCH;
resource ("QT:QPA_FLAGS") "Q_REF_TO_ARGV | Q_REF_TO_FORK";
resource app_version {
major = @MAJOR@,
middle = @MIDDLE@,
minor = @MINOR@,
variety = B_APPV_FINAL,
internal = 0,
short_info = "FeatherPad",
long_info = "Lightweight Qt5 text editor"
};
resource app_signature "application/x-vnd.featherpad";
resource file_types message {
"types" = "text/x-source-code",
"types" = "text/x-makefile",
"types" = "text/x-jamfile",
"types" = "text/html",
"types" = "text/xml",
"types" = "text/plain",
"types" = "text/rtf"
};
resource vector_icon {
$"6E6369661A05FE0382848103696B670387898603A7A8A603B3B4B203B4B4B303"
$"A2A39F05F903D2D9E105FA034D76A303C8CACA03878F92038EA8C40393999A03"
$"AFBCC803090B0C03A0A29E03A4A7A403A9ABA7038B8D8903888A850397999503"
$"D2D5CE035B5E592408052020CBFA20CBFACBFA20CBFA20200211B85BB5ACB855"
$"B453B768B5A6B48BB593B57EB59AB48BB593B493B613B493B613B493B613B40E"
$"B623B40EB623B403BD19B40DCB04B406C40FB40DCB04B46CCACFB46CCACFBBF7"
$"CB0BCB12CACEC387CB00CB12CACECB70CB03CB70CB03CB78C40ECB70B626CB7C"
$"BD19CB70B626CAEBB60FCAEBB60FCAEBB60FCAEFB593CAEFB593C9FDB59AC722"
$"B5ACC817B5A6C726B453C518B5904DB406C49AB53AC32BB523C31DB3CFC1DDB5"
$"D6BFE0B56043B3B4BEFCB4E7BD43B5A6BDB1B3F7BC80B456BA66B590BB4FB484"
$"BA91B4060207B85BB5ACB87CB65CB855B453BA66B590BA91B406BB4FB484BD43"
$"B5A6BC80B456BD43B5A6BD31B60CBD31B60CBD08B6C1BCC0B82DBCE9B777BB87"
$"B887BA61B6A2BAF6B77BBAAAB7E6B8B2B7BFB99FB8D5B899B70D000ABD43B5A6"
$"BD43B5A6BDB1B3F7BFE0B560BEFCB4E743B3B4C32BB523C1DDB5D6C31CB60CC2"
$"CAB7D4C300B6F3C2B7B760C27BB5FDC28FB674C227B6C4C1A4B861C1EFB796C0"
$"6FB83EBFA7B61CC00DB70FBF98B736BDF0B87BBF00B81BBD8BB7B9BD31B60C3A"
$"B6E1BD31B60CBD43B5A6BD43B5A6BD43B5A60003BE15B5B3BE15B5B3BDBAB64D"
$"BE09B788BDB6B6EABF40B7E5BE15B5B3BF75B501BE15B5B30202C0ACB5B345B5"
$"1EC025B64AC175B788C095B7BCC1EBB6F00204B493B613B500BC33B55DB632B7"
$"BCB690B6F3B670B6DCB697B51AB6B5B5FAB69EB4F5BCA925C892B53AC29FB3B8"
$"C28B0204C837B676C8EFB688C90DB60ACAEBB60FCA04B626CA8CBC27CA8FC871"
$"CBACC26ECA30C28BCA63B6BBCA94BCA0C9ABB69E0206C32BB523C31CB60CC31D"
$"B3CFC518B590C49AB53A4DB406C722B5ACC726B453C702B65BC6CAB7BBC6E5B7"
$"0AC5D7B8D5C51EB6A3C4D9B7E5C4BBB768C2CAB7D4C342B906C300B6F30205B4"
$"8BB593B48BB593B57EB59AB85BB5ACB768B5A6B87CB65CB8B2B7BFB899B70DB8"
$"63B757B7BCB690B810B6F3B6F3B670B493B613B55DB632B493B6130205C722B5"
$"ACC702B65BC817B5A6CAEFB593C9FDB59ACAEFB593CAEBB60FCAEBB60FCA04B6"
$"26C837B676C90DB60AC796B6AFC6CAB7BBC73AB747C6E5B70A0202BE15B5B3BD"
$"BAB64DBF75B501BE09B788BF40B7E5BDB6B6EA0202C0ACB5B3C025B64A45B51E"
$"C175B788C1EBB6F0C095B7BC0206B40EB623B403BD19B40EB623B493B613B493"
$"B613B500BC3325C892B3B8C28BB50AC92CB51ECA61B516C9C7B4F3CA7DB46CCA"
$"CF24CAB4B46CCACFB40DCB04B40DCB04B406C40F0206CAEBB60FCA8CBC27CAEB"
$"B60FCB70B626CB70B626CB7CBD19CB70CB03CB78C40ECB70CB03CB12CACECB12"
$"CACECAE5CAB4CA5DCA61CA8ACA7DCA6AC9BBCA8FC871CA7CC917CBACC26E0212"
$"BCC0B82DBB87B887BCE9B777BD31B60CBD08B6C13AB6E1BDF0B87BBD8BB7B9BD"
$"8FB8B5BCC8B927BD2BB8EDBC51B959BB6731BBDCB98F32BA16B72DBA42B77FB9"
$"0AB72DBA42B73BBAB8B73BBAB8B7E8BAE1B9F7BB5BB947BB33B904BB92B730BC"
$"4FB6A3BA94B79BBC58B8D4BC74B86CBC6AB878BCC6B76FBD46B755BCB5B7DA40"
$"B71CC4C9B747C25AB6DEC56CB670C6B3B6A7C60DB627C77D25C892B5F0C85FB5"
$"3AC29FB51AB6B5B4F5BCA9B5FAB69EB7BCB690B6DCB697B810B6F3B8B2B7BFB8"
$"63B757B99FB8D5BA61B6A2BAAAB7E6BAF6B77B0205BFA7B61CBF98B736C00DB7"
$"0FC1A4B861C06FB83EC1A4B861C188B8BBC188B8BBBFF2B8DEBCC8B927BE5DB9"
$"0ABD2BB8EDBDF0B87BBD8FB8B5BF00B81B0016C1A4B861C1A4B861C1EFB796C2"
$"7BB5FDC227B6C4C28FB674C2CAB7D4C2B7B760C342B906C51EB6A3C4BBB768C4"
$"D9B7E5C6CAB7BBC5D7B8D5C73AB747C837B676C796B6AFC8EFB688CA63B6BBC9"
$"ABB69ECA94BCA0CA8FC871CA30C28BC41FC832B73CC84BBDACC875B73CC84BB7"
$"07C7EDB707C7EDB81DC733B8BBC4BAB868C5EAB98AC47FBB2BC40EBA5BC442BD"
$"59C420C1B3C41FBF85C424C18DC3FCC11FC390C144C3B5BFD5C2A3BC57C314BD"
$"DFC353BDB5C29EBF8FC09BBEF0C20DBFA8BF35C12DBE38C367BF55C27ABD3BC5"
$"18BB37C384BBC2C68EBB42C97FBB3DC806BB44C8FCBAEAC7EABA5BC876BA9BC5"
$"E6B979C188B8BBC3C7B891C188B8BBC1A4B861C1A4B861C1A4B8610004C4C9BC"
$"F1C4C9BCF1C49DBD2EC41CBDE4C447BDA7C55CBDF5C7E0BDE4C69FBDF5C76DBC"
$"83C4C9BCF1C5E9BCDBC4C9BCF10407FA3EC29EC323C29BC3A6C29EC428C29EC4"
$"28C40BC428C853C42AC6E7C42AC853C42AC856C3A6C853C323C853C323C6E6C3"
$"23C29EC323C40AC323C29EC3230203B9C3C539BB2BC52CB9C3C579B9C5C63DB9"
$"C5C5FDBB42C629BDFDC53D3AC703BC93C52E0212BCC8B927BC51B959BE5DB90A"
$"C188B8BBBFF2B8DEC3C7B891C7EABA5BC5E6B979C73633C518BB37C5CDBAFFC3"
$"84BBC2C12DBE38C27ABD3BC367BF55BF8FC09BBFA8BF35BEF0C20DBC57C314BD"
$"B5C29EBC32C334BBC2C390BBE7C372BB9CC3B0BB2BC40EBB51C3EFBA5BC442B8"
$"BBC4BAB98AC47FB988C123BF04BC52BCF5BF21BB87BDECB71CC4C9B91CC18BB7"
$"47C25AB76FBD46B7DA40B80FBD83B92FBE39B898BDECB93EBDA4B92DBC79B93E"
$"BD0F30BC32B9F7BB5BB9C5BBA2BA5BBB1EBAEDBA66BAADBACABB0CBA3EBB6731"
$"BB49B9EEBBDCB98F0203B72DBA42B86DBA48B77FB90ABB673132BA16BB49B9EE"
$"BAEDBA66BB0CBA3EB9ADBA520204B72DBA42B72DBA42B86DBA48BAEDBA66B9AD"
$"BA52BAADBACAB9F7BB5BBA5BBB1EB947BB33B73BBAB8B7E8BAE1B73BBAB80203"
$"C7EABA5BC73633C876BA9BC97FBB3DC8FCBAEAC806BB44C518BB37C68EBB42C5"
$"CDBAFF0204B730BC4FB79BBC58B6A3BA94B9F7BB5BB904BB92B9C5BBA2B92DBC"
$"7930BC32B92DBC79B8D4BC74B8D4BC74B86CBC6A0204B8D4BC74B878BCC6B8D4"
$"BC74B92DBC79B92DBC79B93EBD0FB92FBE39B93EBDA4B898BDECB76FBD46B80F"
$"BD83B755BCB50205B71CC4C9B6DEC56CB91CC18BBF04BC52BB87BDECBCF5BF21"
$"B8BBC4BAB988C123B868C5EAB707C7EDB81DC733B6E1C79EB670C6B329C702B6"
$"A7C60D0203C4C9BCF1C49DBD2EC5E9BCDBC7E0BDE4C76DBC83C69FBDF5C41CBD"
$"E4C55CBDF5C447BDA70203BBC2C390BD8CC3A2BBE7C372BC57C314BC32C334BD"
$"DFC353C11FC390BFD5C2A3BF55C3970204C29EC323C29EC323C40AC323C853C3"
$"23C6E6C323C853C323C856C3A6C856C3A6C66CC3A6C29BC3A6C485C3A6C29BC3"
$"A60204BB2BC40EBD59C420BB51C3EFBBC2C390BB9CC3B0BD8CC3A2C11FC390BF"
$"55C397C144C3B5C1B3C41FC18DC3FCBF85C4240204C29BC3A6C29BC3A6C485C3"
$"A6C856C3A6C66CC3A6C856C3A6C853C42AC853C42AC6E7C42AC29EC428C40BC4"
$"28C29EC4280203B9C3C539B9C3C579BB2BC52CBDFDC53DBC93C52E3AC703B9C5"
$"C63DBB42C629B9C5C5FD020725C892B50AC92CB5F0C85FB670C6B3B627C77D29"
$"C702B707C7EDB6E1C79EB707C7EDB73CC84BB73CC84BBDACC875CA8FC871C41F"
$"C832CA7CC917CA5DCA61CA6AC9BBC347CA6AB51ECA61BC34CA77B516C9C70204"
$"B46CCACFBBF7CB0B24CAB4B51ECA61B4F3CA7DBC34CA77CA5DCA61C347CA6ACA"
$"8ACA7DCB12CACECAE5CAB4C387CB001E0A00020001000A010102000A02030304"
$"05000A020106000A020107000A030108000A040109000A04010A000A05010B00"
$"0A06010C000A07010D000A07010E000A08010F000A090110000A0A0411121314"
$"000A0B0115000A0C0116000A0D0117000A0E0118000A0F0119000A10011A000A"
$"11011B000A12011C000A13011D000A14011E000A15011F000A160120000A1701"
$"21000A180122000A19012300"
};
→Haiku の画像ツールを使い、アイコンの「ベクターデータ」をコード化して、貼り付けました:
できるだけデータが小さくなるように画像を加工しましたが、あまり減っていません:
-
2). 「Void Linux」の「xbps-src」のテンプレートファイル:
「FeatherPad」アプリのテンプレートファイルです:
$ cat ~/git/void-packages/srcpkgs/FeatherPad/template
# Template file for 'FeatherPad'
pkgname=FeatherPad
version=1.6.2
revision=1
build_style=cmake
hostmakedepends="qt6-tools qt6-base-devel pkg-config"
makedepends="libX11-devel libXext-devel qt6-svg-devel hunspell-devel"
short_desc="Lightweight Qt6 plain-text editor for Linux"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-3.0-or-later"
homepage="https://github.com/tsujan/FeatherPad"
changelog="https://github.com/tsujan/FeatherPad/raw/master/ChangeLog"
distfiles="https://github.com/tsujan/FeatherPad/archive/V${version}.tar.gz"
checksum=9753796b2a525a4d6b13696681e9fbb094edcc20e8aadffcd5bb6fe22d0a5fdb
→「distfiles=」の ${version} に、自動で「version=」の値が入ります:
たったこれだけの(最低限の)指示で、ソースをビルド後、「パッケージ化」までが完了します:
「項番 1).」の「Haiku OS」に比べると雲泥の差で、「驚き」です:
-
たぶん、比較するなら、Linux 上のツールにすべきでしょうが、それでも、
アプリを移植するスピードは格段に違うし、これなら「ちょっと移植してみるかな」と思わせます:
-
-
- --- - --- - --- - --- - --- - --- - --- ----- ----- ----- ----- ----- ---
34. 参考: 「xbps-src」にて、いくつかのアプリの「テンプレート」を抜粋:
-
「srcpkgs/」から、いくつかの「テンプレート」ファイルを抜粋しました:
「テンプレート」ファイルの作成で悩んだときの参考になればと思います:
-
アプリによって、簡単なものから、複雑なものまであります。奥は深いです:
-
抽出に使ったやり方:
$ cd ~/git/void-packages
$ sudo grep -ril "configure" srcpkgs/
-
$ sudo grep -ril "qmake" srcpkgs/
-
$ sudo grep -ril "meson" srcpkgs/
-
-
(1). 「vice」
$ cat srcpkgs/vice/template
# Template file for 'vice'
pkgname=vice
version=3.9
revision=1
build_style=gnu-configure
configure_args="--enable-cpuhistory --enable-x64 --disable-pdf-docs
--libdir=/usr/lib$XBPS_TARGET_WORDSIZE $(vopt_enable sdl2 sdlui2)
$(vopt_with sdl2 sdlsound) $(vopt_enable gtk3 native-gtk3ui)
$(vopt_enable gtk3 desktop-files) $(vopt_with gtk3 pulse)
$(vopt_enable ffmpeg external-ffmpeg)"
hostmakedepends="pkg-config flex dos2unix xa perl glib-devel xdg-utils"
makedepends="zlib-devel readline-devel libpng-devel glew-devel alsa-lib-devel
libcurl-devel libevdev-devel $(vopt_if sdl2 SDL2_mixer-devel) $(vopt_if sdl2 SDL2-devel)
$(vopt_if gtk3 gtk+3-devel) $(vopt_if gtk3 pulseaudio-devel)
$(vopt_if ffmpeg ffmpeg6-devel)"
short_desc="Emulator for C64, C128, CBM-II, PET, VIC20, Plus4 and C16"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-2.0-or-later"
homepage="https://vice-emu.sourceforge.net/"
changelog="https://vice-emu.sourceforge.io/NEWS"
distfiles="${SOURCEFORGE_SITE}/vice-emu/releases/vice-${version}.tar.gz"
checksum=40202b63455e26b87ecc63eb5a52322c6fa3f57cab12acf0c227cf9f4daec370
# Package build options
build_options="sdl2 gtk3 ffmpeg"
build_options_default="gtk3 ffmpeg"
desc_option_ffmpeg="Support video recording via FFmpeg"
export XDG_DATA_DIRS=$DESTDIR/usr/share
post_patch() {
vsed -i src/arch/gtk3/data/unix/Makefile.in \
-e 's/\$(XDG_DESKTOP_MENU) install/$(XDG_DESKTOP_MENU) install --mode system/'
}
pre_install() {
# required for xdg-desktop-menu to work
vmkdir usr/share/applications
vmkdir usr/share/desktop-directories
}
-
(2). 「strongswan」
$ cat srcpkgs/strongswan/template
# Template file for 'strongswan'
pkgname=strongswan
version=6.0.2
revision=1
build_style=gnu-configure
# tpm support waits on libtss2
configure_args="--disable-static --enable-blowfish --enable-curl --enable-md4
--enable-eap-radius --enable-eap-mschapv2 --enable-eap-md5
--enable-eap-identity --enable-eap-dynamic --enable-led --enable-ha --enable-dhcp
--enable-mediation --disable-soup --enable-chapoly --enable-nm --enable-stroke
--enable-pkcs11 --with-capabilities=libcap"
hostmakedepends="pkg-config automake flex bison python3"
makedepends="libldns-devel unbound-devel libcurl-devel
NetworkManager-devel openssl-devel libcap-devel"
depends="iproute2 sqlite"
checkdepends="iana-etc"
conf_files="/etc/strongswan.conf /etc/strongswan.d/*.conf /etc/strongswan.d/charon/*.conf
/etc/swanctl/swanctl.conf"
short_desc="IPsec-based VPN solution, supporting IKEv1/IKEv2 and MOBIKE"
maintainer="Toyam Cox <Vaelatern@voidlinux.org>"
license="GPL-2.0-or-later"
homepage="https://www.strongswan.org/"
changelog="https://raw.githubusercontent.com/strongswan/strongswan/master/NEWS"
distfiles="https://download.strongswan.org/strongswan-${version}.tar.bz2"
checksum=b8bfc897b84001fd810a281918d6c9ce37503cae0f41b39c43d4aba0201277cf
make_dirs="/etc/swanctl/conf.d 0755 root root
/etc/swanctl/x509 0755 root root
/etc/swanctl/x509ca 0755 root root
/etc/swanctl/x509aa 0755 root root
/etc/swanctl/x509ocsp 0755 root root
/etc/swanctl/x509crl 0755 root root
/etc/swanctl/x509ac 0755 root root
/etc/swanctl/rsa 0750 root root
/etc/swanctl/ecdsa 0750 root root
/etc/swanctl/pkcs8 0750 root root
/etc/swanctl/pkcs12 0750 root root
/etc/swanctl/private 0750 root root
/etc/swanctl/pubkey 0755 root root"
post_install() {
vsv strongswan
}
-
(3). 「xterm」
$ cat srcpkgs/xterm/template
# Template file for 'xterm'
pkgname=xterm
version=402
revision=1
build_style=gnu-configure
configure_args="--enable-wide-chars --enable-88-color --enable-broken-osc
--enable-256-color --enable-luit --enable-paste64 --enable-ansi-color
--enable-mini-luit --enable-readline-mouse --enable-broken-st
--enable-narrowproto --libdir=/etc --enable-load-vt-fonts
--with-app-defaults=/usr/share/X11/app-defaults --enable-i18n
--disable-full-tgetent --disable-imake --enable-doublechars
--enable-freetype --enable-tcap-query --enable-logging --enable-dabbrev
--with-pkg-config=yes --enable-exec-xterm --with-utempter
--with-xterm-kbs=DEL --enable-backarrow-is-erase --enable-sixel-graphics"
hostmakedepends="pkg-config"
makedepends="libXaw-devel libXft-devel libutempter-devel libxkbfile-devel
ncurses-devel"
short_desc="X Terminal Emulator"
maintainer="Leah Neukirchen <leah@vuxu.org>"
license="MIT, X11"
homepage="https://invisible-island.net/xterm/"
changelog="https://invisible-island.net/xterm/xterm.log.html"
distfiles="https://invisible-mirror.net/archives/xterm/xterm-${version}.tgz"
checksum=5260c5793cd564c69e53ef6f528c00af066ae67b42d02137fb7ef8fafe70bb7a
CFLAGS="-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=700"
post_install() {
for f in {u,}xterm.desktop; do
vinstall $f 644 usr/share/applications
done
vlicense COPYING
}
-
2). 「build_style=meson」
-
(1). 「yaru」
$ cat srcpkgs/yaru/template
# Template file for 'yaru'
pkgname=yaru
version=25.10.1
revision=1
build_style=meson
configure_args="-Dxfwm4=true"
hostmakedepends="glib-devel sassc pkg-config inkscape"
makedepends="gtk+3-devel libglib-devel"
short_desc="Default Ubuntu 18.10+ theme"
maintainer="mobinmob <mobinmob@disroot.org>"
license="GPL-3.0-or-later, CC-BY-SA-4.0"
homepage="https://github.com/ubuntu/yaru"
changelog="https://raw.githubusercontent.com/ubuntu/yaru/master/debian/changelog"
distfiles="https://github.com/ubuntu/yaru/archive/$version.tar.gz"
checksum=e718058726fc0b5f2dc10de6142ea86c57ca46072c1fe59c8699d8b3dd7316b5
-
$ cat srcpkgs/zim-tools/template
# Template file for 'zim-tools'
pkgname=zim-tools
version=3.5.0
revision=1
build_style=meson
hostmakedepends="pkg-config"
makedepends="libzim-devel xapian-core-devel icu-devel
gumbo-parser-devel docopt.cpp-devel file-devel Mustache zlib-devel"
checkdepends="gtest-devel"
short_desc="Various ZIM command line tools"
maintainer="John <me@johnnynator.dev>"
license="GPL-3.0-or-later"
homepage="http://www.openzim.org"
changelog="https://raw.githubusercontent.com/openzim/zim-tools/main/ChangeLog"
distfiles="https://github.com/openzim/zim-tools/archive/refs/tags/${version}.tar.gz"
checksum=43c9049e61165c63a763fbad72ef758051dcad24f84ae1ab2876e9520c753f03
make_check=no # Tests are broken upstream, see https://github.com/openzim/zim-tools/issues/345
libzim-tools_package() {
metapackage=yes
short_desc+=" - transitional dummy package"
depends="${sourcepkg}>=${version}_${revision}"
}
zimwriterfs_package() {
metapackage=yes
short_desc+=" - transitional dummy package"
depends="${sourcepkg}>=${version}_${revision}"
}
-
(3). 「xfce4-terminal」
$ cat srcpkgs/xfce4-terminal/template
# Template file for 'xfce4-terminal'
pkgname=xfce4-terminal
version=1.1.5
revision=1
build_style=meson
hostmakedepends="gettext pkg-config libxslt glib-devel docbook-xsl"
makedepends="exo-devel vte3-devel gtk-layer-shell-devel libglib-devel gtk+3-devel
pcre2-devel libxfce4ui-devel libxfce4util-devel xfconf-devel libX11-devel"
depends="desktop-file-utils hicolor-icon-theme gsettings-desktop-schemas"
short_desc="Modern terminal emulator primarly for the Xfce desktop environment"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-2.0-or-later"
homepage="https://docs.xfce.org/apps/xfce4-terminal/start"
changelog="https://gitlab.xfce.org/apps/xfce4-terminal/-/raw/master/NEWS"
distfiles="https://archive.xfce.org/src/apps/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
checksum=3c5b1d3a01a9a113852ac0f77d1c85bf3a356b43de33ec805b21ceca7d6f0a63
-
3). 「build_style=cmake」
-
(1). 「rpi-imager」
$ cat srcpkgs/rpi-imager/template
# Template file for 'rpi-imager'
pkgname=rpi-imager
version=1.8.5
revision=1
build_wrksrc=src
build_style=cmake
configure_args="-DENABLE_TELEMETRY=OFF -DENABLE_CHECK_VERSION=OFF"
hostmakedepends="qt5-host-tools qt5-qmake"
makedepends="qt5-devel qt5-declarative-devel qt5-svg-devel qt5-tools-devel
libcurl-devel libarchive-devel gnutls-devel"
depends="qt5-quickcontrols2 qt5-svg util-linux"
short_desc="Raspberry Pi Imaging Utility"
maintainer="Adam Gausmann <adam@gaussian.dev>"
license="Apache-2.0"
homepage="https://github.com/raspberrypi/rpi-imager"
distfiles="https://github.com/raspberrypi/rpi-imager/archive/v${version}.tar.gz"
checksum=443e2ca2132067cc67038c82d890f70fd744da2503588852f014435dd11fb786
pre_configure() {
ln -sf /bin/true $XBPS_WRAPPERDIR/lsblk
}
-
(2). 「texworks」
$ cat srcpkgs/texworks/template
# Template file for 'texworks'
pkgname=texworks
version=0.6.6
revision=4
build_style=cmake
configure_args="-DTW_BUILD_ID=Void -DWITH_LUA=ON -DWITH_PYTHON=ON
-DDESIRED_QT_VERSION:STRING=5"
hostmakedepends="pkg-config qt5-qmake qt5-host-tools"
makedepends="lua53-devel python3-devel qt5-tools-devel qt5-script-devel
qt5-declarative-devel poppler-qt5-devel hunspell-devel"
depends="hunspell dejavu-fonts-ttf"
short_desc="TeX editor"
maintainer="Bosco <jboscogg@gmail.com>"
license="GPL-2.0-or-later"
homepage="https://www.tug.org/texworks"
distfiles="https://github.com/texworks/texworks/archive/release-${version}.tar.gz"
checksum=c0742fd76de0cacdd52bbf406788a4fe30ee281df2cf085531d98ee4b7f9b72f
# Tests require xserver
make_check=no
-
(3). 「wsjtx」
$ cat srcpkgs/wsjtx/template
# Template file for 'wsjtx'
pkgname=wsjtx
version=2.7.0
revision=3
build_wrksrc=wsjtx
build_style=cmake
configure_args="-DRIGCTLCOM_EXE= -DRIGCTL_EXE= -DRIGCTLD_EXE=
-DBoost_INCLUDE_DIR=${XBPS_CROSS_BASE}/usr/include"
hostmakedepends="pkg-config gcc-fortran ruby-asciidoctor asciidoc qt5-qmake
qt5-host-tools"
makedepends="boost-devel-minimal libboost_log_setup libboost_log
libboost_filesystem libboost_thread
fftw-devel libgomp-devel hamlib-devel libusb-devel qt5-devel
qt5-multimedia-devel qt5-tools-devel qt5-serialport-devel qt5-plugin-mysql
qt5-plugin-odbc qt5-plugin-pgsql qt5-plugin-sqlite qt5-plugin-tds"
depends="qt5-plugin-sqlite"
short_desc="Weak-signal Amateur Radio communication program"
maintainer="classabbyamp <void@placeviolette.net>"
license="GPL-3.0-or-later"
homepage="https://wsjt.sourceforge.io/wsjtx.html"
changelog="https://wsjt.sourceforge.io/Release_Notes.txt"
distfiles="${SOURCEFORGE_SITE}/wsjt/wsjtx-${version}/wsjtx-${version}.tgz"
checksum=3788f5df636af792514609ec2b4abe58477aa5f0ad32cb826424866fc21cec93
post_extract() {
bsdtar xf src/wsjtx.tgz
sed -i 's/ -Werror / /' wsjtx/CMakeLists.txt
}
post_install() {
rm ${DESTDIR}/usr/share/man/man1/rigctl{,d,com}-wsjtx.1.gz
}
-
(4). 「xpdf」
$ cat srcpkgs/xpdf/template
# Template file for 'xpdf'
pkgname=xpdf
version=4.05
revision=2
build_style=cmake
configure_args="-DSYSTEM_XPDFRC=/etc/xpdfrc"
conf_files="/etc/xpdfrc"
hostmakedepends="qt5-host-tools qt5-qmake"
makedepends="freetype-devel qt5-devel libpaper-devel zlib-devel libpng-devel cups-devel"
depends="gsfonts qt5-svg"
short_desc="Viewer for Portable Document Format (PDF) files"
maintainer="Leah Neukirchen <leah@vuxu.org>"
license="GPL-2.0-or-later, GPL-3.0-or-later"
homepage="http://www.xpdfreader.com/"
distfiles="https://dl.xpdfreader.com/xpdf-${version}.tar.gz"
checksum=92707ed5acb6584fbd73f34091fda91365654ded1f31ba72f0970022cf2a5cea
-
4). 「build_style=qmake」
-
(1). 「wkhtmltopdf」
$ cat srcpkgs/wkhtmltopdf/template
# Template file for 'wkhtmltopdf'
pkgname=wkhtmltopdf
version=0.12.6
revision=1
build_style=qmake
hostmakedepends="qt5-qmake qt5-host-tools"
configure_args="INSTALLBASE=/usr"
makedepends="qt5-xmlpatterns-devel qt5-svg-devel qt5-webkit-devel"
depends="qt5-svg"
short_desc="Convert HTML to PDF using Webkit"
maintainer="Piraty <mail@piraty.dev>"
license="LGPL-3.0-or-later"
homepage="https://wkhtmltopdf.org"
distfiles="https://github.com/wkhtmltopdf/wkhtmltopdf/archive/${version}.tar.gz"
checksum=adcced78492e7366d940c66a1327a85d3ae8c45190f486f545fdaa84cac662f0
libwkhtmltopdf_package() {
short_desc+=" - runtime library"
pkg_install() {
vmove "usr/lib/*.so.*"
}
}
wkhtmltopdf-devel_package() {
short_desc+=" - development files"
depends="${sourcepkg}>=${version}_${revision}"
pkg_install() {
vmove usr/include
vmove usr/lib/*.so
}
}
-
(2). 「zrandr」
$ cat srcpkgs/zrandr/template
# Template file for 'zrandr'
pkgname=zrandr
version=0.3.2
revision=1
build_style=qmake
hostmakedepends="qt5-qmake qt5-host-tools"
makedepends="qt5-devel"
depends="desktop-file-utils hicolor-icon-theme xrandr"
short_desc="Simple Qt5 front end for xrandr"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-3.0-only"
homepage="https://github.com/fralonra/zrandr"
distfiles="https://github.com/fralonra/zrandr/archive/v${version}.tar.gz"
checksum=04ba7dabbec63f3946ee4e1c8970f90a731928017d930c39ad21119775061a51
pre_configure() {
lrelease -verbose zrandr.pro
}
do_install() {
vbin zrandr
vinstall build/zrandr.desktop 644 usr/share/applications
for _i in 16 64 128 256; do
vinstall build/icons/zrandr-${_i}x${_i}.png 644 usr/share/icons/hicolor/${_i}x${_i}/apps zrandr.png
done
for prog in zrandr; do
vinstall build/icons/${prog}.svg 644 usr/share/icons/hicolor/scalable/apps ${prog}.svg
done
}
-
(3). 「qxmledit」
$ cat srcpkgs/qxmledit/template
# Template file for 'qxmledit'
pkgname=qxmledit
version=0.9.18
revision=1
build_style=qmake
configure_args="QXMLEDIT_INST_DATA_DIR=/usr/share/qxmledit
QXMLEDIT_INST_DIR=/usr/bin
QXMLEDIT_INST_DOC_DIR=/usr/share/doc/qxmledit
QXMLEDIT_INST_LIB_DIR=/usr/lib
QXMLEDIT_INST_TRANSLATIONS_DIR=/usr/share/qxmledit/translations
QXMLEDIT_INST_INCLUDE_DIR=/usr/include/qxmledit"
hostmakedepends="qt5-qmake qt5-host-tools"
makedepends="glu-devel qt5-devel qt5-declarative-devel qt5-scxml-devel
qt5-script-devel qt5-svg-devel qt5-xmlpatterns-devel"
short_desc="Simple XML Editor"
maintainer="newbluemoon <blaumolch@mailbox.org>"
license="LGPL-2.0-or-later, Zlib"
homepage="https://qxmledit.org/"
distfiles="https://github.com/lbellonda/qxmledit/archive/${version}.tar.gz"
checksum=6966c286b71239304c5038b419ae67dd2492c235c024186e7dd581fef1dad29f
post_install() {
vlicense external/qwtplot3d/license.txt
vinstall install_scripts/environment/desktop/QXmlEdit.appdata.xml 644 usr/share/appdata/
vinstall install_scripts/environment/desktop/QXmlEdit.desktop 644 usr/share/applications/
vinstall src/images/icon.svg 644 usr/share/pixmaps qxmledit.svg
vman install_scripts/environment/man/qxmledit.1
}
qxmledit-devel_package() {
short_desc+=" - development files"
depends="${sourcepkg}>=${version}_${revision}"
pkg_install() {
vmove usr/include
vmove "usr/lib/*.so"
}
}
-
(4). 「wpa-cute」
$ cat srcpkgs/wpa-cute/template
# Template file for 'wpa-cute'
pkgname=wpa-cute
version=0.8.6
revision=1
build_wrksrc="src"
build_style=qmake
hostmakedepends="qt5-host-tools qt5-qmake"
makedepends="qt5-devel qt5-svg-devel"
depends="wpa_supplicant qt5-svg"
short_desc="Graphical wpa_supplicant front end"
maintainer="Duncaen <duncaen@voidlinux.org>"
license="BSD-3-Clause"
homepage="https://github.com/loh-tar/wpa-cute"
distfiles="https://github.com/loh-tar/wpa-cute/archive/v${version}.tar.gz"
checksum=475ed1899ab76cf8478d057130e6f4766bc30e318631511a14ca8f3df0cf88e8
do_install() {
vbin wpa-cute
vman "${wrksrc}/doc/wpa-cute.8"
vinstall icons/wpa_gui.svg 644 /usr/share/pixmaps
vinstall wpa-cute.desktop 644 /usr/share/applications
vlicense "${wrksrc}/COPYING"
}
-
-
5). 「qtchooser」について調べてみる:
-
「qtchooser」が含まれるテンプレートを検索:
$ sudo grep -ril "qtchooser" srcpkgs/
:
srcpkgs/qt5/template
srcpkgs/qtchooser/template
srcpkgs/qtcreator/template
-
(1). 「qt5」
$ cat srcpkgs/qt5/template
→参考にするには、デカすぎ:
$ head srcpkgs/qt5/template -n 20
# Template file for 'qt5'
#
# revbump libqtxdg after bumping patch version
pkgname=qt5
version=5.15.11+20231124
revision=5
# commit 4765fa1df7a837db9c1f89c4da0dd76b74bb5fab
# base repo: https://invent.kde.org/qt/qt/qt5
metapackage=yes
hostmakedepends="cmake clang17 flex perl glib-devel pkg-config
python3 re2c ruby which"
makedepends="clang17-devel SDL2-devel Vulkan-Headers alsa-lib-devel double-conversion-devel
eudev-libudev-devel ffmpeg6-devel freetds-devel glib-devel gst-plugins-base1-devel
gtk+3-devel icu-devel libXv-devel libbluetooth-devel libcap-devel
libinput-devel libmng-devel libmariadbclient-devel libproxy-devel
libvpx-devel libwebp-devel libxkbcommon-devel
libxslt-devel libxml2-devel cups-devel minizip-devel
opus-devel pciutils-devel pcre2-devel postgresql-libs-devel
protobuf-devel pulseaudio-devel tslib-devel openssl-devel
unixodbc-devel xcb-util-image-devel xcb-util-keysyms-devel
[user@user-pc void-packages]$
-
(2). 「qtchooser」
$ cat srcpkgs/qtchooser/template
# Template file for 'qtchooser'
pkgname=qtchooser
reverts=20150315_2
version=66
revision=3
build_style=gnu-makefile
make_install_args="INSTALL_ROOT=\${DESTDIR}"
short_desc="Qt4/Qt5 version chooser"
maintainer="Orphaned <orphan@voidlinux.org>"
license="LGPL-2.1-only, GPL-3.0-only"
homepage="https://www.qt.io/"
distfiles="https://download.qt.io/official_releases/qtchooser/qtchooser-${version}.tar.xz"
checksum=b22c21df135d48fc775d26d771170c2c70555704d4625605383be2cd149c7cea
CXXFLAGS=" -D_LARGE_FILE_SOURCE=1 -D_FILE_OFFSET_BITS=64"
# XBPS_DISTFILES_MIRROR+=" https://master.qt.io/official_releases/qtchooser"
do_build() {
make LFLAGS="$LDFLAGS"
}
do_check() {
# uses qmake managed by qtchooser: dependency loop
:
}
post_install() {
vmkdir etc/xdg/qtchooser
vinstall ${FILESDIR}/4.conf 644 etc/xdg/qtchooser
vinstall ${FILESDIR}/5.conf 644 etc/xdg/qtchooser
ln -sf 5.conf ${DESTDIR}/etc/xdg/qtchooser/default.conf
}
-
(3). 「qtcreator」
$ cat srcpkgs/qtcreator/template
# Template file for 'qtcreator'
pkgname=qtcreator
version=15.0.0
revision=2
build_style=cmake
configure_args="$(vopt_bool qbs BUILD_QBS) -DWITH_DOCS=ON -DBUILD_WITH_PCH=OFF"
hostmakedepends="clang llvm perl pkg-config python3 which
qt6-base qt6-tools qtchooser qt6-shadertools qt6-declarative-host-tools"
makedepends="qt6-declarative-private-devel qt6-base-private-devel
qt6-quick3d-private-devel qt6-svg-devel qt6-plugin-odbc qt6-plugin-sqlite
qt6-plugin-pgsql qt6-plugin-mysql qt6-qt5compat-devel libsecret-devel
qt6-serialport-devel qt6-shadertools-devel qt6-charts-private-devel
qt6-tools-private-devel clang llvm clang-tools-extra"
depends="qt6-plugin-sqlite mesa-dri"
short_desc="Cross-platform IDE for Qt developers"
maintainer="Piotr Wójcik <chocimier@tlen.pl>"
license="LGPL-3.0-or-later, custom:QtCompany-GPL-Exception-1.0"
homepage="https://wiki.qt.io/Category:Tools::QtCreator"
changelog="https://code.qt.io/cgit/qt-creator/qt-creator.git/plain/dist/changelog/changes-${version}.md"
distfiles="https://download.qt.io/official_releases/qtcreator/${version%.*}/${version}/qt-creator-opensource-src-${version}.tar.xz"
checksum=23b1c6b478ca760997ecddd4c728f0da280b0696008a9bddd9a1068f16d48f72
replaces="qtcreator-data>=0"
python_version=3
build_options="qbs"
desc_option_qbs="Build vendored Qbs"
if [ -z "$CROSS_BUILD" ] && [ "$XBPS_TARGET_WORDSIZE" != 32 ]; then
makedepends+=" qt6-tools-private-devel python3-BeautifulSoup4 python3-lxml
qt6-base-doc"
build_options_default="qbs"
fi
if [ "$XBPS_WORDSIZE$XBPS_WORDSIZE" = "64$XBPS_TARGET_WORDSIZE" ]; then
makedepends+=" qt6-webengine-devel"
fi
# broken="with Qt6-6.7.2"
post_install() {
# Install the license with the annotation for
# the Qt Company GPL Exception 1.0
vlicense LICENSE.GPL3-EXCEPT
}
qtcreator-full_package() {
short_desc+=" - full Qt5 dependencies (transitional dummy package)"
depends="qtcreator-qt5>=${version}_${revision}"
metapackage=yes
}
qtcreator-qt5_package() {
short_desc+=" - full Qt5 dependencies"
depends="${sourcepkg}>=${version}_${revision} base-devel
qt5-3d-devel qt5-charts-devel qt5-connectivity-devel qt5-datavis3d-devel
qt5-declarative-devel qt5-gamepad-devel qt5-location-devel qt5-lottie-devel
qt5-multimedia-devel qt5-networkauth-devel qt5-purchasing-devel qt5-quickcontrols
qt5-quickcontrols2-devel qt5-remoteobjects-devel qt5-script-devel qt5-scxml-devel
qt5-sensors-devel qt5-serialbus-devel qt5-serialport-devel
qt5-speech-devel qt5-styleplugins-devel qt5-svg-devel
qt5-tools-devel qt5-virtualkeyboard-devel qt5-wayland-devel qt5-webchannel-devel
qt5-webglplugin-devel qt5-webkit-devel qt5-websockets-devel qt5-webview-devel
qt5-x11extras-devel qt5-xmlpatterns-devel qt5-host-tools qt5-doc
qt5-examples qt5-imageformats qt5-graphicaleffects qt5-translations
qt5-plugin-mysql qt5-plugin-odbc qt5-plugin-pgsql qt5-plugin-sqlite qt5-plugin-tds"
# Not for big endian targets and not if word sizes of host and target differ
if [ "$XBPS_TARGET_ENDIAN" = "le" -a "$XBPS_TARGET_WORDSIZE" = "$XBPS_WORDSIZE" ]; then
# qt5-webengine cannot be built for armv5tel
case "$XBPS_TARGET_MACHINE" in
armv5tel*) ;;
*) depends+=" qt5-webengine-devel" ;;
esac
fi
metapackage=yes
}
qtcreator-qt6_package() {
short_desc+=" - full Qt6 dependencies"
depends="${sourcepkg}>=${version}_${revision} base-devel
qt6-3d-devel qt6-charts-devel qt6-concurrent qt6-connectivity-devel
qt6-declarative-devel qt6-location-devel qt6-lottie-devel qt6-multimedia-devel
qt6-networkauth-devel qt6-qt5compat-devel qt6-remoteobjects-devel qt6-scxml-devel
qt6-sensors-devel qt6-serialport-devel qt6-shadertools-devel qt6-svg-devel
qt6-tools-devel qt6-virtualkeyboard-devel qt6-wayland-devel qt6-webchannel-devel
qt6-websockets-devel qt6-tools qt6-designer qt6-imageformats qt6-translations
qt6-plugin-mysql qt6-plugin-odbc qt6-plugin-pgsql qt6-plugin-sqlite qt6-base-doc"
# Not for big endian targets and not if word sizes of host and target differ
if [ "$XBPS_TARGET_ENDIAN" = "le" -a "$XBPS_TARGET_WORDSIZE" = "$XBPS_WORDSIZE" ]; then
if [ "$XBPS_TARGET_WORDSIZE" != 32 ]; then
depends+=" qt6-webengine-devel"
fi
fi
metapackage=yes
}
-
-
まとめ
今回は、「Void Linux」に、アプリの移植(ソースのダウンロード、ビルド、パッケージ化する)作業を半自動化して楽にする、「xbps-src」のビルド環境をセットアップしました:
-
「面倒なビルド作業が楽」、「すぐにクリーンできる」ことで、アプリで気になるところがあれば、ソースを修正してみようかなと思わせる、それに集中できる、気軽な「環境」を提供してくれるのが「xbps-src」だと思います。
「xbps-src」のビルド環境を使えるだけで、「Void Linux」を選ぶ価値はありそう:
-
「仮想マシン」を使う利点は、クローンが使えるので「環境をすぐに元に戻せる」ことがありますが、
「./xbps-src clean [パッケージ名]」が使えるので、クローンで戻すことはありませんでした。
-
もうひとつの利点は、「仮想マシン」であれば、「musl」と「GNU libc」の両方の「仮想マシン」を作成できるので、すぐに比較できることです:
アプリの速度の比較もですが、「xbps-src」を使ってのアプリの移植がどうなるか、楽しめそう。そして勉強になります。
同じアプリを移植してみれば、どちらにするか悩んでいるときの参考になります。
それだけでなく、まず、「GNU libc」で動くテンプレートを作成して、次に「musl」で動くテンプレートに修正するというやり方をすれば、移植作業がやりやすくなると思います。
-
-
もし、移植した成果を「xbps-src」のリポジトリ等にアップしたい場合は:
「アプリ」のソースの修正があれば(移植でなく改変になるので)削除してアップします:
通常、「アプリ」のソースの修正(改変)を上げるときは、アプリの本家に「プルリクエスト」します:
-
-
-
-
目次
-
「投稿の先頭 へ」
-
-
-
「この目次 の先頭へ」
「本編の目次 に戻る」
-