xserver: Branch 'master'

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sat Apr 24 19:21:13 UTC 2021


 .gitlab-ci.yml                        |    8 +++
 .gitlab-ci/cross-i686-w64-mingw32.txt |   20 ++++++++
 .gitlab-ci/cross-prereqs-build.sh     |   79 ++++++++++++++++++++++++++++++++++
 .gitlab-ci/debian-install.sh          |    6 ++
 4 files changed, 112 insertions(+), 1 deletion(-)

New commits:
commit d3933a24d1abdcb56f45e6076cb84a1110674a8a
Author: Jon Turney <jon.turney at dronecode.org.uk>
Date:   Tue Apr 23 17:59:29 2019 +0100

    CI: Add an x86 MinGW-w64 cross build
    
    Only cross-build for x86 MinGW-w64, as x64 MinGW-w64 will probably
    require fixing LLP64 issues.
    
    I don't know any source for pre-built cross-dependencies of the X
    server, so build these from git.
    
    Don't build with GLX enabled, so I don't have to deal with
    cross-building mesa and it's dependencies, for the moment.

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 35d347411..75b2aed31 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -11,7 +11,7 @@ variables:
     UPSTREAM_REPO: xorg/xserver
     FDO_DISTRIBUTION_VERSION: buster-slim
     FDO_DISTRIBUTION_EXEC: 'env FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/debian-install.sh'
-    FDO_DISTRIBUTION_TAG: "2021-01-19-git"
+    FDO_DISTRIBUTION_TAG: "2021-04-06"
 
 include:
   - project: 'freedesktop/ci-templates'
@@ -83,3 +83,9 @@ meson-noglamor:
     variables:
         MESON_EXTRA_OPTIONS: >
           -Dglamor=false
