[libvirt PATCH 3/3] ci: run a mingw64 job on stable Fedora

Daniel P. Berrangé berrange at redhat.com
Tue Nov 23 13:51:51 UTC 2021


Both of the current mingw jobs are marked as 'allow_failure' because
they are running against Fedora rawhide which is an unstable distro.

We need at least one mingw job to be gating to more reliably detect
problems.

This introduces dockerfiles for both mingw variants on Fedora 35
and sets the mingw64 build to run on Fedora 34, and mingw32 on
Fedora rawhide.

Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
---
 .../fedora-35-cross-mingw32.Dockerfile        | 92 +++++++++++++++++++
 .../fedora-35-cross-mingw64.Dockerfile        | 92 +++++++++++++++++++
 ci/gitlab.yml                                 | 30 ++++--
 ci/manifest.yml                               | 11 ++-
 4 files changed, 216 insertions(+), 9 deletions(-)
 create mode 100644 ci/containers/fedora-35-cross-mingw32.Dockerfile
 create mode 100644 ci/containers/fedora-35-cross-mingw64.Dockerfile

diff --git a/ci/containers/fedora-35-cross-mingw32.Dockerfile b/ci/containers/fedora-35-cross-mingw32.Dockerfile
new file mode 100644
index 0000000000..0a26a1f9bd
--- /dev/null
+++ b/ci/containers/fedora-35-cross-mingw32.Dockerfile
@@ -0,0 +1,92 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+FROM registry.fedoraproject.org/fedora:35
+
+RUN dnf install -y nosync && \
+    echo -e '#!/bin/sh\n\
+if test -d /usr/lib64\n\
+then\n\
+    export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\
+else\n\
+    export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\
+fi\n\
+exec "$@"' > /usr/bin/nosync && \
+    chmod +x /usr/bin/nosync && \
+    nosync dnf update -y && \
+    nosync dnf install -y \
+        augeas \
+        bash-completion \
+        ca-certificates \
+        ccache \
+        cpp \
+        cppi \
+        diffutils \
+        dnsmasq \
+        dwarves \
+        ebtables \
+        firewalld-filesystem \
+        git \
+        glibc-langpack-en \
+        grep \
+        iproute \
+        iproute-tc \
+        iptables \
+        iscsi-initiator-utils \
+        kmod \
+        libxml2 \
+        libxslt \
+        lvm2 \
+        make \
+        meson \
+        nfs-utils \
+        ninja-build \
+        numad \
+        parted \
+        perl-base \
+        polkit \
+        python3 \
+        python3-docutils \
+        python3-flake8 \
+        qemu-img \
+        radvd \
+        rpcgen \
+        rpm-build \
+        scrub \
+        sed \
+        sheepdog \
+        zfs-fuse && \
+    nosync dnf autoremove -y && \
+    nosync dnf clean all -y
+
+RUN nosync dnf install -y \
+        mingw32-curl \
+        mingw32-dbus \
+        mingw32-dlfcn \
+        mingw32-gcc \
+        mingw32-gettext \
+        mingw32-glib2 \
+        mingw32-gnutls \
+        mingw32-headers \
+        mingw32-libssh2 \
+        mingw32-libxml2 \
+        mingw32-pkg-config \
+        mingw32-portablexdr \
+        mingw32-readline && \
+    nosync dnf clean all -y && \
+    rpm -qa | sort > /packages.txt && \
+    mkdir -p /usr/libexec/ccache-wrappers && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-w64-mingw32-cc && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-w64-mingw32-gcc
+
+ENV LANG "en_US.UTF-8"
+ENV MAKE "/usr/bin/make"
+ENV NINJA "/usr/bin/ninja"
+ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
+
+ENV ABI "i686-w64-mingw32"
+ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw32.meson"
diff --git a/ci/containers/fedora-35-cross-mingw64.Dockerfile b/ci/containers/fedora-35-cross-mingw64.Dockerfile
new file mode 100644
index 0000000000..e2a3ba9d6d
--- /dev/null
+++ b/ci/containers/fedora-35-cross-mingw64.Dockerfile
@@ -0,0 +1,92 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+FROM registry.fedoraproject.org/fedora:35
+
+RUN dnf install -y nosync && \
+    echo -e '#!/bin/sh\n\
+if test -d /usr/lib64\n\
+then\n\
+    export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\
+else\n\
+    export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\
+fi\n\
+exec "$@"' > /usr/bin/nosync && \
+    chmod +x /usr/bin/nosync && \
+    nosync dnf update -y && \
+    nosync dnf install -y \
+        augeas \
+        bash-completion \
+        ca-certificates \
+        ccache \
+        cpp \
+        cppi \
+        diffutils \
+        dnsmasq \
+        dwarves \
+        ebtables \
+        firewalld-filesystem \
+        git \
+        glibc-langpack-en \
+        grep \
+        iproute \
+        iproute-tc \
+        iptables \
+        iscsi-initiator-utils \
+        kmod \
+        libxml2 \
+        libxslt \
+        lvm2 \
+        make \
+        meson \
+        nfs-utils \
+        ninja-build \
+        numad \
+        parted \
+        perl-base \
+        polkit \
+        python3 \
+        python3-docutils \
+        python3-flake8 \
+        qemu-img \
+        radvd \
+        rpcgen \
+        rpm-build \
+        scrub \
+        sed \
+        sheepdog \
+        zfs-fuse && \
+    nosync dnf autoremove -y && \
+    nosync dnf clean all -y
+
+RUN nosync dnf install -y \
+        mingw64-curl \
+        mingw64-dbus \
+        mingw64-dlfcn \
+        mingw64-gcc \
+        mingw64-gettext \
+        mingw64-glib2 \
+        mingw64-gnutls \
+        mingw64-headers \
+        mingw64-libssh2 \
+        mingw64-libxml2 \
+        mingw64-pkg-config \
+        mingw64-portablexdr \
+        mingw64-readline && \
+    nosync dnf clean all -y && \
+    rpm -qa | sort > /packages.txt && \
+    mkdir -p /usr/libexec/ccache-wrappers && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/x86_64-w64-mingw32-cc && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/x86_64-w64-mingw32-gcc
+
+ENV LANG "en_US.UTF-8"
+ENV MAKE "/usr/bin/make"
+ENV NINJA "/usr/bin/ninja"
+ENV PYTHON "/usr/bin/python3"
+ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
+
+ENV ABI "x86_64-w64-mingw32"
+ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw64.meson"
diff --git a/ci/gitlab.yml b/ci/gitlab.yml
index 964e93d6d4..120ece8fb7 100644
--- a/ci/gitlab.yml
+++ b/ci/gitlab.yml
@@ -342,6 +342,20 @@ s390x-debian-sid-container:
     NAME: debian-sid-cross-s390x
 
 
