1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-12-04 14:46:47 -05:00

Rewrote contrib/mkdist.

* All arguments must now be given as options.
* Documented.
* chmod +x in Git.
* Do not distribute files whose contents should depend on what the
  configure script found: config.h, config.log, config.status,
  features.log, Makefile.config, contrib/conv/w3m2links.awk,
  contrib/lua/hooks.lua, doc/man/man1/elinks.1.
* Do not distribute other files that configure will rebuild anyway:
  src/intl/gettext/ref-add.sed, src/intl/gettext/ref-del.sed.
  But do distribute contrib/elinks.spec, because it specifies how
  to run configure, and only the @VERSION@ varies in it.
* Do not distribute the empty directory po/.deps.
* Save the commit ID into .git/HEAD in the tar file.
* Compress the *.tar.gz and *.tar.bz2 from the same *.tar file.
* Instead of *.tar.gz.md5 and *.tar.bz2.md5, generate a *.md5 file
  that contains md5sums for *.tar, *.tar.gz, and *.tar.bz2.
* Use md5sum --binary for the sake of Windows.
This commit is contained in:
Kalle Olavi Niemitalo 2007-07-19 21:46:34 +03:00 committed by Kalle Olavi Niemitalo
parent f7a16ba0e6
commit 49678b9320

166
contrib/mkdist Normal file → Executable file
View File