+
+mingw-cross-build:
+    extends: .common-build-and-test
+    script:
+        - meson --cross-file=.gitlab-ci/cross-i686-w64-mingw32.txt -Dglx=false -Dsecure-rpc=false -Dlisten_tcp=true build/
+        - ninja -j${FDO_CI_CONCURRENT:-4} -C build/ install
diff --git a/.gitlab-ci/cross-i686-w64-mingw32.txt b/.gitlab-ci/cross-i686-w64-mingw32.txt
new file mode 100644
index 000000000..1c04f6547
--- /dev/null
+++ b/.gitlab-ci/cross-i686-w64-mingw32.txt
@@ -0,0 +1,20 @@
+[binaries]
+c = 'i686-w64-mingw32-gcc'
+cpp = 'i686-w64-mingw32-g++'
+ar = 'i686-w64-mingw32-ar'
+strip = 'i686-w64-mingw32-strip'
+pkgconfig = '/usr/local/bin/i686-w64-mingw32-pkg-config'
+windres = 'i686-w64-mingw32-windres'
+exe_wrapper = 'wine'
+
+[properties]
+# Directory that contains 'bin', 'lib', etc for the toolchain
+root = '/usr/i686-w64-mingw32'
+# Directory that contains 'bin', 'lib', etc which have been cross-compiled
+sys_root = '/usr/i686-w64-mingw32'
+
+[host_machine]
+system = 'windows'
+cpu_family = 'x86'
+cpu = 'i686'
+endian = 'little'
diff --git a/.gitlab-ci/cross-prereqs-build.sh b/.gitlab-ci/cross-prereqs-build.sh
new file mode 100755
index 000000000..3decf707b
--- /dev/null
+++ b/.gitlab-ci/cross-prereqs-build.sh
@@ -0,0 +1,79 @@
+#!/bin/bash
+
+set -e
+set -o xtrace
+
+HOST=$1
+
+# Debian's cross-pkg-config wrappers are broken for MinGW targets, since
+# dpkg-architecture doesn't know about MinGW target triplets.
+# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=930492
+cat >/usr/local/bin/${HOST}-pkg-config <<EOF
+#!/bin/sh
+
+PKG_CONFIG_SYSROOT_DIR=/usr/${HOST} PKG_CONFIG_LIBDIR=/usr/${HOST}/lib/pkgconfig:/usr/share/pkgconfig pkg-config \$@
+EOF
+chmod +x /usr/local/bin/${HOST}-pkg-config
+
+# when cross-compiling, some autoconf tests cannot be run:
+
+# --enable-malloc0returnsnull
+export xorg_cv_malloc0_returns_null=yes
+
+build() {
+    url=$1
+    commit=$2
+    config=$3
+
+    name=$(basename ${url} .git)
+
+    if [[ $commit =~ ^[[:xdigit:]]{1,}$ ]]
+    then
+        git clone ${url} ${name}
+        git -C ${name} checkout ${commit}
+    else
+        git clone --depth 1 --branch ${commit:-master} --recurse-submodules -c advice.detachedHead=false ${url} ${name}
+    fi
+
+    pushd ${name}
+    NOCONFIGURE=1 ./autogen.sh || ./.bootstrap
+    ./configure ${config} --host=${HOST} --prefix= --with-sysroot=/usr/${HOST}/
+    make -j$(nproc)
+    DESTDIR=/usr/${HOST} make install
+
+    popd
+    rm -rf ${OLDPWD}
+}
+
+build 'https://gitlab.freedesktop.org/pixman/pixman.git' 'pixman-0.38.4'
+build 'https://gitlab.freedesktop.org/xorg/lib/pthread-stubs.git' '0.4'
+# we can't use the xorgproto pkgconfig files from /usr/share/pkgconfig, because
+# these would add -I/usr/include to CFLAGS, which breaks cross-compilation
+build 'https://gitlab.freedesktop.org/xorg/proto/xorgproto.git' 'xorgproto-2019.1' '--datadir=/lib'
+build 'https://gitlab.freedesktop.org/xorg/lib/libXau.git' 'libXau-1.0.9'
+build 'https://gitlab.freedesktop.org/xorg/proto/xcbproto.git' 'xcb-proto-1.14'
+build 'https://gitlab.freedesktop.org/xorg/lib/libxcb.git' 'libxcb-1.14'
+build 'https://gitlab.freedesktop.org/xorg/lib/libxtrans.git' 'xtrans-1.4.0'
+# the default value of keysymdefdir is taken from the includedir variable for
+# xproto, which isn't adjusted by pkg-config for the sysroot
+build 'https://gitlab.freedesktop.org/xorg/lib/libX11.git' 'libX11-1.6.9' "--with-keysymdefdir=/usr/${HOST}/include/X11"
+build 'https://gitlab.freedesktop.org/xorg/lib/libxkbfile.git' 'libxkbfile-1.1.0'
+# freetype needs an explicit --build to know it's cross-compiling
+# disable png as freetype tries to use libpng-config, even when cross-compiling
+build 'git://git.savannah.gnu.org/freetype/freetype2.git' 'VER-2-10-1' "--build=$(cc -dumpmachine) --with-png=no"
+build 'https://gitlab.freedesktop.org/xorg//font/util.git' 'font-util-1.3.2'
+build 'https://gitlab.freedesktop.org/xorg/lib/libfontenc.git' 'libfontenc-1.1.4'
+build 'https://gitlab.freedesktop.org/xorg/lib/libXfont.git'  'libXfont2-2.0.3'
+build 'https://gitlab.freedesktop.org/xorg/lib/libXdmcp.git' 'libXdmcp-1.1.3'
+build 'https://gitlab.freedesktop.org/xorg/lib/libXfixes.git' 'libXfixes-5.0.3'
+build 'https://gitlab.freedesktop.org/xorg/lib/libxcb-util.git' '0.4.0'
+build 'https://gitlab.freedesktop.org/xorg/lib/libxcb-image.git' '0.4.0'
+build 'https://gitlab.freedesktop.org/xorg/lib/libxcb-wm.git' '0.4.1'
+
+# workaround xcb_windefs.h leaking all Windows API types into X server build
+# (some of which clash which types defined by Xmd.h) XXX: This is a bit of a
+# hack, as it makes this header depend on xorgproto. Maybe an upstreamable
+# fix would involve a macro defined in the X server (XFree86Server?
+# XCB_NO_WINAPI?), which makes xcb_windefs.h wrap things like XWinsock.h
+# does???
+sed -i s#winsock2#X11/Xwinsock# /usr/${HOST}/include/xcb/xcb_windefs.h
diff --git a/.gitlab-ci/debian-install.sh b/.gitlab-ci/debian-install.sh
index cd32acba7..60d76c831 100644
--- a/.gitlab-ci/debian-install.sh
+++ b/.gitlab-ci/debian-install.sh
@@ -25,7 +25,9 @@ apt-get install -y \
 	build-essential \
 	ca-certificates \
 	ccache \
+	dpkg-dev \
 	flex \
+	gcc-mingw-w64-i686 \
 	git \
 	libaudit-dev \
 	libbsd-dev \
@@ -87,8 +89,10 @@ apt-get install -y \
 	libxt-dev \
 	libxtst-dev \
 	libxv-dev \
+	libz-mingw-w64-dev \
 	mesa-common-dev \
 	meson \
+	mingw-w64-tools \
 	nettle-dev \
 	pkg-config \
 	python3-mako \
@@ -100,6 +104,8 @@ apt-get install -y \
 	xtrans-dev \
 	xutils-dev
 
+.gitlab-ci/cross-prereqs-build.sh i686-w64-mingw32
+
 cd /root
 
 # weston 9.0 requires libwayland >= 1.18


More information about the xorg-commit mailing list