diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cd2421bc35df3de3671347cd2c2403e4e946930c..8494fd639705f17353f56a2b57260fddd98cd968 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -57,7 +57,8 @@ b_bullseye_deb: script: - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64 --no-daemon kaptKotlin - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -PbuildType=nightly -x kaptKotlin packageDeb - - mv build/compose/binaries/main/deb/*.deb ./briar-desktop-debian-bullseye.deb + - utils/finalize-deb.sh + - mv build/compose/binaries/main/deb/briar-desktop.deb ./briar-desktop-debian-bullseye.deb artifacts: paths: - briar-desktop-debian-bullseye.deb @@ -71,7 +72,8 @@ b_20_ubuntu_deb: script: - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64 --no-daemon kaptKotlin - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -PbuildType=nightly -x kaptKotlin packageDeb - - mv build/compose/binaries/main/deb/*.deb ./briar-desktop-ubuntu-20.04.deb + - utils/finalize-deb.sh + - mv build/compose/binaries/main/deb/briar-desktop.deb ./briar-desktop-ubuntu-20.04.deb artifacts: paths: - briar-desktop-ubuntu-20.04.deb @@ -85,7 +87,8 @@ b_18_ubuntu_deb: script: - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64 --no-daemon kaptKotlin - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -PbuildType=nightly -x kaptKotlin packageDeb - - mv build/compose/binaries/main/deb/*.deb ./briar-desktop-ubuntu-18.04.deb + - utils/finalize-deb.sh + - mv build/compose/binaries/main/deb/briar-desktop.deb ./briar-desktop-ubuntu-18.04.deb artifacts: paths: - briar-desktop-ubuntu-18.04.deb @@ -111,7 +114,8 @@ rb_bullseye_deb: script: - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64 --no-daemon kaptKotlin - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -PbuildType=beta -x kaptKotlin packageDeb - - mv build/compose/binaries/main/deb/*.deb ./briar-desktop-debian-bullseye.deb + - utils/finalize-deb.sh + - mv build/compose/binaries/main/deb/briar-desktop.deb ./briar-desktop-debian-bullseye.deb artifacts: paths: - briar-desktop-debian-bullseye.deb @@ -125,7 +129,8 @@ rb_20_ubuntu_deb: script: - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64 --no-daemon kaptKotlin - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -PbuildType=beta -x kaptKotlin packageDeb - - mv build/compose/binaries/main/deb/*.deb ./briar-desktop-ubuntu-20.04.deb + - utils/finalize-deb.sh + - mv build/compose/binaries/main/deb/briar-desktop.deb ./briar-desktop-ubuntu-20.04.deb artifacts: paths: - briar-desktop-ubuntu-20.04.deb @@ -139,7 +144,8 @@ rb_18_ubuntu_deb: script: - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64 --no-daemon kaptKotlin - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -PbuildType=beta -x kaptKotlin packageDeb - - mv build/compose/binaries/main/deb/*.deb ./briar-desktop-ubuntu-18.04.deb + - utils/finalize-deb.sh + - mv build/compose/binaries/main/deb/briar-desktop.deb ./briar-desktop-ubuntu-18.04.deb artifacts: paths: - briar-desktop-ubuntu-18.04.deb diff --git a/build.gradle.kts b/build.gradle.kts index 617395770e0d7cfabfccdc4bd6982eef53d02a06..c38d84864b7a3cb619efacc17f91497676fa30f9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -126,6 +126,7 @@ compose.desktop { vendor = "The Briar Project" copyright = "2021-2022 The Briar Project" licenseFile.set(project.file("LICENSE.txt")) + appResourcesRootDir.set(project.layout.projectDirectory.dir("src/appResources")) // As described at https://github.com/JetBrains/compose-jb/tree/master/tutorials/Native_distributions_and_local_execution#configuring-included-jdk-modules // the Gradle plugin does not automatically determine necessary JDK modules to ship // so that we need to define required modules here: diff --git a/src/appResources/linux/org.briarproject.Briar.metainfo.xml b/src/appResources/linux/org.briarproject.Briar.metainfo.xml new file mode 100644 index 0000000000000000000000000000000000000000..30b56093125c405c963034e39d9c35df3960fffa --- /dev/null +++ b/src/appResources/linux/org.briarproject.Briar.metainfo.xml @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> +<component type="desktop-application"> + <id>org.briarproject.Briar</id> + <metadata_license>CC-BY-4.0</metadata_license> + <project_license>AGPL-3.0-only</project_license> + + <name>Briar</name> + <summary>Secure messaging, anywhere</summary> + + <description> + <p> + Briar is a messaging app designed for activists, journalists, and anyone + else who needs a safe, easy and robust way to communicate. Unlike + traditional messaging apps, Briar doesn't rely on a central server - + messages are synchronized directly between the users' devices. If the + internet's down, Briar can sync via Bluetooth or Wi-Fi, keeping the + information flowing in a crisis. If the internet's up, Briar can sync via + the Tor network, protecting users and their relationships from + surveillance. + </p> + </description> + + <launchable type="desktop-id">org.briarproject.Briar.desktop</launchable> + + <url type="homepage">https://code.briarproject.org/briar/briar-desktop</url> + <url type="bugtracker">https://code.briarproject.org/briar/briar-desktop/-/issues</url> + <url type="faq">https://code.briarproject.org/briar/briar-desktop/blob/main/README.md#faq</url> + <url type="help">https://briarproject.org/manual/</url> + <url type="translate">https://www.transifex.com/otf/briar/</url> + <url type="donation">https://liberapay.com/Briar/donate</url> + <project_group>Briar</project_group> + <developer_name>The Briar Project</developer_name> + <update_contact>desktop@briarproject.org</update_contact> + + <content_rating type="oars-1.1"> + <content_attribute id="social-chat">intense</content_attribute> + </content_rating> + + <provides> + <binary>briar-desktop</binary> + </provides> + + <custom> + <value key="Purism::form_factor">workstation</value> + </custom> + + <releases> + <release version="0.2.0" date="2022-02-22"> + <description> + <p> + See the changelog for more information on this release. + </p> + </description> + <url>https://code.briarproject.org/briar/briar-desktop/-/wikis/Changelog#anchor-020</url> + </release> + </releases> + +</component> diff --git a/src/packagingResources/linux/postinst b/src/packagingResources/linux/postinst new file mode 100755 index 0000000000000000000000000000000000000000..d3b38e2049c15100dbb4d3a8e9cf1156b1779088 --- /dev/null +++ b/src/packagingResources/linux/postinst @@ -0,0 +1,37 @@ +#!/bin/sh +# postinst script for briar-desktop +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * <postinst> `configure' <most-recently-configured-version> +# * <old-postinst> `abort-upgrade' <new version> +# * <conflictor's-postinst> `abort-remove' `in-favour' <package> +# <new-version> +# * <postinst> `abort-remove' +# * <deconfigured's-postinst> `abort-deconfigure' `in-favour' +# <failed-install-package> <version> `removing' +# <conflicting-package> <version> +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + +case "$1" in + configure) +ln -nsf /opt/briar-desktop/lib/briar-desktop-Briar.desktop /opt/briar-desktop/lib/org.briarproject.Briar.desktop +xdg-desktop-menu install --novendor /opt/briar-desktop/lib/org.briarproject.Briar.desktop +ln -nsf /opt/briar-desktop/bin/Briar /usr/bin/briar-desktop +ln -nsf /opt/briar-desktop/lib/app/resources/org.briarproject.Briar.metainfo.xml /usr/share/metainfo/org.briarproject.Briar.metainfo.xml + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/src/packagingResources/linux/preinst b/src/packagingResources/linux/preinst new file mode 100755 index 0000000000000000000000000000000000000000..cca697942440baa25eb8bc1112d0258de5660f97 --- /dev/null +++ b/src/packagingResources/linux/preinst @@ -0,0 +1,31 @@ +#!/bin/sh +# preinst script for briar-desktop +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * <new-preinst> `install' +# * <new-preinst> `install' <old-version> +# * <new-preinst> `upgrade' <old-version> +# * <old-preinst> `abort-upgrade' <new-version> +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + install|upgrade) +mkdir -p /usr/share/desktop-directories/ + ;; + + abort-upgrade) + ;; + + *) + echo "preinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/src/packagingResources/linux/prerm b/src/packagingResources/linux/prerm new file mode 100755 index 0000000000000000000000000000000000000000..124f009eadae9416d905f87d8fb3123b0efa3755 --- /dev/null +++ b/src/packagingResources/linux/prerm @@ -0,0 +1,39 @@ +#!/bin/sh +# prerm script for briar-desktop +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * <prerm> `remove' +# * <old-prerm> `upgrade' <new-version> +# * <new-prerm> `failed-upgrade' <old-version> +# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version> +# * <deconfigured's-prerm> `deconfigure' `in-favour' +# <package-being-installed> <version> `removing' +# <conflicting-package> <version> +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + + + +case "$1" in + remove|upgrade|deconfigure) +xdg-desktop-menu uninstall /opt/briar-desktop/lib/org.briarproject.Briar.desktop +rm /usr/bin/briar-desktop +rm /usr/share/metainfo/org.briarproject.Briar.metainfo.xml + ;; + + failed-upgrade) + ;; + + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +exit 0 + diff --git a/utils/finalize-deb.sh b/utils/finalize-deb.sh new file mode 100755 index 0000000000000000000000000000000000000000..43c9ec66b2f06b6527fd2baea00a73ef0c2719c4 --- /dev/null +++ b/utils/finalize-deb.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# A script for manually adding files to the produced .deb files. +# https://unix.stackexchange.com/a/138190 + +set -ex + +DIR=$(dirname $0) +REPO="$DIR/.." +OUTPUT="$REPO/deb" + +cd "$REPO/build/compose/binaries/main/deb" + +mkdir tmp +cd tmp + +# Unpack control.tar.xz to tmp directory +ar p ../*.deb control.tar.xz | tar -xJ +ar d ../*.deb control.tar.xz + +# Replace preinst, postinst, prerm scripts +#TODO + +# Repackage briar-desktop.deb +cp ../*.deb ../briar-desktop.deb +tar cfJ control.tar.xz ./*[!z] +ar r ../briar-desktop.deb control.tar.xz