diff --git a/Jenkinsfile b/Jenkinsfile index 2fb1d474f465272b264345c9a8e8bf00d445e0bb..d418f698337c3aae4511e27b5642d77f82a39d3e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -76,9 +76,6 @@ pipeline { ' submodules at their Git-recorded commit. When left ' + 'unticked (the default), checkout the submodules at ' + 'their latest commit from their main remote branch.') - booleanParam(name: 'BUILD_ARM', - defaultValue: false, - description: 'Whether to build ARM packages.') booleanParam(name: 'DEPLOY', defaultValue: false, description: 'Whether to deploy packages.') @@ -206,9 +203,6 @@ git tag \$(cat .tarball-version) -am "Jami \$(cat .tarball-version)" } TARGETS = targetsText.split(/\s/) - if (!params.BUILD_ARM) { - TARGETS = TARGETS.findAll { !(it =~ /_(armhf|arm64)$/) } - } def stages = [:] diff --git a/client-qt b/client-qt index 83f68573324a453a6d26e025fd6439f175a79d1b..c1594e548ae62b623d78edafdfc9c2d6a547b762 160000 --- a/client-qt +++ b/client-qt @@ -1 +1 @@ -Subproject commit 83f68573324a453a6d26e025fd6439f175a79d1b +Subproject commit c1594e548ae62b623d78edafdfc9c2d6a547b762 diff --git a/daemon b/daemon index 02c5cecd363a1ee25a914d72e243d7903e44969b..c1b1aaf0136aa03132ff1c7101583d3210844c93 160000 --- a/daemon +++ b/daemon @@ -1 +1 @@ -Subproject commit 02c5cecd363a1ee25a914d72e243d7903e44969b +Subproject commit c1b1aaf0136aa03132ff1c7101583d3210844c93 diff --git a/docker/Dockerfile_debian_testing b/docker/Dockerfile_debian_testing index 715bc9caa117b57f5e25a960fbcba80d03ec9dcb..800cbad89e2015c553e196c3d8e2df6c1698f404 100644 --- a/docker/Dockerfile_debian_testing +++ b/docker/Dockerfile_debian_testing @@ -8,7 +8,8 @@ RUN apt-get update --allow-releaseinfo-change && \ devscripts \ equivs \ python-is-python3 \ - wget + wget \ + nasm ADD scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh diff --git a/docker/Dockerfile_snap b/docker/Dockerfile_snap index eea2f5378cd70cbd7b8a4b91c2d55e55d9e4e2b2..718dcb48841c6d371374daca0a2d9624b3116f82 100644 --- a/docker/Dockerfile_snap +++ b/docker/Dockerfile_snap @@ -1,6 +1,12 @@ -FROM ubuntu:jammy as builder +ARG RISK=edge +ARG UBUNTU=focal -# Grab dependencies. +FROM ubuntu:$UBUNTU as builder +ARG RISK +ARG UBUNTU +RUN echo "Building snapcraft:$RISK in ubuntu:$UBUNTU" + +# Grab dependencies RUN apt-get update RUN apt-get dist-upgrade --yes RUN apt-get install --yes \ @@ -10,61 +16,68 @@ RUN apt-get install --yes \ # Grab the core snap (for backwards compatibility) from the stable channel and # unpack it in the proper place. -RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' -H "X-Ubuntu-Architecture: amd64" 'https://api.snapcraft.io/api/v1/snaps/details/core' | jq '.download_url' -r) --output core.snap +RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core' | jq '.download_url' -r) --output core.snap RUN mkdir -p /snap/core RUN unsquashfs -d /snap/core/current core.snap -# Grab the core18 snap (which snapcraft uses as a base) from the stable channel -# and unpack it in the proper place. -RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' -H "X-Ubuntu-Architecture: amd64" 'https://api.snapcraft.io/api/v1/snaps/details/core18' | jq '.download_url' -r) --output core18.snap -RUN mkdir -p /snap/core18 -RUN unsquashfs -d /snap/core18/current core18.snap - -# Grab the core22 snapfrom the stable channel +# Grab the core22 snap (which snapcraft uses as a base) from the stable channel # and unpack it in the proper place. -RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' -H "X-Ubuntu-Architecture: amd64" 'https://api.snapcraft.io/api/v1/snaps/details/core22' | jq '.download_url' -r) --output core22.snap +RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core22?channel='$RISK | jq '.download_url' -r) --output core22.snap RUN mkdir -p /snap/core22 RUN unsquashfs -d /snap/core22/current core22.snap -# Grab the snapcraft snap from the targeted channel and unpack it in the proper +# Grab the core20 snap (which snapcraft uses as a base) from the stable channel +# and unpack it in the proper place. +RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core20' | jq '.download_url' -r) --output core20.snap +RUN mkdir -p /snap/core20 +RUN unsquashfs -d /snap/core20/current core20.snap + +# Grab the core20 snap (which snapcraft uses as a base) from the stable channel +# and unpack it in the proper place. +RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/lxd' | jq '.download_url' -r) --output lxd.snap +RUN mkdir -p /snap/lxd +RUN unsquashfs -d /snap/lxd/current lxd.snap + +# Grab the snapcraft snap from the $RISK channel and unpack it in the proper # place. -# RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/snapcraft?channel=stable' | jq '.download_url' -r) --output snapcraft.snap -# Current snapcraft snap is broken upstream again: -# https://forum.snapcraft.io/t/snapcraft-docker-images-broken-again/27942 -# Temporary workaround: pin to an older, non-broken version for now. -# TODO: restore to the above once issue is fixed upstream. -RUN curl -L https://api.snapcraft.io/api/v1/snaps/download/vMTKRaLjnOJQetI78HjntT37VuoyssFE_6751.snap --output snapcraft.snap +RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/snapcraft?channel='$RISK | jq '.download_url' -r) --output snapcraft.snap RUN mkdir -p /snap/snapcraft RUN unsquashfs -d /snap/snapcraft/current snapcraft.snap +# Fix Python3 installation: Make sure we use the interpreter from +# the snapcraft snap: +RUN unlink /snap/snapcraft/current/usr/bin/python3 +RUN ln -s /snap/snapcraft/current/usr/bin/python3.* /snap/snapcraft/current/usr/bin/python3 +RUN echo /snap/snapcraft/current/lib/python3.*/site-packages >> /snap/snapcraft/current/usr/lib/python3/dist-packages/site-packages.pth + # Create a snapcraft runner (TODO: move version detection to the core of # snapcraft). RUN mkdir -p /snap/bin RUN echo "#!/bin/sh" > /snap/bin/snapcraft -RUN snap_version="$(awk '/^version:/{print $2}' /snap/snapcraft/current/meta/snap.yaml)" && echo "export SNAP_VERSION=\"$snap_version\"" >> /snap/bin/snapcraft +RUN snap_version="$(awk '/^version:/{print $2}' /snap/snapcraft/current/meta/snap.yaml | tr -d \')" && echo "export SNAP_VERSION=\"$snap_version\"" >> /snap/bin/snapcraft RUN echo 'exec "$SNAP/usr/bin/python3" "$SNAP/bin/snapcraft" "$@"' >> /snap/bin/snapcraft RUN chmod +x /snap/bin/snapcraft # Multi-stage build, only need the snaps from the builder. Copy them one at a # time so they can be cached. -FROM ubuntu:jammy +FROM ubuntu:$UBUNTU COPY --from=builder /snap/core /snap/core -COPY --from=builder /snap/core18 /snap/core18 COPY --from=builder /snap/core22 /snap/core22 +COPY --from=builder /snap/core20 /snap/core20 +COPY --from=builder /snap/lxd /snap/lxd COPY --from=builder /snap/snapcraft /snap/snapcraft COPY --from=builder /snap/bin/snapcraft /snap/bin/snapcraft # Generate locale and install dependencies. -RUN apt-get update && apt-get dist-upgrade --yes && apt-get install --yes snapd sudo locales && locale-gen en_US.UTF-8 +RUN apt-get update && apt-get dist-upgrade --yes && apt-get install --yes snapd sudo apt-transport-https locales && locale-gen en_US.UTF-8 # Set the proper environment. ENV LANG="en_US.UTF-8" ENV LANGUAGE="en_US:en" ENV LC_ALL="en_US.UTF-8" -ENV PATH="/snap/bin:$PATH" +ENV PATH="/snap/bin:/snap/snapcraft/current/usr/bin:/snap/snapcraft/current/libexec/snapcraft/:$PATH" ENV SNAP="/snap/snapcraft/current" ENV SNAP_NAME="snapcraft" - ENV SNAP_ARCH="amd64" ADD scripts/build-package-snap.sh /opt/build-package-snap.sh diff --git a/packaging/rules/snap/jami/snapcraft.yaml b/packaging/rules/snap/jami/snapcraft.yaml index 888fc2a3c081082c3fb87ce8f35c14ebe13f8336..2bf7359dada122064be8aff4bc4da8ceb2bf2f56 100644 --- a/packaging/rules/snap/jami/snapcraft.yaml +++ b/packaging/rules/snap/jami/snapcraft.yaml @@ -85,13 +85,13 @@ description: | confinement: strict grade: stable -base: core22 +base: core20 plugs: - gnome-42-2204: + gnome-3-38-2004: interface: content target: $SNAP/gnome-platform - default-provider: gnome-42-2204:gnome-42-2204 + default-provider: gnome-3-38-2004:gnome-3-38-2004 gtk-3-themes: interface: content target: $SNAP/data-dir/themes @@ -168,7 +168,7 @@ package-repositories: components: [main] suites: [jami] key-id: A295D773307D25A33AE72F2F64CD5FA175348F84 - url: https://dl.jami.net/nightly/ubuntu_22.04/ + url: https://dl.jami.net/nightly/ubuntu_20.04/ parts: desktop-launch: @@ -329,7 +329,7 @@ parts: - libgstreamer-plugins-base1.0-0 - libgstreamer1.0-0 - libgudev-1.0-0 - - libjsoncpp25 + - libjsoncpp1 - libllvm12 - libminizip1 - libnm0 diff --git a/scripts/build-package-snap.sh b/scripts/build-package-snap.sh index 90fb3415b92ebd545f8786e44568d89b07171536..18b593ac2319d8f636095ef333f6cbf24c7278c7 100755 --- a/scripts/build-package-snap.sh +++ b/scripts/build-package-snap.sh @@ -29,7 +29,7 @@ cd /opt/jami-project/packaging/rules/snap/${SNAP_PKG_NAME}/ # set the version and tarball filename sed -i "s/RELEASE_VERSION/${RELEASE_VERSION}/g" snapcraft.yaml -snapcraft # requires snapcraft >= 4.8 +snapcraft --destructive-mode # requires snapcraft >= 4.8 # move the built snap to output mv *.snap /opt/output/ diff --git a/scripts/deploy-packages.sh b/scripts/deploy-packages.sh index 4d3bb51c149752a37cd2f4d6cceb06ba52b534bc..b886fb55b878c496396c85de879f3737b7180632 100755 --- a/scripts/deploy-packages.sh +++ b/scripts/deploy-packages.sh @@ -226,6 +226,9 @@ function package_snap() ls packages/${DISTRIBUTION}* cp packages/${DISTRIBUTION}*/*.snap ${DISTRIBUTION_REPOSITORY_FOLDER}/ elif [[ $CHANNEL =~ nightly ]]; then + echo $(hostname) + echo $(whoami) + echo $(snapcraft whoami) snapcraft push packages/${DISTRIBUTION}*/*.snap --release edge elif [[ $CHANNEL =~ stable ]]; then snapcraft push packages/${DISTRIBUTION}*/*.snap --release stable