pnp4nagios/ci/maketar.sh
2025-08-06 18:11:51 +02:00

118 lines
3.5 KiB
Bash
Executable File

#!/bin/sh
# collect up all the "base" files into a tar file
# exclude the stuff that gets created during a build
# usage: maketar.sh [version] [release] [releasedate]
# defaults from configure.ac if not provided
# also makes a zip file
startdir=$(pwd)
me=$(realpath -e -L $0)
distdir=$(dirname $me)
basedir=$(realpath -e -L $distdir/..)
#echo "distdir $distdir"
#echo "basedir $basedir"
VERSION=$1
CVER=$(awk -F, '/^AC_INIT/ {print $2}' $basedir/configure.ac|tr -d '[]')
if test "x${VERSION}" = "x" ;
then
VERSION=$CVER
echo "VERSION ($VERSION) from configure.ac"
elif test "${VERSION}" != "${CVER}" ;
then
echo "$0 version requested $VERSION mismatch configure.ac $CVER"
exit 1
fi
RELEASE=$2
if test "x${RELEASE}" = "x" ;
then
RELEASE=$(awk -F'"' '/^PACKAGE_RELEASE=/{print $2}' $basedir/configure.ac)
echo "RELEASE ($RELEASE) from configure.ac"
fi
RELDATE=$3
if test "x${RELDATE}" = "x" ;
then
RELDATE=$(awk -F'"' '/^PKG_REL_DATE=/{print $2}' $basedir/configure.ac)
echo "RELDATE ($RELDATE) from configure.ac"
fi
echo "Version $VERSION Release $RELEASE Date $RELDATE"
tdir=$(mktemp -p "/tmp" -d "pnp4nagiosDIST_XXXXXXXX")
#echo "tempdir $tdir"
cd $tdir
#directory for dist
mkdir pnp4nagios-${VERSION}
#populate with symbolic links from main code directory
cd pnp4nagios-${VERSION}
for f in AUTHORS ChangeLog ci config.guess config.sub contrib \
configure aclocal.m4 autoconf-macros \
pnp4nagios.te pnp4nagios.fc.in \
COPYING helpers include INSTALL install-sh lib \
Makefile.in man README.md sample-config scripts \
share src subst.in summary.in THANKS ;
do
# echo "ln -s $basedir/$f ."
ln -s $basedir/$f .
done
# update version/release/release_date
cp $basedir/configure.ac .
touch configure.ac
rm ci/pnp4nagios.spec
cp ci/pnp4nagios.spec.in ci/pnp4nagios.spec
sed -i "s/@PACKAGE_VERSION@/${VERSION}/" ci/pnp4nagios.spec
sed -i "s/@PACKAGE_RELEASE@/${RELEASE}/" ci/pnp4nagios.spec
sed -i "s/PACKAGE_RELEASE=\"[^\"]*\"/PACKAGE_RELEASE=\"${RELEASE}\"/" \
configure.ac
sed -i "s/PKG_REL_DATE=\"[^\"]*\"/PKG_REL_DATE=\"${RELDATE}\"/" \
configure.ac
cd ..
# any file that is a 'FILE.in' is kept, but the
# resulting 'FILE' is not.
find -L pnp4nagios-${VERSION} -name '*.in' >dist.exclude
sed -i 's/.in$//' dist.exclude
# .. no object files
find -L pnp4nagios-${VERSION} -name '*.o' >>dist.exclude
# .. no binaries
echo "./pnp4nagios-${VERSION}/src/npcd" >>dist.exclude
echo "./pnp4nagios-${VERSION}/src/utils" >>dist.exclude
echo "./pnp4nagios-${VERSION}/src/pnpsender" >>dist.exclude
# ...and no archives in dist, either
find -L pnp4nagios-${VERSION} -name 'pnp4nagios-*.tgz' >>dist.exclude
find -L pnp4nagios-${VERSION} -name 'pnp4nagios-*.zip' >>dist.exclude
find -L pnp4nagios-${VERSION} -path '*/ci/outputs' >>dist.exclude
find -L pnp4nagios-${VERSION} -path '*/ci/outputs/*' >>dist.exclude
# exception is pnp4nagios.spec
grep -v ci/pnp4nagios.spec dist.exclude >dist.x
mv dist.x dist.exclude
#GNU makefile 'dist' guideline is that files in the archive
#should have world rx permissions
chmod 0755 -R pnp4nagios-${VERSION}
#make the tar archive, rereferencing symbolic links
tar chzf pnp4nagios-${VERSION}.tgz -X dist.exclude --exclude-backups pnp4nagios-${VERSION}
mv pnp4nagios-${VERSION}.tgz $distdir
zip -r -q pnp4nagios-${VERSION}.zip pnp4nagios-${VERSION}/ -x\*~ -x\*\# -x\@dist.exclude
mv pnp4nagios-${VERSION}.zip $distdir
cd $startdir
# clean up temp directory
rm -rf $tdir