source: stable/0.6/prepare_new_release @ 1820

Last change on this file since 1820 was 1820, checked in by lou, 11 years ago

Merge r1817:1819 from trunk; tweaks for CoinBazaar?.

  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 22.3 KB
Line 
1#!/bin/sh
2
3# Copyright (C) 2007  International Business Machines.
4# All Rights Reserved.
5# This file is distributed under the Common Public License.
6# It is part of the BuildTools project in COIN-OR (www.coin-or.org)
7#
8# $Id: prepare_new_release 1820 2010-11-05 14:18:54Z lou $
9#
10# Author: Andreas Waechter     IBM      2007-06-21
11# Modified: Lou Hafer          SFU      2008-01-20
12#       Accommodate simultaneous creation of releases with circular
13#       dependencies.
14# Modified: Ted Ralphs         Lehigh University 2009-07-10
15#       Set libtool version info automatically
16# Modified: Lou Hafer          SFU      2010-06-02
17#       Adapt to new script architecture pioneered in *_new_stable; major
18#       rewrite.
19
20#set -x -v
21set -e
22
23# You can think of this script as having two sections: parameter parsing and
24# validation, followed by generation of the release candidate. See the help
25# message for a good description of the actions taken to generate the release
26# candidate.
27
28# Know thy self. If there are no '/' chars in the command name, we're running
29# in the currrent directory. Otherwise, strip the command name, leaving the
30# prefix.  Coin-functions is expected to live in the same directory.
31
32if expr "$0" : '.*/.*' >/dev/null 2>&1 ; then
33  cmdDir=`echo $0 | sed -e 's,\(.*\)/[^/]*,\1,'`
34else
35  cmdDir='.'
36fi
37cmdDir=`cd $cmdDir ; pwd`
38if test -r $cmdDir/coin-functions ; then
39  . $cmdDir/coin-functions
40else
41  echo "Cannot find utility functions file coin-functions; exiting."
42fi
43
44# Note that plain sh does not accept negative exit values
45
46exitValue=0
47
48# Specify the COIN URL base for convenience.
49
50coinURL="https://projects.coin-or.org/svn"
51
52# Begin parameter processing.
53
54printHelp=0
55ignoreBuildToolsMismatch=0
56suppressCheckout=0
57
58# stableURL will be the stable branch that is the parent for the release we
59# are building. We'll need to be able to distinguish ThirdParty and Data
60# builds, and BuildTools itself; they require special handling. If a project
61# is not BuildTools, ThirdParty, or Data, it's `normal'.
62# SV: I think also ThirdParty projects should be treated as 'normal', so I changed that.
63
64stableURL=
65isThirdParty=no
66isData=no
67isBuildTools=no
68isNormal=yes
69
70# cmdBTURL is required when stableURL specifies a ThirdParty or Data
71# project --- we'll need to assemble a temporary package while creating the
72# release candidate.
73
74cmdBTURL=
75
76# stableExternals specifies externals for which we are doing simultaneous
77# releases. We will use the stable branch of the external while preparing and
78# testing this release candidate, changing the Dependencies file to specify a
79# (nonexistent) release of the external at the last moment.
80
81stableExternals=
82
83# exciseExternals specifies externals that should be removed when creating the
84# new release.
85
86exciseExternals=
87
88# We need at least one parameter.
89
90if test "$#" -eq 0; then
91  printHelp=1
92else
93
94# Process the parameters. A parameter without an opening `-' is assumed to be
95# the spec for the stable branch.
96
97  while test $# -gt 0 && test $exitValue = 0 && test $printHelp = 0 ; do
98    case "$1" in
99      -h* | --h*) printHelp=1 ;;
100      -i* | --i*) ignoreBuildToolsMismatch=1 ;;
101      -p* | --p*) suppressCheckout=1 ;;
102      -s* | --s*)
103           if expr "$1" : '.*-s.*=.*' 2>&1 >/dev/null ; then
104             stableExternals=`echo $1 | sed -n -e 's/[^=]*=\(.*\)/\1/p'`
105           else
106             shift
107             stableExternals=$1
108           fi
109           ;;
110      -x* | --x*)
111           if expr "$1" : '.*-x.*=.*' 2>&1 >/dev/null ; then
112             exciseExternals=`echo $1 | sed -n -e 's/[^=]*=\(.*\)/\1/p'`
113           else
114             shift
115             exciseExternals=$1
116           fi
117           ;;
118       -b* | --b*)
119           if expr "$1" : '.*-b.*=.*' 2>&1 >/dev/null ; then
120             cmdBTURL=`echo $1 | sed -n -e 's/[^=]*=\(.*\)/\1/p'`
121           else
122             shift
123             cmdBTURL=$1
124           fi
125           if expr "$cmdBTURL" : '.*BuildTools.*' 2>&1 >/dev/null ; then
126             case $cmdBTURL in
127               http*) ;;
128                   *) cmdBTURL=${coinURL}/$cmdBTURL
129                      ;;
130             esac
131           else
132             echo ''
133             echo "URL $cmdBTURL does not point to BuildTools."
134             echo ''
135             printHelp=1
136             exitValue=3
137            fi
138           ;;
139           
140       -*) echo "$0: unrecognised command line switch '"$1"'."
141           printHelp=1
142           exitValue=1
143           ;;
144        *) stableURL=$1
145           if expr "$stableURL" : '.*/stable/.*' 2>&1 >/dev/null ; then
146             case $stableURL in
147               http*) ;;
148               BuildTools/ThirdParty/* )
149                 stableURL=${coinURL}/$stableURL
150                 ;;
151               ThirdParty/* )
152                 stableURL=${coinURL}/BuildTools/$stableURL
153                 ;;
154               CoinAll/* )
155                 stableURL=${coinURL}/CoinBinary/$stableURL
156                 ;;
157               *) stableURL=${coinURL}/$stableURL
158                 ;;
159             esac
160           else
161             echo ''
162             echo "URL $stableURL does not specify a stable release."
163             echo ''
164             printHelp=1
165             exitValue=2
166           fi
167           ;;
168    esac
169    shift
170  done
171
172# Consistency checks: Make sure that the stable URL exists. If we're building
173# a ThirdParty or Data release, we need a BuildTools URL.
174
175  if test $printHelp = 0 && test $exitValue = 0 ; then
176    if svn list $stableURL 2>&1 >/dev/null ; then
177      :
178    else
179      echo "Stable URL $stableURL does not seem to exist."
180      printHelp=1
181      exitValue=5
182    fi
183  fi
184  if test $printHelp = 0 && test $exitValue = 0 ; then
185    case $stableURL in
186      *ThirdParty/* )
187        isThirdParty=yes
188        ;;
189      *Data/* )
190        isData=yes
191        isNormal=no
192        ;;
193      *BuildTools/* )
194        isBuildTools=yes
195        isNormal=no
196        ;;
197      *)
198        ;;
199    esac
200    if test $isThirdParty = yes || test $isData = yes ; then
201      if test -z $cmdBTURL ; then
202        echo "You must provide a BuildTools URL to build a ThirdParty or Data project."
203        printHelp=1
204        exitValue=4
205      else
206        if svn list $cmdBTURL 2>&1 >/dev/null ; then
207          :
208        else
209          echo "BuildTools URL $cmdBTURL does not seem to exist."
210          printHelp=1
211          exitValue=6
212        fi
213      fi
214    fi
215  fi
216fi  # if "$#" .eq 0
217
218if test $printHelp = 1 ; then
219  cat <<EOF
220Usage: prepare_new_release <stableVer> [options]
221
222COIN standard practice is to generate periodic releases by taking a snapshot
223of the stable branch of the project.  You can use this script to prepare
224a new release based on the specified stable branch.
225
226<stableVer> specifies the stable branch of your project to be used to
227create the new release.  You can specify the entire URL, or you just enter
228what comes after "https://projects.coin-or.org/svn".  A typical example is
229
230  prepare_new_release Ipopt/stable/3.3
231
232Options:
233  -b <BuildToolsURL>    URL for BuildTools; required to generate a release
234                        for a ThirdParty or Data project.
235  -i                    Ignore BuildTools version mismatches in externals.
236  -p                    Suppress checkout (useful for testing)
237  -s <projectlist>      Suppress conversion from stable to release for the
238                        listed externals (comma-separated list of project
239                        names, e.g., -s Osi,Cbc).
240  -x <projectlist>      Remove the listed projects from the list of externals
241                        (comma-separated list of project names).
242
243This script will do the following:
244
245  - Automatically determine the next release number (X.Y.0 if this is the
246    first release for stable/X.Y, otherwise one greater than any existing
247    release)
248  - Check out a clean copy of the specified stable branch, without externals
249  - Make sure that the svn:externals property points to releases, with the
250    exception of projects in the list specified with -s.
251  - Create a new package configure.ac file with the release version number
252    specified in the AC_INIT macro.
253  - Use the "get.*" scripts to download any ThirdParty code.
254  - Execute run_autotools to update configure, Makefile.in, etc., to reflect
255    the most recent release of BuildTools.
256  - Run the configure script, compile the code, and run the unit test.
257  - Replace stable externals for projects specified with -s with the
258    appropriate (yet to be committed) release.
259
260If there is any error during these tasks the script will stop and you should
261examine the output.
262
263If the script completes without error, examine the output, particularly the
264output of the unit test ('make test') and the set of externals specified in
265the Dependencies file.
266
267This script does not make any changes to the repository.  If you want to
268commit the new release, run the "commit_new_release" script, as described
269at the end of the output.
270
271EOF
272fi
273
274if test $exitValue != 0 || test $printHelp = 1 ; then
275  exit $exitValue
276fi
277
278# End of parameter parsing. We have a stable URL to work with.  Tell the
279# user what we've seen.
280
281stableURL=`echo $stableURL | sed -e 's|/$||'`
282stableProj=`extractProjFromURL $stableURL`
283majVer=`extractMajorFromURL $stableURL`
284minVer=`extractMinorFromURL $stableURL`
285stableVer=$majVer.$minVer
286echo "Stable URL..........: $stableURL"
287echo "Stable project......: $stableProj"
288echo "Stable branch.......: $stableVer"
289if test -n "$stableExternals" ; then
290  echo "Stable externals....: $stableExternals."
291fi
292
293# Find out the most recent release (if any) for the stable branch, then
294# construct the revision number of the new release. If there are existing
295# releases, it's a matter of bumping the revision number and inserting the
296# new revision in the URL. Otherwise, we know the new revision is 0 and we
297# can simply tweak the stable URL.
298
299releaseURL=`bestRelease $stableURL $majVer $minVer | sed -e 's|/$||'`
300if test -n "$releaseURL" ; then
301  curRel=`extractReleaseFromURL $releaseURL`
302  existingURL=$releaseURL
303  newRel=`expr $curRel + 1`
304else
305  curRel=-1
306  releaseURL=`echo $stableURL | sed -e s/stable/releases/`
307  existingURL="none"
308  newRel=0
309fi
310newVer=$majVer.$minVer.$newRel
311releaseURL=`replaceVersionInURL $releaseURL $majVer $minVer $newRel`
312
313echo "Top release URL.....: $existingURL"
314echo "New release URL.....: $releaseURL"
315
316# Relevant only if we're building ThirdParty or Data
317
318if test $isThirdParty = yes || test $isData = yes ; then
319  echo "BuildTools URL......: $cmdBTURL"
320fi
321
322# We need a libtool version number only for normal projects
323
324if test $isNormal = yes ; then
325  newLTCurrent=`calcLibtoolAge $stableURL -1`
326  newLTRevision=$newRel
327  newLTAge=`calcLibtoolAge $stableURL $majVer`
328  newLTAge=`expr $newLTAge - 1`
329  newLTVer=${newLTCurrent}:${newLTRevision}:${newLTAge}
330  echo "Libtool version.....: $newLTVer"
331fi
332
333# Now decide where to build and check out code. If the stable project name
334# contains a '/', strip it out to make the build and checkout directories.
335
336topBuildDir=`echo $stableProj | sed -e 's|.*/\([^/]*\)$|\1|'`
337topBuildDir="${topBuildDir}-${newVer}"
338if test $isThirdParty = yes; then
339  coDir=$topBuildDir/Thirdparty/$stableProj
340elif test $isData = yes; then
341  coDir=$topBuildDir/Data/$stableProj
342else
343  coDir=$topBuildDir
344fi
345echo "Build directory.....: $topBuildDir"
346echo "Checkout directory..: $coDir"
347
348# Check out the stable branch that'll be the base of the new release. No
349# externals at this point. Creating a release of a ThirdParty or Data project
350# requires a bit of work, as we need to assemble a temporary package with a
351# BuildTools external.
352
353echo ''
354echo "===> Checking out stable release $stableVer without externals..."
355echo ''
356
357rm -rf $topBuildDir
358cmd="svn co --ignore-externals $stableURL $coDir"
359if test $suppressCheckout = 1 ; then
360  echo "Pretending to do: $cmd"
361else
362  rm -rf $topBuildDir
363  echo $cmd
364  eval $cmd
365fi
366
367if test $isThirdParty = yes || test $isData = yes; then
368  echo ''
369  echo '===> Checking out BuildTools (Data or ThirdParty) ...'
370  echo ''
371  cmd="svn co $cmdBTURL $topBuildDir/BuildTools"
372  if test $suppressCheckout = 1 ; then
373    echo "Pretending to do: $cmd"
374  else
375    echo $cmd
376    eval $cmd
377  fi
378fi
379
380startDir=`pwd`
381coDir=`cd $coDir; pwd`
382topBuildDir=`cd $topBuildDir; pwd`
383
384cd $coDir
385
386# Find configure.ac files for the package and project and update the version.
387# We have no externals or third-party code at this point, so there will be
388# two files for a normal project, one for a ThirdParty or Data project, and
389# none for BuildTools.
390
391echo ''
392echo "===> Checking for configure.ac files ..."
393bak_files=`find . -name 'configure.ac'`
394
395if test -n "$bak_files" ; then
396  for i in $bak_files; do
397    cp $i $i.bak
398  done
399
400# Take the attitude that [] around parameters in AC_INIT is optional,
401# it's the commas that count. This does make for a surpassing ugly regular
402# expression.  A comma in the version string will cause a spectacular failure.
403# In AC_COIN_PROJECTDIR_INIT, take the attitude that the existing parameters
404# don't matter, we know what the release parameters should be.
405
406  echo ''
407  echo "===> Updating version numbers in configure.ac files ..."
408  for i in $bak_files; do
409    sed -e "s|AC_INIT\(.*\),\(\[*\)[^],]*\(\]*\),\(.*\)|AC_INIT\1,\2$newVer\3,\4|" $i > bla
410    mv bla $i
411    lastComponent=`echo $stableProj | sed -e 's|.*/\([^/][^/]*\)|\1|'`
412    sed -e "s|AC_COIN_PROJECTDIR_INIT(.*)|AC_COIN_PROJECTDIR_INIT\($lastComponent,$newLTCurrent:$newLTRevision:$newLTAge\)|" $i > bla
413    mv bla $i
414    svn diff $i
415  done
416else
417  echo "    ... none to process."
418fi
419
420# Find ProjConfig.h. If there's a definition for PROJ_VERSION, adjust it and
421# add ProjConfig.h.bak to the list of files to be restored.
422
423stableProjUC=`echo $stableProj | tr '[a-z]' '[A-Z]'`
424configFileLoc=`find . -name '*Config.h' -print`
425if test -n "$configFileLoc" ; then
426  versionSym=${stableProjUC}_VERSION
427  echo ''
428  echo "===> Updating $versionSym in $configFileLoc (if present)"
429  echo ''
430  mv $configFileLoc $configFileLoc.bak
431  bak_files="$bak_files $configFileLoc"
432  sed -e "s/# *define $versionSym.*\$/#define $versionSym \"$newVer\"/" <$configFileLoc.bak >$configFileLoc
433  svn diff $configFileLoc
434fi
435
436# Look for a file specifying externals.
437
438srcDepFile=
439for file in Dependencies Externals ; do
440  if test -r $file ; then
441    srcDepFile=$file
442    break
443  fi
444done
445
446# Now generate a proper Dependencies file for the release.  Each line
447# in a Dependencies file has the format <ext_name> <ext_url>.  Normally,
448# each <ext_url> should be a stable branch.  References to stable branches
449# will be converted to references to releases unless the reference is to
450# a project in the stableExternals list (in which case it'll be converted
451# at the very end). References to releases are not changed. References to
452# trunk are an error. Failure to find a release for an external not in the
453# stableExternals list is an error. Save the existing externals and srcDepFile,
454# as we'll probably change both.
455
456if test -n "$srcDepFile" ; then
457
458  svn propget svn:externals . > .Externals.original
459  bak_files="$bak_files $srcDepFile"
460  cp $srcDepFile $srcDepFile.bak
461
462  echo ''
463  echo "===> Checking externals in $srcDepFile ..."
464  echo ''
465
466# Because we're working directly from command output, the regular expression
467# must check for lines.
468
469  ourBTURL=`svn propget svn:externals . | \
470            sed -n -e 's/^BuildTools *https:\([^ ]*\)$/https:\1/p'`
471  if test -z "$ourBTURL" ; then
472    ourBTURL=none
473  fi
474  echo "Our BuildTools...:    $ourBTURL"
475
476  rm -f Dependencies
477  ext_name=
478  ext_url=
479  buildtoolsMismatch=0
480  for i in `cat $srcDepFile.bak`; do
481    if test "$ext_name" = ""; then
482      ext_name="$i"
483    else
484      ext_url=$i
485      if expr "$ext_name" : '#.*' 2>&1 >/dev/null ; then
486        echo "    $ext_name $ext_url ==> skipped"
487        ext_name=
488        continue
489      fi
490      ext_urltype=`extractTypeFromURL $ext_url`
491      ext_proj=`extractProjFromURL $ext_url`
492
493# See if this external should be dropped.
494
495      if expr "$exciseExternals" : '.*'$ext_proj'.*' 2>&1 > /dev/null ; then
496        echo "    $ext_name $ext_url ==> excised"
497        ext_name=
498        continue
499      fi
500
501# External must be a stable or a release.
502
503      if test $ext_urltype != stable && test $ext_urltype != release ; then
504        echo ''
505        echo "===> The external URL $ext_url is not a stable branch or release. Exiting."
506        echo ''
507        exit 2
508      fi
509
510      ext_isNormal=`isNormalURL $ext_url`
511
512# Convert stable branches to releases unless listed in stableExternals.
513# Existing releases are unchanged.
514
515      if test $ext_urltype = stable ; then
516        if expr "$stableExternals" : '.*'"$ext_proj"'.*' 2>&1 >/dev/null ; then
517          echo "    $ext_name $ext_url unchanged"
518          ext_rel_url=$ext_url
519        else
520          ext_majVer=`extractMajorFromURL $ext_url`
521          ext_minVer=`extractMinorFromURL $ext_url`
522          ext_rel_url=`bestRelease $ext_url $ext_majVer $ext_minVer`
523          if test -z "$ext_rel_url" ; then
524            echo ''
525            echo "===> No release for $ext_url. Exiting."
526            echo ''
527            exit 2
528          fi
529          # Normal (not BuildTools/ThirdParty/Data) need a directory name,
530          # and it may differ from the project name. Carefully preserve it.
531          if test $ext_isNormal = yes ; then
532            ext_tail=`extractTailFromExt $ext_url`
533            ext_rel_url=${ext_rel_url}${ext_tail}
534          fi
535          echo "    $ext_name $ext_url ==> $ext_rel_url"
536        fi
537      else
538        ext_rel_url=$ext_url
539        echo "    $ext_name $ext_url ==> unchanged"
540      fi
541
542# Get the BuildTools URL for the external and compare to the BuildTools URL
543# for the source, assuming we have one and the external has one. We only need
544# to do this for normal URLs, and we need to strip the tail.
545
546      if test $ext_isNormal = yes &&
547         test $ext_proj != BuildTools && test $ourBTURL != none ; then
548        ext_rel_url_notail=`echo $ext_rel_url | sed -e 's,/[^/]*$,,'`
549        extBTURL=`svn propget svn:externals $ext_rel_url_notail`
550        extBTURL=`echo $extBTURL | \
551          sed -n -e 's/.*BuildTools https:\([^ ]*\) .*/https:\1/p'`
552        if test -n "$extBTURL" ; then
553          testResult=`compareURLVersions "$ourBTURL" "$extBTURL"`
554          if test $testResult = no ; then
555            echo "    WARNING: BuildTools mismatch: $ext_rel_url_notail uses $extBTURL"
556            if test $ignoreBuildToolsMismatch = 0 ; then
557               buildtoolsMismatch=1
558            fi
559          fi
560        fi
561      fi
562
563      echo "$ext_name  $ext_rel_url" >>Dependencies
564      ext_name=
565      echo ''
566    fi
567  done
568
569# If we have a BuildTools mismatch, and mismatch is not permitted, exit.
570
571  if test $buildtoolsMismatch -gt $ignoreBuildToolsMismatch ; then
572    echo "Exiting due to BuildTools mismatches; use -i to ignore."
573    exit 2
574  fi
575
576  echo ''
577  echo '===> Updating svn:externals property and checking out externals ...'
578  echo ''
579
580  svn propset svn:externals -F Dependencies .
581  svn update
582
583  if test -d ThirdParty ; then
584    echo ''
585    echo '===> Downloading ThirdParty code ...'
586    echo ''
587
588    ext_name=
589    ext_url=
590    for i in `svn propget svn:externals .` ; do
591      if test -z "$ext_name" ; then
592        ext_name="$i"
593      else
594        ext_url=$i
595        if expr "$ext_name" : 'ThirdParty/.*' 2>&1 >/dev/null ; then
596          cd $ext_name
597          ext_proj=`extractProjFromURL $ext_url`
598          getScript=get.$ext_proj
599          if test -x "$getScript" ; then
600            ./$getScript -patch
601          fi
602          cd $coDir
603        fi
604        ext_name=
605      fi
606    done
607  fi
608fi
609
610# Finally! Done processing externals. If this is a ThirdParty project, we
611# still have to run the get script.
612
613if test $isThirdParty = yes ; then
614  if test -x get.$stableProj ; then
615    echo ''
616    echo '===> Downloading third party code ...'
617    echo ''
618    ./get.$stableProj
619  fi
620fi
621
622# Don't run run_autotools for BuildTools!
623
624if test $isBuildTools = no ; then
625  echo ''
626  echo '===> Running BuildTools/run_autotools ...'
627  echo ''
628  if test $isThirdParty = yes || test $isData = yes ; then
629    cd ../..
630    ./BuildTools/run_autotools
631    cd "$coDir"
632  elif test $isNormal = yes ; then
633    ./BuildTools/run_autotools
634  fi
635fi
636
637# Let's see if it works. We only run tests for normal projects. DO NOT turn
638# on --enable-maintainer-mode in the initial configure command. At the least,
639# it's not needed. At the worst, as of 100526, it'll undo all the careful
640# work above to set externals.
641
642if test $isNormal = yes ; then
643  (set -e
644   echo ''
645   echo '===> Creating build directory and running the configuration script...'
646   echo ''
647   mkdir build
648   cd build
649   cmd="$coDir/configure -C"
650   echo $cmd
651   eval $cmd
652   echo ''
653   echo '===> Compiling code...'
654   echo ''
655   cmd='make install'
656   echo $cmd
657   eval $cmd
658   echo ''
659   echo '===> Running the unit test...'
660   echo ''
661   echo '*******************************************************************************'
662   echo '***                                                                         ***'
663   echo '***                       BEGIN OUTPUT OF MAKE TEST                         ***'
664   echo '***                                                                         ***'
665   echo '*******************************************************************************'
666   echo ''
667   cmd='make test'
668   echo $cmd
669   eval $cmd
670   echo ''
671   echo '*******************************************************************************'
672   echo '***                                                                         ***'
673   echo '***                        END OUTPUT OF MAKE TEST                          ***'
674   echo '***                                                                         ***'
675   echo '*******************************************************************************'
676  )
677  if test $? != 0; then
678    echo ''
679    echo 'Error during build or test'
680    echo ''
681    exit 3
682  fi
683  echo ''
684  echo '===> ALL TESTS PASSED'
685fi
686
687echo ''
688if test $isNormal = yes ; then
689  echo 'Please review the output above, particularly the one of make test.'
690else
691  echo 'Please review the output above.'
692fi
693echo ''
694
695# Do we need to plug in nonexistent releases for circular dependencies tested
696# with the stable versions? If so, generate a new Dependencies. This is the
697# only reason stable references should appear in the externals for a release,
698# so we don't need to check further before removing them.
699
700if test -n "$stableExternals" ; then
701  echo "===> Grooming externals to remove stable externals used for testing ..."
702  mv Dependencies Dependencies.temp.$$
703  ext_name=
704  ext_url=
705  for i in `cat Dependencies.temp.$$`; do
706    if test "$ext_name" = ""; then
707      ext_name="$i"
708    else
709      ext_url=$i
710      ext_urltype=`extractTypeFromURL $ext_url`
711      ext_proj=`extractProjFromURL $ext_url`
712      if test $ext_urltype = stable ; then
713        ext_rel_url=$ext_url
714        ext_majVer=`extractMajorFromURL $ext_url`
715        ext_minVer=`extractMinorFromURL $ext_url`
716        ext_rel_url=`echo $ext_url | sed -e 's,/stable/,/releases/,'`
717        ext_rel_url=`replaceVersionInURL $ext_rel_url $ext_majVer $ext_minVer 0`
718        echo "    $ext_name $ext_url ==> $ext_rel_url"
719      else
720        ext_rel_url=$ext_url
721      fi
722      echo "$ext_name  $ext_rel_url" >>Dependencies
723      ext_name=
724    fi
725  done
726  rm -f Dependencies.temp.$$
727  svn propset -F Dependencies svn:externals .
728  echo ''
729fi
730
731if test -r Dependencies ; then
732  echo 'Also, please confirm the externals are correct:'
733  svn propget svn:externals
734fi
735
736echo ''
737echo 'After reviewing the output above, you can create a new release by going into'
738echo 'the directory'
739echo ''
740echo "          $startDir"
741echo ''
742echo "and run the commit_new_release script"
743
744cd $topBuildDir
745
746cat >.new_release_data <<EOF
747coinURL=$coinURL
748startDir=$startDir
749topBuildDir=$topBuildDir
750coDir=$coDir
751releaseURL=$releaseURL
752stableURL=$stableURL
753newVer=$newVer
754bak_files="$bak_files"
755EOF
Note: See TracBrowser for help on using the repository browser.