OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [maintainer-scripts/] [gcc_release] - Blame information for rev 838

Go to most recent revision | Details | Compare with Previous | View Log

" >> ${SNAPSHOT_INDEX}" >> ${SNAPSHOT_INDEX}
Line No. Rev Author Line
1 278 jeremybenn
#! /bin/sh
2
 
3
########################################################################
4
#
5
# File:   gcc_release
6
# Author: Jeffrey Law, Bernd Schmidt, Mark Mitchell
7
# Date:   2001-05-25
8
#
9
# Contents:
10
#   Script to create a GCC release.
11
#
12
# Copyright (c) 2001, 2002, 2006, 2009, 2010 Free Software Foundation.
13
#
14
# This file is part of GCC.
15
#
16
# GCC is free software; you can redistribute it and/or modify
17
# it under the terms of the GNU General Public License as published by
18
# the Free Software Foundation; either version 3, or (at your option)
19
# any later version.
20
#
21
# GCC is distributed in the hope that it will be useful,
22
# but WITHOUT ANY WARRANTY; without even the implied warranty of
23
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24
# GNU General Public License for more details.
25
#
26
# You should have received a copy of the GNU General Public License
27
# along with GCC; see the file COPYING3.  If not see
28
# .
29
#
30
########################################################################
31
 
32
########################################################################
33
# Notes
34
########################################################################
35
 
36
# Here is an example usage of this script, to create a GCC 3.0.2
37
# prerelease:
38
#
39
#   gcc_release -r 3.0.2
40
#
41
# This script will automatically use the head of the release branch
42
# to generate the release.
43
 
44
########################################################################
45
# Functions
46
########################################################################
47
 
48
# Issue the error message given by $1 and exit with a non-zero
49
# exit code.
50
 
51
error() {
52
    echo "gcc_release: error: $1"
53
    exit 1
54
}
55
 
56
# Issue the informational message given by $1.
57
 
58
inform() {
59
    echo "gcc_release: $1"
60
}
61
 
62
# Issue a usage message explaining how to use this script.
63
 
64
usage() {
65
cat <
66
gcc_release -r release [-f] [further options]
67
gcc_release -s name:svnbranch [further options]
68
 
69
Options:
70
 
71
  -r release           Version of the form X.Y or X.Y.Z.
72
  -s name:svnbranch    Create a snapshot, not a real release.
73
 
74
  -d destination       Local working directory where we will build the release
75
                       (default=${HOME}).
76
  -f                   Create a final release (and update ChangeLogs,...).
77
  -l                   Indicate that we are running on gcc.gnu.org.
78
  -p previous-tarball  Location of a previous tarball (to generate diff files).
79
  -t tag               Tag to mark the release in SVN.
80
  -u username          Username for upload operations.
81
EOF
82
    exit 1
83
}
84
 
85
# Change to the directory given by $1.
86
 
87
changedir() {
88
  cd $1 || \
89
    error "Could not change directory to $1"
90
}
91
 
92
# Each of the arguments is a directory name, relative to the top
93
# of the source tree.  Return another name for that directory, relative
94
# to the working directory.
95
 
96
adjust_dirs() {
97
  for x in $@; do
98
    echo `basename ${SOURCE_DIRECTORY}`/$x
99
  done
100
}
101
 
102
# Build the source tree that will be the basis for the release
103
# in ${WORKING_DIRECTORY}/gcc-${RELEASE}.
104
 
