build, gitlab-ci: add a script to cross-build GIMP with Gitlab CI.

It looks like Arch does not have mingw64 cross-compilers in core package
repository. It does have some package in the user repository (AUR), but
I assume that such a repository cannot be deemed as safe.

Anyway I still tried, but apparently these AUR packages have to be built
and when I tried, I got this error:
>  ERROR: Running makepkg as root is not allowed as it can cause
> permanent, catastrophic damage to your system.

Anyway it's all a big mess. Then I tried to move the cross-CI to Debian
testing, which is anyway our base compatibility system. Unfortunately I
encountered like what looked like some glibc++ macro problem on some
packages (most likely because the pre-built packages I use are Fedora
ones which likely uses a cross-compiler differently built from the
Debian one).

So in the end, for simplicity, I use a Fedora image, then I am sure to
get a good match between the system cross-compiler and the pre-built
dependencies.
This commit is contained in:
Jehan 2019-09-25 14:27:09 +02:00
parent d3cfae2795
commit e17efb7a07
2 changed files with 141 additions and 0 deletions

View File

@ -13,6 +13,8 @@ variables:
cache:
paths:
- _pacman_cache
- dnf_cache
- .cache/crossroad/
.babl-base:
stage: babl
@ -217,3 +219,58 @@ build-git-meson:
# dependencies:
# - babl-min
# - gegl-min
.gimp-x86_64-w64-mingw32-base:
image: fedora:30
stage: gimp
artifacts:
paths:
- "${INSTALL_DIR}"
before_script:
- dnf install --assumeyes --setopt=cachedir=`pwd`/dnf_cache --verbose
automake
autoconf
meson
cmake
gettext
git
gcc
gcc-c++
gperf
intltool
libtool
libxslt
make
python2
mingw64-gcc
mingw64-gcc-c++
mingw64-binutils
cpio rpm
python3-docutils
python3-pip
python3-setuptools
shared-mime-info
which
libmount-devel
gdk-pixbuf2
gdk-pixbuf2-devel
glib2-devel
#- pip3 install wheel
#- pip3 install crossroad
- git clone git://git.tuxfamily.org/gitroot/crossroad/crossroad.git
- cd crossroad
- ./setup.py install
- cd ..
build-git-x86_64-w64-mingw32-meson:
extends: .gimp-x86_64-w64-mingw32-base
script:
- export SHELL
- crossroad w64 gimp --run="build/windows/crossbuild-gitlab-ci.sh"
artifacts:
name: "app-tests-logs-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
when: on_failure
expire_in: 1 week
paths:
- _deps/
- _build/

View File

@ -0,0 +1,84 @@
mkdir _deps && cd _deps
# babl
crossroad install lcms2 && \
git clone --depth 1 https://gitlab.gnome.org/GNOME/babl.git && cd babl && \
crossroad meson _build/ -Denable-gir=false -Dwith-lcms=false && \
ninja -C _build install || exit 1
cd ..
# GEGL
crossroad install json-glib && \
git clone --depth 1 https://gitlab.gnome.org/GNOME/gegl.git && cd gegl && \
crossroad meson _build/ -Dintrospection=false -Dsdl2=disabled && \
ninja -C _build install || exit 1
cd ..
# gexiv2
crossroad install exiv2 && \
git clone --depth 1 https://gitlab.gnome.org/GNOME/gexiv2.git && cd gexiv2 && \
crossroad meson _build/ -Dintrospection=false -Dvapi=false && \
ninja -C _build install || exit 1
cd ..
# appstream-glib
crossroad install libsoup libarchive gdk-pixbuf && \
git clone --depth 1 https://github.com/hughsie/appstream-glib.git && cd appstream-glib && \
crossroad meson _build/ -Dintrospection=false -Drpm=false -Dbuilder=false \
-Dstemmer=false -Dman=false -Ddep11=false && \
ninja -C _build install || exit 1
cd ..
# json-c
git clone --depth 1 https://github.com/json-c/json-c.git && \
mkdir json-c/_build && cd json-c/_build && \
CFLAGS="-Wno-expansion-to-defined" crossroad ../configure && make install || exit 1
cd ../..
# libmypaint
git clone --depth 1 --branch libmypaint-v1 https://github.com/mypaint/libmypaint.git && \
mkdir libmypaint/_build && cd libmypaint/_build && \
crossroad ../configure --enable-introspection=no && make install || exit 1
cd ../..
# mypaint-brushes
git clone --depth 1 --branch v1.3.x https://github.com/mypaint/mypaint-brushes.git
mkdir mypaint-brushes/_build && cd mypaint-brushes/_build
crossroad ../configure && make install || exit 1
cd ../..
# poppler-data
git clone --depth 1 https://anongit.freedesktop.org/git/poppler/poppler-data.git && \
mkdir poppler-data/_build && cd poppler-data/_build && \
crossroad cmake .. && make install || exit 1
cd ../..
# Glib (available in crossroad but bumped Pango needs higher version)
git clone --depth 1 https://gitlab.gnome.org/GNOME/glib.git && cd glib && \
crossroad meson _build && ninja -C _build install || exit 1
which glib-compile-resources
rm -fr $CROSSROAD_PREFIX/bin/glib-compile-resources*
cd ..
# Pango (available in crossroad but too old)
crossroad install harfbuzz && \
git clone --depth 1 https://gitlab.gnome.org/GNOME/pango.git && cd pango && \
crossroad meson _build -Dintrospection=false && \
ninja -C _build install || exit 1
cd ..
# GIMP
crossroad install atk gtk3 libtiff xz-libs librsvg2 poppler-glib dbus-glib && \
cd .. && mkdir _build && cd _build && \
crossroad meson .. -Dwmf=disabled -Dgtk-doc=false -Dpython=always -Dlua=always -Djavascript=always && ninja install