1
0
Fork 0
mirror of https://git.jami.net/savoirfairelinux/jami-client-qt.git synced 2025-07-08 09:35:24 +02:00
jami-client-qt/extras/packaging/gnu-linux/scripts/build-package-debian.sh
Sébastien Blin 668e6dbe24 packaging: add fedora 38, ubuntu 23.04
Ubuntu 23.04 is not yet functional due to python2 missing.
We're working on fixing Jami for Qt 6.4 (they changed the whole video
pipeline and introduced some breaking changes).
Fedora 38 is working fine.

GitLab: #1086
Change-Id: I51bbecdfbcf908e2bf57c4c002ef4216a34d746d
2023-04-26 14:48:03 -04:00

136 lines
4.9 KiB
Bash
Executable file

#!/usr/bin/env bash
#
# Copyright (C) 2016-2023 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" --wildcards 'jami-*/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
chown -R "${CURRENT_UID}:${CURRENT_UID}" .