105
build_sources() {
106
  # If the WORKING_DIRECTORY already exists, do not risk destroying it.
107
  if [ -r ${WORKING_DIRECTORY} ]; then
108
    error "\`${WORKING_DIRECTORY}' already exists"
109
  fi
110
  # Create the WORKING_DIRECTORY.
111
  mkdir "${WORKING_DIRECTORY}" \
112
    || error "Could not create \`${WORKING_DIRECTORY}'"
113
  changedir "${WORKING_DIRECTORY}"
114
 
115
  # If this is a final release, make sure that the ChangeLogs
116
  # and version strings are updated.
117
  if [ ${FINAL} -ne 0 ]; then
118
    inform "Updating ChangeLogs and version files"
119
 
120
    ${SVN} -q co "${SVNROOT}/${SVNBRANCH}" "`basename ${SOURCE_DIRECTORY}`" ||\
121
           error "Could not check out release sources"
122
    for x in `find ${SOURCE_DIRECTORY} -name ChangeLog`; do
123
      # Update this ChangeLog file only if it does not yet contain the
124
      # entry we are going to add.  (This is a safety net for repeated
125
      # runs of this script for the same release.)
126
      if ! grep "GCC ${RELEASE} released." ${x} > /dev/null ; then
127
        cat - ${x} > ${x}.new <
128
${LONG_DATE}  Release Manager
129
 
130
        * GCC ${RELEASE} released.
131
 
132
EOF
133
        mv ${x}.new ${x} || \
134
            error "Could not update ${x}"
135
        (changedir `dirname ${x}` && \
136
            ${SVN} -q ci -m 'Mark ChangeLog' `basename ${x}`) || \
137
            error "Could not commit ${x}"
138
      fi
139
    done
140
 
141
    # Update gcc/DEV-PHASE.
142
 
143
    [ `cat ${SOURCE_DIRECTORY}/gcc/BASE-VER` = ${RELEASE} ] || \
144
    error "Release number ${RELEASE} does not match BASE-VER"
145
    (changedir ${SOURCE_DIRECTORY}/gcc && \
146
     : > DEV-PHASE && \
147
     ${SVN} -q ci -m 'Mark as release' DEV-PHASE) || \
148
    error "Could not update DEV-PHASE"
149
 
150
    # Make sure we tag the sources for a final release.
151
    TAG="tags/gcc_`echo ${RELEASE} | tr . _`_release"
152
 
153
    rm -rf ${SOURCE_DIRECTORY}
154
  fi
155
 
156
  # Tag the sources.
157
  if [ -n "${TAG}" ]; then
158
    inform "Tagging sources as ${TAG}"
159
    # We don't want to overwrite an existing tag.  So, if the tag
160
    # already exists, issue an error message; the release manager can
161
    # manually remove the tag if appropriate.
162
    echo "${SVN} ls ${SVNROOT}/${TAG}/ChangeLog"
163
    if ${SVN} ls "${SVNROOT}/${TAG}/ChangeLog"; then
164
      error "Tag ${TAG} already exists"
165
    fi
166
    ${SVN} -m "Tagging source as ${TAG}" cp "${SVNROOT}/${SVNBRANCH}" "${SVNROOT}/${TAG}" || \
167
      error "Could not tag sources"
168
    SVNBRANCH=${TAG}
169
  fi
170
  SVNREV=`${SVN} info "${SVNROOT}/${SVNBRANCH}"|awk '/Revision:/ {print $2}'`
171
 
172
  # Export the current sources.
173
  inform "Retrieving sources (svn export -r ${SVNREV} ${SVNROOT}/${SVNBRANCH})"
174
 
175
  ${SVN} -q export -r${SVNREV} "${SVNROOT}/${SVNBRANCH}" "`basename ${SOURCE_DIRECTORY}`" ||\
176
    error "Could not retrieve sources"
177
 
178
  # Run gcc_update on them to set up the timestamps nicely, and (re)write
179
  # the LAST_UPDATED file containing the SVN tag/revision used.
180
  changedir "gcc-${RELEASE}"
181
  contrib/gcc_update --touch
182
  echo "Obtained from SVN: ${SVNBRANCH} revision ${SVNREV}" > LAST_UPDATED
183
 
184
  # For a prerelease or real release, we need to generate additional
185
  # files not present in SVN.
186
  changedir "${SOURCE_DIRECTORY}"
187
  if [ $SNAPSHOT -ne 1 ]; then
188
    # Generate the documentation.
189
    inform "Building install docs"
190
    SOURCEDIR=${SOURCE_DIRECTORY}/gcc/doc
191
    DESTDIR=${SOURCE_DIRECTORY}/INSTALL
192
    export SOURCEDIR
193
    export DESTDIR
194
    ${SOURCE_DIRECTORY}/gcc/doc/install.texi2html
195
 
196
    # Regenerate the NEWS file.
197
    contrib/gennews > NEWS || \
198
      error "Could not regenerate NEWS files"
199
 
200
    # Now, we must build the compiler in order to create any generated
201
    # files that are supposed to go in the source directory.  This is
202
    # also a good sanity check to make sure that the release builds
203
    # on at least one platform.
204
    inform "Building compiler"
205
    OBJECT_DIRECTORY=../objdir
206
    contrib/gcc_build -d ${SOURCE_DIRECTORY} -o ${OBJECT_DIRECTORY} \
207
      -c "--enable-generated-files-in-srcdir --disable-multilib" build || \
208
      error "Could not rebuild GCC"
209
  fi
210
 
211
  # Move message catalogs to source directory.
212
  mv ../objdir/gcc/po/*.gmo gcc/po/
213
  [ -f libcpp/po/cpplib.pot ] && mv ../objdir/libcpp/po/*.gmo libcpp/po/
214
 
215
  # Create a "MD5SUMS" file to use for checking the validity of the release.
216
  echo \
217
"# This file contains the MD5 checksums of the files in the
218
# gcc-"${RELEASE}".tar.bz2 tarball.
219
#
220
# Besides verifying that all files in the tarball were correctly expanded,
221
# it also can be used to determine if any files have changed since the
222
# tarball was expanded or to verify that a patchfile was correctly applied.
223
#
224
# Suggested usage:
225
# md5sum -c MD5SUMS | grep -v \"OK$\"
226
" > MD5SUMS
227
 
228
  find . -type f |
229
  sed -e 's:^\./::' -e '/MD5SUMS/d' |
230
  sort |
231
  xargs md5sum >>MD5SUMS
232
}
233
 
234
# Build a single tarfile.  The first argument is the name of the tarfile
235
# to build, without any suffixes.  They will be added automatically.  The
236
# rest of the arguments are files or directories to include, and possibly
237
# other arguments to tar.
238
 
239
build_tarfile() {
240
  # Get the name of the destination tar file.
241
  TARFILE="$1.tar.bz2"
242
  shift
243
 
244
  # Build the tar file itself.
245
  (${TAR} cf - "$@" | ${BZIP2} > ${TARFILE}) || \
246
    error "Could not build tarfile"
247
  FILE_LIST="${FILE_LIST} ${TARFILE}"
248
}
249
 
250
# Build a single tarfile if any of the directories listed exist,
251
# but not if none of them do (because that component doesn't exist
252
# on this branch).
253
maybe_build_tarfile() {
254
  dest=$1
255
  shift
256
  dir_exists=0
257
  for maybe_dir in "$@"; do
258
    if [ -d "$maybe_dir" ]; then
259
      dir_exists=1
260
    fi
261
  done
262
  if [ $dir_exists = 1 ]; then
263
    build_tarfile "$dest" "$@"
264
  else
265
    echo "Not building $dest tarfile"
266
  fi
267
}
268
 
269
# Build the various tar files for the release.
270
 
271
build_tarfiles() {
272
  inform "Building tarfiles"
273
 
274
  changedir "${WORKING_DIRECTORY}"
275
 
276
  # The GNU Coding Standards specify that all files should
277
  # world readable.
278
  chmod -R a+r ${SOURCE_DIRECTORY}
279
  # And that all directories have mode 755.
280
  find ${SOURCE_DIRECTORY} -type d -exec chmod 755 {} \;
281
 
282
  # Build one huge tarfile for the entire distribution.
283
  build_tarfile gcc-${RELEASE} `basename ${SOURCE_DIRECTORY}`
284
 
285
  # Now, build one for each of the languages.
286
  maybe_build_tarfile gcc-ada-${RELEASE} ${ADA_DIRS}
287
  maybe_build_tarfile gcc-g++-${RELEASE} ${CPLUSPLUS_DIRS}
288
  maybe_build_tarfile gcc-fortran-${RELEASE} ${FORTRAN95_DIRS}
289
  maybe_build_tarfile gcc-java-${RELEASE} ${JAVA_DIRS}
290
  maybe_build_tarfile gcc-objc-${RELEASE} ${OBJECTIVEC_DIRS}
291
  maybe_build_tarfile gcc-testsuite-${RELEASE} ${TESTSUITE_DIRS}
292
 
293
  # The core is everything else.
294
  EXCLUDES=""
295
  for x in ${ADA_DIRS} ${CPLUSPLUS_DIRS} ${FORTRAN95_DIRS}\
296
           ${JAVA_DIRS} ${OBJECTIVEC_DIRS} ${TESTSUITE_DIRS}; do
297
    EXCLUDES="${EXCLUDES} --exclude $x"
298
  done
299
  build_tarfile gcc-core-${RELEASE} ${EXCLUDES} \
300
    `basename ${SOURCE_DIRECTORY}`
301
}
302
 
303
# Build .gz files.
304
build_gzip() {
305
  for f in ${FILE_LIST}; do
306
    target=${f%.bz2}.gz
307
    (${BZIP2} -d -c $f | ${GZIP} > ${target}) || error "Could not create ${target}"
308
  done
309
}
310
 
311
# Build diffs against an old release.
312
build_diffs() {
313
  old_dir=${1%/*}
314
  old_file=${1##*/}
