mirror of
https://git.jami.net/savoirfairelinux/jami-client-qt.git
synced 2025-03-28 14:56:19 +01:00
136 lines
4.9 KiB
Bash
Executable file
136 lines
4.9 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#
|
|
# Copyright (C) 2016-2024 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}" .
|