gentoo上でfloのandroidカスタムROMをビルドした
特に困ったこともなくgentoo公式レポジトリの範囲でパッケージを追加してrepo syncしてbrunchしておわった
ありがたいー🙏
どうした
よく読む
LineageOS 15.1 のビルド方法 | dev:mordiford
Android ビルドで学ぶ git-repo 入門 | dev:mordiford
追加したパッケージ
☝️の記事を参考にして同じようなパッケージを投入すればいける
頑張ってぐぐって
これらは私がビルドのために追加したパッケージだよ
つまりこれだけ入れれば良い訳ではなく、ましてやこれらが本当に必要かどうかも分からないよ
sudo emerge -av =dev-libs/expat-2.2.5 =dev-java/lzma-9.18 =app-arch/lzma-9.20-r1 =app-arch/lzop-1.04 =sys-apps/texinfo-6.5 =sys-fs/squashfs-tools-4.3-r2 =sys-process/schedtool-1.3.0-r1 =media-gfx/pngcrush-1.8.13 =dev-java/maven-bin-3.3.9 =dev-libs/libxml2-2.9.8 =x11-libs/wxGTK-3.0.4-r300 =media-libs/libsdl-2.0.8-r2 =app-arch/lzip-1.20 =media-gfx/imagemagick-7.0.7.35
ncursesは5が必要かつtinfoのUSE flagを立てる必要があるよ
sudo flaggie --strict '=sys-libs/ncurses-5.9-r101:5' +tinfo sudo emerge '=sys-libs/ncurses-5.9-r101:5'
その他の環境
$ gcc-config -l [1] x86_64-pc-linux-gnu-5.4.0 [2] x86_64-pc-linux-gnu-7.3.0 *
$ eselect java-vm list Available Java Virtual Machines: [1] icedtea-bin-8 system-vm
repoはpython2系でないと動かないので,dev-python/virtualenv
をインストールしてrepo initしたディレクトリでよしなに使う
virtualenvの使い方はarchwikiがえらいよ
. build/envsetup.sh
の様なコマンドを逐一source build/envsetup.sh
に読み替えたりするのが面倒なのでzshを使っている人はbashにした方がよさそう
わたしはしました
あとはぱっとbrunch flo 2>&1 | tee lineage_$(date '+%Y%m%d_%H-%M-%S').log
して待つ
メモリがめがっさ持っていかれるので10Gくらいは余裕を持っていた方がよさげだった
私はswap無しのRAM12GBの環境でホイヤホクスで音楽を聞きながらデスコーヨでチャットしていたらピーク時にどちらもOOMKillerに殺されました…
おわりに
ほたしがえらい
無限に感謝しています
vimで最短マッチさせたい時の文わけわからん
$(DESTDIR)を${DESTDIR}に置換したかったのでぐぐりつつ書いていたらこうなった
s/\$(\(.\{-1,\}\))/\$\{\1\}/gc
多分また知りたくなるのでここにかいておきます
net-dns/https_dns_proxyのserviceファイルを書いた
[Unit] Description=A lightweight DNS-over-HTTPS proxy. Documentation=https://github.com/aarond10/https_dns_proxy After=network.target Before=nss-lookup.target Wants=nss-lookup.target [Service] AmbientCapabilities=CAP_NET_BIND_SERVICE ExecStart=/usr/bin/https_dns_proxy -d -b 1.1.1.1,1.0.0.1 -r "https://1.1.1.1/dns-query?ct=application/dns-json&" -p 5353 LimitNOFILE=1048576 Restart=always RestartSec=3 Type=forking User=nobody Group=nobody [Install] WantedBy=multi-user.target
/etc/systemd/system/あたりに置いて起動してね
待ち受けるポートが5353になっているのでdnsmasqとかを使わない人は53に戻さないのウンともスンとも言わないと思う
dnsmasqとの併用は前に書いた記事を参照してね
DNS over https + dnsmasqする - karubabuの日記
大体はここから拝借しています…
GitHub - m13253/dns-over-https: Client and server software to query DNS over HTTPS
AmbientCapabilitiesめちゃ便利ですごい
gentoo ebuildでzipをソースとする時は解凍ディレクトリに注意して
tar.xzとかと違うのか、ファイル群をworkディレクトリ直下に散乱させるので${S}の指定を間違えない様にしてねということです
なにがあった
適当にebuildを書いたぞ!と実行してみると、ファイルを解凍直後に
/var/tmp/portage/package_name/work/dirname が見付からなかった
的なメッセージと共に失敗する
'S=${WORKDIR}/${P}'
${S}は合っていそうに見える
どうした
SRC_URI
で取得してくるファイルがzipだった場合unpack
関数はunzip
を使用する
通常のtar.xzやなんやらと違うせいなのか、冒頭の通りworkディレクトリ直下にファイル群がばらまかれる
なので'S=${WORKDIR}`に変更する必要がある
おわりに
ログも消えちゃったしねむいしでめちゃ適当になった
後で自分が困らなければ良いのでこれくらい書けば察してくれるでしょう
書ける!ebuild
☝️(´・ω・`)おまさのりさんの無限にえらい記事です 読んでね
gentoo overlayの準備が出来たはずなのに何もひっかかって来ない
laymanの準備とか万全だと思うんだけれどなー!なんでやー!みたいなのを4時間くらいやってしまった
もっと高いバージョンのパッケージが欲しいのだけれど!とかもこれだった
なにがあった
overlay を使用するためにレポジトリ回りの設定やlaymanの設定を終えてもemerge -s の検索に代わり映えがない
めっちゃ古いバージョン(stable)しかひっかかってこない
どうした
ACCEPT_KEYWORDSを変更していないため見えなくなっている
ACCEPT_KEYWORDS - Gentoo Wiki
ここの通りに/etc/portage/make.confを適当に弄る
おわりに
こんなん書いてないやん!ジャッジー!と思っていたら、
Project:Overlays/Old User Guide - Gentoo Wiki
If Portage isn't picking up the package from the overlay, that's normally because the package is marked ~arch, where "arch" is the architecture of your computer. You'll need to keyword the package as explained in the Gentoo Handbook.
と2行くらいでさらっと書いてあった
py3status iw: command failed
use_sudo
が効かない人だった
なにがあった
py3status にあるwifi moduleを使ったらタイトルの様な文字列が赤字で出た
use_sudoを使っても上手いこといかない
どうした
py3status/wifi.py at master · ultrabug/py3status · GitHub
ここの部分の通り、/sbin/iw
を踏みにくるので適当にシンボリックリンクを張る
ln -s /usr/sbin/iw /sbin/iw
私の場合はこんな感じだったと思う
おあいに
lnの引数の順番無限に間違えているきがする
mkinitcpioするとERROR: file not found: `fsck.btrfs' が出るけれど特に問題なく終了する
タイトルの通りで別に放置していても困っていなかった
でも気になるね
なにがあった
mkinitcpioすると(pacmanでlinuxパッケージが落ちてきたりsystemd回りが更新されたりするとこれが始まる)
==> ERROR: file not found: `fsck.btrfs' ==> WARNING: No fsck helpers found. fsck will not be run on boot.
なんてログが流れてくる
でも特に困らないし普通にコマンドも正常終了する
どうした
root パーテションはfsckフックによって起動時にfsckが実行される(このフックは重要で、実行されていないと困った時に泣きを見るらしい archwikiがいってた)
ファイルシステムにbtrfsを使っているだけだとbtrfsに関するゆーてれてコマンドが導入されないので
# pacman -S btrfs-progs
することで解決される
おわりに
困る前に気がついてよかったね