315
  old_vers=${old_file%.tar.bz2}
316
  old_vers=${old_vers#gcc-}
317
  inform "Building diffs against version $old_vers"
318
  for f in gcc gcc-ada gcc-g++ gcc-fortran gcc-java gcc-objc gcc-testsuite gcc-core; do
319
    old_tar=${old_dir}/${f}-${old_vers}.tar.bz2
320
    new_tar=${WORKING_DIRECTORY}/${f}-${RELEASE}.tar.bz2
321
    if [ ! -e $old_tar ]; then
322
      inform "$old_tar not found; not generating diff file"
323
    elif [ ! -e $new_tar ]; then
324
      inform "$new_tar not found; not generating diff file"
325
    else
326
      build_diff $old_tar gcc-${old_vers} $new_tar gcc-${RELEASE} \
327
        ${f}-${old_vers}-${RELEASE}.diff.bz2
328
    fi
329
  done
330
}
331
 
332
# Build an individual diff.
333
build_diff() {
334
  changedir "${WORKING_DIRECTORY}"
335
  tmpdir=gccdiff.$$
336
  mkdir $tmpdir || error "Could not create directory $tmpdir"
337
  changedir $tmpdir
338
  (${BZIP2} -d -c $1 | ${TAR} xf - ) || error "Could not unpack $1 for diffs"
339
  (${BZIP2} -d -c $3 | ${TAR} xf - ) || error "Could not unpack $3 for diffs"
340
  ${DIFF} $2 $4 > ../${5%.bz2}
341
  if [ $? -eq 2 ]; then
342
    error "Trouble making diffs from $1 to $3"
343
  fi
344
  ${BZIP2} ../${5%.bz2} || error "Could not generate ../$5"
345
  changedir ..
346
  rm -rf $tmpdir
347
  FILE_LIST="${FILE_LIST} $5"
348
}
349
 