@ -2,11 +2,21 @@
#
# This script can be used by a cron to generate snapshots.
# For example, use:
# 35 0 * * * mkdist elinks-0.11 0.11 >>mkdist.log 2>&1
# 40 0 * * * mkdist HEAD 0.12 >>mkdist.log 2>&1
# 35 0 * * * mkdist -r elinks-0.11 -l 0.11 -s >>mkdist.log 2>&1
# 40 0 * * * mkdist -r HEAD -l 0.12 -s >>mkdist.log 2>&1
#
# To generate a release (which doesn't have a date in the
# top-level directory) also pass -r as the third parameter.
# Options:
# -g GIT_DIR Git repository from which this script exports ELinks.
# May be given in the environment instead.
# -r REVISION Git revision to be exported from the repository.
# -l LABEL User-friendly name of the branch or release.
# This ends up in the name of the tar file, and in the
# name of the directory it contains.
# -s Generate a snapshot (which has a date in the top-level
# directory).
# -d DOCDIR Copy prebuilt documentation from DOCDIR.
# -o OUTDIR Place the output files in OUTDIR. Defaults to the
# current directory.
# set -x
@ -15,64 +25,118 @@ echo "Date: $(date)"
echo "Args: $*"
echo "-------------------------------------------------"
ub=$1
lb=$2
# Variables used in this script:
# $GIT_DIR = option -g GIT_DIR; passed in environment to Git
# $OPTARG = Bash special: argument of the option being parsed
# $OPTIND = Bash special: index of argument to be parsed next
# $commit = commit ID corresponding to $rev
# $docdir = option -d DOCDIR
# $label = option -l LABEL
# $opt = option letter being parsed, or '?' on error
# $outdir = option -o OUTDIR
# $rev = option -r REVISION
# $snap = option -s
# $tarbasename = name of the tar file without .tar.* extensions
# $tartopdir = name of the top directory within the tar file
# $tmpdir = temporary directory created by this script
GIT_DIR="elinks-repo-directory"
DOC_DIR="" # Leave empty for no doc dir
TMP_DIR="/tmp/elinks-git.$$"
TAR_DIR="elinks-snapshot-directory"
rev=
label=
snap=
docdir=
outdir=.
while getopts "g:r:l:sd:o:" opt
do
case "$opt" in
(g) GIT_DIR=$OPTARG ;;
(r) rev=$OPTARG ;;
(l) label=$OPTARG ;;
(s) snap=1 ;;
(d) docdir=$OPTARG ;;
(o) outdir=$OPTARG ;;
("?") exit 1 ;;
(*) echo >&2 "$0:$LINENO: bug found"
exit 1 ;;
esac
done
[ "$ub" ] || exit 1
[ "$lb" ] || exit 1
if [ "$3" != "-r" ]; then
ver=$lb-`date +%Y%m%d`
c="-current";
else
ver=$lb;
c="";
if [ $OPTIND -le $# ]
then
echo >&2 "$0: too many non-option arguments"
exit 1
fi
mkdir "$TMP_DIR
cd "$TMP_DIR"
if [ -z "$GIT_DIR" ]
then
echo >&2 "$0: Must specify -g GIT_DIR option"
exit 1
fi
if [ -z "$outdir" ]
then
echo >&2 "$0: Must specify -o OUTDIR option"
exit 1
fi
if [ -z "$rev" ]
then
echo >&2 "$0: Must specify -r REVISION option"
exit 1
fi
if [ -z "$label" ]
then
label=$rev
fi
GIT_DIR="$GIT_DIR" cg-export -r "$ub" "$TMP_DIR"/elinks"
commit=$(GIT_DIR=$GIT_DIR cg-object-id -c "$rev") || exit 1
cd elinks
./autogen.sh
./configure
if [ "$ub" = "REL_0_10" ]; then
make dist
tar xfz elinks-$lb*.tar.gz
cd elinks-$ub*
if [ "$snap" ]
then
tartopdir=elinks-$label-$(date +%Y%m%d)
tarbasename=elinks-current-$label
else
tartopdir=elinks-$label
tarbasename=elinks-$label
fi
tmpdir=$(mktemp -d -t elinks-dist-XXXXXXXX) || exit 1
# To make it easier to compare build logs, put the source first in an
# "elinks" directory, and only move to "$tartopdir" when finished.
GIT_DIR=$GIT_DIR cg-export -r "$rev" -- "$tmpdir/elinks"
mkdir -- "$tmpdir/elinks/.git"
printf "%s\n" "$commit" > "$tmpdir/elinks/.git/HEAD"
(set -e
cd -- "$tmpdir/elinks"
./autogen.sh
mkdir build
cd build
../configure
make -C po
fi
mv po/*.gmo ../po/
mv contrib/elinks.spec ../contrib/
) || exit 1
if test -n "$DOC_DIR"; then
mkdir doc/html
cp -r "$DOC_DIR"/*.html* doc/html
if [ -n "$docdir" ]; then
mkdir -- "$tmpdir/elinks/doc/html"
cp -r -- "$docdir"/*.html* "$tmpdir/elinks/doc/html/"
# mkdir doc/pdf
# cp "$DOC_DIR"/*.pdf doc/pdf
# cp "$docdir"/*.pdf doc/pdf
fi
cd ..
rm -rf -- "$tmpdir/elinks/build"
mv -- "$tmpdir/elinks" "$tmpdir/$tartopdir"
if [ "$c" ]; then
dir=`ls .`
mv $dir elinks-$ver
fi
(set -e
cd -- "$tmpdir"
tar cf "$tarbasename.tar" "$tartopdir"
md5sum --binary -- "$tarbasename.tar" > "$tarbasename.md5"
bzip2 --keep -- "$tarbasename.tar"
gzip -9 -- "$tarbasename.tar"
md5sum --binary -- "$tarbasename.tar.gz" "$tarbasename.tar.bz2" >> "$tarbasename.md5"
) || exit 1
tar cfz elinks$c-$lb.tar.gz elinks-$ver && \
mv elinks$c-$lb.tar.gz "$TAR_DIR" && \
(cd "$TAR_DIR" && md5sum elinks$c-$lb.tar.gz > elinks$c-$lb.tar.gz.md5)
tar cfj elinks$c-$lb.tar.bz2 elinks-$ver && \
mv elinks$c-$lb.tar.bz2 "$TAR_DIR" && \
(cd "$TAR_DIR" && md5sum elinks$c-$lb.tar.bz2 > elinks$c-$lb.tar.gz.md5)
rm -rf "$TMP_DIR"
mv -- "$tmpdir/$tarbasename.tar.gz" "$outdir"
mv -- "$tmpdir/$tarbasename.tar.bz2" "$outdir"
mv -- "$tmpdir/$tarbasename.md5" "$outdir"
rm -rf -- "$tmpdir"