Fix ISO build pipeline for Docker on macOS
- Disable pacman alpm sandbox in Dockerfile (seccomp blocks it in BuildKit) - Move mkarchiso from RUN to CMD so it runs with --privileged at docker run time - Fix output path: mkarchiso now writes to /dist (matches volume mount) - Add syslinux + imlib2 to Docker build packages and live ISO package list - Copy syslinux/ and efiboot/ boot configs from archiso releng into profile - Switch deprecated UEFI grub bootmodes to uefi-x64.systemd-boot - Fix wrong package names: libpam→pam, light→brightnessctl, remove pkexec - Set SigLevel=Never and hardcode reliable mirrors in profile pacman.conf - Add mkinitcpio.conf with archiso hook so initrd can mount the live squashfs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
e2e8c49a0a
commit
18d3675368
6 files changed
+47
-17
No files matched your search
+1
-1
@@ -66,7 +66,7 @@ docker run \
|
|||||||
# ── rename with date tag ──────────────────────────────────────────────
|
# ── rename with date tag ──────────────────────────────────────────────
|
||||||
echo ""
|
echo ""
|
||||||
echo "Step 3/3: Finalizing..."
|
echo "Step 3/3: Finalizing..."
|
||||||
ISO="$(find "$DIST" -name "orionos*.iso" | head -1)"
|
ISO="$(find "$DIST" -iname "*.iso" | head -1)"
|
||||||
if [[ -z "$ISO" ]]; then
|
if [[ -z "$ISO" ]]; then
|
||||||
echo "ERROR: ISO not found in $DIST — check the build output above."
|
echo "ERROR: ISO not found in $DIST — check the build output above."
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
+26
-7
@@ -1,9 +1,13 @@
|
|||||||
FROM archlinux:latest
|
FROM archlinux:latest
|
||||||
|
|
||||||
|
# Disable pacman's alpm sandbox (seccomp-incompatible inside Docker/BuildKit)
|
||||||
|
RUN echo "DisableSandbox" >> /etc/pacman.conf
|
||||||
|
|
||||||
# Update and install archiso + OrionOS build dependencies
|
# Update and install archiso + OrionOS build dependencies
|
||||||
RUN pacman -Syu --noconfirm && \
|
RUN pacman -Syu --noconfirm && \
|
||||||
pacman -S --noconfirm \
|
pacman -S --noconfirm \
|
||||||
archiso \
|
archiso \
|
||||||
|
syslinux \
|
||||||
base-devel \
|
base-devel \
|
||||||
git \
|
git \
|
||||||
libx11 \
|
libx11 \
|
||||||
@@ -11,6 +15,7 @@ RUN pacman -Syu --noconfirm && \
|
|||||||
libxfixes \
|
libxfixes \
|
||||||
libxext \
|
libxext \
|
||||||
libpng \
|
libpng \
|
||||||
|
imlib2 \
|
||||||
dbus \
|
dbus \
|
||||||
pam \
|
pam \
|
||||||
fontconfig \
|
fontconfig \
|
||||||
@@ -30,8 +35,22 @@ WORKDIR /build
|
|||||||
# Copy OrionOS source
|
# Copy OrionOS source
|
||||||
COPY . /build/orionos
|
COPY . /build/orionos
|
||||||
|
|
||||||
# Build OrionOS components
|
# Bootstrap boot loader configs from the installed archiso releng profile.
|
||||||
RUN cd /build/orionos && make 2>&1 | tail -20
|
# syslinux/ is required for bios.syslinux.mbr; efiboot/ for systemd-boot UEFI.
|
||||||
|
# Fall back to a minimal loader.conf if releng ships without efiboot/.
|
||||||
|
RUN cp -r /usr/share/archiso/configs/releng/syslinux \
|
||||||
|
/build/orionos/iso/profile/ && \
|
||||||
|
if [ -d /usr/share/archiso/configs/releng/efiboot ]; then \
|
||||||
|
cp -r /usr/share/archiso/configs/releng/efiboot \
|
||||||
|
/build/orionos/iso/profile/; \
|
||||||
|
else \
|
||||||
|
mkdir -p /build/orionos/iso/profile/efiboot/loader/entries && \
|
||||||
|
printf 'timeout 4\ndefault arch-*\n' \
|
||||||
|
> /build/orionos/iso/profile/efiboot/loader/loader.conf; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build OrionOS components (full output — no tail so errors are visible)
|
||||||
|
RUN cd /build/orionos && make
|
||||||
|
|
||||||
# Install binaries into the staging root that archiso will include
|
# Install binaries into the staging root that archiso will include
|
||||||
RUN cd /build/orionos && \
|
RUN cd /build/orionos && \
|
||||||
@@ -44,6 +63,7 @@ RUN cd /build/orionos && \
|
|||||||
install -Dm755 orionshot/orionshot /build/orionos/iso/profile/airootfs/usr/local/bin/orionshot && \
|
install -Dm755 orionshot/orionshot /build/orionos/iso/profile/airootfs/usr/local/bin/orionshot && \
|
||||||
install -Dm755 orionclip/orionclip /build/orionos/iso/profile/airootfs/usr/local/bin/orionclip && \
|
install -Dm755 orionclip/orionclip /build/orionos/iso/profile/airootfs/usr/local/bin/orionclip && \
|
||||||
install -Dm755 orionpkg/orionpkg /build/orionos/iso/profile/airootfs/usr/local/bin/orionpkg && \
|
install -Dm755 orionpkg/orionpkg /build/orionos/iso/profile/airootfs/usr/local/bin/orionpkg && \
|
||||||
|
mkdir -p /build/orionos/iso/profile/airootfs/usr/share/themes/ && \
|
||||||
cp -r themes/OrionOS /build/orionos/iso/profile/airootfs/usr/share/themes/ && \
|
cp -r themes/OrionOS /build/orionos/iso/profile/airootfs/usr/share/themes/ && \
|
||||||
install -Dm644 themes/picom.conf /build/orionos/iso/profile/airootfs/etc/orionos/picom.conf
|
install -Dm644 themes/picom.conf /build/orionos/iso/profile/airootfs/etc/orionos/picom.conf
|
||||||
|
|
||||||
@@ -53,10 +73,9 @@ RUN mkdir -p /build/orionos/iso/profile/airootfs/usr/share/orionos/wallpapers &&
|
|||||||
cp -f /build/orionos/themes/wallpapers/orionos-default.png \
|
cp -f /build/orionos/themes/wallpapers/orionos-default.png \
|
||||||
/build/orionos/iso/profile/airootfs/usr/share/orionos/wallpapers/ 2>/dev/null || true
|
/build/orionos/iso/profile/airootfs/usr/share/orionos/wallpapers/ 2>/dev/null || true
|
||||||
|
|
||||||
# Build the ISO
|
# Build the ISO at container runtime — mkarchiso needs --privileged (from docker run)
|
||||||
RUN mkarchiso -v \
|
# Output goes to /dist which build-iso.sh mounts from the host.
|
||||||
|
CMD mkarchiso -v \
|
||||||
-w /tmp/iso-work \
|
-w /tmp/iso-work \
|
||||||
-o /output \
|
-o /dist \
|
||||||
/build/orionos/iso/profile
|
/build/orionos/iso/profile
|
||||||
|
|
||||||
CMD ["/bin/bash"]
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
MODULES=()
|
||||||
|
BINARIES=()
|
||||||
|
FILES=()
|
||||||
|
HOOKS=(base udev microcode archiso block filesystems keyboard)
|
||||||
@@ -24,10 +24,12 @@ libxft
|
|||||||
libxfixes
|
libxfixes
|
||||||
libxext
|
libxext
|
||||||
libpng
|
libpng
|
||||||
|
imlib2
|
||||||
dbus
|
dbus
|
||||||
libpam
|
pam
|
||||||
fontconfig
|
fontconfig
|
||||||
freetype2
|
freetype2
|
||||||
|
syslinux
|
||||||
|
|
||||||
# Desktop utilities
|
# Desktop utilities
|
||||||
feh
|
feh
|
||||||
@@ -40,14 +42,13 @@ alsa-utils
|
|||||||
pulseaudio
|
pulseaudio
|
||||||
|
|
||||||
# Brightness
|
# Brightness
|
||||||
light
|
brightnessctl
|
||||||
|
|
||||||
# Media playback control
|
# Media playback control
|
||||||
playerctl
|
playerctl
|
||||||
|
|
||||||
# Arch tools
|
# Arch tools
|
||||||
pacman-contrib
|
pacman-contrib
|
||||||
pkexec
|
|
||||||
polkit
|
polkit
|
||||||
|
|
||||||
# System tools
|
# System tools
|
||||||
|
|||||||
+11
-4
@@ -1,14 +1,21 @@
|
|||||||
[options]
|
[options]
|
||||||
HoldPkg = pacman glibc
|
HoldPkg = pacman glibc
|
||||||
Architecture = auto
|
Architecture = auto
|
||||||
CheckSpace
|
CheckSpace
|
||||||
ParallelDownloads = 5
|
ParallelDownloads = 5
|
||||||
|
SigLevel = Never
|
||||||
|
|
||||||
[core]
|
[core]
|
||||||
Include = /etc/pacman.d/mirrorlist
|
Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch
|
||||||
|
Server = https://mirrors.kernel.org/archlinux/$repo/os/$arch
|
||||||
|
Server = https://mirror.rackspace.com/archlinux/$repo/os/$arch
|
||||||
|
|
||||||
[extra]
|
[extra]
|
||||||
Include = /etc/pacman.d/mirrorlist
|
Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch
|
||||||
|
Server = https://mirrors.kernel.org/archlinux/$repo/os/$arch
|
||||||
|
Server = https://mirror.rackspace.com/archlinux/$repo/os/$arch
|
||||||
|
|
||||||
[multilib]
|
[multilib]
|
||||||
Include = /etc/pacman.d/mirrorlist
|
Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch
|
||||||
|
Server = https://mirrors.kernel.org/archlinux/$repo/os/$arch
|
||||||
|
Server = https://mirror.rackspace.com/archlinux/$repo/os/$arch
|
||||||
@@ -9,8 +9,7 @@ iso_version="$(date +%Y.%m)"
|
|||||||
install_dir="arch"
|
install_dir="arch"
|
||||||
buildmodes=('iso')
|
buildmodes=('iso')
|
||||||
bootmodes=('bios.syslinux.mbr' 'bios.syslinux.eltorito'
|
bootmodes=('bios.syslinux.mbr' 'bios.syslinux.eltorito'
|
||||||
'uefi-ia32.grub.esp' 'uefi-x64.grub.esp'
|
'uefi-x64.systemd-boot.esp' 'uefi-x64.systemd-boot.eltorito')
|
||||||
'uefi-ia32.grub.eltorito' 'uefi-x64.grub.eltorito')
|
|
||||||
arch="x86_64"
|
arch="x86_64"
|
||||||
pacman_conf="pacman.conf"
|
pacman_conf="pacman.conf"
|
||||||
airootfs_image_type="squashfs"
|
airootfs_image_type="squashfs"
|
||||||
|
|||||||
Reference in new issue
Block a user