What's cooking (2021/06 #06)
[git] / DoKernelOrg
1 #!/bin/sh
2
3 exec 3>&2 >./:all.log 2>&1
4
5 ln_or_cp () {
6         ln -f "$@" || cp -f "$@"
7 }
8
9 STAGE= narch= arch= master= jobs= rpm=t final= clean_stage=
10 G=/pub/software/scm/git
11 THIS=$(git describe HEAD)
12
13 while case "$1" in -*) ;; *) break ;; esac
14 do
15         case "$1" in
16         --master) master=t ;;
17         --slave) master=f ;;
18         -j*) jobs="$1" ;;
19         --dist-only) rpm=f ;;
20         --stage=?*) STAGE=${1#--stage=} ;;
21         --clean-stage) clean_stage=t ;;
22         --final) final=t ;;
23         --pub=?*) G=${1#--pub=} ;;
24         *) echo >&3 "Eh? $1"; exit 1 ;;
25         esac
26         shift
27 done
28
29 while test -n "$STAGE" && test "$STAGE" != "${STAGE%/}"
30 do
31         STAGE="${STAGE%/}"
32 done
33
34 if test -n "$clean_stage" && test -d "$STAGE/$G"
35 then
36         echo -n "Remove $STAGE/$G [y/N]? "
37         read yesno
38         case "$yesno" in
39         [yY])
40                 rm -fr "$STAGE/$G" &&
41                 mkdir -p "$STAGE/$G" || exit ;;
42         *)
43                 echo "Not removing, then"
44                 exit 0 ;;
45         esac
46 fi
47
48 if test -z "$master"
49 then
50         case "$(hostname)" in
51         hera.kernel.org) master=t ;;
52         *) master=f ;;
53         esac
54 fi
55
56 if test t = "$master"
57 then
58         narch='x86_64 i386 i686'
59         if test -z "$final"
60         then
61                 case "$STAGE" in
62                 ?*)     final=f ;;
63                 '')     final=t ;;
64                 esac
65         fi
66 else
67         if test t != "$rpm"
68         then
69                 echo >&3 "'--dist-only' only makes sense on the master machine"
70                 exit 1
71         fi
72         if test t = "$final"
73         then
74                 echo >&3 "'--final' only makes sense on the master machine"
75                 exit 1
76         fi
77 fi
78
79 eval $(rpm --showrc | sed -ne '
80         s/^-14: dist[   ]*\./dist=/p
81         s/^-11= _target_cpu[    ]*/arch=/p
82 ') && test -n "$dist" && test -n "$arch" || exit 1
83
84 d='
85 MAN_BASE_URL="http://www.kernel.org/pub/software/scm/git/docs/"
86 ASCIIDOC_NO_ROFF=YesPlease
87 ASCIIDOC8=YesPlease
88 BLK_SHA1=YesPlease
89 GNU_ROFF=YesPlease
90 '
91
92 rm -f version
93 echo "* Building $THIS"
94
95 make $jobs git &&
96 V=`./git --version | sed -e 's/git version //'` || exit
97
98 make $jobs dist || exit
99
100 if test t = "$rpm"
101 then
102         NEEDS_CRYPTO_WITH_SSL=YesPlease make $jobs $d rpm || exit
103 fi
104
105 if test t != "$master"
106 then
107         (
108                 cd "$HOME/rpms/" &&
109                 tar cf "TARPIT/$V.$arch.$dist.tar" \
110                         RPMS/$arch/*-$V-*.$dist.$arch.rpm &&
111                 ls -ld $HOME/rpms/TARPIT/$V.$arch.$dist.tar
112         ) || exit
113         make clean
114         echo >&2 "Done -- move RPMS to the master machine."
115         echo >&2 "scp $HOME/rpms/TARPIT/$V.$arch.$dist.tar master.kernel.org:rpms/TARPIT"
116         echo >&2 "sha1sum -c <<\EOF"
117         (cd $HOME/rpms && sha1sum TARPIT/$V.$arch.$dist.tar) >&2
118         echo >&2 "EOF"
119         exit
120 fi
121
122 make $jobs $d dist-doc || exit
123
124 mkdir -p "$STAGE$G" &&
125 ln_or_cp git-$V.tar.gz "$STAGE$G/." &&
126 ln_or_cp git-htmldocs-$V.tar.gz git-manpages-$V.tar.gz "$STAGE$G/." &&
127 mkdir -p "$STAGE$G/docs/v$V" &&
128 tar Cxf "$STAGE$G/docs/v$V" "$STAGE$G/git-htmldocs-$V.tar.gz" || exit
129
130 case "$V" in
131 *.rc[0-9]* | *-rc[0-9]*)
132         mkdir -p "$STAGE$G/testing" || exit
133         for a in $narch
134         do
135                 for rr in $HOME/rpms/RPMS/$a/*-$V-*.$a.rpm
136                 do
137                         test -f "$rr" || continue
138                         ln_or_cp "$rr" "$STAGE$G/testing/." || exit
139                 done
140         done
141         ln_or_cp $HOME/rpms/SRPMS/git-$V-*.src.rpm "$STAGE$G/testing/." || exit
142         ;;
143 *)
144         mkdir -p "$STAGE$G/RPMS/$arch" "$STAGE$G/RPMS/SRPMS" || exit
145         for a in $narch
146         do
147                 mkdir -p "$STAGE$G/RPMS/$a" || exit
148                 for rr in $HOME/rpms/RPMS/$a/*-$V-*.$a.rpm
149                 do
150                         test -f "$rr" || continue
151                         ln_or_cp "$rr" "$STAGE$G/RPMS/$a/." || exit
152                 done
153         done
154         ln_or_cp $HOME/rpms/SRPMS/git-$V-*.src.rpm "$STAGE$G/RPMS/SRPMS/." || exit
155 esac
156
157 make clean
158
159 if test t = "$final"
160 then
161         if test -n "$STAGE"
162         then
163                 (
164                         cd "$STAGE$G" &&
165                         find . ! -type d -print0 | cpio -0plumda "$G" ||
166                         find . ! -type d -print0 | cpio -0pumda "$G"
167                 )
168         fi || exit
169         if test -f /usr/local/bin/yummy
170         then
171                 for a in $narch
172                 do
173                         /usr/local/bin/yummy "$G/RPMS/$a"
174                 done
175                 /usr/local/bin/yummy "$G/RPMS/SRPMS"
176         fi
177 fi