source: trunk/set_externals @ 1369

Last change on this file since 1369 was 1369, checked in by tkr, 12 years ago

Change name of temporary file

  • Property svn:executable set to *
File size: 5.7 KB
Line 
1#!/bin/sh
2
3# Copyright (C) 2007 International Business Machines and
4# Copyright (c) 2009 Lehigh University
5# All Rights Reserved.
6# This file is distributed under the Common Public License.
7# It is part of the BuildTools project in COIN-OR (www.coin-or.org)
8#
9## $Id: prepare_new_release 1302 2009-06-07 18:17:53Z stefan $
10#
11# This script is based on prepare_new_release, which is authored by
12# Author: Andreas Waechter     IBM      2007-06-21
13# Modified: Lou Hafer          SFU      2008-01-20
14#
15# The modifications to set_externals were made by
16# Ted Ralphs Lehigh University          2009-07-07
17#
18
19#set -x -v
20set -e
21
22determine_release ()
23{ 
24  drtmp_stableBranch=`echo $1 | sed -e 's|.*/stable/||'`
25  drtmp_baseURL=`echo $1 | sed -e 's|/stable/[0-9.]*||'`
26  drtmp_returnVal=
27
28  # List the existing releases and screen for releases matching stableBranch.
29
30  drtmp_svnlst=`svn list $drtmp_baseURL/releases/`
31
32  drtmp_release_vers=
33  for drtmp_i in $drtmp_svnlst ; do
34    case $drtmp_i in
35      $drtmp_stableBranch.*)
36        drtmp_i=`echo $drtmp_i | sed -e 's|/$||'`
37        drtmp_release_vers="$drtmp_release_vers $drtmp_i";;
38    esac;
39  done
40
41  # Are there any existing releases? If not, and the user didn't ask for the
42  # next release, we have an error.
43
44  if test -z "$drtmp_release_vers" ; then
45    if test $2 = 1 ; then
46      drtmp_returnVal="$drtmp_stableBranch.0"
47    else
48      drtmp_returnVal="Error"
49    fi
50  else
51
52  # There are releases. If we don't have one after the loop, we're confused.
53
54    drtmp_new_rel=-10000
55    for drtmp_i in $drtmp_release_vers; do
56      drtmp_rel=`echo $drtmp_i | sed -e "s|^$drtmp_stableBranch.||"`
57      if test $drtmp_rel -gt $drtmp_new_rel; then
58        drtmp_new_rel=$drtmp_rel
59      fi
60    done
61
62    if test $drtmp_new_rel = -10000; then
63      drtmp_new_rel="Error"
64    elif test $2 = 1 ; then
65      drtmp_new_rel=`expr $drtmp_new_rel + 1`
66    fi
67      drtmp_returnVal="$drtmp_stableBranch.$drtmp_new_rel"
68  fi
69
70  echo $drtmp_returnVal
71}
72
73printHelp=0
74exitValue=0
75Dependencies=
76
77if test "$#" -eq 0; then
78  printHelp=1
79else
80
81# Process the parameters. A parameter without an opening `-' is assumed to be
82# the spec for the stable branch.
83
84  while test $# -gt 0 && test $exitValue = 0 && test $printHelp = 0 ; do
85    case "$1" in
86      -h* | --h*) printHelp=1 ;;
87           
88       -*) echo "$0: unrecognised command line switch '"$1"'."
89           printHelp=1
90           exitValue=-1
91           ;;
92        *) Dependencies=$1
93           ;;
94    esac
95    shift
96  done
97fi
98
99# End of parameter parsing. We have a stable URL to work with.  Tell the
100# user what we've seen.
101
102# Find out the most recent release (if any) for the stable branch. List the
103# existing releases and screen for releases matching stableBranch. The new
104# release should be one greater than any existing release, or 0 if the stable
105# branch has no releases.
106
107if test $printHelp = 0 && test $exitValue = 0; then
108  if test -r $Dependencies; then
109
110    rm -f Externals.releases
111
112    echo ''
113    echo '===> Creating new externals file with pointers to releases...'
114    echo ''
115
116    ext_name=
117    ext_url=
118    for i in `cat $Dependencies`; do
119      if test "$ext_name" = ""; then
120        ext_name="$i"
121      else
122        ext_url=$i
123        if (echo $ext_name | grep -E '^#' >/dev/null); then
124          echo "Skip $ext_name."
125          ext_name=
126          continue
127        fi                                   
128        if (echo $ext_url | grep -E 'trunk|stable/|releases/' >/dev/null); then
129          :;
130        else
131          echo ''
132          echo "The external URL $ext_url is not valid. Exiting."
133          echo ''
134          exit -2
135        fi
136
137        ext_base_front=`echo $ext_url | sed -e 's|/stable/.*||'`
138        ext_proj=`echo $ext_base_front | sed -e 's|.*/\([^/]*\)|\1|'`
139
140        if expr "$ext_url" : '.*releases/.*' 2>&1 >/dev/null ; then
141          echo "Using specified release for $ext_name."
142          ext_rel_url=$ext_url
143        elif expr "$ext_url" : '.*trunk.*' 2>&1 >/dev/null; then
144          echo "Using specified trunk for $ext_name."
145          ext_rel_url=$ext_url
146        else
147          ext_stable=`echo $ext_url | sed -e 's|\(.*/stable/[0-9\.]*\).*|\1|'`
148          ext_base_end=`echo $ext_url | sed -e 's|.*/stable/[0-9\.]*||'`
149
150          echo "Determining release for $ext_name:"
151          ext_latest=`determine_release $ext_stable 0`
152 
153          if test "$ext_base_end" = ""; then
154            ext_rel_url=$ext_base_front/releases/$ext_latest
155          else
156            ext_rel_url=$ext_base_front/releases/$ext_latest$ext_base_end
157          fi
158        fi
159
160        echo "  $ext_rel_url"
161        echo "$ext_name  $ext_rel_url" >>Externals.releases
162        ext_name=
163      fi
164    done
165
166    echo ''
167    echo '===> Updating svn:externals property...'
168    echo ''
169
170    svn pset svn:externals -F Externals.releases .
171   
172    rm Externals.releases
173
174  else # if test -r Dependencies
175    echo ""
176    echo "Dependency file does not exist or is unspecified..."
177    echo ""
178    printHelp=1
179    exitvalue=-2
180  fi
181fi
182
183if test $printHelp = 1 ; then
184  cat <<EOF
185Usage: set_externals <Dependency File>
186
187This script takes as input a dependency file containing a list of stable
188versions of COIN projects on separate lines in the form
189
190 <name> <URL of stable version>
191
192Recommended practice is to keep this list in a file called "Dendencies" in the
193project's root directory. A temporary file called "Externals.releases" in the
194same form, but with the URL of each stable version replaced by the URL of the
195latest associated release is produced. From this file, the script will set the
196svn:externals variable. It does not do an update or commit the change. After
197the script runs, do an update and test build, then commit the change if you
198are happy.
199
200EOF
201else
202cat <<EOF
203Externals set successfully. Please verify that the change is OK and then
204commit to make the change permanent.
205EOF
206
207fi
208
209exit $exitValue
Note: See TracBrowser for help on using the repository browser.