mirror of
https://git.jami.net/savoirfairelinux/jami-client-qt.git
synced 2025-04-21 21:52:03 +02:00
packaging: Update release tarball name and version scheme.
* extras/packaging/gnu-linux/scripts/release-version.sh: Add script for deriving (reproducibly) a release version. The format will follow a 'YYYYMMDD.X' scheme, where 'YYYYMMDD' is the date of the last commit on the current branch, and 'X' the number of releases tagged that day, starting from zero. Example: the first stable release with a newest commit date of 2023-01-02 would have a version of '20230102.0', the subsequent one '20230102.1', and so on. This is derived by counting the number of git tags with the prefix 'TYPE/YYYYMMDD', where 'TYPE' is the release type: either 'stable', 'beta', or 'nightly'. * extras/packaging/gnu-linux/Jenkinsfile: Call the above new script to derive the release version to use for tagging. * extras/packaging/gnu-linux/Makefile: Switch from the previous 'jami_YYYYMMDD.hhmm.COMMIT.tar.gz' tarball filename format to 'jami-YYYYMMDD.X.tar.gz'. The new format is shorter, omits the unnecessary and confusing commit id, and uses dash instead of underscore. Also, it contains everything in a top-level directory with the same name as the tarball (without the .tar.gz extensions), so that 'jami-YYYYMMDD.X.tar.gz' nicely extracts to 'jami-YYYYMMDD.X'. With these changes, our release tarballs will follow more closely the related instructions from the GNU maintainers manual: https://www.gnu.org/prep/maintain/html_node/Distribution-tar-Files.html Lastly, this change inadvertently 'fixes' a recent issue where the 'extras/ci/client-qt-gnulinux' subdirectory and its contents would be moved to top-level in the tarball due to one of the tarball transforms matching the 'client-qt' in the directory's name, replacing the 'extras/ci/client-qt' prefix with 'client-qt', thereby resulting in 'client-qt-gnulinux' being moved to the tarball's top-level. * .gitignore: Ignore several packaging-related directories and files. * extras/packaging/gnu-linux/rules/rpm/jami-daemon.spec: * extras/packaging/gnu-linux/rules/rpm/jami-libclient.spec: * extras/packaging/gnu-linux/rules/rpm/jami-qt.spec: * extras/packaging/gnu-linux/rules/rpm/jami.spec: Update the expected release tarball filename pattern in the 'Source' field. Also replace references to previous top-level directory name 'client-qt' with the new one 'jami-%{version}' where needed. * extras/packaging/gnu-linux/rules/rpm/jami-libqt.spec: Update the 'Source' field to follow new tarball name consistent with the main Jami release tarball. * extras/packaging/gnu-linux/scripts/build-package-rpm.sh: Update the tarball top-level directory pattern for the new format, now passing the --wildcards option to GNU Tar. Also use a name for the jami-libqt source tarball that is more consistent with the main Jami release tarball. * extras/packaging/gnu-linux/scripts/build-package-snap.sh: Update the top-level directory pattern for the new format. * extras/packaging/gnu-linux/tarballs.manifest: Drop file accidentally checked into git. Change-Id: I2695f560c0bc5e61fb99dc0244f8fbb8e7026a62
This commit is contained in:
parent
a791ab5a52
commit
43c2197ef1
12 changed files with 86 additions and 60 deletions
7
.gitignore
vendored
7
.gitignore
vendored
|
@ -36,3 +36,10 @@ src/app/constant/JamiResources.qml
|
|||
|
||||
# macOS
|
||||
.DS_Store
|
||||
|
||||
# packaging
|
||||
.tarball-version
|
||||
tarballs.manifest
|
||||
jami-*.tar.gz
|
||||
extras/packaging/gnu-linux/packages/
|
||||
.docker-image-*
|
||||
|
|
4
extras/packaging/gnu-linux/Jenkinsfile
vendored
4
extras/packaging/gnu-linux/Jenkinsfile
vendored
|
@ -140,8 +140,8 @@ make -f extras/packaging/gnu-linux/Makefile portable-release-tarball .tarball-ve
|
|||
sshagent(credentials: [JENKINS_SSH_KEY, DL_SSH_KEY]) {
|
||||
echo "Publishing to git repository..."
|
||||
script {
|
||||
def wantedTag = sh (
|
||||
script: "echo ${params.CHANNEL}/\$(date +\"%Y%m%d\")",
|
||||
def wantedTag = "${params.CHANNEL}/" + sh (
|
||||
script: "./extras/packaging/gnu-linux/scripts/release-version.sh ${params.CHANNEL}",
|
||||
returnStdout: true
|
||||
).trim()
|
||||
sh """
|
||||
|
|
|
@ -27,17 +27,17 @@ export TARBALLS ?= /var/cache/jami
|
|||
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)
|
||||
RELEASE_VERSION := $(shell ./extras/packaging/gnu-linux/scripts/release-version.sh)
|
||||
else
|
||||
$(warning Using version from the .tarball-version file: $(TARBALL_VERSION))
|
||||
RELEASE_VERSION := $(TARBALL_VERSION)
|
||||
endif
|
||||
RELEASE_TARBALL_FILENAME := jami_$(RELEASE_VERSION).tar.gz
|
||||
RELEASE_DIRNAME := jami-$(RELEASE_VERSION)
|
||||
RELEASE_TARBALL_FILENAME := $(RELEASE_DIRNAME).tar.gz
|
||||
|
||||
# Export for consumption in child processes.
|
||||
export RELEASE_VERSION
|
||||
export RELEASE_DIRNAME
|
||||
export RELEASE_TARBALL_FILENAME
|
||||
|
||||
# Debian versions
|
||||
|
@ -78,7 +78,7 @@ TAR_REPRODUCIBILITY_OPTIONS = \
|
|||
echo $(RELEASE_VERSION) > $@
|
||||
|
||||
purge-release-tarballs:
|
||||
rm -f jami_*.tar.* tarballs.manifest
|
||||
rm -f jami-*.tar.* tarballs.manifest
|
||||
|
||||
release-tarball:
|
||||
rm -f "$(RELEASE_TARBALL_FILENAME)" tarballs.manifest
|
||||
|
@ -123,27 +123,27 @@ ifeq ($(TARBALL_VERSION),)
|
|||
$(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
|
||||
mkdir $(TMPDIR)/$(RELEASE_DIRNAME)
|
||||
git archive HEAD | tar xf - -C $(TMPDIR)/$(RELEASE_DIRNAME)
|
||||
for m in \
|
||||
./daemon \
|
||||
. \
|
||||
./3rdparty/SortFilterProxyModel; do \
|
||||
(cd "$$m" && git archive --prefix "$$m/" HEAD \
|
||||
| tar xf - -C $(TMPDIR)/client-qt); \
|
||||
| tar xf - -C $(TMPDIR)/$(RELEASE_DIRNAME)); \
|
||||
done
|
||||
# Create the base archive.
|
||||
tar -cf $(TMPDIR)/client-qt.tar $(TMPDIR)/client-qt \
|
||||
--transform 's,.*/client-qt,client-qt,' \
|
||||
tar -cf $(TMPDIR)/$(RELEASE_DIRNAME).tar $(TMPDIR)/$(RELEASE_DIRNAME) \
|
||||
--transform "s,.*/$(RELEASE_DIRNAME),$(RELEASE_DIRNAME)," \
|
||||
$(TAR_REPRODUCIBILITY_OPTIONS)
|
||||
# Append the cached tarballs listed in the manifest.
|
||||
tar --append --file $(TMPDIR)/client-qt.tar \
|
||||
tar --append --file $(TMPDIR)/$(RELEASE_DIRNAME).tar \
|
||||
--files-from $< \
|
||||
--transform 's,^.*/,client-qt/daemon/contrib/tarballs/,' \
|
||||
--transform "s,^.*/,$(RELEASE_DIRNAME)/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 "$@"
|
||||
gzip --no-name $(TMPDIR)/$(RELEASE_DIRNAME).tar
|
||||
mv $(TMPDIR)/$(RELEASE_DIRNAME).tar.gz "$@"
|
||||
rm -rf $(TMPDIR)
|
||||
else
|
||||
# If TARBALL_VERSION is defined, assume it's already been generated,
|
||||
|
@ -189,6 +189,7 @@ $(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_DIRNAME="$(RELEASE_DIRNAME)" \
|
||||
-e RELEASE_TARBALL_FILENAME="$(RELEASE_TARBALL_FILENAME)" \
|
||||
-e DEBIAN_VERSION="$(DEBIAN_VERSION)" \
|
||||
-e DEBIAN_QT_VERSION="$(DEBIAN_QT_VERSION)" \
|
||||
|
@ -296,8 +297,7 @@ env:
|
|||
clean:
|
||||
rm -rf env
|
||||
rm -rf docs/build
|
||||
rm -f jami_*.tar.gz
|
||||
rm -f jami-*.tar.gz
|
||||
rm -rf extras/packaging/gnu-linux/packages
|
||||
rm -f Makefile.packaging.distro_targets
|
||||
rm -f .docker-image-*
|
||||
rm -rf client-qt/daemon/contrib/tarballs/*
|
||||
rm -rf daemon/contrib/tarballs/*
|
||||
|
|
|
@ -10,7 +10,7 @@ Group: Applications/Internet
|
|||
License: GPLv3+
|
||||
Vendor: Savoir-faire Linux
|
||||
URL: https://jami.net/
|
||||
Source: jami_%{version}.tar.gz
|
||||
Source: jami-%{version}.tar.gz
|
||||
Requires: jami-daemon = %{version}
|
||||
|
||||
# Build dependencies
|
||||
|
@ -59,14 +59,14 @@ universal communication which respects the freedoms and privacy of its
|
|||
users.
|
||||
|
||||
%prep
|
||||
%setup -n client-qt
|
||||
%setup -n jami-%{version}
|
||||
|
||||
%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 && \
|
||||
cd %{_builddir}/jami-%{version}/daemon/contrib/native && \
|
||||
../bootstrap \
|
||||
--no-checksums \
|
||||
--disable-ogg \
|
||||
|
@ -83,19 +83,19 @@ cd %{_builddir}/client-qt/daemon/contrib/native && \
|
|||
make %{_smp_mflags} V=1 && \
|
||||
make %{_smp_mflags} V=1 .ffmpeg
|
||||
# Configure the daemon.
|
||||
cd %{_builddir}/client-qt/daemon && \
|
||||
cd %{_builddir}/jami-%{version}/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
|
||||
make -C %{_builddir}/jami-%{version}/daemon %{_smp_mflags} V=1
|
||||
pod2man %{_builddir}/jami-%{version}/daemon/man/jamid.pod \
|
||||
> %{_builddir}/jami-%{version}/daemon/jamid.1
|
||||
|
||||
%install
|
||||
DESTDIR=%{buildroot} make -C daemon install
|
||||
cp %{_builddir}/client-qt/daemon/jamid.1 \
|
||||
cp %{_builddir}/jami-%{version}/daemon/jamid.1 \
|
||||
%{buildroot}/%{_mandir}/man1/jamid.1
|
||||
rm -rfv %{buildroot}/%{_libdir}/*.a
|
||||
rm -rfv %{buildroot}/%{_libdir}/*.la
|
||||
|
|
|
@ -15,7 +15,7 @@ Group: Applications/Internet
|
|||
License: GPLv3+
|
||||
Vendor: Savoir-faire Linux
|
||||
URL: https://jami.net/
|
||||
Source: jami_%{version}.tar.gz
|
||||
Source: jami-%{version}.tar.gz
|
||||
|
||||
%description
|
||||
This is a transitional package. Jami libclient has been merged into
|
||||
|
|
|
@ -25,7 +25,7 @@ Group: Applications/Internet
|
|||
License: GPLv3+
|
||||
Vendor: Savoir-faire Linux
|
||||
URL: https://jami.net/
|
||||
Source: jami-qtlib_%{version}.tar.xz
|
||||
Source: jami-libqt-%{version}.tar.xz
|
||||
Patch0: 0001-qtbug-101201-fatal-error-getcurrenkeyboard.patch
|
||||
|
||||
%global gst 0.10
|
||||
|
|
|
@ -15,7 +15,7 @@ Group: Applications/Internet
|
|||
License: GPLv3+
|
||||
Vendor: Savoir-faire Linux
|
||||
URL: https://jami.net/
|
||||
Source: jami_%{version}.tar.gz
|
||||
Source: jami-%{version}.tar.gz
|
||||
Requires: jami
|
||||
|
||||
%description
|
||||
|
|
|
@ -10,7 +10,7 @@ Group: Applications/Internet
|
|||
License: GPLv3+
|
||||
Vendor: Savoir-faire Linux
|
||||
URL: https://jami.net/
|
||||
Source: jami_%{version}.tar.gz
|
||||
Source: jami-%{version}.tar.gz
|
||||
Requires: jami-daemon = %{version}
|
||||
Requires: jami-libqt
|
||||
Provides: jami-qt = %{version}
|
||||
|
@ -36,12 +36,12 @@ software for universal communication which respects freedoms and
|
|||
privacy of its users.
|
||||
|
||||
%prep
|
||||
%setup -n client-qt
|
||||
%setup -n jami-%{version}
|
||||
|
||||
%build
|
||||
# Configure and build bundled ffmpeg (for libavutil/avframe).
|
||||
mkdir -p %{_builddir}/client-qt/daemon/contrib/native
|
||||
cd %{_builddir}/client-qt/daemon/contrib/native && \
|
||||
mkdir -p %{_builddir}/jami-%{version}/daemon/contrib/native
|
||||
cd %{_builddir}/jami-%{version}/daemon/contrib/native && \
|
||||
../bootstrap \
|
||||
--no-checksums \
|
||||
--disable-ogg \
|
||||
|
@ -57,19 +57,19 @@ cd %{_builddir}/client-qt/daemon/contrib/native && \
|
|||
make fetch && \
|
||||
make %{_smp_mflags} V=1 .ffmpeg
|
||||
# Qt-related variables
|
||||
cd %{_builddir}/client-qt && \
|
||||
cd %{_builddir}/jami-%{version} && \
|
||||
mkdir build && cd build && \
|
||||
cmake -DENABLE_LIBWRAP=true \
|
||||
-DLIBJAMI_BUILD_DIR=%{_builddir}/client-qt/daemon/src \
|
||||
-DLIBJAMI_BUILD_DIR=%{_builddir}/jami-%{version}/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
|
||||
make -C %{_builddir}/jami-%{version}/build %{_smp_mflags} V=1
|
||||
|
||||
%install
|
||||
DESTDIR=%{buildroot} make -C %{_builddir}/client-qt/build install
|
||||
DESTDIR=%{buildroot} make -C %{_builddir}/jami-%{version}/build install
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
|
|
|
@ -26,7 +26,7 @@ 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 \
|
||||
tar xf "/src/$RELEASE_TARBALL_FILENAME" --wildcards 'jami-*/extras/packaging/gnu-linux/rules/rpm' \
|
||||
--strip-components=5 && mv rpm/* . && rmdir rpm
|
||||
rm jami-libqt.spec
|
||||
|
||||
|
@ -74,7 +74,7 @@ if [ ! -f "${RPM_PATH}" ]; then
|
|||
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 \
|
||||
--wildcards 'jami-*/extras/packaging/gnu-linux/rules/rpm/jami-libqt.spec' \
|
||||
--strip-components=6
|
||||
|
||||
# Fetch and cache the tarball, if not already available.
|
||||
|
@ -93,7 +93,7 @@ if [ ! -f "${RPM_PATH}" ]; then
|
|||
) 8>"${CACHED_QT_TARBALL}.lock"
|
||||
fi
|
||||
|
||||
cp "$CACHED_QT_TARBALL" "/root/rpmbuild/SOURCES/jami-qtlib_$QT_MAJOR_MINOR_PATCH.tar.xz"
|
||||
cp "$CACHED_QT_TARBALL" "/root/rpmbuild/SOURCES/jami-libqt-$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
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
set -e
|
||||
|
||||
tar xf "/src/$RELEASE_TARBALL_FILENAME" -C /opt
|
||||
cd /opt/client-qt/
|
||||
cd /opt/jami-*/
|
||||
cp -r extras/packaging/gnu-linux/rules/snap/common .
|
||||
cp -r extras/packaging/gnu-linux/rules/snap/${SNAP_PKG_NAME}/snapcraft.yaml .
|
||||
|
||||
|
|
35
extras/packaging/gnu-linux/scripts/release-version.sh
Executable file
35
extras/packaging/gnu-linux/scripts/release-version.sh
Executable file
|
@ -0,0 +1,35 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Copyright (C) 2023 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.
|
||||
|
||||
if [ $# -gt 1 ]; then
|
||||
echo "Usage: $0 {stable,beta,nightly}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# default to stable if no release type given
|
||||
release_type=${1:-stable}
|
||||
|
||||
last_commit_date=$(git log -1 --format=%cd --date=format:'%Y%m%d')
|
||||
same_day_releases=$(git tag -l "${release_type}/${last_commit_date}*" | wc -l)
|
||||
release_counter=${same_day_releases:-0}
|
||||
release_version=${last_commit_date}.${release_counter}
|
||||
printf "${release_version}"
|
|
@ -1,16 +0,0 @@
|
|||
/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