You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
3.2 KiB
160 lines
3.2 KiB
#!/bin/sh |
|
|
|
exec 3>&2 >./:all.log 2>&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 "$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." |
|
(cd $HOME/rpms && sha1sum TARPIT/$V.$arch.$dist.tar) >&2 |
|
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 "$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
|
|
|