forked from osmocom/wireshark
tarball+RPM: Fetch our version from CMake.
Move git-export-release.sh to packaging/source. Have the source and RPM packaging derive version information from CMake's VERSION variable. This brings them in line with the rest of our packaging and avoids having to read chicken entrails^W^Wgit output. Make sure we always generate wireshark.spec. Bug: 15359 Change-Id: I188efda489c94449a10a612abebf9c2872c305cb Reviewed-on: https://code.wireshark.org/review/31504 Petri-Dish: Gerald Combs <gerald@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot Reviewed-by: Gerald Combs <gerald@wireshark.org>
This commit is contained in:
parent
c3d198c401
commit
290214adc9
|
@ -1165,7 +1165,7 @@ endforeach()
|
||||||
# dist target that prepares source dir
|
# dist target that prepares source dir
|
||||||
# XXX Duplicated in the RPM section below.
|
# XXX Duplicated in the RPM section below.
|
||||||
add_custom_target(dist
|
add_custom_target(dist
|
||||||
COMMAND ./tools/git-export-release.sh -d "${CMAKE_BINARY_DIR}"
|
COMMAND ${CMAKE_BINARY_DIR}/packaging/source/git-export-release.sh -d "${CMAKE_BINARY_DIR}"
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1546,6 +1546,7 @@ set(CFG_OUT_FILES
|
||||||
packaging/macosx/osx-dmg.sh
|
packaging/macosx/osx-dmg.sh
|
||||||
packaging/macosx/Read_me_first.rtf
|
packaging/macosx/Read_me_first.rtf
|
||||||
packaging/macosx/Wireshark_package.pmdoc/index.xml
|
packaging/macosx/Wireshark_package.pmdoc/index.xml
|
||||||
|
packaging/source/git-export-release.sh
|
||||||
wireshark.pc
|
wireshark.pc
|
||||||
)
|
)
|
||||||
foreach( _cfg_file ${CFG_OUT_FILES} )
|
foreach( _cfg_file ${CFG_OUT_FILES} )
|
||||||
|
@ -2773,18 +2774,9 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
find_program(APPIMAGETOOL_EXECUTABLE appimagetool)
|
find_program(APPIMAGETOOL_EXECUTABLE appimagetool)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
function(_SET_GITVERSION_CMAKE_VARIABLE OUTPUT_VARIABLE)
|
|
||||||
# Load version string and write it to a cmake variable so it can be accessed from cmake.
|
|
||||||
FILE(READ "${CMAKE_CURRENT_BINARY_DIR}/version.h" VERSION_H_FILE_CONTENT)
|
|
||||||
string(REPLACE "\n" "" VERSION_H_FILE_CONTENT ${VERSION_H_FILE_CONTENT})
|
|
||||||
#define VCSVERSION "v2.9.0rc0-305-gb8e8aa87"
|
|
||||||
string(SUBSTRING "${VERSION_H_FILE_CONTENT}" 21 -1 VERSION_STRING)
|
|
||||||
STRING(REGEX REPLACE "\"" "" VERSION_STRING "${VERSION_STRING}")
|
|
||||||
MESSAGE(STATUS "Version string created from version.h: ${VERSION_STRING}")
|
|
||||||
SET(${OUTPUT_VARIABLE} "${VERSION_STRING}" CACHE INTERNAL "${OUTPUT_VARIABLE}")
|
|
||||||
endfunction(_SET_GITVERSION_CMAKE_VARIABLE)
|
|
||||||
|
|
||||||
|
|
||||||
|
string(REPLACE "-" "_" RPM_VERSION "${VERSION}")
|
||||||
|
configure_file(packaging/rpm/wireshark.spec.in ${CMAKE_BINARY_DIR}/packaging/rpm/SPECS/wireshark.spec)
|
||||||
if(RPMBUILD_EXECUTABLE)
|
if(RPMBUILD_EXECUTABLE)
|
||||||
foreach(_rpm_dir BUILD RPMS SOURCES SPECS SRPMS)
|
foreach(_rpm_dir BUILD RPMS SOURCES SPECS SRPMS)
|
||||||
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/packaging/rpm/${_rpm_dir}")
|
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/packaging/rpm/${_rpm_dir}")
|
||||||
|
@ -2834,26 +2826,13 @@ if(RPMBUILD_EXECUTABLE)
|
||||||
${CMAKE_SOURCE_DIR}
|
${CMAKE_SOURCE_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
_SET_GITVERSION_CMAKE_VARIABLE(_git_description)
|
|
||||||
|
|
||||||
if (NOT _git_description)
|
|
||||||
# We're building the rpm outside the source. Guess the version from the dirname.
|
|
||||||
get_filename_component(CMAKE_SOURCE_DIR_NAME ${CMAKE_SOURCE_DIR} NAME)
|
|
||||||
# XXX this assumes the directory to start with "wireshark-"
|
|
||||||
string(SUBSTRING "${CMAKE_SOURCE_DIR_NAME}" 10 -1 _git_description)
|
|
||||||
endif()
|
|
||||||
string(REPLACE "-" "_" RPM_VERSION "${_git_description}")
|
|
||||||
configure_file(packaging/rpm/wireshark.spec.in ${CMAKE_BINARY_DIR}/packaging/rpm/SPECS/wireshark.spec)
|
|
||||||
|
|
||||||
# XXX Replace with the "dist" target?
|
# XXX Replace with the "dist" target?
|
||||||
set(_export_tarball "${CPACK_PACKAGE_NAME}-${_git_description}.tar.xz")
|
set(_export_tarball "${CPACK_PACKAGE_NAME}-${VERSION}.tar.xz")
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT "${CMAKE_BINARY_DIR}/packaging/rpm/SOURCES/${_export_tarball}"
|
OUTPUT "${CMAKE_BINARY_DIR}/packaging/rpm/SOURCES/${_export_tarball}"
|
||||||
COMMAND ./tools/git-export-release.sh
|
COMMAND ${CMAKE_BINARY_DIR}/packaging/source/git-export-release.sh
|
||||||
-d "${CMAKE_BINARY_DIR}/packaging/rpm/SOURCES"
|
-d "${CMAKE_BINARY_DIR}/packaging/rpm/SOURCES"
|
||||||
"${_git_description}"
|
"${VERSION}"
|
||||||
# XXX Add an option to git-export-release.sh to write to a
|
|
||||||
# specific directory so that we can get rid of `ln` below.
|
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
)
|
)
|
||||||
add_custom_target(rpm-package
|
add_custom_target(rpm-package
|
||||||
|
@ -3249,9 +3228,9 @@ if(SHELLCHECK_EXECUTABLE)
|
||||||
packaging/appimage/AppRun
|
packaging/appimage/AppRun
|
||||||
packaging/macosx/osx-app.sh.in
|
packaging/macosx/osx-app.sh.in
|
||||||
packaging/macosx/osx-dmg.sh.in
|
packaging/macosx/osx-dmg.sh.in
|
||||||
|
packaging/source/git-export-release.sh.in
|
||||||
tools/compress-pngs.sh
|
tools/compress-pngs.sh
|
||||||
tools/debian-setup.sh
|
tools/debian-setup.sh
|
||||||
tools/git-export-release.sh
|
|
||||||
tools/fuzz-test.sh
|
tools/fuzz-test.sh
|
||||||
tools/gen-bugnote
|
tools/gen-bugnote
|
||||||
tools/pre-commit
|
tools/pre-commit
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
# says that recent CMake versions take care of rpathification.
|
# says that recent CMake versions take care of rpathification.
|
||||||
|
|
||||||
# To do:
|
# To do:
|
||||||
# - Find a better way to sync with git-export-release.sh.
|
|
||||||
# - Set version in version.h
|
# - Set version in version.h
|
||||||
# - Add bcond_with clang
|
# - Add bcond_with clang
|
||||||
|
|
||||||
|
@ -32,7 +31,7 @@
|
||||||
# are set.
|
# are set.
|
||||||
%global use_wireshark_group 1
|
%global use_wireshark_group 1
|
||||||
|
|
||||||
%global package_version @_git_description@
|
%global package_version @VERSION@
|
||||||
|
|
||||||
|
|
||||||
Summary: Wireshark is the world's foremost protocol analyzer
|
Summary: Wireshark is the world's foremost protocol analyzer
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
#!/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
|
||||||
|
|
||||||
|
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.pl + CMake is used.
|
||||||
|
VERSION=@VERSION@
|
||||||
|
if test -n "$1"; then
|
||||||
|
VERSION="$1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
STASH_POP=false
|
||||||
|
XZ_OPTS=
|
||||||
|
|
||||||
|
COMMIT="HEAD"
|
||||||
|
if ! git diff-index --quiet HEAD ; then
|
||||||
|
git stash --keep-index
|
||||||
|
COMMIT="stash@{0}"
|
||||||
|
STASH_POP=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Creating wireshark-$VERSION.tar.xz"
|
||||||
|
|
||||||
|
echo . | xz --threads=0 > /dev/null 2>&1 && XZ_OPTS=--threads=0
|
||||||
|
|
||||||
|
git archive --prefix="wireshark-${VERSION}/" ${COMMIT} | xz $XZ_OPTS > "${DESTDIR}/wireshark-${VERSION}.tar.xz"
|
||||||
|
|
||||||
|
if $STASH_POP ; then
|
||||||
|
git stash pop
|
||||||
|
fi
|
|
@ -1,85 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
# creates a release tarball directly from git
|
|
||||||
#
|
|
||||||
# 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
|
|
||||||
|
|
||||||
DESTDIR=.
|
|
||||||
|
|
||||||
while getopts "d:" OPTCHAR ; do
|
|
||||||
case $OPTCHAR in
|
|
||||||
d) DESTDIR=$OPTARG ;;
|
|
||||||
*) printf "Unknown option %s" "$OPTCHAR"
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
shift $(( OPTIND - 1 ))
|
|
||||||
|
|
||||||
# The remaining parameter, if set, is a git commit, like v1.12.0-rc1 or 54819e5699f
|
|
||||||
# By default HEAD is used.
|
|
||||||
# Note, that filtering takes place base on the _exported_ version's
|
|
||||||
# .gitattributes files thus archives generated from older commits will contain
|
|
||||||
# the whole tree.
|
|
||||||
COMMIT="HEAD"
|
|
||||||
if test -n "$1"; then
|
|
||||||
COMMIT="$1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -e "${GIT_DIR:-.git}" ] ; then
|
|
||||||
echo "Must be run from the top-level repository directory."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# --abbrev=<n> and --match should match tools/make-version.pl.
|
|
||||||
DESCRIPTION=$(git describe --abbrev=8 --match "v[1-9]*" "${COMMIT}")
|
|
||||||
VERSION=${DESCRIPTION#v}
|
|
||||||
STASH_POP=False
|
|
||||||
XZ_OPTS=
|
|
||||||
|
|
||||||
# We might be able to avoid stashing by doing one of the following:
|
|
||||||
#
|
|
||||||
# For official releases, update our build process such that we don't
|
|
||||||
# need to modify version.conf.
|
|
||||||
#
|
|
||||||
# Use tar to append a new or updated version.conf to the archive.
|
|
||||||
# This would require detecting our local tar flavor (GNU or BSD) and
|
|
||||||
# constructing a compatible command. BSD tar appears to support inline
|
|
||||||
# inline filtering via `-a @- -s /^/wireshark-${VERSION} version.conf`
|
|
||||||
# or something similar. GNU tar appears to require that we write to
|
|
||||||
# a file and append to it. I'm not sure if we can add a path prefix.
|
|
||||||
#
|
|
||||||
# Use the 'export-subst' gitattribute along with
|
|
||||||
# 'git_description=$Format:...$' in version.conf. export-subst uses
|
|
||||||
# 'git log' formatting. I'm not sure if we can build $DESCRIPTION
|
|
||||||
# from that.
|
|
||||||
#
|
|
||||||
# Rewrite this script in Python and use the built-in tarfile module
|
|
||||||
# to replace version.conf.
|
|
||||||
|
|
||||||
if [ "$COMMIT" == "HEAD" ] ; then
|
|
||||||
echo "Adding description $DESCRIPTION"
|
|
||||||
echo "git_description=$DESCRIPTION" >> version.conf
|
|
||||||
git add version.conf
|
|
||||||
git stash --keep-index
|
|
||||||
COMMIT="stash@{0}"
|
|
||||||
STASH_POP=True
|
|
||||||
else
|
|
||||||
echo "Not archiving HEAD. Skipping description."
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Creating wireshark-$VERSION.tar.xz"
|
|
||||||
|
|
||||||
echo . | xz --threads=0 > /dev/null 2>&1 && XZ_OPTS=--threads=0
|
|
||||||
|
|
||||||
git archive --prefix="wireshark-${VERSION}/" ${COMMIT} | xz $XZ_OPTS > "${DESTDIR}/wireshark-${VERSION}.tar.xz"
|
|
||||||
|
|
||||||
if [ "$STASH_POP" == "True" ] ; then
|
|
||||||
git stash pop
|
|
||||||
fi
|
|
Loading…
Reference in New Issue