diff --git a/aimee-os b/aimee-os index 79e69cf..5bce7df 160000 --- a/aimee-os +++ b/aimee-os @@ -1 +1 @@ -Subproject commit 79e69cf70df3586bd4ef4b15f577b42719380f38 +Subproject commit 5bce7dfab30a142491330529a86f87091b0c1ec0 diff --git a/build.packages b/build.packages index 9677552..26ab468 100644 --- a/build.packages +++ b/build.packages @@ -1,2 +1,5 @@ sys-boot/raspberrypi-firmware sys-boot/u-boot +x11-libs/gtk+ +media-libs/mesa +media-video/ffmpeg diff --git a/ci/Jenkinsfile b/ci/Jenkinsfile index caa909c..adcf8e4 100644 --- a/ci/Jenkinsfile +++ b/ci/Jenkinsfile @@ -9,9 +9,15 @@ pipeline { } stages { + stage('Prepare') { + steps { + sh '. ./prepare.sh' + } + } + stage('Build') { steps { - sh 'make -C aimee-os CONFIGDIR=${PWD} O=/build' + sh 'env -i PATH="${PATH}" make -C aimee-os CONFIGDIR=${PWD} O=/build' } } } @@ -23,5 +29,10 @@ pipeline { archiveArtifacts '*' } } + failure { + dir('/var/tmp/portage') { + archiveArtifacts '*/*/temp/*.log' + } + } } } diff --git a/ci/podTemplate.yaml b/ci/podTemplate.yaml index 7ea65cf..a0f1c5c 100644 --- a/ci/podTemplate.yaml +++ b/ci/podTemplate.yaml @@ -13,6 +13,7 @@ spec: capabilities: add: - CAP_SETFCAP + - CAP_SYS_CHROOT volumeMounts: - mountPath: /build name: workspace-volume @@ -21,12 +22,24 @@ spec: name: workspace-volume subPath: gentoo - mountPath: /usr/aarch64-unknown-linux-gnu/var/cache/binpkgs - name: workspace-volume - subPath: binpkgs + name: binpkgs + subPath: photoframe2 - mountPath: /var/cache/binpkgs - name: workspace-volume - subPath: binpkgs + name: binpkgs + subPath: photoframe2 - mountPath: /var/cache/distfiles name: workspace-volume subPath: distfiles + - mountPath: /var/db/repos/gentoo + name: portage + - mountPath: /var/tmp + name: workspace-volume + subPath: tmp hostUsers: false + volumes: + - name: binpkgs + persistentVolumeClaim: + claimName: binpkgs + - name: portage + persistentVolumeClaim: + claimName: portage diff --git a/config b/config index 498a548..cfaad3e 100644 --- a/config +++ b/config @@ -3,3 +3,4 @@ profile=default/linux/arm64/23.0/systemd kernel_pkg=sys-kernel/raspberrypi-sources kernel_defconfig=bcm2835 device_tree=broadcom/bcm2711-rpi-4-b.dtb +rootflags='ro rootwait=4' diff --git a/customize.sh b/customize.sh new file mode 100755 index 0000000..b0cb5da --- /dev/null +++ b/customize.sh @@ -0,0 +1,16 @@ +#!/bin/sh +# vim: set sw=4 ts=4 sts=4 et : + +. "${CONFIGDIR:=${PWD}}"/config + +O=$1 + +export PORTAGE_CONFIGROOT="$O"/portage + +${target}-emerge -vbknuUDj --onlydeps 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 + +passwd -R /mnt/gentoo -d root + +systemctl --root=/mnt/gentoo enable wpa_supplicant@wlan0 diff --git a/install.packages b/install.packages index e69de29..1c92159 100644 --- a/install.packages +++ b/install.packages @@ -0,0 +1,3 @@ +gui-wm/sway +net-wireless/wpa_supplicant +media-video/pipewire diff --git a/installonly.packages b/installonly.packages new file mode 100644 index 0000000..5227b06 --- /dev/null +++ b/installonly.packages @@ -0,0 +1 @@ +sys-kernel/linux-firmware diff --git a/linux.config b/linux.config index 169ff93..579d5e5 100644 --- a/linux.config +++ b/linux.config @@ -14,6 +14,9 @@ CONFIG_PCI=y CONFIG_PCIE_BRCMSTB=y CONFIG_BLK_DEV_NVME=y +CONFIG_MMC_BCM2835_SDHOST=y +CONFIG_MMC_BCM2835_MMC=y + CONFIG_FW_LOADER_COMPRESS=y CONFIG_I2C=y diff --git a/overlay/etc/aimee-os/writable-etc b/overlay/etc/aimee-os/writable-etc new file mode 100644 index 0000000..f364079 --- /dev/null +++ b/overlay/etc/aimee-os/writable-etc @@ -0,0 +1 @@ +d wpa_supplicant diff --git a/overlay/etc/systemd/network/95-default.network b/overlay/etc/systemd/network/95-default.network new file mode 100644 index 0000000..3a1192d --- /dev/null +++ b/overlay/etc/systemd/network/95-default.network @@ -0,0 +1,11 @@ +[Match] +Type=ether wlan + +[Network] +DHCP=yes + +[DHCPv4] +UseDomains=yes + +[DHCPv6] +UseDomains=yes diff --git a/portage/make.conf/60-use.conf b/portage/make.conf/60-use.conf new file mode 100644 index 0000000..ad110bb --- /dev/null +++ b/portage/make.conf/60-use.conf @@ -0,0 +1 @@ +USE="${USE} -python -readline" diff --git a/portage/make.conf/introspection.conf b/portage/make.conf/introspection.conf new file mode 100644 index 0000000..63c418a --- /dev/null +++ b/portage/make.conf/introspection.conf @@ -0,0 +1,4 @@ +# Disable GObject introspection because it cannot be cross-compiled +# https://bugs.gentoo.org/850895 +# https://bugs.gentoo.org/751325 +USE="${USE} -introspection -vala" diff --git a/portage/make.conf/systemd.conf b/portage/make.conf/systemd.conf new file mode 100644 index 0000000..d052222 --- /dev/null +++ b/portage/make.conf/systemd.conf @@ -0,0 +1 @@ +INSTALL_MASK="${INSTALL_MASK} /usr/lib/systemd/systemd-nsresourced* /usr/lib/systemd/system/systemd-nsresourced.*" diff --git a/portage/make.conf/videocore.conf b/portage/make.conf/videocore.conf new file mode 100644 index 0000000..05c0c2b --- /dev/null +++ b/portage/make.conf/videocore.conf @@ -0,0 +1 @@ +VIDEO_CARDS='v3d vc4' diff --git a/portage/make.conf/wayland.conf b/portage/make.conf/wayland.conf new file mode 100644 index 0000000..624b840 --- /dev/null +++ b/portage/make.conf/wayland.conf @@ -0,0 +1 @@ +USE="${USE} wayland" diff --git a/portage/package.license/linux-firmware b/portage/package.license/linux-firmware new file mode 100644 index 0000000..348558e --- /dev/null +++ b/portage/package.license/linux-firmware @@ -0,0 +1 @@ +sys-kernel/linux-firmware linux-fw-redistributable diff --git a/portage/package.use/firefox b/portage/package.use/firefox new file mode 100644 index 0000000..d877364 --- /dev/null +++ b/portage/package.use/firefox @@ -0,0 +1,15 @@ +media-libs/harfbuzz -cairo +media-libs/libvpx postproc +media-libs/mesa -llvm wayland +media-video/ffmpeg openssl -gnutls + +# 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 diff --git a/portage/patches/gnome-base/librsvg/do-not-build-rsvg-convert.patch b/portage/patches/gnome-base/librsvg/do-not-build-rsvg-convert.patch new file mode 100644 index 0000000..4e2775e --- /dev/null +++ b/portage/patches/gnome-base/librsvg/do-not-build-rsvg-convert.patch @@ -0,0 +1,48 @@ +--- a/Makefile.in 2024-12-13 12:17:08.339616211 -0600 ++++ b/Makefile.in 2024-12-13 12:18:30.301517960 -0600 +@@ -641,12 +641,6 @@ + rsvg/src/test_utils/reference_utils.rs \ + rsvg-bench/Cargo.toml \ + rsvg-bench/src/main.rs \ +- rsvg_convert/tests/internal_predicates/file.rs \ +- rsvg_convert/tests/internal_predicates/mod.rs \ +- rsvg_convert/tests/internal_predicates/pdf.rs \ +- rsvg_convert/tests/internal_predicates/png.rs \ +- rsvg_convert/tests/internal_predicates/svg.rs \ +- rsvg_convert/tests/rsvg_convert.rs \ + librsvg-c/tests/legacy_sizing.rs \ + gdk-pixbuf-loader/Cargo.toml \ + gdk-pixbuf-loader/src/lib.rs \ +@@ -685,15 +679,6 @@ + librsvgincdir = $(includedir)/librsvg-$(RSVG_API_VERSION)/librsvg + librsvginc_HEADERS = $(librsvg_public_headers) + +-# Use SCRIPTS instead of PROGRAMS since we build it on our own +-bin_SCRIPTS = rsvg-convert$(EXEEXT) +-RSVG_CONVERT_BIN = $(CARGO_TARGET_DIR)/$(RUST_TARGET_SUBDIR)/rsvg-convert$(EXEEXT) +-RSVG_CONVERT_SRC = \ +- rsvg_convert/Cargo.toml \ +- rsvg_convert/build.rs \ +- rsvg_convert/src/main.rs \ +- $(NULL) +- + @HAVE_RST2MAN_TRUE@man1_MANS = rsvg-convert.1 + dist_doc_DATA = \ + README.md \ +@@ -1643,16 +1628,6 @@ + $(CARGO) --locked build $(CARGO_VERBOSE) $(CARGO_TARGET_ARGS) $(CARGO_RELEASE_ARGS) --package librsvg-c \ + && cd $(LIBRSVG_BUILD_DIR) && $(LINK) $< && cp $(RUST_LIB) .libs/librsvg_c_api.a + +-$(RSVG_CONVERT_BIN): $(RSVG_CONVERT_SRC) | librsvg_c_api.la +- +cd $(top_srcdir) && \ +- PKG_CONFIG_ALLOW_CROSS=1 \ +- PKG_CONFIG='$(PKG_CONFIG)' \ +- CARGO_TARGET_DIR=$(CARGO_TARGET_DIR) \ +- $(CARGO) --locked build $(CARGO_VERBOSE) $(CARGO_TARGET_ARGS) $(CARGO_RELEASE_ARGS) --package rsvg_convert +- +-rsvg-convert$(EXEEXT): $(RSVG_CONVERT_BIN) +- cd $(LIBRSVG_BUILD_DIR) && cp $(RSVG_CONVERT_BIN) rsvg-convert$(EXEEXT) +- + rsvg-convert.1: rsvg-convert.rst + @HAVE_RST2MAN_TRUE@ $(RST2MAN) $(top_srcdir)/rsvg-convert.rst rsvg-convert.1 + @HAVE_RST2MAN_FALSE@ @echo "========================================" diff --git a/portage/savedconfig/sys-kernel/linux-firmware b/portage/savedconfig/sys-kernel/linux-firmware new file mode 100644 index 0000000..70350d9 --- /dev/null +++ b/portage/savedconfig/sys-kernel/linux-firmware @@ -0,0 +1,17 @@ +# symlink targets have to be specified explicity +../cypress/cyfmac43455-sdio.bin +../cypress/cyfmac43455-sdio.clm_blob + +brcm/brcmfmac43455-sdio.AW-CM256SM.txt +brcm/brcmfmac43455-sdio.MINIX-NEO Z83-4.txt +brcm/brcmfmac43455-sdio.Raspberry Pi Foundation-Raspberry Pi 4 Model B.txt +brcm/brcmfmac43455-sdio.Raspberry Pi Foundation-Raspberry Pi Compute Module 4.txt +brcm/brcmfmac43455-sdio.acepc-t8.txt +brcm/brcmfmac43455-sdio.beagle,am5729-beagleboneai.txt +brcm/brcmfmac43455-sdio.bin +brcm/brcmfmac43455-sdio.clm_blob +brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.txt +brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt +brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt +cypress/cyfmac43455-sdio.bin +cypress/cyfmac43455-sdio.clm_blob diff --git a/prepare.sh b/prepare.sh new file mode 100644 index 0000000..9c6dd89 --- /dev/null +++ b/prepare.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +. "${CONFIGDIR:=${PWD}}"/config + +if [ ! -f /var/db/repos/gentoo/metadata/timestamp ]; then + emerge-webrsync +fi +if [ "$(find /var/db/repos/gentoo/metadata -newermt '-24 hours' | wc -l)" -eq 0 ]; then + emaint sync +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/ +echo 'VIDEO_CARDS=""' > /etc/portage/make.conf/videocards.conf + +xargs -r emerge -vbknuUj --rebuilt-binaries=y --color=y <