切腹のイラスト

Gentooをmuslにお引越し

{
  category: "/unix-like"
}

muslなstage3を使ったらそれだけで終了しちゃうので,1からブートストラップしてみる

crossdev: —llvmだとstage4でもmuslとcompiler-rtしかついてこない(clang-crossdev-wrappers) → コンパイルはできるがlibcxxが無くて使い物にならない…… → gccを使ってbootstrap

doas crossdev -s0 -S -oS crossdev x86_64-gentoo-linux-musl -P -v
doas btrfs subvol cre /mnt/Linux/@hoge
cd /mnt/Linux/@hoge

これだけの為にmerge-usr入れるのも癪なので手打ちで

mkdir -p usr/bin usr/lib{,64}
ln -s usr/bin bin
ln -s usr/bin sbin
ln -s bin usr/sbin
ln -s usr/lib lib
ln -s usr/lib64 lib64
mkdir dev proc run sys

Portageの設定

mkdir -p etc/portage
ln -s /var/db/repos/gentoo/profiles/default/linux/amd64/23.0/musl/llvm etc/portage/make.profile
vim etc/portage/make.conf
COMMON_FLAGS="-O2 -pipe -march=native -flto=thin"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"

# these must be made explicit during cross-compilation
CHOST="x86_64-gentoo-linux-musl"
CC="${CHOST}-clang"
CXX="${CHOST}-clang++"

FEATURES="parallel-fetch parallel-install"
EMERGE_DEFAULT_OPTS="-tv -j16 -l16 --keep-going"
ACCEPT_KEYWORDS="~amd64"
ACCEPT_LICENSE="* -@EULA"

LC_MESSAGES="C.utf8"
alias musl-emerge="x86_64-gentoo-linux-musl-emerge --root=$(pwd) --sysroot=$(pwd) --config-root=$(pwd)"
musl-emerge -1 musl