Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
## Please see the COPYING and CONTRIBUTORS files for details.
##

AC_INIT([Squid Web Proxy],[5.0.0-BZR],[http://bugs.squid-cache.org/],[squid])
AC_INIT([Squid Web Proxy],[5.0.0-VCS],[http://bugs.squid-cache.org/],[squid])
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is now master, not the v5.0 branch. Would it be possible to say "master" instead of "5.0.0" here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The snapshots from master branch are alpha releases. The alpha version is currently 5.0.0-*. When that changes to v6 there will be explicit commits branching v5 into beta and updating the master to 6.0.0.

The design of snapshot version numeric is to enable clean integration with beta and stable release numberings. So package versioning systems in our downstream distros can handle custom builds and identify builds of v5 alphas from v4 alphas, etc. Many of them have automation performing "a new version is available" notifications to both packagers and administrators based on these numerics.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I doubt that calling master code v5.0.0 is a good idea. Yes, it solves some problems, but it also creates others.

However, I am not going to make that disagreement a blocking issue or waste your time discussing pros and cons. If you insist on assigning a numeric version to the master code in maintenance scripts and configure.ac, I can live with that as long as we have a proper master branch (which we now do).

AC_PREREQ(2.61)
AC_CONFIG_HEADERS([include/autoconf.h])
AC_CONFIG_AUX_DIR(cfgaux)
Expand Down
50 changes: 22 additions & 28 deletions mksnapshot.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,40 +10,34 @@
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."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would replace branch with revision (or similar) because one does not need a git branch to create a snapshot:

Where [revision] is the git tree-ish to snapshot (e.g., a branch name)

Creating a snapshot of a tagged version or a commit is a perfectly reasonable thing to do. This minor change does not affect the script code much.

N.B. Tree-ish is documented in "man git". Your git archive expects a tree-ish argument.

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 3.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`}

# 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 "echo FAIL-BUILD_${VERSION} ; rm -rf ${tmpdir}" 0
mkdir ${tmpdir}

rm -f ${tag}.out
bzr export ${tmpdir} ${BZRROOT}/${module}/${branchpath} || exit 1
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}"
echo "ERROR! Branch ${branch} not found."
fi

cd ${tmpdir}
revision=`bzr revno ${BZRROOT}/${module}/${branchpath}`
revision=`git rev-parse --short ${branch}`
suffix="${date}-r${revision}"
eval `grep "^ *PACKAGE_VERSION=" configure | sed -e 's/-BZR//' | sed -e 's/PACKAGE_//'`
eval `grep "^ *PACKAGE_VERSION=" configure | sed -e 's/-VCS//' | sed -e 's/PACKAGE_//'`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is one of the places where it would be better to extract the "version" information from git rather than essentially expect all git branches to change configure.ac. I understand that you may not want to change this part of the snapshot "architecture" now, but it would be a perfect opportunity to do so IMHO.

eval `grep "^ *PACKAGE_TARNAME=" configure | sed -e 's/_TARNAME//'`
ed -s configure.ac <<EOS
g/${VERSION}-[A-Z]*/ s//${VERSION}-${suffix}/
Expand All @@ -57,13 +51,13 @@ EOS
echo "STATE..."
echo "PACKAGE: ${PACKAGE}"
echo "VERSION: ${VERSION}"
echo "TAG: ${tag}"
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
./test-builds.sh --cleanup layer-00-bootstrap 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

Expand All @@ -86,12 +80,12 @@ echo "Preparing to publish: ${tmpdir}/${PACKAGE}-${VERSION}-${suffix}.tar.* ..."
#echo "BUILT TARS: " ; ls -1 ${tmpdir}/*.tar.* || true

cp -p ${tmpdir}/${PACKAGE}-${VERSION}-${suffix}.tar.gz .
echo ${PACKAGE}-${VERSION}-${suffix}.tar.gz >>${tag}.out
echo ${PACKAGE}-${VERSION}-${suffix}.tar.gz >>${branch}.out
cp -p ${tmpdir}/${PACKAGE}-${VERSION}-${suffix}.tar.bz2 .
echo ${PACKAGE}-${VERSION}-${suffix}.tar.bz2 >>${tag}.out
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 >>${tag}.out
echo ${PACKAGE}-${VERSION}-${suffix}.diff >>${branch}.out
fi

# latest Squid 'make' builds a RELEASENOTES.html at top directory
Expand All @@ -102,25 +96,25 @@ if [ ! -f ${relnotes} ]; then
fi
if [ -f ${relnotes} ]; then
cp -p ${relnotes} ${PACKAGE}-${VERSION}-${suffix}-RELEASENOTES.html
echo ${PACKAGE}-${VERSION}-${suffix}-RELEASENOTES.html >>${tag}.out
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}-${suffix}-ChangeLog.txt
echo ${PACKAGE}-${VERSION}-${suffix}-ChangeLog.txt >>${tag}.out
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}-${suffix}-cfgman.tar.gz *"
echo ${PACKAGE}-${VERSION}-${suffix}-cfgman.tar.gz >>${tag}.out
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 >>${tag}.out
echo ${PACKAGE}-${VERSION}-${suffix}-cfgman.html.gz >>${branch}.out
fi

# Collate Manual Pages and generate HTML versions
Expand All @@ -136,10 +130,10 @@ if (groff --help >/dev/null); then
cat ${f} | groff -E -Thtml -mandoc >${f}.html
done
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 >>${tag}.out
echo ${PACKAGE}-${VERSION}-${suffix}-manuals.tar.gz >>${branch}.out
fi

# Generate language-pack tarballs
# 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 >>${tag}.out
echo ${PACKAGE}-${VERSION}-${suffix}-langpack.tar.gz >>${branch}.out