OSDN Git Service

Add - before rms to be more portable.
[pf3gnuchains/gcc-fork.git] / contrib / release
1 #! /bin/sh  -x
2 #
3 # GCC release generation script.
4 #
5 # Originally written by Jeff Law <law@redhat.com>.
6
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 #
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 #
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 #
19 if test $# != 6 ; then
20   echo "usage: release release-tag release-name release_branch last-release-name prerelease dotag"
21   exit 1
22 fi
23
24 release_tag=$1
25 release_name=$2
26 release_suffix=`echo $release_name | sed -e s#gcc-##`
27 release_branch=$3
28 last_release_name=$4
29 last_release_suffix=`echo $last_release_name | sed -e s#gcc-##`
30 prerelease=$5
31 dotag=$6
32
33 case $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     ;;
45 esac
46
47 STATEDIR=${STATEDIR-/home/law}
48 GCCBASE=${GCCBASE-${STATEDIR}/gcc}
49 TMPDIR=${TMPDIR-/var/tmp}
50 export TMPDIR STATEDIR GCCBASE
51
52 PATH=${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.
67 CVSROOT=/cvs/gcc
68 export CVSROOT
69
70 # Get somewhere useful with a lot of disk space.
71 cd $TMPDIR
72
73 # Get into a temporary directory so as not to be confused by
74 # any existing CVS administration files.
75 rm -rf $$
76 mkdir $$
77 cd $$
78
79 if test $prerelease = no -a $dotag = yes; then
80   update_changelogs $release_name $release_branch
81 fi
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.
86 if test $dotag = yes; then
87   rm -rf egcs
88   cvs -Q rtag -d $release_tag egcs
89   cvs -Q co -r $release_branch egcs
90   cvs -Q tag -f $release_tag
91   rm -rf egcs
92 fi
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.
96 if 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 -
100 else
101   zcat ~ftp/pub/gcc/releases/$last_release_name/$last_release_name.tar.gz | tar xf -
102 fi
103
104 # Files/directories which are not part of the egcs-core module.
105 noncore_files="gcc/cp libio libstdc++ gcc/f libf2c gcc/objc libobjc gcc/ch libchill gcc/java libjava gcc/testsuite"
106
107 # Get the egcs core.  Note that the egcs-core module doesn't work yet, so
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.
112 cvs -Q export -ko -r$release_tag egcs
113 cd egcs
114 contrib/gcc_update --touch
115 cp ${GCCBASE}/gcc.pot gcc/po
116 cd ..
117 cvs -Q export -ko -Dnow wwwdocs/htdocs/install
118 cvs -Q export -ko -Dnow wwwdocs/htdocs/faq.html
119 #cvs -Q export -ko -Dnow wwwdocs/htdocs/bugs.html
120 mv egcs $release_name
121 release_docs $release_name $$
122
123 # Build a list of files in this release.
124 cd $release_name
125 find . -type f -print | sort > ../files_$release_name
126 ${STATEDIR}/bin/brik -Gb -f ../files_$release_name > ../.brik_$release_name
127 cp ../.brik_$release_name ./.brik
128
129 # Get back to the directory with the two releases in it.
130 cd ..
131
132 # Remove anything that is not part of the core
133 for file in $noncore_files; do
134   rm -rf $last_release_name/$file
135   rm -rf $release_name/$file
136 done
137
138 # Make the core tarball
139 tar 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
144 case $last_release_name in
145   gcc-2.95*)
146     mkdir $release_name/xiberty
147     mkdir $release_name/contrib/fixinc
148     ;;
149 esac
150         
151 # Diff the core modules
152 diff -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
155 rm -rf $last_release_name
156 rm -rf $release_name
157
158
159 # Go back and get the full distributions.
160 if test $prerelease = yes; then
161   zcat ~ftp/pub/gcc/snapshots/egcs-1.1.2-prerelease/$last_release_name.tar.gz | tar xf -
162 else
163   zcat ~ftp/pub/gcc/releases/$last_release_name/$last_release_name.tar.gz | tar xf -
164 fi
165
166 cvs -Q export -ko -r$release_tag egcs
167 cd egcs
168 contrib/gcc_update --touch
169 cp ${GCCBASE}/gcc.pot gcc/po
170 cd ..
171 cvs -Q export -ko -Dnow wwwdocs/htdocs/install
172 cvs -Q export -ko -Dnow wwwdocs/htdocs/faq.html
173 #cvs -Q export -ko -Dnow wwwdocs/htdocs/bugs.html
174 mv egcs $release_name
175 find $release_name/gcc/testsuite -type f -print | xargs rm -f
176 release_docs $release_name $$
177
178
179 # No need to regenerate the .brik file.  We didn't delete it.
180 cp .brik_$release_name $release_name/.brik
181
182 # We don't need this anymore.
183 rm .brik_$release_name
184 rm .brik_$last_release_name
185
186 # Make tarballs
187
188 tar cf - $release_name/.brik $release_name/gcc/f $release_name/libf2c | gzip --best > gcc-g77-$release_suffix.tar.gz
189 tar cf - $release_name/.brik $release_name/gcc/java | gzip --best > gcc-java-$release_suffix.tar.gz
190 tar 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
192 tar cf - $release_name/.brik $release_name/gcc/objc $release_name/libobjc | gzip --best > gcc-objc-$release_suffix.tar.gz
193 tar 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
196 tar 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
203 case $last_release_name in
204   gcc-2.95*)
205     mkdir $release_name/xiberty
206     mkdir $release_name/contrib/fixinc
207     ;;
208 esac
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.
213 diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/gcc/f $release_name/gcc/f > gcc-g77-$last_release_suffix-$release_suffix.diff
214 diff -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
218 diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/gcc/ch $release_name/gcc/ch > gcc-chill-$last_release_suffix-$release_suffix.diff
219 diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/libchill $release_name/libchill >> gcc-chill-$last_release_suffix-$release_suffix.diff
220
221 diff -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
224 diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/gcc/objc $release_name/gcc/objc > gcc-objc-$last_release_suffix-$release_suffix.diff
225 mkdir $last_release_name/libobjc
226 diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/libobjc $release_name/libobjc >> gcc-objc-$last_release_suffix-$release_suffix.diff
227
228 diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/gcc/cp $release_name/gcc/cp > gcc-g++-$last_release_suffix-$release_suffix.diff
229 diff -x de.gmo -x fr.gmo -Nrc3p $last_release_name/libio $release_name/libio >> gcc-g++-$last_release_suffix-$release_suffix.diff
230 diff -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
236 diff -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.
240 rm -rf $last_release_name
241
242
243 # Compress the diff files.
244 gzip --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