mirror of
https://git.jami.net/savoirfairelinux/jami-client-qt.git
synced 2025-09-10 12:03:18 +02:00
packaging: migrate packaging scripts in client-qt
This patch moves already existing packaging scripts from jami-project into client-qt. Introduced changes are: + WITH_SUBMODULE must search in system lib too because for packaging client-qt (for rpm) will be built separately, and will depend on jami-daemon. + Fix appdata.xml (replace old wiki with docs.jami.net) + path changes (because we build in client-qt not jami-project). GitLab: #853 Change-Id: I1313830d85c8094fcbcc52e22033a2add7b1e89f
This commit is contained in:
parent
5f7bf66beb
commit
3349b7deff
62 changed files with 4790 additions and 4 deletions
|
@ -8,7 +8,7 @@ There are essentially two ways to build `client-qt`:
|
|||
## Disclaimer
|
||||
|
||||
Because the client-qt is multi-platforms and supporting macOS, we need a recent version of Qt to do rendering with Metal. So, Qt 6.2 is necessary.
|
||||
This version is generally not packaged on a lot of platforms, and to control available plugins and such, we have our own Qt packaged (generated by https://review.jami.net/jami-project and available on https://jami.net on the distributions we support).
|
||||
This version is generally not packaged on a lot of platforms, and to control available plugins and such, we have our own Qt packaged (available on https://jami.net on the distributions we support).
|
||||
So, you will need to get Qt 6.2 first. For this, there is 3 methods:
|
||||
|
||||
### Qt from https://jami.net (recommended)
|
||||
|
|
|
@ -54,6 +54,9 @@ set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib;.so;.dll")
|
|||
if(WITH_DAEMON_SUBMODULE)
|
||||
find_library(LIBJAMI_LIB NAMES jami ring
|
||||
PATHS ${DAEMON_DIR}/src/.libs
|
||||
PATHS ${CMAKE_INSTALL_PREFIX}/lib
|
||||
PATHS ${CMAKE_INSTALL_PREFIX}/libexec
|
||||
PATHS ${CMAKE_INSTALL_PREFIX}/bin
|
||||
NO_DEFAULT_PATH)
|
||||
else()
|
||||
# Search only in these given PATHS.
|
||||
|
@ -78,6 +81,8 @@ if(NOT LIBJAMI_LIB)
|
|||
if(WITH_DAEMON_SUBMODULE)
|
||||
find_library(LIBJAMI_LIB NAMES jami ring
|
||||
PATHS ${DAEMON_DIR}/src/.libs
|
||||
PATHS ${CMAKE_INSTALL_PREFIX}/lib
|
||||
PATHS ${CMAKE_INSTALL_PREFIX}/libexec
|
||||
NO_DEFAULT_PATH)
|
||||
else()
|
||||
# Search only in these given PATHS.
|
||||
|
|
|
@ -58,16 +58,16 @@
|
|||
ügyfélalkalmazásai, így a Jami interoperábilis és többplatformos
|
||||
kommunikációs keretrendszerré válik.
|
||||
</p>
|
||||
|
||||
|
||||
</description>
|
||||
|
||||
<url type="homepage">https://jami.net/</url>
|
||||
<url type="bugtracker">https://git.jami.net/savoirfairelinux/jami-client-qt/issues</url>
|
||||
<url type="faq">https://jami.net/help/</url>
|
||||
<url type="help">https://git.jami.net/savoirfairelinux/jami-project/-/wikis/home</url>
|
||||
<url type="help">https://docs.jami.net</url>
|
||||
<url type="donation">https://www.paypal.com/donate/?hosted_button_id=MGUDJLQZ4TP5W</url>
|
||||
<url type="translate">https://www.transifex.com/savoirfairelinux/jami</url>
|
||||
|
||||
|
||||
<!-- Maximum caption length is 60 characters -->
|
||||
<!-- Officially GIF is not an allowed video format, but it appears to work nonetheless -->
|
||||
<screenshots>
|
||||
|
|
257
extras/packaging/gnu-linux/Jenkinsfile
vendored
Normal file
257
extras/packaging/gnu-linux/Jenkinsfile
vendored
Normal file
|
@ -0,0 +1,257 @@
|
|||
// Copyright (C) 2021-2022 Savoir-faire Linux Inc.
|
||||
//
|
||||
// Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// Packaging validation for supported GNU/Linux systems.
|
||||
//
|
||||
// Note: To work on this script without having to push a commit each
|
||||
// time, use the jenkins-cli command (see:
|
||||
// https://wiki.savoirfairelinux.com/wiki/Jenkins.jami.net#Usage_CLI_de_Jenkins).
|
||||
//
|
||||
// Requirements:
|
||||
// 1. gerrit-trigger plugin
|
||||
// 2. ws-cleanup plugin
|
||||
// 3. ansicolor plugin
|
||||
|
||||
// TODO:
|
||||
// - GPG-sign release tarballs.
|
||||
// - GPG-sign release commits.
|
||||
// - Allow publishing from any node, to avoid relying on a single machine.
|
||||
|
||||
// Configuration globals.
|
||||
def SUBMODULES = ['daemon', '3rdparty/SortFilterProxyModel', '3rdparty/qrencode-win32', 'extras/packaging/update/sparkle/Sparkle']
|
||||
def TARGETS = [:]
|
||||
def REMOTE_HOST = env.SSH_HOST_DL_RING_CX
|
||||
def REMOTE_BASE_DIR = '/srv/repository/ring'
|
||||
def JAMI_PUBLIC_KEY_FINGERPRINT = 'A295D773307D25A33AE72F2F64CD5FA175348F84'
|
||||
def GIT_USER_EMAIL = 'jenkins@jami.net'
|
||||
def GIT_USER_NAME = 'jenkins'
|
||||
def GIT_PUSH_URL = 'ssh://jenkins@review.jami.net:29420/jami-client-qt'
|
||||
def JENKINS_SSH_KEY = '35cefd32-dd99-41b0-8312-0b386df306ff'
|
||||
def DL_SSH_KEY = '5825b39b-dfc6-435f-918e-12acc1f56221'
|
||||
def SNAPCRAFT_KEY = '106e398c-43ca-41c0-8f7e-4f45030f8bdd'
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label 'guix'
|
||||
}
|
||||
|
||||
options {
|
||||
ansiColor('xterm')
|
||||
}
|
||||
|
||||
parameters {
|
||||
string(name: 'GERRIT_REFSPEC',
|
||||
defaultValue: 'refs/heads/master',
|
||||
description: 'The Gerrit refspec to fetch.')
|
||||
booleanParam(name: 'DEPLOY',
|
||||
defaultValue: false,
|
||||
description: 'Whether to deploy packages.')
|
||||
booleanParam(name: 'PUBLISH',
|
||||
defaultValue: false,
|
||||
description: 'Whether to upload tarball and push to git.')
|
||||
choice(name: 'CHANNEL',
|
||||
choices: 'internal\nnightly\nstable',
|
||||
description: 'The repository channel to deploy to. ' +
|
||||
'Defaults to "internal".')
|
||||
booleanParam(name: 'BUILD_ARM',
|
||||
defaultValue: false,
|
||||
description: 'Whether to build ARM packages.')
|
||||
booleanParam(name: 'BUILD_DEB_PACK',
|
||||
defaultValue: false,
|
||||
description: 'Whether to build DEB PACK packages.')
|
||||
string(name: 'PACKAGING_TARGETS',
|
||||
defaultValue: '',
|
||||
description: 'A whitespace-separated list of packaging ' +
|
||||
'targets, e.g. "debian_10 snap". ' +
|
||||
'When left unspecified, all the packaging targets are built.')
|
||||
}
|
||||
|
||||
environment {
|
||||
TARBALLS = '/var/cache/jami' // set the cache directory
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Check configuration') {
|
||||
steps {
|
||||
script {
|
||||
if (!fileExists(TARBALLS)) {
|
||||
error "The ${TARBALLS} directory does not exist. \
|
||||
See https://wiki.savoirfairelinux.com/wiki/Jenkins.jami.net#Configuration"
|
||||
}
|
||||
|
||||
mountType = sh(script: "findmnt ${TARBALLS} -o fstype -n",
|
||||
returnStdout: true)
|
||||
if (!(mountType =~ /^nfs/)) {
|
||||
error "The ${TARBALLS} directory is not mounted on NFS storage. \
|
||||
See https://wiki.savoirfairelinux.com/wiki/Jenkins.jami.net#Configuration_client_NFS"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Configure Git') {
|
||||
steps {
|
||||
sh """git config user.name ${GIT_USER_NAME}
|
||||
git config user.email ${GIT_USER_EMAIL}
|
||||
"""
|
||||
}
|
||||
}
|
||||
|
||||
stage('Fetch submodules') {
|
||||
steps {
|
||||
echo 'Initializing submodules ' + SUBMODULES.join(', ')
|
||||
sh 'git submodule update --init --recursive'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Generate release tarball') {
|
||||
steps {
|
||||
sh """\
|
||||
#!/usr/bin/env -S bash -l
|
||||
make -f extras/packaging/gnu-linux/Makefile portable-release-tarball .tarball-version
|
||||
"""
|
||||
stash(includes: '*.tar.gz, .tarball-version',
|
||||
name: 'release-tarball')
|
||||
}
|
||||
}
|
||||
|
||||
stage('Publish release artifacts') {
|
||||
when {
|
||||
expression {
|
||||
params.PUBLISH && params.CHANNEL != 'internal'
|
||||
}
|
||||
}
|
||||
|
||||
steps {
|
||||
sshagent(credentials: [JENKINS_SSH_KEY, DL_SSH_KEY]) {
|
||||
echo "Publishing to git repository..."
|
||||
script {
|
||||
def tagDate = sh 'date +"%Y%M%d"'
|
||||
sh """
|
||||
git tag -am ${params.CHANNEL}/${tagDate} \"Jami new ${params.CHANNEL} version\"
|
||||
"""
|
||||
if (params.CHANNEL == 'stable') {
|
||||
// Only stables releases get tarballs and a tag.
|
||||
sh 'git push --follow-tags'
|
||||
echo "Publishing release tarball..."
|
||||
sh 'rsync --verbose jami*.tar.gz ' +
|
||||
"${REMOTE_HOST}:${REMOTE_BASE_DIR}" +
|
||||
"/release/tarballs/"
|
||||
} else {
|
||||
sh 'git push --tags'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Build packages') {
|
||||
environment {
|
||||
DISABLE_CONTRIB_DOWNLOADS = 'TRUE'
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def targetsText = params.PACKAGING_TARGETS.trim()
|
||||
if (!targetsText) {
|
||||
targetsText = sh(script: 'make -f extras/packaging/gnu-linux/Makefile -s list-package-targets',
|
||||
returnStdout: true).trim()
|
||||
}
|
||||
|
||||
TARGETS = targetsText.split(/\s/)
|
||||
if (!params.BUILD_ARM) {
|
||||
TARGETS = TARGETS.findAll { !(it =~ /_(armhf|arm64)$/) }
|
||||
}
|
||||
if (!params.BUILD_DEB_PACK) {
|
||||
TARGETS = TARGETS.findAll { !(it =~ /_(deb-pack)$/) }
|
||||
}
|
||||
|
||||
def stages = [:]
|
||||
|
||||
TARGETS.each { target ->
|
||||
// Note: The stage calls are wrapped in closures, to
|
||||
// delay their execution.
|
||||
stages[target] = {
|
||||
stage(target) {
|
||||
// Offload builds to different agents.
|
||||
node('linux-builder') {
|
||||
cleanWs()
|
||||
unstash 'release-tarball'
|
||||
catchError(buildResult: 'FAILURE',
|
||||
stageResult: 'FAILURE') {
|
||||
sh """#!/usr/bin/env -S bash -l
|
||||
echo Building on node \$NODE_NAME
|
||||
whoami
|
||||
tar xf *.tar.gz --strip-components=1
|
||||
make -f extras/packaging/gnu-linux/Makefile ${target}
|
||||
"""
|
||||
stash(includes: 'extras/packaging/gnu-linux/packages/**',
|
||||
name: target)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
parallel stages
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Sign & deploy packages') {
|
||||
agent {
|
||||
label 'ring-buildmachine-02.mtl.sfl'
|
||||
}
|
||||
|
||||
when {
|
||||
expression {
|
||||
params.DEPLOY
|
||||
}
|
||||
}
|
||||
|
||||
steps {
|
||||
sshagent(credentials: [JENKINS_SSH_KEY, DL_SSH_KEY]) {
|
||||
script {
|
||||
TARGETS.each { target ->
|
||||
try {
|
||||
unstash target
|
||||
} catch (err) {
|
||||
echo "Failed to unstash ${target}, skipping..."
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
def distributionsText = sh(
|
||||
script: 'find extras/packaging/gnu-linux/packages/* -maxdepth 1 -type d -print0 ' +
|
||||
'| xargs -0 -n1 basename -z',
|
||||
returnStdout: true).trim()
|
||||
def distributions = distributionsText.split("\0")
|
||||
|
||||
distributions.each { distribution ->
|
||||
echo "Deploying ${distribution} packages..."
|
||||
withCredentials([string(credentialsId: SNAPCRAFT_KEY, variable: 'SNAPCRAFT_STORE_CREDENTIALS')]) {
|
||||
sh """extras/packaging/gnu-linux/scripts/deploy-packages.sh \
|
||||
--distribution=${distribution} \
|
||||
--keyid="${JAMI_PUBLIC_KEY_FINGERPRINT}" \
|
||||
--remote-repository-location="${REMOTE_HOST}:${REMOTE_BASE_DIR}/${params.CHANNEL}" \
|
||||
--remote-manual-download-location="${REMOTE_HOST}:${REMOTE_BASE_DIR}/manual-${params.CHANNEL}"
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
306
extras/packaging/gnu-linux/Makefile
Normal file
306
extras/packaging/gnu-linux/Makefile
Normal file
|
@ -0,0 +1,306 @@
|
|||
# -*- mode: makefile; -*-
|
||||
# Copyright (C) 2016-2021 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
.DEFAULT_GOAL := package-all
|
||||
|
||||
# Default caching directory
|
||||
export TARBALLS ?= /var/cache/jami
|
||||
|
||||
##############################
|
||||
## Version number variables ##
|
||||
##############################
|
||||
TARBALL_VERSION := $(shell cat $(CURDIR)/.tarball-version 2> /dev/null)
|
||||
|
||||
ifeq ($(TARBALL_VERSION),)
|
||||
LAST_COMMIT_DATE := $(shell git log -1 --format=%cd --date=format:'%Y%m%d.%H%M')
|
||||
COMMIT_ID := $(shell git rev-parse --short HEAD)
|
||||
RELEASE_VERSION := $(LAST_COMMIT_DATE).$(COMMIT_ID)
|
||||
else
|
||||
$(warning Using version from the .tarball-version file: $(TARBALL_VERSION))
|
||||
RELEASE_VERSION := $(TARBALL_VERSION)
|
||||
endif
|
||||
RELEASE_TARBALL_FILENAME := jami_$(RELEASE_VERSION).tar.gz
|
||||
|
||||
# Export for consumption in child processes.
|
||||
export RELEASE_VERSION
|
||||
export RELEASE_TARBALL_FILENAME
|
||||
|
||||
# Debian versions
|
||||
DEBIAN_VERSION := $(RELEASE_VERSION)~dfsg1-1
|
||||
DEBIAN_DSC_FILENAME := jami_$(DEBIAN_VERSION).dsc
|
||||
|
||||
# Qt versions
|
||||
QT_MAJOR := 6
|
||||
QT_MINOR := 2
|
||||
QT_PATCH := 3
|
||||
QT_TARBALL_CHECKSUM := f784998a159334d1f47617fd51bd0619b9dbfe445184567d2cd7c820ccb12771
|
||||
DEBIAN_QT_VERSION := $(QT_MAJOR).$(QT_MINOR).$(QT_PATCH)-2
|
||||
DEBIAN_QT_DSC_FILENAME := libqt-jami_$(DEBIAN_QT_VERSION).dsc
|
||||
QT_JAMI_PREFIX := /usr/lib/libqt-jami
|
||||
|
||||
#####################
|
||||
## Other variables ##
|
||||
#####################
|
||||
TMPDIR := $(shell mktemp -d)
|
||||
CURRENT_UID:=$(shell id -u)
|
||||
CURRENT_GID:=$(shell id -g)
|
||||
|
||||
#############################
|
||||
## Release tarball targets ##
|
||||
#############################
|
||||
.PHONY: release-tarball purge-release-tarballs portable-release-tarball
|
||||
# See: https://reproducible-builds.org/docs/archives/
|
||||
TAR_REPRODUCIBILITY_OPTIONS = \
|
||||
--format=gnu \
|
||||
--mtime=@1 \
|
||||
--owner=root:0 \
|
||||
--group=root:0
|
||||
|
||||
# This file can be used when not wanting to invoke the tarball
|
||||
# producing machinery (which depends on the Git checkout), nor its
|
||||
# prerequisites. It is used to set the TARBALL_VERSION Make variable.
|
||||
.tarball-version:
|
||||
echo $(RELEASE_VERSION) > $@
|
||||
|
||||
purge-release-tarballs:
|
||||
rm -f jami_*.tar.* tarballs.manifest
|
||||
|
||||
release-tarball:
|
||||
rm -f "$(RELEASE_TARBALL_FILENAME)" tarballs.manifest
|
||||
$(MAKE) -f extras/packaging/gnu-linux/Makefile "$(RELEASE_TARBALL_FILENAME)"
|
||||
|
||||
# Predicate to check if the 'guix' command is available.
|
||||
has-guix-p:
|
||||
command -v guix > /dev/null 2>&1 || \
|
||||
(echo 'guix' is required to build the '$@' target && exit 1)
|
||||
|
||||
# The bundled tarballs included in the release tarball depend on what
|
||||
# is available on the host. To ensure it can be shared across all
|
||||
# different GNU/Linux distributions, generate it in a minimal
|
||||
# container. Wget uses GnuTLS, which looks up its certs from
|
||||
# /etc/ssl/certs.
|
||||
guix-share-tarball-arg = $${TARBALLS:+"--share=$$TARBALLS"}
|
||||
portable-release-tarball: has-guix-p
|
||||
guix shell --container --network \
|
||||
--preserve=TARBALLS $(guix-share-tarball-arg) \
|
||||
--expose=/usr/bin/env \
|
||||
--expose=$$SSL_CERT_DIR=/etc/ssl/certs \
|
||||
--manifest=$(CURDIR)/extras/packaging/gnu-linux/guix/minimal-manifest.scm \
|
||||
-- $(MAKE) -f extras/packaging/gnu-linux/Makefile release-tarball
|
||||
|
||||
daemon/contrib/native/Makefile:
|
||||
mkdir -p ./daemon/contrib/native && \
|
||||
cd daemon/contrib/native && \
|
||||
../bootstrap
|
||||
|
||||
# Fetch the required contrib sources and copy them to
|
||||
# daemon/contrib/tarballs. To use a custom tarballs cache directory,
|
||||
# export the TARBALLS environment variable.
|
||||
tarballs.manifest: daemon/contrib/native/Makefile
|
||||
cd daemon/contrib/native && \
|
||||
$(MAKE) list && \
|
||||
$(MAKE) fetch -j && \
|
||||
$(MAKE) --no-print-directory --silent list-tarballs > "$(CURDIR)/$@"
|
||||
|
||||
ifeq ($(TARBALL_VERSION),)
|
||||
# Generate the release tarball. To regenerate a fresh tarball
|
||||
# manually clear the tarballs.manifest file.
|
||||
$(RELEASE_TARBALL_FILENAME): tarballs.manifest
|
||||
# Prepare the sources of the top repository and relevant submodules.
|
||||
rm -f "$@"
|
||||
mkdir $(TMPDIR)/client-qt
|
||||
git archive HEAD | tar xf - -C $(TMPDIR)/client-qt
|
||||
for m in \
|
||||
./daemon \
|
||||
. \
|
||||
./3rdparty/SortFilterProxyModel; do \
|
||||
(cd "$$m" && git archive --prefix "$$m/" HEAD \
|
||||
| tar xf - -C $(TMPDIR)/client-qt); \
|
||||
done
|
||||
# Create the base archive.
|
||||
tar -cf $(TMPDIR)/client-qt.tar $(TMPDIR)/client-qt \
|
||||
--transform 's,.*/client-qt,client-qt,' \
|
||||
$(TAR_REPRODUCIBILITY_OPTIONS)
|
||||
# Append the cached tarballs listed in the manifest.
|
||||
tar --append --file $(TMPDIR)/client-qt.tar \
|
||||
--files-from $< \
|
||||
--transform 's,^.*/,client-qt/daemon/contrib/tarballs/,' \
|
||||
$(TAR_REPRODUCIBILITY_OPTIONS)
|
||||
# Compress the tarball and move it into place.
|
||||
gzip --no-name $(TMPDIR)/client-qt.tar
|
||||
mv $(TMPDIR)/client-qt.tar.gz "$@"
|
||||
rm -rf $(TMPDIR)
|
||||
else
|
||||
# If TARBALL_VERSION is defined, assume it's already been generated,
|
||||
# without doing any checks, which would require Git.
|
||||
$(RELEASE_TARBALL_FILENAME):
|
||||
endif
|
||||
|
||||
#######################
|
||||
## Packaging targets ##
|
||||
#######################
|
||||
|
||||
#
|
||||
# Traditionally built packages (in Docker containers).
|
||||
#
|
||||
DISTRIBUTIONS := \
|
||||
debian_10 \
|
||||
debian_11 \
|
||||
debian_testing \
|
||||
debian_unstable \
|
||||
raspbian_10_armhf \
|
||||
ubuntu_18.04 \
|
||||
ubuntu_20.04 \
|
||||
ubuntu_22.04 \
|
||||
ubuntu_22.10 \
|
||||
fedora_35 \
|
||||
fedora_36 \
|
||||
fedora_37 \
|
||||
opensuse-leap_15.3 \
|
||||
opensuse-leap_15.4 \
|
||||
snap
|
||||
|
||||
IS_SHELL_INTERACTIVE := $(shell [ -t 0 ] && echo yes)
|
||||
|
||||
# The following Make variable can be used to provide extra arguments
|
||||
# used with the 'docker run' commands invoked to build the packages.
|
||||
DOCKER_RUN_EXTRA_ARGS =
|
||||
|
||||
# This function is used to produce the rules of the packaging targets
|
||||
# that rely on Docker.
|
||||
# Arg1: The name-version string of the distribution (e.g., ubuntu-18.04).
|
||||
# Arg2: Extra arguments to pass to 'docker build'.
|
||||
# Arg3: Extra arguments to pass to 'docker run'.
|
||||
define make-docker-package-target
|
||||
$(1)-docker-image-name := jami-packaging-$(1)
|
||||
$(1)-docker-image-file := .docker-image-$$($(1)-docker-image-name)
|
||||
$(1)-docker-run-command := docker run \
|
||||
--rm --privileged --security-opt apparmor=docker-default \
|
||||
-e RELEASE_VERSION="$(RELEASE_VERSION)" \
|
||||
-e RELEASE_TARBALL_FILENAME="$(RELEASE_TARBALL_FILENAME)" \
|
||||
-e DEBIAN_VERSION="$(DEBIAN_VERSION)" \
|
||||
-e DEBIAN_QT_VERSION="$(DEBIAN_QT_VERSION)" \
|
||||
-e CURRENT_UID="$(CURRENT_UID)" \
|
||||
-e CURRENT_GID="$(CURRENT_GID)" \
|
||||
-e DISTRIBUTION="$(1)" \
|
||||
-e QT_JAMI_PREFIX="$(QT_JAMI_PREFIX)" \
|
||||
-e QT_MAJOR="$(QT_MAJOR)" \
|
||||
-e QT_MINOR="$(QT_MINOR)" \
|
||||
-e QT_PATCH="$(QT_PATCH)" \
|
||||
-e QT_TARBALL_CHECKSUM="$(QT_TARBALL_CHECKSUM)" \
|
||||
-e FORCE_REBUILD_QT="$(FORCE_REBUILD_QT)" \
|
||||
-e SNAP_PKG_NAME="$(or $(SNAP_PKG_NAME),jami)" \
|
||||
-e TARBALLS="$(TARBALLS)" \
|
||||
-v '$(TARBALLS)':'$(TARBALLS)' \
|
||||
-v '$(CURDIR)/$(RELEASE_TARBALL_FILENAME)':'/src/$(RELEASE_TARBALL_FILENAME)' \
|
||||
-v '$(CURDIR)/extras/packaging/gnu-linux/packages/$(1)':/opt/output \
|
||||
-t $(and $(IS_SHELL_INTERACTIVE),-i) \
|
||||
$(3) \
|
||||
"$$($(1)-docker-image-name)"
|
||||
|
||||
$$($(1)-docker-image-file): extras/packaging/gnu-linux/docker/Dockerfile_$(1)
|
||||
docker build \
|
||||
-t $$($(1)-docker-image-name) \
|
||||
-f extras/packaging/gnu-linux/docker/Dockerfile_$(1) $(2) $(CURDIR) && \
|
||||
touch "$$@"
|
||||
|
||||
packages/$(1)/.packages-built: $(RELEASE_TARBALL_FILENAME) $$($(1)-docker-image-file)
|
||||
mkdir -p "$$$$(dirname "$$@")" && \
|
||||
$$($(1)-docker-run-command) && \
|
||||
touch "$$@"
|
||||
|
||||
.PHONY: $(1)
|
||||
$(1): packages/$(1)/.packages-built
|
||||
PACKAGE-TARGETS += $(1)
|
||||
|
||||
.PHONY: $(1)-interactive
|
||||
$(1)-interactive: $(RELEASE_TARBALL_FILENAME) $$($(1)-docker-image-file)
|
||||
$$($(1)-docker-run-command) bash
|
||||
|
||||
endef
|
||||
|
||||
$(foreach target,$(DISTRIBUTIONS),\
|
||||
$(eval $(call make-docker-package-target,$(target))))
|
||||
|
||||
#
|
||||
# Guix-generated Debian packages (deb packs) targets.
|
||||
#
|
||||
SUPPORTED_GNU_ARCHS = x86_64
|
||||
DEB_PACK_TARGETS =
|
||||
|
||||
define guix-pack-command
|
||||
guix pack -C xz -f deb -m $(CURDIR)/extras/packaging/gnu-linux/guix/guix-pack-manifest.scm -v3 \
|
||||
-S /usr/bin/jami=bin/jami \
|
||||
-S /usr/share/applications/jami.desktop=share/applications/jami.desktop \
|
||||
-S /usr/share/icons/hicolor/scalable/apps/jami.svg=share/icons/hicolor/scalable/apps/jami.svg \
|
||||
-S /usr/share/icons/hicolor/48x48/apps/jami.png=share/icons/hicolor/48x48/apps/jami.png \
|
||||
-S /usr/share/metainfo/jami.appdata.xml=share/metainfo/jami.appdata.xml \
|
||||
--postinst-file=$(CURDIR)/extras/packaging/gnu-linux/guix/guix-pack-deb.postinst
|
||||
endef
|
||||
|
||||
# Arg1: the GNU architecture type (e.g., x86_64, i686, powerpcle, etc.)
|
||||
define define-deb-pack-rule
|
||||
deb-file-name := packages/guix-deb-pack/jami-$(RELEASE_VERSION)-$(1).deb
|
||||
DEB_PACK_TARGETS += deb-pack-$(subst _,-,$(1))
|
||||
.PHONY: deb-pack-$(subst _,-,$(1))
|
||||
deb-pack-$(subst _,-,$(1)): $$(deb-file-name)
|
||||
$$(deb-file-name): has-guix-p $(RELEASE_TARBALL_FILENAME)
|
||||
output=$$$$($(guix-pack-command) --system=$(1)-linux $$(GUIX_PACK_ARGS)) && \
|
||||
mkdir -p "$$$$(dirname "$$@")" && \
|
||||
cp --reflink=auto "$$$$output" "$$@" && \
|
||||
guix gc --delete "$$$$output"
|
||||
chmod +w "$$@"
|
||||
endef
|
||||
|
||||
$(foreach arch,$(SUPPORTED_GNU_ARCHS),\
|
||||
$(eval $(call define-deb-pack-rule,$(arch))))
|
||||
|
||||
PACKAGE-TARGETS += $(DEB_PACK_TARGETS)
|
||||
|
||||
package-all: $(PACKAGE-TARGETS)
|
||||
|
||||
.PHONY: list-package-targets
|
||||
list-package-targets:
|
||||
@$(foreach p,$(PACKAGE-TARGETS),\
|
||||
echo $(p);)
|
||||
|
||||
###################
|
||||
## Other targets ##
|
||||
###################
|
||||
.PHONY: docs
|
||||
|
||||
# Build the documentation
|
||||
# Note that newly added RST files will likely not display on all documents'
|
||||
# navigation bar unless the docs/build folder is manually deleted.
|
||||
docs: env
|
||||
env/bin/sphinx-build -b html docs/source docs/build/html
|
||||
env/bin/sphinx-build -b texinfo docs/source docs/build/texinfo
|
||||
|
||||
env:
|
||||
virtualenv env
|
||||
env/bin/pip install Sphinx==1.4.1 sphinx-rtd-theme==0.1.9
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -rf env
|
||||
rm -rf docs/build
|
||||
rm -f jami_*.tar.gz
|
||||
rm -rf packages
|
||||
rm -f Makefile.packaging.distro_targets
|
||||
rm -f .docker-image-*
|
||||
rm -rf client-qt/daemon/contrib/tarballs/*
|
46
extras/packaging/gnu-linux/docker/Dockerfile_debian_10
Normal file
46
extras/packaging/gnu-linux/docker/Dockerfile_debian_10
Normal file
|
@ -0,0 +1,46 @@
|
|||
FROM debian:buster
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get clean
|
||||
RUN apt-get update -y
|
||||
RUN apt-get install -y -o Acquire::Retries=10 \
|
||||
devscripts \
|
||||
apt-utils \
|
||||
equivs \
|
||||
gcc-8 \
|
||||
g++-8 \
|
||||
clang \
|
||||
clang-tools \
|
||||
libarchive-dev \
|
||||
wget
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian-qt/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh qt-deps
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh jami-deps
|
||||
|
||||
RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 50
|
||||
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 50
|
||||
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 10
|
||||
|
||||
# Install CMake 3.19 for Qt 6
|
||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
|
||||
RUN /opt/install-cmake.sh
|
||||
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
|
||||
RUN apt install nodejs -y
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh
|
||||
|
||||
RUN wget https://ftp.gnu.org/gnu/binutils/binutils-2.37.tar.xz -q -O /tmp/binutils.xz \
|
||||
&& cd /tmp/ \
|
||||
&& tar xvf binutils.xz \
|
||||
&& cd binutils-2.37 \
|
||||
&& ./configure \
|
||||
&& make \
|
||||
&& make install
|
||||
|
||||
CMD ["/opt/build-package-debian.sh"]
|
26
extras/packaging/gnu-linux/docker/Dockerfile_debian_11
Normal file
26
extras/packaging/gnu-linux/docker/Dockerfile_debian_11
Normal file
|
@ -0,0 +1,26 @@
|
|||
FROM debian:bullseye
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get clean
|
||||
RUN apt-get update && \
|
||||
apt-get install -y -o Acquire::Retries=10 \
|
||||
devscripts \
|
||||
equivs \
|
||||
python-is-python3 \
|
||||
wget
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian-qt/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh qt-deps
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh jami-deps
|
||||
|
||||
# Install CMake 3.19 for Qt 6
|
||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
|
||||
RUN /opt/install-cmake.sh
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh
|
||||
CMD ["/opt/build-package-debian.sh"]
|
27
extras/packaging/gnu-linux/docker/Dockerfile_debian_testing
Normal file
27
extras/packaging/gnu-linux/docker/Dockerfile_debian_testing
Normal file
|
@ -0,0 +1,27 @@
|
|||
FROM debian:testing
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get clean
|
||||
RUN apt-get update --allow-releaseinfo-change && \
|
||||
apt-get install -y -o Acquire::Retries=10 \
|
||||
devscripts \
|
||||
equivs \
|
||||
python-is-python3 \
|
||||
wget \
|
||||
nasm
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian-qt/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh qt-deps
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh jami-deps
|
||||
|
||||
# Install CMake 3.19 for Qt 6
|
||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
|
||||
RUN /opt/install-cmake.sh
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh
|
||||
CMD ["/opt/build-package-debian.sh"]
|
28
extras/packaging/gnu-linux/docker/Dockerfile_debian_unstable
Normal file
28
extras/packaging/gnu-linux/docker/Dockerfile_debian_unstable
Normal file
|
@ -0,0 +1,28 @@
|
|||
FROM debian:unstable
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get clean
|
||||
RUN apt-get update && \
|
||||
apt-get install -y -o Acquire::Retries=10 \
|
||||
devscripts \
|
||||
equivs \
|
||||
python-is-python3 \
|
||||
libdbus-1-dev \
|
||||
libdbus-c++-dev \
|
||||
wget
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian-qt/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh qt-deps
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh jami-deps
|
||||
|
||||
# Install CMake 3.19 for Qt 6
|
||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
|
||||
RUN /opt/install-cmake.sh
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh
|
||||
CMD ["/opt/build-package-debian.sh"]
|
103
extras/packaging/gnu-linux/docker/Dockerfile_fedora_36
Normal file
103
extras/packaging/gnu-linux/docker/Dockerfile_fedora_36
Normal file
|
@ -0,0 +1,103 @@
|
|||
FROM fedora:36
|
||||
|
||||
RUN dnf clean all
|
||||
|
||||
RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \
|
||||
dnf install -y mock
|
||||
|
||||
RUN dnf groupinstall -y "X Software Development"
|
||||
|
||||
RUN dnf install -y \
|
||||
git \
|
||||
rpm-build \
|
||||
tar \
|
||||
make \
|
||||
autoconf \
|
||||
automake \
|
||||
nasm \
|
||||
speexdsp-devel \
|
||||
pulseaudio-libs-devel \
|
||||
libcanberra-devel \
|
||||
libcurl-devel \
|
||||
libtool \
|
||||
mesa-libgbm-devel \
|
||||
mesa-dri-drivers \
|
||||
dbus-devel \
|
||||
expat-devel \
|
||||
pcre-devel \
|
||||
yaml-cpp-devel \
|
||||
dbus-c++-devel \
|
||||
dbus-devel \
|
||||
libXext-devel \
|
||||
libXfixes-devel \
|
||||
yasm \
|
||||
python2.7 \
|
||||
speex-devel \
|
||||
gsm-devel \
|
||||
chrpath \
|
||||
check \
|
||||
astyle \
|
||||
uuid-c++-devel \
|
||||
gettext-devel \
|
||||
gcc-c++ \
|
||||
which \
|
||||
alsa-lib-devel \
|
||||
systemd-devel \
|
||||
libuuid-devel \
|
||||
uuid-devel \
|
||||
gnutls-devel \
|
||||
nettle-devel \
|
||||
opus-devel \
|
||||
patch \
|
||||
jsoncpp-devel \
|
||||
libnatpmp-devel \
|
||||
webkitgtk4-devel \
|
||||
cryptopp-devel \
|
||||
libva-devel \
|
||||
libvdpau-devel \
|
||||
msgpack-devel \
|
||||
NetworkManager-libnm-devel \
|
||||
openssl-devel \
|
||||
clutter-devel \
|
||||
clutter-gtk-devel \
|
||||
libappindicator-gtk3-devel \
|
||||
libnotify-devel \
|
||||
libupnp-devel \
|
||||
qrencode-devel \
|
||||
libargon2-devel \
|
||||
libsndfile-devel \
|
||||
libdrm \
|
||||
gperf \
|
||||
bison \
|
||||
clang \
|
||||
clang-devel \
|
||||
llvm-devel \
|
||||
nodejs \
|
||||
flex \
|
||||
gstreamer1 gstreamer1-devel \
|
||||
gstreamer1-plugins-base-devel \
|
||||
gstreamer1-plugins-good \
|
||||
gstreamer1-plugins-bad-free-devel \
|
||||
nss-devel \
|
||||
libxcb* \
|
||||
libxkb* \
|
||||
libX11-devel \
|
||||
vulkan-devel \
|
||||
libXrender-devel \
|
||||
xcb-util-* \
|
||||
xz \
|
||||
xkeyboard-config \
|
||||
libnotify \
|
||||
wget \
|
||||
libstdc++-static \
|
||||
sqlite-devel \
|
||||
perl-generators \
|
||||
perl-English \
|
||||
libxshmfence-devel \
|
||||
ninja-build \
|
||||
clang \
|
||||
cmake
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
|
||||
|
||||
CMD ["/opt/build-package-rpm.sh"]
|
103
extras/packaging/gnu-linux/docker/Dockerfile_fedora_37
Normal file
103
extras/packaging/gnu-linux/docker/Dockerfile_fedora_37
Normal file
|
@ -0,0 +1,103 @@
|
|||
FROM fedora:37
|
||||
|
||||
RUN dnf clean all
|
||||
|
||||
RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \
|
||||
dnf install -y mock
|
||||
|
||||
RUN dnf groupinstall -y "X Software Development"
|
||||
|
||||
RUN dnf install -y \
|
||||
git \
|
||||
rpm-build \
|
||||
tar \
|
||||
make \
|
||||
autoconf \
|
||||
automake \
|
||||
nasm \
|
||||
speexdsp-devel \
|
||||
pulseaudio-libs-devel \
|
||||
libcanberra-devel \
|
||||
libcurl-devel \
|
||||
libtool \
|
||||
mesa-libgbm-devel \
|
||||
mesa-dri-drivers \
|
||||
dbus-devel \
|
||||
expat-devel \
|
||||
pcre-devel \
|
||||
yaml-cpp-devel \
|
||||
dbus-c++-devel \
|
||||
dbus-devel \
|
||||
libXext-devel \
|
||||
libXfixes-devel \
|
||||
yasm \
|
||||
python2.7 \
|
||||
speex-devel \
|
||||
gsm-devel \
|
||||
chrpath \
|
||||
check \
|
||||
astyle \
|
||||
uuid-c++-devel \
|
||||
gettext-devel \
|
||||
gcc-c++ \
|
||||
which \
|
||||
alsa-lib-devel \
|
||||
systemd-devel \
|
||||
libuuid-devel \
|
||||
uuid-devel \
|
||||
gnutls-devel \
|
||||
nettle-devel \
|
||||
opus-devel \
|
||||
patch \
|
||||
jsoncpp-devel \
|
||||
libnatpmp-devel \
|
||||
webkitgtk4-devel \
|
||||
cryptopp-devel \
|
||||
libva-devel \
|
||||
libvdpau-devel \
|
||||
msgpack-devel \
|
||||
NetworkManager-libnm-devel \
|
||||
openssl-devel \
|
||||
clutter-devel \
|
||||
clutter-gtk-devel \
|
||||
libappindicator-gtk3-devel \
|
||||
libnotify-devel \
|
||||
libupnp-devel \
|
||||
qrencode-devel \
|
||||
libargon2-devel \
|
||||
libsndfile-devel \
|
||||
libdrm \
|
||||
gperf \
|
||||
bison \
|
||||
clang \
|
||||
clang-devel \
|
||||
llvm-devel \
|
||||
nodejs \
|
||||
flex \
|
||||
gstreamer1 gstreamer1-devel \
|
||||
gstreamer1-plugins-base-devel \
|
||||
gstreamer1-plugins-good \
|
||||
gstreamer1-plugins-bad-free-devel \
|
||||
nss-devel \
|
||||
libxcb* \
|
||||
libxkb* \
|
||||
libX11-devel \
|
||||
vulkan-devel \
|
||||
libXrender-devel \
|
||||
xcb-util-* \
|
||||
xz \
|
||||
xkeyboard-config \
|
||||
libnotify \
|
||||
wget \
|
||||
libstdc++-static \
|
||||
sqlite-devel \
|
||||
perl-generators \
|
||||
perl-English \
|
||||
libxshmfence-devel \
|
||||
ninja-build \
|
||||
clang \
|
||||
cmake
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
|
||||
|
||||
CMD ["/opt/build-package-rpm.sh"]
|
109
extras/packaging/gnu-linux/docker/Dockerfile_opensuse-leap_15.4
Normal file
109
extras/packaging/gnu-linux/docker/Dockerfile_opensuse-leap_15.4
Normal file
|
@ -0,0 +1,109 @@
|
|||
FROM opensuse/leap:15.4
|
||||
|
||||
RUN zypper refresh
|
||||
|
||||
RUN zypper --non-interactive install -y \
|
||||
dnf \
|
||||
dnf-command\(builddep\) \
|
||||
rpmdevtools \
|
||||
Mesa-dri-devel Mesa-dri \
|
||||
git \
|
||||
gcc10 \
|
||||
gcc10-c++ \
|
||||
rpm-build \
|
||||
tar \
|
||||
make \
|
||||
autoconf \
|
||||
automake \
|
||||
nasm \
|
||||
speexdsp-devel \
|
||||
libpulse-devel \
|
||||
libcanberra-devel \
|
||||
libcurl-devel \
|
||||
libtool \
|
||||
pcre-devel \
|
||||
yaml-cpp-devel \
|
||||
libdbus-c++-devel \
|
||||
libXext-devel \
|
||||
libXfixes-devel \
|
||||
yasm \
|
||||
speex-devel \
|
||||
libgsm-devel \
|
||||
chrpath \
|
||||
check \
|
||||
astyle \
|
||||
gettext-devel \
|
||||
which \
|
||||
alsa-lib-devel \
|
||||
systemd-devel \
|
||||
libuuid-devel \
|
||||
uuid-devel \
|
||||
libopus-devel \
|
||||
patch \
|
||||
jsoncpp-devel \
|
||||
webkit2gtk3-devel \
|
||||
libcryptopp-devel \
|
||||
libva-devel \
|
||||
libvdpau-devel \
|
||||
msgpack-devel \
|
||||
clutter-devel \
|
||||
openssl-devel \
|
||||
clutter-gtk-devel \
|
||||
libnma-devel \
|
||||
libcryptopp-devel \
|
||||
libdbus-c++-devel \
|
||||
libexpat-devel \
|
||||
gnome-icon-theme-symbolic \
|
||||
libgsm-devel \
|
||||
gtk3-devel \
|
||||
libappindicator-devel \
|
||||
sqlite-devel \
|
||||
ffmpeg-4-libavutil-devel \
|
||||
gtk3-devel\
|
||||
qrencode-devel \
|
||||
python3-python-dateutil \
|
||||
libsndfile-devel \
|
||||
libdrm \
|
||||
gperf \
|
||||
bison \
|
||||
flex \
|
||||
ffmpeg ffmpeg-devel \
|
||||
nodejs12 \
|
||||
mozilla-nss-devel \
|
||||
python-xml \
|
||||
libxcb* \
|
||||
libxkb* \
|
||||
libX11-devel \
|
||||
libXrender-devel \
|
||||
libfreetype6 \
|
||||
xcb-util-image-devel \
|
||||
xcb-util-keysyms-devel \
|
||||
xcb-util-renderutil-devel \
|
||||
xcb-util-wm-devel \
|
||||
xorg-x11-devel \
|
||||
xz \
|
||||
xkeyboard-config \
|
||||
libnotify \
|
||||
argon2-devel \
|
||||
libxshmfence-devel \
|
||||
xproto-devel \
|
||||
xcb-proto-devel \
|
||||
xcb-* \
|
||||
xorg-* \
|
||||
vulkan-devel \
|
||||
ninja \
|
||||
gstreamer-devel \
|
||||
gstreamer-plugins-good \
|
||||
gstreamer-plugins-bad-devel \
|
||||
gstreamer-plugins-base-devel \
|
||||
cmake \
|
||||
wget
|
||||
|
||||
RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 50
|
||||
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 50
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
|
||||
|
||||
ENV CC=gcc
|
||||
ENV CXX=g++
|
||||
CMD ["/opt/build-package-rpm.sh"]
|
84
extras/packaging/gnu-linux/docker/Dockerfile_snap
Normal file
84
extras/packaging/gnu-linux/docker/Dockerfile_snap
Normal file
|
@ -0,0 +1,84 @@
|
|||
ARG RISK=edge
|
||||
ARG UBUNTU=focal
|
||||
|
||||
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 \
|
||||
curl \
|
||||
jq \
|
||||
squashfs-tools
|
||||
|
||||
# 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' '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 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' '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 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='$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 | 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:$UBUNTU
|
||||
COPY --from=builder /snap/core /snap/core
|
||||
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 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:/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 extras/packaging/gnu-linux/scripts/build-package-snap.sh /opt/build-package-snap.sh
|
||||
CMD ["/opt/build-package-snap.sh"]
|
40
extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_18.04
Normal file
40
extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_18.04
Normal file
|
@ -0,0 +1,40 @@
|
|||
FROM ubuntu:18.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get clean
|
||||
RUN apt-get update && \
|
||||
apt-get install -y -o Acquire::Retries=10 \
|
||||
devscripts \
|
||||
equivs \
|
||||
curl \
|
||||
gcc-8 \
|
||||
g++-8 \
|
||||
clang \
|
||||
clang-tools \
|
||||
libarchive-dev \
|
||||
software-properties-common \
|
||||
wget
|
||||
|
||||
# nodejs (more recent version needed for building libqt-jami)
|
||||
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
|
||||
RUN apt install nodejs -y
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian-qt/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh qt-deps
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh jami-deps
|
||||
|
||||
RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 50
|
||||
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 50
|
||||
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 10
|
||||
|
||||
# Install CMake 3.19 for Qt 6
|
||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
|
||||
RUN /opt/install-cmake.sh
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh
|
||||
CMD ["/opt/build-package-debian.sh"]
|
29
extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_20.04
Normal file
29
extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_20.04
Normal file
|
@ -0,0 +1,29 @@
|
|||
FROM ubuntu:20.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get clean
|
||||
RUN apt-get update && \
|
||||
apt-get install -y -o Acquire::Retries=10 \
|
||||
devscripts \
|
||||
equivs \
|
||||
python-is-python3 \
|
||||
wget
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian-qt/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh qt-deps
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh jami-deps
|
||||
|
||||
# Install CMake 3.19 for Qt 6
|
||||
ADD extras/packaging/gnu-linux/scripts/install-cmake.sh /opt/install-cmake.sh
|
||||
RUN /opt/install-cmake.sh
|
||||
# nodejs
|
||||
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
|
||||
RUN apt install nodejs -y
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh
|
||||
CMD ["/opt/build-package-debian.sh"]
|
22
extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_22.04
Normal file
22
extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_22.04
Normal file
|
@ -0,0 +1,22 @@
|
|||
FROM ubuntu:22.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get clean
|
||||
RUN apt-get update && \
|
||||
apt-get install -y -o Acquire::Retries=10 \
|
||||
devscripts \
|
||||
equivs \
|
||||
python-is-python3 \
|
||||
wget
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian-qt/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh qt-deps
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh jami-deps
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh
|
||||
CMD ["/opt/build-package-debian.sh"]
|
22
extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_22.10
Normal file
22
extras/packaging/gnu-linux/docker/Dockerfile_ubuntu_22.10
Normal file
|
@ -0,0 +1,22 @@
|
|||
FROM ubuntu:22.10
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get clean
|
||||
RUN apt-get update && \
|
||||
apt-get install -y -o Acquire::Retries=10 \
|
||||
devscripts \
|
||||
equivs \
|
||||
python-is-python3 \
|
||||
wget
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian-qt/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh qt-deps
|
||||
|
||||
COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
|
||||
RUN /opt/prebuild-package-debian.sh jami-deps
|
||||
|
||||
ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh
|
||||
CMD ["/opt/build-package-debian.sh"]
|
5
extras/packaging/gnu-linux/guix/channels.scm
Normal file
5
extras/packaging/gnu-linux/guix/channels.scm
Normal file
|
@ -0,0 +1,5 @@
|
|||
;;; Tested with this revision of GNU Guix.
|
||||
(list (channel
|
||||
(inherit %default-guix-channel)
|
||||
(commit
|
||||
"f5cc7d03a778f20e2ad487e2c17cc8853bc871f0"))) ;2022-08-01
|
97
extras/packaging/gnu-linux/guix/guix-pack-deb.postinst
Normal file
97
extras/packaging/gnu-linux/guix/guix-pack-deb.postinst
Normal file
|
@ -0,0 +1,97 @@
|
|||
#!/bin/sh
|
||||
# Copyright (C) 2021 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
set -e
|
||||
|
||||
# Fingerprint: A295D773307D25A33AE72F2F64CD5FA175348F84
|
||||
jami_key="\
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v2
|
||||
|
||||
mQENBFVSdlcBCAC9zC1rp12O2K08PGozI14Y+t4qC931eHicvkuEMF1B9gAhjdRF
|
||||
aIJS+UXwgQzoamDIHenxz1Q3fXUjKCMXytjGymB/0LUKccSbtH0Rcsl8kZ2z57KN
|
||||
E+GLS7SvlP93ZOxco7eAEBWF/fvMrCsm10sNI6bW7UK0bgql9iIetd6Wrp9xXFVs
|
||||
gmoV8Av714OlswsthSNtN+xQls3ozQ/dVGsOkZEyDbBzi88/rQEtuIDztTSWyD0V
|
||||
x7WaY5+mVRwsJKzyPlgvsXpbP7A41IFykeOzPKh+vYz3k7dcLIRdOwse79oT2RXt
|
||||
2VYEyTyTZIQlCJjGNTJYsU7GVffU4LnI7p/bABEBAAG0QFJpbmcgLSBTYXZvaXIt
|
||||
RmFpcmUgTGludXgsIEluYyA8cmluZ0BsaXN0cy5zYXZvaXJmYWlyZWxpbnV4Lm5l
|
||||
dD6JATkEEwEIACMFAlVSdlcCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAK
|
||||
CRBkzV+hdTSPhMqSB/9aaKXVByoE7zwPM8DDSntS/jYhhaV1CcZ78WeC1LY2UnHL
|
||||
R/yvABnDMikgqbMHBDu1R9dnjgZNntp7p0blxcT6ScxdZ6FpMZG6ZW5YNZIVctnF
|
||||
jdExStcdpcbbycW8GeCmQdVcKLBl8G55mick02ayVNOH5ETtWahPwBvMWk5hSaH3
|
||||
E18yvnmdqa9nCEST4UKvBOpmn58mwJDIR2YLdEFcL8z4FkxQUNkx/hiHSn+YLorZ
|
||||
H3iBrf9y9vSYhQ5pxx7seWkoaGAQBgfktRCUKvVY6E1oSZ/WR1WsR1ftDO/RD0E8
|
||||
APKzibVynUEQrCcQX16uDOa/YgavVkts9HmR7Vf7iQEcBBABCAAGBQJVUoJZAAoJ
|
||||
EFZ3uE+o8K8j0RkH/2sv4L3X0hPIwAzf3CUJZQuHihUOPRAoru5RqW/5nWqsroa1
|
||||
WChJq79uDEecDAizTA1MvaTFmLxTjCkJso+5UHMSHi6LARvYXSOeBPFizEJT4qZZ
|
||||
CXti5zh9d5z1u6L986mrnArA39IZ2F+9wV2q0VIDnq1Tt6+cJ745zSeZmbM6jip4
|
||||
oEBsKbCkAhq78sqCc7DIilsGbd2tgrLsh3fitvamEJCTCYKdDMog3TP0+EekQTA2
|
||||
Qp4jG0Uf7Gg1YvDDcsawXyNDrMBXEFPVhBNnRisX+YQBRWgDE58+fpsQfeTkblL5
|
||||
UaLWhDGlyfAc1ebL3InzhUWJswjt0BN3GPoP55m5AQ0EVVJ2VwEIAMXhg0w1IM0C
|
||||
rGXMGayaJ3EWd9YXkqq0sAN7b75tD0cOimyPNafnzChG9//3tt82aPRm8fG5Lk5U
|
||||
fwCS2MSt2Ml8UZeujmEBnvU9hsJBWcGgzXhtBQwZqzmV2vQg8436nTFY5L24TFBc
|
||||
QNOUJNzSy/dqps0SxcYleE57o24KHlW6ICBaEhz0JoZHv5+7GtYz6XN2D7pkwTPY
|
||||
UIahyt4dY3geFrkuMzZdTS4qyFb8EE/Ypi/WgewO9ib53kt7FBrxmm0l+d9GR4jH
|
||||
CKGqaYjm8xzTsNa3m2C0Cf/C13bOaQVicgntfQ32IjjZdaDMlRLQluYNQ0ETA1FE
|
||||
9+EVvrQYZ+kAEQEAAYkBHwQYAQgACQUCVVJ2VwIbDAAKCRBkzV+hdTSPhMIaB/9D
|
||||
CrIZBDy7YOK3gdnNm57jemJRz6Cum7RTUiqCQ8ivSmEgv1KmMIqMpjmnKKP43iHO
|
||||
mR4i7XDml6RBGynPys6cQcAlBWSuhOv9PGpRCaGyjJ4vmQUsYhyD/+tCDZVdBuGg
|
||||
CxteSMbawxtMHESqX7dDlctc+njDjBcbcGj73sj36qoFIjorjymZlT5IdK39oXVM
|
||||
Hi1TssiWPOU0hQgn4BIreYnEZUA6xuFX10C7k2DVRFZrXF7lpNgPQ8eNZTnQBIuw
|
||||
HUFCGSHO3/kzxSlkE1PBUX3IZ8PSFijyopBnWUhlSXuyRjte8OR7Fl/Rlf0IaOD1
|
||||
4sRdAfS333T4Uifq4uOu
|
||||
=s2aQ
|
||||
-----END PGP PUBLIC KEY BLOCK-----"
|
||||
|
||||
# System paths and generated variables.
|
||||
apt_file=/etc/apt/sources.list.d/jami.list
|
||||
update_manager_path=/etc/update-manager/release-upgrades.d/
|
||||
jami_update_manager_id=jami
|
||||
jami_update_manager_cfg=${jami_update_manager_id}.cfg
|
||||
update_manager_cfg_path=$update_manager_path/$jami_update_manager_cfg
|
||||
jami_repo_url=https://dl.jami.net/nightly/guix-deb-pack
|
||||
|
||||
case "$1" in
|
||||
configure)
|
||||
command -v apt-key > /dev/null \
|
||||
|| (echo 'could not run postinst: apt-key is missing' && exit 1)
|
||||
|
||||
# Add the key to the trusted keyring.
|
||||
echo "$jami_key" | apt-key add - > /dev/null 2>&1
|
||||
|
||||
# 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 ]; then
|
||||
mkdir -p "$update_manager_path"
|
||||
cat > "$update_manager_cfg_path" <<EOF
|
||||
# Added by Jami to prevent disabling of Jami repository sources on
|
||||
# distribution release upgrade.
|
||||
[ThirdPartyMirrors]
|
||||
jami/${jami_update_manager_id}=${jami_repo_url}
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Add an entry for the package repository.
|
||||
test -f "$apt_file" && cp "$apt_file" "${apt_file}.bak"
|
||||
echo "deb $jami_repo_url jami main" > "$apt_file"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Local Variables:
|
||||
# mode: sh
|
||||
# End:
|
98
extras/packaging/gnu-linux/guix/guix-pack-manifest.scm
Normal file
98
extras/packaging/gnu-linux/guix/guix-pack-manifest.scm
Normal file
|
@ -0,0 +1,98 @@
|
|||
;;; Copyright (C) 2021 Savoir-faire Linux Inc.
|
||||
;;;
|
||||
;;; Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
|
||||
;;;
|
||||
;;; This program is free software: you can redistribute it and/or modify
|
||||
;;; it under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation, either version 3 of the License, or
|
||||
;;; (at your option) any later version.
|
||||
;;;
|
||||
;;; This program is distributed in the hope that it will be useful,
|
||||
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
;;;
|
||||
;;; This GNU Guix manifest is used along the Makefile to build the
|
||||
;;; latest Jami as a Guix pack.
|
||||
|
||||
(use-modules (gnu packages certs)
|
||||
(gnu packages jami)
|
||||
(gnu packages python)
|
||||
(guix base32)
|
||||
(guix gexp)
|
||||
(guix packages)
|
||||
(guix transformations)
|
||||
(guix store)
|
||||
(guix utils))
|
||||
|
||||
;;; XXX: Below is a rather strenuous way to specify something that
|
||||
;;; would have been nicer if it could have been specified via:
|
||||
;;;
|
||||
;;; --with-source=libjami=$(RELEASE_TARBALL_FILENAME) \
|
||||
;;; --with-source=jami=$(RELEASE_TARBALL_FILENAME) in the Makefile.
|
||||
;;;
|
||||
;;; The above doesn't currently rewrite the dependency graph
|
||||
;;; recursively, hence why it is not sufficient.
|
||||
|
||||
(define %release-version (getenv "RELEASE_VERSION"))
|
||||
|
||||
(define %release-file-name (getenv "RELEASE_TARBALL_FILENAME"))
|
||||
|
||||
(unless %release-version
|
||||
(error "RELEASE_VERSION environment variable is not set"))
|
||||
|
||||
(unless %release-file-name
|
||||
(error "RELEASE_TARBALL_FILENAME environment variable is not set"))
|
||||
|
||||
;;; Add the source tarball to the store and retrieve its hash. The
|
||||
;;; hash is useful to turn the origin record into a fixed-output
|
||||
;;; derivation, which means the Jami packages will only get built once
|
||||
;;; for a given source tarball.
|
||||
(define %release-file-hash
|
||||
(with-store store
|
||||
(let ((source (add-to-store store (basename %release-file-name) #f
|
||||
"sha256" %release-file-name)))
|
||||
(bytevector->nix-base32-string (query-path-hash store source)))))
|
||||
|
||||
(define %jami-sources/latest
|
||||
(origin
|
||||
(inherit (@@ (gnu packages jami) %jami-sources))
|
||||
(uri %release-file-name)
|
||||
(sha256 %release-file-hash)))
|
||||
|
||||
(define (with-latest-sources name)
|
||||
(options->transformation
|
||||
`((with-source . ,(format #f "~a@~a=~a" name
|
||||
%release-version %release-file-name)))))
|
||||
|
||||
(define libjami/latest ((with-latest-sources "libjami") libjami))
|
||||
|
||||
(define with-libjami/latest
|
||||
(package-input-rewriting `((,libjami . ,libjami/latest))))
|
||||
|
||||
;;; Bundling the TLS certificates with Jami enables a fully
|
||||
;;; functional, configuration-free experience, useful in the context
|
||||
;;; of Guix packs.
|
||||
(define jami-with-certs
|
||||
(package/inherit jami
|
||||
(inputs (modify-inputs (package-inputs jami)
|
||||
(append nss-certs)))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments jami)
|
||||
((#:phases phases '%standard-phases)
|
||||
#~(modify-phases #$phases
|
||||
(add-after 'qt-wrap 'wrap-ssl-cert-dir
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(substitute* (search-input-file outputs "bin/jami")
|
||||
(("^exec.*" exec-line)
|
||||
(format #f "export SSL_CERT_DIR=~a~%"
|
||||
(search-input-directory inputs "etc/ssl/certs")
|
||||
exec-line)))))))))))
|
||||
|
||||
(define jami-with-certs/latest
|
||||
((with-latest-sources "jami") jami-with-certs))
|
||||
|
||||
(packages->manifest (list jami-with-certs/latest))
|
116
extras/packaging/gnu-linux/guix/manifest.scm
Normal file
116
extras/packaging/gnu-linux/guix/manifest.scm
Normal file
|
@ -0,0 +1,116 @@
|
|||
;;; To use with the GNU Guix package manager.
|
||||
;;; Available at https://guix.gnu.org/.
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; A full-blown development environment that can be used to build the
|
||||
;;; whole project. The sensitive (i.e., patched) dependencies are
|
||||
;;; consciously omitted from this list so that the bundled libraries
|
||||
;;; are the ones used, which is usually what is desired for
|
||||
;;; development purposes.
|
||||
|
||||
;;; The build.py script makes use of it to build Jami in a Linux
|
||||
;;; container with the dependencies below when Guix is detected (and
|
||||
;;; no /etc/os-release file exists) or when explicitly specified,
|
||||
;;; e.g.:
|
||||
;;;
|
||||
;;; $ ./build.py --distribution=guix --install
|
||||
;;;
|
||||
;;; It can also be invoked directly to spawn a development environment, like so:
|
||||
;;;
|
||||
;;; $ guix shell --pure --manifest=guix/manifest.scm
|
||||
|
||||
(specifications->manifest
|
||||
(list
|
||||
;; Minimal requirements of the daemon contrib build system.
|
||||
"coreutils"
|
||||
"gcc-toolchain"
|
||||
"git-minimal"
|
||||
"grep"
|
||||
"gzip"
|
||||
"make"
|
||||
"nss-certs"
|
||||
"pkg-config"
|
||||
"python"
|
||||
"sed"
|
||||
"tar"
|
||||
"util-linux"
|
||||
"wget"
|
||||
"xz"
|
||||
|
||||
;; For the daemon and its contribs.
|
||||
"alsa-lib"
|
||||
"autoconf"
|
||||
"automake"
|
||||
"bash"
|
||||
"bzip2"
|
||||
"cmake"
|
||||
"dbus"
|
||||
;; Bundled because broken with GCC 7 upstream (unmaintained). When
|
||||
;; attempting to use it, it would cause confusing errors such as
|
||||
;; "ld: ../src/.libs/libring.a(libupnpcontrol_la-upnp_context.o): in
|
||||
;; function `jami::upnp::UPnPContext::updateMappingList(bool)':
|
||||
;; upnp_context.cpp:(.text+0xa4be): undefined reference to
|
||||
;; `std::__cxx11::basic_ostringstream<char, std::char_traits<char>,
|
||||
;; std::allocator<char> >::basic_ostringstream()'
|
||||
;;"dbus-c++" ;for dbusxx-xml2cpp
|
||||
"diffutils"
|
||||
"doxygen"
|
||||
"eudev" ;udev library
|
||||
"expat"
|
||||
"findutils"
|
||||
"gawk"
|
||||
"gettext"
|
||||
"gnutls"
|
||||
;;"ffmpeg" ;bundled because patched
|
||||
"gmp"
|
||||
"gsm"
|
||||
"gtk-doc"
|
||||
"http-parser"
|
||||
"jsoncpp"
|
||||
"libarchive"
|
||||
"libgit2"
|
||||
"libnatpmp"
|
||||
"libupnp"
|
||||
"libsecp256k1"
|
||||
"libtool"
|
||||
"libva" ;vaapi
|
||||
"libvdpau"
|
||||
"libx264"
|
||||
"nasm"
|
||||
"nettle"
|
||||
"openssl"
|
||||
"opus"
|
||||
"patch"
|
||||
"pcre"
|
||||
"perl"
|
||||
;;"pjproject" ;bundled because patched
|
||||
"pulseaudio"
|
||||
"speex"
|
||||
"speexdsp"
|
||||
"which"
|
||||
"yaml-cpp"
|
||||
"yasm"
|
||||
|
||||
;; For the Qt client.
|
||||
"libxkbcommon"
|
||||
"network-manager" ;libnm
|
||||
"qrencode"
|
||||
"qtbase"
|
||||
"qt5compat"
|
||||
"qtdeclarative"
|
||||
"qtmultimedia"
|
||||
"qtnetworkauth"
|
||||
"qtpositioning"
|
||||
"qtsvg"
|
||||
"qttools"
|
||||
"qtwebchannel"
|
||||
"qtwebengine"
|
||||
"vulkan-headers"
|
||||
|
||||
;; For tests and debugging.
|
||||
"file"
|
||||
"gdb"
|
||||
"googletest"
|
||||
"ltrace"
|
||||
"strace"))
|
27
extras/packaging/gnu-linux/guix/minimal-manifest.scm
Normal file
27
extras/packaging/gnu-linux/guix/minimal-manifest.scm
Normal file
|
@ -0,0 +1,27 @@
|
|||
;;; To use with the GNU Guix package manager.
|
||||
;;; Available at https://guix.gnu.org/.
|
||||
;;;
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; This Guix manifest can be used to create an environment that
|
||||
;;; satisfies the minimal requirements of the the contrib build system
|
||||
;;; of the daemon. For example, it is used by the CI to build the
|
||||
;;; source release tarball in a controlled environment.
|
||||
|
||||
(specifications->manifest
|
||||
(list
|
||||
"bash"
|
||||
"coreutils"
|
||||
"gcc-toolchain"
|
||||
"git-minimal"
|
||||
"grep"
|
||||
"gzip"
|
||||
"make"
|
||||
"nss-certs"
|
||||
"pkg-config"
|
||||
"python"
|
||||
"sed"
|
||||
"tar"
|
||||
"util-linux"
|
||||
"wget"
|
||||
"xz"))
|
1
extras/packaging/gnu-linux/rules/debian-qt/compat
Normal file
1
extras/packaging/gnu-linux/rules/debian-qt/compat
Normal file
|
@ -0,0 +1 @@
|
|||
10
|
390
extras/packaging/gnu-linux/rules/debian-qt/control
Normal file
390
extras/packaging/gnu-linux/rules/debian-qt/control
Normal file
|
@ -0,0 +1,390 @@
|
|||
Source: libqt-jami
|
||||
Section: libs
|
||||
Priority: optional
|
||||
Maintainer: The Jami project <jami@gnu.org>
|
||||
Rules-Requires-Root: no
|
||||
Standards-Version: 4.5.1
|
||||
Build-Depends: debhelper (>= 9),
|
||||
# =====================================================
|
||||
# the following list of deps was gathered with help
|
||||
# from https://salsa.debian.org/qt-kde-team/qt repos
|
||||
# =====================================================
|
||||
#
|
||||
# ======
|
||||
# qtbase
|
||||
# ======
|
||||
# debhelper-compat (= 13),
|
||||
# debhelper,
|
||||
default-libmysqlclient-dev,
|
||||
dh-exec,
|
||||
# dpkg-dev (>= 1.17.14),
|
||||
dpkg-dev,
|
||||
firebird-dev [kfreebsd-any linux-any],
|
||||
freetds-dev,
|
||||
libasound2-dev [linux-any],
|
||||
libatspi2.0-dev,
|
||||
libcups2-dev,
|
||||
libdbus-1-dev,
|
||||
libdouble-conversion-dev,
|
||||
libdrm-dev [linux-any],
|
||||
libfontconfig1-dev,
|
||||
libfreetype6-dev,
|
||||
libgbm-dev [linux-any kfreebsd-any],
|
||||
libgl-dev,
|
||||
# libgles-dev, (not available in buster)
|
||||
libglib2.0-dev,
|
||||
# libglu1-mesa-dev | libglu-dev,
|
||||
libgtk-3-dev,
|
||||
libharfbuzz-dev (>= 1.6.0~),
|
||||
libicu-dev,
|
||||
libinput-dev [linux-any],
|
||||
libjpeg-dev,
|
||||
libkrb5-dev,
|
||||
# libmd4c-dev, (not in buster)
|
||||
libmtdev-dev [linux-any],
|
||||
libpcre2-dev,
|
||||
libpng-dev,
|
||||
libpq-dev,
|
||||
libproxy-dev,
|
||||
libpulse-dev,
|
||||
libsqlite3-dev,
|
||||
libssl-dev,
|
||||
libudev-dev [linux-any],
|
||||
libvulkan-dev [linux-any],
|
||||
libx11-dev,
|
||||
libx11-xcb-dev,
|
||||
libxcb-glx0-dev,
|
||||
libxcb-icccm4-dev,
|
||||
libxcb-image0-dev,
|
||||
libxcb-keysyms1-dev,
|
||||
libxcb-randr0-dev,
|
||||
libxcb-render-util0-dev,
|
||||
libxcb-render0-dev,
|
||||
libxcb-shape0-dev,
|
||||
libxcb-shm0-dev,
|
||||
libxcb-sync-dev,
|
||||
libxcb-util0-dev,
|
||||
libxcb-xfixes0-dev,
|
||||
libxcb-xinerama0-dev,
|
||||
libxcb-xinput-dev,
|
||||
libxcb-xkb-dev,
|
||||
libxcb1-dev,
|
||||
libxext-dev,
|
||||
libxi-dev,
|
||||
libxkbcommon-dev,
|
||||
libxkbfile-dev,
|
||||
libxkbcommon-x11-dev,
|
||||
libxrender-dev,
|
||||
libzstd-dev,
|
||||
libxshmfence-dev,
|
||||
pkg-config,
|
||||
# pkg-kde-tools (>= 0.15.17~),
|
||||
publicsuffix,
|
||||
# qt5-qmake-bin <cross>,
|
||||
unixodbc-dev,
|
||||
zlib1g-dev,
|
||||
# =============
|
||||
# qtdeclarative
|
||||
# =============
|
||||
# debhelper-compat (= 13),
|
||||
# dpkg-dev (>= 1.20.0),
|
||||
libgl1-mesa-dri,
|
||||
# pkg-kde-tools (>= 0.15.17~),
|
||||
python3:any,
|
||||
# qtbase5-private-dev (>= 5.15.2+dfsg~),
|
||||
xauth <!nocheck>,
|
||||
xvfb <!nocheck>,
|
||||
# ==================
|
||||
# qtgraphicaleffects
|
||||
# ==================
|
||||
# debhelper-compat (= 13),
|
||||
# dpkg-dev (>= 1.16.1),
|
||||
# pkg-kde-tools (>= 0.15.26~),
|
||||
# qml-module-qtquick-window2 (>= 5.15.2+dfsg~),
|
||||
# qml-module-qtquick2 (>= 5.15.2+dfsg~),
|
||||
# qtbase5-dev (>= 5.15.2+dfsg~),
|
||||
# qtbase5-private-dev (>= 5.15.2+dfsg~),
|
||||
# qtdeclarative5-dev-tools (>= 5.15.2+dfsg~),
|
||||
# qtdeclarative5-private-dev (>= 5.15.2+dfsg~),
|
||||
# ============
|
||||
# qtmultimedia
|
||||
# ============
|
||||
# debhelper-compat (= 13),
|
||||
# libasound2-dev [linux-any],
|
||||
libgstreamer-plugins-base1.0-dev,
|
||||
libgstreamer1.0-dev,
|
||||
libopenal-dev,
|
||||
# libpulse-dev,
|
||||
# libqt5opengl5-dev (>= 5.15.2+dfsg~),
|
||||
# pkg-kde-tools,
|
||||
# qml-module-qtquick2,
|
||||
# qml-module-qttest,
|
||||
# qtbase5-dev (>= 5.15.2+dfsg~),
|
||||
# qtbase5-private-dev (>= 5.15.2+dfsg~),
|
||||
# qtdeclarative5-dev (>= 5.15.2+dfsg~),
|
||||
# xauth <!nocheck>,
|
||||
# xvfb <!nocheck>,
|
||||
# zlib1g-dev,
|
||||
# =========================
|
||||
# qtlocation (for qtwebkit)
|
||||
# =========================
|
||||
# debhelper-compat (= 13),
|
||||
libboost-dev,
|
||||
# libicu-dev,
|
||||
libprotozero-dev (>= 1.5.2),
|
||||
# libqt5opengl5-dev (>= 5.15.2+dfsg~),
|
||||
# pkg-kde-tools,
|
||||
# qml-module-qttest (>= 5.15.2+dfsg~),
|
||||
# qtbase5-private-dev (>= 5.15.2+dfsg~),
|
||||
# qtdeclarative5-private-dev (>= 5.15.2+dfsg~),
|
||||
rapidjson-dev (>= 1.1.0),
|
||||
# xauth <!nocheck>,
|
||||
# xvfb <!nocheck>,
|
||||
# zlib1g-dev,
|
||||
# ===============
|
||||
# qtquickcontrols
|
||||
# ===============
|
||||
# debhelper-compat (= 13),
|
||||
# dpkg-dev (>= 1.17.14),
|
||||
# pkg-kde-tools (>= 0.15.26~),
|
||||
# qml-module-qt-labs-folderlistmodel (>= 5.15.2+dfsg~),
|
||||
# qml-module-qt-labs-settings (>= 5.15.2+dfsg~),
|
||||
# qml-module-qtgraphicaleffects (>= 5.15.2~),
|
||||
# qml-module-qtqml (>= 5.15.2+dfsg~),
|
||||
# qml-module-qtqml-models2 (>= 5.15.2+dfsg~),
|
||||
# qml-module-qtquick-layouts (>= 5.15.2+dfsg~),
|
||||
# qml-module-qtquick-window2 (>= 5.15.2+dfsg~),
|
||||
# qml-module-qttest (>= 5.15.2+dfsg~),
|
||||
# qtbase5-dev (>= 5.15.2+dfsg~),
|
||||
# qtbase5-private-dev (>= 5.15.2+dfsg~),
|
||||
# qtdeclarative5-dev-tools (>= 5.15.2+dfsg~),
|
||||
# qtdeclarative5-private-dev (>= 5.15.2+dfsg~),
|
||||
# xauth <!nocheck>,
|
||||
# xvfb <!nocheck>,
|
||||
# ========================
|
||||
# qtsensors (for qtwebkit)
|
||||
# ========================
|
||||
# debhelper-compat (= 13),
|
||||
# pkg-kde-tools,
|
||||
# qtbase5-private-dev (>= 5.15.2+dfsg~),
|
||||
# qtdeclarative5-dev (>= 5.15.2+dfsg~),
|
||||
# xauth <!nocheck>,
|
||||
# xvfb <!nocheck>,
|
||||
# ================
|
||||
# qtquickcontrols2
|
||||
# ================
|
||||
# debhelper-compat (= 13),
|
||||
# dpkg-dev (>= 1.16.1),
|
||||
# pkg-kde-tools (>= 0.15.29~),
|
||||
# qml-module-qtgraphicaleffects (>= 5.15.2~),
|
||||
# qml-module-qtquick-layouts (>= 5.15.2+dfsg~),
|
||||
# qml-module-qtquick-window2 (>= 5.15.2+dfsg~),
|
||||
# qml-module-qttest (>= 5.15.2+dfsg~),
|
||||
# qtbase5-dev (>= 5.15.2+dfsg~),
|
||||
# qtbase5-private-dev (>= 5.15.2+dfsg~),
|
||||
# qtdeclarative5-dev-tools (>= 5.15.2+dfsg~),
|
||||
# qtdeclarative5-private-dev (>= 5.15.2+dfsg~),
|
||||
# xauth <!nocheck>,
|
||||
# xvfb <!nocheck>,
|
||||
# =====
|
||||
# qtsvg
|
||||
# =====
|
||||
dbus,
|
||||
# debhelper-compat (= 13),
|
||||
# dpkg-dev (>= 1.17.14),
|
||||
# libqt5opengl5-dev (>= 5.15.2+dfsg~),
|
||||
# pkg-kde-tools (>= 0.15.17),
|
||||
# qtbase5-dev (>= 5.15.2+dfsg~),
|
||||
# qtbase5-private-dev (>= 5.15.2+dfsg~),
|
||||
# zlib1g-dev,
|
||||
# =======
|
||||
# qttools
|
||||
# =======
|
||||
# debhelper-compat (= 13),
|
||||
libclang-dev (>= 1:3.9~) [amd64 arm64 armel armhf hurd-i386 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsr6 mipsr6el powerpc ppc64 ppc64el riscv64 s390x sparc64],
|
||||
# libqt5opengl5-dev (>= 5.15.2+dfsg~),
|
||||
# libqt5sql5-sqlite (>= 5.15.2+dfsg~),
|
||||
# libqt5webkit5-dev (>= 5.212.0~alpha4-8~) [alpha amd64 arm64 armel armhf i386 mips64el mipsel ppc64 ppc64el riscv64 s390x sh4 x32],
|
||||
llvm-dev (>= 1:3.9~) [amd64 arm64 armel armhf hurd-i386 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsr6 mipsr6el powerpc ppc64 ppc64el riscv64 s390x sparc64],
|
||||
# pkg-kde-tools,
|
||||
# qtbase5-private-dev (>= 5.15.2+dfsg~),
|
||||
# qtdeclarative5-private-dev (>= 5.15.2+dfsg~),
|
||||
# zlib1g-dev,
|
||||
# =========
|
||||
# qtwayland
|
||||
# =========
|
||||
# dbus <!nocheck>,
|
||||
# debhelper-compat (= 13),
|
||||
# dpkg-dev (>= 1.17.14),
|
||||
libegl1-mesa-dev,
|
||||
libfontconfig1-dev,
|
||||
# libglib2.0-dev,
|
||||
# libinput-dev,
|
||||
# libmtdev-dev [linux-any],
|
||||
# libudev-dev [linux-any],
|
||||
libwayland-dev (>= 1.8.0),
|
||||
libwayland-egl1-mesa | libwayland-egl1,
|
||||
libxcomposite-dev,
|
||||
# libxkbcommon-dev (>= 0.2.0),
|
||||
# libxrender-dev,
|
||||
# pkg-config,
|
||||
# pkg-kde-tools,
|
||||
# qtbase5-dev (>= 5.15.2+dfsg~),
|
||||
# qtbase5-dev:native (>= 5.15.2+dfsg~),
|
||||
# qtbase5-private-dev (>= 5.15.2+dfsg~),
|
||||
# qtdeclarative5-private-dev (>= 5.15.2+dfsg~),
|
||||
# xauth <!nocheck>,
|
||||
# xvfb <!nocheck>,
|
||||
# ============
|
||||
# qtwebchannel
|
||||
# ============
|
||||
# debhelper-compat (= 13),
|
||||
# libqt5websockets5-dev (>= 5.15.2~),
|
||||
# pkg-kde-tools,
|
||||
# qml-module-qttest (>= 5.15.2+dfsg~),
|
||||
# qtbase5-dev (>= 5.15.2+dfsg~),
|
||||
# qtbase5-private-dev (>= 5.15.2+dfsg~),
|
||||
# qtdeclarative5-dev (>= 5.15.2+dfsg~),
|
||||
# ===========
|
||||
# qtwebengine
|
||||
# ===========
|
||||
# binutils (>= 2.32-8~),
|
||||
binutils,
|
||||
bison,
|
||||
chrpath,
|
||||
closure-compiler,
|
||||
# debhelper-compat (= 13),
|
||||
flex,
|
||||
gperf,
|
||||
khronos-api,
|
||||
# libasound2-dev [linux-any],
|
||||
libavcodec-dev (>= 7:3.4.8~),
|
||||
libavformat-dev (>= 7:3.4.8~),
|
||||
libavutil-dev (>= 7:3.4.8~),
|
||||
libcap-dev [linux-any],
|
||||
# libdbus-1-dev,
|
||||
# libegl1-mesa-dev,
|
||||
libevent-dev,
|
||||
libflac-dev,
|
||||
# libfontconfig1-dev,
|
||||
# libgl-dev (>= 1.3) [!armel !armhf],
|
||||
# libgl1-mesa-dri,
|
||||
# libgles-dev [armel armhf],
|
||||
# libglib2.0-dev,
|
||||
libglu1-mesa-dev [!armel !armhf] | libglu-dev [!armel !armhf],
|
||||
# libgstreamer-plugins-base1.0-dev,
|
||||
# libgstreamer1.0-dev,
|
||||
# libharfbuzz-dev,
|
||||
# libicu-dev (>= 64~),
|
||||
# libjpeg-dev,
|
||||
libjsoncpp-dev,
|
||||
liblcms2-dev,
|
||||
libminizip-dev,
|
||||
libnss3-dev,
|
||||
# libopus-dev (>= 1.3.1),
|
||||
libopus-dev,
|
||||
libpci-dev,
|
||||
# libpng-dev,
|
||||
libprotobuf-dev,
|
||||
# libpulse-dev,
|
||||
# libqt5opengl5-dev (>= 5.15.2+dfsg~),
|
||||
# libqt5svg5-dev (>= 5.15.2~),
|
||||
# libqt5webchannel5-dev (>= 5.15.2~),
|
||||
libre2-dev,
|
||||
libsnappy-dev,
|
||||
# libsqlite3-dev,
|
||||
libusb-1.0-0-dev,
|
||||
# libvpx-dev (>= 1.8),
|
||||
libvpx-dev,
|
||||
libwebp-dev,
|
||||
# libx11-xcb-dev,
|
||||
libxcb-dri3-dev,
|
||||
# libxcomposite-dev,
|
||||
libxcursor-dev,
|
||||
libxdamage-dev,
|
||||
libxml2-dev,
|
||||
libxnvctrl-dev,
|
||||
libxrandr-dev,
|
||||
# libxrender-dev,
|
||||
libxslt1-dev,
|
||||
libxss-dev,
|
||||
libxtst-dev,
|
||||
mesa-common-dev,
|
||||
ninja-build,
|
||||
nodejs (>= 10.19),
|
||||
# pkg-config,
|
||||
# pkg-kde-tools,
|
||||
protobuf-compiler,
|
||||
python2 | python,
|
||||
# qtbase5-dev (>= 5.15.2+dfsg~),
|
||||
# qtbase5-private-dev (>= 5.15.2+dfsg~),
|
||||
# qtdeclarative5-private-dev (>= 5.15.2+dfsg~),
|
||||
# qtpositioning5-dev (>= 5.15.2+dfsg~),
|
||||
# qtquickcontrols2-5-dev (>= 5.15.2+dfsg~),
|
||||
# qttools5-dev (>= 5.15.2~),
|
||||
re2c,
|
||||
ruby,
|
||||
# xauth,
|
||||
# xvfb,
|
||||
yasm [amd64 i386],
|
||||
yui-compressor,
|
||||
# =======================================
|
||||
# qtwebkit (currently mainly for qttools)
|
||||
# =======================================
|
||||
# bison,
|
||||
cmake (>= 2.8.12),
|
||||
# debhelper-compat (= 13),
|
||||
# flex,
|
||||
# gperf,
|
||||
# libfontconfig1-dev,
|
||||
libgl1-mesa-dev [!armel !armhf] | libgl-dev [!armel !armhf],
|
||||
libgles2-mesa-dev [armel armhf] | libgles2-dev [armel armhf],
|
||||
# libglib2.0-dev,
|
||||
# libglu1-mesa-dev [!armel !armhf] | libglu-dev [!armel !armhf],
|
||||
# libgstreamer-plugins-base1.0-dev,
|
||||
# libgstreamer1.0-dev,
|
||||
libhyphen-dev,
|
||||
# libicu-dev,
|
||||
# libjpeg-dev,
|
||||
# libpng-dev,
|
||||
# libqt5opengl5-dev (>= 5.15.2+dfsg~),
|
||||
# libqt5sensors5-dev (>= 5.15.2~),
|
||||
# libqt5webchannel5-dev (>= 5.15.2~),
|
||||
# libsqlite3-dev,
|
||||
# libwebp-dev,
|
||||
libwoff-dev,
|
||||
libclang-dev,
|
||||
gperf,
|
||||
x11-utils,
|
||||
# libxcomposite-dev,
|
||||
# libxml2-dev,
|
||||
# libxrender-dev,
|
||||
# libxslt1-dev,
|
||||
# ninja-build,
|
||||
# pkg-config,
|
||||
# pkg-kde-tools (>= 0.6.4),
|
||||
# python3:native,
|
||||
# qtbase5-private-dev (>= 5.15.2+dfsg~),
|
||||
# qtdeclarative5-private-dev (>= 5.15.2+dfsg~),
|
||||
# qtpositioning5-dev (>= 5.15.2+dfsg~),
|
||||
# ruby:native,
|
||||
# xauth <!nocheck>,
|
||||
# xvfb <!nocheck>,
|
||||
# ===============================
|
||||
# qtwebsockets (for qtwebchannel)
|
||||
# ===============================
|
||||
# debhelper-compat (= 13),
|
||||
# pkg-kde-tools,
|
||||
# qml-module-qtquick2 (>= 5.15.2+dfsg~),
|
||||
# qml-module-qttest (>= 5.15.2+dfsg~),
|
||||
# qtbase5-private-dev (>= 5.15.2+dfsg~),
|
||||
# qtdeclarative5-dev (>= 5.15.2+dfsg~),
|
||||
# qtdeclarative5-private-dev (>= 5.15.2+dfsg~),
|
||||
# xauth,
|
||||
# xvfb,
|
||||
|
||||
|
||||
Package: libqt-jami
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||
Description: Custom build of Qt framework used by the Jami Qt client.
|
8
extras/packaging/gnu-linux/rules/debian-qt/libqt-jami-env.sh
Executable file
8
extras/packaging/gnu-linux/rules/debian-qt/libqt-jami-env.sh
Executable file
|
@ -0,0 +1,8 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
QT_JAMI_PREFIX=/usr/lib/libqt-jami
|
||||
|
||||
export PATH="${QT_JAMI_PREFIX}/bin:${PATH}"
|
||||
export LD_LIBRARY_PATH="${QT_JAMI_PREFIX}/lib:${LD_LIBRARY_PATH}"
|
||||
export PKG_CONFIG_PATH="${QT_JAMI_PREFIX}/lib/pkgconfig:${PKG_CONFIG_PATH}"
|
||||
export CMAKE_PREFIX_PATH="${QT_JAMI_PREFIX}/lib/cmake:${CMAKE_PREFIX_PATH}"
|
|
@ -0,0 +1,2 @@
|
|||
usr/lib/libqt-jami
|
||||
debian/libqt-jami-env.sh usr/lib/libqt-jami/bin/
|
|
@ -0,0 +1,59 @@
|
|||
Subject: [PATCH] Fix fatal error in getCurrentKeyboardLayout()
|
||||
|
||||
FATAL:xkb_keyboard_layout_engine.cc(640)] Keymap file failed to load: dk(polytonic)
|
||||
|
||||
Remove unnecessary tokenization of XKB layout.
|
||||
Parsing of layout configuration is already handled by
|
||||
XkbKeyboardLayoutEngine::ParseLayoutName().
|
||||
|
||||
Fixes: QTBUG-101201
|
||||
Task-number: QTBUG-92971
|
||||
Pick-to: 6.2 6.3
|
||||
Change-Id: Ia4f09ed99eb82064a3b12e14eda69a6e0e12b0dd
|
||||
Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
|
||||
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
|
||||
---
|
||||
.../src/core/ozone/ozone_platform_qt.cpp | 24 ++++---------------
|
||||
1 file changed, 5 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/qtwebengine/src/core/ozone/ozone_platform_qt.cpp b/qtwebengine/src/core/ozone/ozone_platform_qt.cpp
|
||||
index 33d7bd992b..543e4bd371 100644
|
||||
--- a/qtwebengine/src/core/ozone/ozone_platform_qt.cpp
|
||||
+++ b/qtwebengine/src/core/ozone/ozone_platform_qt.cpp
|
||||
@@ -184,29 +184,15 @@ static std::string getCurrentKeyboardLayout()
|
||||
if (XkbRF_GetNamesProp(dpy, nullptr, &vdr) == 0)
|
||||
return std::string();
|
||||
|
||||
- char *layout = strtok(vdr.layout, ",");
|
||||
- for (int i = 0; i < state.group; i++) {
|
||||
- layout = strtok(nullptr, ",");
|
||||
- if (layout == nullptr)
|
||||
- return std::string();
|
||||
- }
|
||||
+ if (!vdr.layout)
|
||||
+ return std::string();
|
||||
|
||||
if (!vdr.variant)
|
||||
- return layout;
|
||||
-
|
||||
- char *variant = strtok(vdr.variant, ",");
|
||||
- if (!variant)
|
||||
- return layout;
|
||||
-
|
||||
- for (int i = 0; i < state.group; i++) {
|
||||
- variant = strtok(nullptr, ",");
|
||||
- if (variant == nullptr)
|
||||
- return layout;
|
||||
- }
|
||||
+ return std::string(vdr.layout);
|
||||
|
||||
- std::string layoutWithVariant = layout;
|
||||
+ std::string layoutWithVariant = vdr.layout;
|
||||
layoutWithVariant = layoutWithVariant.append("-");
|
||||
- layoutWithVariant = layoutWithVariant.append(variant);
|
||||
+ layoutWithVariant = layoutWithVariant.append(vdr.variant);
|
||||
return layoutWithVariant;
|
||||
}
|
||||
#endif // BUILDFLAG(USE_XKBCOMMON)
|
||||
--
|
||||
2.35.3
|
|
@ -0,0 +1 @@
|
|||
0001-qtbug-101201-fatal-error-getcurrenkeyboard.patch
|
33
extras/packaging/gnu-linux/rules/debian-qt/rules
Executable file
33
extras/packaging/gnu-linux/rules/debian-qt/rules
Executable file
|
@ -0,0 +1,33 @@
|
|||
#!/usr/bin/make -f
|
||||
# -*- makefile -*-
|
||||
|
||||
# export DH_VERBOSE = 1
|
||||
|
||||
%:
|
||||
dh $@
|
||||
|
||||
override_dh_auto_configure:
|
||||
# Qt 6.2 build for gcc 8
|
||||
sed -i 's,->GetProperty({,->GetProperty(GetPropertyRequest{,g' qtwebengine/src/3rdparty/chromium/ui/gfx/x/property_cache.cc
|
||||
sed -i 's/max(),/max()/g' qtwebengine/src/3rdparty/chromium/ui/gfx/x/property_cache.cc
|
||||
sed -i 's,PresentPixmap({,PresentPixmap(x11::Present::PresentPixmapRequest{,g' qtwebengine/src/3rdparty/chromium/components/viz/service/display_embedder/output_presenter_x11.cc
|
||||
sed -i 's/last_target_msc_,/last_target_msc_/g' qtwebengine/src/3rdparty/chromium/components/viz/service/display_embedder/output_presenter_x11.cc
|
||||
# Avoid MakeFlatSet
|
||||
sed -i 's,const auto& GetNeverSniffedMimeTypes,/*const auto& GetNeverSniffedMimeTypes{,g' qtwebengine/src/3rdparty/chromium/services/network/public/cpp/cross_origin_read_blocking.cc
|
||||
sed -i '1,/\/\/ static/{s/\/\/ static/*\/\}\/\/ static/;}' qtwebengine/src/3rdparty/chromium/services/network/public/cpp/cross_origin_read_blocking.cc
|
||||
cp qtwebengine/src/3rdparty/chromium/services/network/public/cpp/cross_origin_read_blocking.cc temp
|
||||
tac temp | sed '1,/return MimeType::kOthers/{s/return MimeType::kOthers/*\/return MimeType::kOthers/;}' | tac > qtwebengine/src/3rdparty/chromium/services/network/public/cpp/cross_origin_read_blocking.cc
|
||||
rm temp -f
|
||||
sed -i 's,if (base::Contains,/*if (base::Contains,g' qtwebengine/src/3rdparty/chromium/services/network/public/cpp/cross_origin_read_blocking.cc
|
||||
CXXFLAGS="-flto -flto-partition=none" CFLAGS="-flto -flto-partition=none" ./configure \
|
||||
-opensource \
|
||||
-confirm-license \
|
||||
-nomake examples \
|
||||
-nomake tests \
|
||||
-prefix "${QT_JAMI_PREFIX}"
|
||||
|
||||
override_dh_auto_build:
|
||||
cmake --build . --parallel
|
||||
|
||||
override_dh_auto_install:
|
||||
cmake --install . --prefix $(CURDIR)/debian/tmp/${QT_JAMI_PREFIX}
|
1
extras/packaging/gnu-linux/rules/debian-qt/source/format
Normal file
1
extras/packaging/gnu-linux/rules/debian-qt/source/format
Normal file
|
@ -0,0 +1 @@
|
|||
3.0 (quilt)
|
35
extras/packaging/gnu-linux/rules/debian/README.Debian
Normal file
35
extras/packaging/gnu-linux/rules/debian/README.Debian
Normal file
|
@ -0,0 +1,35 @@
|
|||
# Differences and compatibility with official debian.org package
|
||||
|
||||
This source package also provides binary package jami-all. jami-all is an
|
||||
all-in-one package that is it ships both the Jami Daemon and the GNOME
|
||||
client. This package is not available in the debian.org repositories (not
|
||||
needed in the Debian case).
|
||||
|
||||
jami-all allows easy installation of Jami as a single package from jami.net.
|
||||
The reason is that one cannot register a repository in source.list.d and
|
||||
directly use it to fetch the dependencies. As a consequence it is not
|
||||
possible to have a one-click installation with two binary packages. That's
|
||||
why we build jami-all.
|
||||
|
||||
jami-all conflicts with jami and jami-daemon since they are distributing the
|
||||
same files.
|
||||
|
||||
# Notes
|
||||
|
||||
## Importing a new version
|
||||
|
||||
1- Prepare the new changelog entry mentioning the new version.
|
||||
(the version on the changelog will be used to determine what to download).
|
||||
Releases are available here: https://dl.jami.net/release/tarballs/
|
||||
|
||||
2- Run debian/rules get-orig-source
|
||||
|
||||
3- Import the tarball with gbp import-orig <tarball>
|
||||
|
||||
## tarballs-unpacked
|
||||
|
||||
We need those tarballs in tarballs-unpacked.
|
||||
The rest should be excluded.
|
||||
- msgpack-c-cpp-1.2.0.tar.gz
|
||||
- opendht-281b62dfd529a226e94d0da19e01acf07871a797.tar.gz
|
||||
- pjproject-2.4.5.tar.bz2
|
1
extras/packaging/gnu-linux/rules/debian/compat
Normal file
1
extras/packaging/gnu-linux/rules/debian/compat
Normal file
|
@ -0,0 +1 @@
|
|||
9
|
119
extras/packaging/gnu-linux/rules/debian/control
Normal file
119
extras/packaging/gnu-linux/rules/debian/control
Normal file
|
@ -0,0 +1,119 @@
|
|||
Source: jami
|
||||
Section: comm
|
||||
Priority: optional
|
||||
Maintainer: The Jami project <jami@gnu.org>
|
||||
Build-Depends: debhelper (>= 9),
|
||||
autoconf,
|
||||
automake,
|
||||
libtool,
|
||||
autotools-dev,
|
||||
# qt client
|
||||
libqt-jami,
|
||||
python3,
|
||||
libnm-dev,
|
||||
libnotify-dev,
|
||||
libqrencode-dev,
|
||||
libayatana-appindicator3-dev | libappindicator3-dev,
|
||||
# daemon
|
||||
libdbus-1-dev,
|
||||
libdbus-c++-dev,
|
||||
libupnp-dev,
|
||||
libgnutls28-dev,
|
||||
libpulse-dev,
|
||||
libasound2-dev,
|
||||
libexpat1-dev,
|
||||
libpcre3-dev,
|
||||
libyaml-cpp-dev,
|
||||
libboost-dev,
|
||||
libxext-dev,
|
||||
libxfixes-dev,
|
||||
libspeex-dev,
|
||||
libspeexdsp-dev,
|
||||
uuid-dev,
|
||||
libavcodec-dev,
|
||||
libavutil-dev,
|
||||
libavformat-dev,
|
||||
libswscale-dev,
|
||||
libavdevice-dev,
|
||||
libopus-dev,
|
||||
libudev-dev,
|
||||
libgsm1-dev,
|
||||
libjsoncpp-dev,
|
||||
libnatpmp-dev,
|
||||
libva-dev,
|
||||
libcrypto++-dev,
|
||||
libvdpau-dev,
|
||||
libssl-dev,
|
||||
libargon2-dev | libargon2-0-dev,
|
||||
# other
|
||||
nasm,
|
||||
yasm,
|
||||
Standards-Version: 4.1.5
|
||||
Homepage: https://jami.net
|
||||
Vcs-Git: https://git.jami.net/savoirfairelinux/jami-client-qt.git
|
||||
Vcs-Browser: https://git.jami.net/savoirfairelinux/jami-client-qt
|
||||
|
||||
# The jami-all package is used as the "one-click install" package
|
||||
# offered on the Jami website. The following relationships ensure
|
||||
# that installing the jami-all package replaces version of the other
|
||||
# individual Jami packages. This is so that users can fix any
|
||||
# installation problem on their side by simply reinstalling as per the
|
||||
# website instructions.
|
||||
#
|
||||
Package: jami-all
|
||||
Architecture: any
|
||||
Depends: gnupg,
|
||||
${shlibs:Depends},
|
||||
${misc:Depends}
|
||||
Replaces: jami,
|
||||
jami-libclient,
|
||||
jami-daemon,
|
||||
libqt-jami (>= 6.2.3),
|
||||
Conflicts: jami,
|
||||
jami-libclient,
|
||||
jami-libclient-gnome,
|
||||
jami-daemon,
|
||||
jami-gnome,
|
||||
libqt-jami
|
||||
Description: One-click install package for Jami
|
||||
This package only exists to provide an easy installation user experience.
|
||||
To install the default client, install the 'jami' package.
|
||||
|
||||
Package: jami
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends},
|
||||
${misc:Depends},
|
||||
jami-daemon (=${binary:Version}),
|
||||
libqt-jami (>= 6.2.3)
|
||||
Provides: jami-qt
|
||||
Replaces: jami-all,
|
||||
jami-libclient (<= 20220516.0214.9b42ad3~dfsg1-1)
|
||||
Breaks: jami-libclient (<= 20220516.0214.9b42ad3~dfsg1-1)
|
||||
Conflicts: jami-all
|
||||
Description: Secure and distributed voice, video and chat platform - desktop client
|
||||
Jami (jami.net) 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 jami-qt desktop client.
|
||||
|
||||
# Made into a transitional package on 2022-06-21, after libjamiclient
|
||||
# was merged into src/libclient under jami-client-qt.git, to provide
|
||||
# an upgrade path to existing users. Feel free to remove this package
|
||||
# later into the future, some time after 2023-06-21 perhaps.
|
||||
Package: jami-libclient
|
||||
Architecture: any
|
||||
Description: transitional package for jami
|
||||
This is a transitional package. Jami libclient has been merged into
|
||||
the jami-qt client code-base, and this package can be safely removed.
|
||||
|
||||
Package: jami-daemon
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends},
|
||||
${misc:Depends}
|
||||
Description: Secure and distributed voice, video and chat platform - daemon
|
||||
Jami (jami.net) 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 Jami daemon: jamid.
|
212
extras/packaging/gnu-linux/rules/debian/copyright
Normal file
212
extras/packaging/gnu-linux/rules/debian/copyright
Normal file
|
@ -0,0 +1,212 @@
|
|||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: jami
|
||||
Upstream-Contact: Alexandre Viau <alexandre.viau@savoirfairelinux.net>
|
||||
Source: https://dl.jami.net/release/tarballs/
|
||||
Files: *
|
||||
Copyright: 2004-2021 Savoir-faire Linux Inc.
|
||||
License: GPL-3+
|
||||
Comment: Upstream embeds everything that is needed to build Jami inside the release tarball.
|
||||
Everything that is already in Debian has been removed.
|
||||
.
|
||||
OpenDHT was kept and not packaged independently. OpenDHT was written for Jami and is a moving
|
||||
target. It is best to wait until it is more mature before packaging it separately.
|
||||
.
|
||||
Msgpack was kept because the version available in Debian is currently too old for Jami to build.
|
||||
The Debian version of Msgpack cannot be updated at the moment because of reverse dependencies which
|
||||
are not ready.
|
||||
.
|
||||
Pjproject was kept because it is heavily patched by Jami developers. None of the patches were merged
|
||||
upstream and Jami developers are still waiting for a reaction from Pjproject developers.
|
||||
See the relevant threads:
|
||||
- http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/2014-October/017905.html
|
||||
- http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/2015-January/018072.html
|
||||
- http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/2016-April/019196.html
|
||||
|
||||
#####################
|
||||
## Start of daemon ##
|
||||
#####################
|
||||
|
||||
Files: daemon/doc/dbus-api/tools/devhelp.xsl
|
||||
daemon/doc/dbus-api/tools/doc-generator.py
|
||||
daemon/doc/dbus-api/tools/doc-generator.xsl
|
||||
daemon/doc/dbus-api/tools/specparser.py
|
||||
Copyright: 2009 Collabora Ltd.
|
||||
License: LGPL-2.1+
|
||||
|
||||
Files: daemon/src/dlfcn.h
|
||||
daemon/src/dlfcn.c
|
||||
Copyright: 2007 Ramiro Polla
|
||||
License: LGPL-2.1+
|
||||
|
||||
Files: daemon/src/media/srtp.h
|
||||
daemon/src/media/srtp.c
|
||||
Copyright: 2012 Martin Storsjo
|
||||
License: LGPL-2.1+
|
||||
|
||||
Files: daemon/src/media/audio/opensl/audio_common.h
|
||||
daemon/src/media/audio/opensl/audio_player.cpp
|
||||
daemon/src/media/audio/opensl/audio_player.h
|
||||
daemon/src/media/audio/opensl/audio_recorder.cpp
|
||||
daemon/src/media/audio/opensl/audio_recorder.h
|
||||
daemon/src/media/audio/opensl/buf_manager.h
|
||||
Copyright: 2015 The Android Open Source Project
|
||||
2015-2019 Savoir-faire Linux Inc.
|
||||
License: Apache-2.0
|
||||
|
||||
Files: daemon/extras/tools/bootstrap
|
||||
Copyright: 2011 Rafaël Carré
|
||||
License: GPL-2+
|
||||
|
||||
Files: daemon/extras/tools/tools.mak
|
||||
daemon/contrib/src/main.mak
|
||||
Copyright: 2003-2011 the VideoLAN team
|
||||
License: GPL-2+
|
||||
|
||||
Files: daemon/m4/ax_cxx_compile_stdcxx.m4
|
||||
daemon/m4/dolt.m4
|
||||
Copyright: 2008 Benjamin Kosnik <bkoz@redhat.com>
|
||||
2012 Zack Weinberg <zackw@panix.com>
|
||||
2013 Roy Stogner <roystgnr@ices.utexas.edu>
|
||||
2014-2015 Google Inc.
|
||||
2015 Paul Norman <penorman@mac.com>
|
||||
2015 Moritz Klammler <moritz@klammler.eu>
|
||||
2007-2010 Josh Triplett <josh@joshtriplett.org>
|
||||
License: GNUAllPermissive
|
||||
|
||||
Files: daemon/tools/jamidctrl/sippwrap.py
|
||||
daemon/tools/jamidctrl/test_jamid_dbus_interface.py
|
||||
Copyright: 2012 Free Software Foundation, Inc.
|
||||
License: GPL-2+
|
||||
|
||||
Files: daemon/tools/cpplint.py3
|
||||
Copyright: 2009 Google Inc.
|
||||
License: BSD-3-Clause
|
||||
|
||||
###################
|
||||
## End of daemon ##
|
||||
###################
|
||||
|
||||
##################
|
||||
## Start of lrc ##
|
||||
##################
|
||||
|
||||
Files: lrc/*
|
||||
Copyright: 2009-2019 by Savoir-faire Linux
|
||||
License: LGPL-2.1+
|
||||
|
||||
################
|
||||
## End of lrc ##
|
||||
################
|
||||
|
||||
|
||||
License: GPL-3+
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
․
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
․
|
||||
The complete text of the GNU General Public License version 3
|
||||
can be found in `/usr/share/common-licenses/GPL-3`.
|
||||
|
||||
License: GPL-2+
|
||||
This package is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
Foundation; either version 2 of the License, or (at your option) any later
|
||||
version.
|
||||
.
|
||||
This package is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
details.
|
||||
.
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
this program. If not, see http://www.gnu.org/licenses/
|
||||
.
|
||||
On Debian systems, the complete text of the GNU General Public License version
|
||||
2 can be found in "/usr/share/common-licenses/GPL-2".
|
||||
|
||||
License: Expat
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
.
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
License: LGPL-2.1+
|
||||
This library is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as
|
||||
published by the Free Software Foundation; either version 2.1 of the
|
||||
License, or (at your option) any later version.
|
||||
.
|
||||
See /usr/share/common-licenses/LGPL-2.1 for the full license text.
|
||||
|
||||
License: BSD-3-Clause
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
.
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
.
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
License: Apache-2.0
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
.
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
.
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
.
|
||||
The complete text of the Apache version 2.0 license
|
||||
can be found in "/usr/share/common-licenses/Apache-2.0".
|
||||
|
||||
License: GNUAllPermissive
|
||||
Copying and distribution of this file, with or without modification, are
|
||||
permitted in any medium without royalty provided the copyright notice
|
||||
and this notice are preserved. This file is offered as-is, without any
|
||||
warranty.
|
||||
|
||||
License: LGPL-2+
|
||||
This library is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
.
|
||||
See /usr/share/common-licenses/LGPL-2 for the full license text.
|
|
@ -0,0 +1,3 @@
|
|||
# We are shipping a .so, but this isn't a library package
|
||||
package-name-doesnt-match-sonames
|
||||
no-symbols-control-file
|
|
@ -0,0 +1 @@
|
|||
daemon/jamid.1
|
168
extras/packaging/gnu-linux/rules/debian/jami-all.postinst
Executable file
168
extras/packaging/gnu-linux/rules/debian/jami-all.postinst
Executable file
|
@ -0,0 +1,168 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
###############################################################################
|
||||
# JAMI PACKAGE POSTINST #
|
||||
# #
|
||||
# Install Jami's package repository to the trusted sources and add Jami's #
|
||||
# release key to trusted keyring. #
|
||||
# #
|
||||
# NOTE: We follow https://wiki.debian.org/DebianRepository/UseThirdParty #
|
||||
###############################################################################
|
||||
|
||||
|
||||
###############################################################################
|
||||
# [1] Configuration #
|
||||
###############################################################################
|
||||
|
||||
# All 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:
|
||||
# $JAMI_REPO = $JAMI_REPO_BASE/ubuntu_18.04/
|
||||
#
|
||||
# Debian 10:
|
||||
# $JAMI_REPO = $JAMI_REPO_BASE/debian_10
|
||||
#
|
||||
# To update the appended end tags, modify the switch in [2].
|
||||
JAMI_REPO_BASE="https://dl.jami.net/nightly"
|
||||
|
||||
# Jami release key.
|
||||
JAMI_KEY_FINGERPRINT="A295D773307D25A33AE72F2F64CD5FA175348F84"
|
||||
JAMI_KEY="\
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v2
|
||||
|
||||
mQENBFVSdlcBCAC9zC1rp12O2K08PGozI14Y+t4qC931eHicvkuEMF1B9gAhjdRF
|
||||
aIJS+UXwgQzoamDIHenxz1Q3fXUjKCMXytjGymB/0LUKccSbtH0Rcsl8kZ2z57KN
|
||||
E+GLS7SvlP93ZOxco7eAEBWF/fvMrCsm10sNI6bW7UK0bgql9iIetd6Wrp9xXFVs
|
||||
gmoV8Av714OlswsthSNtN+xQls3ozQ/dVGsOkZEyDbBzi88/rQEtuIDztTSWyD0V
|
||||
x7WaY5+mVRwsJKzyPlgvsXpbP7A41IFykeOzPKh+vYz3k7dcLIRdOwse79oT2RXt
|
||||
2VYEyTyTZIQlCJjGNTJYsU7GVffU4LnI7p/bABEBAAG0QFJpbmcgLSBTYXZvaXIt
|
||||
RmFpcmUgTGludXgsIEluYyA8cmluZ0BsaXN0cy5zYXZvaXJmYWlyZWxpbnV4Lm5l
|
||||
dD6JATkEEwEIACMFAlVSdlcCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAK
|
||||
CRBkzV+hdTSPhMqSB/9aaKXVByoE7zwPM8DDSntS/jYhhaV1CcZ78WeC1LY2UnHL
|
||||
R/yvABnDMikgqbMHBDu1R9dnjgZNntp7p0blxcT6ScxdZ6FpMZG6ZW5YNZIVctnF
|
||||
jdExStcdpcbbycW8GeCmQdVcKLBl8G55mick02ayVNOH5ETtWahPwBvMWk5hSaH3
|
||||
E18yvnmdqa9nCEST4UKvBOpmn58mwJDIR2YLdEFcL8z4FkxQUNkx/hiHSn+YLorZ
|
||||
H3iBrf9y9vSYhQ5pxx7seWkoaGAQBgfktRCUKvVY6E1oSZ/WR1WsR1ftDO/RD0E8
|
||||
APKzibVynUEQrCcQX16uDOa/YgavVkts9HmR7Vf7iQEcBBABCAAGBQJVUoJZAAoJ
|
||||
EFZ3uE+o8K8j0RkH/2sv4L3X0hPIwAzf3CUJZQuHihUOPRAoru5RqW/5nWqsroa1
|
||||
WChJq79uDEecDAizTA1MvaTFmLxTjCkJso+5UHMSHi6LARvYXSOeBPFizEJT4qZZ
|
||||
CXti5zh9d5z1u6L986mrnArA39IZ2F+9wV2q0VIDnq1Tt6+cJ745zSeZmbM6jip4
|
||||
oEBsKbCkAhq78sqCc7DIilsGbd2tgrLsh3fitvamEJCTCYKdDMog3TP0+EekQTA2
|
||||
Qp4jG0Uf7Gg1YvDDcsawXyNDrMBXEFPVhBNnRisX+YQBRWgDE58+fpsQfeTkblL5
|
||||
UaLWhDGlyfAc1ebL3InzhUWJswjt0BN3GPoP55m5AQ0EVVJ2VwEIAMXhg0w1IM0C
|
||||
rGXMGayaJ3EWd9YXkqq0sAN7b75tD0cOimyPNafnzChG9//3tt82aPRm8fG5Lk5U
|
||||
fwCS2MSt2Ml8UZeujmEBnvU9hsJBWcGgzXhtBQwZqzmV2vQg8436nTFY5L24TFBc
|
||||
QNOUJNzSy/dqps0SxcYleE57o24KHlW6ICBaEhz0JoZHv5+7GtYz6XN2D7pkwTPY
|
||||
UIahyt4dY3geFrkuMzZdTS4qyFb8EE/Ypi/WgewO9ib53kt7FBrxmm0l+d9GR4jH
|
||||
CKGqaYjm8xzTsNa3m2C0Cf/C13bOaQVicgntfQ32IjjZdaDMlRLQluYNQ0ETA1FE
|
||||
9+EVvrQYZ+kAEQEAAYkBHwQYAQgACQUCVVJ2VwIbDAAKCRBkzV+hdTSPhMIaB/9D
|
||||
CrIZBDy7YOK3gdnNm57jemJRz6Cum7RTUiqCQ8ivSmEgv1KmMIqMpjmnKKP43iHO
|
||||
mR4i7XDml6RBGynPys6cQcAlBWSuhOv9PGpRCaGyjJ4vmQUsYhyD/+tCDZVdBuGg
|
||||
CxteSMbawxtMHESqX7dDlctc+njDjBcbcGj73sj36qoFIjorjymZlT5IdK39oXVM
|
||||
Hi1TssiWPOU0hQgn4BIreYnEZUA6xuFX10C7k2DVRFZrXF7lpNgPQ8eNZTnQBIuw
|
||||
HUFCGSHO3/kzxSlkE1PBUX3IZ8PSFijyopBnWUhlSXuyRjte8OR7Fl/Rlf0IaOD1
|
||||
4sRdAfS333T4Uifq4uOu
|
||||
=s2aQ
|
||||
-----END PGP PUBLIC KEY BLOCK-----"
|
||||
|
||||
# System paths and generated variables
|
||||
APT_FILE="/etc/apt/sources.list.d/jami-main.list"
|
||||
UPDATE_MANAGER_PATH="/etc/update-manager/release-upgrades.d/"
|
||||
JAMI_UPDATE_MANAGER_ID="jami-main"
|
||||
|
||||
JAMI_UPDATE_MANAGER_CFG="${JAMI_UPDATE_MANAGER_ID}.cfg"
|
||||
UPDATE_MANAGER_CFG_PATH="${UPDATE_MANAGER_PATH}/${JAMI_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 Jami repository end tag
|
||||
if [ "${VERSION_CODENAME}" = "buster" ] || [ "${ID}_${VERSION_ID}" = "debian_10" ]; then
|
||||
ENDTAG="debian_10"
|
||||
elif [ "${VERSION_CODENAME}" = "bullseye" ] || [ "${ID}_${VERSION_ID}" = "debian_11" ]; then
|
||||
ENDTAG="debian_11"
|
||||
elif [ "${ID}_${VERSION_ID}" = "trisquel_9.0" ]; then
|
||||
ENDTAG="ubuntu_18.04"
|
||||
elif [ "${UBUNTU_CODENAME}" = "bionic" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_18.04" ]; then
|
||||
ENDTAG="ubuntu_18.04"
|
||||
elif [ "${UBUNTU_CODENAME}" = "focal" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_20.04" ]; then
|
||||
ENDTAG="ubuntu_20.04"
|
||||
elif [ "${UBUNTU_CODENAME}" = "jammy" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_22.04" ]; then
|
||||
ENDTAG="ubuntu_22.04"
|
||||
elif [ "${UBUNTU_CODENAME}" = "kinetic" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_22.10" ]; then
|
||||
ENDTAG="ubuntu_22.10"
|
||||
elif [ "${ID}" = "debian" ] && \
|
||||
[ "$(command -v lsb_release)" ] && \
|
||||
[ "$(lsb_release -rs)" = "testing" ]; then
|
||||
ENDTAG="debian_testing"
|
||||
elif [ "${ID}" = "debian" ] && \
|
||||
[ "$(command -v apt-cache)" ] && \
|
||||
[ "$(command -v grep)" ] && \
|
||||
apt-cache policy | grep -q "a=unstable" -; then
|
||||
ENDTAG="debian_unstable"
|
||||
else
|
||||
# Distribution is not supported. Don't provide automatic updates.
|
||||
CAN_ADD_DEB_SOURCE=false
|
||||
fi
|
||||
else
|
||||
CAN_ADD_DEB_SOURCE=false
|
||||
fi
|
||||
|
||||
|
||||
###############################################################################
|
||||
# [3] Maintainer script main switch #
|
||||
###############################################################################
|
||||
|
||||
case "$1" in
|
||||
configure)
|
||||
if [ "`command -v apt-key`" = "" ]; then
|
||||
# we can only add key if apt-key is present
|
||||
CAN_ADD_DEB_SOURCE=false
|
||||
fi
|
||||
|
||||
if [ "${CAN_ADD_DEB_SOURCE}" = "true" ]; then
|
||||
JAMI_REPO="${JAMI_REPO_BASE}/${ENDTAG}"
|
||||
|
||||
# We first add the key to the trusted keyring.
|
||||
apt-key add - > /dev/null 2>&1 << EOF
|
||||
$JAMI_KEY
|
||||
EOF
|
||||
|
||||
# Add an entry for the package repository to the trusted package
|
||||
# sources (DEB822 format)
|
||||
cat > $APT_FILE <<EOF
|
||||
deb ${JAMI_REPO} jami main
|
||||
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 ]
|
||||
then
|
||||
mkdir -p $UPDATE_MANAGER_PATH
|
||||
cat > $UPDATE_MANAGER_CFG_PATH <<EOF
|
||||
# Added by Jami to prevent disabling of Jami repository sources on
|
||||
# distribution release upgrade.
|
||||
[ThirdPartyMirrors]
|
||||
jami/${JAMI_UPDATE_MANAGER_ID}=${JAMI_REPO}
|
||||
EOF
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# exit with a zero status as everything went well, important for maintscripts
|
||||
exit 0
|
|
@ -0,0 +1 @@
|
|||
activate-noawait ldconfig
|
|
@ -0,0 +1 @@
|
|||
daemon/jamid.1
|
|
@ -0,0 +1,3 @@
|
|||
# We are shipping a .so, but this isn't a library package
|
||||
package-name-doesnt-match-sonames
|
||||
no-symbols-control-file
|
0
extras/packaging/gnu-linux/rules/debian/jami.manpages
Normal file
0
extras/packaging/gnu-linux/rules/debian/jami.manpages
Normal file
1
extras/packaging/gnu-linux/rules/debian/jami.triggers
Normal file
1
extras/packaging/gnu-linux/rules/debian/jami.triggers
Normal file
|
@ -0,0 +1 @@
|
|||
activate-noawait ldconfig
|
158
extras/packaging/gnu-linux/rules/debian/rules
Executable file
158
extras/packaging/gnu-linux/rules/debian/rules
Executable file
|
@ -0,0 +1,158 @@
|
|||
#!/usr/bin/make -f
|
||||
# -*- makefile -*-
|
||||
|
||||
# Hardening
|
||||
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
||||
DPKG_EXPORT_BUILDFLAGS = 1
|
||||
include /usr/share/dpkg/buildflags.mk
|
||||
|
||||
# Ubuntu defaults to use -Bsymbolic-functions, which breaks linking
|
||||
# shared objects with static FFmpeg archives (see:
|
||||
# https://bugs.launchpad.net/ubuntu/+source/ffmpeg/+bug/1942352).
|
||||
ifeq ($(shell dpkg-vendor --derives-from Ubuntu && echo yes),yes)
|
||||
ifneq (,$(LDFLAGS))
|
||||
LDFLAGS := $(filter-out %-Bsymbolic-functions,$(LDFLAGS))
|
||||
endif
|
||||
endif
|
||||
|
||||
# Number of CPUS
|
||||
NO_CPUS=$(shell nproc)
|
||||
ifeq ($(NO_CPUS),0)
|
||||
NO_CPUS=1
|
||||
endif
|
||||
|
||||
# Binary package names
|
||||
JAMI_ALL_IN_ONE_PKG_NAME="jami-all"
|
||||
JAMI_CLIENT_PKG_NAME="jami"
|
||||
JAMI_DAEMON_PKG_NAME="jami-daemon"
|
||||
|
||||
# Bundled packages from contrib
|
||||
BUNDLED_PKGS=""
|
||||
ifeq (debian_10,$(findstring debian_10, $(DISTRIBUTION)))
|
||||
# Daemon's bundled libarchive does not build on Debian 10
|
||||
BUNDLED_PKGS="--disable-libarchive"
|
||||
endif
|
||||
ifeq (ubuntu_18.04,$(findstring ubuntu_18.04, $(DISTRIBUTION)))
|
||||
# Daemon's bundled libarchive does not build on Ubuntu 18.04
|
||||
BUNDLED_PKGS="--disable-libarchive"
|
||||
endif
|
||||
ifeq (raspbian_10_armhf,$(findstring raspbian_10_armhf, $(DISTRIBUTION)))
|
||||
# Raspbian's yaml-cpp lib does not work properly
|
||||
BUNDLED_PKGS="--enable-ffmpeg --enable-yaml-cpp"
|
||||
# Add host environment variables
|
||||
CMAKE_OPTIONS=-DCHOST=${HOST_ARCH} \
|
||||
-DCMAKE_C_COMPILER=${HOST_ARCH}-gcc \
|
||||
-DCMAKE_CXX_COMPILER=${HOST_ARCH}-g++ \
|
||||
-DCMAKE_FIND_ROOT_PATH=/usr/${HOST_ARCH} \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DPKG_CONFIG_EXECUTABLE=/usr/bin/${HOST_ARCH}-pkg-config
|
||||
endif
|
||||
|
||||
# Qt-related variables
|
||||
QT_JAMI_PREFIX := ${QT_JAMI_PREFIX}
|
||||
export PATH := $(QT_JAMI_PREFIX)/bin:${PATH}
|
||||
export LD_LIBRARY_PATH := $(QT_JAMI_PREFIX)/lib:${LD_LIBRARY_PATH}
|
||||
export PKG_CONFIG_PATH := $(QT_JAMI_PREFIX)/lib/pkgconfig:${PKG_CONFIG_PATH}
|
||||
export CMAKE_PREFIX_PATH := $(QT_JAMI_PREFIX)/lib/cmake:${CMAKE_PREFIX_PATH}
|
||||
export CFLAGS := $(CFLAGS) -fno-lto
|
||||
export CXXFLAGS := $(CXXFLAGS) -fno-lto
|
||||
|
||||
# Installation directories.
|
||||
OCI_INSTALL_DIR = $(CURDIR)/debian/$(JAMI_ALL_IN_ONE_PKG_NAME)
|
||||
|
||||
%:
|
||||
dh $@
|
||||
|
||||
override_dh_auto_configure:
|
||||
|
||||
override_dh_auto_build:
|
||||
# Daemon contribs build + configure
|
||||
mkdir -p daemon/contrib/native
|
||||
ifeq (ubuntu_18.04,$(findstring ubuntu_18.04, $(DISTRIBUTION)))
|
||||
sed -i 's/GNUTLS_CONF :=/& --without-zstd/' daemon/contrib/src/gnutls/rules.mak
|
||||
endif
|
||||
cd daemon/contrib/native && \
|
||||
../bootstrap \
|
||||
--host=${HOST_ARCH} \
|
||||
--disable-downloads \
|
||||
--no-checksums \
|
||||
--disable-ogg \
|
||||
--disable-flac \
|
||||
--disable-vorbis \
|
||||
--disable-vorbisenc \
|
||||
--disable-speex \
|
||||
--disable-sndfile \
|
||||
--disable-gsm \
|
||||
--disable-speexdsp \
|
||||
--disable-natpmp \
|
||||
--enable-gnutls $(BUNDLED_PKGS) && \
|
||||
make list && \
|
||||
make -j$(NO_CPUS) V=1
|
||||
cd daemon && \
|
||||
./autogen.sh && \
|
||||
./configure \
|
||||
--prefix=/usr \
|
||||
--host=${HOST_ARCH}
|
||||
|
||||
# Daemon build
|
||||
make -C daemon -j$(NO_CPUS) V=1
|
||||
pod2man daemon/man/jamid.pod > daemon/jamid.1
|
||||
|
||||
# Qt client configure and build
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DLIBJAMI_BUILD_DIR=$(CURDIR)/daemon/src \
|
||||
-DENABLE_LIBWRAP=true \
|
||||
$(CMAKE_OPTIONS) ..
|
||||
make -C build -j$(NO_CPUS) V=1
|
||||
|
||||
override_dh_auto_clean:
|
||||
# Daemon clean
|
||||
[ -f daemon/contrib/native/Makefile ] && \
|
||||
make -C daemon/contrib/native distclean || true
|
||||
rm -rfv daemon/contrib/native
|
||||
rm -rfv daemon/jamid.1
|
||||
|
||||
# Qt client clean
|
||||
# CMake build system has no distclean target, so use clean.
|
||||
[ -f build/Makefile ] && make -C build clean || true
|
||||
rm -rfv build
|
||||
|
||||
override_dh_auto_install:
|
||||
# Daemon install
|
||||
cd daemon && make DESTDIR=$(CURDIR)/debian/$(JAMI_DAEMON_PKG_NAME) install
|
||||
rm -rfv $(CURDIR)/debian/$(JAMI_DAEMON_PKG_NAME)/usr/include
|
||||
rm -rfv $(CURDIR)/debian/$(JAMI_DAEMON_PKG_NAME)/usr/lib/*.a
|
||||
rm -rfv $(CURDIR)/debian/$(JAMI_DAEMON_PKG_NAME)/usr/lib/*.la
|
||||
|
||||
# Qt client install
|
||||
cd build && \
|
||||
make DESTDIR=$(CURDIR)/debian/$(JAMI_CLIENT_PKG_NAME) install
|
||||
|
||||
## Custom Qt package for Jami (libqt-jami)
|
||||
## Copy our own Qt library package content into the OCI package.
|
||||
for file_name in $$(dpkg-query -L libqt-jami); do \
|
||||
mkdir -p "$(OCI_INSTALL_DIR)$$(dirname $$file_name)"; \
|
||||
test -d "$$file_name" && continue; \
|
||||
cp "$$file_name" "$(OCI_INSTALL_DIR)$$file_name"; \
|
||||
done
|
||||
|
||||
# Jami all-in-one install
|
||||
# Daemon
|
||||
cd daemon && make DESTDIR=$(CURDIR)/debian/$(JAMI_ALL_IN_ONE_PKG_NAME) install
|
||||
rm -rfv $(CURDIR)/debian/$(JAMI_ALL_IN_ONE_PKG_NAME)/usr/include
|
||||
rm -rfv $(CURDIR)/debian/$(JAMI_ALL_IN_ONE_PKG_NAME)/usr/lib/*.a
|
||||
rm -rfv $(CURDIR)/debian/$(JAMI_ALL_IN_ONE_PKG_NAME)/usr/lib/*.la
|
||||
# Qt client
|
||||
cd build && \
|
||||
make DESTDIR=$(CURDIR)/debian/$(JAMI_ALL_IN_ONE_PKG_NAME) install
|
||||
|
||||
override_dh_shlibdeps:
|
||||
dh_shlibdeps -- -x$(JAMI_ALL_IN_ONE_PKG_NAME)
|
||||
|
||||
tmpdir:= $(shell mktemp -d)
|
||||
workdir:= $(shell pwd)
|
||||
PKD := $(abspath $(dir $(MAKEFILE_LIST)))
|
||||
version_to_download := $(shell dpkg-parsechangelog -ldebian/changelog | perl -ne 'print $$1 if m{^Version:\s+(?:\d+:)?(\d.*)(?:\~dfsg.+)(?:\-\d+.*)};')
|
1
extras/packaging/gnu-linux/rules/debian/source/format
Normal file
1
extras/packaging/gnu-linux/rules/debian/source/format
Normal file
|
@ -0,0 +1 @@
|
|||
3.0 (quilt)
|
3
extras/packaging/gnu-linux/rules/debian/watch
Normal file
3
extras/packaging/gnu-linux/rules/debian/watch
Normal file
|
@ -0,0 +1,3 @@
|
|||
version=3
|
||||
opts=dversionmangle=s/\~dfsg\d*$// \
|
||||
https://dl.jami.net/release/tarballs/ jami_(\d\S*)\.tar\.gz
|
133
extras/packaging/gnu-linux/rules/rpm/jami-all.postinst
Executable file
133
extras/packaging/gnu-linux/rules/rpm/jami-all.postinst
Executable file
|
@ -0,0 +1,133 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
|
||||
###############################################################################
|
||||
# JAMI PACKAGE POSTINST #
|
||||
# #
|
||||
# Install Jami's package repository to the trusted sources and add Jami's #
|
||||
# release key to trusted keyring. #
|
||||
# #
|
||||
###############################################################################
|
||||
|
||||
|
||||
###############################################################################
|
||||
# [1] Configuration #
|
||||
###############################################################################
|
||||
|
||||
JAMI_REPO_BASE="https://dl.jami.net/nightly"
|
||||
|
||||
# Jami release key.
|
||||
JAMI_KEY_FINGERPRINT="A295D773307D25A33AE72F2F64CD5FA175348F84"
|
||||
JAMI_KEY="\
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v2
|
||||
|
||||
mQENBFVSdlcBCAC9zC1rp12O2K08PGozI14Y+t4qC931eHicvkuEMF1B9gAhjdRF
|
||||
aIJS+UXwgQzoamDIHenxz1Q3fXUjKCMXytjGymB/0LUKccSbtH0Rcsl8kZ2z57KN
|
||||
E+GLS7SvlP93ZOxco7eAEBWF/fvMrCsm10sNI6bW7UK0bgql9iIetd6Wrp9xXFVs
|
||||
gmoV8Av714OlswsthSNtN+xQls3ozQ/dVGsOkZEyDbBzi88/rQEtuIDztTSWyD0V
|
||||
x7WaY5+mVRwsJKzyPlgvsXpbP7A41IFykeOzPKh+vYz3k7dcLIRdOwse79oT2RXt
|
||||
2VYEyTyTZIQlCJjGNTJYsU7GVffU4LnI7p/bABEBAAG0QFJpbmcgLSBTYXZvaXIt
|
||||
RmFpcmUgTGludXgsIEluYyA8cmluZ0BsaXN0cy5zYXZvaXJmYWlyZWxpbnV4Lm5l
|
||||
dD6JATkEEwEIACMFAlVSdlcCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAK
|
||||
CRBkzV+hdTSPhMqSB/9aaKXVByoE7zwPM8DDSntS/jYhhaV1CcZ78WeC1LY2UnHL
|
||||
R/yvABnDMikgqbMHBDu1R9dnjgZNntp7p0blxcT6ScxdZ6FpMZG6ZW5YNZIVctnF
|
||||
jdExStcdpcbbycW8GeCmQdVcKLBl8G55mick02ayVNOH5ETtWahPwBvMWk5hSaH3
|
||||
E18yvnmdqa9nCEST4UKvBOpmn58mwJDIR2YLdEFcL8z4FkxQUNkx/hiHSn+YLorZ
|
||||
H3iBrf9y9vSYhQ5pxx7seWkoaGAQBgfktRCUKvVY6E1oSZ/WR1WsR1ftDO/RD0E8
|
||||
APKzibVynUEQrCcQX16uDOa/YgavVkts9HmR7Vf7iQEcBBABCAAGBQJVUoJZAAoJ
|
||||
EFZ3uE+o8K8j0RkH/2sv4L3X0hPIwAzf3CUJZQuHihUOPRAoru5RqW/5nWqsroa1
|
||||
WChJq79uDEecDAizTA1MvaTFmLxTjCkJso+5UHMSHi6LARvYXSOeBPFizEJT4qZZ
|
||||
CXti5zh9d5z1u6L986mrnArA39IZ2F+9wV2q0VIDnq1Tt6+cJ745zSeZmbM6jip4
|
||||
oEBsKbCkAhq78sqCc7DIilsGbd2tgrLsh3fitvamEJCTCYKdDMog3TP0+EekQTA2
|
||||
Qp4jG0Uf7Gg1YvDDcsawXyNDrMBXEFPVhBNnRisX+YQBRWgDE58+fpsQfeTkblL5
|
||||
UaLWhDGlyfAc1ebL3InzhUWJswjt0BN3GPoP55m5AQ0EVVJ2VwEIAMXhg0w1IM0C
|
||||
rGXMGayaJ3EWd9YXkqq0sAN7b75tD0cOimyPNafnzChG9//3tt82aPRm8fG5Lk5U
|
||||
fwCS2MSt2Ml8UZeujmEBnvU9hsJBWcGgzXhtBQwZqzmV2vQg8436nTFY5L24TFBc
|
||||
QNOUJNzSy/dqps0SxcYleE57o24KHlW6ICBaEhz0JoZHv5+7GtYz6XN2D7pkwTPY
|
||||
UIahyt4dY3geFrkuMzZdTS4qyFb8EE/Ypi/WgewO9ib53kt7FBrxmm0l+d9GR4jH
|
||||
CKGqaYjm8xzTsNa3m2C0Cf/C13bOaQVicgntfQ32IjjZdaDMlRLQluYNQ0ETA1FE
|
||||
9+EVvrQYZ+kAEQEAAYkBHwQYAQgACQUCVVJ2VwIbDAAKCRBkzV+hdTSPhMIaB/9D
|
||||
CrIZBDy7YOK3gdnNm57jemJRz6Cum7RTUiqCQ8ivSmEgv1KmMIqMpjmnKKP43iHO
|
||||
mR4i7XDml6RBGynPys6cQcAlBWSuhOv9PGpRCaGyjJ4vmQUsYhyD/+tCDZVdBuGg
|
||||
CxteSMbawxtMHESqX7dDlctc+njDjBcbcGj73sj36qoFIjorjymZlT5IdK39oXVM
|
||||
Hi1TssiWPOU0hQgn4BIreYnEZUA6xuFX10C7k2DVRFZrXF7lpNgPQ8eNZTnQBIuw
|
||||
HUFCGSHO3/kzxSlkE1PBUX3IZ8PSFijyopBnWUhlSXuyRjte8OR7Fl/Rlf0IaOD1
|
||||
4sRdAfS333T4Uifq4uOu
|
||||
=s2aQ
|
||||
-----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
|
||||
REPO_FILE="/etc/yum.repos.d/jami-main.repo"
|
||||
GPG_FILE="/etc/pki/rpm-gpg/RPM-GPG-KEY-JAMI"
|
||||
|
||||
is_distribution_supported() {
|
||||
|
||||
# Detect currently running system using /etc/os-release
|
||||
# Redhat-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
|
||||
return 1
|
||||
fi
|
||||
|
||||
# This defines variables such as NAME, ID, VERSION_ID, etc.
|
||||
. /etc/os-release
|
||||
|
||||
case ${ID} in
|
||||
rhel*|fedora*|opensuse*)
|
||||
return 0
|
||||
esac
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
has_rpm() {
|
||||
command -v rpm > /dev/null
|
||||
}
|
||||
|
||||
is_opensuse() {
|
||||
case ${ID} in
|
||||
opensuse*)
|
||||
return 0
|
||||
esac
|
||||
return 1
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# [3] Maintainer script main switch #
|
||||
###############################################################################
|
||||
|
||||
# Exit unless the following conditions are met.
|
||||
is_distribution_supported && has_rpm || exit 0
|
||||
|
||||
# Note: the NAME and ID variables are set as a side-effect of sourcing
|
||||
# the /etc/os-release file in the above is_distribution_supported
|
||||
# call.
|
||||
|
||||
# SUSE specifics.
|
||||
if is_opensuse; then
|
||||
REPO_FILE=/etc/zypp/repos.d/jami-main.repo
|
||||
GPG_FILE="/tmp/RPM-GPG-KEY-JAMI"
|
||||
fi
|
||||
|
||||
# Add the key to the trusted keyring.
|
||||
echo "$JAMI_KEY" > "$GPG_FILE"
|
||||
rm -f /var/lib/rpm/.rpm.lock > /dev/null 2>&1
|
||||
rpm --import "$GPG_FILE" > /dev/null 2>&1
|
||||
|
||||
jami_repo_name="$DISTRIBUTION \$releasever - \$basearch - Jami"
|
||||
jami_repo_base_url="$JAMI_REPO_BASE/$ID_\$releasever"
|
||||
|
||||
# Add an entry for the package repository to the trusted package.
|
||||
cat > "$REPO_FILE" <<EOF
|
||||
[jami]
|
||||
name=$jami_repo_name
|
||||
baseurl=$jami_repo_base_url
|
||||
gpgcheck=1
|
||||
gpgkey=https://dl.jami.net/jami.pub.key
|
||||
enabled=1
|
||||
EOF
|
128
extras/packaging/gnu-linux/rules/rpm/jami-daemon.spec
Normal file
128
extras/packaging/gnu-linux/rules/rpm/jami-daemon.spec
Normal file
|
@ -0,0 +1,128 @@
|
|||
%define name jami-daemon
|
||||
%define version RELEASE_VERSION
|
||||
%define release 0
|
||||
|
||||
Name: %{name}
|
||||
Version: %{version}
|
||||
Release: %{release}%{?dist}
|
||||
Summary: Daemon component of Jami
|
||||
Group: Applications/Internet
|
||||
License: GPLv3+
|
||||
Vendor: Savoir-faire Linux
|
||||
URL: https://jami.net/
|
||||
Source: jami_%{version}.tar.gz
|
||||
Requires: jami-daemon = %{version}
|
||||
|
||||
# Build dependencies
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: automake
|
||||
BuildRequires: gettext-devel
|
||||
BuildRequires: libtool
|
||||
BuildRequires: make
|
||||
BuildRequires: which
|
||||
BuildRequires: yasm
|
||||
|
||||
# Build and runtime dependencies. Requires directives are
|
||||
# automatically made to linked shared libraries via RPM, so there's no
|
||||
# need to explicitly relist them.
|
||||
%if 0%{?fedora} >= 32
|
||||
BuildRequires: NetworkManager-libnm-devel
|
||||
BuildRequires: cmake
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: dbus-devel
|
||||
BuildRequires: expat-devel
|
||||
BuildRequires: opus-devel
|
||||
BuildRequires: pulseaudio-libs-devel
|
||||
%endif
|
||||
%if %{defined suse_version}
|
||||
BuildRequires: libdbus-c++-devel
|
||||
BuildRequires: libexpat-devel
|
||||
BuildRequires: libopus-devel
|
||||
BuildRequires: libpulse-devel
|
||||
%else
|
||||
BuildRequires: gnutls-devel
|
||||
%endif
|
||||
BuildRequires: alsa-lib-devel
|
||||
BuildRequires: jsoncpp-devel
|
||||
BuildRequires: libXext-devel
|
||||
BuildRequires: libXfixes-devel
|
||||
BuildRequires: libuuid-devel
|
||||
BuildRequires: libva-devel
|
||||
BuildRequires: libvdpau-devel
|
||||
BuildRequires: pcre-devel
|
||||
BuildRequires: uuid-devel
|
||||
BuildRequires: yaml-cpp-devel
|
||||
|
||||
%description
|
||||
This package contains the daemon of Jami, a free software for
|
||||
universal communication which respects the freedoms and privacy of its
|
||||
users.
|
||||
|
||||
%prep
|
||||
%setup -n client-qt
|
||||
|
||||
%build
|
||||
CFLAGS="${CFLAGS} -fno-lto"
|
||||
CXXFLAGS="${CXXFLAGS} -fno-lto"
|
||||
# Configure the Jami bundled libraries (ffmpeg & pjproject).
|
||||
mkdir -p daemon/contrib/native
|
||||
cd %{_builddir}/client-qt/daemon/contrib/native && \
|
||||
../bootstrap \
|
||||
--no-checksums \
|
||||
--disable-ogg \
|
||||
--disable-flac \
|
||||
--disable-vorbis \
|
||||
--disable-vorbisenc \
|
||||
--disable-speex \
|
||||
--disable-sndfile \
|
||||
--disable-gsm \
|
||||
--disable-speexdsp \
|
||||
--disable-natpmp && \
|
||||
make list && \
|
||||
make fetch && \
|
||||
make %{_smp_mflags} V=1 && \
|
||||
make %{_smp_mflags} V=1 .ffmpeg
|
||||
# Configure the daemon.
|
||||
cd %{_builddir}/client-qt/daemon && \
|
||||
./autogen.sh && \
|
||||
./configure \
|
||||
--prefix=%{_prefix} \
|
||||
--libdir=%{_libdir}
|
||||
# Build the daemon.
|
||||
make -C %{_builddir}/client-qt/daemon %{_smp_mflags} V=1
|
||||
pod2man %{_builddir}/client-qt/daemon/man/jamid.pod \
|
||||
> %{_builddir}/client-qt/daemon/jamid.1
|
||||
|
||||
%install
|
||||
DESTDIR=%{buildroot} make -C daemon install
|
||||
cp %{_builddir}/client-qt/daemon/jamid.1 \
|
||||
%{buildroot}/%{_mandir}/man1/jamid.1
|
||||
rm -rfv %{buildroot}/%{_libdir}/*.a
|
||||
rm -rfv %{buildroot}/%{_libdir}/*.la
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/libjami.so*
|
||||
%{_libdir}/pkgconfig/jami.pc
|
||||
# XXX: Use %%{_libexecdir}/jamid after there's no more OpenSUSE Leap
|
||||
# < 16 (see https://en.opensuse.org/openSUSE:Specfile_guidelines).
|
||||
/usr/libexec/jamid
|
||||
%{_datadir}/jami/ringtones
|
||||
%{_datadir}/dbus-1/services/*
|
||||
%{_datadir}/dbus-1/interfaces/*
|
||||
%doc %{_mandir}/man1/jamid*
|
||||
|
||||
%package devel
|
||||
Summary: Development files of the Jami daemon
|
||||
|
||||
%description devel
|
||||
This package contains the header files for using the Jami daemon as a library.
|
||||
|
||||
%files devel
|
||||
%{_includedir}/jami
|
||||
|
||||
%post
|
||||
/sbin/ldconfig
|
||||
|
||||
%postun
|
||||
/sbin/ldconfig
|
25
extras/packaging/gnu-linux/rules/rpm/jami-libclient.spec
Normal file
25
extras/packaging/gnu-linux/rules/rpm/jami-libclient.spec
Normal file
|
@ -0,0 +1,25 @@
|
|||
# Made into a transitional package on 2022-06-21, after libjamiclient
|
||||
# was merged into src/libclient under jami-client-qt.git, to provide
|
||||
# an upgrade path to existing users. Feel free to remove this package
|
||||
# later into the future, some time after 2023-06-21 perhaps.
|
||||
|
||||
%define name jami-libclient
|
||||
%define version RELEASE_VERSION
|
||||
%define release 0
|
||||
|
||||
Name: %{name}
|
||||
Version: %{version}
|
||||
Release: %{release}%{?dist}
|
||||
Summary: Transitional package for Jami; can be safely removed
|
||||
Group: Applications/Internet
|
||||
License: GPLv3+
|
||||
Vendor: Savoir-faire Linux
|
||||
URL: https://jami.net/
|
||||
Source: jami_%{version}.tar.gz
|
||||
|
||||
%description
|
||||
This is a transitional package. Jami libclient has been merged into
|
||||
the jami-qt client code-base, and this package can be safely removed.
|
||||
|
||||
# Required, otherwise no rpm is generated.
|
||||
%files
|
97
extras/packaging/gnu-linux/rules/rpm/jami-libqt.spec
Normal file
97
extras/packaging/gnu-linux/rules/rpm/jami-libqt.spec
Normal file
|
@ -0,0 +1,97 @@
|
|||
%define name jami-libqt
|
||||
%define version RELEASE_VERSION
|
||||
%define release 5
|
||||
|
||||
# qtwebengine (aka chromium) takes a ton of memory per build process,
|
||||
# up to 2.3 GiB. Cap the number of jobs based on the amount of
|
||||
# available memory to try to guard against OOM build failures.
|
||||
%define min(a,b) %(echo $(( %1 < %2 ? %1 : %2 )))
|
||||
%define max(a,b) %(echo $(( %1 > %2 ? %1 : %2 )))
|
||||
|
||||
%define cpu_count %max %(nproc) 1
|
||||
%define available_memory %(free -g | grep -E '^Mem:' | awk '{print $7}')
|
||||
# Required memory in GiB.
|
||||
%define max_parallel_builds 4
|
||||
%define memory_required_per_core 2
|
||||
%define computed_job_count_ %(echo $(( %available_memory / %memory_required_per_core / %max_parallel_builds )))
|
||||
%define computed_job_count %max %computed_job_count_ 1
|
||||
%define job_count %min %cpu_count %computed_job_count
|
||||
|
||||
Name: %{name}
|
||||
Version: %{version}
|
||||
Release: %{release}%{?dist}
|
||||
Summary: Library for Jami-qt
|
||||
Group: Applications/Internet
|
||||
License: GPLv3+
|
||||
Vendor: Savoir-faire Linux
|
||||
URL: https://jami.net/
|
||||
Source: jami-qtlib_%{version}.tar.xz
|
||||
Patch0: 0001-qtbug-101201-fatal-error-getcurrenkeyboard.patch
|
||||
|
||||
%global gst 0.10
|
||||
%if 0%{?fedora} || 0%{?rhel} > 7
|
||||
%global gst 1.0
|
||||
%endif
|
||||
|
||||
# Build dependencies
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: make
|
||||
# QtWebEngine
|
||||
BuildRequires: bison
|
||||
BuildRequires: gperf
|
||||
BuildRequires: flex
|
||||
BuildRequires: vulkan-devel
|
||||
%if %{defined suse_version}
|
||||
BuildRequires: ffmpeg-devel
|
||||
BuildRequires: ffmpeg
|
||||
BuildRequires: python-xml
|
||||
BuildRequires: mozilla-nss-devel
|
||||
%else
|
||||
BuildRequires: pkgconfig(gstreamer-%{gst})
|
||||
BuildRequires: pkgconfig(gstreamer-app-%{gst})
|
||||
BuildRequires: pkgconfig(gstreamer-audio-%{gst})
|
||||
BuildRequires: pkgconfig(gstreamer-base-%{gst})
|
||||
BuildRequires: pkgconfig(gstreamer-pbutils-%{gst})
|
||||
BuildRequires: pkgconfig(gstreamer-plugins-bad-%{gst})
|
||||
BuildRequires: pkgconfig(gstreamer-video-%{gst})
|
||||
%endif
|
||||
|
||||
%description
|
||||
This package contains Qt libraries for Jami.
|
||||
|
||||
%prep
|
||||
%setup -n qt-everywhere-src-%{version}
|
||||
%patch0 -p1
|
||||
|
||||
%build
|
||||
echo "Building Qt using %{job_count} parallel jobs"
|
||||
# Qt 6.2 (https://wiki.linuxfromscratch.org/blfs/ticket/14729)
|
||||
sed -i 's,default=False,default=True,g' qtwebengine/src/3rdparty/chromium/third_party/catapult/tracing/tracing_build/generate_about_tracing_contents.py
|
||||
# https://bugs.gentoo.org/768261 (Qt 5.15)
|
||||
sed -i 's,#include "absl/base/internal/spinlock.h"1,#include "absl/base/internal/spinlock.h"1\n#include <limits>,g' qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc
|
||||
sed -i 's,#include <stdint.h>,#include <stdint.h>\n#include <limits>,g' qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.h
|
||||
# else, break build for fedora 35
|
||||
sed -i 's/static const unsigned kSigStackSize = std::max(16384, SIGSTKSZ);/static const size_t kSigStackSize = std::max(size_t(16384), size_t(SIGSTKSZ));/g' qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
|
||||
# https://bugreports.qt.io/browse/QTBUG-93452 (Qt 5.15)
|
||||
sed -i 's,# include <utility>,# include <utility>\n# include <limits>,g' qtbase/src/corelib/global/qglobal.h
|
||||
sed -i 's,#include <string.h>,#include <string.h>\n#include <limits>,g' qtbase/src/corelib/global/qendian.h
|
||||
cat qtbase/src/corelib/global/qendian.h
|
||||
sed -i 's,#include <string.h>,#include <string.h>\n#include <limits>,g' qtbase/src/corelib/global/qfloat16.h
|
||||
sed -i 's,#include <QtCore/qbytearray.h>,#include <QtCore/qbytearray.h>\n#include <limits>,g' qtbase/src/corelib/text/qbytearraymatcher.h
|
||||
# recent gcc version do not like lto from qt
|
||||
CXXFLAGS="${CXXFLAGS} -fno-lto" CFLAGS="${CFLAGS} -fno-lto" ./configure \
|
||||
-opensource \
|
||||
-confirm-license \
|
||||
-nomake examples \
|
||||
-nomake tests \
|
||||
-prefix "%{_libdir}/qt-jami"
|
||||
sed -i 's,bin/python,bin/env python3,g' qtbase/mkspecs/features/uikit/devices.py
|
||||
# Chromium is built using Ninja, which doesn't honor MAKEFLAGS.
|
||||
cmake --build . --parallel
|
||||
|
||||
%install
|
||||
cmake --install . --prefix %{buildroot}/${QT_JAMI_PREFIX}
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/qt-jami
|
26
extras/packaging/gnu-linux/rules/rpm/jami-qt.spec
Normal file
26
extras/packaging/gnu-linux/rules/rpm/jami-qt.spec
Normal file
|
@ -0,0 +1,26 @@
|
|||
# Made into a transitional package on 2022-10-12, after the 'jami-qt'
|
||||
# to 'jami' rename, to provide an upgrade path to existing users.
|
||||
# Feel free to remove this package later into the future, some time
|
||||
# after 2023-10-12 perhaps.
|
||||
|
||||
%define name jami-qt
|
||||
%define version RELEASE_VERSION
|
||||
%define release 0
|
||||
|
||||
Name: %{name}
|
||||
Version: %{version}
|
||||
Release: %{release}%{?dist}
|
||||
Summary: Transitional package for Jami; can be safely removed
|
||||
Group: Applications/Internet
|
||||
License: GPLv3+
|
||||
Vendor: Savoir-faire Linux
|
||||
URL: https://jami.net/
|
||||
Source: jami_%{version}.tar.gz
|
||||
Requires: jami
|
||||
|
||||
%description
|
||||
This is a transitional package. The Jami Qt client is now packaged
|
||||
under the name 'jami', and this package can be safely removed.
|
||||
|
||||
# Required, otherwise no rpm is generated.
|
||||
%files
|
83
extras/packaging/gnu-linux/rules/rpm/jami.spec
Normal file
83
extras/packaging/gnu-linux/rules/rpm/jami.spec
Normal file
|
@ -0,0 +1,83 @@
|
|||
%define name jami
|
||||
%define version RELEASE_VERSION
|
||||
%define release 0
|
||||
|
||||
Name: %{name}
|
||||
Version: %{version}
|
||||
Release: %{release}%{?dist}
|
||||
Summary: Qt client for Jami
|
||||
Group: Applications/Internet
|
||||
License: GPLv3+
|
||||
Vendor: Savoir-faire Linux
|
||||
URL: https://jami.net/
|
||||
Source: jami_%{version}.tar.gz
|
||||
Requires: jami-daemon = %{version}
|
||||
Requires: jami-libqt
|
||||
Provides: jami-qt = %{version}
|
||||
Obsoletes: jami-qt < 20221010.1109.641d67d-2
|
||||
Obsoletes: jami-libclient <= 20220516.0214.9b42ad3-1
|
||||
|
||||
# Build dependencies.
|
||||
%if 0%{?fedora} >= 32
|
||||
BuildRequires: cmake
|
||||
BuildRequires: gcc-c++
|
||||
%endif
|
||||
BuildRequires: make
|
||||
|
||||
# For generating resources.qrc in build time.
|
||||
BuildRequires: python3
|
||||
|
||||
# Build and runtime dependencies.
|
||||
BuildRequires: qrencode-devel
|
||||
|
||||
%description
|
||||
This package contains the Qt desktop client of Jami. Jami is a free
|
||||
software for universal communication which respects freedoms and
|
||||
privacy of its users.
|
||||
|
||||
%prep
|
||||
%setup -n client-qt
|
||||
|
||||
%build
|
||||
# Configure and build bundled ffmpeg (for libavutil/avframe).
|
||||
mkdir -p %{_builddir}/client-qt/daemon/contrib/native
|
||||
cd %{_builddir}/client-qt/daemon/contrib/native && \
|
||||
../bootstrap \
|
||||
--no-checksums \
|
||||
--disable-ogg \
|
||||
--disable-flac \
|
||||
--disable-vorbis \
|
||||
--disable-vorbisenc \
|
||||
--disable-speex \
|
||||
--disable-sndfile \
|
||||
--disable-gsm \
|
||||
--disable-speexdsp \
|
||||
--disable-natpmp && \
|
||||
make list && \
|
||||
make fetch && \
|
||||
make %{_smp_mflags} V=1 .ffmpeg
|
||||
# Qt-related variables
|
||||
cd %{_builddir}/client-qt && \
|
||||
mkdir build && cd build && \
|
||||
cmake -DENABLE_LIBWRAP=true \
|
||||
-DLIBJAMI_BUILD_DIR=%{_builddir}/client-qt/daemon/src \
|
||||
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
|
||||
-DCMAKE_INSTALL_LIBDIR=%{_libdir} \
|
||||
-DWITH_DAEMON_SUBMODULE=true \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
..
|
||||
make -C %{_builddir}/client-qt/build %{_smp_mflags} V=1
|
||||
|
||||
%install
|
||||
DESTDIR=%{buildroot} make -C %{_builddir}/client-qt/build install
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%{_bindir}/jami
|
||||
%{_datadir}/applications/jami.desktop
|
||||
%{_datadir}/jami/jami.desktop
|
||||
%{_datadir}/icons/hicolor/scalable/apps/jami.svg
|
||||
%{_datadir}/icons/hicolor/48x48/apps/jami.png
|
||||
%{_datadir}/pixmaps/jami.xpm
|
||||
%{_datadir}/metainfo/jami.appdata.xml
|
||||
%{_datadir}/jami/translations/*
|
|
@ -0,0 +1,59 @@
|
|||
Subject: [PATCH] Fix fatal error in getCurrentKeyboardLayout()
|
||||
|
||||
FATAL:xkb_keyboard_layout_engine.cc(640)] Keymap file failed to load: dk(polytonic)
|
||||
|
||||
Remove unnecessary tokenization of XKB layout.
|
||||
Parsing of layout configuration is already handled by
|
||||
XkbKeyboardLayoutEngine::ParseLayoutName().
|
||||
|
||||
Fixes: QTBUG-101201
|
||||
Task-number: QTBUG-92971
|
||||
Pick-to: 6.2 6.3
|
||||
Change-Id: Ia4f09ed99eb82064a3b12e14eda69a6e0e12b0dd
|
||||
Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
|
||||
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
|
||||
---
|
||||
.../src/core/ozone/ozone_platform_qt.cpp | 24 ++++---------------
|
||||
1 file changed, 5 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/qtwebengine/src/core/ozone/ozone_platform_qt.cpp b/qtwebengine/src/core/ozone/ozone_platform_qt.cpp
|
||||
index 33d7bd992b..543e4bd371 100644
|
||||
--- a/qtwebengine/src/core/ozone/ozone_platform_qt.cpp
|
||||
+++ b/qtwebengine/src/core/ozone/ozone_platform_qt.cpp
|
||||
@@ -184,29 +184,15 @@ static std::string getCurrentKeyboardLayout()
|
||||
if (XkbRF_GetNamesProp(dpy, nullptr, &vdr) == 0)
|
||||
return std::string();
|
||||
|
||||
- char *layout = strtok(vdr.layout, ",");
|
||||
- for (int i = 0; i < state.group; i++) {
|
||||
- layout = strtok(nullptr, ",");
|
||||
- if (layout == nullptr)
|
||||
- return std::string();
|
||||
- }
|
||||
+ if (!vdr.layout)
|
||||
+ return std::string();
|
||||
|
||||
if (!vdr.variant)
|
||||
- return layout;
|
||||
-
|
||||
- char *variant = strtok(vdr.variant, ",");
|
||||
- if (!variant)
|
||||
- return layout;
|
||||
-
|
||||
- for (int i = 0; i < state.group; i++) {
|
||||
- variant = strtok(nullptr, ",");
|
||||
- if (variant == nullptr)
|
||||
- return layout;
|
||||
- }
|
||||
+ return std::string(vdr.layout);
|
||||
|
||||
- std::string layoutWithVariant = layout;
|
||||
+ std::string layoutWithVariant = vdr.layout;
|
||||
layoutWithVariant = layoutWithVariant.append("-");
|
||||
- layoutWithVariant = layoutWithVariant.append(variant);
|
||||
+ layoutWithVariant = layoutWithVariant.append(vdr.variant);
|
||||
return layoutWithVariant;
|
||||
}
|
||||
#endif // BUILDFLAG(USE_XKBCOMMON)
|
||||
--
|
||||
2.35.3
|
340
extras/packaging/gnu-linux/rules/snap/common/icons/jami.svg
Normal file
340
extras/packaging/gnu-linux/rules/snap/common/icons/jami.svg
Normal file
|
@ -0,0 +1,340 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 116.3 116.3" style="enable-background:new 0 0 116.3 116.3;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:url(#SVGID_1_);}
|
||||
.st1{fill:url(#SVGID_2_);}
|
||||
.st2{fill:url(#SVGID_3_);}
|
||||
.st3{fill:url(#SVGID_4_);}
|
||||
.st4{fill:url(#SVGID_5_);}
|
||||
.st5{fill:url(#SVGID_6_);}
|
||||
.st6{opacity:0.4;fill:url(#SVGID_7_);enable-background:new ;}
|
||||
.st7{fill:url(#SVGID_8_);}
|
||||
.st8{fill:url(#SVGID_9_);}
|
||||
.st9{fill:url(#SVGID_10_);}
|
||||
.st10{fill:url(#SVGID_11_);}
|
||||
.st11{fill:url(#SVGID_12_);}
|
||||
.st12{fill:url(#SVGID_13_);}
|
||||
.st13{fill:url(#SVGID_14_);}
|
||||
.st14{fill:url(#SVGID_15_);}
|
||||
.st15{fill:url(#SVGID_16_);}
|
||||
.st16{opacity:0.2;fill:url(#SVGID_17_);enable-background:new ;}
|
||||
.st17{fill:url(#SVGID_18_);}
|
||||
.st18{fill:url(#SVGID_19_);}
|
||||
.st19{opacity:0.25;fill:url(#SVGID_20_);enable-background:new ;}
|
||||
.st20{fill:url(#SVGID_21_);}
|
||||
.st21{fill:url(#SVGID_22_);}
|
||||
.st22{opacity:0.2;fill:url(#SVGID_23_);enable-background:new ;}
|
||||
.st23{fill:url(#SVGID_24_);}
|
||||
</style>
|
||||
<g>
|
||||
<g>
|
||||
|
||||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="69.0328" y1="454.9245" x2="64.4435" y2="449.5703" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2B3B6A"/>
|
||||
<stop offset="1" style="stop-color:#2B3B6A"/>
|
||||
</linearGradient>
|
||||
<polygon class="st0" points="54.9,55.8 62,55.6 58.4,62.2 "/>
|
||||
|
||||
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="108.534" y1="457.2333" x2="108.534" y2="494.0327" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2B3B6A"/>
|
||||
<stop offset="7.040000e-02" style="stop-color:#2D4576"/>
|
||||
<stop offset="0.2165" style="stop-color:#2E5589"/>
|
||||
<stop offset="0.3608" style="stop-color:#2B5E97"/>
|
||||
<stop offset="0.5" style="stop-color:#29629C"/>
|
||||
<stop offset="0.6392" style="stop-color:#2B5E97"/>
|
||||
<stop offset="0.7835" style="stop-color:#2E5589"/>
|
||||
<stop offset="0.9296" style="stop-color:#2D4576"/>
|
||||
<stop offset="1" style="stop-color:#2B3B6A"/>
|
||||
</linearGradient>
|
||||
<path class="st1" d="M85.5,57.5c26.1,4.2,29.8,10.7,29.8,10.7c0,0.4,0,0.8,0,1.2c0,0.2-0.1,0.4-0.2,0.7c-0.1,0.3-2.7,5.7-19.6,9.3 L85.5,57.5z"/>
|
||||
|
||||
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="26.7686" y1="496.8278" x2="38.7091" y2="475.5678" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#252B59"/>
|
||||
<stop offset="8.590000e-02" style="stop-color:#2B3A69"/>
|
||||
<stop offset="0.2267" style="stop-color:#2E4A7C"/>
|
||||
<stop offset="0.3658" style="stop-color:#2E5487"/>
|
||||
<stop offset="0.5" style="stop-color:#2D578C"/>
|
||||
<stop offset="0.6342" style="stop-color:#2E5487"/>
|
||||
<stop offset="0.7733" style="stop-color:#2E4A7C"/>
|
||||
<stop offset="0.9141" style="stop-color:#2B3A69"/>
|
||||
<stop offset="1" style="stop-color:#252B59"/>
|
||||
</linearGradient>
|
||||
<path class="st2" d="M19.8,78.5c-5.9,15.7-2.9,20.6-2.7,21c0.1,0.2,0.2,0.4,0.4,0.5c0.4,0,0.8-0.1,1.2-0.2c0,0,10.7-0.5,23.2-18.3 L19.8,78.5z"/>
|
||||
|
||||
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="60.8512" y1="424.6486" x2="41.0872" y2="401.5905" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#181844"/>
|
||||
<stop offset="2.840000e-02" style="stop-color:#1E1E4C"/>
|
||||
<stop offset="0.1353" style="stop-color:#283261"/>
|
||||
<stop offset="0.2468" style="stop-color:#2D4172"/>
|
||||
<stop offset="0.3647" style="stop-color:#2E4A7C"/>
|
||||
<stop offset="0.5" style="stop-color:#2E4D7F"/>
|
||||
<stop offset="0.6177" style="stop-color:#2D4576"/>
|
||||
<stop offset="0.8125" style="stop-color:#273160"/>
|
||||
<stop offset="1" style="stop-color:#181844"/>
|
||||
</linearGradient>
|
||||
<path class="st3" d="M58.8,18.6C44.5,2.9,37.5,3.8,37.1,3.9c-0.2,0-0.5,0.1-0.7,0.2c-0.5,0.2-1,1.8-1,1.8s-3,8.7,9.1,31.9 L58.8,18.6z"/>
|
||||
|
||||
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="99.9721" y1="499.3526" x2="84.7036" y2="450.1664" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#181844"/>
|
||||
<stop offset="2.840000e-02" style="stop-color:#1E1E4C"/>
|
||||
<stop offset="0.1353" style="stop-color:#283261"/>
|
||||
<stop offset="0.2468" style="stop-color:#2D4172"/>
|
||||
<stop offset="0.3647" style="stop-color:#2E4A7C"/>
|
||||
<stop offset="0.5" style="stop-color:#2E4D7F"/>
|
||||
<stop offset="0.6177" style="stop-color:#2D4576"/>
|
||||
<stop offset="0.8125" style="stop-color:#273160"/>
|
||||
<stop offset="1" style="stop-color:#181844"/>
|
||||
</linearGradient>
|
||||
<path class="st4" d="M71.2,78.8C90.6,101,97.4,99.8,97.4,99.8c0.4,0.1,0.9,0.2,1.3,0.2c0.2-0.1,0.3-0.3,0.4-0.5 c0.3-0.4,5.8-9.4-12.8-41.8L71.2,78.8z"/>
|
||||
|
||||
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="31.6447" y1="457.2331" x2="31.6447" y2="494.0317" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2B3B6A"/>
|
||||
<stop offset="7.040000e-02" style="stop-color:#2D4576"/>
|
||||
<stop offset="0.2165" style="stop-color:#2E5589"/>
|
||||
<stop offset="0.3608" style="stop-color:#2B5E97"/>
|
||||
<stop offset="0.5" style="stop-color:#29629C"/>
|
||||
<stop offset="0.6392" style="stop-color:#2B5E97"/>
|
||||
<stop offset="0.7835" style="stop-color:#2E5589"/>
|
||||
<stop offset="0.9296" style="stop-color:#2D4576"/>
|
||||
<stop offset="1" style="stop-color:#2B3B6A"/>
|
||||
</linearGradient>
|
||||
<path class="st5" d="M46.1,82.2c-40-1.7-44.8-11.6-45-12.1C1.1,69.9,1,69.7,1,69.5c0.1-0.7,1.5-2,1.5-2s10.6-6.5,28.3-10 L46.1,82.2z"/>
|
||||
|
||||
<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="51.8906" y1="421.1236" x2="66.337" y2="421.1236" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2B3B6A"/>
|
||||
<stop offset="1" style="stop-color:#2B3B6A"/>
|
||||
</linearGradient>
|
||||
<path class="st6" d="M57.6,17.4c-5,5.4-9.6,11.2-13.8,17.2h1c3.1-3.9,10.8-13.7,13.4-16.5L57.6,17.4z"/>
|
||||
|
||||
<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="70.9709" y1="436.4003" x2="70.9709" y2="401.6908" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#252B59"/>
|
||||
<stop offset="0.5" style="stop-color:#2D578C"/>
|
||||
<stop offset="0.6934" style="stop-color:#2D5588"/>
|
||||
<stop offset="0.8038" style="stop-color:#2E4F80"/>
|
||||
<stop offset="0.8932" style="stop-color:#2D4474"/>
|
||||
<stop offset="0.971" style="stop-color:#283463"/>
|
||||
<stop offset="1" style="stop-color:#252B59"/>
|
||||
</linearGradient>
|
||||
<path class="st7" d="M73.8,35.4C84.2,10.7,80.2,5,80.2,5c-0.1-0.3-0.2-0.7-0.3-1c-0.2-0.1-0.4-0.1-0.7-0.2 c-0.5-0.1-11.4-1.5-34.4,30.7L73.8,35.4z"/>
|
||||
|
||||
<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="39.2669" y1="503.7654" x2="102.6764" y2="407.9172" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2867A2"/>
|
||||
<stop offset="8.239999e-02" style="stop-color:#177EBC"/>
|
||||
<stop offset="0.1675" style="stop-color:#0E91D1"/>
|
||||
<stop offset="0.2527" style="stop-color:#10A2E1"/>
|
||||
<stop offset="0.337" style="stop-color:#18ACEA"/>
|
||||
<stop offset="0.42" style="stop-color:#24B1ED"/>
|
||||
<stop offset="0.5" style="stop-color:#28B1ED"/>
|
||||
<stop offset="0.58" style="stop-color:#24B1ED"/>
|
||||
<stop offset="0.663" style="stop-color:#18ACEA"/>
|
||||
<stop offset="0.7473" style="stop-color:#10A2E1"/>
|
||||
<stop offset="0.8325" style="stop-color:#0E91D1"/>
|
||||
<stop offset="0.9176" style="stop-color:#177EBC"/>
|
||||
<stop offset="1" style="stop-color:#2867A2"/>
|
||||
</linearGradient>
|
||||
<path class="st8" d="M58,97.4c-14.2,15.4-21,14.5-21.4,14.5c-0.6-0.2-1.2-0.5-1.7-0.8l-17.3-11c7.3-1.6,16.3-10.2,25.7-21.3 L58,97.4z"/>
|
||||
|
||||
<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="33.568" y1="505.6873" x2="58.683" y2="483.2007" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2C5D95"/>
|
||||
<stop offset="8.220001e-02" style="stop-color:#246EAB"/>
|
||||
<stop offset="0.1808" style="stop-color:#1B79B9"/>
|
||||
<stop offset="0.3007" style="stop-color:#1080C2"/>
|
||||
<stop offset="0.5" style="stop-color:#0E81C5"/>
|
||||
<stop offset="0.6993" style="stop-color:#1080C2"/>
|
||||
<stop offset="0.8192" style="stop-color:#1B79B9"/>
|
||||
<stop offset="0.9178" style="stop-color:#246EAB"/>
|
||||
<stop offset="1" style="stop-color:#2C5D95"/>
|
||||
</linearGradient>
|
||||
<path class="st9" d="M58.6,98c-14.2,15.4-21,14.5-21.4,14.5c-0.6-0.2-1.2-0.5-1.7-0.8L17.6,100c7.3-1.6,16.9-9.6,26.3-20.7 L58.6,98z"/>
|
||||
|
||||
<linearGradient id="SVGID_11_" gradientUnits="userSpaceOnUse" x1="31.3212" y1="407.2591" x2="89.6399" y2="504.4568" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2C5D95"/>
|
||||
<stop offset="1.760000e-02" style="stop-color:#2A6199"/>
|
||||
<stop offset="0.1407" style="stop-color:#1C79B7"/>
|
||||
<stop offset="0.2631" style="stop-color:#0A8CCA"/>
|
||||
<stop offset="0.3837" style="stop-color:#0B97D4"/>
|
||||
<stop offset="0.5" style="stop-color:#0E9AD8"/>
|
||||
<stop offset="0.6163" style="stop-color:#0B97D4"/>
|
||||
<stop offset="0.7369" style="stop-color:#0A8CCA"/>
|
||||
<stop offset="0.8593" style="stop-color:#1C79B7"/>
|
||||
<stop offset="0.9824" style="stop-color:#2A6199"/>
|
||||
<stop offset="1" style="stop-color:#2C5D95"/>
|
||||
</linearGradient>
|
||||
<path class="st10" d="M20.7,38c-6.3-16.2-3.2-21.3-3-21.6c0.4-0.5,0.9-0.9,1.4-1.2l17.3-11c-1.5,7.1,2.3,18,8.2,30.7L20.7,38z"/>
|
||||
|
||||
<linearGradient id="SVGID_12_" gradientUnits="userSpaceOnUse" x1="94.4028" y1="503.8655" x2="56.9038" y2="456.6339" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2C5D95"/>
|
||||
<stop offset="2.570000e-02" style="stop-color:#2A6199"/>
|
||||
<stop offset="0.2053" style="stop-color:#1C79B7"/>
|
||||
<stop offset="0.384" style="stop-color:#0A8CCA"/>
|
||||
<stop offset="0.5599" style="stop-color:#0B97D4"/>
|
||||
<stop offset="0.7296" style="stop-color:#0E9AD8"/>
|
||||
<stop offset="0.7925" style="stop-color:#0B97D4"/>
|
||||
<stop offset="0.8577" style="stop-color:#0A8CCA"/>
|
||||
<stop offset="0.9239" style="stop-color:#1C79B7"/>
|
||||
<stop offset="0.9905" style="stop-color:#2A6199"/>
|
||||
<stop offset="1" style="stop-color:#2C5D95"/>
|
||||
</linearGradient>
|
||||
<path class="st11" d="M57.2,57.2c-8.7,0-17.4,0.7-26,1.9c0.3,0.5,4.3,7.2,7.2,11.7c27.8,42.8,40.8,41.1,41.4,41 c0.6-0.2,1.2-0.5,1.7-0.8l17.3-11C87,97.5,70.6,78.2,57.2,57.2z"/>
|
||||
|
||||
<linearGradient id="SVGID_13_" gradientUnits="userSpaceOnUse" x1="40.2175" y1="431.0724" x2="32.9164" y2="404.7886" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2C5D95"/>
|
||||
<stop offset="8.220001e-02" style="stop-color:#246EAB"/>
|
||||
<stop offset="0.1808" style="stop-color:#1B79B9"/>
|
||||
<stop offset="0.3007" style="stop-color:#1080C2"/>
|
||||
<stop offset="0.5" style="stop-color:#0E81C5"/>
|
||||
<stop offset="0.6993" style="stop-color:#1080C2"/>
|
||||
<stop offset="0.8192" style="stop-color:#1B79B9"/>
|
||||
<stop offset="0.9178" style="stop-color:#246EAB"/>
|
||||
<stop offset="1" style="stop-color:#2C5D95"/>
|
||||
</linearGradient>
|
||||
<path class="st12" d="M20.1,38.5c-6.3-16.2-3.2-21.3-3-21.6c0.4-0.5,0.9-0.9,1.4-1.2L36.5,4.1c-1.5,7.1,1.7,18.6,7.6,31.2 L20.1,38.5z"/>
|
||||
|
||||
<linearGradient id="SVGID_14_" gradientUnits="userSpaceOnUse" x1="122.9025" y1="448.7971" x2="9.1479" y2="448.7971" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2867A2"/>
|
||||
<stop offset="1.280000e-02" style="stop-color:#256BA7"/>
|
||||
<stop offset="0.1121" style="stop-color:#0B83C3"/>
|
||||
<stop offset="0.2115" style="stop-color:#1797D8"/>
|
||||
<stop offset="0.3099" style="stop-color:#25A3E2"/>
|
||||
<stop offset="0.4066" style="stop-color:#27ABE7"/>
|
||||
<stop offset="0.5" style="stop-color:#2AAEEA"/>
|
||||
<stop offset="0.5934" style="stop-color:#27ABE7"/>
|
||||
<stop offset="0.6901" style="stop-color:#25A3E2"/>
|
||||
<stop offset="0.7885" style="stop-color:#1797D8"/>
|
||||
<stop offset="0.8879" style="stop-color:#0B83C3"/>
|
||||
<stop offset="0.9872" style="stop-color:#256BA7"/>
|
||||
<stop offset="1" style="stop-color:#2867A2"/>
|
||||
</linearGradient>
|
||||
<path class="st13" d="M85.5,59.6c13.5,1.9,24.7,4.7,29.8,9.8V48.9c0-0.6-0.1-1.3-0.2-1.9c-0.1-0.3-2.7-5.6-19-9.1L85.5,59.6z"/>
|
||||
|
||||
<linearGradient id="SVGID_15_" gradientUnits="userSpaceOnUse" x1="90.2941" y1="447.1362" x2="122.8074" y2="448.8884" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2E5284"/>
|
||||
<stop offset="6.100000e-03" style="stop-color:#2E5486"/>
|
||||
<stop offset="9.120000e-02" style="stop-color:#29649D"/>
|
||||
<stop offset="0.1876" style="stop-color:#236FAD"/>
|
||||
<stop offset="0.3049" style="stop-color:#1D77B6"/>
|
||||
<stop offset="0.5" style="stop-color:#1C78B9"/>
|
||||
<stop offset="0.6951" style="stop-color:#1D77B6"/>
|
||||
<stop offset="0.8124" style="stop-color:#236FAD"/>
|
||||
<stop offset="0.9088" style="stop-color:#29649D"/>
|
||||
<stop offset="0.9939" style="stop-color:#2E5486"/>
|
||||
<stop offset="1" style="stop-color:#2E5284"/>
|
||||
</linearGradient>
|
||||
<path class="st14" d="M85.5,58.8c13.5,1.9,24.7,5.5,29.8,10.6V48.1c0-0.6-0.1-1.3-0.2-1.9c-0.1-0.3-2.7-5.6-19-9.1L85.5,58.8z"/>
|
||||
|
||||
<linearGradient id="SVGID_16_" gradientUnits="userSpaceOnUse" x1="9.0577" y1="447.1912" x2="67.7186" y2="447.1912" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2867A2"/>
|
||||
<stop offset="2.250000e-02" style="stop-color:#256BA7"/>
|
||||
<stop offset="0.1971" style="stop-color:#0B83C3"/>
|
||||
<stop offset="0.3718" style="stop-color:#1797D8"/>
|
||||
<stop offset="0.5447" style="stop-color:#25A3E2"/>
|
||||
<stop offset="0.7147" style="stop-color:#27ABE7"/>
|
||||
<stop offset="0.8788" style="stop-color:#2AAEEA"/>
|
||||
<stop offset="0.9015" style="stop-color:#27ABE7"/>
|
||||
<stop offset="0.9249" style="stop-color:#25A3E2"/>
|
||||
<stop offset="0.9487" style="stop-color:#1797D8"/>
|
||||
<stop offset="0.9728" style="stop-color:#0B83C3"/>
|
||||
<stop offset="0.9969" style="stop-color:#256BA7"/>
|
||||
<stop offset="1" style="stop-color:#2867A2"/>
|
||||
</linearGradient>
|
||||
<path class="st15" d="M73.2,35.1c-3-0.1-9.5-0.4-15.1-0.4C7.1,34.7,1.4,46.5,1.2,47C1,47.6,1,48.3,1,48.9v20.6 c5-5,15.9-7.7,29.2-9.7c8.6-1.2,17.2-1.9,25.9-2c1.6,0,3.2,0,4.8,0C60.8,57.8,76.3,35.2,73.2,35.1z"/>
|
||||
|
||||
<linearGradient id="SVGID_17_" gradientUnits="userSpaceOnUse" x1="50.3126" y1="432.0108" x2="28.2664" y2="428.9106" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2B3B6A"/>
|
||||
<stop offset="1" style="stop-color:#2B3B6A"/>
|
||||
</linearGradient>
|
||||
<path class="st16" d="M44.1,33.5c-10.7,0.5-18.4,1.3-24.8,3.1l0.3,0.8c0.6-0.1,1.3-0.3,1.9-0.4c7.7-1.2,15.4-2,23.1-2.3L44.1,33.5 z"/>
|
||||
|
||||
<linearGradient id="SVGID_18_" gradientUnits="userSpaceOnUse" x1="72.7451" y1="450.8669" x2="10.4435" y2="442.1056" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2867A2"/>
|
||||
<stop offset="3.820000e-02" style="stop-color:#2174B1"/>
|
||||
<stop offset="0.1177" style="stop-color:#0B86C4"/>
|
||||
<stop offset="0.2081" style="stop-color:#0A94D2"/>
|
||||
<stop offset="0.3177" style="stop-color:#0C9BDB"/>
|
||||
<stop offset="0.5" style="stop-color:#109EDE"/>
|
||||
<stop offset="0.6823" style="stop-color:#0C9BDB"/>
|
||||
<stop offset="0.7919" style="stop-color:#0A94D2"/>
|
||||
<stop offset="0.8823" style="stop-color:#0B86C4"/>
|
||||
<stop offset="0.9618" style="stop-color:#2174B1"/>
|
||||
<stop offset="1" style="stop-color:#2867A2"/>
|
||||
</linearGradient>
|
||||
<path class="st17" d="M73.2,34.3c-3-0.1-9.5-0.4-15.1-0.4c-51.1,0-56.7,11.8-57,12.4C1,46.8,1,47.5,1,48.1v21.4 c5-5,15.9-8.5,29.2-10.5c8.6-1.2,17.2-1.9,25.9-2c1.6,0,3.2,0,4.8,0C63.2,57.1,76.3,34.4,73.2,34.3z"/>
|
||||
|
||||
<linearGradient id="SVGID_19_" gradientUnits="userSpaceOnUse" x1="101.6202" y1="407.733" x2="71.9933" y2="458.7571" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2867A2"/>
|
||||
<stop offset="0.1238" style="stop-color:#177EBC"/>
|
||||
<stop offset="0.2516" style="stop-color:#0E91D1"/>
|
||||
<stop offset="0.3797" style="stop-color:#10A2E1"/>
|
||||
<stop offset="0.5064" style="stop-color:#18ACEA"/>
|
||||
<stop offset="0.631" style="stop-color:#24B1ED"/>
|
||||
<stop offset="0.7513" style="stop-color:#28B1ED"/>
|
||||
<stop offset="0.7911" style="stop-color:#24B1ED"/>
|
||||
<stop offset="0.8324" style="stop-color:#18ACEA"/>
|
||||
<stop offset="0.8743" style="stop-color:#10A2E1"/>
|
||||
<stop offset="0.9167" style="stop-color:#0E91D1"/>
|
||||
<stop offset="0.959" style="stop-color:#177EBC"/>
|
||||
<stop offset="1" style="stop-color:#2867A2"/>
|
||||
</linearGradient>
|
||||
<path class="st18" d="M58.2,58.8C72.1,37.9,82.4,16,79.8,4.1l17.3,11c0.5,0.3,1,0.7,1.4,1.2c0.3,0.5,7.1,11.7-20.7,54.5 c-2,3.2-3.9,6.9-4.6,7.2c-4.1-4-12.6-15.6-14.7-18.5C58.3,59.1,58.2,58.8,58.2,58.8z"/>
|
||||
|
||||
<linearGradient id="SVGID_20_" gradientUnits="userSpaceOnUse" x1="105.3445" y1="433.3988" x2="94.5575" y2="453.6416" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2B3B6A"/>
|
||||
<stop offset="1" style="stop-color:#2B3B6A"/>
|
||||
</linearGradient>
|
||||
<path class="st19" d="M96.6,37.2c-3.1,7.8-6.8,15.3-11.1,22.4l1.3,0.2c5.5-9.5,8.7-16.5,10.9-22.4L96.6,37.2z"/>
|
||||
|
||||
<linearGradient id="SVGID_21_" gradientUnits="userSpaceOnUse" x1="100.6479" y1="408.8533" x2="70.927" y2="464.6275" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2867A2"/>
|
||||
<stop offset="3.820000e-02" style="stop-color:#2174B1"/>
|
||||
<stop offset="0.1177" style="stop-color:#0B86C4"/>
|
||||
<stop offset="0.2081" style="stop-color:#0A94D2"/>
|
||||
<stop offset="0.3177" style="stop-color:#0C9BDB"/>
|
||||
<stop offset="0.5" style="stop-color:#109EDE"/>
|
||||
<stop offset="0.6823" style="stop-color:#0C9BDB"/>
|
||||
<stop offset="0.7919" style="stop-color:#0A94D2"/>
|
||||
<stop offset="0.8823" style="stop-color:#0B86C4"/>
|
||||
<stop offset="0.9618" style="stop-color:#2174B1"/>
|
||||
<stop offset="1" style="stop-color:#2867A2"/>
|
||||
</linearGradient>
|
||||
<path class="st20" d="M78.5,71.4c27.8-42.8,21-54,20.7-54.5c-0.4-0.5-0.9-0.9-1.4-1.2L79.8,4.1c2.5,11.8-7.4,34.6-21.2,55.5 c4.6,7.1,9.4,14,14.5,19.9C74.1,78.3,76.7,74.3,78.5,71.4z"/>
|
||||
|
||||
<linearGradient id="SVGID_22_" gradientUnits="userSpaceOnUse" x1="102.9539" y1="410.1097" x2="72.9714" y2="466.375" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2867A2"/>
|
||||
<stop offset="3.820000e-02" style="stop-color:#2174B1"/>
|
||||
<stop offset="0.1177" style="stop-color:#0B86C4"/>
|
||||
<stop offset="0.2081" style="stop-color:#0A94D2"/>
|
||||
<stop offset="0.3177" style="stop-color:#0C9BDB"/>
|
||||
<stop offset="0.5" style="stop-color:#109EDE"/>
|
||||
<stop offset="0.6823" style="stop-color:#0C9BDB"/>
|
||||
<stop offset="0.7919" style="stop-color:#0A94D2"/>
|
||||
<stop offset="0.8823" style="stop-color:#0B86C4"/>
|
||||
<stop offset="0.9618" style="stop-color:#2174B1"/>
|
||||
<stop offset="1" style="stop-color:#2867A2"/>
|
||||
</linearGradient>
|
||||
<path class="st21" d="M72.6,80.2c0.1-0.1,0.2-0.1,0.2-0.2c-5.3-6.2-10.2-12.8-14.7-19.7c-0.1,0.1-0.2,0.2-0.2,0.4 C57.9,60.6,67.6,75.9,72.6,80.2z"/>
|
||||
|
||||
<linearGradient id="SVGID_23_" gradientUnits="userSpaceOnUse" x1="54.5637" y1="474.0854" x2="62.254" y2="494.9197" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2B3B6A"/>
|
||||
<stop offset="1" style="stop-color:#2B3B6A"/>
|
||||
</linearGradient>
|
||||
<path class="st22" d="M58.2,98.4C57.9,98.1,47.7,86.1,43.1,79l-0.8,0.9C46.9,86.6,52,93,57.6,99L58.2,98.4z"/>
|
||||
|
||||
<linearGradient id="SVGID_24_" gradientUnits="userSpaceOnUse" x1="69.1674" y1="452.6575" x2="78.2209" y2="509.0225" gradientTransform="matrix(1 0 0 1 -8.0854 -395.1333)">
|
||||
<stop offset="0" style="stop-color:#2E5284"/>
|
||||
<stop offset="2.440000e-02" style="stop-color:#2C5C92"/>
|
||||
<stop offset="8.880000e-02" style="stop-color:#2075B1"/>
|
||||
<stop offset="0.1599" style="stop-color:#0B86C4"/>
|
||||
<stop offset="0.2403" style="stop-color:#0A94D2"/>
|
||||
<stop offset="0.3378" style="stop-color:#0E9CDA"/>
|
||||
<stop offset="0.5" style="stop-color:#109EDE"/>
|
||||
<stop offset="0.6718" style="stop-color:#0C9BDB"/>
|
||||
<stop offset="0.7751" style="stop-color:#0A94D2"/>
|
||||
<stop offset="0.8603" style="stop-color:#0B86C4"/>
|
||||
<stop offset="0.9351" style="stop-color:#2174B1"/>
|
||||
<stop offset="1" style="stop-color:#2C5D95"/>
|
||||
</linearGradient>
|
||||
<path class="st23" d="M72.9,79.9c-5.3-6.2-10.2-12.8-14.7-19.7c-0.5-0.8-1.1-1.6-1.6-2.4c-8.7,0-17.4,0.7-26,1.9 c0.3,0.5,4.3,7.2,7.2,11.7c27.8,42.8,40.8,41.1,41.4,41c0.6-0.2,1.2-0.5,1.7-0.8L98.8,100C91.4,98.4,82.1,90.6,72.9,79.9z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 20 KiB |
5
extras/packaging/gnu-linux/rules/snap/common/scripts/jami-wrapper
Executable file
5
extras/packaging/gnu-linux/rules/snap/common/scripts/jami-wrapper
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
export QTWEBENGINEPROCESS_PATH="$SNAP/usr/lib/libqt-jami/libexec/QtWebEngineProcess"
|
||||
|
||||
exec "$@"
|
367
extras/packaging/gnu-linux/rules/snap/jami/snapcraft.yaml
Normal file
367
extras/packaging/gnu-linux/rules/snap/jami/snapcraft.yaml
Normal file
|
@ -0,0 +1,367 @@
|
|||
# Copyright (C) 2019-2022 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Sébastien Blin <sebastien.blin@savoirfairelinux.com>
|
||||
# Author: Amin Bandali <amin.bandali@savoirfairelinux.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# This file is based on earlier work by Dani Llewellyn, under the
|
||||
# Expat License (also referred to as "the MIT License"), per the
|
||||
# following notice:
|
||||
|
||||
# Copyright (C) 2017-2020 Dani Llewellyn <dani@bowlhat.net>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
||||
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
|
||||
|
||||
name: jami
|
||||
version: "RELEASE_VERSION"
|
||||
adopt-info: jami
|
||||
icon: common/icons/jami.svg
|
||||
license: GPL-3.0+
|
||||
summary: 'Privacy-oriented voice, video, chat, and conference platform and SIP phone'
|
||||
description: |
|
||||
Jami is free software for universal communication that respects the
|
||||
freedom and privacy of its users.
|
||||
|
||||
Jami is an end-to-end encrypted secure and distributed voice, video,
|
||||
and chat communication platform. Jami requires no central server
|
||||
for these communications and leaves the power of privacy and freedom
|
||||
in the hands of users.
|
||||
|
||||
Jami provides the following key features to its users:
|
||||
|
||||
* Synchronized and enriched one-to-one conversations
|
||||
* Group conversations (Beta)
|
||||
* Audio/video calls and conferences
|
||||
* Screen sharing in video calls and conferences
|
||||
* Unlimited peer-to-peer file sharing
|
||||
* Recording and sending audio/video messages
|
||||
* Jami plugins SDK for additional functionality (green screen,
|
||||
watermark, audio filters, and more)
|
||||
* Use Jami as your SIP phone with a variety of media codecs
|
||||
and VoIP providers
|
||||
|
||||
Client applications for GNU/Linux, Windows, macOS, iOS, Android,
|
||||
and Android TV are available, making Jami an interoperable and
|
||||
cross-platform communication framework.
|
||||
|
||||
Seamlessly deploy Jami in your organization using
|
||||
Jami Account Management Server (JAMS). With JAMS, you can enable
|
||||
your users to connect using their LDAP/ActiveDirectory credentials
|
||||
or create local accounts, enabling you to manage your own
|
||||
Jami community while taking advantage of Jami's distributed network
|
||||
architecture. For more information, please visit https://jami.biz.
|
||||
|
||||
confinement: strict
|
||||
grade: stable
|
||||
base: core20
|
||||
|
||||
plugs:
|
||||
gnome-3-38-2004:
|
||||
interface: content
|
||||
target: $SNAP/gnome-platform
|
||||
default-provider: gnome-3-38-2004:gnome-3-38-2004
|
||||
gtk-3-themes:
|
||||
interface: content
|
||||
target: $SNAP/data-dir/themes
|
||||
default-provider: gtk-common-themes:gtk-3-themes
|
||||
icon-themes:
|
||||
interface: content
|
||||
target: $SNAP/data-dir/icons
|
||||
default-provider: gtk-common-themes:icon-themes
|
||||
sound-themes:
|
||||
interface: content
|
||||
target: $SNAP/data-dir/sounds
|
||||
default-provider: gtk-common-themes:sounds-themes
|
||||
|
||||
slots:
|
||||
dbus-jami:
|
||||
interface: dbus
|
||||
bus: session
|
||||
name: net.jami.Jami
|
||||
dbus-ring:
|
||||
interface: dbus
|
||||
bus: session
|
||||
name: cx.ring.Ring
|
||||
|
||||
layout:
|
||||
/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/alsa-lib:
|
||||
bind: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/alsa-lib
|
||||
/usr/share/alsa:
|
||||
bind: $SNAP/usr/share/alsa
|
||||
/usr/share/X11/xkb:
|
||||
bind: $SNAP/usr/share/X11/xkb
|
||||
|
||||
environment:
|
||||
XDG_CURRENT_DESKTOP: Unity
|
||||
QT_BASE_DIR: "/usr/lib/libqt-jami"
|
||||
LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:$SNAP$QT_BASE_DIR/lib"
|
||||
|
||||
apps:
|
||||
jami:
|
||||
command: usr/bin/jami
|
||||
command-chain:
|
||||
- bin/desktop-launch
|
||||
- snap/command-chain/alsa-launch
|
||||
- bin/jami-wrapper
|
||||
autostart: jami.desktop
|
||||
common-id: net.jami.Jami
|
||||
desktop: usr/share/applications/jami.desktop
|
||||
slots:
|
||||
- dbus-jami
|
||||
- dbus-ring
|
||||
plugs:
|
||||
- alsa
|
||||
- audio-playback
|
||||
- audio-record
|
||||
- browser-support
|
||||
- camera
|
||||
- desktop
|
||||
- desktop-legacy
|
||||
- gsettings
|
||||
- hardware-observe
|
||||
- home
|
||||
- network
|
||||
- network-bind
|
||||
- network-manager
|
||||
- opengl
|
||||
- removable-media
|
||||
- screen-inhibit-control
|
||||
- system-observe
|
||||
- unity7
|
||||
- wayland
|
||||
- x11
|
||||
|
||||
package-repositories:
|
||||
- type: apt
|
||||
components: [main]
|
||||
suites: [jami]
|
||||
key-id: A295D773307D25A33AE72F2F64CD5FA175348F84
|
||||
url: https://dl.jami.net/nightly/ubuntu_20.04/
|
||||
|
||||
parts:
|
||||
desktop-launch:
|
||||
source: https://github.com/ubuntu/snapcraft-desktop-helpers.git
|
||||
plugin: nil
|
||||
build-packages:
|
||||
- dpkg-dev
|
||||
- gcc
|
||||
- g++
|
||||
- cmake
|
||||
- cmake-data
|
||||
- libqt-jami
|
||||
- devscripts
|
||||
- equivs
|
||||
override-pull: |
|
||||
snapcraftctl pull
|
||||
sed -i -E 's|\. \$SNAP/flavor-select|USE_gtk3=true|' gtk/launcher-specific
|
||||
sed -i -E 's|\. \$SNAP/flavor-select|USE_qt5=true|' qt/launcher-specific
|
||||
sed -i -E 's|(append_dir GTK_PATH \$RUNTIME/usr/lib/\$ARCH/gtk-2.0)|#\1|' qt/launcher-specific
|
||||
sed -i -E 's|\$RUNTIME|$SNAP|g' qt/launcher-specific
|
||||
sed -i -E 's|\$WITH_RUNTIME|no|g' qt/launcher-specific
|
||||
override-build: |
|
||||
snapcraftctl build
|
||||
gcc -Wall -O2 -o bindtextdomain.so -fPIC -shared src/bindtextdomain.c -ldl
|
||||
|
||||
echo "#!/bin/bash" > desktop-launch
|
||||
cat common/init >> desktop-launch
|
||||
|
||||
cat qt/runtime-exports >> desktop-launch
|
||||
cat gtk/runtime-exports >> desktop-launch
|
||||
|
||||
cat common/desktop-exports >> desktop-launch
|
||||
|
||||
cat qt/launcher-specific >> desktop-launch
|
||||
cat gtk/launcher-specific >> desktop-launch
|
||||
|
||||
cat common/mark-and-exec >> desktop-launch
|
||||
|
||||
install -D -m755 desktop-launch $SNAPCRAFT_PART_INSTALL/bin/desktop-launch
|
||||
install -D -m644 bindtextdomain.so $SNAPCRAFT_PART_INSTALL/lib/bindtextdomain.so
|
||||
|
||||
mkdir -pv $SNAPCRAFT_PART_INSTALL/gnome-platform
|
||||
|
||||
scripts:
|
||||
plugin: dump
|
||||
source: common/scripts
|
||||
organize:
|
||||
jami-wrapper: bin/jami-wrapper
|
||||
|
||||
alsa-mixin:
|
||||
plugin: dump
|
||||
source: https://github.com/diddlesnaps/snapcraft-alsa.git
|
||||
source-subdir: snapcraft-assets
|
||||
stage:
|
||||
- -usr/lib/x86_64-linux-gnu/libp11-kit.so*
|
||||
- -usr/lib/x86_64-linux-gnu/libproxy.so*
|
||||
- -usr/share/doc/libp11-kit0/changelog.Debian.gz
|
||||
- -usr/share/doc/libproxy1v5/changelog.Debian.gz
|
||||
build-packages:
|
||||
- libasound2-dev
|
||||
stage-packages:
|
||||
- libasound2
|
||||
- libasound2-plugins
|
||||
- yad
|
||||
|
||||
jami:
|
||||
after: [alsa-mixin]
|
||||
source: .
|
||||
plugin: nil
|
||||
parse-info: [usr/share/metainfo/jami.appdata.xml]
|
||||
stage:
|
||||
- -usr/lib/x86_64-linux-gnu/liblber-2.4.so*
|
||||
- -usr/lib/x86_64-linux-gnu/libldap_r-2.4.so*
|
||||
- -usr/share/doc/libldap-2.4-2/changelog.Debian.gz
|
||||
- -usr/share/doc/libldap-common/changelog.Debian.gz
|
||||
build-environment:
|
||||
- QT_BASE_DIR: "/usr/lib/libqt-jami"
|
||||
- PATH: "$QT_BASE_DIR/bin:$PATH"
|
||||
- LD_LIBRARY_PATH: "$QT_BASE_DIR/lib:$LD_LIBRARY_PATH"
|
||||
- PKG_CONFIG_PATH: "$QT_BASE_DIR/lib/pkgconfig:$PKG_CONFIG_PATH"
|
||||
override-pull: |
|
||||
ls
|
||||
snapcraftctl pull
|
||||
sed -i -E 's|(tmpName) << (PACKAGE_NAME << "_shm_")|\1 << "snap.jami." << \2|' ./daemon/src/media/video/sinkclient.cpp
|
||||
sed -i -E 's|^Icon=.*|Icon=${SNAP}/usr/share/icons/hicolor/scalable/apps/jami.svg|' extras/data/jami.desktop
|
||||
override-build: |
|
||||
cd $SNAPCRAFT_PART_BUILD/daemon/contrib
|
||||
mkdir -p native
|
||||
cd native
|
||||
../bootstrap
|
||||
make .ffmpeg
|
||||
make
|
||||
|
||||
cd $SNAPCRAFT_PART_BUILD/daemon
|
||||
./autogen.sh
|
||||
./configure --prefix=/usr --without-dbus
|
||||
make -j$SNAPCRAFT_PARALLEL_BUILD_COUNT
|
||||
DESTDIR=$SNAPCRAFT_PART_INSTALL make install
|
||||
|
||||
cd $SNAPCRAFT_PART_BUILD/
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -DENABLE_LIBWRAP=true \
|
||||
-DLIBJAMI_BUILD_DIR=$SNAPCRAFT_PART_BUILD/daemon/src \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
make -j$SNAPCRAFT_PARALLEL_BUILD_COUNT
|
||||
DESTDIR=$SNAPCRAFT_PART_INSTALL make install
|
||||
build-packages:
|
||||
- autoconf
|
||||
- autoconf-archive
|
||||
- automake
|
||||
- autopoint
|
||||
- bzip2
|
||||
- curl
|
||||
- gcc
|
||||
- g++
|
||||
- gettext
|
||||
- gzip
|
||||
- libnotify-dev
|
||||
- libqrencode-dev
|
||||
- libsndfile1-dev
|
||||
- libspeex-dev
|
||||
- python3
|
||||
- python3-dev
|
||||
- uuid-dev
|
||||
- yasm
|
||||
- wget
|
||||
- nasm # ffmpeg
|
||||
- libavcodec-dev
|
||||
- libavdevice-dev
|
||||
- libavformat-dev
|
||||
- libswscale-dev
|
||||
- libva-dev
|
||||
- libvdpau-dev
|
||||
- libargon2-0-dev # opendht
|
||||
- libexpat1-dev
|
||||
- libjsoncpp-dev
|
||||
- libnm-dev # connectivityChanged()
|
||||
- libdbus-1-dev # dbus
|
||||
- libdbus-c++-dev
|
||||
- libpulse-dev # pulse
|
||||
- libudev-dev
|
||||
- libglu1-mesa-dev # Qt 6
|
||||
- zlib1g-dev
|
||||
- libgl-dev
|
||||
- libvulkan-dev
|
||||
- libgnutls28-dev # TLS
|
||||
- gnutls-bin
|
||||
- libssl-dev
|
||||
stage-packages:
|
||||
- libgnutls30
|
||||
- libavutil56
|
||||
- libdouble-conversion3
|
||||
- libegl1
|
||||
- libgbm1
|
||||
- libgstreamer-gl1.0-0
|
||||
- libgstreamer-plugins-base1.0-0
|
||||
- libgstreamer1.0-0
|
||||
- libgudev-1.0-0
|
||||
- libjsoncpp1
|
||||
- libllvm12
|
||||
- libminizip1
|
||||
- libnm0
|
||||
- libnotify4
|
||||
- libnspr4
|
||||
- libnss3
|
||||
- libopengl0
|
||||
- libopus0
|
||||
- liborc-0.4-0
|
||||
- libpcre2-16-0
|
||||
- libqrencode4
|
||||
- libqt-jami
|
||||
- libsnappy1v5
|
||||
- libspeex1
|
||||
- libproxy1v5
|
||||
- libwayland-server0
|
||||
- libwebpdemux2
|
||||
- libwebpmux3
|
||||
- libxkbfile1
|
||||
- libxtst6
|
||||
- ocl-icd-libopencl1
|
||||
- libva-drm2
|
||||
- libva-glx2
|
||||
- libva-wayland2
|
||||
- libva2
|
||||
- libvdpau-va-gl1
|
||||
- libvdpau1
|
||||
- va-driver-all
|
||||
prime:
|
||||
- -usr/lib/libqt-jami/bin/
|
||||
- -usr/lib/libqt-jami/docs/
|
||||
- -usr/lib/libqt-jami/examples/
|
||||
- -usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libLLVM-*.so*
|
||||
- -usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libclang-*.so*
|
||||
- -usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libflite*.so*
|
135
extras/packaging/gnu-linux/scripts/build-package-debian.sh
Executable file
135
extras/packaging/gnu-linux/scripts/build-package-debian.sh
Executable file
|
@ -0,0 +1,135 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (C) 2016-2021 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Alexandre Viau <alexandre.viau@savoirfairelinux.com>
|
||||
# Author: Amin Bandali <amin.bandali@savoirfairelinux.com>
|
||||
# Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# This script is used in the packaging containers to build packages on
|
||||
# debian-based distros.
|
||||
#
|
||||
set -e
|
||||
|
||||
DPKG_BUILD_OPTIONS=""
|
||||
# Set the host architecture as armhf and add some specific architecture
|
||||
# options to the package builder.
|
||||
if grep -q "raspbian_10_armhf" <<< "${DISTRIBUTION}"; then
|
||||
echo "Adding armhf as the host architecture."
|
||||
export HOST_ARCH=arm-linux-gnueabihf
|
||||
DPKG_BUILD_OPTIONS="${DPKG_BUILD_OPTIONS} -a armhf"
|
||||
fi
|
||||
|
||||
cache_packaging=$TARBALLS/$DISTRIBUTION
|
||||
mkdir -p "$cache_packaging"
|
||||
|
||||
deb_arch=$(dpkg --print-architecture)
|
||||
qt_deb_name=libqt-jami_${DEBIAN_QT_VERSION}_${deb_arch}.deb
|
||||
qt_deb_path=${cache_packaging}/${qt_deb_name}
|
||||
|
||||
QUILT_REFRESH_ARGS="-p 1"
|
||||
|
||||
if [ ! -f "${qt_deb_path}" ] || [ "${FORCE_REBUILD_QT}" = "true" ]; then
|
||||
(
|
||||
flock 9 # block until the lock file is gone
|
||||
test -f "${qt_deb_path}" && exit 0 # check again
|
||||
|
||||
# Build Qt.
|
||||
mkdir /opt/libqt-jami-build
|
||||
cd /opt/libqt-jami-build
|
||||
|
||||
qt_version=${QT_MAJOR}.${QT_MINOR}.${QT_PATCH}
|
||||
tarball_name=qt-everywhere-src-${qt_version}.tar.xz
|
||||
cached_tarball=$TARBALLS/$tarball_name
|
||||
qt_base_url=https://download.qt.io/archive/qt/\
|
||||
${QT_MAJOR}.${QT_MINOR}/${qt_version}/single
|
||||
|
||||
if [ ! -d "${TARBALLS}" ] || [ ! -w "${TARBALLS}" ]; then
|
||||
echo "error: $TARBALLS does not exist or is not writable"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "${cached_tarball}" ]; then
|
||||
(
|
||||
flock 8 # block until the lock file is gone
|
||||
test -f "${cached_tarball}" && exit 0 # check again
|
||||
|
||||
temp_dir=$(mktemp -d)
|
||||
cd "${temp_dir}"
|
||||
wget "${qt_base_url}/${tarball_name}"
|
||||
echo -n "${QT_TARBALL_CHECKSUM} ${tarball_name}" | sha256sum -c - || \
|
||||
(echo "Qt tarball checksum mismatch; quitting" && exit 1)
|
||||
mv "${tarball_name}" "${cached_tarball}"
|
||||
rm -rf "${temp_dir}"
|
||||
) 8>"${cached_tarball}.lock"
|
||||
|
||||
fi
|
||||
|
||||
cp "${cached_tarball}" "libqt-jami_${qt_version}.orig.tar.xz"
|
||||
tar xvf "libqt-jami_${qt_version}.orig.tar.xz"
|
||||
mv "qt-everywhere-src-${qt_version}" "libqt-jami-${qt_version}"
|
||||
cd "libqt-jami-${qt_version}"
|
||||
|
||||
# Extract the debian folder
|
||||
tar xf "/src/$RELEASE_TARBALL_FILENAME" client-qt/extras/packaging/gnu-linux/rules/debian-qt \
|
||||
--strip-components=5 && mv debian-qt debian
|
||||
|
||||
# Create the changelog file.
|
||||
DEBEMAIL="The Jami project <jami@gnu.org>" dch --create \
|
||||
--package libqt-jami \
|
||||
--newversion "${DEBIAN_QT_VERSION}" "New libqt-jami release"
|
||||
DEBEMAIL="The Jami project <jami@gnu.org>" dch --release \
|
||||
--distribution "unstable" debian/changelog
|
||||
|
||||
# Build and package Qt.
|
||||
dpkg-buildpackage -uc -us -d ${DPKG_BUILD_OPTIONS}
|
||||
|
||||
# Cache the built .deb.
|
||||
mv "../${qt_deb_name}" "${qt_deb_path}"
|
||||
|
||||
) 9>"${qt_deb_path}.lock"
|
||||
fi
|
||||
|
||||
# install libqt-jami from cache
|
||||
apt-get install -y "${qt_deb_path}"
|
||||
|
||||
# copy libqt-jami to output
|
||||
cp "${qt_deb_path}" /opt/output/
|
||||
|
||||
# Set up work directory.
|
||||
mkdir -p /jami/work && cd /jami/work
|
||||
|
||||
# Create a changelog file, required by dpkg-buildpackage.
|
||||
mkdir debian
|
||||
DEBEMAIL="The Jami project <jami@gnu.org>" dch --create --package jami \
|
||||
--newversion "${DEBIAN_VERSION}" "Automatic nightly release"
|
||||
DEBEMAIL="The Jami project <jami@gnu.org>" dch --release \
|
||||
--distribution "unstable" debian/changelog
|
||||
|
||||
# Unpack the source tarball.
|
||||
tar -xvf /src/"$RELEASE_TARBALL_FILENAME" --strip-components=1
|
||||
|
||||
# Expose the debian directory from here, augmented with the changelog.
|
||||
cp debian/changelog extras/packaging/gnu-linux/rules/debian
|
||||
rm -r debian
|
||||
ln -s extras/packaging/gnu-linux/rules/debian .
|
||||
|
||||
# Create the binary packages.
|
||||
dpkg-buildpackage -b -uc -us ${DPKG_BUILD_OPTIONS}
|
||||
|
||||
# Move the artifacts to the output.
|
||||
mv ../*deb /opt/output # .deb and .ddeb packages
|
||||
chown -R "${CURRENT_UID}:${CURRENT_UID}" /opt/output
|
149
extras/packaging/gnu-linux/scripts/build-package-rpm.sh
Executable file
149
extras/packaging/gnu-linux/scripts/build-package-rpm.sh
Executable file
|
@ -0,0 +1,149 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (C) 2016-2021 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Alexandre Viau <alexandre.viau@savoirfairelinux.com>
|
||||
# Author: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# This script is used in the packaging containers to build packages on
|
||||
# rpm-based distros.
|
||||
#
|
||||
set -e
|
||||
|
||||
# Import the spec file.
|
||||
mkdir -p /opt/client-qt
|
||||
cd /opt/client-qt
|
||||
tar xf "/src/$RELEASE_TARBALL_FILENAME" client-qt/extras/packaging/gnu-linux/rules/rpm \
|
||||
--strip-components=5 && mv rpm/* . && rmdir rpm
|
||||
rm jami-libqt.spec
|
||||
|
||||
# Prepare the build tree.
|
||||
rpmdev-setuptree
|
||||
|
||||
# Copy the source tarball.
|
||||
cp --reflink=auto "/src/$RELEASE_TARBALL_FILENAME" /root/rpmbuild/SOURCES
|
||||
|
||||
cp patches/0001-qtbug-101201-fatal-error-getcurrenkeyboard.patch /root/rpmbuild/SOURCES/
|
||||
|
||||
QT_JAMI_PREFIX="/usr/lib64/qt-jami"
|
||||
PATH="${QT_JAMI_PREFIX}/bin:${PATH}"
|
||||
LD_LIBRARY_PATH="${QT_JAMI_PREFIX}/lib:${LD_LIBRARY_PATH}"
|
||||
PKG_CONFIG_PATH="${QT_JAMI_PREFIX}/lib/pkgconfig:${PKG_CONFIG_PATH}"
|
||||
CMAKE_PREFIX_PATH="${QT_JAMI_PREFIX}/lib/cmake:${CMAKE_PREFIX_PATH}"
|
||||
QT_MAJOR=6
|
||||
QT_MINOR=2
|
||||
QT_PATCH=3
|
||||
QT_RELEASE_PATCH=5
|
||||
|
||||
QT_MAJOR_MINOR=${QT_MAJOR}.${QT_MINOR}
|
||||
QT_MAJOR_MINOR_PATCH=${QT_MAJOR}.${QT_MINOR}.${QT_PATCH}
|
||||
|
||||
QT_TARBALL_URL=https://download.qt.io/archive/qt/$QT_MAJOR_MINOR/\
|
||||
$QT_MAJOR_MINOR_PATCH/single/qt-everywhere-src-$QT_MAJOR_MINOR_PATCH.tar.xz
|
||||
|
||||
QT_TARBALL_SHA256="f784998a159334d1f47617fd51bd0619b9dbfe445184567d2cd7c820ccb12771"
|
||||
QT_TARBALL_FILE_NAME=$(basename "$QT_TARBALL_URL")
|
||||
CACHED_QT_TARBALL=$TARBALLS/$QT_TARBALL_FILE_NAME
|
||||
|
||||
mkdir -p "$TARBALLS/$DISTRIBUTION"
|
||||
RPM_PATH=$TARBALLS/$DISTRIBUTION/jami-libqt-$QT_MAJOR_MINOR_PATCH-${QT_RELEASE_PATCH}.x86_64.rpm
|
||||
if [[ "${DISTRIBUTION:0:4}" == "rhel" ]]; then
|
||||
RPM_PATH=$TARBALLS/${DISTRIBUTION}/jami-libqt-$QT_MAJOR_MINOR_PATCH-${QT_RELEASE_PATCH}.el8.x86_64.rpm
|
||||
fi
|
||||
|
||||
if [ ! -f "${RPM_PATH}" ]; then
|
||||
# The following block will only run on one build machine at a
|
||||
# time, thanks to flock.
|
||||
(
|
||||
flock 9 # block until the lock is available
|
||||
test -f "$RPM_PATH" && exit 0 # check again
|
||||
|
||||
mkdir /opt/qt-jami-build
|
||||
cd /opt/qt-jami-build
|
||||
tar xf "/src/$RELEASE_TARBALL_FILENAME" \
|
||||
client-qt/extras/packaging/gnu-linux/rules/rpm/jami-libqt.spec \
|
||||
--strip-components=6
|
||||
|
||||
# Fetch and cache the tarball, if not already available.
|
||||
if [ ! -f "$CACHED_QT_TARBALL" ]; then
|
||||
(
|
||||
flock 8 # block until the lock file is gone
|
||||
test -f "$CACHED_QT_TARBALL" && exit 0 # check again
|
||||
|
||||
wget "$QT_TARBALL_URL"
|
||||
if ! echo -n ${QT_TARBALL_SHA256} "$QT_TARBALL_FILE_NAME" | sha256sum -c -
|
||||
then
|
||||
echo "qt tarball checksum mismatch; quitting"
|
||||
exit 1
|
||||
fi
|
||||
mv "$QT_TARBALL_FILE_NAME" "$CACHED_QT_TARBALL"
|
||||
) 8>"${CACHED_QT_TARBALL}.lock"
|
||||
fi
|
||||
|
||||
cp "$CACHED_QT_TARBALL" "/root/rpmbuild/SOURCES/jami-qtlib_$QT_MAJOR_MINOR_PATCH.tar.xz"
|
||||
sed -i "s/RELEASE_VERSION/$QT_MAJOR_MINOR_PATCH/g" jami-libqt.spec
|
||||
rpmdev-bumpspec --comment="Automatic nightly release" \
|
||||
--userstring="Jenkins <jami@lists.savoirfairelinux.net>" jami-libqt.spec
|
||||
|
||||
rpmbuild --define "debug_package %{nil}" -ba jami-libqt.spec
|
||||
# Note: try to remove with Qt > 6. Else we have a problem with $ORIGIN
|
||||
mkdir -p "$TARBALLS/${DISTRIBUTION}"
|
||||
|
||||
# Cache the built Qt RPM package.
|
||||
if [[ "${DISTRIBUTION:0:4}" == "rhel" ]]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.el8.x86_64.rpm "${RPM_PATH}"
|
||||
elif [[ "${DISTRIBUTION}" == "fedora_33" ]]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc33.x86_64.rpm "${RPM_PATH}"
|
||||
elif [[ "${DISTRIBUTION}" == "fedora_34" ]]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc34.x86_64.rpm "${RPM_PATH}"
|
||||
elif [[ "${DISTRIBUTION}" == "fedora_35" ]]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc35.x86_64.rpm "${RPM_PATH}"
|
||||
elif [[ "${DISTRIBUTION}" == "fedora_36" ]]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc36.x86_64.rpm "${RPM_PATH}"
|
||||
elif [[ "${DISTRIBUTION}" == "fedora_37" ]]; then
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc37.x86_64.rpm "${RPM_PATH}"
|
||||
else
|
||||
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-*.rpm "${RPM_PATH}"
|
||||
fi
|
||||
) 9>"${RPM_PATH}.lock"
|
||||
fi
|
||||
rpm --install "${RPM_PATH}"
|
||||
cp "${RPM_PATH}" /opt/output
|
||||
cd /opt/client-qt
|
||||
|
||||
# Set the version and associated comment.
|
||||
sed -i "s/RELEASE_VERSION/${RELEASE_VERSION}/g" ./*.spec
|
||||
rpmdev-bumpspec --comment="Automatic nightly release" \
|
||||
--userstring="Jenkins <jami@lists.savoirfairelinux.net>" ./*.spec
|
||||
|
||||
# Build the daemon and install it.
|
||||
rpmbuild --define "debug_package %{nil}" -ba jami-daemon.spec
|
||||
rpm --install /root/rpmbuild/RPMS/x86_64/jami-daemon-*
|
||||
|
||||
# Build the temporary transitional packages.
|
||||
rpmbuild --define "debug_package %{nil}" -ba jami-libclient.spec
|
||||
rpmbuild --define "debug_package %{nil}" -ba jami-qt.spec
|
||||
|
||||
# Build the Qt client.
|
||||
rpmbuild --define "debug_package %{nil}" -ba jami.spec
|
||||
|
||||
# Move the built packages to the output directory.
|
||||
mv /root/rpmbuild/RPMS/*/* /opt/output
|
||||
touch /opt/output/.packages-built
|
||||
chown -R "$CURRENT_UID:$CURRENT_UID" /opt/output
|
||||
|
||||
# TODO: One click install: create a package that combines the already
|
||||
# built package into one.
|
38
extras/packaging/gnu-linux/scripts/build-package-snap.sh
Executable file
38
extras/packaging/gnu-linux/scripts/build-package-snap.sh
Executable file
|
@ -0,0 +1,38 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (C) 2020-2021 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Amin Bandali <amin.bandali@savoirfairelinux.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# This script is used in the packaging containers to build a snap
|
||||
# package on an ubuntu base distro.
|
||||
|
||||
|
||||
set -e
|
||||
|
||||
tar xf "/src/$RELEASE_TARBALL_FILENAME" -C /opt
|
||||
cd /opt/client-qt/
|
||||
cp -r extras/packaging/gnu-linux/rules/snap/common .
|
||||
cp -r extras/packaging/gnu-linux/rules/snap/${SNAP_PKG_NAME}/snapcraft.yaml .
|
||||
|
||||
# set the version and tarball filename
|
||||
sed -i "s/RELEASE_VERSION/${RELEASE_VERSION}/g" snapcraft.yaml
|
||||
|
||||
snapcraft # requires snapcraft >= 4.8
|
||||
|
||||
# move the built snap to output
|
||||
mv *.snap /opt/output/
|
||||
chown ${CURRENT_UID}:${CURRENT_GID} /opt/output/*.snap
|
332
extras/packaging/gnu-linux/scripts/deploy-packages.sh
Executable file
332
extras/packaging/gnu-linux/scripts/deploy-packages.sh
Executable file
|
@ -0,0 +1,332 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (C) 2016-2021 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Alexandre Viau <alexandre.viau@savoirfairelinux.com>
|
||||
# Author: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
#
|
||||
# This script syncs and deploys packages ./extras/packaging/gnu-linux/from packages/distro.
|
||||
# It should be run from the project root directory.
|
||||
#
|
||||
# Requirements
|
||||
# - createrepo-c
|
||||
# - dpkg
|
||||
# - reprepro
|
||||
# - rpm
|
||||
# - rsync
|
||||
# - snapcraft
|
||||
|
||||
# Exit immediately if a command exits with a non-zero status
|
||||
set -e
|
||||
|
||||
###############################
|
||||
## Debian / Ubuntu packaging ##
|
||||
###############################
|
||||
|
||||
function package_deb()
|
||||
{
|
||||
DISTRIBUTION_REPOSITORY_FOLDER=$(realpath repositories)/${DISTRIBUTION}
|
||||
mkdir -p ${DISTRIBUTION_REPOSITORY_FOLDER}
|
||||
|
||||
##################################################
|
||||
## Create local repository for the given distro ##
|
||||
##################################################
|
||||
echo "#########################"
|
||||
echo "## Creating repository ##"
|
||||
echo "#########################"
|
||||
|
||||
mkdir ${DISTRIBUTION_REPOSITORY_FOLDER}/conf
|
||||
|
||||
# Distributions file
|
||||
cat << EOF > ${DISTRIBUTION_REPOSITORY_FOLDER}/conf/distributions
|
||||
Origin: jami
|
||||
Label: Jami ${DISTRIBUTION} Repository
|
||||
Codename: jami
|
||||
Architectures: i386 amd64 armhf arm64
|
||||
Components: main
|
||||
Description: This repository contains Jami ${DISTRIBUTION} packages
|
||||
SignWith: ${KEYID}
|
||||
|
||||
# TODO: Remove when April 2024 comes.
|
||||
Origin: ring
|
||||
Label: Ring ${DISTRIBUTION} Repository
|
||||
Codename: ring
|
||||
Architectures: i386 amd64 armhf arm64
|
||||
Components: main
|
||||
Description: This repository contains Ring ${DISTRIBUTION} packages
|
||||
SignWith: ${KEYID}
|
||||
EOF
|
||||
|
||||
####################################
|
||||
## Add packages to the repository ##
|
||||
####################################
|
||||
# Note: reprepro currently only accepts .deb files as input, but
|
||||
# Ubuntu generates their debug symbol packages as .ddeb (see:
|
||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=730572). As
|
||||
# these are just regular Debian packages, simply append the .deb
|
||||
# extension to their file name to work around this.
|
||||
find ./extras/packaging/gnu-linux/packages -type f -name '*.ddeb' -print0 | xargs -0 -I{} mv {} {}.deb
|
||||
|
||||
for package in ./extras/packaging/gnu-linux/packages/${DISTRIBUTION}*/*.deb; do
|
||||
echo "## signing: ${package} ##"
|
||||
dpkg-sig -k ${KEYID} --sign builder ${package}
|
||||
|
||||
echo "## including ${package} ##"
|
||||
package_name=$(dpkg -I ${package} | grep -m 1 Package: | awk '{print $2}')
|
||||
package_arch=$(dpkg -I ${package} | grep -m 1 Architecture: | awk '{print $2}')
|
||||
|
||||
if [ ${package_arch} = "all" ]; then
|
||||
# Removing to avoid the error of adding the same deb twice.
|
||||
# This happens with arch all packages, which are generated in amd64 and i386.
|
||||
reprepro --verbose --basedir ${DISTRIBUTION_REPOSITORY_FOLDER} remove jami ${package_name}
|
||||
# TODO: Remove when April 2024 comes.
|
||||
reprepro --verbose --basedir ${DISTRIBUTION_REPOSITORY_FOLDER} remove ring ${package_name}
|
||||
fi
|
||||
reprepro --verbose --basedir ${DISTRIBUTION_REPOSITORY_FOLDER} includedeb jami ${package}
|
||||
# TODO: Remove when April 2024 comes.
|
||||
reprepro --verbose --basedir ${DISTRIBUTION_REPOSITORY_FOLDER} includedeb ring ${package}
|
||||
done
|
||||
|
||||
# Rebuild the index
|
||||
reprepro --verbose --basedir ${DISTRIBUTION_REPOSITORY_FOLDER} export jami
|
||||
# TODO: Remove when April 2024 comes.
|
||||
reprepro --verbose --basedir ${DISTRIBUTION_REPOSITORY_FOLDER} export ring
|
||||
|
||||
# Show the contents
|
||||
reprepro --verbose --basedir ${DISTRIBUTION_REPOSITORY_FOLDER} list jami
|
||||
# TODO: Remove when April 2024 comes.
|
||||
reprepro --verbose --basedir ${DISTRIBUTION_REPOSITORY_FOLDER} list ring
|
||||
|
||||
#######################################
|
||||
## create the manual download folder ##
|
||||
#######################################
|
||||
NAME_PATTERN=jami-all_????????.*\~dfsg*.deb
|
||||
if ls ./extras/packaging/gnu-linux/packages/${DISTRIBUTION}/${NAME_PATTERN} &> /dev/null; then
|
||||
DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER=$(realpath manual-download)/${DISTRIBUTION}
|
||||
mkdir -p ${DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER}
|
||||
cp ./extras/packaging/gnu-linux/packages/${DISTRIBUTION}/${NAME_PATTERN} ${DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER}
|
||||
for package in ${DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER}/${NAME_PATTERN} ; do
|
||||
package_name=$(dpkg -I ${package} | grep -m 1 Package: | awk '{print $2}')
|
||||
package_arch=$(dpkg -I ${package} | grep -m 1 Architecture: | awk '{print $2}')
|
||||
package_shortname=${package_name}_${package_arch}.deb
|
||||
rm -f ${DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER}/${package_shortname}
|
||||
cp ${package} ${DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER}/${package_shortname}
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
######################
|
||||
## Fedora packaging ##
|
||||
######################
|
||||
|
||||
function package_rpm()
|
||||
{
|
||||
##################################################
|
||||
## Create local repository for the given distro ##
|
||||
##################################################
|
||||
echo "#########################"
|
||||
echo "## Creating repository ##"
|
||||
echo "#########################"
|
||||
|
||||
local name
|
||||
local baseurl
|
||||
|
||||
DISTRIBUTION_REPOSITORY_FOLDER=$(realpath repositories)/${DISTRIBUTION}
|
||||
mkdir -p ${DISTRIBUTION_REPOSITORY_FOLDER}
|
||||
|
||||
# .repo file
|
||||
name="${DISTRIBUTION%_*} \$releasever - \$basearch - jami"
|
||||
baseurl="https://dl.jami.net/${CHANNEL}/${DISTRIBUTION%_*}_\$releasever"
|
||||
|
||||
cat << EOF > ${DISTRIBUTION_REPOSITORY_FOLDER}/jami-${CHANNEL}.repo
|
||||
[jami]
|
||||
name=$name
|
||||
baseurl=$baseurl
|
||||
gpgcheck=1
|
||||
gpgkey=https://dl.jami.net/jami.pub.key
|
||||
enabled=1
|
||||
EOF
|
||||
|
||||
####################################
|
||||
## Add packages to the repository ##
|
||||
####################################
|
||||
|
||||
# Sign the rpms
|
||||
echo "##################"
|
||||
echo "## signing rpms ##"
|
||||
echo "##################"
|
||||
|
||||
# RPM macros
|
||||
if [ ! -f ~/.rpmmacros ];
|
||||
then
|
||||
echo "%_signature gpg" > ~/.rpmmacros
|
||||
echo "%_gpg_name ${KEYID}" >> ~/.rpmmacros
|
||||
fi
|
||||
|
||||
for package in ./extras/packaging/gnu-linux/packages/${DISTRIBUTION}*/*.rpm; do
|
||||
rpmsign --resign --key-id=${KEYID} ${package}
|
||||
cp ${package} ${DISTRIBUTION_REPOSITORY_FOLDER}
|
||||
done
|
||||
|
||||
# Create the repo
|
||||
createrepo_c --update ${DISTRIBUTION_REPOSITORY_FOLDER}
|
||||
|
||||
#######################################
|
||||
## create the manual download folder ##
|
||||
#######################################
|
||||
local packages
|
||||
|
||||
DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER=$(realpath manual-download)/${DISTRIBUTION}
|
||||
mkdir -p ${DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER}
|
||||
|
||||
if [ -d "./extras/packaging/gnu-linux/packages/${DISTRIBUTION}/one-click-install/" ]; then
|
||||
packages=(./extras/packaging/gnu-linux/packages/${DISTRIBUTION}*/one-click-install/*.rpm)
|
||||
else
|
||||
packages=(./extras/packaging/gnu-linux/packages/${DISTRIBUTION}*/*.rpm)
|
||||
fi
|
||||
|
||||
for package in "${packages[@]}"; do
|
||||
cp ${package} ${DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER}
|
||||
package_name=$(rpm -qp --queryformat '%{NAME}' ${package})
|
||||
package_arch=$(rpm -qp --queryformat '%{ARCH}' ${package})
|
||||
cp ${package} ${DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER}/${package_name}_${package_arch}.rpm
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
####################
|
||||
## Snap packaging ##
|
||||
####################
|
||||
|
||||
function package_snap()
|
||||
{
|
||||
echo "####################"
|
||||
echo "## deploying snap ##"
|
||||
echo "####################"
|
||||
|
||||
if [[ "${CHANNEL:0:8}" == "internal" ]]; then
|
||||
DISTRIBUTION_REPOSITORY_FOLDER=$(realpath repositories)/${DISTRIBUTION}
|
||||
mkdir -p ${DISTRIBUTION_REPOSITORY_FOLDER}
|
||||
ls ./extras/packaging/gnu-linux/packages/${DISTRIBUTION}*
|
||||
cp ./extras/packaging/gnu-linux/packages/${DISTRIBUTION}*/*.snap ${DISTRIBUTION_REPOSITORY_FOLDER}/
|
||||
elif [[ $CHANNEL =~ nightly ]]; then
|
||||
echo $(hostname)
|
||||
echo $(whoami)
|
||||
echo $(snapcraft whoami)
|
||||
snapcraft push ./extras/packaging/gnu-linux/packages/${DISTRIBUTION}*/*.snap --release edge
|
||||
elif [[ $CHANNEL =~ stable ]]; then
|
||||
snapcraft push ./extras/packaging/gnu-linux/packages/${DISTRIBUTION}*/*.snap --release stable
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
################################################
|
||||
## Deploy packages on given remote repository ##
|
||||
################################################
|
||||
|
||||
function deploy()
|
||||
{
|
||||
if [ -f "${SSH_IDENTITY_FILE}" ];
|
||||
then
|
||||
export RSYNC_RSH="ssh -i ${SSH_IDENTITY_FILE}"
|
||||
fi
|
||||
|
||||
echo "##########################"
|
||||
echo "## deploying repository ##"
|
||||
echo "##########################"
|
||||
echo "Using RSYNC_RSH='${RSYNC_RSH}'"
|
||||
rsync --archive --recursive --verbose \
|
||||
--delete ${DISTRIBUTION_REPOSITORY_FOLDER} \
|
||||
${REMOTE_REPOSITORY_LOCATION}
|
||||
|
||||
echo "#####################################"
|
||||
echo "## deploying manual download files ##"
|
||||
echo "#####################################"
|
||||
rsync --archive --recursive --verbose \
|
||||
--delete ${DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER} \
|
||||
${REMOTE_MANUAL_DOWNLOAD_LOCATION}
|
||||
}
|
||||
|
||||
|
||||
##########################################################
|
||||
## Detect suitable packaging based on distribution name ##
|
||||
##########################################################
|
||||
|
||||
function package()
|
||||
{
|
||||
if [[ $DISTRIBUTION =~ debian|ubuntu|raspbian|guix-deb-pack ]]; then
|
||||
package_deb
|
||||
elif [[ $DISTRIBUTION =~ fedora|rhel|opensuse ]]; then
|
||||
package_rpm
|
||||
elif [[ $DISTRIBUTION =~ snap ]]; then
|
||||
package_snap
|
||||
else
|
||||
echo "error: Distribution \"$DISTRIBUTION\" is not supported"
|
||||
fi
|
||||
}
|
||||
|
||||
function remove-deployed-files()
|
||||
{
|
||||
# remove deployed files
|
||||
rm -rf manual-download
|
||||
rm -rf repositories
|
||||
rm -rf ${DISTRIBUTION_REPOSITORY_FOLDER}
|
||||
}
|
||||
|
||||
for i in "$@"
|
||||
do
|
||||
case $i in
|
||||
--distribution=*)
|
||||
DISTRIBUTION="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
--keyid=*)
|
||||
KEYID="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
--remote-repository-location=*)
|
||||
REMOTE_REPOSITORY_LOCATION="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
--remote-manual-download-location=*)
|
||||
REMOTE_MANUAL_DOWNLOAD_LOCATION="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
--remote-ssh-identity-file=*)
|
||||
SSH_IDENTITY_FILE="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
echo "Unrecognized option ${i}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
if [ -z "${KEYID}" ];
|
||||
then
|
||||
DISTRIBUTION_REPOSITORY_FOLDER=$(realpath repositories)/${DISTRIBUTION}
|
||||
DISTRIBUTION_MANUAL_DOWNLOAD_FOLDER=$(realpath manual-download)/${DISTRIBUTION}
|
||||
deploy
|
||||
remove-deployed-files
|
||||
else
|
||||
package
|
||||
deploy
|
||||
fi
|
15
extras/packaging/gnu-linux/scripts/install-cmake.sh
Executable file
15
extras/packaging/gnu-linux/scripts/install-cmake.sh
Executable file
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
if command -v apt-get &> /dev/null
|
||||
then
|
||||
apt-get remove cmake cmake-data -y
|
||||
fi
|
||||
|
||||
wget https://github.com/Kitware/CMake/releases/download/v3.19.8/cmake-3.19.8-Linux-x86_64.sh \
|
||||
-q -O /tmp/cmake-install.sh
|
||||
echo "aa5a0e0dd5594b7fd7c107a001a2bfb5f83d9b5d89cf4acabf423c5d977863ad /tmp/cmake-install.sh" | sha256sum --check
|
||||
chmod u+x /tmp/cmake-install.sh
|
||||
/tmp/cmake-install.sh --skip-license --prefix=/usr/local/
|
||||
rm /tmp/cmake-install.sh
|
86
extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh
Executable file
86
extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh
Executable file
|
@ -0,0 +1,86 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (C) 2021 Savoir-faire Linux Inc.
|
||||
#
|
||||
# Author: Amin Bandali <amin.bandali@savoirfairelinux.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# This script is used in the packaging containers to build packages on
|
||||
# debian-based distros.
|
||||
|
||||
set -e
|
||||
|
||||
DPKG_BUILD_OPTIONS=""
|
||||
# Set the host architecture as armhf and add some specific architecture
|
||||
# options to the package builder.
|
||||
if grep -q "raspbian_10_armhf" <<< "${DISTRIBUTION}"; then
|
||||
echo "Adding armhf as the host architecture."
|
||||
export HOST_ARCH=arm-linux-gnueabihf
|
||||
DPKG_BUILD_OPTIONS="${DPKG_BUILD_OPTIONS} -a armhf"
|
||||
fi
|
||||
|
||||
install_deps()
|
||||
{
|
||||
apt-get update
|
||||
mk-build-deps \
|
||||
--remove --install \
|
||||
--tool "apt-get -y --no-install-recommends -o Acquire::Retries=10" \
|
||||
"debian/control"
|
||||
}
|
||||
|
||||
install_dummy()
|
||||
{
|
||||
cat <<EOF > dummy-libqt-jami.equivs
|
||||
Package: libqt-jami
|
||||
Version: 1.0
|
||||
Maintainer: The Jami project <jami@gnu.org>
|
||||
Architecture: all
|
||||
Description: Dummy libqt-jami package
|
||||
EOF
|
||||
equivs-build dummy-libqt-jami.equivs
|
||||
dpkg -i libqt-jami_1.0_all.deb
|
||||
}
|
||||
|
||||
remove_dummy()
|
||||
{
|
||||
dpkg -r libqt-jami
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
qt-deps)
|
||||
(
|
||||
cd /tmp/builddeps
|
||||
install_deps
|
||||
dpkg -r libqt-jami-build-deps
|
||||
)
|
||||
rm -rf /tmp/builddeps
|
||||
exit 0
|
||||
;;
|
||||
jami-deps)
|
||||
(
|
||||
cd /tmp/builddeps
|
||||
install_dummy
|
||||
install_deps
|
||||
dpkg -r jami-build-deps
|
||||
remove_dummy
|
||||
)
|
||||
rm -rf /tmp/builddeps
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
printf "Usage: %s {qt-deps|jami-deps}\n" "$0"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
16
extras/packaging/gnu-linux/tarballs.manifest
Normal file
16
extras/packaging/gnu-linux/tarballs.manifest
Normal file
|
@ -0,0 +1,16 @@
|
|||
/home/amarok/Projects/jami/daemon/contrib/tarballs/asio-asio-1-22-1.tar.gz
|
||||
/home/amarok/Projects/jami/daemon/contrib/tarballs/ffmpeg-n5.0.tar.gz
|
||||
/home/amarok/Projects/jami/daemon/contrib/tarballs/ffnvcodec-n11.1.5.1.tar.xz
|
||||
/home/amarok/Projects/jami/daemon/contrib/tarballs/fmt-9.1.0.tar.gz
|
||||
/home/amarok/Projects/jami/daemon/contrib/tarballs/gmp-6.2.1.tar.bz2
|
||||
/home/amarok/Projects/jami/daemon/contrib/tarballs/http-parser-2.9.4.tar.gz
|
||||
/home/amarok/Projects/jami/daemon/contrib/tarballs/libarchive-3.6.0.tar.xz
|
||||
/home/amarok/Projects/jami/daemon/contrib/tarballs/libgit2-v1.1.0.tar.gz
|
||||
/home/amarok/Projects/jami/daemon/contrib/tarballs/libnatpmp-20150609.tar.gz
|
||||
/home/amarok/Projects/jami/daemon/contrib/tarballs/opendht-af7d88b057fa4c84ab9096c6a1932bd5d34634ef.tar.gz
|
||||
/home/amarok/Projects/jami/daemon/contrib/tarballs/pjproject-513a3f14c44b2c2652f9219ec20dea64b236b713.tar.gz
|
||||
/home/amarok/Projects/jami/daemon/contrib/tarballs/restinio-bbaa034dbcc7555ce67df0f8a1475591a7441733.tar.gz
|
||||
/home/amarok/Projects/jami/daemon/contrib/tarballs/secp256k1-0b7024185045a49a1a6a4c5615bf31c94f63d9c4.tar.gz
|
||||
/home/amarok/Projects/jami/daemon/contrib/tarballs/pupnp-release-1.14.13.tar.gz
|
||||
/home/amarok/Projects/jami/daemon/contrib/tarballs/libvpx-v1.12.0.tar.gz
|
||||
/home/amarok/Projects/jami/daemon/contrib/tarballs/webrtc-audio-processing-v0.3.1.tar.gz
|
Loading…
Add table
Reference in a new issue