+mingw32-fedora-35-container:
+  extends: .container_job
+  allow_failure: true
+  variables:
+    NAME: fedora-35-cross-mingw32
+
+
+mingw64-fedora-35-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: fedora-35-cross-mingw64
+
+
 mingw32-fedora-rawhide-container:
   extends: .container_job
   allow_failure: true
@@ -609,24 +623,24 @@ s390x-debian-sid:
     CROSS: s390x
 
 
-mingw32-fedora-rawhide:
+mingw64-fedora-35:
   extends: .cross_build_job
   needs:
-    - mingw32-fedora-rawhide-container
-  allow_failure: true
+    - mingw64-fedora-35-container
+  allow_failure: false
   variables:
-    NAME: fedora-rawhide
-    CROSS: mingw32
+    NAME: fedora-35
+    CROSS: mingw64
 
 
-mingw64-fedora-rawhide:
+mingw32-fedora-rawhide:
   extends: .cross_build_job
   needs:
-    - mingw64-fedora-rawhide-container
+    - mingw32-fedora-rawhide-container
   allow_failure: true
   variables:
     NAME: fedora-rawhide
-    CROSS: mingw64
+    CROSS: mingw32
 
 
 # Native cirrus build jobs
diff --git a/ci/manifest.yml b/ci/manifest.yml
index 460fdb4d34..2b64effef8 100644
--- a/ci/manifest.yml
+++ b/ci/manifest.yml
@@ -127,7 +127,15 @@ targets:
 
   fedora-34: x86_64
 
-  fedora-35: x86_64
+  fedora-35:
+    jobs:
+      - arch: x86_64
+
+      - arch: mingw32
+        allow-failure: true
+        builds: false
+
+      - arch: mingw64
 
   fedora-rawhide:
     jobs:
@@ -146,6 +154,7 @@ targets:
 
       - arch: mingw64
         allow-failure: true
+        builds: false
 
   freebsd-12: x86_64
 
-- 
2.33.1




More information about the libvir-list mailing list