2024-08-18 23:09:39 +00:00
|
|
|
FROM scratch AS base
|
2024-09-16 22:26:08 +00:00
|
|
|
ENV VERSION=9.1.0
|
|
|
|
ENV SRC_HASH=816b7022a8ba7c2ac30e2e0cf973e826f6bcc8505339603212c5ede8e94d7834
|
2024-08-18 23:09:39 +00:00
|
|
|
ENV SRC_FILE=qemu-${VERSION}.tar.xz
|
|
|
|
ENV SRC_SITE=https://download.qemu.org/${SRC_FILE}
|
|
|
|
|
|
|
|
FROM base AS fetch
|
|
|
|
ADD --checksum=sha256:${SRC_HASH} ${SRC_SITE} .
|
|
|
|
|
|
|
|
FROM fetch AS build
|
|
|
|
COPY --from=stagex/busybox . /
|
|
|
|
COPY --from=stagex/bash . /
|
|
|
|
COPY --from=stagex/gzip . /
|
|
|
|
COPY --from=stagex/gcc . /
|
|
|
|
COPY --from=stagex/binutils . /
|
|
|
|
COPY --from=stagex/python . /
|
|
|
|
COPY --from=stagex/py-docutils . /
|
|
|
|
COPY --from=stagex/py-pygments . /
|
|
|
|
COPY --from=stagex/py-babel . /
|
|
|
|
COPY --from=stagex/py-packaging . /
|
|
|
|
COPY --from=stagex/py-sphinx . /
|
|
|
|
COPY --from=stagex/py-sphinx_rtd_theme . /
|
|
|
|
COPY --from=stagex/py-sphinxcontrib-applehelp . /
|
|
|
|
COPY --from=stagex/py-sphinxcontrib-devhelp . /
|
|
|
|
COPY --from=stagex/py-sphinxcontrib-htmlhelp . /
|
|
|
|
COPY --from=stagex/py-sphinxcontrib-qthelp . /
|
|
|
|
COPY --from=stagex/py-sphinxcontrib-serializinghtml . /
|
|
|
|
COPY --from=stagex/py-sphinxcontrib-jquery . /
|
|
|
|
COPY --from=stagex/py-jinja2 . /
|
|
|
|
COPY --from=stagex/py-markupsafe . /
|
|
|
|
COPY --from=stagex/py-snowballstemmer . /
|
|
|
|
COPY --from=stagex/py-imagesize . /
|
|
|
|
COPY --from=stagex/py-requests . /
|
|
|
|
COPY --from=stagex/py-urllib3 . /
|
|
|
|
COPY --from=stagex/py-idna . /
|
|
|
|
COPY --from=stagex/py-certifi . /
|
|
|
|
COPY --from=stagex/py-alabaster . /
|
|
|
|
COPY --from=stagex/make . /
|
|
|
|
COPY --from=stagex/bison . /
|
|
|
|
COPY --from=stagex/meson . /
|
|
|
|
COPY --from=stagex/ninja . /
|
|
|
|
COPY --from=stagex/libtool . /
|
|
|
|
COPY --from=stagex/openssl . /
|
|
|
|
COPY --from=stagex/git . /
|
|
|
|
COPY --from=stagex/zlib . /
|
|
|
|
COPY --from=stagex/libffi . /
|
|
|
|
COPY --from=stagex/libaio . /
|
|
|
|
COPY --from=stagex/libzstd . /
|
|
|
|
COPY --from=stagex/libseccomp . /
|
|
|
|
COPY --from=stagex/libcap-ng . /
|
2024-09-10 06:09:52 +00:00
|
|
|
COPY --from=stagex/libslirp . /
|
2024-08-18 23:09:39 +00:00
|
|
|
COPY --from=stagex/alsa-lib . /
|
|
|
|
COPY --from=stagex/ncurses . /
|
|
|
|
COPY --from=stagex/curl . /
|
|
|
|
COPY --from=stagex/flex . /
|
|
|
|
COPY --from=stagex/openssh . /
|
|
|
|
COPY --from=stagex/perl . /
|
|
|
|
COPY --from=stagex/pcre2 . /
|
|
|
|
COPY --from=stagex/glib . /
|
|
|
|
COPY --from=stagex/lzo . /
|
|
|
|
COPY --from=stagex/dtc . /
|
|
|
|
COPY --from=stagex/autoconf . /
|
|
|
|
COPY --from=stagex/automake . /
|
|
|
|
COPY --from=stagex/pkgconf . /
|
|
|
|
COPY --from=stagex/gettext . /
|
|
|
|
COPY --from=stagex/numactl . /
|
|
|
|
COPY --from=stagex/m4 . /
|
|
|
|
COPY --from=stagex/argp-standalone . /
|
|
|
|
COPY --from=stagex/musl . /
|
|
|
|
COPY --from=stagex/musl-fts . /
|
|
|
|
COPY --from=stagex/musl-obstack . /
|
|
|
|
COPY --from=stagex/linux-headers . /
|
|
|
|
RUN tar -xf ${SRC_FILE}
|
2024-08-26 01:18:52 +00:00
|
|
|
WORKDIR /qemu-${VERSION}
|
2024-08-18 23:09:39 +00:00
|
|
|
ADD *.patch .
|
|
|
|
ENV SOURCE_DATE_EPOCH=1
|
|
|
|
ENV LDFLAGS=" \
|
|
|
|
-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro \
|
|
|
|
-Wl,-z,now -Wl,-z,pack-relative-relocs"
|
|
|
|
ENV CFLAGS=" \
|
|
|
|
-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \
|
|
|
|
-Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \
|
|
|
|
-fstack-clash-protection -fcf-protection \
|
|
|
|
-fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"
|
|
|
|
ENV CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"
|
|
|
|
ENV LTOFLAGS="-flto=auto"
|
2024-09-16 22:26:08 +00:00
|
|
|
ENV TARGET_LIST="x86_64-softmmu,x86_64-linux-user,i386-softmmu,i386-linux-user"
|
|
|
|
COPY <<-EOF pc-bios/optionrom/config.mak
|
|
|
|
TOPSRC_DIR=/qemu-${VERSION}
|
|
|
|
CC=gcc
|
|
|
|
CCAS=gcc
|
|
|
|
AR=ar
|
|
|
|
AS=as
|
|
|
|
LD=ld
|
|
|
|
NM=nm
|
|
|
|
OBJCOPY=objcopy
|
|
|
|
RANLIB=ranlib
|
|
|
|
STRIP=strip
|
|
|
|
EOF
|
2024-08-18 23:09:39 +00:00
|
|
|
RUN --network=none <<-EOF
|
|
|
|
set -eux
|
2024-09-16 22:26:08 +00:00
|
|
|
# rm -rf pc-bios/*.bz2
|
|
|
|
rm -rf \
|
|
|
|
pc-bios/*.bin \
|
|
|
|
pc-bios/*.rom \
|
|
|
|
pc-bios/*.img \
|
|
|
|
pc-bios/*.e500 \
|
|
|
|
pc-bios/*.dtb \
|
|
|
|
pc-bios/*.lid \
|
|
|
|
pc-bios/*.ndrv \
|
|
|
|
pc-bios/palcode-clipper \
|
|
|
|
pc-bios/openbios-*
|
|
|
|
make -j "$(nproc)" -C pc-bios/optionrom all
|
2024-08-18 23:09:39 +00:00
|
|
|
./configure \
|
|
|
|
--build="x86_64-linux-musl" \
|
|
|
|
--host="x86_64-linux-musl" \
|
2024-09-16 22:26:08 +00:00
|
|
|
--target-list="$TARGET_LIST" \
|
2024-08-18 23:09:39 +00:00
|
|
|
--prefix=/usr \
|
|
|
|
--sysconfdir=/etc \
|
|
|
|
--localstatedir=/var \
|
|
|
|
--libexecdir=/usr/lib/qemu \
|
|
|
|
--docdir=/usr/share/doc/qemu \
|
|
|
|
--python=/usr/bin/python \
|
|
|
|
--cc=gcc \
|
|
|
|
--audio-drv-list=oss,alsa \
|
|
|
|
--enable-curses \
|
|
|
|
--enable-modules \
|
|
|
|
--enable-tpm \
|
2024-09-10 06:09:52 +00:00
|
|
|
--enable-vhost-net \
|
|
|
|
--enable-attr \
|
|
|
|
--enable-linux-user \
|
|
|
|
--enable-slirp \
|
|
|
|
--enable-tcg \
|
|
|
|
--disable-install-blobs \
|
2024-08-18 23:09:39 +00:00
|
|
|
--disable-docs \
|
|
|
|
--disable-sdl \
|
|
|
|
--disable-gtk \
|
|
|
|
--disable-bpf \
|
|
|
|
--disable-capstone \
|
|
|
|
--disable-glusterfs \
|
|
|
|
--disable-debug-info \
|
|
|
|
--disable-opengl \
|
|
|
|
--disable-bsd-user \
|
|
|
|
--disable-werror \
|
|
|
|
--disable-libnfs \
|
|
|
|
--disable-libssh \
|
|
|
|
--disable-snappy \
|
|
|
|
--disable-spice \
|
|
|
|
--disable-usb-redir \
|
|
|
|
--disable-vde \
|
|
|
|
--disable-virglrenderer \
|
|
|
|
--disable-virtfs \
|
|
|
|
--disable-vnc \
|
|
|
|
--disable-vnc-jpeg \
|
|
|
|
--disable-xen
|
2024-09-16 22:26:08 +00:00
|
|
|
make ARFLAGS="rc" -j "$(nproc)"
|
2024-08-18 23:09:39 +00:00
|
|
|
EOF
|
|
|
|
|
|
|
|
FROM build AS install
|
|
|
|
RUN --network=none <<-EOF
|
|
|
|
make DESTDIR=/rootfs install
|
|
|
|
rm -rf /rootfs/var/run
|
|
|
|
strip /rootfs/usr/bin/qemu-*
|
2024-09-16 22:26:08 +00:00
|
|
|
install -vDm 644 pc-bios/optionrom/*.bin -t /rootfs/usr/share/qemu
|
|
|
|
install -vDm 644 pc-bios/optionrom/*.img -t /rootfs/usr/share/qemu
|
2024-08-18 23:09:39 +00:00
|
|
|
EOF
|
|
|
|
|
|
|
|
FROM stagex/filesystem AS package
|
|
|
|
COPY --from=install /rootfs/. /
|