メモ: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