diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5e0873d9..c1130420 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -223,6 +223,71 @@ build-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 diff --git a/AppImageBuilder.yml b/AppImageBuilder.yml new file mode 100644 index 00000000..3b7c5350 --- /dev/null +++ b/AppImageBuilder.yml @@ -0,0 +1,122 @@ +# appimage-builder recipe see https://appimage-builder.readthedocs.io for details +version: 1 +AppDir: + path: ./AppDir + app_info: + id: nheko + name: nheko + icon: nheko + version: latest + exec: usr/bin/nheko + exec_args: $@ + runtime: + env: + APPDIR_LIBRARY_PATH: $APPDIR/usr/lib/x86_64-linux-gnu:$APPDIR/usr/lib/x86_64-linux-gnu/gstreamer-1.0:$APPDIR/usr/lib/x86_64-linux-gnu/gconv:$APPDIR/lib/x86_64-linux-gnu:$APPDIR/usr/lib/x86_64-linux-gnu/pulseaudio + apt: + arch: amd64 + allow_unauthenticated: true + sources: + - sourceline: deb http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse + - sourceline: deb http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse + - sourceline: deb http://archive.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse + - sourceline: deb http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse + - sourceline: deb http://archive.canonical.com/ubuntu jammy partner + key_url: http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x871920d1991bc93c + include: + # idk, need there ca-certificates, but some systems may not have + - ca-certificates + - gstreamer1.0-plugins-good + - libbs2b0 + - libbz2-1.0 + - libcurl4 + - libelf1 + - libexpat1 + - libevent-core-2.1-7 + - libevent-pthreads-2.1-7 + - libjpeg-turbo8 + - libkf5archive5 + - liblmdb0 + - liblz4-1 + - libnorm1 + - libnss-mdns + - libpcre3 + - qml-module-qt-labs-platform + - qml-module-qt-labs-settings + - qml-module-qtgraphicaleffects + - qml-module-qtquick-particles2 + - qml-module-qtmultimedia + - qml-module-qtquick2 + - qml-module-qtquick-controls2 + - qml-module-qtquick-layouts + - qml-module-qtquick-window2 + - libcmark0.30.2 + - libfmt8 + - libolm3 + - libqt5core5a + - libqt5dbus5 + - libqt5gui5 + - libqt5keychain1 + - libqt5multimedia5 + - libqt5multimedia5-plugins + - libqt5network5 + - libqt5quickwidgets5 + - libqt5svg5 + - libqt5widgets5 + - libspdlog1-fmt8 + - libxcb-ewmh2 + - libxcb1 + - librubberband2 + - libsm6 + - libsnappy1v5 + - libxau6 + - libxcb-render-util0 + - libxcb-sync1 + - libxcb-xinerama0 + - libxcb-xkb1 + - libxcursor1 + - libxdmcp6 + - libxext6 + - libxfixes3 + - libxrender1 + - libxshmfence1 + - libxv1 + - libxxf86vm1 + - libzstd1 + exclude: [] + files: + exclude: + - usr/share/man + - usr/share/doc + - usr/bin/cmark + - usr/bin/dbus* + - usr/bin/openssl + - usr/bin/c_rehash + - usr/bin/session-migration + - usr/include + - usr/sbin + - lib/systemd + test: + fedora: + image: appimagecrafters/tests-env:fedora-30 + command: ./AppRun + use_host_x: true + debian: + image: appimagecrafters/tests-env:debian-stable + command: ./AppRun + use_host_x: true + arch: + image: appimagecrafters/tests-env:archlinux-latest + command: ./AppRun + use_host_x: true + centos: + image: appimagecrafters/tests-env:centos-7 + command: ./AppRun + use_host_x: true + ubuntu: + image: appimagecrafters/tests-env:ubuntu-xenial + command: ./AppRun + use_host_x: true +AppImage: + arch: x86_64 + update-information: None + sign-key: None