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/build.py b/build.py index 88698a27d372c428e60d6a2b6987b949b9ea0ae7..faa0d09483d93c716cf632a25380e3e9543053af 100755 --- a/build.py +++ b/build.py @@ -22,8 +22,7 @@ ANDROID_DISTRIBUTION_NAME = "android" WIN32_DISTRIBUTION_NAME = "win32" # vs vars -win_sdk_default = '10.0.16299.0' -win_toolset_default = '142' +win_sdk_default = '10.0.18362.0' APT_BASED_DISTROS = [ 'debian', @@ -373,7 +372,6 @@ def run_install(args): return subprocess.run([ sys.executable, os.path.join( os.getcwd(), "scripts/build-windows.py"), - "--toolset", args.toolset, "--sdk", args.sdk ], check=True) @@ -638,8 +636,6 @@ def parse_args(): dist = choose_distribution() if dist == WIN32_DISTRIBUTION_NAME: - ap.add_argument('--toolset', default=win_toolset_default, type=str, - help='Windows use only, specify Visual Studio toolset version') ap.add_argument('--sdk', default=win_sdk_default, type=str, help='Windows use only, specify Windows SDK version') 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/build-windows.py b/scripts/build-windows.py index 8cb53c18a158285bec63d4276983f7a25508642b..be67027afc3ac276b536c9dd80d71ff8f24432c6 100644 --- a/scripts/build-windows.py +++ b/scripts/build-windows.py @@ -17,8 +17,7 @@ def execute_cmd(cmd, with_shell=False): def build_daemon(parsed_args): make_cmd = os.path.dirname(this_dir) + '\\daemon\\compat\\msvc\\winmake.py' os.chdir(os.path.dirname(this_dir) + '\\daemon\\compat\\msvc') - execute_cmd('python ' + make_cmd + ' -iv -t ' + - parsed_args.toolset + ' -s ' + parsed_args.sdk + ' -b daemon') + execute_cmd('python ' + make_cmd + ' -iv -s ' + parsed_args.sdk + ' -b daemon') os.chdir(os.path.dirname(this_dir)) @@ -31,8 +30,6 @@ def build_client(parsed_args): def parse_args(): ap = argparse.ArgumentParser(description="Qt Client build tool") - ap.add_argument('--toolset', default='', type=str, - help='Windows use only, specify Visual Studio toolset version') ap.add_argument('--sdk', default='', type=str, help='Windows use only, specify Windows SDK version') 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 diff --git a/scripts/install-deps-windows.ps1 b/scripts/install-deps-windows.ps1 index 4307a659c0746578a1380f55364b6f6564aa7720..681a5fc0a391eef8ec2e8b8a9156dc6b8c4f6704 100644 --- a/scripts/install-deps-windows.ps1 +++ b/scripts/install-deps-windows.ps1 @@ -198,13 +198,13 @@ install_choco_packages $choco_packages install_msys2_packages $msys_packages # Install VSNASM -download_file_to_temp 'VSNASM' "https://github.com/ShiftMediaProject/VSNASM/releases/download/0.5/VSNASM.zip" 'VSNASM.zip' +download_file_to_temp 'VSNASM' "https://github.com/ShiftMediaProject/VSNASM/releases/download/0.8/VSNASM.zip" 'VSNASM.zip' unzip_file_from_temp 'VSNASM' 'VSNASM.zip' 'VSNASM_UNZIP' $batch_path = "/c set ISINSTANCE=1 &&" + $env:TEMP + "\VSNASM_UNZIP\install_script.bat" run_batch $batch_path "Install VSNASM" # Install VSYASM -download_file_to_temp 'VSYASM' "https://github.com/ShiftMediaProject/VSYASM/releases/download/0.4/VSYASM.zip" 'VSYASM.zip' +download_file_to_temp 'VSYASM' "https://github.com/ShiftMediaProject/VSYASM/releases/download/0.7/VSYASM.zip" 'VSYASM.zip' unzip_file_from_temp 'VSYASM' 'VSYASM.zip' 'VSYASM_UNZIP' $batch_path = "/c set ISINSTANCE=1 &&" + $env:TEMP + "\VSYASM_UNZIP\install_script.bat" run_batch $batch_path "Install VSYASM"