summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel P. Berrangé <berrange@redhat.com>2020-06-24 16:39:33 +0100
committerDaniel P. Berrangé <berrange@redhat.com>2020-06-26 15:50:50 +0100
commit82a0612cc89eab13ff18846789c1cae21c331503 (patch)
tree8e15dae0e9c2e54385b4814f22cbe2b06bc262cc
parenta0f4d1490a9ecbf40b52c22bbb26c21289a5e850 (diff)
gitlab: add coverage of mingw builds
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
-rw-r--r--.gitlab-ci.yml67
-rw-r--r--ci/fedora-rawhide-cross-mingw32.Dockerfile105
-rw-r--r--ci/fedora-rawhide-cross-mingw64.Dockerfile105
-rwxr-xr-xci/refresh8
4 files changed, 285 insertions, 0 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0f7cfb8..ae8af4a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -70,6 +70,41 @@ stages:
- $MAKE dist
- if test -x /usr/bin/rpmbuild && test "$RPM" != "skip" ; then rpmbuild --nodeps -ta virt-viewer*.tar.gz ; fi
+# Default cross build jobs that are always run
+.git_cross_build_default_job_template: &git_cross_build_default_job_definition
+ image: $CI_REGISTRY_IMAGE/ci-$NAME:latest
+ stage: builds
+ cache:
+ paths:
+ - ccache/
+ key: "$CI_JOB_NAME"
+ before_script:
+ - *script_variables
+ - export PATH=/usr/$ABI/sys-root/mingw/bin:$PATH
+ script:
+ - pushd "$PWD"
+ - mkdir -p "$SCRATCH_DIR"
+ - cd "$SCRATCH_DIR"
+ - git clone --depth 1 https://gitlab.com/libvirt/libvirt.git
+ - git clone --depth 1 https://gitlab.com/libvirt/libvirt-glib.git
+ - git clone --depth 1 https://gitlab.gnome.org/GNOME/gtk-vnc.git
+ - cd libvirt
+ - mkdir build
+ - cd build
+ - ../autogen.sh $CONFIGURE_OPTS --prefix="$VROOT" --libdir="$VROOT/lib" --without-libvirtd
+ - $MAKE install
+ - cd ../../libvirt-glib
+ - mkdir build
+ - cd build
+ - ../autogen.sh $CONFIGURE_OPTS --prefix="$VROOT" --libdir="$VROOT/lib"
+ - $MAKE install
+ - cd ../../gtk-vnc
+ - git submodule update --init
+ - meson build $MESON_OPTS --prefix="$VROOT" --libdir="$VROOT/lib" -Dintrospection=false -Dwith-vala=false
+ - $NINJA -C build install
+ - popd
+ - ./autogen.sh $CONFIGURE_OPTS --prefix="$VROOT"
+ - $MAKE install
# Check that all commits are signed-off for the DCO.
# Skip on "virt-viewer" namespace, since we only need to run
@@ -144,6 +179,16 @@ x86-ubuntu-2004-container:
variables:
NAME: ubuntu-2004
+mingw32-fedora-rawhide-container:
+ <<: *container_job_definition
+ variables:
+ NAME: fedora-rawhide-cross-mingw32
+
+mingw64-fedora-rawhide-container:
+ <<: *container_job_definition
+ variables:
+ NAME: fedora-rawhide-cross-mingw64
+
x86-centos-7-dist-build:
<<: *dist_native_build_job_definition
@@ -207,3 +252,25 @@ x86-ubuntu-2004-dist-build:
<<: *dist_native_build_job_definition
variables:
NAME: ubuntu-2004
+
+mingw32-fedora-rawhide-git-build:
+ <<: *git_cross_build_default_job_definition
+ variables:
+ NAME: fedora-rawhide-cross-mingw32
+ artifacts:
+ name: 'x86-msi'
+ when: on_success
+ expire_in: 30 days
+ paths:
+ - data/virt-viewer-x86*.msi.pot
+
+mingw64-fedora-rawhide-git-build:
+ <<: *git_cross_build_default_job_definition
+ variables:
+ NAME: fedora-rawhide-cross-mingw64
+ artifacts:
+ name: 'x64-msi'
+ when: on_success
+ expire_in: 30 days
+ paths:
+ - data/virt-viewer-x64*.msi.pot
diff --git a/ci/fedora-rawhide-cross-mingw32.Dockerfile b/ci/fedora-rawhide-cross-mingw32.Dockerfile
new file mode 100644
index 0000000..a634286
--- /dev/null
+++ b/ci/fedora-rawhide-cross-mingw32.Dockerfile
@@ -0,0 +1,105 @@
+FROM fedora:rawhide
+
+RUN dnf update -y --nogpgcheck fedora-gpg-keys && \
+ dnf update -y && \
+ dnf install -y \
+ augeas \
+ autoconf \
+ automake \
+ bash \
+ bash-completion \
+ ca-certificates \
+ ccache \
+ chrony \
+ cppi \
+ dnsmasq \
+ dwarves \
+ ebtables \
+ gcc \
+ gdb \
+ gettext-devel \
+ git \
+ glibc-langpack-en \
+ gtk-doc \
+ icoutils \
+ intltool \
+ iproute \
+ iproute-tc \
+ iscsi-initiator-utils \
+ kmod \
+ libtool \
+ libwsman-devel \
+ libxml2 \
+ libxslt \
+ lsof \
+ lvm2 \
+ make \
+ meson \
+ net-tools \
+ nfs-utils \
+ ninja-build \
+ numad \
+ parted \
+ patch \
+ perl \
+ perl-App-cpanminus \
+ polkit \
+ python3 \
+ python3-docutils \
+ python3-flake8 \
+ python3-pip \
+ python3-setuptools \
+ python3-wheel \
+ qemu-img \
+ radvd \
+ rpcgen \
+ rpm-build \
+ screen \
+ scrub \
+ sheepdog \
+ strace \
+ sudo \
+ vala \
+ vim \
+ zfs-fuse && \
+ dnf autoremove -y && \
+ dnf clean all -y && \
+ 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-$(basename /usr/bin/gcc)
+
+RUN dnf install -y \
+ mingw32-curl \
+ mingw32-dbus \
+ mingw32-dlfcn \
+ mingw32-gcc \
+ mingw32-gdk-pixbuf \
+ mingw32-gettext \
+ mingw32-glib2 \
+ mingw32-gnutls \
+ mingw32-gstreamer1-plugins-bad-free \
+ mingw32-gstreamer1-plugins-good \
+ mingw32-gtk3 \
+ mingw32-headers \
+ mingw32-libgcrypt \
+ mingw32-libgovirt \
+ mingw32-libssh2 \
+ mingw32-libxml2 \
+ mingw32-pkg-config \
+ mingw32-portablexdr \
+ mingw32-readline \
+ mingw32-rest \
+ mingw32-spice-gtk3 && \
+ dnf clean all -y
+
+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 CONFIGURE_OPTS "--host=i686-w64-mingw32"
+ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw32.meson"
diff --git a/ci/fedora-rawhide-cross-mingw64.Dockerfile b/ci/fedora-rawhide-cross-mingw64.Dockerfile
new file mode 100644
index 0000000..a3edcf4
--- /dev/null
+++ b/ci/fedora-rawhide-cross-mingw64.Dockerfile
@@ -0,0 +1,105 @@
+FROM fedora:rawhide
+
+RUN dnf update -y --nogpgcheck fedora-gpg-keys && \
+ dnf update -y && \
+ dnf install -y \
+ augeas \
+ autoconf \
+ automake \
+ bash \
+ bash-completion \
+ ca-certificates \
+ ccache \
+ chrony \
+ cppi \
+ dnsmasq \
+ dwarves \
+ ebtables \
+ gcc \
+ gdb \
+ gettext-devel \
+ git \
+ glibc-langpack-en \
+ gtk-doc \
+ icoutils \
+ intltool \
+ iproute \
+ iproute-tc \
+ iscsi-initiator-utils \
+ kmod \
+ libtool \
+ libwsman-devel \
+ libxml2 \
+ libxslt \
+ lsof \
+ lvm2 \
+ make \
+ meson \
+ net-tools \
+ nfs-utils \
+ ninja-build \
+ numad \
+ parted \
+ patch \
+ perl \
+ perl-App-cpanminus \
+ polkit \
+ python3 \
+ python3-docutils \
+ python3-flake8 \
+ python3-pip \
+ python3-setuptools \
+ python3-wheel \
+ qemu-img \
+ radvd \
+ rpcgen \
+ rpm-build \
+ screen \
+ scrub \
+ sheepdog \
+ strace \
+ sudo \
+ vala \
+ vim \
+ zfs-fuse && \
+ dnf autoremove -y && \
+ dnf clean all -y && \
+ 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-$(basename /usr/bin/gcc)
+
+RUN dnf install -y \
+ mingw64-curl \
+ mingw64-dbus \
+ mingw64-dlfcn \
+ mingw64-gcc \
+ mingw64-gdk-pixbuf \
+ mingw64-gettext \
+ mingw64-glib2 \
+ mingw64-gnutls \
+ mingw64-gstreamer1-plugins-bad-free \
+ mingw64-gstreamer1-plugins-good \
+ mingw64-gtk3 \
+ mingw64-headers \
+ mingw64-libgcrypt \
+ mingw64-libgovirt \
+ mingw64-libssh2 \
+ mingw64-libxml2 \
+ mingw64-pkg-config \
+ mingw64-portablexdr \
+ mingw64-readline \
+ mingw64-rest \
+ mingw64-spice-gtk3 && \
+ dnf clean all -y
+
+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 CONFIGURE_OPTS "--host=x86_64-w64-mingw32"
+ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw64.meson"
diff --git a/ci/refresh b/ci/refresh
index 01661b5..6f83020 100755
--- a/ci/refresh
+++ b/ci/refresh
@@ -18,6 +18,14 @@ HOSTS=$($LCITOOL hosts | grep -v freebsd | sed -e 's/libvirt-//')
for host in $HOSTS
do
+ if test "$host" = "fedora-rawhide"
+ then
+ for cross in mingw32 mingw64
+ do
+ $LCITOOL dockerfile libvirt-$host libvirt,libvirt-glib,gtk-vnc,virt-viewer --cross $cross >$host-cross-$cross.Dockerfile
+ done
+ fi
+
if test "$host" = "centos-8" || test "$host" = "centos-stream"
then
$LCITOOL dockerfile libvirt-$host libvirt+minimal,libvirt-glib,gtk-vnc,virt-viewer > $host.Dockerfile