概要
LFS v12.1-systemd を Asahi Linux でやります.
それだけです.
LFS は日本語訳を, BLFS は原文を読んでいます.
記事起こしすることがあんまなかったので, ビルド時間くらいはメモってます. まあ, 記事の内容としてはそれが殆どです. だってやるだけですから.
手順としてはまず最初に LFS をじっくり進めます. そしてカーネル導入と起動の章になったら BLFS と Asahi Linux の docs に従いアドリブを敢行します. そしたらきっと起動するはずですよね?では, 始めます.
環境
既に asahi-installer で導入した ALARM が入ってます. それ以外は至って普通の MacBook Pro 16" 2021 です. M1 Pro と 1TB SSD が積んであります.
ホストシステム
2.2. ホストシステム要件 より, 出力:
OK: Coreutils 9.4 >= 8.1
OK: Bash 5.2.26 >= 3.2
OK: Binutils 2.38 >= 2.13.1
OK: Bison 3.8.2 >= 2.7
OK: Diffutils 3.10 >= 2.8.1
OK: Findutils 4.9.0 >= 4.2.31
OK: Gawk 5.3.0 >= 4.0.1
OK: GCC 12.1.0 >= 5.2
OK: GCC (C++) 12.1.0 >= 5.2
OK: Grep 3.11 >= 2.5.1a
OK: Gzip 1.13 >= 1.3.12
OK: M4 1.4.19 >= 1.4.10
OK: Make 4.4.1 >= 4.0
OK: Patch 2.7.6 >= 2.5.4
OK: Perl 5.38.2 >= 5.8.8
OK: Python 3.11.7 >= 3.4
OK: Sed 4.9 >= 4.1.5
OK: Tar 1.35 >= 1.22
OK: Texinfo 7.1 >= 5.0
OK: Xz 5.6.0 >= 5.0.0
OK: Linux Kernel 6.5.0 >= 4.19
OK: Linux Kernel supports UNIX 98 PTY
Aliases:
OK: awk is GNU
OK: yacc is Bison
OK: sh is Bash
Compiler check:
OK: g++ works
OK: nproc reports 10 logical cores are available
ターゲットシステム
2.4. 新しいパーティションの生成 より, 構成について:
具体的には NixOS のインストール後の残滓を再利用しています- asahi-installer で m1n1 + U-Boot + ESP を構成
- EFI partition に 477M
- root partition (残りの空きを全部) に 23.9G
2.5. ファイルシステムの生成 より, 構成について:
- EFI partition は VFAT だが既に構成されているので触れないでおく
- root partition は btrfs でフォーマット
root partition の詳細
alarm% sudo mkfs.btrfs -f /dev/nvme0n1p5
btrfs-progs v6.7.1
See https://btrfs.readthedocs.io for more information.
WARNING: sectorsize 4096 does not match host CPU page size 16384, with kernels 6.x and up
the 4KiB sectorsize is supported on all architectures but other combinations
may fail the filesystem mount, use "--sectorsize 16384" to override that
Performing full device TRIM /dev/nvme0n1p5 (23.90GiB) ...
NOTE: several default settings have changed in version 5.15, please make sure
this does not affect your deployments:
- DUP for metadata (-m dup)
- enabled no-holes (-O no-holes)
- enabled free-space-tree (-R free-space-tree)
Label: (null)
UUID: 2f8be01e-8224-4b18-b5f0-57f1e5c4f6f2
Node size: 16384
Sector size: 4096 (CPU page size: 16384)
Filesystem size: 23.90GiB
Block group profiles:
Data: single 8.00MiB
Metadata: DUP 256.00MiB
System: DUP 8.00MiB
SSD detected: yes
Zoned device: no
Features: extref, skinny-metadata, no-holes, free-space-tree
Checksum: crc32c
Number of devices: 1
Devices:
ID SIZE PATH
1 23.90GiB /dev/nvme0n1p5
事前準備
3.1 はじめに より, ソースについて:
wget-list-systemd
に関しては日本語訳情報に従うとして, その上で linux のソースを Asahi のものに置き換える必要があります1.
ここでは投稿時現在で最新の asahi-6.6-15 を使うこととします. .tar.gz
を落として $LFS/sources
配下に配置しておきます. 他にも必要なものはあるのですが, ひとまずこれだけです.
4.2. LFS ファイルシステムの限定的なディレクトリレイアウトの生成 より, ディレクトリ構成について:
x86_64
の場合は $LFS/lib64
を作る旨の事が書いてありますが, Apple Silicon は aarch64
なのでこれに引っ掛かりません. なので何も考えずに $LFS/lib64
を作ります. Apple M1 の命令セットである ARMv8.5-A は多分 32bit / 64bit のアーキテクチャなのでWikipedia lib64
を置くことは妥当な選択の筈です.2
4.5. SBU 値について について, 実測値:
5.2. Binutils-2.42 - 1回め での make
を time make
にした出力がこれ
real 0m29.969s
user 1m37.593s
sys 0m10.539s
従ってここでは 1 SBU := 30 sec
とします.3
クロスツールチェーンの構築
第5章 クロスツールチェーンの構築 より, ビルド時間の実測値4:
括弧書きが概算時間, そうでない方が実測時間です. 太字は概算時間より大幅に超えていると思ったものです. 斜体は察してください. Binutils と同様に計測には time make
5 を使用します.
package name | actual time [SBU] | estimated time [SBU] |
---|---|---|
binutils | 1.00 | 1 |
gcc | 6.65 | 3.8 |
glibc | 2.51 | 1.5 |
libstdc++ | 0.27 | 0.2 |
5.3. GCC-13.2.0 - 1回め より, 懸念点:
x86_64 ホストってことにして置換はしましたが, gcc/config/
配下に aarch64 向け以外の, つまり aarch32 みたいな設定は無いはずなので, これは効果がないかもしれない.
5.4. Linux-6.7.4 API ヘッダー より, 備考:
ここでは asahi-6.6-15.tar.gz
を使用する. 展開すると linux-asahi-6.6-15/
が作成されるのでこれに入る. それ以外の手順は同様.
5.5 Glibc-2.39 より, 備考:
最初の手順は両方やるとして, 実情 (ホストシステム) に沿ったものとします.
original | replace |
---|---|
ld-linux.so.2 |
ld-linux.so.1 |
ls-lsb.so.3 |
ld-lsb.so.2 |
ld-linux-x86-64.so.2 |
ld-linux-aarch64.so.1 |
ls-lsb-x86-64.so.3 |
ld-lsb-aarch64.so.2 |
よくわかんないけど. よくわかんないけど…
5.6. GCC-13.2.0 から取り出した libstdc++ より, 備考:
$LFS/usr/lib/
配下に libtool アーカイブファイルが無かったので, $LFS/usr/lib64/
配下にあるものを吹き飛ばします.
一時ツールの生成
第6章 クロスコンパイルによる一時的ツール より, ビルド時間の実測値:
package name | actual time [SBU] | estimated time [SBU] |
---|---|---|
m4 | 0.10 | 0.1 |
ncurses | 0.19 | 0.3 |
bash | 0.20 | 0.2 |
coreutils | 0.02 | 0.3 |
diffutils | 0.09 | 0.1 |
file | 0.04 | 0.1 |
findutils | 0.12 | 0.1 |
gawk | 0.14 | 0.1 |
grep | 0.10 | 0.1 |
gzip | 0.03 | 0.1 |
make | 0.03 | < 0.1 |
patch | 0.04 | 0.1 |
sed | 0.06 | 0.1 |
tar | 0.12 | 0.1 |
xz | 0.08 | 0.1 |
binutils | 1.23 | 0.5 |
gcc | 8.90 | 4.4 |
特筆することはありません. やるだけですね.
chroot 後の一時ツール生成
7. chroot への移行と一時的ツールの追加ビルド より, ビルド時間の実測値:
package name | actual time [SBU] | estimated time [SBU] |
---|---|---|
gettext | 2.13 | 1.1 |
bison | 0.07 | 0.2 |
perl | 0.80 | 0.6 |
python | 0.71 | 0.5 |
texinfo | 0.17 | 0.2 |
util-linux | 0.28 | 0.2 |
これもやるだけです.
システムの構築
第8章 基本的なソフトウェアのインストール より, ビルド時間の実測値:
package name | actual time [SBU] | estimated time [SBU] |
---|---|---|
glibc | 34.42 | 12 |
zlib | 0.03 | < 0.1 |
bzip | 0.03 | < 0.1 |
xz | 0.08 | 0.1 |
zstd | 0.37 | 0.5 |
file | 0.04 | < 0.1 |
readline | 0.03 | < 0.1 |
m4 | 0.10 | 0.3 |
bc | 0.03 | < 0.1 |
flex | 0.08 | 0.1 |
tcl | 1.74 | 2.7 |
expect | 0.00 | 0.2 |
dejagnu | ? | 0.1 |
pkgconf | 0.00 | < 0.1 |
binutils | 2.51 | 2.2 |
gmp | 0.24 | 0.3 |
mpfr | 0.17 | 0.3 |
mpc | 0.04 | 0.1 |
attr | 0.01 | < 0.1 |
acl | 0.02 | < 0.1 |
libcap | 0.03 | < 0.1 |
libxcrypt | 0.03 | 0.1 |
shadow | 0.09 | 0.1 |
gcc | 55.58 | 42 |
ncurses | 0.22 | 0.2 |
sed | 0.04 | 0.3 |
psmisc | 0.01 | < 0.1 |
gettext | 2.13 | 1.4 |
bison (build) | 0.07 | 2.3 |
bison (check) | 3.29 | 5.5 |
grep | 0.06 | 0.4 |
bash | 0.20 | 1.2 |
libtool | 0.03 | 0.6 |
gdbm | 0.04 | 0.1 |
gperf | 0.02 | < 0.1 |
expat | 0.06 | 0.1 |
inetutils | 0.11 | 0.2 |
less | 0.02 | < 0.1 |
perl (build) | 0.92 | 1.5 |
perl (test) | 3.18 | 11 |
xml::parser | 0.03 | < 0.1 |
intltool | 0.00 | < 0.1 |
autoconf (build) | 0.00 | < 0.1 |
autoconf (check) | 2.72 | 0.4 |
automake (build) | 0.01 | < 0.1 |
automake (check) | 10.78 | 1.6 |
openssl | 1.44 | 1.8 |
kmod | 0.03 | < 0.1 |
libelf | 0.43 | 0.3 |
libffi | 0.02 | 1.8 |
python | 3.28 | 1.8 |
flit-core | ? | < 0.1 |
wheel | ? | < 0.1 |
setuptools | ? | < 0.1 |
ninja | ? | 0.3 |
meson | ? | < 0.1 |
coreutils | 0.27 | 1.0 |
check (build) | 0.05 | 0.1 |
check (check) | 5.88 | 1.5 |
diffutils | 0.05 | 0.3 |
gawk | 0.13 | 0.1 |
findutils | 0.08 | 0.4 |
groff | 0.25 | 0.2 |
grub | - | 0.3 |
gzip | 0.03 | 0.3 |
iproute2 | 0.14 | 0.1 |
kbd | 0.08 | 0.1 |
libpipeline | 0.04 | 0.1 |
make | 0.03 | 0.5 |
patch | 0.04 | 0.1 |
tar | 0.09 | 0.5 |
texinfo | 0.15 | 0.3 |
vim | 0.37 | 2.5 |
markupsafe | ? | < 0.1 |
jinja2 | ? | < 0.1 |
systemd | 1.25 | 0.7 |
d-bus | 0.06 | 0.1 |
man-db | 0.11 | 0.2 |
procps-ng | 0.07 | 0.1 |
util-linux | 0.26 | 0.5 |
e2fsprogs | 0.22 | 0.4 |
ながああああい. ながああああああああああい. ながすぎる!!!!!!!!!!!!!!!!!!! 本当に大変だった. 手作業でやる内容じゃないですよね…?いや, これこそ手作業でやる価値がありました.
あとたまにビルド時間だけじゃなくてテスト時間も含めてたりします. それもこれも LFS を読めば判ることですが…
8.5. Glibc-2.39 より, 懸念点:
テストの中で落ちちゃダメそうなものが沢山落ちた.
内訳
FAIL: assert/tst-assert-c++
FAIL: assert/tst-assert-g++
FAIL: debug/tst-backtrace2
FAIL: debug/tst-backtrace3
FAIL: debug/tst-backtrace4
FAIL: debug/tst-backtrace5
FAIL: debug/tst-backtrace6
FAIL: debug/tst-chk-cancel
FAIL: debug/tst-fortify-cc-default-1-def
FAIL: debug/tst-fortify-cc-default-2-def
FAIL: debug/tst-fortify-cc-default-3-def
FAIL: debug/tst-fortify-cc-lfs-1-def
FAIL: debug/tst-fortify-cc-lfs-2-def
FAIL: debug/tst-fortify-cc-lfs-3-def
FAIL: debug/tst-fortify-cc-nongnu-1-def
FAIL: debug/tst-fortify-cc-nongnu-2-def
FAIL: debug/tst-fortify-cc-nongnu-3-def
UNSUPPORTED: debug/tst-fortify-syslog
FAIL: dlfcn/bug-atexit3
UNSUPPORTED: elf/tst-decorate-maps
UNSUPPORTED: elf/tst-dlopen-self-container
UNSUPPORTED: elf/tst-dlopen-tlsmodid-container
UNSUPPORTED: elf/tst-env-setuid
UNSUPPORTED: elf/tst-env-setuid-static
UNSUPPORTED: elf/tst-env-setuid-tunables
UNSUPPORTED: elf/tst-glibc-hwcaps-prepend-cache
UNSUPPORTED: elf/tst-ldconfig-bad-aux-cache
UNSUPPORTED: elf/tst-ldconfig-ld_so_conf-update
UNSUPPORTED: elf/tst-ldconfig-p
UNSUPPORTED: elf/tst-pldd
UNSUPPORTED: elf/tst-preload-pthread-libc
XPASS: elf/tst-protected1a
XPASS: elf/tst-protected1b
UNSUPPORTED: elf/tst-rootdir
FAIL: elf/tst-unwind-main
UNSUPPORTED: elf/tst-valgrind-smoke
FAIL: iconv/tst-iconv-mt
UNSUPPORTED: io/tst-getcwd-smallbuff
FAIL: io/tst-lchmod
UNSUPPORTED: locale/tst-localedef-path-norm
UNSUPPORTED: localedata/tst-localedef-hardlinks
FAIL: malloc/tst-malloc-stats-cancellation
FAIL: malloc/tst-malloc-stats-cancellation-malloc-check
FAIL: malloc/tst-malloc-stats-cancellation-malloc-hugetlb1
FAIL: malloc/tst-malloc-stats-cancellation-malloc-hugetlb2
UNSUPPORTED: misc/tst-adjtimex
UNSUPPORTED: misc/tst-clock_adjtime
FAIL: misc/tst-gettid-kill
UNSUPPORTED: misc/tst-ntp_adjtime
UNSUPPORTED: misc/tst-pidfd_getpid
UNSUPPORTED: misc/tst-pkey
FAIL: misc/tst-sigcontext-get_pc
UNSUPPORTED: misc/tst-sme-jmp
UNSUPPORTED: misc/tst-syslog
UNSUPPORTED: misc/tst-syslog-long-progname
UNSUPPORTED: nptl/test-cond-printers
UNSUPPORTED: nptl/test-condattr-printers
UNSUPPORTED: nptl/test-mutex-printers
UNSUPPORTED: nptl/test-mutexattr-printers
UNSUPPORTED: nptl/test-rwlock-printers
UNSUPPORTED: nptl/test-rwlockattr-printers
FAIL: nptl/tst-basic3
FAIL: nptl/tst-basic4
FAIL: nptl/tst-call-once
FAIL: nptl/tst-cancel-self
FAIL: nptl/tst-cancel-self-cancelstate
FAIL: nptl/tst-cancel-self-canceltype
FAIL: nptl/tst-cancel-self-testcancel
FAIL: nptl/tst-cancel1
FAIL: nptl/tst-cancel10
FAIL: nptl/tst-cancel11
FAIL: nptl/tst-cancel12
FAIL: nptl/tst-cancel13
FAIL: nptl/tst-cancel14
FAIL: nptl/tst-cancel15
FAIL: nptl/tst-cancel16
FAIL: nptl/tst-cancel17
FAIL: nptl/tst-cancel18
FAIL: nptl/tst-cancel2
FAIL: nptl/tst-cancel20
FAIL: nptl/tst-cancel21
FAIL: nptl/tst-cancel22
FAIL: nptl/tst-cancel23
FAIL: nptl/tst-cancel24
FAIL: nptl/tst-cancel25
FAIL: nptl/tst-cancel28
FAIL: nptl/tst-cancel29
FAIL: nptl/tst-cancel3
FAIL: nptl/tst-cancel30
FAIL: nptl/tst-cancel4
FAIL: nptl/tst-cancel4_1
FAIL: nptl/tst-cancel4_2
FAIL: nptl/tst-cancel5
FAIL: nptl/tst-cancel6
FAIL: nptl/tst-cancel7
FAIL: nptl/tst-cancel8
FAIL: nptl/tst-cancel9
FAIL: nptl/tst-cancelx10
FAIL: nptl/tst-cancelx11
FAIL: nptl/tst-cancelx12
FAIL: nptl/tst-cancelx13
FAIL: nptl/tst-cancelx14
FAIL: nptl/tst-cancelx15
FAIL: nptl/tst-cancelx16
FAIL: nptl/tst-cancelx17
FAIL: nptl/tst-cancelx18
FAIL: nptl/tst-cancelx2
FAIL: nptl/tst-cancelx20
FAIL: nptl/tst-cancelx21
FAIL: nptl/tst-cancelx3
FAIL: nptl/tst-cancelx4
FAIL: nptl/tst-cancelx5
FAIL: nptl/tst-cancelx6
FAIL: nptl/tst-cancelx7
FAIL: nptl/tst-cancelx8
FAIL: nptl/tst-cancelx9
FAIL: nptl/tst-cleanup0
FAIL: nptl/tst-cleanup0-cmp
FAIL: nptl/tst-cleanup1
FAIL: nptl/tst-cleanup3
FAIL: nptl/tst-cleanup4
FAIL: nptl/tst-cleanupx0
FAIL: nptl/tst-cleanupx1
FAIL: nptl/tst-cleanupx3
FAIL: nptl/tst-cleanupx4
FAIL: nptl/tst-cnd-basic
FAIL: nptl/tst-cnd-broadcast
FAIL: nptl/tst-cnd-timedwait
FAIL: nptl/tst-cond-except
FAIL: nptl/tst-cond22
FAIL: nptl/tst-cond25
FAIL: nptl/tst-cond7
FAIL: nptl/tst-cond8
FAIL: nptl/tst-exec5
FAIL: nptl/tst-execstack-threads
FAIL: nptl/tst-exit2
FAIL: nptl/tst-exit3
FAIL: nptl/tst-fini1
FAIL: nptl/tst-join1
FAIL: nptl/tst-join10
FAIL: nptl/tst-join11
FAIL: nptl/tst-join12
FAIL: nptl/tst-join13
FAIL: nptl/tst-join5
FAIL: nptl/tst-join6
FAIL: nptl/tst-join8
FAIL: nptl/tst-join9
FAIL: nptl/tst-key3
FAIL: nptl/tst-minstack-cancel
FAIL: nptl/tst-minstack-exit
FAIL: nptl/tst-minstack-throw
FAIL: nptl/tst-mtx-basic
FAIL: nptl/tst-mtx-timedlock
FAIL: nptl/tst-mtx-trylock
FAIL: nptl/tst-mutex8
FAIL: nptl/tst-mutexpi8
FAIL: nptl/tst-once3
FAIL: nptl/tst-once4
FAIL: nptl/tst-once5
FAIL: nptl/tst-oncex3
FAIL: nptl/tst-oncex4
FAIL: nptl/tst-oncey3
FAIL: nptl/tst-oncey4
FAIL: nptl/tst-pthread-exit-signal
UNSUPPORTED: nptl/tst-pthread-gdb-attach
UNSUPPORTED: nptl/tst-pthread-gdb-attach-static
UNSUPPORTED: nptl/tst-pthread-getattr
FAIL: nptl/tst-pthread-raise-blocked-self
FAIL: nptl/tst-pthread_cancel-select-loop
FAIL: nptl/tst-pthread_exit-nothreads
FAIL: nptl/tst-robust1
FAIL: nptl/tst-robust2
FAIL: nptl/tst-robust3
FAIL: nptl/tst-robust4
FAIL: nptl/tst-robust5
FAIL: nptl/tst-robust6
FAIL: nptl/tst-robust7
FAIL: nptl/tst-robustpi1
FAIL: nptl/tst-robustpi2
FAIL: nptl/tst-robustpi3
FAIL: nptl/tst-robustpi4
FAIL: nptl/tst-robustpi5
FAIL: nptl/tst-robustpi6
FAIL: nptl/tst-robustpi7
FAIL: nptl/tst-rseq-nptl
FAIL: nptl/tst-sem11
FAIL: nptl/tst-sem12
FAIL: nptl/tst-sem16
FAIL: nptl/tst-stack4
FAIL: nptl/tst-thrd-detach
FAIL: nptl/tst-thrd-sleep
FAIL: nptl/tst-thread-exit-clobber
FAIL: nptl/tst-thread_local1
FAIL: nptl/tst-tsd5
FAIL: nptl/tst-tss-basic
FAIL: nptl/tst-unwind-thread
UNSUPPORTED: nss/mtrace-tst-nss-gai-hv2-canonname
FAIL: nss/tst-cancel-getpwuid_r
UNSUPPORTED: nss/tst-initgroups1
UNSUPPORTED: nss/tst-initgroups2
UNSUPPORTED: nss/tst-nss-compat1
UNSUPPORTED: nss/tst-nss-db-endgrent
UNSUPPORTED: nss/tst-nss-db-endpwent
UNSUPPORTED: nss/tst-nss-files-hosts-long
UNSUPPORTED: nss/tst-nss-files-hosts-v4mapped
UNSUPPORTED: nss/tst-nss-gai-actions
UNSUPPORTED: nss/tst-nss-gai-hv2-canonname
UNSUPPORTED: nss/tst-nss-test3
UNSUPPORTED: nss/tst-reload1
UNSUPPORTED: nss/tst-reload2
UNSUPPORTED: posix/bug-ga2
UNSUPPORTED: posix/bug-ga2-mem
FAIL: posix/tst-getopt-cancel
UNSUPPORTED: posix/tst-spawn-cgroup
UNSUPPORTED: posix/tst-vfork3
UNSUPPORTED: posix/tst-vfork3-mem
UNSUPPORTED: resolv/mtrace-tst-leaks2
UNSUPPORTED: resolv/tst-leaks2
UNSUPPORTED: resolv/tst-resolv-ai_idn
UNSUPPORTED: resolv/tst-resolv-ai_idn-latin1
FAIL: rt/tst-cpuclock2
FAIL: rt/tst-mqueue8
FAIL: rt/tst-mqueue8x
FAIL: rt/tst-shm-cancel
UNSUPPORTED: stdio-common/tst-popen3
FAIL: stdlib/tst-quick_exit
UNSUPPORTED: stdlib/tst-secure-getenv
UNSUPPORTED: stdlib/tst-system
FAIL: stdlib/tst-thread-quick_exit
UNSUPPORTED: string/tst-strerror
UNSUPPORTED: string/tst-strsignal
UNSUPPORTED: time/tst-clock_settime
UNSUPPORTED: time/tst-settimeofday
=== Summary of results ===
167 FAIL
4597 PASS
64 UNSUPPORTED
16 XFAIL
2 XPASS
5 つの package で test-fcntl
が落ちるという話:
具体的には,
該当箇所の出力の例 ({pid}
は PID, 長いインデントは切り詰めてる):
../build-aux/test-driver: line 109: {pid} Aborted (core dumped) "#@" > $log_file 2>&1
FAIL: test-fcntl
何で同じテストが落ちるって, それは多分, それぞれの package が同じテストを運用してるんじゃないかな…?
8.16. Expect-5.45.4 より, 懸念点:
configure 時に次のようなエラーで停止した.
checking build system type... tclconfig/config.guess: unable to guess system type
This script, last modified 2003-10-07, has failed to recognize
the operating system you are using. It is advised that you
download the most up to date version of the config scripts from
ftp://ftp.gnu.org/pub/gnu/config/
ので, 指示に従って tclconfig/config.{guess,sub}
を更新して再度 configure すると, 今度は上手く行った.
2003 年ってなんだよ, 古すぎるだろ…
8.19. Binutils-2.42 より, 懸念点:
make -k check
が終了コード 2 で異常終了している.6
make[1]: Target 'check-host' not remade because of errors.
make[1]: Leaving directory '/sources/binutils-2.42/build'
make: *** [Makefile:2568: do-check] Error 2
make: Target 'check' not remade because of errors.
うーんよくわかんない. だめそう. でもエラーも認められない. うーん?
8.28. GCC-13.2.0 より, 懸念点:
案の定大量のテストが落ちるので, その記録をば.
内訳
LAST_UPDATED: Obtained from git: releases/gcc-13.2.0 revision c891d8dc23e1a46ad9f3e757d09e57b500d40044
Native configuration is aarch64-unknown-linux-gnu
=== libatomic tests ===
Running target unix
=== libatomic Summary ===
# of expected passes 54
=== libgomp tests ===
Running target unix
=== libgomp Summary ===
# of expected passes 5069
# of expected failures 32
# of unsupported tests 367
=== libitm tests ===
Running target unix
=== libitm Summary ===
# of expected passes 44
# of expected failures 3
# of unsupported tests 1
=== libstdc++ tests ===
Running target unix
FAIL: 23_containers/vector/bool/allocator/copy.cc (test for excess errors)
=== libstdc++ Summary ===
# of expected passes 15659
# of unexpected failures 1
# of expected failures 106
# of unsupported tests 392
=== gcc tests ===
Running target unix
FAIL: gcc.dg/analyzer/data-model-4.c (test for excess errors)
FAIL: gcc.dg/analyzer/torture/conftest-1.c -O0 (test for excess errors)
FAIL: gcc.dg/analyzer/torture/conftest-1.c -O1 (test for excess errors)
FAIL: gcc.dg/analyzer/torture/conftest-1.c -O2 (test for excess errors)
FAIL: gcc.dg/analyzer/torture/conftest-1.c -O3 -g (test for excess errors)
FAIL: gcc.dg/analyzer/torture/conftest-1.c -Os (test for excess errors)
FAIL: gcc.dg/analyzer/torture/conftest-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none (test for excess errors)
FAIL: c-c++-common/hwasan/alloca-gets-different-tag.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c -O1 output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c -O2 output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c -O3 -g output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c -Os output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c -O2 -flto -fno-use-linker-plugin -flto-partition=none output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c -O0 output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c -O1 output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c -O2 output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c -O3 -g output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c -Os output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c -O0 output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c -O1 output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c -O2 output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c -O3 -g output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c -Os output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c -O2 -flto -fno-use-linker-plugin -flto-partition=none output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c -O0 output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c -O1 output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c -O2 output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c -O3 -g output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c -Os output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c -O2 -flto -fno-use-linker-plugin -flto-partition=none output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c -O0 output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c -O1 output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c -O2 output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c -O3 -g output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c -Os output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c -O2 -flto -fno-use-linker-plugin -flto-partition=none output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects output pattern test
FAIL: c-c++-common/hwasan/unprotected-allocas-1.c -O1 scan-assembler-not __hwasan_tag_memory
FAIL: c-c++-common/hwasan/unprotected-allocas-1.c -O2 scan-assembler-not __hwasan_tag_memory
FAIL: c-c++-common/hwasan/unprotected-allocas-1.c -O3 -g scan-assembler-not __hwasan_tag_memory
FAIL: c-c++-common/hwasan/unprotected-allocas-1.c -Os scan-assembler-not __hwasan_tag_memory
FAIL: c-c++-common/hwasan/use-after-free.c -O0 output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c -O1 output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c -O2 output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c -O3 -g output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c -Os output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c -O2 -flto -fno-use-linker-plugin -flto-partition=none output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects output pattern test
=== gcc Summary ===
# of expected passes 285699
# of unexpected failures 53
# of expected failures 2506
# of unsupported tests 3197
/sources/gcc-13.2.0/build/gcc/xgcc version 13.2.0 (GCC)
=== g++ tests ===
Running target unix
FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtollOOBTest Strtol(array + 3, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtollOOBTest Strtol(array - 1, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtollOOBTest Strtol(array, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtollOOBTest Strtol(array, NULL, 36) execution test
FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtollOOBTest Strtol(array, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtollOOBTest Strtol(array, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtollOOBTest Strtol(array, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtolOOBTest Strtol(array + 3, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtolOOBTest Strtol(array - 1, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtolOOBTest Strtol(array, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtolOOBTest Strtol(array, NULL, 36) execution test
FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtolOOBTest Strtol(array, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtolOOBTest Strtol(array, NULL, 0) execution test
FAIL: g++.dg/asan/asan_test.C -O2 AddressSanitizer_StrtolOOBTest Strtol(array, NULL, 0) execution test
FAIL: g++.dg/asan/interception-malloc-test-1.C -O0 execution test
FAIL: g++.dg/asan/interception-malloc-test-1.C -O1 execution test
FAIL: g++.dg/asan/interception-malloc-test-1.C -O2 execution test
FAIL: g++.dg/asan/interception-malloc-test-1.C -O3 -g execution test
FAIL: g++.dg/asan/interception-malloc-test-1.C -Os execution test
FAIL: g++.dg/asan/interception-malloc-test-1.C -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test
FAIL: g++.dg/asan/interception-malloc-test-1.C -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test
FAIL: g++.dg/contracts/contracts-tmpl-spec2.C output pattern test
FAIL: c-c++-common/hwasan/alloca-gets-different-tag.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects execution test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c -O1 output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c -O2 output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c -O3 -g output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c -Os output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c -O2 -flto -fno-use-linker-plugin -flto-partition=none output pattern test
FAIL: c-c++-common/hwasan/alloca-outside-caught.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c -O0 output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c -O1 output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c -O2 output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c -O3 -g output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c -Os output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none output pattern test
FAIL: c-c++-common/hwasan/bitfield-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c -O0 output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c -O1 output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c -O2 output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c -O3 -g output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c -Os output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c -O2 -flto -fno-use-linker-plugin -flto-partition=none output pattern test
FAIL: c-c++-common/hwasan/heap-overflow.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c -O0 output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c -O1 output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c -O2 output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c -O3 -g output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c -Os output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c -O2 -flto -fno-use-linker-plugin -flto-partition=none output pattern test
FAIL: c-c++-common/hwasan/hwasan-thread-basic-failure.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c -O0 output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c -O1 output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c -O2 output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c -O3 -g output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c -Os output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c -O2 -flto -fno-use-linker-plugin -flto-partition=none output pattern test
FAIL: c-c++-common/hwasan/sanity-check-pure-c.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects output pattern test
FAIL: c-c++-common/hwasan/unprotected-allocas-1.c -O1 scan-assembler-not __hwasan_tag_memory
FAIL: c-c++-common/hwasan/unprotected-allocas-1.c -O2 scan-assembler-not __hwasan_tag_memory
FAIL: c-c++-common/hwasan/unprotected-allocas-1.c -O3 -g scan-assembler-not __hwasan_tag_memory
FAIL: c-c++-common/hwasan/unprotected-allocas-1.c -Os scan-assembler-not __hwasan_tag_memory
FAIL: c-c++-common/hwasan/use-after-free.c -O0 output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c -O1 output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c -O2 output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c -O3 -g output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c -Os output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c -O2 -flto -fno-use-linker-plugin -flto-partition=none output pattern test
FAIL: c-c++-common/hwasan/use-after-free.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects output pattern test
FAIL: g++.dg/modules/xtreme-header-1_a.H -std=c++17 (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header-1_a.H -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-1_a.H module-cmi (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header-1_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header-1_a.H -std=c++2a (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header-1_a.H -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-1_a.H module-cmi (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header-1_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header-1_a.H -std=c++2b (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header-1_a.H -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-1_a.H module-cmi (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header-1_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header-1_b.C -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-1_b.C -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-1_b.C -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-1_c.C -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-1_c.C -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-1_c.C -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-2_a.H -std=c++17 (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header-2_a.H -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-2_a.H module-cmi (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header-2_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header-2_a.H -std=c++2a (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header-2_a.H -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-2_a.H module-cmi (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header-2_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header-2_a.H -std=c++2b (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header-2_a.H -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-2_a.H module-cmi (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header-2_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header-2_b.C -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-2_b.C -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-2_b.C -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-2_c.C -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-2_c.C -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-2_c.C -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-5_a.H -std=c++17 (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header-5_a.H -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-5_a.H module-cmi (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header-5_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header-5_a.H -std=c++2a (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header-5_a.H -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-5_a.H module-cmi (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header-5_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header-5_a.H -std=c++2b (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header-5_a.H -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-5_a.H module-cmi (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header-5_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header-5_b.C -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-5_b.C -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-5_b.C -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-5_c.C -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-5_c.C -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header-5_c.C -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header_a.H -std=c++17 (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header_a.H -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header_a.H module-cmi (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header_a.H -std=c++2a (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header_a.H -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header_a.H module-cmi (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header_a.H -std=c++2b (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-header_a.H -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-header_a.H module-cmi (gcm.cache/\$srcdir/g++.dg/modules/xtreme-header_a.H.gcm)
FAIL: g++.dg/modules/xtreme-header_b.C -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-header_b.C -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-header_b.C -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-tr1_a.H -std=c++17 (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-tr1_a.H -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-tr1_a.H module-cmi (gcm.cache/\$srcdir/g++.dg/modules/xtreme-tr1_a.H.gcm)
FAIL: g++.dg/modules/xtreme-tr1_a.H -std=c++2a (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-tr1_a.H -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-tr1_a.H module-cmi (gcm.cache/\$srcdir/g++.dg/modules/xtreme-tr1_a.H.gcm)
FAIL: g++.dg/modules/xtreme-tr1_a.H -std=c++2b (internal compiler error: in core_vals, at cp/module.cc:6108)
FAIL: g++.dg/modules/xtreme-tr1_a.H -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/xtreme-tr1_a.H module-cmi (gcm.cache/\$srcdir/g++.dg/modules/xtreme-tr1_a.H.gcm)
FAIL: g++.dg/modules/xtreme-tr1_b.C -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/xtreme-tr1_b.C -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/xtreme-tr1_b.C -std=c++2b (test for excess errors)
=== g++ Summary ===
# of expected passes 349643
# of unexpected failures 137
# of expected failures 3089
# of unsupported tests 10961
/sources/gcc-13.2.0/build/gcc/xg++ version 13.2.0 (GCC)
Compiler version: 13.2.0 (GCC)
Platform: aarch64-unknown-linux-gnu
configure flags: --prefix=/usr LD=ld --enable-languages=c,c++ --enable-default-pie --enable-default-ssp --disable-multilib --disable-bootstrap --disable-fixincludes --with-system-zlib
これに加えて, /usr/lib/*gdb.py
じゃなくて /usr/lib64/*gdb.py
だったことも付記.
8.32. Gettext-0.22.4 より, 懸念点:
いっぱいおちた. ヤバいかも.
実際の出力では垂れ流しだけど, ここでは PASS:
の行はフィルタしたものを載せておく.
内訳
FAIL: msgmerge-1
FAIL: msgmerge-2
FAIL: msgmerge-3
FAIL: msgmerge-4
FAIL: msgmerge-7
FAIL: msgmerge-6
FAIL: msgmerge-5
FAIL: msgmerge-8
FAIL: msgmerge-9
FAIL: msgmerge-10
FAIL: msgmerge-11
FAIL: msgmerge-12
FAIL: msgmerge-13
FAIL: msgmerge-17
FAIL: msgmerge-14
FAIL: msgmerge-15
FAIL: msgmerge-16
FAIL: msgmerge-20
FAIL: msgmerge-18
FAIL: msgmerge-19
FAIL: msgmerge-21
FAIL: msgmerge-22
FAIL: msgmerge-23
FAIL: msgmerge-25
FAIL: msgmerge-26
FAIL: msgmerge-27
FAIL: msgmerge-24
FAIL: msgmerge-28
FAIL: msgmerge-compendium-1
FAIL: msgmerge-29
FAIL: msgmerge-compendium-2
FAIL: msgmerge-compendium-5
FAIL: msgmerge-compendium-3
FAIL: msgmerge-compendium-4
FAIL: msgmerge-properties-1
FAIL: msgmerge-properties-2
FAIL: msgmerge-update-1
FAIL: msgmerge-update-2
FAIL: msgmerge-update-3
FAIL: msgmerge-update-4
SKIP: msgunfmt-csharp-1
SKIP: msgunfmt-java-1
FAIL: msgmerge-compendium-6
SKIP: xgettext-16
SKIP: xgettext-ruby-1
SKIP: format-ruby-1
FAIL: plural-1
SKIP: lang-objc
FAIL: lang-python-1
FAIL: lang-python-2
FAIL: lang-c
SKIP: lang-java
SKIP: lang-csharp
FAIL: lang-guile
FAIL: lang-javascript
FAIL: lang-clisp
FAIL: lang-elisp
FAIL: lang-sh
FAIL: lang-librep
FAIL: lang-bash
FAIL: lang-lua
FAIL: lang-gawk
SKIP: lang-pascal
FAIL: lang-c++
SKIP: lang-vala
FAIL: lang-smalltalk
FAIL: lang-tcl
FAIL: lang-perl-2
FAIL: lang-perl-1
FAIL: lang-php
SKIP: autopoint-1
FAIL: lang-ycp
SKIP: autopoint-2
SKIP: autopoint-3
FAIL: lang-c++20
============================================================================
Testsuite summary for gettext-tools 0.22.4
============================================================================
# TOTAL: 552
# PASS: 477
# SKIP: 13
# XFAIL: 0
# FAIL: 62
# XPASS: 0
# ERROR: 0
============================================================================
See tests/test-suite.log
Please report to bug-gettext@gnu.org
============================================================================
8.36. Libtool-2.4.7 より, 懸念点:
失敗したテスト一覧 (expected 5, found 7):
66: Link order test FAILED (link-order.at:106)
122: compiling softlinked libltdl FAILED (standalone.at:36)
124: installable libltdl FAILED (standalone.at:68)
123: compiling copied libltdl FAILED (standalone.at:51)
125: linking libltdl without autotools FAILED (standalone.at:84)
129: linking libltdl without autotools FAILED (subproject.at:114)
169: Run tests with low max_cmd_len FAILED (cmdline_wrap.at:48)
何が期待されるエラーなのかわからぬ…
でも, 5 + 2 のテストが落ちるという話もあるので, もしかしたら期待されるものかもしれない.
8.51. Python-3.12.2 より, 懸念点:
そのままビルドを始めると最終的に libffi.so.8
の捜査に失敗し, module _ctypes
のビルドに失敗する. 原因は恐らく, これが /usr/lib
ではなく /usr/lib64
に配置されているからだろう. 探索パスに居るはずでは…?
これのせいで pip3 が使えなくてこの後困ります (事後談). ので, 以下を実行してから改めて make
すると _ctypes
のビルドに成功しました. なんなら pip3 もしれっと生成されました. 一件落着.
ln -sv ../lib64/libffi.so.8 /usr/lib/libffi.so.8
8.75. Systemd-255 より, 懸念点:
この後にある 8.78. Procps-ng-4.0.4 でこの章の成果物である libsystemd を必要としますが, その時に見つけてくれない. configure 時にまず見つけてくれない. 困った.
で最終的にしたこと:
ln -sv ../../lib64/pkgconf/libsystemd.pc /usr/lib/pkgconf/libsystemd.pc
ln -sv ../lib64/libsystemd.so.0 /usr/lib/libsystemd.so.0
pkgconf が /usr/lib64/pkgconf
を読んでなかったので, これを /usr/lib/pkgconf
にリンクし, configure が見つけられるようにしました. ビルドは無事終了しますが, テスト実行時に明らかに "見つからない" 旨の出力が見られます. なので, 共有オブジェクトも同様に /usr/lib64
を /usr/lib
にリンクします. そうすると動きます. 一件落着.
8.79. Util-linux-2.39.3 より, 懸念点:
テストがおちた.
---------------------------------------------------------------------
6 tests of 261 FAILED
fadvise/drop
findmnt/outputs
findmnt/target
findmnt/filter
fincore/count
lsblk/lsblk
---------------------------------------------------------------------
8.80. E2fsprogs-1.47.0 より, 懸念点:
テストが落ちた.
373 tests succeeded 2 tests failed
Tests failed: m_assume_storage_prezeroed m_rootdir_acl
起動準備 (LFS)
8.82. ストリップ より, 備考:
やりたかったけど, リスクを考慮して取り敢えずやらないでおく.
9.2. 全般的なネットワークの設定 より, 備考:
hostname は lfs-asahi
10.3. Linux-6.7.4 より, 備考:
これ以降は読むに留めている. 何故なら, BLFS の範疇を含まないと起動すら出来ないため.
起動準備 (BLFS)
ここからはアドリブです.
以下は BLFS の範疇として行った作業内容など.
btrfs への対応
btrfs を使うために色々導入 (だって root partition が btrfs ですからね).
udev が必要なのに使えないと騒がれたので処置:
ln -sv ../../lib64/pkgconfig/libudev.pc /usr/lib/pkgconfig/libudev.pc
ln -sv ../lib64/libudev.so.1 /usr/lib/libudev.so.1
そこから BLFS の手順に少し従う:
テストを一切せずインストール. 面倒だったので…
EFI 周辺
以下は勢いとノリで導入したけど結局使わなかったソフト達:
なんなら efibootmgr は導入しようとして面倒になってやめた. 確か Asahi が EFI variables の編集に対応していないから導入しても意味がないとかそういう動機じゃなかったかな (うろ覚え) (誤解を招く表現).
GRUB の導入
configure 時は当然 --target=aarch64
を指定.7
次に Using GRUB to Set Up the Boot Process with UEFI を参考に設定を進める. ただ, 本当にそのまま手順を追ってもどうしようもないので, まず Asahi の docs を熟読するところから開始. また, この後使うので NixOS の残滓の残っている EFI partition を /boot/efi
に mount しておきます.
でやることが定まったのでまず GRUB の導入から.
grub-install --target=arm64-efi --removable --boot-directory=/boot --efi-directory=/boot/efi
あと /etc/fstab
を BLFS に従って書き加える. 全文を以下に載せます.
# Begin /etc/fstab
# file-system mount-point type options dump fsck-order
/dev/nvme0n1p5 / btrfs defaults 1 0
/dev/nvme0n1p4 /boot/efi vfat codepage=437,iocharset=iso8859-1 0 1
# End /etc/fstab
起動準備 (Asahi Linux)
Asahi のターン (LFS, BLFS の手順も含んでいます).
カーネル周り
まず linux-asahi に入って, .config
をココから取ってきます.
あとは流れで…
vim .config # ここでいい感じにコピペする
make oldconfig # 一応やっとく
make # 時間がかかる
make modules_install # よくわかんないけどやる
次に /etc/modprobe.d/usb.conf
を書きます. 意味はあるのか?
# Begin /etc/modprobe.d/usb.conf
install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true
install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true
# End /etc/modprobe.d/usb.conf
次にカーネルの配置をする. ちょっと記述違う8 けど動くやろ!w
cp -iv arch/arm64/boot/Image /boot/vmlinuz-6.6-15-asahi
カーネルも配置したことだし, GRUB の設定を生成してなかったのでする. LFS や BLFS では生成せず直で書いてるけど, 面倒なので慣れた grub-mkconfig
を使う.
grub-mkconfig -o /boot/grub/grub.cfg
これもよくわかんないけどやる.
mount -v -t efivarfs efivarfs /sys/firmware/efi/efivars
m1n1 + U-Boot 周り
次に m1n1 と U-Boot を build します.
make ARCH= RELEASE=1
make apple_m1_defconfig
make
次に dtb (Device Tree Blob) が必要なのだが, ここで間違えて dtc を導入したので一応畳んでおく. カーネルビルド時に生成されてますよ, それ.
間違えて dtc を導入した詳細
執筆時最新の v1.7.0 を取ってくる. ここから.
make NO_PYTHON=1
make install PREFIX=/usr
使いたいならこれで使えるはず.
いよいよ m1n1 stage 2 のバイナリを作成する. /sources/asahi-boot
を作ってここで作業する. そしてここに必要なファイルを集めてくる. 参考は m1n1:User Guide9.
{linux-asahi}/arch/arm64/boot/dts/apple/*.dtb -> dtbs/*.dtb
{u-boot}/u-boot-nodtb.bin -> u-boot-nodtb.bin
{m1n1}/build/m1n1.bin -> m1n1.bin
集めたら次を実行する.
cat m1n1.bin dtbs/*.dtb <(gzip -c u-boot-nodtb.bin) >m1n1-uboot.bin
これを /boot/efi/m1n1/boot.bin
に配置する. 既にあるやつ (NixOS の残骸) は .old
として保存しておく.
mv -v /boot/efi/m1n1/boot.bin{,.old}
mv -v m1n1-uboot.bin /boot/efi/m1n1/boot.bin
これで起動する筈なのだが, 一応思考を巡らせておこう. ここで言っていることが分からない人は wiki を読んでね! (それでも違うなって思った場合はご教授頂きたい)
まず NixOS の導入時に m1n1 + U-Boot + ESP の構成を導入しているので, fuOS として m1n1 stage 1 が導入され, EFI partition との紐付けが済んでいるはずである. ここは私の知るところではないのでちょっと怖い.
次に EFI partition に先程 m1n1 stage 2 を配置した. これが正常に生成されていれば, m1n1 stage 1 から chainload されて, 多分 {efi}/EFI/BOOTAA64.EFI
を読みに行くだろう. これは, GRUB の導入時に配置されていた筈だ.
そしたら, なんか気合で {root}/grub/grub.cfg
を読みに行って, GRUB が起動する. そうしたら, エントリから {root}/vmlinuz-6.6-15-asahi
を読んで Linux が起動!後は流れで…
ヨシ!起動するだろう. 再起動!
結果
起動した! (無邪気)
あとがき
既知の distribution って偉大なんだなあって思いました. いやそんなの分かるが?と思ったそこのあなた, LFS をやりなさい. いいですね?
あと詳しい仕組みは解りませんが, Asahi の m1n1 + U-Boot は導入自体はそんな複雑怪奇なものじゃないなあと思いました. 文鎮化も現にしていないわけなので, 現状安全と言えるでしょう. 偉大なる marcan 他 contributers には頭が上がりません. ところで私は Touch ID のドライバを心待ちにしていますが, しかし周辺情報を漁れば漁るほど, 対応への道のりは遠く他にするべきことがありそうだなあなどと…
ちなみに詳しく挙動を調べていませんが, これ起動時に私が Gentoo を導入したときと同様のエラーがカーネルから出ていました. ちなみに Gentoo を入れた時は無線モジュールやら GPU ドライバやらは動いていませんでした. つまりこの LFS も同じということです. ALARM はまだまともに動いていましたよ? このトラブルが起こった事が LFS をやる, Linux への理解を深めたいなーなどという動機できっかけでもありますが, 現状 Gentoo のせいではないことが判りました (そりゃそうだろ!).
みんなもやろう! Linux From Scratch
みんなもやろう! Asahi Linux
happy hacking ;)
もっと Asahi との馴れ初めみたいな記事を書き溜めしてた筈なのに, 何でこんなニッチな記事が先に出るのでしょうか. あーあ.
ちなみに作業時間は丸一日と少しくらいでした. ドキュメント読んだりと多少の時間は費やしましたが基本的にはそんな感じです. そしてこの記事を書くのには幾日掛けました. 執筆時間はたかが知れていますが。。
-
投稿時現在, 例えば組み込みのキーボード及び USB ポートの対応は vanilla linux には上がっていない為, 起動出来ても操作は何もできなくなります ↩
-
でも後から考えると失敗だった気もする. 理由は追々 ↩
-
この先を見れば分かりますが, これあんまアテにならなかった気がします. half-minute として読んだほうが伝わりやすいか? ↩
-
と言ってもまあ swaywm 上の alacritty から操作してるので, I/O なども込みの時間になるのでしょうが… ↩
-
まあ要するにバイナリ作るときの時間だけ測りますよってことです. これ以降では Make を使うことばかりではありませんし, 引数もあったりするので… 適宜読み替えてください. 例えば, configure の時間は除きます. ↩
-
これ (終了コードは異常終了だけど出力は正常終了), 実は他のテストでも同じ現象を観測してた覚えがあるけど, これと 8.75. Systemd-255 以外メモってなかった… ↩
-
多分, arm64 が正しいのだと思いますが, arm64 と読み替えられているはず ↩
-
コピー元は
bzImage
って書いてあるけど, そんなの無えよ!と思った次第 ↩ -
U-Boot の項でも同様の内容が触れられているのだけれど, なんかよく分かんなかったので User Guide を優先した. User Guide ですし? ↩