350
# Upload the files to the FTP server.
351
upload_files() {
352
  inform "Uploading files"
353
 
354
  changedir "${WORKING_DIRECTORY}"
355
 
356
  # Make sure the directory exists on the server.
357
  if [ $LOCAL -eq 0 ]; then
358
    ${SSH} -l ${GCC_USERNAME} ${GCC_HOSTNAME} \
359
      mkdir -p "${FTP_PATH}/diffs"
360
    UPLOAD_PATH="${GCC_USERNAME}@${GCC_HOSTNAME}:${FTP_PATH}"
361
  else
362
    mkdir -p "${FTP_PATH}/diffs" \
363
      || error "Could not create \`${FTP_PATH}'"
364
    UPLOAD_PATH=${FTP_PATH}
365
  fi
366
 
367
  # Then copy files to their respective (sub)directories.
368
  for x in gcc*.gz gcc*.bz2; do
369
    if [ -e ${x} ]; then
370
      # Make sure the file will be readable on the server.
371
      chmod a+r ${x}
372
      # Copy it.
373
      case ${x} in
374
        *.diff.*)
375
          SUBDIR="diffs/";
376
          ;;
377
        *)
378
          SUBDIR="";
379
      esac
380
      ${SCP} ${x} ${UPLOAD_PATH}/${SUBDIR} \
