メモ:Manjaro Linux 18.1.0でmesaにパッチを当ててビルド
SVNからPKGBUILD
をチェックアウト
Arch wikiの手順に従う。ちなみに、「pacman source download」とかで検索すると「asp
を使え」というのが出てくるけど、これはManjaroがパッケージのビルドに使っているツール群と違うのでManjaroでは使えない。のでSVN(か素のgit)に頼るしかない。
svn checkout --depth=empty svn://svn.archlinux.org/packages cd packages/ # リビジョンは https://www.archlinux.org/packages/extra/x86_64/mesa/ の右上の「View Changes」あたりから19.1.5-1のものを探し出す svn update -r361190 mesa
とりあえずビルド
makepkg
に-s
をつけるとビルドに必要なパッケージをインストールしてくれる。
cd mesa/trunk makepkg -s
しかし、こんな感じのエラーになる。
==> ソースを取得... -> ダウンロード mesa-19.1.5.tar.xz... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 10.4M 100 10.4M 0 0 535k 0 0:00:19 0:00:19 --:--:-- 854k -> ダウンロード mesa-19.1.5.tar.xz.sig... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 566 100 566 0 0 743 0 --:--:-- --:--:-- --:--:-- 742 -> LICENSE を見つけました -> glesv2.pc を見つけました ==> source で sha512sums ファイルを検証... mesa-19.1.5.tar.xz ... 成功 mesa-19.1.5.tar.xz.sig ... スキップ LICENSE ... 成功 glesv2.pc ... 成功 ==> gpg でソースファイルの署名を検証... mesa-19.1.5.tar.xz ... 失敗 (不明な公開鍵 AB665AA9EE273E73) ==> エラー: PGP 鍵を検証できませんでした!
とりあえずこの鍵をimportするとビルドできるようにはなる。
gpg --keyserver pgp.mit.edu --recv-keys AB665AA9EE273E73 makepkg
patchを作成
まずパッチをつくる。ここではHD
という文字列をUHDに置き換えたいのでsedでそういうやつをつくる。
sed '/Comet Lake/s/HD/UHD/' src/mesa-19.1.5/include/pci_ids/i965_pci_ids.h > src/mesa-19.1.5/include/pci_ids/i965_pci_ids.h.new cd src/ diff -Nuar mesa-19.1.5/include/pci_ids/i965_pci_ids.h{,.new} > ../pci_ids.patch cd -
sha512sum
を取る
$ sha512sum pci_ids.patch 0e8dfd9bf3b38944ac61ed7f7d81952eb4cc4c12747d96034b1c00ada81b9f0c7cf9a56c6e659eafcc33461c8972a6010a7d4c3d95439b922ad1ac09a1148bb6 pci_ids.patch
PKGBUILD
を編集
revisionを上げる
ここの数字を1つ大きくしておく
pkgrel=2
sourceにpatchファイルを追加
ここに追加。
source=(https://mesa.freedesktop.org/archive/mesa-${pkgver}.tar.xz{,.sig} LICENSE glesv2.pc pci_ids.patch)
sha512sumを追加
ここに追加
sha512sums=('4d4b3733c13e5c9b3172127f2565b827dc46aab69bdc86791c457ad137a5571c51e3c3a26d5a99e11fe552829a1220028a3968f3086959e038c615f2d75675a4' 'SKIP' 'f9f0d0ccf166fe6cb684478b6f1e1ab1f2850431c06aa041738563eb1808a004e52cdec823c103c9e180f03ffc083e95974d291353f0220fe52ae6d4897fecc7' 'e5db81538625a056328c2ba83f3e6418e0d579c261bcddf685036ad19e816dd002313c80a6c48cef0289d1e1b0bdbe733810ae9f53604e380486253642cff52c' '0e8dfd9bf3b38944ac61ed7f7d81952eb4cc4c12747d96034b1c00ada81b9f0c7cf9a56c6e659eafcc33461c8972a6010a7d4c3d95439b922ad1ac09a1148bb6')
prepare()
を追加
ここでパッチを当てる
prepare() { cd mesa-$pkgver patch -Np1 -i ${srcdir}/pci_ids.patch }
ビルド
ビルドする。
makepkg
インストール
$ sudo pacman -U ./mesa-19.1.5-2-x86_64.pkg.tar.xz