[gimp] gitlab-ci, build: construct the Windows installer from CI.
- From: Jehan <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] gitlab-ci, build: construct the Windows installer from CI.
- Date: Fri, 14 May 2021 17:29:18 +0000 (UTC)
commit 1d0325879712dbf5ff16c73b3d2bde6f5f4a72dc
Author: Jehan <jehan girinstud io>
Date: Mon May 10 21:50:49 2021 +0200
gitlab-ci, build: construct the Windows installer from CI.
Run InnoSetup in the Windows CI to build the installer from both the 32
and 64-bit builds.
Current limitations:
- No installer signature yet.
- Dependencies will have to be checked more thoroughly.
- Apart from babl and GEGL, we may want to make custom builds of any
package which has a patch in build/windows/patches/ (Windows-specific
patches) and build/patches/ (all platform patches).
- Plug-in interpreters (Python, Lua…) don't work. This will need to be
looked at in detail.
Globally this first automated installer build works fine though, as I
could install it in a Windows 10 VM and GIMP ran fine! So it's a first
step towards fully automated releases for Windows.
.gitlab-ci.yml | 51 ++++++-------------------
build/windows/gitlab-ci/build-deps-msys2.sh | 4 +-
build/windows/gitlab-ci/build-gimp-msys2.sh | 10 +++--
build/windows/gitlab-ci/installer-gimp-msys2.sh | 32 ++++++++++++++++
build/windows/gitlab-ci/package-gimp-msys2.sh | 4 +-
5 files changed, 56 insertions(+), 45 deletions(-)
---
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 1c68ad1208..e66bc1a4c9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -215,9 +215,6 @@ deps-win64-native:
CHERE_INVOKING: "yes"
tags:
- win32-ps
- cache:
- paths:
- - _install/
script:
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/build-deps-msys2.sh"
@@ -226,7 +223,7 @@ deps-win64-native:
when: always
expire_in: 2 hours
paths:
- - _install
+ - _install-w64
needs: []
gimp-win64-native:
@@ -246,8 +243,8 @@ gimp-win64-native:
when: always
expire_in: 1 day
paths:
- - _install
- - _build
+ - _install-w64
+ - build/windows/installer/lang/
cache:
paths:
- _ccache/
@@ -264,9 +261,6 @@ deps-win32-native:
CHERE_INVOKING: "yes"
tags:
- win32-ps
- cache:
- paths:
- - _install/
script:
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
- C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/build-deps-msys2.sh"
@@ -275,7 +269,7 @@ deps-win32-native:
when: always
expire_in: 2 hours
paths:
- - _install
+ - _install-w32
needs: []
gimp-win32-native:
@@ -295,8 +289,7 @@ gimp-win32-native:
when: always
expire_in: 1 day
paths:
- - _install
- - _build
+ - _install-w32
cache:
paths:
- _ccache/
@@ -453,49 +446,29 @@ cppcheck:
## Ready-to-distribute ##
-win64-native-nightly:
+win-installer-nightly:
rules:
- - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULE_NATIVE_WIN64 != null'
+ - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULE_NATIVE_WIN64 != null &&
$SCHEDULE_NATIVE_WIN32 != null'
variables:
- MSYSTEM: "MINGW64"
CHERE_INVOKING: "yes"
tags:
- win32-ps
stage: distribution
dependencies:
- gimp-win64-native
- artifacts:
- name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
- when: always
- expire_in: 2 days
- paths:
- - gimp-w64
- script:
- - C:\msys64\usr\bin\pacman --noconfirm -Syyuu
- - C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/package-gimp-msys2.sh"
- needs: ["gimp-win64-native"]
-
-win32-native-nightly:
- rules:
- - if: '$CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE == "schedule" && $SCHEDULE_NATIVE_WIN32 != null'
- variables:
- MSYSTEM: "MINGW32"
- CHERE_INVOKING: "yes"
- tags:
- - win32-ps
- stage: distribution
- dependencies:
- gimp-win32-native
artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}"
when: always
expire_in: 2 days
paths:
- - gimp-w32
+ - build/windows/installer/_Output
script:
- C:\msys64\usr\bin\pacman --noconfirm -Syyuu
- - C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/package-gimp-msys2.sh"
- needs: ["gimp-win32-native"]
+ - C:\msys64\usr\bin\bash -lc "MSYSTEM=MINGW64 bash -x ./build/windows/gitlab-ci/package-gimp-msys2.sh"
+ - C:\msys64\usr\bin\bash -lc "MSYSTEM=MINGW32 bash -x ./build/windows/gitlab-ci/package-gimp-msys2.sh"
+ - C:\msys64\usr\bin\bash -lc "bash -x ./build/windows/gitlab-ci/installer-gimp-msys2.sh"
+ needs: ["gimp-win32-native", "gimp-win64-native"]
sources:
except:
diff --git a/build/windows/gitlab-ci/build-deps-msys2.sh b/build/windows/gitlab-ci/build-deps-msys2.sh
index a7f667ae3b..d9470b1159 100644
--- a/build/windows/gitlab-ci/build-deps-msys2.sh
+++ b/build/windows/gitlab-ci/build-deps-msys2.sh
@@ -3,12 +3,14 @@
set -e
if [[ "$MSYSTEM" == "MINGW32" ]]; then
+ export ARTIFACTS_SUFFIX="-w32"
export MSYS2_ARCH="i686"
# vapi build fails on 32-bit, with no error output. Let's just drop
# it for this architecture.
export BABL_OPTIONS="-Denable-vapi=false"
export GEGL_OPTIONS="-Dvapigen=disabled"
else
+ export ARTIFACTS_SUFFIX="-w64"
export MSYS2_ARCH="x86_64"
export BABL_OPTIONS=""
export GEGL_OPTIONS=""
@@ -52,7 +54,7 @@ pacman --noconfirm -S --needed \
mingw-w64-$MSYS2_ARCH-vala
export GIT_DEPTH=1
-export GIMP_PREFIX=`realpath ./_install`
+export GIMP_PREFIX="`realpath ./_install`${ARTIFACTS_SUFFIX}"
export PATH="$GIMP_PREFIX/bin:$PATH"
export PKG_CONFIG_PATH="${GIMP_PREFIX}/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH="${GIMP_PREFIX}/share/pkgconfig:$PKG_CONFIG_PATH"
diff --git a/build/windows/gitlab-ci/build-gimp-msys2.sh b/build/windows/gitlab-ci/build-gimp-msys2.sh
index d22678ae40..42ae685b08 100644
--- a/build/windows/gitlab-ci/build-gimp-msys2.sh
+++ b/build/windows/gitlab-ci/build-gimp-msys2.sh
@@ -3,11 +3,13 @@
set -e
if [[ "$MSYSTEM" == "MINGW32" ]]; then
+ export ARTIFACTS_SUFFIX="-w32"
export MSYS2_ARCH="i686"
export ACLOCAL_FLAGS="-I/c/msys64/mingw32/share/aclocal"
export PATH="/c/msys64/mingw32/bin:$PATH"
export GIMP_OPTIONS="--with-vala=no --enable-vala=no"
else
+ export ARTIFACTS_SUFFIX="-w64"
export MSYS2_ARCH="x86_64"
export ACLOCAL_FLAGS="-I/c/msys64/mingw64/share/aclocal"
export PATH="/c/msys64/mingw64/bin:$PATH"
@@ -78,9 +80,9 @@ pacman --noconfirm -S --needed \
# XXX We've got a weird error when the prefix is in the current dir.
# Until we figure it out, this trick seems to work, even though it's
# completely ridiculous.
-mv _install ~
+mv "_install${ARTIFACTS_SUFFIX}" ~
-export GIMP_PREFIX=`realpath ~/_install`
+export GIMP_PREFIX="`realpath ~/_install`${ARTIFACTS_SUFFIX}"
export PATH="$GIMP_PREFIX/bin:$PATH"
export PKG_CONFIG_PATH="${GIMP_PREFIX}/lib/pkgconfig:$PKG_CONFIG_PATH"
export PKG_CONFIG_PATH="${GIMP_PREFIX}/share/pkgconfig:$PKG_CONFIG_PATH"
@@ -96,8 +98,8 @@ export CC="ccache gcc"
ccache --zero-stats
ccache --show-stats
-mkdir _build
-cd _build
+mkdir "_build${ARTIFACTS_SUFFIX}"
+cd "_build${ARTIFACTS_SUFFIX}"
../autogen.sh --prefix="${GIMP_PREFIX}" --enable-windows-installer ${GIMP_OPTIONS}
make -j4
make install
diff --git a/build/windows/gitlab-ci/installer-gimp-msys2.sh b/build/windows/gitlab-ci/installer-gimp-msys2.sh
new file mode 100644
index 0000000000..8ac89e6645
--- /dev/null
+++ b/build/windows/gitlab-ci/installer-gimp-msys2.sh
@@ -0,0 +1,32 @@
+# Install Inno Setup.
+wget https://jrsoftware.org/download.php/is.exe
+./is.exe //SILENT //SUPPRESSMSGBOXES //CURRENTUSER //SP- //LOG="innosetup.log"
+
+# Install unofficial language files. These are translations of "unknown
+# translation quality or might not be maintained actively".
+# Cf. https://jrsoftware.org/files/istrans/
+ISCCDIR=`grep "Dest filename:.*ISCC.exe" innosetup.log | sed 's/.*Dest filename: *\|ISCC.exe//g'`
+ISCCDIR=`cygpath -u "$ISCCDIR"`
+mkdir -p "${ISCCDIR}/Languages/Unofficial"
+cd "${ISCCDIR}/Languages/Unofficial"
+
+wget https://raw.githubusercontent.com/jrsoftware/issrc/main/Files/Languages/Unofficial/Basque.isl
+wget https://raw.githubusercontent.com/jrsoftware/issrc/main/Files/Languages/Unofficial/ChineseSimplified.isl
+wget
https://raw.githubusercontent.com/jrsoftware/issrc/main/Files/Languages/Unofficial/ChineseTraditional.isl
+wget https://raw.githubusercontent.com/jrsoftware/issrc/main/Files/Languages/Unofficial/EnglishBritish.isl
+wget https://raw.githubusercontent.com/jrsoftware/issrc/main/Files/Languages/Unofficial/Esperanto.isl
+wget https://raw.githubusercontent.com/jrsoftware/issrc/main/Files/Languages/Unofficial/Greek.isl
+wget https://raw.githubusercontent.com/jrsoftware/issrc/main/Files/Languages/Unofficial/Hungarian.isl
+wget https://raw.githubusercontent.com/jrsoftware/issrc/main/Files/Languages/Unofficial/Indonesian.isl
+wget https://raw.githubusercontent.com/jrsoftware/issrc/main/Files/Languages/Unofficial/Korean.isl
+wget https://raw.githubusercontent.com/jrsoftware/issrc/main/Files/Languages/Unofficial/Latvian.isl
+wget https://raw.githubusercontent.com/jrsoftware/issrc/main/Files/Languages/Unofficial/Malaysian.isl
+wget https://raw.githubusercontent.com/jrsoftware/issrc/main/Files/Languages/Unofficial/Marathi.islu
+wget https://raw.githubusercontent.com/jrsoftware/issrc/main/Files/Languages/Unofficial/Romanian.isl
+wget https://raw.githubusercontent.com/jrsoftware/issrc/main/Files/Languages/Unofficial/Swedish.isl
+wget https://raw.githubusercontent.com/jrsoftware/issrc/main/Files/Languages/Unofficial/Vietnamese.isl
+cd -
+
+# Construct now the installer.
+cd build/windows/installer
+./compile.bat 2.99.6 ../../.. gimp-w32 gimp-w64 ../../.. gimp-w32 gimp-w64
diff --git a/build/windows/gitlab-ci/package-gimp-msys2.sh b/build/windows/gitlab-ci/package-gimp-msys2.sh
index 3d181bda24..8227bebff6 100644
--- a/build/windows/gitlab-ci/package-gimp-msys2.sh
+++ b/build/windows/gitlab-ci/package-gimp-msys2.sh
@@ -3,11 +3,13 @@
set -e
if [[ "$MSYSTEM" == "MINGW32" ]]; then
+ export ARTIFACTS_SUFFIX="-w32"
export MSYS2_ARCH="i686"
export MSYS_PREFIX="/c/msys64/mingw32/"
export PATH="/mingw32/bin:$PATH"
export GIMP_DISTRIB=`realpath ./gimp-w32`
else
+ export ARTIFACTS_SUFFIX="-w64"
export MSYS2_ARCH="x86_64"
export MSYS_PREFIX="/c/msys64/mingw64/"
export PATH="/mingw64/bin:$PATH"
@@ -76,7 +78,7 @@ pacman --noconfirm -S --needed \
mingw-w64-$MSYS2_ARCH-vala \
mingw-w64-$MSYS2_ARCH-xpm-nox
-export GIMP_PREFIX=`realpath ./_install`
+export GIMP_PREFIX="`realpath ./_install`${ARTIFACTS_SUFFIX}"
export PATH="$GIMP_PREFIX/bin:$PATH"
# Package ressources.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]