381
        || error "Could not upload ${x}"
382
    fi
383
  done
384
}
385
 
386
# Print description if snapshot exists.
387
snapshot_print() {
388
  if [ -e ${RELEASE}/$1 ]; then
389
     printf "%-38s%s\n\n" "$1" "$2" >> ${SNAPSHOT_README}
390
     echo "  
$1
391
     echo "      
$2
392
  fi
393
}
394
 
395
# Announce a snapshot, both on the web and via mail.
396
announce_snapshot() {
397
  inform "Updating links and READMEs on the FTP server"
398
 
399
  TEXT_DATE=`date --date=$DATE +%B\ %d,\ %Y`
400
  SNAPSHOT_README=${RELEASE}/README
401
  SNAPSHOT_INDEX=${RELEASE}/index.html
402
 
403
  changedir "${SNAPSHOTS_DIR}"
404
  echo \
405
"Snapshot gcc-"${RELEASE}" is now available on
406
  ftp://gcc.gnu.org/pub/gcc/snapshots/"${RELEASE}"/
407
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.
408
 
409
This snapshot has been generated from the GCC "${BRANCH}" SVN branch
410
with the following options: "svn://gcc.gnu.org/svn/gcc/${SVNBRANCH} revision ${SVNREV}"
411
 
412
You'll find:
413
" > ${SNAPSHOT_README}
414
 
415
  echo \
416
"
417
 
418
419
GCC "${RELEASE}" Snapshot
420
421
 
422
423

GCC "${RELEASE}" Snapshot

424
 
425

The GCC Project makes

426
periodic snapshots of the GCC source tree available to the public
427
for testing purposes.

428
 
429

If you are planning to download and use one of our snapshots, then

430
we highly recommend you join the GCC developers list.  Details for
431
how to sign up can be found on the GCC project home page.

432
 
433

This snapshot has been generated from the GCC "${BRANCH}" SVN branch

434
with the following options: "svn://gcc.gnu.org/svn/gcc/${SVNBRANCH} revision ${SVNREV}"

435
 
436
" > ${SNAPSHOT_INDEX}
437
 
438
  snapshot_print gcc-${RELEASE}.tar.bz2 "Complete GCC (includes all of below)"
439
  snapshot_print gcc-core-${RELEASE}.tar.bz2 "C front end and core compiler"
440
  snapshot_print gcc-ada-${RELEASE}.tar.bz2 "Ada front end and runtime"
441
  snapshot_print gcc-fortran-${RELEASE}.tar.bz2 "Fortran front end and runtime"
442
  snapshot_print gcc-g++-${RELEASE}.tar.bz2 "C++ front end and runtime"
443
  snapshot_print gcc-java-${RELEASE}.tar.bz2 "Java front end and runtime"
444
  snapshot_print gcc-objc-${RELEASE}.tar.bz2 "Objective-C front end and runtime"
445
  snapshot_print gcc-testsuite-${RELEASE}.tar.bz2 "The GCC testsuite"
446
 
447
  echo \
448
"Diffs from "${BRANCH}"-"${LAST_DATE}" are available in the diffs/ subdirectory.
449
 
450
When a particular snapshot is ready for public consumption the LATEST-"${BRANCH}"
451
link is updated and a message is sent to the gcc list.  Please do not use
452
a snapshot before it has been announced that way." >> ${SNAPSHOT_README}
453
 
454
  echo \
455
"
456

Diffs from "${BRANCH}"-"${LAST_DATE}" are available in the

457
diffs/ subdirectory.

458
 
459

When a particular snapshot is ready for public consumption the LATEST-"${BRANCH}"

460
link is updated and a message is sent to the gcc list.  Please do not use
461
a snapshot before it has been announced that way.

462
 
463

464
 
465
466
gcc@gcc.gnu.org
467

468
Last modified "${TEXT_DATE}"
469
470
471
 
472
" >> ${SNAPSHOT_INDEX}
473
 
474
  rm -f LATEST-${BRANCH}
475
  ln -s ${RELEASE} LATEST-${BRANCH}
476
 
477
  inform "Sending mail"
478
 
479
  export QMAILHOST=gcc.gnu.org
480
  mail -s "gcc-${RELEASE} is now available" gcc@gcc.gnu.org < ${SNAPSHOT_README}
481
}
482
 
