]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - mksnapshot.sh
Bug 5069: Keep listening after getsockname() error (#1713)
[thirdparty/squid.git] / mksnapshot.sh
index 950a076754f77c33d453aba2e22f3231c064647b..3914d72ee32303700efa5293f1683c987a53c052 100755 (executable)
 #!/bin/sh -e
+#
+## Copyright (C) 1996-2023 The Squid Software Foundation and contributors
+##
+## Squid software is distributed under GPLv2+ license and includes
+## contributions from numerous individuals and organizations.
+## Please see the COPYING and CONTRIBUTORS files for details.
+##
 
+echo "RUN: $0"
 if [ $# -lt 1 ]; then
        echo "Usage: $0 [branch]"
-       echo "Where [branch] is the path under /bzr/ to the branch to snapshot."
+       echo "Where [branch] is the name of the branch to snapshot."
        exit 1
 fi
-# VCS details
-module=squid3
-BZRROOT=${BZRROOT:-/bzr}
-
-# generate a tarball name from the branch ($1) note that trunk is at
-# /bzr/trunk, but we call it HEAD for consistency with CVS (squid 2.x), and
-# branches are in /bzr/branches/ but we don't want 'branches/' in the tarball
-# name so we strip that.
-branchpath=${1:-trunk}
-tag=${2:-`basename $branchpath`}
-startdir=$PWD
+
+# generate a tarball name from the branch ($1)
+branch=${1:-master}
+startdir=${PWD}
 date=`env TZ=GMT date +%Y%m%d`
 
-tmpdir=${TMPDIR:-${PWD}}/${module}-${tag}-mksnapshot
+tmpdir=${TMPDIR:-${PWD}}/squid-${branch}-mksnapshot/
 
-rm -rf $tmpdir
-trap "rm -rf $tmpdir" 0
+rm -rf ${tmpdir}
+trap "echo FAIL-BUILD_${VERSION} ; rm -rf ${tmpdir}" 0
+mkdir ${tmpdir}
 
-rm -f ${tag}.out
-bzr export $tmpdir $BZRROOT/$module/$branchpath || exit 1
-if [ ! -f $tmpdir/configyre ] && [ -f $tmpdir/configure.in ]; then
-       sh -c "cd $tmpdir && ./bootstrap.sh"
+rm -f ${branch}.out
+(git archive --format=tar ${branch} | tar -xC ${tmpdir}) || exit 1
+if [ ! -f ${tmpdir}/configure ] && [ -f ${tmpdir}/configure.ac ]; then
+       sh -c "cd ${tmpdir} && ./bootstrap.sh"
 fi
-if [ ! -f $tmpdir/configure ]; then
-       echo "ERROR! Tag $tag not found in $module"
+if [ ! -f ${tmpdir}/configure ]; then
+       echo "ERROR! Branch ${branch} not found."
 fi
 
-cd $tmpdir
-eval `grep "^ *VERSION=" configure | sed -e 's/-BZR//' | sed -e 's/-CVS//'`
-eval `grep "^ *PACKAGE=" configure`
-ed -s configure.in <<EOS
-g/${VERSION}-[A-Z]*/ s//${VERSION}-${date}/
+cd ${tmpdir}
+revision=`git rev-parse --short ${branch}`
+suffix="${date}-r${revision}"
+eval `grep "^ *PACKAGE_VERSION=" configure | sed -e 's/-VCS//' | sed -e 's/PACKAGE_//'`
+eval `grep "^ *PACKAGE_TARNAME=" configure | sed -e 's/_TARNAME//'`
+ed -s configure.ac <<EOS
+g/${VERSION}-[A-Z]*/ s//${VERSION}-${suffix}/
 w
 EOS
 ed -s configure <<EOS
-g/${VERSION}-[A-Z]*/ s//${VERSION}-${date}/
+g/${VERSION}-[A-Z]*/ s//${VERSION}-${suffix}/
 w
 EOS
 
-./test-builds.sh --cleanup || exit 1
-./configure --silent
+echo "STATE..."
+echo "PACKAGE: ${PACKAGE}"
+echo "VERSION: ${VERSION}"
+echo "BRANCH: ${branch}"
+echo "REVISION: ${revision}"
+echo "STARTDIR: ${startdir}"
+echo "TMPDIR: ${tmpdir}"
+
+## Ignore extra build layers. General features building is sufficient for snapshot release.
+./test-builds.sh --cleanup layer-00-default layer-01-minimal layer-02-maximus || exit 1
+./configure --silent --enable-build-info="DATE: ${date} REVISION: ${revision}" --enable-translation
 make -s dist-all
 
-basetarball=/server/httpd/htdocs/squid-cache.org/Versions/v`echo $VERSION | cut -d. -f1`/`echo $VERSION | cut -d. -f-2|cut -d- -f1`/${PACKAGE}-${VERSION}.tar.bz2
-if (echo $VERSION | grep PRE) || (echo $VERSION | grep STABLE); then
-       if [ -f $basetarball ]; then
-               tar jxf ${PACKAGE}-${VERSION}-${date}.tar.bz2
-               tar jxf $basetarball
-               echo "Differences from ${PACKAGE}-${VERSION} to ${PACKAGE}-${VERSION}-${date}" >${PACKAGE}-${VERSION}-${date}.diff
-               diff -ruN ${PACKAGE}-${VERSION} ${PACKAGE}-${VERSION}-${date} >>${PACKAGE}-${VERSION}-${date}.diff || true
-       else
-               #cvs -q rdiff -u -r SQUID_`echo $VERSION | tr .- __` -r $tag $module >>${PACKAGE}-${VERSION}-${date}.diff || true
-       fi
-elif [ -f STABLE_BRANCH ]; then
-       #stable=`cat STABLE_BRANCH`
-       #echo "Differences from ${stable} to ${PACKAGE}-${VERSION}-${date}" >${PACKAGE}-${VERSION}-${date}.diff
-       #cvs -q rdiff -u -r $stable -r $tag $module >>${PACKAGE}-${VERSION}-${date}.diff
+webbase=/server/httpd/htdocs/squid-cache.org/content/
+basetarball=${webbase}/Versions/v`echo ${VERSION} | cut -d. -f1`/`echo ${VERSION} | cut -d. -f-2|cut -d- -f1`/${PACKAGE}-${VERSION}.tar.bz2
+
+echo "Building Tarball diff (${basetarball}) ..."
+if [ -f ${basetarball} ]; then
+       tar jxf ${PACKAGE}-${VERSION}-${suffix}.tar.bz2
+       tar jxf ${basetarball}
+       echo "Differences from ${PACKAGE}-${VERSION} to ${PACKAGE}-${VERSION}-${suffix}" >${PACKAGE}-${VERSION}-${suffix}.diff
+       diff -ruN ${PACKAGE}-${VERSION} ${PACKAGE}-${VERSION}-${suffix} >>${PACKAGE}-${VERSION}-${suffix}.diff || true
+else
+       echo "Building Tarball diff ... skipped (no tarball exists)."
 fi
 
-cd $startdir
-cp -p $tmpdir/${PACKAGE}-${VERSION}-${date}.tar.gz .
-echo ${PACKAGE}-${VERSION}-${date}.tar.gz >>${tag}.out
-cp -p $tmpdir/${PACKAGE}-${VERSION}-${date}.tar.bz2 .
-echo ${PACKAGE}-${VERSION}-${date}.tar.bz2 >>${tag}.out
-if [ -f $tmpdir/${PACKAGE}-${VERSION}-${date}.diff ]; then
-    cp -p $tmpdir/${PACKAGE}-${VERSION}-${date}.diff .
-    echo ${PACKAGE}-${VERSION}-${date}.diff >>${tag}.out
+cd ${startdir}
+echo "Preparing to publish: ${tmpdir}/${PACKAGE}-${VERSION}-${suffix}.tar.* ..."
+#echo "LOCAL: " ; pwd
+#echo "BUILT TARS: " ; ls -1 ${tmpdir}/*.tar.* || true
+
+cp -p ${tmpdir}/${PACKAGE}-${VERSION}-${suffix}.tar.gz .
+echo ${PACKAGE}-${VERSION}-${suffix}.tar.gz >>${branch}.out
+cp -p ${tmpdir}/${PACKAGE}-${VERSION}-${suffix}.tar.bz2 .
+echo ${PACKAGE}-${VERSION}-${suffix}.tar.bz2 >>${branch}.out
+if [ -f ${tmpdir}/${PACKAGE}-${VERSION}-${suffix}.diff ]; then
+    cp -p ${tmpdir}/${PACKAGE}-${VERSION}-${suffix}.diff .
+    echo ${PACKAGE}-${VERSION}-${suffix}.diff >>${branch}.out
 fi
 
-relnotes=$tmpdir/doc/release-notes/release-`echo $VERSION | cut -d. -f1,2 | cut -d- -f1`.html
-if [ -f $relnotes ]; then
-       cp -p $relnotes ${PACKAGE}-${VERSION}-${date}-RELEASENOTES.html
-       echo ${PACKAGE}-${VERSION}-${date}-RELEASENOTES.html >>${tag}.out
-       ed -s ${PACKAGE}-${VERSION}-${date}-RELEASENOTES.html <<EOF
-g/"ChangeLog"/ s//"${PACKAGE}-${VERSION}-${date}-ChangeLog.txt"/g
+# latest Squid 'make' builds a RELEASENOTES.html at top directory
+relnotes=${tmpdir}/RELEASENOTES.html
+if [ ! -f ${relnotes} ]; then
+       # for older Squid-3.x versions we may need to move find the release notes by version
+       relnotes=${tmpdir}/doc/release-notes/release-`echo ${VERSION} | cut -d. -f1,2 | cut -d- -f1`.html
+fi
+if [ -f ${relnotes} ]; then
+       cp -p ${relnotes} ${PACKAGE}-${VERSION}-${suffix}-RELEASENOTES.html
+       echo ${PACKAGE}-${VERSION}-${suffix}-RELEASENOTES.html >>${branch}.out
+       ed -s ${PACKAGE}-${VERSION}-${suffix}-RELEASENOTES.html <<EOF
+g/"ChangeLog"/ s//"${PACKAGE}-${VERSION}-${suffix}-ChangeLog.txt"/g
 w
 EOF
 fi
-cp -p $tmpdir/ChangeLog ${PACKAGE}-${VERSION}-${date}-ChangeLog.txt
-echo ${PACKAGE}-${VERSION}-${date}-ChangeLog.txt >>${tag}.out
+cp -p ${tmpdir}/ChangeLog ${PACKAGE}-${VERSION}-${suffix}-ChangeLog.txt
+echo ${PACKAGE}-${VERSION}-${suffix}-ChangeLog.txt >>${branch}.out
 
 # Generate Configuration Manual HTML
-if [ -x $tmpdir/scripts/www/build-cfg-help.pl ]; then
-       make -C $tmpdir/src cf.data
-       mkdir -p $tmpdir/doc/cfgman
-       $tmpdir/scripts/www/build-cfg-help.pl --version ${VERSION} -o $tmpdir/doc/cfgman $tmpdir/src/cf.data
-       sh -c "cd $tmpdir/doc/cfgman && tar -zcf $PWD/${PACKAGE}-${VERSION}-${date}-cfgman.tar.gz *"
-       echo ${PACKAGE}-${VERSION}-${date}-cfgman.tar.gz >>${tag}.out
-       $tmpdir/scripts/www/build-cfg-help.pl --version ${VERSION} -o ${PACKAGE}-${VERSION}-${date}-cfgman.html -f singlehtml $tmpdir/src/cf.data
-       gzip -f -9 ${PACKAGE}-${VERSION}-${date}-cfgman.html
-       echo ${PACKAGE}-${VERSION}-${date}-cfgman.html.gz >>${tag}.out
+if [ -x ${tmpdir}/scripts/www/build-cfg-help.pl ]; then
+       make -C ${tmpdir}/src cf.data
+       mkdir -p ${tmpdir}/doc/cfgman
+       ${tmpdir}/scripts/www/build-cfg-help.pl --version ${VERSION} -o ${tmpdir}/doc/cfgman ${tmpdir}/src/cf.data
+       sh -c "cd ${tmpdir}/doc/cfgman && tar -zcf ${PWD}/${PACKAGE}-${VERSION}-${suffix}-cfgman.tar.gz *"
+       echo ${PACKAGE}-${VERSION}-${suffix}-cfgman.tar.gz >>${branch}.out
+       ${tmpdir}/scripts/www/build-cfg-help.pl --version ${VERSION} -o ${PACKAGE}-${VERSION}-${suffix}-cfgman.html -f singlehtml ${tmpdir}/src/cf.data
+       gzip -f -9 ${PACKAGE}-${VERSION}-${suffix}-cfgman.html
+       echo ${PACKAGE}-${VERSION}-${suffix}-cfgman.html.gz >>${branch}.out
 fi
 
 # Collate Manual Pages and generate HTML versions
 if (groff --help >/dev/null); then
-       make -C ${tmpdir}/doc all
-        for f in `ls -1 ${tmpdir}/helpers/*/*/*.8 ${tmpdir}/{doc,tools}/*.{1,8}` ; do
+       make -C ${tmpdir}/src squid.8
+       if [ ! -d ${tmpdir}/doc/manuals ] ; then
+               mkdir -p ${tmpdir}/doc/manuals
+       fi
+       for f in `ls -1 ${tmpdir}/helpers/*/*/*.8 ${tmpdir}/src/*.8 ${tmpdir}/src/*/*.8 ${tmpdir}/tools/*.8 ./helpers/*/*/*.8 2>/dev/null` ; do
                cp $f ${tmpdir}/doc/manuals/
        done
-        for f in `ls -1 ${tmpdir}/doc/manuals/*.8` ; do
+       for f in `ls -1 ${tmpdir}/doc/manuals/*.1  ${tmpdir}/doc/manuals/*.8 2>/dev/null` ; do
                cat ${f} | groff -E -Thtml -mandoc >${f}.html
        done
-       sh -c "cd ${tmpdir}/doc/manuals && tar -zcf $PWD/${PACKAGE}-${VERSION}-${date}-manuals.tar.gz *.{html,1,8}"
-       echo ${PACKAGE}-${VERSION}-${date}-manuals.tar.gz >>${tag}.out
+       sh -c "cd ${tmpdir}/doc/manuals && tar -zcf ${PWD}/${PACKAGE}-${VERSION}-${suffix}-manuals.tar.gz *.html *.1 *.8"
+       echo ${PACKAGE}-${VERSION}-${suffix}-manuals.tar.gz >>${branch}.out
 fi
 
 # Generate language-pack tarballs
-# NP: Only to be done on HEAD branch.
-if test "${VERSION}" = "3.HEAD" ; then
-       sh -c "cd $tmpdir/errors && tar -zcf ${PWD}/${PACKAGE}-${VERSION}-${date}-langpack.tar.gz ./*/* ./alias* ./TRANSLATORS "
-       echo ${PACKAGE}-${VERSION}-${date}-langpack.tar.gz >>${tag}.out
-fi
+# NP: Only useful on development branch
+sh -c "cd ${tmpdir}/errors && tar -zcf ${PWD}/${PACKAGE}-${VERSION}-${suffix}-langpack.tar.gz ./*/* ./alias* ./TRANSLATORS ./COPYRIGHT "
+echo ${PACKAGE}-${VERSION}-${suffix}-langpack.tar.gz >>${branch}.out