「Makepkg-optimize」の版間の差分
(同期) |
(→chroot を使う: 同期) |
||
| (同じ利用者による、間の6版が非表示) | |||
| 2行目: | 2行目: | ||
[[Category:パッケージ管理]] |
[[Category:パッケージ管理]] |
||
[[en:Makepkg-optimize]] |
[[en:Makepkg-optimize]] |
||
| + | [[ru:Makepkg-optimize]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|DeveloperWiki:クリーンな chroot 内でビルドする}} |
{{Related|DeveloperWiki:クリーンな chroot 内でビルドする}} |
||
| 39行目: | 40行目: | ||
=== Chroot の設定 === |
=== Chroot の設定 === |
||
| − | [[ |
+ | [[DeveloperWiki:クリーンな chroot でビルドする#古典的な方法|chroot をセットアップ]]した後、設定が必要です。 |
==== makepkg-optimize とバックエンドのインストール ==== |
==== makepkg-optimize とバックエンドのインストール ==== |
||
| 47行目: | 48行目: | ||
$ arch-nspawn "$CHROOT"/root pacman -S openmp upx optipng polly |
$ arch-nspawn "$CHROOT"/root pacman -S openmp upx optipng polly |
||
| − | それから {{AUR|makepkg-optimize}} と {{AUR|svgo}} を[[Arch User Repository#ビルドファイルを獲得|ダウンロード]]・[[ |
+ | それから {{AUR|makepkg-optimize}} と {{AUR|svgo}} を[[Arch User Repository#ビルドファイルを獲得|ダウンロード]]・[[DeveloperWiki:クリーンな chroot でビルドする#chroot でのビルド|ビルド]]してください。 |
chroot でインストールするには、以下のようにパッケージファイルをコピーしてインストールします: |
chroot でインストールするには、以下のようにパッケージファイルをコピーしてインストールします: |
||
| 56行目: | 57行目: | ||
=== chroot を使う === |
=== chroot を使う === |
||
| − | |||
| − | {{Note|chroot を [[en2:DeveloperWiki:Building in a clean chroot#Building in the chroot|アップデート]] するとき、[[#makepkg-optimize とバックエンドのインストール|AUR パッケージ]]は手動で更新が必要です。}} |
||
==== パッケージのビルド ==== |
==== パッケージのビルド ==== |
||
| − | まず、{{ic|$CHROOT/root/etc/makepkg-optimize.conf}} を編集して[[#設定|最適化を選択]]してください。 |
+ | まず、{{ic|$CHROOT/root/etc/makepkg-optimize.conf}} を編集して[[makepkg-optimize#設定|好みの最適化を選択]]してください。 |
| − | [[ |
+ | [[DeveloperWiki:クリーンな chroot でビルドする#chroot でのビルド|ビルド]]するときに、{{ic|makepkg}} に設定ファイルを指定してください: |
$ makechrootpkg -c -r "$CHROOT" -- -c --config /etc/makepkg-optimize.conf |
$ makechrootpkg -c -r "$CHROOT" -- -c --config /etc/makepkg-optimize.conf |
||
===== PGO でビルド ===== |
===== PGO でビルド ===== |
||
| + | |||
| + | {{ic|BUILDENV}} の {{ic|pgo}} オプションは、パッケージのビルド時にこのフラグが有効になっているかどうかによって、プロファイルの ''生成'' または ''適用'' のどちらかを行います。 |
||
| + | クリーンな chroot ビルドでは、プロファイル生成時にはソフトウェアが chroot の外で実行される一方で、再コンパイル時にはプロファイルを chroot 内から適用する必要があるため、これが複雑になります。 |
||
| + | この問題を解決する方法は、バインドマウントされたフォルダーを使って、3つのファイルシステム間を橋渡しすることです。 |
||
====== PGO キャッシュの作成 ====== |
====== PGO キャッシュの作成 ====== |
||
| − | + | プロファイルデータを保存するフォルダーを作成してバインドします [https://gcc.gnu.org/onlinedocs/gcc/Gcov-Data-Files.html profiles]: |
|
# mkdir -m 777 {"$CHROOT"/{root,"$USER"},}/mnt/pgo |
# mkdir -m 777 {"$CHROOT"/{root,"$USER"},}/mnt/pgo |
||
| 77行目: | 80行目: | ||
# mount -o bind "$CHROOT"/{root,"$USER"}/mnt/pgo |
# mount -o bind "$CHROOT"/{root,"$USER"}/mnt/pgo |
||
| − | {{Tip| |
+ | {{Tip|起動時にこれらのフォルダーを自動的にバインドするには、[[fstab]] を使います。[https://serverfault.com/a/613184 bind] の設定例: |
| + | #PGODEST |
||
| + | /full/path/to/$CHROOT/$USER/mnt/pgo/ /mnt/pgo/ none bind,x-gvfs-hide 0 0 |
||
| + | /mnt/pgo/ /full/path/to/$CHROOT/root/mnt/pgo/ none bind,x-gvfs-hide 0 0 |
||
| + | |||
| + | {{Note|chroot 内の pgo ディレクトリへのパスは、$VARIABLES を使わずにフルパスで記述してください。}} }} |
||
| − | + | {{ic|$CHROOT/root/etc/makepkg-optimize.conf}} を編集し、{{ic|1=PROFDEST=/mnt/pgo}} を設定します。 |
|
====== プログラムのプロファイル ====== |
====== プログラムのプロファイル ====== |
||
2025年4月28日 (月) 14:48時点における最新版
makepkg-optimizeAUR は pacman を補助する tidy、buildenv と executable スクリプト集です。build() と package() で最適化をかけるマクロを提供します。
目次
インストール
makepkg-optimizeAUR をインストールしてください。また、最適化を行うためにバックエンドをインストールしてください: openmp, upx, optipng, svgoAUR, polly
設定
makepkg-optimizeAUR は現在の makepkg の設定から /etc/makepkg-optimize.conf という名前の 設定ファイル を生成します。
このファイルにはコンパイルフラグ, ビルド環境, パッケージオプション, パッケージ出力, 圧縮デフォルト の追加オプションが記載されています。デフォルトでは全て無効となっています。
最適化されたパッケージのビルド
最適化の設定を行ったら、ビルドするときに設定ファイルを指定してください:
$ makepkg -c --config /etc/makepkg-optimize.conf
chroot で最適化されたパッケージのビルド
また、makepkg-optimize を使って chroot の中で最適化済みのパッケージをビルドすることもできます。
Chroot の設定
chroot をセットアップした後、設定が必要です。
makepkg-optimize とバックエンドのインストール
まず、chroot に最適化マクロのバックエンドをインストール:
$ arch-nspawn "$CHROOT"/root pacman -S openmp upx optipng polly
それから makepkg-optimizeAUR と svgoAUR をダウンロード・ビルドしてください。
chroot でインストールするには、以下のようにパッケージファイルをコピーしてインストールします:
# cp svgo-1.2.2-2-any.pkg.tar.xz "$CHROOT"/root/root/ $ arch-nspawn "$CHROOT"/root pacman -U /root/svgo-1.2.2-2-any.pkg.tar.xz
chroot を使う
パッケージのビルド
まず、$CHROOT/root/etc/makepkg-optimize.conf を編集して好みの最適化を選択してください。
ビルドするときに、makepkg に設定ファイルを指定してください:
$ makechrootpkg -c -r "$CHROOT" -- -c --config /etc/makepkg-optimize.conf
PGO でビルド
BUILDENV の pgo オプションは、パッケージのビルド時にこのフラグが有効になっているかどうかによって、プロファイルの 生成 または 適用 のどちらかを行います。
クリーンな chroot ビルドでは、プロファイル生成時にはソフトウェアが chroot の外で実行される一方で、再コンパイル時にはプロファイルを chroot 内から適用する必要があるため、これが複雑になります。
この問題を解決する方法は、バインドマウントされたフォルダーを使って、3つのファイルシステム間を橋渡しすることです。
PGO キャッシュの作成
プロファイルデータを保存するフォルダーを作成してバインドします profiles:
# mkdir -m 777 {"$CHROOT"/{root,"$USER"},}/mnt/pgo
# mount -o bind {,"$CHROOT"/root}/mnt/pgo
# mount -o bind "$CHROOT"/{root,"$USER"}/mnt/pgo
$CHROOT/root/etc/makepkg-optimize.conf を編集し、PROFDEST=/mnt/pgo を設定します。
プログラムのプロファイル
パッケージをビルドして、インストールして、テスト実行してみてください。
ソフトウェアを一通り使ったら、パッケージを再ビルド・再インストールしてください。