483
########################################################################
484
# Initialization
485
########################################################################
486
 
487
LC_ALL=C
488
export LC_ALL
489
 
490
# Today's date.
491
DATE=`date "+%Y%m%d"`
492
LONG_DATE=`date "+%Y-%m-%d"`
493
 
494
SVN=${SVN:-svn}
495
# The CVS server containing the GCC repository.
496
SVN_SERVER="gcc.gnu.org"
497
# The path to the repository on that server.
498
SVN_REPOSITORY="/svn/gcc"
499
# The username to use when connecting to the server.
500
SVN_USERNAME="${USER}"
501
 
502
# The machine to which files will be uploaded.
503
GCC_HOSTNAME="gcc.gnu.org"
504
# The name of the account on the machine to which files are uploaded.
505
GCC_USERNAME="gccadmin"
506
# The directory in which the files will be placed (do not use ~user syntax).
507
FTP_PATH=/var/ftp/pub/gcc
508
# The directory in which snapshots will be placed.
509
SNAPSHOTS_DIR=${FTP_PATH}/snapshots
510
 
511
# The major number for the release.  For release `3.0.2' this would be
512
# `3'
513
RELEASE_MAJOR=""
514
# The minor number for the release.  For release `3.0.2' this would be
515
# `0'.
516
RELEASE_MINOR=""
517
# The revision number for the release.  For release `3.0.2' this would
518
# be `2'.
519
RELEASE_REVISION=""
520
# The complete name of the release.
521
RELEASE=""
522
 
523
# The name of the branch from which the release should be made, in a
524
# user-friendly form.
525
BRANCH=""
526
 
527
# The name of the branch from which the release should be made, as used
528
# for our version control system.
529
SVNBRANCH=""
530
 
531
# The tag to apply to the sources used for the release.
532
TAG=""
533
 
534
# The old tarballs from which to generate diffs.
535
OLD_TARS=""
536
 
537
# The directory that will be used to construct the release.  The
538
# release itself will be placed in a subdirectory of this directory.
539
DESTINATION=${HOME}
540
# The subdirectory.
541
WORKING_DIRECTORY=""
542
# The directory that will contain the GCC sources.
543
SOURCE_DIRECTORY=""
544
 
545
# The directories that should be part of the various language-specific
546
# tar files.  These are all relative to the top of the source tree.
547
ADA_DIRS="gcc/ada libada gnattools"
548
CPLUSPLUS_DIRS="gcc/cp libstdc++-v3"
549
FORTRAN95_DIRS="gcc/fortran libgfortran"
550
JAVA_DIRS="gcc/java libjava libffi boehm-gc"
551
OBJECTIVEC_DIRS="gcc/objc gcc/objcp libobjc"
552
TESTSUITE_DIRS="gcc/testsuite"
553
 
554
# Non-zero if this is the final release, rather than a prerelease.
555
FINAL=0
556
 
557
# Non-zero if we are building a snapshot, and don't build gcc or
558
# include generated files.
559
SNAPSHOT=0
560
 
561
# Non-zero if we are running locally on gcc.gnu.org, and use local CVS
562
# and copy directly to the FTP directory.
563
LOCAL=0
564
 
565
# Major operation modes.
566
MODE_GZIP=0
567
MODE_DIFFS=0
568
MODE_SOURCES=0
569
MODE_TARFILES=0
570
MODE_UPLOAD=0
571
 
572
# List of archive files generated; used to create .gz files from .bz2.
573
FILE_LIST=""
574
 
575
# Programs we use.
576
 
