diff --git a/packaging/rules/debian/README.Debian b/packaging/rules/debian/README.Debian index 52310f1084cf81bfeab332231c0fc0560657d0ba..33f73b696493177d4c45ecd6a20f547feca298f6 100644 --- a/packaging/rules/debian/README.Debian +++ b/packaging/rules/debian/README.Debian @@ -1,3 +1,30 @@ +# Differences and compatibility with official debian.org package + +This source package provides two binary packages ring-all and ring-daemon. +It differs slightly from the official Debian package (the one from debian.org). + +ring-daemon: structurally identical to the Debian package, the only difference + potentially being the shipped version of Ring (the debian.org package is + usually older). + +ring-all: all-in-one package, ships both the Ring Daemon and the GNOME client. + This package is not available in the debian.org repositories (not needed in the + Debian case). + + ring-all allows + - easy installation of Ring as a single package from ring.cx + - installation of release keys and ring.cx package repository as trusted peers + so Ring can be updated from ring.cx along with system updates + + Why not two packages ring and ring-daemon instead of a single all package ? + -> One cannot register a repository in source.list.d and directly use it to + fetch the dependencies. That would require something like an apt update in + the maintscripts and we don't want that. So, it is not possible to have a + one-click-install with two packages. + + ring-all conflicts with ring and ring-daemon since they are distributing the + same files. + # Notes ## Importing a new version diff --git a/packaging/rules/debian/control b/packaging/rules/debian/control index 2f001e6c1b851ddb2e3a8e805d4d5ce217e17da6..f1278264b4b41d99f65463e2c8f178403a4452fa 100644 --- a/packaging/rules/debian/control +++ b/packaging/rules/debian/control @@ -61,19 +61,22 @@ Homepage: https://ring.cx Vcs-Git: https://anonscm.debian.org/git/pkg-voip/ring.git Vcs-Browser: https://anonscm.debian.org/cgit/pkg-voip/ring.git -Package: ring +Package: ring-all Architecture: any Depends: ${shlibs:Depends}, - ${misc:Depends}, - ring-daemon (=${binary:Version}) -Replaces: ring-gnome -Conflicts: ring-gnome -Description: Secure and distributed voice, video and chat platform - desktop client + ${misc:Depends} +Replaces: ring, + ring-gnome, + ring-daemon +Conflicts: ring, + ring-gnome, + ring-daemon +Description: Secure and distributed voice, video and chat platform - all in one package Ring (ring.cx) is a secure and distributed voice, video and chat communication platform that requires no centralized server and leaves the power of privacy in the hands of the user. . - This package contains the desktop client: gnome-ring. + This package contains the GNOME desktop client and dring, the Ring daemon. Package: ring-daemon Architecture: any @@ -85,11 +88,3 @@ Description: Secure and distributed voice, video and chat platform - daemon in the hands of the user. . This package contains the Ring daemon: dring. - -Package: ring-gnome -Depends: ring, ${misc:Depends} -Architecture: all -Priority: extra -Section: oldlibs -Description: transitional dummy package - This is a transitional dummy package. It can safely be removed. diff --git a/packaging/rules/debian/ring.lintian-overrides b/packaging/rules/debian/ring-all.lintian-overrides similarity index 100% rename from packaging/rules/debian/ring.lintian-overrides rename to packaging/rules/debian/ring-all.lintian-overrides diff --git a/packaging/rules/debian/ring.manpages b/packaging/rules/debian/ring-all.manpages similarity index 66% rename from packaging/rules/debian/ring.manpages rename to packaging/rules/debian/ring-all.manpages index d920cbc08a6b62c7e0f00998eb5f0eef0357f97d..87574cc4f9811456e1433a9d43e61e9dd72b8d95 100644 --- a/packaging/rules/debian/ring.manpages +++ b/packaging/rules/debian/ring-all.manpages @@ -1 +1,2 @@ client-gnome/doc/gnome-ring.1 +daemon/dring.1 diff --git a/packaging/rules/debian/ring-all.postinst b/packaging/rules/debian/ring-all.postinst new file mode 100755 index 0000000000000000000000000000000000000000..65e8aad8f37261e89a949916fcf5e28b592174f5 --- /dev/null +++ b/packaging/rules/debian/ring-all.postinst @@ -0,0 +1,171 @@ +#!/bin/sh +set -e + +############################################################################### +# RING PACKAGE POSTINST # +# # +# Install Ring's package repository to the trusted sources and add Ring's # +# release key to trusted keyring. # +# # +# NOTE: We follow https://wiki.debian.org/DebianRepository/UseThirdParty # +############################################################################### + + +############################################################################### +# [1] Configuration # +############################################################################### + +# All PPA/package repo urls are expected to start with this string, regardless +# of the distribution or version. The end tag is automatically appended, +# depending on the system the postinst script is run on. Examples: +# +# Ubuntu 18.04: +# $RING_PPA = $RING_PPA_BASE/ubuntu_18.04/ +# +# Debian 9: +# $RING_PPA = $RING_PPA_BASE/debian_9 +# +# To update the appended end tags, modify the switch in [2]. +RING_PPA_BASE="https://dl.ring.cx/ring-nightly" + +# Ring release key. +RING_KEY_FINGERPRINT="A295D773307D25A33AE72F2F64CD5FA175348F84" +RING_KEY="\ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +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 +=vaci +-----END PGP PUBLIC KEY BLOCK-----" + +# System paths and generated variables +# In general: you will not need to modify these variables. +# WARNING: When modifying the paths, keep in mind that the corresponding +# postrm paths should be modified as well +APT_FILE="/etc/apt/sources.list.d/ring-main.sources" +APT_PREFS_FILE="/etc/apt/preferences.d/ring-main.pref" +RING_KEY_FILE="/etc/apt/trusted.gpg.d/ring-main.gpg" +UPDATE_MANAGER_PATH="/etc/update-manager/release-upgrades.d/" +RING_UPDATE_MANAGER_ID="ring-main" + +RING_UPDATE_MANAGER_CFG="${RING_UPDATE_MANAGER_ID}.cfg" +UPDATE_MANAGER_CFG_PATH="${UPDATE_MANAGER_PATH}/${RING_UPDATE_MANAGER_CFG}" + + +############################################################################### +# [2] Set package repo url depending on distribution and version # +############################################################################### + +CAN_ADD_DEB_SOURCE=true + +# Detect currently running system using /etc/os-release +# Debian-based systems are supposed to provide /etc/os-release so if it's not +# the case then we simply don't want to provide automatic updates +if [ -f /etc/os-release ]; then + . /etc/os-release + # Set-up Ring PPA end tag + ENDTAG="${ID}_${VERSION_ID}" +else + # Distribution is not supported. Don't provide automatic updates. + CAN_ADD_DEB_SOURCE=false +fi + + +############################################################################### +# [3] Maintainer script main switch # +############################################################################### + +case "$1" in + configure) + if [ "$CAN_ADD_DEB_SOURCE" = "true" ]; then + RING_PPA="${RING_PPA_BASE}/${ENDTAG}" + + # We first add the key to the trusted keyring. + cat > $RING_KEY_FILE <<EOF +$RING_KEY +EOF + + # Add an entry for the package repository to the trusted package + # sources (DEB822 format) + cat > $APT_FILE <<EOF +# This file makes sure that Ring is kept up-to-date +# as part of regular system upgrades + +Types: deb +URIs: $RING_PPA +Suites: ring +Architectures: i386 amd64 +Components: main +Signed-By: $RING_KEY_FINGERPRINT +EOF + + # It is recommended to also restrict the range of the newly added + # source. + cat > $APT_PREFS_FILE <<EOF +# forbid upgrading already installed packages from official repositories but +# allow upgrades to be performed for the ring repository +Package: * +Pin: origin dl.ring.cx +Pin-Priority: 100 +EOF + + # Additionally, if update manager is installed we inform it about + # the repository so it doesn't get scrapped after system updates + if [ -d /etc/update-manager -a ! -f $UPDATE_MANAGER_CFG_PATH ] + then + mkdir -p $UPDATE_MANAGER_PATH + cat > $UPDATE_MANAGER_CFG_PATH <<EOF +# Added by Ring to prevent disabling of Ring repository sources on +# distribution release upgrade. +[ThirdPartyMirrors] +ring/${RING_UPDATE_MANAGER_ID}=${RING_PPA} +EOF + fi + fi + ;; +esac + +# exit with a zero status as everything went well, important for maintscripts +exit 0 diff --git a/packaging/rules/debian/ring-all.postrm b/packaging/rules/debian/ring-all.postrm new file mode 100755 index 0000000000000000000000000000000000000000..898840a247d0ceeb7e603b29df67e080ffb06c0e --- /dev/null +++ b/packaging/rules/debian/ring-all.postrm @@ -0,0 +1,41 @@ +#!/bin/sh +set -e + +############################################################################### +# RING PACKAGE POSTRM # +# # +# If we installed our key and source to trusted stores, remove them. # +# # +# NOTE: We follow https://wiki.debian.org/DebianRepository/UseThirdParty # +############################################################################### + + +############################################################################### +# [1] Configuration # +############################################################################### + +# System paths and generated variables +APT_FILE="/etc/apt/sources.list.d/ring-main.sources" +APT_PREFS_FILE="/etc/apt/preferences.d/ring-main.pref" +RING_KEY_FILE="/etc/apt/trusted.gpg.d/ring-main.gpg" +UPDATE_MANAGER_PATH="/etc/update-manager/release-upgrades.d/" +RING_UPDATE_MANAGER_ID="ring-main" + +RING_UPDATE_MANAGER_CFG="${RING_UPDATE_MANAGER_ID}.cfg" +UPDATE_MANAGER_CFG_PATH="${UPDATE_MANAGER_PATH}/${RING_UPDATE_MANAGER_CFG}" + + +############################################################################### +# [2] Maintainer script main switch # +############################################################################### + +case "$1" in + purge) + rm -f "$APT_FILE" + rm -f "$APT_PREFS_FILE" + rm -f "$UPDATE_MANAGER_CFG_PATH" + rm -f "$RING_KEY_FILE" + ;; +esac + +exit 0 diff --git a/packaging/rules/debian/ring.triggers b/packaging/rules/debian/ring-all.triggers similarity index 100% rename from packaging/rules/debian/ring.triggers rename to packaging/rules/debian/ring-all.triggers diff --git a/packaging/rules/debian/rules b/packaging/rules/debian/rules index 5a69c84857b09a5f9b716606dda1297d43784814..65027e3c03452a2f6936847e8407ff4a64846516 100755 --- a/packaging/rules/debian/rules +++ b/packaging/rules/debian/rules @@ -12,6 +12,10 @@ ifeq ($(NO_CPUS),0) NO_CPUS=1 endif +# Binary package names +RING_ALL_IN_ONE_PKG_NAME="ring-all" +RING_DAEMON_PKG_NAME="ring-daemon" + %: dh $@ @@ -132,29 +136,36 @@ override_dh_clean: override_dh_auto_install: ######################### - ## Ring Daemon install ## + ## Ring daemon install ## ######################### - cd daemon && make DESTDIR=$(CURDIR)/debian/ring-daemon install - rm -rfv $(CURDIR)/debian/ring-daemon/usr/include - rm -rfv $(CURDIR)/debian/ring-daemon/usr/lib/*.a - rm -rfv $(CURDIR)/debian/ring-daemon/usr/lib/*.la - ########################### - ## libringclient install ## - ########################### - cd lrc/build && make DESTDIR=$(CURDIR)/debian/ring install - rm -rfv $(CURDIR)/debian/ring/usr/include + cd daemon && make DESTDIR=$(CURDIR)/debian/$(RING_DAEMON_PKG_NAME) install + rm -rfv $(CURDIR)/debian/$(RING_DAEMON_PKG_NAME)/usr/include + rm -rfv $(CURDIR)/debian/$(RING_DAEMON_PKG_NAME)/usr/lib/*.a + rm -rfv $(CURDIR)/debian/$(RING_DAEMON_PKG_NAME)/usr/lib/*.la + + ###################### + ## Ring AiO install ## + ###################### + + ## daemon + cd daemon && make DESTDIR=$(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME) install + rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/include + rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/lib/*.a + rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/lib/*.la + + ## LibRingClient + cd lrc/build && make DESTDIR=$(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME) install + rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/include # This is a symlink, should be in -dev package - rm -v $(CURDIR)/debian/ring/usr/lib/libringclient.so + rm -v $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/lib/libringclient.so # cmake files - rm -rfv $(CURDIR)/debian/ring/usr/lib/cmake + rm -rfv $(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME)/usr/lib/cmake - ########################## - ## gnome client install ## - ########################## - cd client-gnome/build && make DESTDIR=$(CURDIR)/debian/ring install + ## GNOME client + cd client-gnome/build && make DESTDIR=$(CURDIR)/debian/$(RING_ALL_IN_ONE_PKG_NAME) install tmpdir:= $(shell mktemp -d) workdir:= $(shell pwd)