Replace pkgsrc and mdevd with mouse ports desktop base

This commit is contained in:
Michal S.
2026-08-06 10:26:36 +01:00
parent c9dae15bc4
commit 6a8be734f3
97 changed files with 3129 additions and 810 deletions
+131 -62
View File
@@ -1,7 +1,15 @@
ARG MOUSE_ROOTFS_STAGE=rootfs-builder
ARG TARGETARCH
ARG TARGETPLATFORM
ARG MOUSE_ARCH=${TARGETARCH}
ARG MOUSE_TARGET_CONTAINER_PLATFORM=${TARGETPLATFORM}
FROM alpine@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b AS toolchain
ARG MOUSE_ARCH
ENV MOUSE_ARCH=${MOUSE_ARCH}
ENV MOUSE_BUILD_DIR=/work/mouse-src/build
RUN apk add --no-cache \
bc=1.08.2-r1 \
build-base=0.5-r4 \
@@ -30,10 +38,15 @@ ENV RUSTUP_HOME=/opt/rustup
ENV CARGO_HOME=/opt/cargo
ENV PATH=/opt/cargo/bin:/usr/lib/llvm22/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
RUN rustup-init -y \
RUN case "$MOUSE_ARCH" in \
x86_64|amd64) rust_target=x86_64-unknown-linux-musl ;; \
aarch64|arm64) rust_target=aarch64-unknown-linux-musl ;; \
*) printf '%s\n' "unsupported MOUSE architecture: $MOUSE_ARCH" >&2; exit 2 ;; \
esac \
&& rustup-init -y \
--profile minimal \
--default-toolchain 1.94.0 \
--target x86_64-unknown-linux-musl \
--target "$rust_target" \
&& chmod -R a+rX /opt/rustup /opt/cargo
WORKDIR /work/mouse-src
@@ -47,7 +60,16 @@ FROM scratch AS kernel-sources
COPY mouse-sources/kernel/ /opt/mouse-sources/
FROM scratch AS firmware-sources
COPY mouse-sources/firmware/ /opt/mouse-sources/
COPY mouse-sources/firmware/ /opt/mouse-firmware-sources/
FROM scratch AS device-firmware-sources
COPY mouse-sources/device-firmware/ /opt/mouse-sources/
FROM scratch AS wireless-sources
COPY mouse-sources/wireless/ /opt/mouse-sources/
FROM scratch AS autotools-sources
COPY mouse-sources/autotools/ /opt/mouse-sources/
FROM scratch AS facilities-sources
COPY mouse-sources/facilities/ /opt/mouse-sources/
@@ -55,13 +77,31 @@ COPY mouse-sources/facilities/ /opt/mouse-sources/
FROM scratch AS storage-sources
COPY mouse-sources/storage/ /opt/mouse-sources/
FROM scratch AS pkgsrc-sources
COPY mouse-sources/pkgsrc/ /opt/mouse-sources/
FROM scratch AS software-sources
COPY mouse-sources/software/ /opt/mouse-sources/
FROM --platform=linux/amd64 alpine@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b AS pkgsrc-seed-tools
FROM --platform=${MOUSE_TARGET_CONTAINER_PLATFORM} alpine@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b AS mouse-ports-seed-tools
RUN apk add --no-cache \
bmake \
bison \
build-base \
bash \
cargo \
curl \
git \
gperf \
gettext \
libxslt \
linux-headers \
meson \
ninja \
patch \
pkgconf \
perl \
python3 \
rust \
tzdata
FROM toolchain AS kernel-builder
@@ -69,6 +109,7 @@ RUN apk add --no-cache bison=3.8.2-r3
COPY --from=kernel-sources /opt/mouse-sources/ /opt/mouse-sources/
COPY mouse-src/base/kernel/ /work/mouse-src/base/kernel/
COPY mouse-src/scripts/mouse-arch.sh /work/mouse-src/scripts/mouse-arch.sh
COPY mouse-src/scripts/build-kernel.sh /work/mouse-src/scripts/build-kernel.sh
RUN MOUSE_SOURCE_DIR=/opt/mouse-sources \
@@ -81,9 +122,6 @@ COPY mouse-src/scripts/build-kernel-test-module.sh /work/mouse-src/scripts/build
RUN /work/mouse-src/scripts/build-kernel-test-module.sh
# Keep the resource-heavy kernel and LLVM builds from running concurrently.
# The constant marker adds an ordering edge without passing kernel artifacts
# into the static-base cache key.
FROM kernel-builder AS kernel-ready
RUN install -m 0444 /dev/null /kernel-ready
@@ -99,6 +137,7 @@ COPY --from=kernel-sources /opt/mouse-sources/ /opt/mouse-sources/
COPY --from=software-sources /opt/mouse-sources/ /opt/mouse-sources/
COPY mouse-src/base/support/cross-compiler-driver /work/mouse-src/base/support/cross-compiler-driver
COPY mouse-src/base/support/rust-eh-personality.c /work/mouse-src/base/support/rust-eh-personality.c
COPY mouse-src/scripts/mouse-arch.sh /work/mouse-src/scripts/mouse-arch.sh
COPY mouse-src/scripts/configure-cross-toolchain.sh /work/mouse-src/scripts/configure-cross-toolchain.sh
COPY mouse-src/scripts/static-base/common.sh /work/mouse-src/scripts/static-base/common.sh
COPY mouse-src/scripts/static-base/bootstrap.sh /work/mouse-src/scripts/static-base/bootstrap.sh
@@ -108,6 +147,7 @@ RUN MOUSE_SOURCE_DIR=/opt/mouse-sources \
FROM static-base-bootstrap AS static-base-libraries
COPY mouse-src/base/patches/shadow-4.20.0-stdint.patch /work/mouse-src/base/patches/shadow-4.20.0-stdint.patch
COPY mouse-src/scripts/static-base/libraries-and-accounts.sh /work/mouse-src/scripts/static-base/libraries-and-accounts.sh
RUN MOUSE_SOURCE_DIR=/opt/mouse-sources \
@@ -127,10 +167,27 @@ RUN MOUSE_NATIVE_TOOLCHAIN_PHASE=package-tools \
COPY mouse-src/scripts/static-base/dynamic-runtime.sh /work/mouse-src/scripts/static-base/dynamic-runtime.sh
RUN sh /work/mouse-src/scripts/static-base/dynamic-runtime.sh
RUN MOUSE_SOURCE_DIR=/opt/mouse-sources \
sh /work/mouse-src/scripts/static-base/dynamic-runtime.sh
FROM toolchain AS autotools-builder
ARG MOUSE_BUILD_JOBS=8
COPY --from=static-base-toolchain /work/mouse-src/build/static/sysroot /work/mouse-src/build/static/sysroot
COPY --from=static-base-toolchain /work/mouse-src/build/static/cross-tools /work/mouse-src/build/static/cross-tools
COPY --from=static-base-toolchain /work/mouse-src/build/static/rust-eh-personality.o /work/mouse-src/build/static/rust-eh-personality.o
COPY --from=autotools-sources /opt/mouse-sources/ /opt/mouse-sources/
COPY mouse-src/scripts/build-world-autotools.sh /usr/libexec/mouse-build-world-autotools
RUN MOUSE_BUILD_JOBS="$MOUSE_BUILD_JOBS" \
/usr/libexec/mouse-build-world-autotools
FROM static-base-toolchain AS static-base-system
RUN apk add --no-cache bash=5.3.9-r1
COPY --from=autotools-builder /opt/mouse-autotools/ /work/mouse-src/build/static/rootfs/
COPY mouse-src/base/patches/chimerautils-native-cdefs.patch /work/mouse-src/base/patches/chimerautils-native-cdefs.patch
COPY mouse-src/base/patches/chimerautils-scanflike.patch /work/mouse-src/base/patches/chimerautils-scanflike.patch
COPY mouse-src/base/patches/tcsh-gethost-native.patch /work/mouse-src/base/patches/tcsh-gethost-native.patch
@@ -139,7 +196,19 @@ COPY mouse-src/scripts/static-base/system-services.sh /work/mouse-src/scripts/st
RUN MOUSE_SOURCE_DIR=/opt/mouse-sources \
sh /work/mouse-src/scripts/static-base/system-services.sh
FROM static-base-system AS static-base-facilities
FROM static-base-system AS static-base-wireless
COPY --from=kernel-builder /usr/bin/bison /usr/bin/bison
COPY --from=kernel-builder /usr/share/bison /usr/share/bison
COPY --from=wireless-sources /opt/mouse-sources/ /opt/mouse-sources/
COPY mouse-src/base/patches/wpa-supplicant-2.11-openssl-4.patch /work/mouse-src/base/patches/wpa-supplicant-2.11-openssl-4.patch
COPY mouse-src/scripts/static-base/wireless.sh /work/mouse-src/scripts/static-base/wireless.sh
RUN MOUSE_SOURCE_DIR=/opt/mouse-sources \
sh /work/mouse-src/scripts/static-base/wireless.sh
FROM static-base-wireless AS static-base-facilities
COPY --from=facilities-sources /opt/mouse-sources/ /opt/mouse-sources/
COPY mouse-src/base/patches/nftables-posix-configure.patch /work/mouse-src/base/patches/nftables-posix-configure.patch
@@ -163,25 +232,17 @@ COPY mouse-src/scripts/static-base/finish.sh /work/mouse-src/scripts/static-base
RUN MOUSE_SOURCE_DIR=/opt/mouse-sources \
sh /work/mouse-src/scripts/static-base/finish.sh
FROM --platform=linux/amd64 scratch AS pkgsrc-seed-builder
FROM mouse-ports-seed-tools AS mouse-ports-seed-builder
ARG MOUSE_BUILD_JOBS=8
COPY mouse-ports/ /usr/local/src/mouse-ports/
COPY mouse-src/scripts/build-mouse-ports-seed.sh /usr/libexec/mouse-build-ports-seed
COPY --from=static-base-builder /work/mouse-src/build/static/rootfs /
COPY --from=pkgsrc-sources /opt/mouse-sources/pkgsrc-2026Q2.tar.gz /usr/share/mouse/pkgsrc-2026Q2.tar.gz
COPY mouse-src/base/rootfs/etc/group /etc/group
COPY mouse-src/base/rootfs/etc/mouse-release /etc/mouse-release
COPY mouse-src/base/rootfs/etc/passwd /etc/passwd
COPY mouse-src/base/patches/pkgsrc-bootstrap-mouse.patch /usr/share/mouse/pkgsrc-bootstrap-mouse.patch
COPY mouse-src/scripts/build-pkgsrc-seed.sh /usr/libexec/mouse-build-pkgsrc-seed
COPY --from=pkgsrc-seed-tools /bin/busybox /usr/libexec/mouse-build-busybox
RUN MOUSE_BUILD_JOBS="$MOUSE_BUILD_JOBS" \
sh /usr/libexec/mouse-build-pkgsrc-seed
RUN /usr/libexec/mouse-build-ports-seed
FROM toolchain AS btrfs-image-builder
RUN apk add --no-cache \
coreutils=9.11-r0 \
mtools=4.0.49-r0 \
pkgconf=2.5.1-r0 \
sfdisk=2.42.1-r0 \
@@ -189,31 +250,29 @@ RUN apk add --no-cache \
zlib-dev=1.3.2-r0 \
zstd-dev=1.5.7-r2
COPY --from=storage-sources /opt/mouse-sources/btrfs-progs-v7.0.tar.xz /opt/
COPY --from=storage-sources /opt/mouse-sources/limine-binary-12.3.2.tar.xz /opt/mouse-sources/limine-binary-12.3.2.tar.xz
COPY --from=storage-sources /opt/mouse-sources/btrfs-progs-v7.1.tar.xz /opt/
COPY --from=storage-sources /opt/mouse-sources/limine-binary-12.5.2.tar.xz /opt/mouse-sources/limine-binary-12.5.2.tar.xz
COPY mouse-src/scripts/build-btrfs-image-tool.sh /usr/libexec/mouse-build-btrfs-image-tool
RUN tar -C /work -xf /opt/btrfs-progs-v7.0.tar.xz \
&& cd /work/btrfs-progs-v7.0 \
&& ./configure \
--prefix=/usr \
--disable-backtrace \
--disable-documentation \
--disable-convert \
--disable-lzo \
--disable-libudev \
--disable-python \
--disable-zoned \
--with-crypto=builtin \
&& make \
-j"$MOUSE_BUILD_JOBS" \
mkfs.btrfs \
&& install -m 0755 \
/work/btrfs-progs-v7.0/mkfs.btrfs \
/opt/mkfs.btrfs
RUN MOUSE_BUILD_JOBS="$MOUSE_BUILD_JOBS" \
/usr/libexec/mouse-build-btrfs-image-tool
FROM toolchain AS device-firmware-builder
RUN apk add --no-cache coreutils=9.11-r0
COPY --from=device-firmware-sources /opt/mouse-sources/linux-firmware-20260622.tar.xz /opt/mouse-sources/
RUN tar -xf /opt/mouse-sources/linux-firmware-20260622.tar.xz -C /work \
&& make -s -C /work/linux-firmware-20260622 \
DESTDIR=/opt/mouse-device-firmware \
install-xz
FROM static-base-builder AS image-commands-builder
COPY mouse-src/base/support/mouse-bootenv /work/mouse-src/base/support/mouse-bootenv
COPY mouse-src/base/support/mouse-auth.c /work/mouse-src/base/support/mouse-auth.c
COPY mouse-src/base/support/mouse-package /work/mouse-src/base/support/mouse-package
COPY mouse-src/scripts/audit-static-base.sh /work/mouse-src/scripts/audit-static-base.sh
COPY mouse-src/scripts/build-image-commands.sh /work/mouse-src/scripts/build-image-commands.sh
@@ -224,19 +283,22 @@ FROM image-commands-builder AS test-fixtures-builder
COPY mouse-src/tests/fixtures/mouse-echo/mouse-echo.c /work/mouse-src/tests/fixtures/mouse-echo/mouse-echo.c
RUN /work/mouse-src/build/static/cross-tools/bin/x86_64-mouse-linux-musl-cc \
RUN . /work/mouse-src/scripts/mouse-arch.sh \
&& /work/mouse-src/build/static/cross-tools/bin/$MOUSE_CROSS_TARGET-cc \
-O2 -Wall -Wextra -Werror \
/work/mouse-src/tests/fixtures/mouse-echo/mouse-echo.c \
-o /opt/mouse-echo
FROM image-commands-builder AS cheesed-builder
COPY mouse-cargo/ /opt/cargo/
COPY mouse-src/base/cheesed/ /work/mouse-src/base/cheesed/
RUN CHEESED_TARGET=x86_64-unknown-linux-musl \
/work/mouse-src/base/cheesed/scripts/build-static.sh \
RUN . /work/mouse-src/scripts/mouse-arch.sh \
&& CARGO_NET_OFFLINE=true CHEESED_TARGET="$MOUSE_RUST_TARGET" \
/work/mouse-src/base/cheesed/scripts/build-static.sh \
&& install -m 0755 \
/work/mouse-src/base/cheesed/target/x86_64-unknown-linux-musl/release/cheesed \
/work/mouse-src/base/cheesed/target/$MOUSE_RUST_TARGET/release/cheesed \
/opt/cheesed
FROM btrfs-image-builder AS rootfs-common
@@ -244,11 +306,12 @@ FROM btrfs-image-builder AS rootfs-common
COPY --from=cheesed-builder /work/mouse-src/build/static/rootfs /work/mouse-src/build/static/rootfs
COPY --from=cheesed-builder /opt/cheesed /opt/cheesed
COPY --from=kernel-builder /work/mouse-src/build/vmlinuz-virt /work/mouse-src/build/vmlinuz-virt
COPY --from=pkgsrc-seed-builder /usr/local /opt/mouse-pkgsrc-seed/usr/local
COPY --from=pkgsrc-seed-builder /var/db/pkg /opt/mouse-pkgsrc-seed/var/db/pkg
COPY --from=mouse-ports-seed-builder /opt/mouse-ports-seed /opt/mouse-ports-seed
COPY mouse-src/base/rootfs/ /work/mouse-src/base/rootfs/
COPY mouse-src/base/patches/pkgsrc-rc.subr-cgroup.patch /work/mouse-src/base/patches/pkgsrc-rc.subr-cgroup.patch
COPY mouse-ports-revision /work/mouse-ports-revision
COPY mouse-src/base/patches/rc.subr-cgroup.patch /work/mouse-src/base/patches/rc.subr-cgroup.patch
COPY mouse-src/scripts/audit-static-base.sh /work/mouse-src/scripts/audit-static-base.sh
COPY mouse-src/scripts/mouse-arch.sh /work/mouse-src/scripts/mouse-arch.sh
COPY mouse-src/scripts/build-image.sh /work/mouse-src/scripts/build-image.sh
COPY mouse-src/scripts/build-boot-disk.sh /work/mouse-src/scripts/build-boot-disk.sh
COPY mouse-src/base/limine.conf /work/mouse-src/base/limine.conf
@@ -256,44 +319,50 @@ COPY mouse-src/base/limine.conf /work/mouse-src/base/limine.conf
FROM rootfs-common AS rootfs-builder
COPY --from=kernel-builder /work/mouse-src/build/kernel/modules /opt/mouse-kernel-modules
COPY --from=device-firmware-builder /opt/mouse-device-firmware /opt/mouse-device-firmware
RUN MOUSE_SOURCE_DIR=/opt/mouse-sources \
MOUSE_CHEESED_BINARY=/opt/cheesed \
MOUSE_BTRFS_IMAGE_TOOL=/opt/mkfs.btrfs \
MOUSE_PKGSRC_SEED=/opt/mouse-pkgsrc-seed \
MOUSE_PORTS_SEED=/opt/mouse-ports-seed \
MOUSE_KERNEL_MODULES=/opt/mouse-kernel-modules \
MOUSE_DEVICE_FIRMWARE=/opt/mouse-device-firmware \
/work/mouse-src/scripts/build-image.sh
FROM rootfs-common AS rootfs-test-builder
COPY --from=kernel-test-builder /work/mouse-src/build/kernel/test-modules /opt/mouse-kernel-modules
COPY --from=device-firmware-builder /opt/mouse-device-firmware /opt/mouse-device-firmware
COPY --from=test-fixtures-builder /opt/mouse-echo /opt/mouse-echo
COPY mouse-src/tests/fixtures/ /work/mouse-src/tests/fixtures/
RUN MOUSE_SOURCE_DIR=/opt/mouse-sources \
MOUSE_CHEESED_BINARY=/opt/cheesed \
MOUSE_BTRFS_IMAGE_TOOL=/opt/mkfs.btrfs \
MOUSE_PKGSRC_SEED=/opt/mouse-pkgsrc-seed \
MOUSE_PORTS_SEED=/opt/mouse-ports-seed \
MOUSE_KERNEL_MODULES=/opt/mouse-kernel-modules \
MOUSE_DEVICE_FIRMWARE=/opt/mouse-device-firmware \
MOUSE_MOUSE_ECHO_BINARY=/opt/mouse-echo \
MOUSE_INCLUDE_TEST_FIXTURES=1 \
/work/mouse-src/scripts/build-image.sh
FROM ${MOUSE_ROOTFS_STAGE} AS selected-rootfs
FROM selected-rootfs AS compressed-rootfs
RUN gzip -1 /work/mouse-src/build/mouse-disk.img \
&& gzip -t /work/mouse-src/build/mouse-disk.img.gz
FROM toolchain AS artifact-packer
COPY --from=selected-rootfs /work/mouse-src/build/mouse-disk.img /
COPY --from=firmware-sources /opt/mouse-sources/ovmf-0.0.202605-r0.apk /opt/
COPY --from=compressed-rootfs /work/mouse-src/build/mouse-disk.img.gz /
COPY --from=firmware-sources /opt/mouse-firmware-sources/ /opt/mouse-sources/
COPY mouse-src/scripts/extract-build-firmware.sh /usr/libexec/mouse-extract-build-firmware
RUN mkdir -p /opt/ovmf \
&& tar -xf /opt/ovmf-0.0.202605-r0.apk \
-C /opt/ovmf \
usr/share/OVMF/OVMF_CODE.fd \
&& gzip -1 /mouse-disk.img
RUN /usr/libexec/mouse-extract-build-firmware
FROM scratch AS artifacts
COPY --from=kernel-builder /work/mouse-src/build/vmlinuz-virt /
COPY --from=artifact-packer /mouse-disk.img.gz /
COPY --from=artifact-packer /opt/ovmf/usr/share/OVMF/OVMF_CODE.fd /ovmf-code.fd
COPY --from=artifact-packer /uefi-code.fd /