diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
commit | e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch) | |
tree | 68cb5ef9081156392f1dd62a00c6ccc1451b93df /packaging/source | |
parent | Initial commit. (diff) | |
download | wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip |
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'packaging/source')
-rwxr-xr-x | packaging/source/git-export-release.sh.in | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/packaging/source/git-export-release.sh.in b/packaging/source/git-export-release.sh.in new file mode 100755 index 00000000..854af25e --- /dev/null +++ b/packaging/source/git-export-release.sh.in @@ -0,0 +1,100 @@ +#!/bin/bash +# +# Creates a release tarball directly from git + +# Note that the tarball contents might not exactly match +# a particular git commit, particularly for untagged +# commits. +# +# An alternative approach would be to generate source tarballs +# using CPack. That would remove our dependency on git, but if +# Autotools is any indication it would require continuous +# maintenance. +# +# Copyright 2011 Balint Reczey <balint@balintreczey.hu> +# +# Wireshark - Network traffic analyzer +# By Gerald Combs <gerald@wireshark.org> +# Copyright 1998 Gerald Combs +# +# SPDX-License-Identifier: GPL-2.0-or-later + +set -e -u -o pipefail + +DESTDIR=. + +while getopts "d:" OPTCHAR ; do + case $OPTCHAR in + d) DESTDIR=$OPTARG ;; + *) printf "Unknown option %s\n" "$OPTCHAR" ;; + esac +done +shift $(( OPTIND - 1 )) + +# The remaining parameter, if set, is a package version such as 3.4.5 +# or 3.4.5-67-gabcd4321 +# By default the version from make-version.py + CMake is used. +PROJECT_VERSION=@PROJECT_VERSION@ +if test -n "${1-}"; then + PROJECT_VERSION="$1" +fi + +TARBALL="${DESTDIR}/wireshark-${PROJECT_VERSION}.tar.xz" + +# A tarball produced by 'git archive' will have the $Format string +# substituted due to the use of 'export-subst' in .gitattributes. +# shellcheck disable=SC2016 +COMMIT='40459284278611128aac5cef35a563218933f8da' + +if [[ $COMMIT != \$F* ]] ; then + # This file was extracted from a tarball produced by git archive + # and so we are not in a git repository. + if [[ -f "$TARBALL" ]] ; then + # git get-tar-commit-id works outside a git repo, as it + # only reads the first 1024 bytes of the tar extended header. + if [[ $(git get-tar-commit-id < <(xzcat "$TARBALL")) == "$COMMIT" ]] ; then + echo "$TARBALL commit ID matches $COMMIT." + else + # Allow people to make changes to a downloaded source tarball + # and re-tar it? + echo "WARNING: $TARBALL is not the original git archive." + fi + exit 0 + fi + + echo "" + echo "The build system cannot produce a source tarball outside of a git repository." + echo "If you are trying to build an RPM package from source extracted from a tarball," + echo "copy it (i.e., wireshark-${PROJECT_VERSION}.tar.xz) to" + echo "$DESTDIR" + echo "and run the build command again." + + exit 1 +fi + +STASH_ID=$(git stash create || echo "") + +if [[ -n "$STASH_ID" ]] ; then + echo "Setting commit from stash $STASH_ID" + COMMIT="$STASH_ID" +else + echo "Setting commit from HEAD" + COMMIT="HEAD" +fi + +if [ -f "$TARBALL" ] ; then + printf "Found %s\\n" "$TARBALL" + if TARBALL_ID=$(git get-tar-commit-id < <(xzcat "$TARBALL")) && COMMIT_ID=$(git rev-parse --verify "$COMMIT") ; then + if [[ $TARBALL_ID == "$COMMIT_ID" ]] ; then + echo "$TARBALL commit ID matches $COMMIT." + exit 0 + fi + fi +fi + +echo "Creating $TARBALL from $COMMIT" + +XZ_OPTS= +echo . | xz --threads=0 > /dev/null 2>&1 && XZ_OPTS=--threads=0 + +git archive --prefix="wireshark-${PROJECT_VERSION}/" "$COMMIT" | xz $XZ_OPTS > "$TARBALL" |