image: debian:testing stages: - dependencies - gimp - analysis variables: GIT_DEPTH: "1" INSTALL_DIR: "_install" INSTALL_PREFIX: "${CI_PROJECT_DIR}/${INSTALL_DIR}" PACMAN_CACHE: "${CI_PROJECT_DIR}/_pacman_cache" ## GNU/Linux 64-bit CIs ## deps-debian/testing: stage: dependencies cache: paths: - _pacman_cache artifacts: expire_in: 2 hours when: always paths: - "${INSTALL_DIR}" - _babl/_build - _gegl/_build before_script: - apt-get update - apt-get install -y --no-install-recommends build-essential git ffmpeg graphviz-dev gobject-introspection libjson-glib-dev libgexiv2-dev libgirepository1.0-dev liblcms2-dev libopenexr-dev libraw-dev librsvg2-dev libspiro-dev libsuitesparse-dev libtiff5-dev luajit meson python3 valac - apt-get install -y --reinstall ca-certificates - git clone --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/babl.git _babl - git clone --depth=${GIT_DEPTH} https://gitlab.gnome.org/GNOME/gegl.git _gegl - export PKG_CONFIG_PATH="${INSTALL_PREFIX}/lib/pkgconfig" - export PKG_CONFIG_PATH="${INSTALL_PREFIX}/lib/`gcc -print-multiarch`/pkgconfig/:$PKG_CONFIG_PATH" - export LD_LIBRARY_PATH="${INSTALL_PREFIX}/lib:${LD_LIBRARY_PATH}" - export LD_LIBRARY_PATH="${INSTALL_PREFIX}/lib/`gcc -print-multiarch`:$LD_LIBRARY_PATH" - export XDG_DATA_DIRS="${INSTALL_PREFIX}/share:/usr/local/share:/usr/share" script: - cd _babl - meson -Dprefix="${INSTALL_PREFIX}" _build - ninja -C _build - ninja -C _build install - cd ../_gegl - meson --prefix="${INSTALL_PREFIX}" _build - ninja -C _build - ninja -C _build install .gimp-debian/testing-base: stage: gimp dependencies: - deps-debian/testing artifacts: expire_in: 1 days when: always name: "app-build-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}" paths: - _build #- "${INSTALL_DIR}" before_script: - apt-get update - apt-get install -y --no-install-recommends at-spi2-core build-essential desktop-file-utils ffmpeg hicolor-icon-theme ghostscript git glib-networking gobject-introspection gtk-doc-tools intltool iso-codes libappstream-glib-dev libbz2-dev libdbus-glib-1-dev libexif-dev libgexiv2-dev libgirepository1.0-dev libgtk-3-bin libgtk-3-dev libgudev-1.0-dev libjson-glib-dev liblcms2-dev liblzma-dev libmng-dev libmypaint-dev libopenexr-dev libpoppler-glib-dev libraw19 librsvg2-dev libspiro-dev libtiff-dev libtool libumfpack5 libwebp-dev libwmf-dev libxmu-dev libxpm-dev meson mypaint-brushes poppler-data xauth xvfb - export PKG_CONFIG_PATH="${INSTALL_PREFIX}/lib/pkgconfig:${INSTALL_PREFIX}/share/pkgconfig" - export PKG_CONFIG_PATH="${INSTALL_PREFIX}/lib/`gcc -print-multiarch`/pkgconfig/:$PKG_CONFIG_PATH" - export PKG_CONFIG_PATH="${INSTALL_PREFIX}/share/`gcc -print-multiarch`/pkgconfig/:$PKG_CONFIG_PATH" - export LD_LIBRARY_PATH="${INSTALL_PREFIX}/lib:${LD_LIBRARY_PATH}" - export LD_LIBRARY_PATH="${INSTALL_PREFIX}/lib/`gcc -print-multiarch`:$LD_LIBRARY_PATH" - export XDG_DATA_DIRS="${INSTALL_PREFIX}/share:/usr/local/share:/usr/share" - export PATH="${INSTALL_PREFIX}/bin:$PATH" needs: ["deps-debian/testing"] gimp-debian/testing-autotools: extends: .gimp-debian/testing-base script: - mkdir _build - cd _build - ../autogen.sh --prefix="${INSTALL_PREFIX}" --enable-debug --with-python=force --with-javascript=force --with-lua=force - make -j "$(nproc)" - make check gimp-debian/testing-meson: extends: .gimp-debian/testing-base script: - meson _build --prefix="${INSTALL_PREFIX}" -Dpython=always -Djavascript=always -Dlua=always - ninja -C _build - ninja -C _build test gimp-debian/testing-clang: extends: .gimp-debian/testing-base variables: CC: "clang" CXX: "clang++" script: - apt-get install -y --no-install-recommends clang libomp-dev - meson _build --prefix="${INSTALL_PREFIX}" -Dpython=always -Djavascript=always -Dlua=always - ninja -C _build - ninja -C _build test ## WINDOWS 64-bit CI ## deps-win64: stage: dependencies variables: XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/" XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/" cache: paths: - .cache/crossroad/ before_script: - apt-get update - apt-get install -y --no-install-recommends build-essential cpio gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 git meson pkg-config python3-distutils python3-docutils python3-pip rpm - apt-get install -y --reinstall ca-certificates - git clone --depth=${GIT_DEPTH} git://git.tuxfamily.org/gitroot/crossroad/crossroad.git - cd crossroad - ./setup.py install --prefix=`pwd`/../.local - cd .. - pip3 install zstandard script: - export PATH="`pwd`/.local/bin:$PATH" - crossroad w64 gimp --run="build/windows/crossbuild-gitlab-ci/build-deps.sh" artifacts: name: "${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}" when: always expire_in: 2 hours paths: - .local/ - _deps/ gimp-win64: stage: gimp dependencies: - deps-win64 variables: XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/" XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/" cache: paths: - .cache/crossroad/ before_script: - apt-get update - apt-get install -y --no-install-recommends build-essential cpio gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 git intltool libgdk-pixbuf2.0-dev libglib2.0-bin meson python3 rpm xsltproc script: - export PATH="`pwd`/.local/bin:$PATH" - mkdir _build && cd _build - echo 'crossroad meson .. -Dgtk-doc=false -Dpython=always -Dlua=always -Djavascript=always && ninja install && cp ../build/windows/crossbuild-gitlab-ci/gimp-wrapper.cmd $CROSSROAD_PREFIX/bin/ && cp -fr $CROSSROAD_PREFIX/ ../gimp-prefix/ ' | crossroad w64 gimp --run="-" needs: ["deps-win64"] artifacts: name: "${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}" when: always expire_in: 1 day paths: - _build/ - gimp-prefix/ ## WINDOWS 32-bit CI ## deps-win32: stage: dependencies variables: XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/" XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/" cache: paths: - .cache/crossroad/ before_script: - apt-get update - apt-get install -y --no-install-recommends build-essential cpio gcc-mingw-w64-i686 g++-mingw-w64-i686 git meson pkg-config python3-distutils python3-docutils python3-pip rpm - apt-get install -y --reinstall ca-certificates - git clone --depth=${GIT_DEPTH} git://git.tuxfamily.org/gitroot/crossroad/crossroad.git - cd crossroad - ./setup.py install --prefix=`pwd`/../.local - cd .. - pip3 install zstandard script: - export PATH="`pwd`/.local/bin:$PATH" - crossroad w32 gimp --run="build/windows/crossbuild-gitlab-ci/build-deps.sh" artifacts: name: "${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}" when: always expire_in: 2 hours paths: - .local/ - _deps/ gimp-win32: stage: gimp dependencies: - deps-win32 variables: XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/" XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/" cache: paths: - .cache/crossroad/ before_script: - apt-get update - apt-get install -y --no-install-recommends build-essential cpio gcc-mingw-w64-i686 g++-mingw-w64-i686 git intltool libgdk-pixbuf2.0-dev libglib2.0-bin meson python3 rpm xsltproc script: - export PATH="`pwd`/.local/bin:$PATH" - mkdir _build && cd _build - echo 'crossroad meson .. -Dwmf=disabled -Dgtk-doc=false -Dpython=always -Dlua=always -Djavascript=always && ninja install && cp ../build/windows/crossbuild-gitlab-ci/gimp-wrapper.cmd $CROSSROAD_PREFIX/bin/ && cp -fr $CROSSROAD_PREFIX/ ../gimp-prefix/ ' | crossroad w32 gimp --run="-" needs: ["deps-win32"] artifacts: name: "${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}" when: always expire_in: 1 day paths: - _build/ - gimp-prefix/ cppcheck: stage: analysis before_script: - apt-get update - apt-get install -y cppcheck script: - cppcheck -q -j8 --enable=all --force --output-file=cppcheck.xml --xml --xml-version=2 -i _build -i _deps -i gimp-prefix -i .local -i .cache . - mkdir report - cppcheck-htmlreport --source-dir=. --title=gimp --file=cppcheck.xml --report-dir=report artifacts: name: "${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}" expire_in: 1 week when: always paths: - report needs: []