diff --git a/DoKernelOrg b/DoKernelOrg index 575ed27688..cb269e0eee 100755 --- a/DoKernelOrg +++ b/DoKernelOrg @@ -1,97 +1,160 @@ #!/bin/sh -: ${J='-l 4 -j'} -G=/pub/software/scm/git && +exec 3>&2 >./:all.log 2>&1 -# HERE=$(git symbolic-ref HEAD) || exit 1 +ln_or_cp () { + ln -f "$@" || cp -f "$@" +} + +STAGE= narch= arch= master= jobs= rpm=t final= +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=} ;; + --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 -z "$final" +then + case "$STAGE" in + ?*) final=f ;; + '') final=t ;; + 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' +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' +GNU_ROFF=YesPlease +' rm -f version -case `hostname` in -hera.kernel.org) - narch='x86_64 i386 i686' - arch=x86_64 ;; -wing-fc*|fc*.siamese.dyndns.org|fc*) - eval $(rpm --showrc | sed -ne ' - s/^-14: dist[ ]*\./dist=/p - s/^-11= _target_cpu[ ]*/arch=/p - ') && - test -n "$dist" && test -n "$arch" || exit 1 - ;; -*) echo >&2 "What are you talking about???" - exit 1 ;; -esac && -: >./:all.log && -echo "* Building $THIS" && -make $J git >./:all.log 2>&1 && -V=`./git --version | sed -e 's/git version //'` && -NEEDS_CRYPTO_WITH_SSL=YesPlease make $d rpm >>./:all.log 2>&1 && -case "$narch" in -'') - # This is not the primary build machine. - status=$? - case "$status" in - 0) - echo >&2 "Done -- move RPMS to the master machine." - ( - cd "$HOME/rpms/" && - tar cf "TARBALL/$V.$arch.$dist.tar" \ - RPMS/$arch/*-$V-*.$dist.$arch.rpm && - ls -ld $HOME/rpms/TARBALL/$V.$arch.$dist.tar - ) && - make clean - ;; - ?) - echo >&2 "Failed with status $status" - ;; - esac - exit $status ;; -*) - make $d dist-doc >>./:all.log 2>&1 && - ln -f git-$V.tar.gz $G/. && - ln -f git-htmldocs-$V.tar.gz git-manpages-$V.tar.gz $G/. - ;; -esac >>./:all.log 2>&1 && +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" + 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 $G/testing && + 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 -f "$rr" $G/testing/. + ln_or_cp "$rr" "$STAGE$G/testing/." || exit done - done && - ln -f $HOME/rpms/SRPMS/git-$V-*.src.rpm $G/testing/. + done + ln_or_cp $HOME/rpms/SRPMS/git-$V-*.src.rpm "$STAGE$G/testing/." || exit ;; *) - mkdir -p $G/RPMS/$arch $G/RPMS/SRPMS && + mkdir -p "$STAGE$G/RPMS/$arch" "$STAGE$G/RPMS/SRPMS" || exit for a in $narch do - mkdir -p "$G/RPMS/$a" && + mkdir -p "$STAGE$G/RPMS/$a" || exit for rr in $HOME/rpms/RPMS/$a/*-$V-*.$a.rpm do test -f "$rr" || continue - ln -f "$rr" $G/RPMS/$a/. + ln_or_cp "$rr" "$STAGE$G/RPMS/$a/." || exit done - done && - ln -f $HOME/rpms/SRPMS/git-$V-*.src.rpm $G/RPMS/SRPMS/. && - { - # I do not know how it exits, and I do not care much. + 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 + /usr/local/bin/yummy "$G/RPMS/$a" done - /usr/local/bin/yummy $G/RPMS/SRPMS - : - } >>./:all.log 2>&1 ;; -esac && -make clean + /usr/local/bin/yummy "$G/RPMS/SRPMS" + fi +fi