karubabuの日記

タイトルに解決と書いているものがあるけれど、別に付いていない物は解決していないというわけではないです。つまるところ記事を書いた後に解決してちょっと嬉しかったので付けました。

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に殺されました…

おわりに

ほたしがえらい
無限に感謝しています

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すると(pacmanlinuxパッケージが落ちてきたり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

することで解決される

おわりに

困る前に気がついてよかったね

参考: mkinitcpio - ArchWiki