577
BZIP2="${BZIP2:-bzip2}"
578
CVS="${CVS:-cvs -f -Q -z9}"
579
DIFF="${DIFF:-diff -Nrcpad}"
580
ENV="${ENV:-env}"
581
GZIP="${GZIP:-gzip --best}"
582
SCP="${SCP:-scp -p}"
583
SSH="${SSH:-ssh}"
584
TAR="${TAR:-tar}"
585
 
586
########################################################################
587
# Command Line Processing
588
########################################################################
589
 
590
# Parse the options.
591
while getopts "d:fr:u:t:p:s:l" ARG; do
592
    case $ARG in
593
    d)    DESTINATION="${OPTARG}";;
594
    r)    RELEASE="${OPTARG}";;
595
    t)    TAG="${OPTARG}";;
596
    u)    SVN_USERNAME="${OPTARG}";;
597
    f)    FINAL=1;;
598
    s)    SNAPSHOT=1
599
          BRANCH=${OPTARG%:*}
600
          SVNBRANCH=${OPTARG#*:}
601
          ;;
602
    l)    LOCAL=1
603
          SCP=cp
604
          PATH=~:/usr/local/bin:$PATH;;
605
    p)    OLD_TARS="${OLD_TARS} ${OPTARG}"
606
          if [ ! -f ${OPTARG} ]; then
607
            error "-p argument must name a tarball"
608
          fi;;
609
    \?)   usage;;
610
    esac
611
done
612
shift `expr ${OPTIND} - 1`
613
 
614
# Handle the major modes.
615
while [ $# -ne 0 ]; do
616
    case $1 in
617
    diffs)    MODE_DIFFS=1;;
618
    gzip)     MODE_GZIP=1;;
619
    sources)  MODE_SOURCES=1;;
620
    tarfiles) MODE_TARFILES=1;;
621
    upload)   MODE_UPLOAD=1;;
622
    all)      MODE_SOURCES=1; MODE_TARFILES=1; MODE_DIFFS=1; MODE_UPLOAD=1;
623
              if [ $SNAPSHOT -ne 1 ]; then
624
                # Only for releases and pre-releases.
625
                MODE_GZIP=1;
626
              fi
627
              ;;
628
    *)        error "Unknown mode $1";;
629
    esac
630
    shift
631
done
632
 
633
# Perform consistency checking.
634
if [ ${LOCAL} -eq 0 ] && [ -z ${SVN_USERNAME} ]; then
635
  error "No username specified"
636
fi
637
 
638
if [ ! -d ${DESTINATION} ]; then
639
  error "\`${DESTINATION}' is not a directory"
640
fi
641
 
642
if [ $SNAPSHOT -eq 0 ]; then
643
  if [ -z ${RELEASE} ]; then
644
    error "No release number specified"
645
  fi
646
 
647
  # Compute the major and minor release numbers.
648
  RELEASE_MAJOR=`echo $RELEASE | awk --assign FS=. '{ print $1; }'`
649
  RELEASE_MINOR=`echo $RELEASE | awk --assign FS=. '{ print $2; }'`
650
  RELEASE_REVISION=`echo $RELEASE | awk --assign FS=. '{ print $3; }'`
651
 
652
  if [ -z "${RELEASE_MAJOR}" ] || [ -z "${RELEASE_MINOR}" ]; then
653
    error "Release number \`${RELEASE}' is invalid"
654
  fi
655
 
656
  # Compute the full name of the release.
657
  if [ -z "${RELEASE_REVISION}" ]; then
658
    RELEASE="${RELEASE_MAJOR}.${RELEASE_MINOR}"
659
  else
660
    RELEASE="${RELEASE_MAJOR}.${RELEASE_MINOR}.${RELEASE_REVISION}"
661
  fi
662
 
663
  # Compute the name of the branch, which is based solely on the major
664
  # and minor release numbers.
665
  SVNBRANCH="branches/gcc-${RELEASE_MAJOR}_${RELEASE_MINOR}-branch"
666
 
667
  # If this is not a final release, set various parameters accordingly.
668
  if [ ${FINAL} -ne 1 ]; then
669
    RELEASE="${RELEASE}-RC-${DATE}"
