Install Firefox from Gentoo binpkg
Unfortunately, even building Firefox with GCC fails:
> 3:30.02 [gecko-profiler 0.1.0] /../lib/gcc/aarch64-unknown-linux-gnu/14/include/g++-v14/cstdlib:79:15: fatal error: 'stdlib.h' file not found
> 3:30.02 [gecko-profiler 0.1.0] thread 'main' panicked at tools/profiler/rust-api/build.rs:104:10:
> 3:30.02 [gecko-profiler 0.1.0] Unable to generate bindings: ClangDiagnostic("/../lib/gcc/aarch64-unknown-linux-gnu/14/include/g++-v14/cstdlib:79:15: fatal error: 'stdlib.h' file not found\n")
Clearly, something is misconfigured, because `stdlib.h` does indeed
exist. I am not sure what, though, and I am getting tired of messing
with this.
Fortunately, the official Gentoo binary package project has a build of
_www-client/firefox_ for ARM64. It has a rather different USE flag
configuration than what we did, though, so we have to pull in quite a
few more dependencies.
We can't just add _www-client/firefox_ to `install.packages` because
Aimee OS runs `emerge` with `--getbinpkgonly`, which implies
`--binpkg-changed-deps=y`. This since we want to build everything
_except_ Firefox locally, the dependency graph is quite a bit different,
so Portage ignores the binary package and will try to build
_www-client/firefox_ from source.
To work around this limitation, we need to install Firefox manually in
the `customize.sh` script in two phases. First, we install all of its
dependencies in the build root (`/usr/aarch64-…`), but not Firefox
itself, to get binpkgs for them. Then, we install _www-client/firefox_
in the target root (`/mnt/gentoo`) with the `--getbinpkg` and
`--usepkgonly` flags.
Hopefully, one day I can figure out how to cross-compile Firefox (and it
doesn't take days to build once I do), and we can remove this hackery.
This commit is contained in:
@@ -1,2 +1,5 @@
|
||||
sys-boot/raspberrypi-firmware
|
||||
sys-boot/u-boot
|
||||
x11-libs/gtk+
|
||||
media-libs/mesa
|
||||
media-video/ffmpeg
|
||||
|
||||
12
customize.sh
12
customize.sh
@@ -1,6 +1,18 @@
|
||||
#!/bin/sh
|
||||
# vim: set sw=4 ts=4 sts=4 et :
|
||||
|
||||
. "${CONFIGDIR:=${PWD}}"/config
|
||||
|
||||
O=$1
|
||||
|
||||
export PORTAGE_CONFIGROOT="$O"/portage
|
||||
|
||||
if [ ! -f /mnt/gentoo/usr/lib64/firefox/firefox ]; then
|
||||
${target}-emerge -vbknuUDj --onlydeps --with-bdeps=n www-client/firefox:esr
|
||||
PORTAGE_BINHOST=https://distfiles.gentoo.org/releases/arm64/binpackages/23.0/arm64 \
|
||||
${target}-emerge -vgKnj --root=/mnt/gentoo www-client/firefox:esr
|
||||
fi
|
||||
|
||||
passwd -R /mnt/gentoo -d root
|
||||
|
||||
systemctl --root=/mnt/gentoo enable wpa_supplicant@wlan0
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
net-wireless/wpa_supplicant
|
||||
www-client/firefox
|
||||
media-video/pipewire
|
||||
|
||||
@@ -1 +1 @@
|
||||
USE="${USE} -X wayland"
|
||||
USE="${USE} wayland"
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
dev-libs/nss ~amd64
|
||||
@@ -2,5 +2,14 @@ media-libs/harfbuzz -cairo
|
||||
media-libs/libvpx postproc
|
||||
media-libs/mesa -llvm wayland
|
||||
media-video/ffmpeg openssl -gnutls
|
||||
www-client/firefox -clang -telemetry dbus wayland
|
||||
|
||||
# Must match USE flags of the www-client/firefox package on the
|
||||
# offical Gentoo binhost
|
||||
www-client/firefox X clang dbus gmp-autoupdate gnome-shell jumbo-build pulseaudio system-av1 system-harfbuzz system-icu system-jpeg system-libevent system-libvpx system-webp telemetry wayland LLVM_SLOT: 19 -17 -18
|
||||
x11-libs/cairo X
|
||||
x11-libs/gtk+ wayland
|
||||
media-libs/libglvnd X
|
||||
|
||||
# Firefox requires a PulseAudio-compatible sound server; we use Pipewire
|
||||
media-video/pipewire sound-server
|
||||
media-libs/libcanberra udev alsa
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
. "${CONFIGDIR:=${PWD}}"/config
|
||||
|
||||
if [ ! -f /var/db/repos/gentoo/metadata/timestamp ]; then
|
||||
emerge-webrsync
|
||||
fi
|
||||
@@ -9,6 +11,7 @@ fi
|
||||
|
||||
mkdir -p /etc/portage/package.use
|
||||
mkdir -p /etc/portage/make.conf
|
||||
echo 'virtual/libudev systemd' >> /etc/portage/package.use/systemd
|
||||
cp portage/package.use/firefox /etc/portage/package.use/
|
||||
cp portage/make.conf/introspection.conf /etc/portage/make.conf/
|
||||
cp portage/make.conf/wayland.conf /etc/portage/make.conf/
|
||||
@@ -17,3 +20,5 @@ echo 'VIDEO_CARDS=""' > /etc/portage/make.conf/videocards.conf
|
||||
xargs -r emerge -vbknuUj --rebuilt-binaries=y --color=y <<EOF
|
||||
dev-libs/nss
|
||||
EOF
|
||||
|
||||
[ -d /etc/portage/gnupg ] || getuto -v
|
||||
|
||||
Reference in New Issue
Block a user