]> gcc.gnu.org Git - gcc.git/blame - contrib/release
texi2pod.pl: Fix regular expression for @r to avoid exponential recursion.
[gcc.git] / contrib / release
CommitLineData
1e8ba2a3
JL
1#! /bin/sh -x
2#
3# GCC release generation script.
4#
5# Originally written by Jeff Law <law@redhat.com>.
6
1e8ba2a3
JL
7# We need separate variables for the tag in the CVS sources and the
8# name of the release directory. Consider if we have a packaging problem
9# and need to respin the release. The sources do not change, but the release
10# name changes.
11#
f6820157
BK
12# [[ Not clear. You can purge the old tag and make a new one, too.
13# That way they continue to match. Maximize consistency. ]]
14#
1e8ba2a3
JL
15# We used to use a tag to get the previous release, but it is more reliable to
16# actually unpack the previous release from the ftp directory. Consider files
17# like .brik which are in the release, but not in the repository.
18#
19if test $# != 6 ; then
20 echo "usage: release release-tag release-name release_branch last-release-name prerelease dotag"
21 exit 1
22fi
23
24release_tag=$1
25release_name=$2
26release_suffix=`echo $release_name | sed -e s#gcc-##`
27release_branch=$3
28last_release_name=$4
29last_release_suffix=`echo $last_release_name | sed -e s#gcc-##`
30prerelease=$5
31dotag=$6
32
33case $last_release_name in
34 egcs-1.0*)
35 echo "unprotoize.c and README.gcc need special handling"
36 exit 1;
37 ;;
38 egcs-1.1*)
39 echo "No java or chill in egcs-1.1*"
40 ;;
41
42 gcc-2.95*)
43 echo "No testsuites in gcc-2.95*"
44 ;;
45esac
f6820157
BK
46
47STATEDIR=${STATEDIR-/home/law}
48GCCBASE=${GCCBASE-${STATEDIR}/gcc}
49TMPDIR=${TMPDIR-/var/tmp}
50export TMPDIR STATEDIR GCCBASE
51
52PATH=${GCCBASE}:$PATH
53
54[ -f ${GCCBASE}/gcc.pot ] || {
55 echo "'${GCCBASE}/gcc.pot' is missing"
56 exit 1
57}
58
59[ -f ${STATEDIR}/bin/brik ] || {
60 echo "'${STATEDIR}/bin/brik' is missing"
61 exit 1
62}
63
64# We run this on the cvs server itself so we can get at the cvs
65# files quickly. It also assumes access to my home dir for some
66# programs.
67CVSROOT=/cvs/gcc
68export CVSROOT
69
70# Get somewhere useful with a lot of disk space.
71cd $TMPDIR
72
1e8ba2a3
JL
73# Get into a temporary directory so as not to be confused by
74# any existing CVS administration files.
75rm -rf $$
76mkdir $$
77cd $$
78
79if test $prerelease = no -a $dotag = yes; then
80 update_changelogs $release_name $release_branch
81fi
82
83# If requested, tag the branch. Three steps, first remove the old tag from
84# the repository, then check out the release branch, then retag the release
85# branch.
86if test $dotag = yes; then
2d6fd5fd
JM
87 rm -rf gcc
88 cvs -Q rtag -d $release_tag gcc
89 cvs -Q co -r $release_branch gcc
1e8ba2a3 90 cvs -Q tag -f $release_tag
2d6fd5fd 91 rm -rf gcc
1e8ba2a3
JL
92fi
93
94# Get a copy of the previous release. Get it from the ftp dir to avoid minor
95# issues with files like .brik not being in the repository.
96if test $prerelease = yes; then
97 echo "Yow!"
98 exit 1;
99 zcat ~ftp/pub/gcc/snapshots/egcs-1.1.2-prerelease/$last_release_name.tar.gz | tar xf -
100else
101 zcat ~ftp/pub/gcc/releases/$last_release_name/$last_release_name.tar.gz | tar xf -
102fi
103
2d6fd5fd 104# Files/directories which are not part of the gcc-core module.
1e8ba2a3
JL
105noncore_files="gcc/cp libio libstdc++ gcc/f libf2c gcc/objc libobjc gcc/ch libchill gcc/java libjava gcc/testsuite"
106
2d6fd5fd 107# Get the gcc core. Note that the gcc-core module doesn't work yet, so
1e8ba2a3
JL
108# we get the whole directory, then prune the things we do not want.
109#
110# Also, get the latest copy of the installation instructions and the
111# faq in html, build plaintext versions of those documents.
2d6fd5fd
JM
112cvs -Q export -ko -r$release_tag gcc
113cd gcc
1e8ba2a3 114contrib/gcc_update --touch
f6820157 115cp ${GCCBASE}/gcc.pot gcc/po
1e8ba2a3
JL
116cd ..
117cvs -Q export -ko -Dnow wwwdocs/htdocs/install
118cvs -Q export -ko -Dnow wwwdocs/htdocs/faq.html
119#cvs -Q export -ko -Dnow wwwdocs/htdocs/bugs.html
2d6fd5fd 120mv gcc $release_name
1e8ba2a3
JL
121release_docs $release_name $$
122
123# Build a list of files in this release.
124cd $release_name
125find . -type f -print | sort > ../files_$release_name
f6820157 126${STATEDIR}/bin/brik -Gb -f ../files_$release_name > ../.brik_$release_name
1e8ba2a3
JL
127cp ../.brik_$release_name ./.brik
128
129# Get back to the directory with the two releases in it.
130cd ..
131
132# Remove anything that is not part of the core
133for file in $noncore_files; do
134 rm -rf $last_release_name/$file
135 rm -rf $release_name/$file
136done
137
138# Make the core tarball
139tar cf - $release_name | gzip --best > gcc-core-$release_suffix.tar.gz
140
141# make empty directories for directories that disappeared so that
142# patch will delete any files in those directories when patching up to
143# this release
144case $last_release_name in
145 gcc-2.95*)
146 mkdir $release_name/xiberty
147 mkdir $release_name/contrib/fixinc
148 ;;
149esac
150
151# Diff the core modules
152diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name $release_name > gcc-core-$last_release_suffix-$release_suffix.diff
153
154# Remove the core gunk
155rm -rf $last_release_name
156rm -rf $release_name
157
158
159# Go back and get the full distributions.
160if test $prerelease = yes; then
161 zcat ~ftp/pub/gcc/snapshots/egcs-1.1.2-prerelease/$last_release_name.tar.gz | tar xf -
162else
163 zcat ~ftp/pub/gcc/releases/$last_release_name/$last_release_name.tar.gz | tar xf -
164fi
165
2d6fd5fd
JM
166cvs -Q export -ko -r$release_tag gcc
167cd gcc
1e8ba2a3 168contrib/gcc_update --touch
f6820157 169cp ${GCCBASE}/gcc.pot gcc/po
1e8ba2a3
JL
170cd ..
171cvs -Q export -ko -Dnow wwwdocs/htdocs/install
172cvs -Q export -ko -Dnow wwwdocs/htdocs/faq.html
173#cvs -Q export -ko -Dnow wwwdocs/htdocs/bugs.html
2d6fd5fd 174mv gcc $release_name
1e8ba2a3
JL
175find $release_name/gcc/testsuite -type f -print | xargs rm -f
176release_docs $release_name $$
177
178
179# No need to regenerate the .brik file. We didn't delete it.
180cp .brik_$release_name $release_name/.brik
181
182# We don't need this anymore.
183rm .brik_$release_name
184rm .brik_$last_release_name
185
186# Make tarballs
187
188tar cf - $release_name/.brik $release_name/gcc/f $release_name/libf2c | gzip --best > gcc-g77-$release_suffix.tar.gz
189tar cf - $release_name/.brik $release_name/gcc/java | gzip --best > gcc-java-$release_suffix.tar.gz
190tar cf - $release_name/.brik $release_name/gcc/ch $release_name/libchill | gzip --best > gcc-chill-$release_suffix.tar.gz
191#tar cf - $release_name/.brik $release_name/gcc/testsuite/g77.f-torture | gzip --best > gcc-g77-testsuite-$release_suffix.tar.gz
192tar cf - $release_name/.brik $release_name/gcc/objc $release_name/libobjc | gzip --best > gcc-objc-$release_suffix.tar.gz
193tar cf - $release_name/.brik $release_name/gcc/cp $release_name/libio $release_name/libstdc++ | gzip --best > gcc-g++-$release_suffix.tar.gz
194#tar cf - $release_name/.brik $release_name/gcc/testsuite/g++.old-deja | gzip --best > gcc-g++-tests-$release_suffix.tar.gz
195#tar cf - $release_name/.brik $release_name/gcc/testsuite | gzip --best > gcc-tests-$release_suffix.tar.gz
196tar cf - $release_name | gzip --best > $release_name.tar.gz
197# make empty directories for directories that disappeared so that
198# patch will delete any files in those directories when patching up to
199# this release
200# make empty directories for directories that disappeared so that
201# patch will delete any files in those directories when patching up to
202# this release
203case $last_release_name in
204 gcc-2.95*)
205 mkdir $release_name/xiberty
206 mkdir $release_name/contrib/fixinc
207 ;;
208esac
209
210# Now make diffs for g77, g77-testsuite objc, g++, g++-testsuite, testsuite,
211# then the whole bloody thing. Add libobjc, java & chill for next major
212#release.
213diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/gcc/f $release_name/gcc/f > gcc-g77-$last_release_suffix-$release_suffix.diff
214diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/libf2c $release_name/libf2c >> gcc-g77-$last_release_suffix-$release_suffix.diff
215
216#diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/gcc/testsuite/g77.f-torture $release_name/gcc/testsuite/g77.f-torture > gcc-g77-testsuite-$last_release_suffix-$release_suffix.diff
217
218diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/gcc/ch $release_name/gcc/ch > gcc-chill-$last_release_suffix-$release_suffix.diff
219diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/libchill $release_name/libchill >> gcc-chill-$last_release_suffix-$release_suffix.diff
220
221diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/gcc/java $release_name/gcc/java > gcc-java-$last_release_suffix-$release_suffix.diff
222#diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/libf2c $release_name/libf2c >> gcc-java-$last_release_suffix-$release_suffix.diff
223
224diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/gcc/objc $release_name/gcc/objc > gcc-objc-$last_release_suffix-$release_suffix.diff
225mkdir $last_release_name/libobjc
226diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/libobjc $release_name/libobjc >> gcc-objc-$last_release_suffix-$release_suffix.diff
227
228diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/gcc/cp $release_name/gcc/cp > gcc-g++-$last_release_suffix-$release_suffix.diff
229diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/libio $release_name/libio >> gcc-g++-$last_release_suffix-$release_suffix.diff
230diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/libstdc++ $release_name/libstdc++ >> gcc-g++-$last_release_suffix-$release_suffix.diff
231
232#diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/gcc/testsuite/g++.old-deja $release_name/gcc/testsuite/g++.old-deja > gcc-g++-tests-$last_release_suffix-$release_suffix.diff
233
234#diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/gcc/testsuite $release_name/gcc/testsuite > gcc-tests-$last_release_suffix-$release_suffix.diff
235
236diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name $release_name > gcc-$last_release_suffix-$release_suffix.diff
237
238
239# Remove the old snapshot, we're done with it.
240rm -rf $last_release_name
241
242
243# Compress the diff files.
244gzip --best *.diff
245
246# bzip everything too
247
248# Copy them to the FTP server XXX
249
250# Update links on the ftp server XXX
251
252# Announce it XXX
This page took 0.066758 seconds and 5 git commands to generate.