|
|
|
variables:
|
|
|
|
CCACHE_COMPILERCHECK: content
|
|
|
|
CCACHE_DIR: "${CI_PROJECT_DIR}/.ccache"
|
|
|
|
# prevent configure tzdata hanging apt install commands
|
|
|
|
DEBIAN_FRONTEND: noninteractive
|
|
|
|
|
|
|
|
build-clazy:
|
|
|
|
stage: build
|
|
|
|
image: ubuntu:22.04
|
|
|
|
tags: [docker]
|
|
|
|
variables:
|
|
|
|
CLAZY_CHECKS: level0,level1,no-non-pod-global-static
|
|
|
|
TRAVIS_OS_NAME: linux
|
|
|
|
before_script:
|
|
|
|
- apt-get update
|
|
|
|
- apt-get -y install --no-install-suggests --no-install-recommends ca-certificates build-essential ninja-build cmake gcc make automake liblmdb-dev libre2-dev
|
|
|
|
libssl-dev libqt5multimedia5-plugins libqt5multimediagsttools5 libqt5multimediaquick5 libqt5svg5-dev
|
|
|
|
qtmultimedia5-dev qtquickcontrols2-5-dev qttools5-dev qttools5-dev-tools qtdeclarative5-dev
|
|
|
|
qml-module-qtmultimedia qml-module-qtquick-controls2 qml-module-qtquick-layouts qml-module-qt-labs-platform
|
|
|
|
qt5keychain-dev ccache clazy libcurl4-openssl-dev libevent-dev libspdlog-dev git nlohmann-json3-dev libcmark-dev asciidoc # libolm-dev
|
|
|
|
script:
|
|
|
|
- export PATH="/usr/local/bin/:/usr/lib/ccache:${PATH}"
|
|
|
|
- export CMAKE_BUILD_PARALLEL_LEVEL=$(cat /proc/cpuinfo | awk '/^processor/{print $3}' | wc -l)
|
|
|
|
- cmake -GNinja -H. -Bbuild
|
|
|
|
-DCMAKE_INSTALL_PREFIX=.deps/usr
|
|
|
|
-DHUNTER_ENABLED=OFF -DBUILD_SHARED_LIBS=OFF -DUSE_BUNDLED_OPENSSL=ON -DUSE_BUNDLED_MTXCLIENT=ON -DUSE_BUNDLED_COEURL=ON -DUSE_BUNDLED_LMDBXX=ON -DUSE_BUNDLED_OLM=ON
|
|
|
|
-DVOIP=OFF
|
|
|
|
-DCMAKE_BUILD_TYPE=Release
|
|
|
|
-DCI_BUILD=ON -DFETCHCONTENT_QUIET=OFF -DCMAKE_CXX_COMPILER=clazy
|
|
|
|
- cmake --build build
|
|
|
|
rules:
|
|
|
|
- if : '$CI_PIPELINE_TRIGGERED == null'
|
|
|
|
cache:
|
|
|
|
key: "$CI_JOB_NAME"
|
|
|
|
paths:
|
|
|
|
- .ccache
|
|
|
|
|
|
|
|
build-gcc11:
|
|
|
|
stage: build
|
|
|
|
image: ubuntu:22.04
|
|
|
|
tags: [docker]
|
|
|
|
variables:
|
|
|
|
TRAVIS_OS_NAME: linux
|
|
|
|
before_script:
|
|
|
|
- apt-get update
|
|
|
|
- apt-get -y install --no-install-suggests --no-install-recommends ca-certificates build-essential ninja-build cmake gcc make automake ccache liblmdb-dev
|
|
|
|
libssl-dev libqt5multimedia5-plugins libqt5multimediagsttools5 libqt5multimediaquick5 libqt5svg5-dev
|
|
|
|
qtmultimedia5-dev qtquickcontrols2-5-dev qttools5-dev qttools5-dev-tools qtdeclarative5-dev
|
|
|
|
qml-module-qtmultimedia qml-module-qtquick-controls2 qml-module-qtquick-layouts qml-module-qt-labs-platform
|
|
|
|
qt5keychain-dev ccache clazy libcurl4-openssl-dev libevent-dev libspdlog-dev git nlohmann-json3-dev libcmark-dev asciidoc # libolm-dev
|
|
|
|
# need recommended deps for wget
|
|
|
|
- apt-get -y install wget
|
|
|
|
- /usr/sbin/update-ccache-symlinks
|
|
|
|
- rm -rf ../.hunter && mv .hunter ../.hunter || true
|
|
|
|
script:
|
|
|
|
- export PATH="/usr/lib/ccache:${PATH}"
|
|
|
|
- cmake -GNinja -H. -Bbuild
|
|
|
|
-DCMAKE_INSTALL_PREFIX=.deps/usr
|
|
|
|
-DHUNTER_ROOT="../.hunter"
|
|
|
|
-DHUNTER_ENABLED=ON -DBUILD_SHARED_LIBS=OFF -DUSE_BUNDLED_OPENSSL=ON -DUSE_BUNDLED_LMDB=OFF -DUSE_BUNDLED_QTKEYCHAIN=OFF
|
|
|
|
-DVOIP=OFF
|
|
|
|
-DCMAKE_BUILD_TYPE=Release -DHUNTER_CONFIGURATION_TYPES=Release
|
|
|
|
-DCI_BUILD=ON -DFETCHCONTENT_QUIET=OFF
|
|
|
|
-DJSON_ImplicitConversions=OFF
|
|
|
|
- cmake --build build
|
|
|
|
after_script:
|
|
|
|
- mv ../.hunter .hunter
|
|
|
|
rules:
|
|
|
|
- if : '$CI_PIPELINE_TRIGGERED == null'
|
|
|
|
cache:
|
|
|
|
key: "$CI_JOB_NAME"
|
|
|
|
paths:
|
|
|
|
- .hunter/
|
|
|
|
- .ccache
|
|
|
|
|
|
|
|
build-gcc10:
|
|
|
|
stage: build
|
|
|
|
image: debian:bullseye
|
|
|
|
tags: [docker]
|
|
|
|
variables:
|
|
|
|
TRAVIS_OS_NAME: linux
|
|
|
|
before_script:
|
|
|
|
- apt-get update
|
|
|
|
- apt-get -y install --no-install-suggests --no-install-recommends ca-certificates build-essential ninja-build cmake gcc make automake ccache liblmdb-dev
|
|
|
|
libssl-dev libqt5multimedia5-plugins libqt5multimediagsttools5 libqt5multimediaquick5 libqt5svg5-dev
|
|
|
|
qtmultimedia5-dev qtquickcontrols2-5-dev qttools5-dev qttools5-dev-tools qtdeclarative5-dev
|
|
|
|
qml-module-qtmultimedia qml-module-qtquick-controls2 qml-module-qtquick-layouts qml-module-qt-labs-platform
|
|
|
|
qt5keychain-dev ccache clazy libcurl4-openssl-dev libevent-dev libspdlog-dev git nlohmann-json3-dev libcmark-dev asciidoc # libolm-dev
|
|
|
|
# need recommended deps for wget
|
|
|
|
- apt-get -y install wget
|
|
|
|
- /usr/sbin/update-ccache-symlinks
|
|
|
|
- rm -rf ../.hunter && mv .hunter ../.hunter || true
|
|
|
|
script:
|
|
|
|
- export PATH="/usr/lib/ccache:${PATH}"
|
|
|
|
- cmake -GNinja -H. -Bbuild
|
|
|
|
-DCMAKE_INSTALL_PREFIX=.deps/usr
|
|
|
|
-DHUNTER_ROOT="../.hunter"
|
|
|
|
-DHUNTER_ENABLED=ON -DBUILD_SHARED_LIBS=OFF -DUSE_BUNDLED_OPENSSL=ON -DUSE_BUNDLED_LMDB=OFF -DUSE_BUNDLED_QTKEYCHAIN=OFF
|
|
|
|
-DVOIP=OFF
|
|
|
|
-DCMAKE_BUILD_TYPE=Release -DHUNTER_CONFIGURATION_TYPES=Release
|
|
|
|
-DCI_BUILD=ON -DFETCHCONTENT_QUIET=OFF
|
|
|
|
-DJSON_ImplicitConversions=OFF
|
|
|
|
-DMAN=OFF
|
|
|
|
- cmake --build build
|
|
|
|
after_script:
|
|
|
|
- mv ../.hunter .hunter
|
|
|
|
rules:
|
|
|
|
- if : '$CI_PIPELINE_TRIGGERED == null'
|
|
|
|
cache:
|
|
|
|
key: "$CI_JOB_NAME"
|
|
|
|
paths:
|
|
|
|
- .hunter/
|
|
|
|
- .ccache
|
|
|
|
|
|
|
|
build-macos:
|
|
|
|
stage: build
|
|
|
|
tags: [macos]
|
|
|
|
before_script:
|
|
|
|
- rm -rf ../.hunter && mv .hunter ../.hunter || true
|
|
|
|
script:
|
|
|
|
- ./.ci/macos/build.sh
|
|
|
|
after_script:
|
|
|
|
- mv ../.hunter .hunter
|
|
|
|
rules:
|
|
|
|
- if : '$CI_PIPELINE_TRIGGERED == null'
|
|
|
|
artifacts:
|
|
|
|
paths:
|
|
|
|
- build/nheko.app
|
|
|
|
name: nheko-${CI_COMMIT_SHORT_SHA}-macos-app
|
|
|
|
expose_as: 'macos-app'
|
|
|
|
public: false
|
|
|
|
cache:
|
|
|
|
key: "${CI_JOB_NAME}"
|
|
|
|
paths:
|
|
|
|
- .hunter/
|
|
|
|
- "${CCACHE_DIR}"
|
|
|
|
|
|
|
|
codesign-macos:
|
|
|
|
stage: deploy
|
|
|
|
tags: [macos]
|
|
|
|
variables:
|
|
|
|
PLAT: "intel"
|
|
|
|
before_script:
|
|
|
|
- pip3 install dmgbuild
|
|
|
|
script:
|
|
|
|
- export PATH=/usr/local/opt/qt@5/bin/:${PATH}
|
|
|
|
- ./.ci/macos/notarize.sh
|
|
|
|
after_script:
|
|
|
|
- ./.ci/upload-nightly-gitlab.sh artifacts/nheko-${CI_COMMIT_SHORT_SHA}_${PLAT}.dmg
|
|
|
|
needs:
|
|
|
|
- job: build-macos
|
|
|
|
optional: true # optional since we want to be able to also trigger this job from cirrus ci for apple silicon builds.
|
|
|
|
rules:
|
|
|
|
- if : '$CI_PIPELINE_TRIGGERED && $CI_COMMIT_REF_PROTECTED == "true"'
|
|
|
|
variables:
|
|
|
|
PLAT: "m1"
|
|
|
|
- if : '$CI_COMMIT_BRANCH == "master"'
|
|
|
|
- if : $CI_COMMIT_TAG
|
|
|
|
artifacts:
|
|
|
|
paths:
|
|
|
|
- artifacts/nheko-${CI_COMMIT_SHORT_SHA}_${PLAT}.dmg
|
|
|
|
- /tmp/notarize*
|
|
|
|
name: nheko-${CI_COMMIT_SHORT_SHA}-macos
|
|
|
|
|
|
|
|
build-flatpak-amd64:
|
|
|
|
stage: build
|
|
|
|
image: ubuntu:latest
|
|
|
|
#image: 'registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master'
|
|
|
|
tags: [docker]
|
|
|
|
before_script:
|
|
|
|
- apt-get update && apt-get -y install flatpak-builder git python3 curl python3-aiohttp python3-tenacity gir1.2-ostree-1.0
|
|
|
|
- flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
|
|
|
- flatpak --noninteractive install --user flathub org.kde.Platform//5.15-22.08
|
|
|
|
- flatpak --noninteractive install --user flathub org.kde.Sdk//5.15-22.08
|
|
|
|
script:
|
|
|
|
- export VERSION=$(git describe)
|
|
|
|
- mkdir -p build-flatpak
|
|
|
|
- cd build-flatpak
|
|
|
|
- flatpak-builder --user --disable-rofiles-fuse --ccache --repo=repo --default-branch=${CI_COMMIT_REF_NAME//\//_} --subject="Build of Nheko ${VERSION} `date`" app ../io.github.NhekoReborn.Nheko.yaml
|
|
|
|
- flatpak build-bundle repo nheko-amd64.flatpak io.github.NhekoReborn.Nheko ${CI_COMMIT_REF_NAME//\//_}
|
|
|
|
after_script:
|
|
|
|
- (cd ./scripts && ./upload-to-flatpak-repo.sh ../build-flatpak/repo) || true
|
|
|
|
- bash ./.ci/upload-nightly-gitlab.sh build-flatpak/nheko-amd64.flatpak
|
|
|
|
rules:
|
|
|
|
- if : '$CI_PIPELINE_TRIGGERED == null'
|
|
|
|
cache:
|
|
|
|
key: "$CI_JOB_NAME"
|
|
|
|
paths:
|
|
|
|
- build-flatpak/.flatpak-builder/
|
|
|
|
artifacts:
|
|
|
|
expose_as: 'flatpak-amd64'
|
|
|
|
paths: ['build-flatpak/nheko-amd64.flatpak']
|
|
|
|
name: flatpak-${CI_COMMIT_REF_NAME}-${VERSION}-amd64
|
|
|
|
|
|
|
|
build-flatpak-arm64:
|
|
|
|
stage: build
|
|
|
|
image: ubuntu:latest
|
|
|
|
#image: 'registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master'
|
|
|
|
tags: [docker-arm64]
|
|
|
|
before_script:
|
|
|
|
- apt-get update && apt-get -y install flatpak-builder git python3 curl python3-aiohttp python3-tenacity gir1.2-ostree-1.0
|
|
|
|
- flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
|
|
|
- flatpak --noninteractive install --user flathub org.kde.Platform//5.15-22.08
|
|
|
|
- flatpak --noninteractive install --user flathub org.kde.Sdk//5.15-22.08
|
|
|
|
script:
|
|
|
|
- export VERSION=$(git describe)
|
|
|
|
- if [ "$(grep MemTotal /proc/meminfo | tr -cd '[0-9]')" -lt "6000000" ]; then export EXTRA_FLAGS='--jobs=3'; fi
|
|
|
|
- mkdir -p build-flatpak
|
|
|
|
- cd build-flatpak
|
|
|
|
- flatpak-builder --user --disable-rofiles-fuse --ccache $EXTRA_FLAGS --repo=repo --default-branch=${CI_COMMIT_REF_NAME//\//_} --subject="Build of Nheko ${VERSION} `date` for arm64" app ../io.github.NhekoReborn.Nheko.yaml
|
|
|
|
- flatpak build-bundle repo nheko-arm64.flatpak io.github.NhekoReborn.Nheko ${CI_COMMIT_REF_NAME//\//_}
|
|
|
|
after_script:
|
|
|
|
- (cd ./scripts && ./upload-to-flatpak-repo.sh ../build-flatpak/repo) || true
|
|
|
|
- bash ./.ci/upload-nightly-gitlab.sh build-flatpak/nheko-arm64.flatpak
|
|
|
|
rules:
|
|
|
|
- if : '$CI_PIPELINE_TRIGGERED == null'
|
|
|
|
cache:
|
|
|
|
key: "$CI_JOB_NAME"
|
|
|
|
paths:
|
|
|
|
- build-flatpak/.flatpak-builder/
|
|
|
|
artifacts:
|
|
|
|
expose_as: 'flatpak-arm64'
|
|
|
|
paths: ['build-flatpak/nheko-arm64.flatpak']
|
|
|
|
name: flatpak-${CI_COMMIT_REF_NAME}-${VERSION}-arm64
|
|
|
|
|
|
|
|
appimage-amd64:
|
|
|
|
stage: build
|
|
|
|
image: ubuntu:22.04
|
|
|
|
tags: [docker]
|
|
|
|
allow_failure: true
|
|
|
|
before_script:
|
|
|
|
# Installing the packages needed to download and install third-party tools
|
|
|
|
- apt-get update && apt-get install -y software-properties-common git wget curl python3 python3-pip python3-setuptools
|
|
|
|
|
|
|
|
# Installing the packages needed to compile nheko and third-party tools
|
|
|
|
- apt-get -y install --no-install-suggests --no-install-recommends ca-certificates build-essential ninja-build cmake gcc make automake ccache liblmdb-dev
|
|
|
|
libssl-dev libqt5multimedia5-plugins libqt5multimediagsttools5 libqt5multimediaquick5 libqt5svg5-dev
|
|
|
|
qtmultimedia5-dev qtquickcontrols2-5-dev qttools5-dev qttools5-dev-tools qtdeclarative5-dev
|
|
|
|
qml-module-qtmultimedia qml-module-qtquick-controls2 qml-module-qtquick-layouts qml-module-qt-labs-platform
|
|
|
|
qt5keychain-dev ccache clazy libcurl4-openssl-dev libevent-dev libspdlog-dev nlohmann-json3-dev libcmark-dev asciidoc libre2-dev libgtest-dev libgl1-mesa-dev qml-module-qtquick-particles2
|
|
|
|
|
|
|
|
# Installing the packages needed to build AppImage
|
|
|
|
- apt-get -yq install breeze-icon-theme desktop-file-utils elfutils fakeroot file gnupg2 gtk-update-icon-cache libgdk-pixbuf2.0-dev libgdk-pixbuf2.0-0 libglib2.0-bin librsvg2-dev libyaml-dev strace zsync squashfs-tools
|
|
|
|
|
|
|
|
- wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O /usr/local/bin/appimagetool && \
|
|
|
|
- chmod +x /usr/local/bin/appimagetool
|
|
|
|
|
|
|
|
- export HOME_DIR=$(pwd)
|
|
|
|
|
|
|
|
# Workaround for https://github.com/AppImageCrafters/appimage-builder/issues/280
|
|
|
|
- cd /tmp
|
|
|
|
- git clone https://github.com/AppImageCrafters/appimage-builder
|
|
|
|
- cd appimage-builder
|
|
|
|
- git checkout 9733877eed75aea0fa8e9a1cd26c22d77a10aa4a
|
|
|
|
- pip3 install .
|
|
|
|
- pip3 install cffi
|
|
|
|
- cd $HOME_DIR
|
|
|
|
|
|
|
|
- /usr/sbin/update-ccache-symlinks
|
|
|
|
- rm -rf ../.hunter && mv .hunter ../.hunter || true
|
|
|
|
|
|
|
|
script:
|
|
|
|
- export PATH="/usr/local/bin/:/usr/lib/ccache:${PATH}"
|
|
|
|
- cmake -GNinja -H. -Bbuild
|
|
|
|
-DCMAKE_INSTALL_PREFIX=/usr
|
|
|
|
-DHUNTER_ROOT=".hunter"
|
|
|
|
-DHUNTER_ENABLED=ON -DBUILD_SHARED_LIBS=OFF -DUSE_BUNDLED_OPENSSL=ON -DUSE_BUNDLED_LMDB=OFF -DUSE_BUNDLED_QTKEYCHAIN=OFF -DUSE_BUNDLED_LIBEVENT=OFF
|
|
|
|
-DVOIP=OFF -DMAN=OFF
|
|
|
|
-DCMAKE_BUILD_TYPE=Release -DHUNTER_CONFIGURATION_TYPES=Release
|
|
|
|
-DCI_BUILD=ON -DFETCHCONTENT_QUIET=OFF
|
|
|
|
-DJSON_ImplicitConversions=OFF
|
|
|
|
- DESTDIR=`pwd`/AppDir ninja -C build install/local
|
|
|
|
- DESTDIR=`pwd`/AppDir ninja -C build _deps/cmark-build/src/install
|
|
|
|
- mkdir -p AppDir/usr/lib/x86_64-linux-gnu AppDir/lib/x86_64-linux-gnu
|
|
|
|
- appimage-builder --skip-test
|
|
|
|
after_script:
|
|
|
|
- bash ./.ci/upload-nightly-gitlab.sh nheko-latest-x86_64.AppImage
|
|
|
|
rules:
|
|
|
|
- if : '$CI_PIPELINE_TRIGGERED == null'
|
|
|
|
artifacts:
|
|
|
|
paths:
|
|
|
|
- 'nheko-latest-x86_64.AppImage'
|
|
|
|
expire_in: 1 week
|
|
|
|
expose_as: 'appimage-amd64'
|
|
|
|
cache:
|
|
|
|
key: "$CI_JOB_NAME"
|
|
|
|
paths:
|
|
|
|
- .hunter/
|
|
|
|
- .ccache
|
|
|
|
|
|
|
|
linting:
|
|
|
|
stage: build
|
|
|
|
image: alpine:latest
|
|
|
|
tags: [docker]
|
|
|
|
before_script:
|
|
|
|
- apk update && apk add make git python3 py3-pip
|
|
|
|
- apk add clang-extra-tools --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main
|
|
|
|
- export PATH="$PATH:/root/.local/bin"
|
|
|
|
- pip3 install --user reuse
|
|
|
|
script:
|
|
|
|
- make lint
|
|
|
|
- make license
|
|
|
|
rules:
|
|
|
|
- if : '$CI_PIPELINE_TRIGGERED == null'
|
|
|
|
|