670
    FTP_PATH="${SNAPSHOTS_DIR}/${RELEASE}"
671
  else
672
    FTP_PATH="${FTP_PATH}/releases/gcc-${RELEASE}/"
673
  fi
674
else
675
  RELEASE=${BRANCH}-${DATE}
676
  FTP_PATH="${FTP_PATH}/snapshots/${RELEASE}"
677
 
678
  # If diffs are requested when building locally on gcc.gnu.org, we (usually)
679
  # know what the last snapshot date was and take the corresponding tarballs,
680
  # unless the user specified tarballs explicitly.
681
  if [ $MODE_DIFFS -ne 0 ] && [ $LOCAL -ne 0 ] && [ -z "${OLD_TARS}" ]; then
682
    LAST_DATE=`cat ~/.snapshot_date-${BRANCH}`
683
    OLD_TARS=${SNAPSHOTS_DIR}/${BRANCH}-${LAST_DATE}/gcc-${BRANCH}-${LAST_DATE}.tar.bz2
684
  fi
685
fi
686
 
687
# Compute the name of the WORKING_DIRECTORY and the SOURCE_DIRECTORY.
688
WORKING_DIRECTORY="${DESTINATION}/gcc-${RELEASE}"
689
SOURCE_DIRECTORY="${WORKING_DIRECTORY}/gcc-${RELEASE}"
690
 
691
# Recompute the names of all the language-specific directories,
692
# relative to the WORKING_DIRECTORY.
693
ADA_DIRS=`adjust_dirs ${ADA_DIRS}`
694
CPLUSPLUS_DIRS=`adjust_dirs ${CPLUSPLUS_DIRS}`
695
FORTRAN95_DIRS=`adjust_dirs ${FORTRAN95_DIRS}`
696
JAVA_DIRS=`adjust_dirs ${JAVA_DIRS}`
697
OBJECTIVEC_DIRS=`adjust_dirs ${OBJECTIVEC_DIRS}`
698
TESTSUITE_DIRS=`adjust_dirs ${TESTSUITE_DIRS}`
699
 
700
# Set up SVNROOT.
701
if [ $LOCAL -eq 0 ]; then
702
    SVNROOT="svn+ssh://${SVN_USERNAME}@${SVN_SERVER}${SVN_REPOSITORY}"
703
    CVSROOT=":ext:${SVN_USERNAME}@gcc.gnu.org/cvs/gcc"
704
else
705
    SVNROOT="file:///svn/gcc"
706
    CVSROOT="/cvs/gcc"
707
fi
708
export SVNROOT
709
export CVSROOT
710
 
711
########################################################################
712
# Main Program
713
########################################################################
714
 
715
# Set the timezone to UTC
716
TZ="UTC0"
717
export TZ
718
 
719
# Build the source directory.
720
 
721
if [ $MODE_SOURCES -ne 0 ]; then
722
  build_sources
723
fi
724
 
725
# Build the tar files.
726
 
727
if [ $MODE_TARFILES -ne 0 ]; then
728
  build_tarfiles
729
fi
730
 
731
# Build diffs
732
 
733
if [ $MODE_DIFFS -ne 0 ]; then
734
  # Possibly build diffs.
735
  if [ -n "$OLD_TARS" ]; then
736
    for old_tar in $OLD_TARS; do
737
      build_diffs $old_tar
738
    done
739
  fi
740
fi
741
 
742
# Build gzip files
743
if [ $MODE_GZIP -ne 0 ]; then
744
  build_gzip
745
fi
746
 
747
# Upload them to the FTP server.
748
if [ $MODE_UPLOAD -ne 0 ]; then
749
  upload_files
750
 
751
  # For snapshots, make some further updates.
752
  if [ $SNAPSHOT -ne 0 ] && [ $LOCAL -ne 0 ]; then
753
    announce_snapshot
754
 
755
    # Update snapshot date file.
756
    changedir ~
757
    echo $DATE > .snapshot_date-${BRANCH}
758
 
759
    # Remove working directory
760
    rm -rf ${WORKING_DIRECTORY}
761
  fi
762
fi

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.