#!/bin/sh exec 3>&2 >./:all.log 2>&1 ln_or_cp () { ln -f "$@" || cp -f "$@" } STAGE= narch= arch= master= jobs= rpm=t final= clean_stage= G=/pub/software/scm/git THIS=$(git describe HEAD) while case "$1" in -*) ;; *) break ;; esac do case "$1" in --master) master=t ;; --slave) master=f ;; -j*) jobs="$1" ;; --dist-only) rpm=f ;; --stage=?*) STAGE=${1#--stage=} ;; --clean-stage) clean_stage=t ;; --final) final=t ;; --pub=?*) G=${1#--pub=} ;; *) echo >&3 "Eh? $1"; exit 1 ;; esac shift done while test -n "$STAGE" && test "$STAGE" != "${STAGE%/}" do STAGE="${STAGE%/}" done if test -n "$clean_stage" && test -d "$STAGE/$G" then echo -n "Remove $STAGE/$G [y/N]? " read yesno case "$yesno" in [yY]) rm -fr "$STAGE/$G" && mkdir -p "$STAGE/$G" || exit ;; *) echo "Not removing, then" exit 0 ;; esac fi if test -z "$master" then case "$(hostname)" in hera.kernel.org) master=t ;; *) master=f ;; esac fi if test t = "$master" then narch='x86_64 i386 i686' if test -z "$final" then case "$STAGE" in ?*) final=f ;; '') final=t ;; esac fi else if test t != "$rpm" then echo >&3 "'--dist-only' only makes sense on the master machine" exit 1 fi if test t = "$final" then echo >&3 "'--final' only makes sense on the master machine" exit 1 fi fi eval $(rpm --showrc | sed -ne ' s/^-14: dist[ ]*\./dist=/p s/^-11= _target_cpu[ ]*/arch=/p ') && test -n "$dist" && test -n "$arch" || exit 1 d=' MAN_BASE_URL="http://www.kernel.org/pub/software/scm/git/docs/" ASCIIDOC_NO_ROFF=YesPlease ASCIIDOC8=YesPlease BLK_SHA1=YesPlease GNU_ROFF=YesPlease ' rm -f version echo "* Building $THIS" make $jobs git && V=`./git --version | sed -e 's/git version //'` || exit make $jobs dist || exit if test t = "$rpm" then NEEDS_CRYPTO_WITH_SSL=YesPlease make $jobs $d rpm || exit fi if test t != "$master" then ( cd "$HOME/rpms/" && tar cf "TARPIT/$V.$arch.$dist.tar" \ RPMS/$arch/*-$V-*.$dist.$arch.rpm && ls -ld $HOME/rpms/TARPIT/$V.$arch.$dist.tar ) || exit make clean echo >&2 "Done -- move RPMS to the master machine." echo >&2 "scp $HOME/rpms/TARPIT/$V.$arch.$dist.tar master.kernel.org:rpms/TARPIT" echo >&2 "sha1sum -c <<\EOF" (cd $HOME/rpms && sha1sum TARPIT/$V.$arch.$dist.tar) >&2 echo >&2 "EOF" exit fi make $jobs $d dist-doc || exit mkdir -p "$STAGE$G" && ln_or_cp git-$V.tar.gz "$STAGE$G/." && ln_or_cp git-htmldocs-$V.tar.gz git-manpages-$V.tar.gz "$STAGE$G/." && mkdir -p "$STAGE$G/docs/v$V" && tar Cxf "$STAGE$G/docs/v$V" "$STAGE$G/git-htmldocs-$V.tar.gz" || exit case "$V" in *.rc[0-9]* | *-rc[0-9]*) mkdir -p "$STAGE$G/testing" || exit for a in $narch do for rr in $HOME/rpms/RPMS/$a/*-$V-*.$a.rpm do test -f "$rr" || continue ln_or_cp "$rr" "$STAGE$G/testing/." || exit done done ln_or_cp $HOME/rpms/SRPMS/git-$V-*.src.rpm "$STAGE$G/testing/." || exit ;; *) mkdir -p "$STAGE$G/RPMS/$arch" "$STAGE$G/RPMS/SRPMS" || exit for a in $narch do mkdir -p "$STAGE$G/RPMS/$a" || exit for rr in $HOME/rpms/RPMS/$a/*-$V-*.$a.rpm do test -f "$rr" || continue ln_or_cp "$rr" "$STAGE$G/RPMS/$a/." || exit done done ln_or_cp $HOME/rpms/SRPMS/git-$V-*.src.rpm "$STAGE$G/RPMS/SRPMS/." || exit esac make clean if test t = "$final" then if test -n "$STAGE" then ( cd "$STAGE$G" && find . ! -type d -print0 | cpio -0plumda "$G" || find . ! -type d -print0 | cpio -0pumda "$G" ) fi || exit if test -f /usr/local/bin/yummy then for a in $narch do /usr/local/bin/yummy "$G/RPMS/$a" done /usr/local/bin/yummy "$G/RPMS/SRPMS" fi fi