summaryrefslogtreecommitdiffstats
path: root/packaging
diff options
context:
space:
mode:
Diffstat (limited to 'packaging')
-rw-r--r--packaging/README.md53
-rwxr-xr-xpackaging/check-files126
-rwxr-xr-xpackaging/git-build40
-rw-r--r--packaging/packaging.functions316
-rwxr-xr-xpackaging/release-msg59
-rwxr-xr-xpackaging/tar-compare62
-rwxr-xr-xpackaging/update-tags149
7 files changed, 0 insertions, 805 deletions
diff --git a/packaging/README.md b/packaging/README.md
deleted file mode 100644
index 664f588e..00000000
--- a/packaging/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-Packaging Tools
-===============
-
-The programs in this folder are used when packaging from within git
-and are not included in source or binary packages.
-
-For the most part they are used from the git commit hooks (copy
-`../hooks/*` to `../.git/hooks` to automate checking and the release
-process.
-
-The check-files script pulls in `*.functions` and `*/*.functions` to
-do the actual work.
-
-`packaging.functions` contains generic checks on e.g `ChangeLog`
-and `configure.ac` and automates release version, checking, tagging
-and post-release update.
-
-Programs and packages with specific needs should create extra
-`whatever.functions` and supporting scripts in a subdirectory.
-
-Making a release
-----------------
-`
-Just update ChangeLog and configure.ac to specify a suitable version
-suffix:
-
- empty - final release
- pre.# - pre-release candidate
- rc.# - pre-release candidate
-
-If it is a final release and there is a package.spec.in, add a new
-entry to the top of the %changelog section and update:
- PACKAGE_RPM_RELEASE="1"
-
-The hooks will take over and if everything is OK will tag the release
-(you will be asked to sign the tag) and then update the files ready
-for further development.
-
-The release is not pushed out automatically, so if you want to undo
-it, run:
-
-~~~~
-git reset --hard HEAD^^
-git tag -d vx.y.z
-~~~~
-
-Otherwise you can just push the results; the script outputs the required
-instructions upon success.
-
-Once pushed the infrastructure will build a set of tar-files on the server.
-For information on how to verify, sign and make these available, see:
-
- https://github.com/firehol/infrastructure/raw/master/doc/release.txt
diff --git a/packaging/check-files b/packaging/check-files
deleted file mode 100755
index 4827f563..00000000
--- a/packaging/check-files
+++ /dev/null
@@ -1,126 +0,0 @@
-#!/bin/bash
-
-#
-# check-files
-#
-scriptname=check-files
-if ! MYTMP=$(mktemp -d -t $scriptname-XXXXXX)
-then
- echo >&2
- echo >&2
- echo >&2 "Cannot create temporary directory."
- echo >&2
- exit 1
-fi
-
-cleanup() {
- status=$?
- rm -rf "${MYTMP}"
- exit $status
-}
-
-# clean up if we get stopped by Crtl-C or forced logout or normal exit
-trap cleanup INT
-trap cleanup HUP
-trap cleanup 0
-
-set -e
-if [ "$1" = "--debug" ]
-then
- set -x
- shift
-fi
-
-if [ $# -lt 1 ]
-then
- echo "check-files [--debug] -|filenames"
- echo "e.g."
- echo " git diff | ./packaging/check-files -"
- echo "or in .git/hooks/pre-commit:"
- echo " exec git diff --cached | ./packaging/check-files -"
- exit 1
-fi
-
-if [ ! -x packaging/check-files ]
-then
- echo "Must be run from base directory"
- exit 1
-fi
-
-if [ "$1" = "-" ]
-then
- from_cache=Y
- f=""
-else
- from_cache=
- for f in "$@"
- do
- if [ ! -f "$f" ]
- then
- echo "$f: no such file"
- exit 1
- fi
- done
-
- git status --porcelain "$@" | grep "^?" | cut -c4- > $MYTMP/missing.lst
-
- while read missing
- do
- git update-index --add --cacheinfo \
- 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 $missing
- done < $MYTMP/missing.lst
-
- empty_tree=4b825dc642cb6eb9a060e54bf8d69288fbee4904
- git diff $empty_tree -- "$@" > $MYTMP/diff.full
- f=$MYTMP/diff.full
-
- while read missing
- do
- git update-index --force-remove $missing
- done < $MYTMP/missing.lst
-fi
-
-> $MYTMP/diff.lst sed -e "/^+++ b/{p;s:^+++ b/::;w $MYTMP/files.lst" -e "d;}" $f
-
-#cat $MYTMP/diff.lst
-#cat $MYTMP/files.lst
-
-dirname="${0%/*}"
-if [ "$dirname" = "$0" ]; then dirname="."; fi
-
-for i in $dirname/*.functions $dirname/*/*.functions
-do
- if [ -f "$i" ]
- then
- source $i
- echo $i | sed -e 's:.*/::' -e 's/\.functions$//' -e 's/\./_/g' >> $MYTMP/fns
- fi
-done
-
-status=0
-while read fn
-do
- "${fn}_check_init" $filename || status=1
-done < $MYTMP/fns
-
-while read filename
-do
- #echo Checking $filename
- while read fn
- do
- if [ $status -eq 0 ]
- then
- "${fn}_check_file" $filename || status=1
- fi
- done < $MYTMP/fns
-done < $MYTMP/files.lst
-
-if [ $status -eq 0 ]
-then
- while read fn
- do
- "${fn}_check_fin" $filename || status=1
- done < $MYTMP/fns
-fi
-
-exit $status
diff --git a/packaging/git-build b/packaging/git-build
deleted file mode 100755
index e33d2355..00000000
--- a/packaging/git-build
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-
-# When run from the top-level repository, performs a complete clean
-# and maintainer-mode rebuild of the FireHOL package.
-
-if [ ! -f .gitignore -o ! -f configure.ac -o ! -x autogen.sh ]
-then
- echo "Run as ./packaging/git-build from an autotools git repository"
- exit 1
-fi
-
-# If we are genuinely in a git repo, try to clean it up, otherwise
-# just make the assumption
-if [ -d .git ]
-then
- clean=$(git status -s | grep "^?")
-
- if [ "$clean" ]
- then
- if [ "$1" != "-ok" ]
- then
- echo "Warning: this script runs: git clean -d -f -x"
- echo " ensure all required ?? files are added, then re-run with '-ok'"
- git status -s | grep '^?'
- exit 1
- fi
- fi
-
- set -e
- git clean -d -f -x
- set +e
-fi
-
-set -e
-./autogen.sh
-./configure --enable-maintainer-mode
-set +e
-make dist
-status=$?
-exit $status
diff --git a/packaging/packaging.functions b/packaging/packaging.functions
deleted file mode 100644
index 397157fc..00000000
--- a/packaging/packaging.functions
+++ /dev/null
@@ -1,316 +0,0 @@
-#!/bin/bash
-
-packaging_check_init() {
- version_check=
-}
-
-packaging_check_file() {
- local filename="$1" status=0
-
- case $filename in
- configure.ac)
- check_versions || status=1
- version_check=Y
- ;;
- *.spec.in)
- check_versions || status=1
- version_check=Y
- ;;
- ChangeLog)
- check_versions || status=1
- version_check=Y
- if [ $status -eq 0 ]
- then
- check_changelog || status=1
- fi
- ;;
- *)
- #echo "No checks found for $filename"
- :
- ;;
- esac
- return $status
-}
-
-packaging_check_fin() {
- if [ "$version_check" ]
- then
- version=`get_configure_ac_version`
- case "$(match_version $version)" in
- prerelease|candidate|release)
- try_build || status=1
- if [ $status -eq 0 ]
- then
- cp $MYTMP/build/*.tar.* .
- echo "Check $(cd $MYTMP/build && ls *.tar.gz) before pushing tags"
- fi
- ;;
- esac
- fi
-}
-
-get_staged_file() {
- local optional=0
- if [ "$1" = "-o" ]
- then
- optional=1
- shift
- fi
-
- local dir="${1%/*}"
- if [ "$dir" = "$1" ]; then dir="."; fi
- mkdir -p $MYTMP/files/$dir
-
- test -f $MYTMP/files/$1 && return 0
-
- if [ "$from_cache" ]
- then
- if [ $optional -eq 1 ]
- then
- git show :$1 > $MYTMP/files/$1 2> /dev/null || rm -f $MYTMP/files/$1
- else
- git show :$1 > $MYTMP/files/$1
- fi
- else
- if [ $optional -eq 0 -o -f $1 ]
- then
- cp $1 $MYTMP/files/$1
- fi
- fi
-}
-
-try_build() {
- if [ -f $MYTMP/success ]; then return 0; fi
- mkdir -p $MYTMP/build
- git archive HEAD | tar -xf - -C "$MYTMP/build"
- git diff --staged | patch -p1 -d "$MYTMP/build"
- (cd $MYTMP/build; ./packaging/git-build || touch $MYTMP/fail)
- if [ -f $MYTMP/fail ]; then return 1; fi
- (cd $MYTMP/build; ./packaging/tar-compare . *.tar.gz || touch $MYTMP/fail)
- if [ -f $MYTMP/fail ]; then return 1; fi
- touch $MYTMP/success
- return 0
-}
-
-get_changelog_version() {
- get_staged_file ChangeLog
- local v=`sed -ne '1s/.*(\(.*\)).*/\1/p' $MYTMP/files/ChangeLog`
- if [ ! "$v" ]; then v="No version in ChangeLog!"; fi
- echo "$v"
-}
-
-get_configure_ac_version() {
- get_staged_file configure.ac
- local v=`sed -n \
- -e '/define(\[VERSION_\(MINOR\|FIX\)/s/.*\[\([^[]*\)\].*/.\1/p' \
- -e '/define(\[VERSION_\(MAJOR\|SUFFIX\)/s/.*\[\([^[]*\)\].*/\1/p' \
- $MYTMP/files/configure.ac | tr -d '\n'`
- if [ ! "$v" ]; then v="No version in configure.ac!"; fi
- echo "$v"
-}
-
-get_configure_ac_package() {
- get_staged_file configure.ac
- local v=`sed -n -e 's/AC_INIT(\[\([^]]*\)\].*/\1/p' configure.ac`
- if [ ! "$v" ]; then v="noname"; fi
- echo "$v"
-}
-
-get_configure_ac_rpmrel() {
- get_staged_file configure.ac
- local v=`sed -n -e 's/PACKAGE_RPM_RELEASE="\([^"]*\)".*/\1/p' configure.ac`
- if [ ! "$v" ]; then v="norpmrel"; fi
- echo "$v"
-}
-
-get_spec_version() {
- get_staged_file "$1".spec.in
- test -f $MYTMP/files/"$1".spec.in || return 0 # Spec file is optional
- sed -n -e '1,/^%changelog/d' -e '/^*/{s/.*- \([0-9].*\)/\1/p;q}' "$1".spec.in
-}
-
-splitver() {
- local maj min fix sfx IFS=.-_
-
- maj=$1
- min=$2
- fix=$3
- sfx=$4
-
- set -- $5
- eval $maj=\$1 $min=\$2 $fix=\$3 $sfx=\$4
-}
-
-match_version() {
- case "$1" in
- [0-9]*.[0-9]*.[0-9]*_*)
- # x.y.z_ZZZZ = development branch (can be before or after pre/rc)
- echo "development"
- ;;
- [0-9]*.[0-9]*.[0-9]-pre[0-9]*)
- echo "prerelease"
- ;;
- [0-9]*.[0-9]*.[0-9]-rc.[0-9]*)
- echo "candidate"
- ;;
- [0-9]*.[0-9]*.[0-9]*)
- echo "release"
- ;;
- *)
- # Unknown
- :
- ;;
- esac
-}
-
-check_versions() {
- local status=0 exact=0 prerelease=0
-
- if [ -f $MYTMP/version-checked ]
- then
- read status < $MYTMP/version-checked
- return $status
- fi
-
- local confver=`get_configure_ac_version`
- case "$(match_version $confver)" in
- development)
- :
- ;;
- prerelease|candidate|release)
- exact=1
- ;;
- *)
- echo "Unrecognised version in configure.ac ($confver)"
- status=1
- ;;
- esac
-
- local clogver=`get_changelog_version`
- case "$(match_version $clogver)" in
- development)
- echo "Do not include development branch version in ChangeLog ($clogver)"
- status=1
- ;;
- prerelease|candidate)
- prerelease=1
- ;;
- release)
- :
- ;;
- *)
- echo "Unrecognised version format in ChangeLog ($clogver)"
- status=1
- ;;
- esac
-
- local package=`get_configure_ac_package`
- local specver=`get_spec_version $package`
-
- local clogmaj clogmin clogfix clogsfx
- local confmaj confmin conffix confsfx
- local specmaj specmin specfix specsfx
-
- splitver clogmaj clogmin clogfix clogsfx "$clogver"
- splitver confmaj confmin conffix confsfx "$confver"
- splitver specmaj specmin specfix specsfx "$specver"
-
- if [ "$specver" ]
- then
- if [ $specmaj -ne $clogmaj \
- -o $specmin -ne $clogmin \
- -o $specfix -ne $clogfix ]
- then
- echo "Main version of $package.spec.in ($specver) differs from ChangeLog ($clogver)"
- status=1
- fi
- fi
-
- if [ $status -eq 0 -a $exact -eq 0 ]
- then
-
- if [ $confmaj -gt $clogmaj \
- -o $confmin -gt $clogmin \
- -o $conffix -gt $clogfix ]
- then
- :
- elif [ $confmaj -eq $clogmaj \
- -a $confmin -eq $clogmin \
- -a $conffix -eq $clogfix \
- -a $prerelease -eq 1 ]
- then
- :
- else
- echo "Version in configure.ac ($confver) lesser than ChangeLog ($clogver)"
- status=1
- fi
- fi
-
- if [ $exact -eq 1 ]
- then
- echo "Running additional release checks"
-
- if [ "$confver" != "$clogver" ]
- then
- echo "Version in configure.ac ($confver) differs from ChangeLog ($clogver)"
- status=1
- elif [ "$(git tag -l v$confver)" ]
- then
- echo "Tag v$confver already exists"
- status=1
- fi
-
- if [ "$specver" ]
- then
- local confrpmrel=`get_configure_ac_rpmrel`
- if [ "$specsfx" != "$confrpmrel" ]
- then
- echo "%changelog suffix in $package.spec.in ($specsfx) differs from configure.ac PACKAGE_RPM_RELEASE ($confrpmrel)"
- status=1
- fi
- fi
-
- if [ "$(git config user.signingkey)" = "" ]
- then
- echo "You need to set up a PGP signing key e.g.:"
- echo " gpg --list-keys"
- echo "and"
- echo " git config user.signingkey SHORTID"
- echo "or"
- echo " git config --global user.signingkey SHORTID"
- status=1
- fi
-
- git status -s | grep "^?" > $MYTMP/needclean
- if [ -s $MYTMP/needclean ]
- then
- echo "The following files must be dealt with before commit:"
- cat $MYTMP/needclean
- echo "e.g. add them to .gitignore or remove with 'git clean -fdx'"
- status=1
- fi
- fi
-
- echo $status > $MYTMP/version-checked
- return $status
-}
-
-check_changelog() {
- local status=0
-
- if [ -f $MYTMP/changelog-checked ]
- then
- read status < $MYTMP/changelog-checked
- return $status
- fi
-
- local version=`sed -ne '1s/.*(\(.*\)).*/\1/p' $filename`
- if [ "`echo $version | grep '[[:space:]]'`" != "" ]
- then
- echo "ChangeLog version contains whitespace! Fix it!"
- status=1
- fi
-
- echo $status > $MYTMP/changelog-checked
- return $status
-}
diff --git a/packaging/release-msg b/packaging/release-msg
deleted file mode 100755
index 01ec3814..00000000
--- a/packaging/release-msg
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/bash
-
-#
-# release-msg
-#
-scriptname=release-msg
-if ! MYTMP=$(mktemp -d -t $scriptname-XXXXXX)
-then
- echo >&2
- echo >&2
- echo >&2 "Cannot create temporary directory."
- echo >&2
- exit 1
-fi
-
-cleanup() {
- status=$?
- rm -rf "${MYTMP}"
- exit $status
-}
-
-# clean up if we get stopped by Crtl-C or forced logout or normal exit
-trap cleanup INT
-trap cleanup HUP
-trap cleanup 0
-
-set -e
-if [ "$1" = "--debug" ]
-then
- set -x
- shift
-fi
-
-if [ $# -lt 1 ]
-then
- echo "Use only from .git/hooks/prepare-commit-msg"
- exit 1
-fi
-
-if [ ! -x packaging/release-msg ]
-then
- echo "Must be run from base directory"
- exit 1
-fi
-
-dirname="${0%/*}"
-if [ "$dirname" = "$0" ]; then dirname="."; fi
-source $dirname/packaging.functions
-
-mkdir -p $MYTMP/files
-git show :configure.ac > $MYTMP/files/configure.ac
-version=`get_configure_ac_version`
-case "$(match_version $version)" in
- prerelease|candidate|release)
- sed -i -e "1s/.*/Prepare release $version/" "$1"
- ;;
-esac
-
-exit 0
diff --git a/packaging/tar-compare b/packaging/tar-compare
deleted file mode 100755
index 02ec3c29..00000000
--- a/packaging/tar-compare
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/sh
-
-# When provided with a git repo, which has been used to produce a
-# distribution tar.gz (with make dist) and the resultant tar-file,
-# lists files which appear in one or the other only, to help check
-# for missing EXTRA_DIST entries in Makefile.am files.
-
-scriptname=tar-compare
-if ! MYTMP=$(mktemp -d -t $scriptname-XXXXXX)
-then
- echo >&2
- echo >&2
- echo >&2 "Cannot create temporary directory."
- echo >&2
- exit 1
-fi
-
-cleanup() {
- status=$?
- rm -rf "${MYTMP}"
- exit $status
-}
-
-# clean up if we get stopped by Crtl-C or forced logout or normal exit
-trap cleanup INT
-trap cleanup HUP
-trap cleanup 0
-
-if [ $# -ne 2 ]
-then
- echo "tar-compare git-dir tar-gz-file"
- exit 1
-fi
-
-mkdir $MYTMP/unpack
-tar xfzC "$2" $MYTMP/unpack
-diff -r "$1" $MYTMP/unpack/* | grep "^Only" | sed \
- -e '/: autom4te\.cache$/d' \
- -e '/: \.deps$/d' \
- -e '/: \.git$/d' \
- -e '/: \.gitattributes$/d' \
- -e '/: \.gitignore$/d' \
- -e '/: config\.log$/d' \
- -e '/: config\.status$/d' \
- -e '/: config\.h.*$/d' \
- -e '/: Makefile$/d' \
- -e '/: hooks$/d' \
- -e '/: packaging$/d' \
- -e '/: stamp-h1$/d' \
- -e '/: README\.md$/d' \
- -e '/: tmp-anchor-links$/d' \
- -e '/: tmp-manproc$/d' \
- -e '/: .*\.tar\.\(gz\|bz2\|xz\)$/d' \
- -e '/: unittest$/d' \
- -e '/: iprange$/d' \
- -e '/: .*\.o$/d' \
- -e '/sbin: \(firehol\|fireqos\|link-balancer\)$/d' \
- -e '/sbin: \(update-ipsets\|vnetbuild\|commands.sed\)$/d' > $MYTMP/out
-
-cat $MYTMP/out
-test -s $MYTMP/out && exit 1
-exit 0
diff --git a/packaging/update-tags b/packaging/update-tags
deleted file mode 100755
index 6823fce1..00000000
--- a/packaging/update-tags
+++ /dev/null
@@ -1,149 +0,0 @@
-#!/bin/bash
-
-#
-# update-tags
-#
-scriptname=update-tags
-if ! MYTMP=$(mktemp -d -t $scriptname-XXXXXX)
-then
- echo >&2
- echo >&2
- echo >&2 "Cannot create temporary directory."
- echo >&2
- exit 1
-fi
-
-cleanup() {
- status=$?
- if [ $status -ne 0 ]
- then
- echo "FAILED."
- if [ "$TAGVER" ]
- then
- git tag -d "$TAGVER"
- fi
- echo "To re-run manually:"
- echo " git diff HEAD^ | ./packaging/update-tags -"
- echo "To undo commit:"
- echo " git reset HEAD^"
- fi
- rm -rf "${MYTMP}"
- exit $status
-}
-
-# clean up if we get stopped by Crtl-C or forced logout or normal exit
-trap cleanup INT
-trap cleanup HUP
-trap cleanup 0
-
-set -e
-if [ "$1" = "--debug" ]
-then
- set -x
- shift
-fi
-
-if [ $# -lt 1 ]
-then
- echo "Use only from .git/hooks/post-commit"
- exit 1
-fi
-
-if [ ! -x packaging/update-tags ]
-then
- echo "Must be run from base directory"
- exit 1
-fi
-
-if [ "$1" = "-" ]
-then
- from_cache=Y
- f=""
-else
- from_cache=
- for f in "$@"
- do
- if [ ! -f "$f" ]
- then
- echo "$f: no such file"
- exit 1
- fi
- done
-
- git status --porcelain "$@" | grep "^?" | cut -c4- > $MYTMP/missing.lst
-
- while read missing
- do
- git update-index --add --cacheinfo \
- 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 $missing
- done < $MYTMP/missing.lst
-
- empty_tree=4b825dc642cb6eb9a060e54bf8d69288fbee4904
- git diff $empty_tree -- "$@" > $MYTMP/diff.full
- f=$MYTMP/diff.full
-
- while read missing
- do
- git update-index --force-remove $missing
- done < $MYTMP/missing.lst
-fi
-
-> $MYTMP/diff.lst sed -e "/^+++ b/{p;s:^+++ b/::;w $MYTMP/files.lst" -e "d;}" $f
-
-#cat $MYTMP/diff.lst
-#cat $MYTMP/files.lst
-
-dirname="${0%/*}"
-if [ "$dirname" = "$0" ]; then dirname="."; fi
-source $dirname/packaging.functions
-
-status=0
-while read filename
-do
- #echo Checking $filename
- case $filename in
- configure.ac|ChangeLog)
- mkdir -p $MYTMP/files
- git show HEAD:configure.ac > $MYTMP/files/configure.ac
- version=`get_configure_ac_version`
- case "$(match_version $version)" in
- prerelease|candidate|release)
- do_release=Y
- ;;
- esac
- ;;
- *)
- #echo "No checks found for $filename"
- :
- ;;
- esac
-done < $MYTMP/files.lst
-
-if [ "$do_release" ]
-then
- echo "Tagging new release with:"
- echo " git tag -s \"v$version\" -m \"Release version $version\""
- git tag -s "v$version" -m "Release version $version"
- TAGVER="v$version"
-
- splitver confmaj confmin conffix confsfx "$version"
- if [ ! "$confsfx" ]
- then
- echo "Incrementing version in configure.ac:"
- conffix=`expr $conffix + 1`
- sed -i -e "s/define(\[VERSION_FIX\], \[.*])/define([VERSION_FIX], [$conffix])/" configure.ac
- fi
-
- echo "Resetting suffix in configure.ac:"
- sed -i -e 's/define(\[VERSION_SUFFIX\], \[.*])/define([VERSION_SUFFIX], [_master])/' configure.ac
- sed -i -e 's:^PACKAGE_RPM_RELEASE=.*:PACKAGE_RPM_RELEASE="0.0.$(echo VERSION_SUFFIX | sed s/^_//)":' configure.ac
-
- echo "Committing new configure.ac:"
- git commit --no-verify -m "Post release $version" -- configure.ac
- echo ""
- echo "Verify, then:"
- echo " git push origin"
- echo " git push origin tag $TAGVER"
-fi
-
-exit $status