From: Daniel P. Berrangé <berrange(a)redhat.com>
Fedora is gradually killing off i386 packages in its repos, via a
death-by-1000-cuts process. Thus Debian looks like a better long
term bet for i686 build testing. It has the added advantage that
we can generate it via lcitool too.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd(a)linaro.org>
Message-Id: <20231107164109.1449014-1-berrange(a)redhat.com>
[AJB: tweak commit msg, set correct prefix]
Signed-off-by: Alex Bennée <alex.bennee(a)linaro.org>
---
v2
- also set correct prefix
---
configure | 4 +-
.gitlab-ci.d/container-cross.yml | 11 +-
.gitlab-ci.d/crossbuilds.yml | 12 +-
.../dockerfiles/debian-i686-cross.docker | 182 ++++++++++++++++++
.../dockerfiles/fedora-i386-cross.docker | 40 ----
tests/lcitool/refresh | 7 +
6 files changed, 203 insertions(+), 53 deletions(-)
create mode 100644 tests/docker/dockerfiles/debian-i686-cross.docker
delete mode 100644 tests/docker/dockerfiles/fedora-i386-cross.docker
diff --git a/configure b/configure
index abcb199aa8..9ea0bf5698 100755
--- a/configure
+++ b/configure
@@ -1307,8 +1307,8 @@ probe_target_compiler() {
container_cross_cc=${container_cross_prefix}gcc
;;
i386)
- container_image=fedora-i386-cross
- container_cross_prefix=
+ container_image=debian-i686-cross
+ container_cross_prefix=i686-linux-gnu-
;;
loongarch64)
container_image=debian-loongarch-cross
diff --git a/.gitlab-ci.d/container-cross.yml b/.gitlab-ci.d/container-cross.yml
index 463ac493ad..8d235cbea0 100644
--- a/.gitlab-ci.d/container-cross.yml
+++ b/.gitlab-ci.d/container-cross.yml
@@ -46,6 +46,12 @@ loongarch-debian-cross-container:
variables:
NAME: debian-loongarch-cross
+i686-debian-cross-container:
+ extends: .container_job_template
+ stage: containers
+ variables:
+ NAME: debian-i686-cross
+
mips64el-debian-cross-container:
extends: .container_job_template
stage: containers
@@ -95,11 +101,6 @@ cris-fedora-cross-container:
variables:
NAME: fedora-cris-cross
-i386-fedora-cross-container:
- extends: .container_job_template
- variables:
- NAME: fedora-i386-cross
-
win32-fedora-cross-container:
extends: .container_job_template
variables:
diff --git a/.gitlab-ci.d/crossbuilds.yml b/.gitlab-ci.d/crossbuilds.yml
index ac71a2abd3..c2af6c7f44 100644
--- a/.gitlab-ci.d/crossbuilds.yml
+++ b/.gitlab-ci.d/crossbuilds.yml
@@ -37,25 +37,25 @@ cross-arm64-kvm-only:
IMAGE: debian-arm64-cross
EXTRA_CONFIGURE_OPTS: --disable-tcg --without-default-features
-cross-i386-user:
+cross-i686-user:
extends:
- .cross_user_build_job
- .cross_test_artifacts
needs:
- job: i386-fedora-cross-container
+ job: i686-debian-cross-container
variables:
- IMAGE: fedora-i386-cross
+ IMAGE: debian-i686-cross
MAKE_CHECK_ARGS: check
-cross-i386-tci:
+cross-i686-tci:
extends:
- .cross_accel_build_job
- .cross_test_artifacts
timeout: 60m
needs:
- job: i386-fedora-cross-container
+ job: i686-debian-cross-container
variables:
- IMAGE: fedora-i386-cross
+ IMAGE: debian-i686-cross
ACCEL: tcg-interpreter
EXTRA_CONFIGURE_OPTS:
--target-list=i386-softmmu,i386-linux-user,aarch64-softmmu,aarch64-linux-user,ppc-softmmu,ppc-linux-user
--disable-plugins
MAKE_CHECK_ARGS: check check-tcg
diff --git a/tests/docker/dockerfiles/debian-i686-cross.docker
b/tests/docker/dockerfiles/debian-i686-cross.docker
new file mode 100644
index 0000000000..3fc4e15acd
--- /dev/null
+++ b/tests/docker/dockerfiles/debian-i686-cross.docker
@@ -0,0 +1,182 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+# $ lcitool dockerfile --layers all --cross-arch i686 debian-11 qemu
+#
+#
https://gitlab.com/libvirt/libvirt-ci
+
+FROM docker.io/library/debian:11-slim
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+ apt-get update && \
+ apt-get install -y eatmydata && \
+ eatmydata apt-get dist-upgrade -y && \
+ eatmydata apt-get install --no-install-recommends -y \
+ bash \
+ bc \
+ bison \
+ bsdextrautils \
+ bzip2 \
+ ca-certificates \
+ ccache \
+ dbus \
+ debianutils \
+ diffutils \
+ exuberant-ctags \
+ findutils \
+ flex \
+ gcc \
+ gcovr \
+ gettext \
+ git \
+ hostname \
+ libglib2.0-dev \
+ libpcre2-dev \
+ libsndio-dev \
+ libspice-protocol-dev \
+ llvm \
+ locales \
+ make \
+ meson \
+ mtools \
+ ncat \
+ ninja-build \
+ openssh-client \
+ pkgconf \
+ python3 \
+ python3-numpy \
+ python3-opencv \
+ python3-pillow \
+ python3-pip \
+ python3-setuptools \
+ python3-sphinx \
+ python3-sphinx-rtd-theme \
+ python3-venv \
+ python3-wheel \
+ python3-yaml \
+ rpm2cpio \
+ sed \
+ socat \
+ sparse \
+ tar \
+ tesseract-ocr \
+ tesseract-ocr-eng \
+ xorriso \
+ zstd && \
+ eatmydata apt-get autoremove -y && \
+ eatmydata apt-get autoclean -y && \
+ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
+ dpkg-reconfigure locales
+
+RUN /usr/bin/pip3 install tomli
+
+ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
+ENV LANG "en_US.UTF-8"
+ENV MAKE "/usr/bin/make"
+ENV NINJA "/usr/bin/ninja"
+ENV PYTHON "/usr/bin/python3"
+
+RUN export DEBIAN_FRONTEND=noninteractive && \
+ dpkg --add-architecture i386 && \
+ eatmydata apt-get update && \
+ eatmydata apt-get dist-upgrade -y && \
+ eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
+ eatmydata apt-get install --no-install-recommends -y \
+ g++-i686-linux-gnu \
+ gcc-i686-linux-gnu \
+ libaio-dev:i386 \
+ libasan6:i386 \
+ libasound2-dev:i386 \
+ libattr1-dev:i386 \
+ libbpf-dev:i386 \
+ libbrlapi-dev:i386 \
+ libbz2-dev:i386 \
+ libc6-dev:i386 \
+ libcacard-dev:i386 \
+ libcap-ng-dev:i386 \
+ libcapstone-dev:i386 \
+ libcmocka-dev:i386 \
+ libcurl4-gnutls-dev:i386 \
+ libdaxctl-dev:i386 \
+ libdrm-dev:i386 \
+ libepoxy-dev:i386 \
+ libfdt-dev:i386 \
+ libffi-dev:i386 \
+ libfuse3-dev:i386 \
+ libgbm-dev:i386 \
+ libgcrypt20-dev:i386 \
+ libglib2.0-dev:i386 \
+ libglusterfs-dev:i386 \
+ libgnutls28-dev:i386 \
+ libgtk-3-dev:i386 \
+ libibumad-dev:i386 \
+ libibverbs-dev:i386 \
+ libiscsi-dev:i386 \
+ libjemalloc-dev:i386 \
+ libjpeg62-turbo-dev:i386 \
+ libjson-c-dev:i386 \
+ liblttng-ust-dev:i386 \
+ liblzo2-dev:i386 \
+ libncursesw5-dev:i386 \
+ libnfs-dev:i386 \
+ libnuma-dev:i386 \
+ libpam0g-dev:i386 \
+ libpipewire-0.3-dev:i386 \
+ libpixman-1-dev:i386 \
+ libpng-dev:i386 \
+ libpulse-dev:i386 \
+ librbd-dev:i386 \
+ librdmacm-dev:i386 \
+ libsasl2-dev:i386 \
+ libsdl2-dev:i386 \
+ libsdl2-image-dev:i386 \
+ libseccomp-dev:i386 \
+ libselinux1-dev:i386 \
+ libslirp-dev:i386 \
+ libsnappy-dev:i386 \
+ libspice-server-dev:i386 \
+ libssh-gcrypt-dev:i386 \
+ libsystemd-dev:i386 \
+ libtasn1-6-dev:i386 \
+ libubsan1:i386 \
+ libudev-dev:i386 \
+ liburing-dev:i386 \
+ libusb-1.0-0-dev:i386 \
+ libusbredirhost-dev:i386 \
+ libvdeplug-dev:i386 \
+ libvirglrenderer-dev:i386 \
+ libvte-2.91-dev:i386 \
+ libzstd-dev:i386 \
+ nettle-dev:i386 \
+ systemtap-sdt-dev:i386 \
+ xfslibs-dev:i386 \
+ zlib1g-dev:i386 && \
+ eatmydata apt-get autoremove -y && \
+ eatmydata apt-get autoclean -y && \
+ mkdir -p /usr/local/share/meson/cross && \
+ printf "[binaries]\n\
+c = '/usr/bin/i686-linux-gnu-gcc'\n\
+ar = '/usr/bin/i686-linux-gnu-gcc-ar'\n\
+strip = '/usr/bin/i686-linux-gnu-strip'\n\
+pkgconfig = '/usr/bin/i686-linux-gnu-pkg-config'\n\
+\n\
+[host_machine]\n\
+system = 'linux'\n\
+cpu_family = 'x86'\n\
+cpu = 'i686'\n\
+endian = 'little'\n" > /usr/local/share/meson/cross/i686-linux-gnu
&& \
+ dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show >
/packages.txt && \
+ mkdir -p /usr/libexec/ccache-wrappers && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-linux-gnu-c++ && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-linux-gnu-cc && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-linux-gnu-g++ && \
+ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-linux-gnu-gcc
+
+ENV ABI "i686-linux-gnu"
+ENV MESON_OPTS "--cross-file=i686-linux-gnu"
+ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-linux-gnu-
+ENV DEF_TARGET_LIST x86_64-softmmu,x86_64-linux-user,i386-softmmu,i386-linux-user
+# As a final step configure the user (if env is defined)
+ARG USER
+ARG UID
+RUN if [ "${USER}" ]; then \
+ id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
diff --git a/tests/docker/dockerfiles/fedora-i386-cross.docker
b/tests/docker/dockerfiles/fedora-i386-cross.docker
deleted file mode 100644
index b59a9115c4..0000000000
--- a/tests/docker/dockerfiles/fedora-i386-cross.docker
+++ /dev/null
@@ -1,40 +0,0 @@
-FROM
registry.fedoraproject.org/fedora:34
-
-ENV PACKAGES \
- bison \
- bzip2 \
- ccache \
- diffutils \
- flex \
- findutils \
- gcc \
- git \
- libfdt-devel.i686 \
- libffi-devel.i686 \
- libselinux-devel.i686 \
- libtasn1-devel.i686 \
- libzstd-devel.i686 \
- make \
- meson \
- ninja-build \
- glib2-devel.i686 \
- glibc-devel.i686 \
- glibc-static.i686 \
- gnutls-devel.i686 \
- nettle-devel.i686 \
- pcre-devel.i686 \
- pixman-devel.i686 \
- python3-tomli \
- sysprof-capture-devel.i686 \
- zlib-devel.i686
-
-ENV QEMU_CONFIGURE_OPTS --cpu=i386 --disable-vhost-user
-ENV PKG_CONFIG_LIBDIR /usr/lib/pkgconfig
-
-RUN dnf update -y && dnf install -y $PACKAGES
-RUN rpm -q $PACKAGES | sort > /packages.txt
-# As a final step configure the user (if env is defined)
-ARG USER
-ARG UID
-RUN if [ "${USER}" ]; then \
- id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi
diff --git a/tests/lcitool/refresh b/tests/lcitool/refresh
index 92e7d30982..10c54a377c 100755
--- a/tests/lcitool/refresh
+++ b/tests/lcitool/refresh
@@ -156,6 +156,13 @@ try:
trailer=cross_build("arm-linux-gnueabihf-",
"arm-softmmu,arm-linux-user"))
+ generate_dockerfile("debian-i686-cross", "debian-11",
+ cross="i686",
+ trailer=cross_build("x86_64-linux-gnu-",
+ "x86_64-softmmu,"
+ "x86_64-linux-user,"
+ "i386-softmmu,i386-linux-user"))
+
generate_dockerfile("debian-mips64el-cross", "debian-11",
cross="mips64el",
trailer=cross_build("mips64el-linux-gnuabi64-",
--
2.39.2