get_source.sh
changeset 25317 fa3876203ca9
parent 25041 9dd97886fae6
child 26117 f33e2783f40d
equal deleted inserted replaced
25316:7982f0abfcfc 25317:fa3876203ca9
    23 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    23 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    24 # or visit www.oracle.com if you need additional information or have any
    24 # or visit www.oracle.com if you need additional information or have any
    25 # questions.
    25 # questions.
    26 #
    26 #
    27 
    27 
       
    28 to_stderr() {
       
    29     echo "$@" >&2
       
    30 }
       
    31 
       
    32 error() {
       
    33     to_stderr "ERROR: $1"
       
    34     exit ${2:-126}
       
    35 }
       
    36 
       
    37 warning() {
       
    38     to_stderr "WARNING: $1"
       
    39 }
       
    40 
       
    41 version_field() {
       
    42   # rev is typically omitted for minor and major releases
       
    43   field=`echo ${1}.0 | cut -f ${2} -d .`
       
    44   if expr 1 + $field >/dev/null 2> /dev/null; then
       
    45     echo $field
       
    46   else
       
    47     echo -1
       
    48   fi
       
    49 }
       
    50 
    28 # Version check
    51 # Version check
    29 
    52 
    30 # required
    53 # required
    31 reqdmajor=1
    54 reqdmajor=1
    32 reqdminor=5
    55 reqdminor=4
    33 reqdrev=0
    56 reqdrev=0
    34 
    57 
    35 # requested
    58 # requested
    36 rqstmajor=2
    59 rqstmajor=2
    37 rqstminor=6
    60 rqstminor=6
    38 rqstrev=3
    61 rqstrev=3
    39 
    62 
       
    63 
    40 # installed
    64 # installed
    41 hgwhere="`which hg 2> /dev/null | grep -v '^no hg in '`"
    65 hgwhere="`command -v hg`"
    42 if [ "x$hgwhere" = "x" ]; then
    66 if [ "x$hgwhere" = "x" ]; then
    43   echo "ERROR: Could not locate Mercurial command" >&2
    67   error "Could not locate Mercurial command"
    44   exit 126
       
    45 fi
    68 fi
    46 
    69 
    47 hgversion="`hg --version 2> /dev/null | sed -n -e 's@^Mercurial Distributed SCM (version \(.*\))\$@\1@p'`"
    70 hgversion="`hg --version 2> /dev/null | sed -n -e 's@^Mercurial Distributed SCM (version \([^+]*\).*)\$@\1@p'`"
    48 if [ "x${hgversion}" = "x" ] ; then
    71 if [ "x${hgversion}" = "x" ] ; then
    49   echo "ERROR: Could not determine Mercurial version" >&2
    72   error "Could not determine Mercurial version of $hgwhere"
    50   exit 126
       
    51 fi
    73 fi
    52 
    74 
    53 hgmajor="`echo $hgversion | cut -f 1 -d .`"
    75 hgmajor="`version_field $hgversion 1`"
    54 hgminor="`echo $hgversion | cut -f 2 -d .`"
    76 hgminor="`version_field $hgversion 2`"
    55 hgrev="`echo $hgversion.0 | cut -f 3 -d .`" # rev is omitted for minor and major releases
    77 hgrev="`version_field $hgversion 3`"
       
    78 
       
    79 if [ $hgmajor -eq -1 -o $hgminor -eq -1 -o $hgrev -eq -1 ] ; then
       
    80   error "Could not determine Mercurial version of $hgwhere from \"$hgversion\""
       
    81 fi
       
    82 
    56 
    83 
    57 # Require
    84 # Require
    58 if [ $hgmajor -lt $reqdmajor -o \( $hgmajor -eq $reqdmajor -a $hgminor -lt $reqdminor \) -o \( $hgmajor -eq $reqdmajor -a $hgminor -eq $reqdminor -a $hgrev -lt $reqdrev \) ] ; then
    85 if [ $hgmajor -lt $reqdmajor -o \( $hgmajor -eq $reqdmajor -a $hgminor -lt $reqdminor \) -o \( $hgmajor -eq $reqdmajor -a $hgminor -eq $reqdminor -a $hgrev -lt $reqdrev \) ] ; then
    59   echo "ERROR: Mercurial version $reqdmajor.$reqdminor.$reqdrev or later is required. $hgwhere is version $hgversion" >&2
    86   error "Mercurial version $reqdmajor.$reqdminor.$reqdrev or later is required. $hgwhere is version $hgversion"
    60   exit 126
       
    61 fi
    87 fi
       
    88 
    62 
    89 
    63 # Request
    90 # Request
    64 if [ $hgmajor -lt $rqstmajor -o \( $hgmajor -eq $rqstmajor -a $hgminor -lt $rqstminor \) -o \( $hgmajor -eq $rqstmajor -a $hgminor -eq $rqstminor -a $hgrev -lt $rqstrev \) ] ; then
    91 if [ $hgmajor -lt $rqstmajor -o \( $hgmajor -eq $rqstmajor -a $hgminor -lt $rqstminor \) -o \( $hgmajor -eq $rqstmajor -a $hgminor -eq $rqstminor -a $hgrev -lt $rqstrev \) ] ; then
    65   echo "WARNING: Mercurial version $rqstmajor.$rqstminor.$rqstrev or later is recommended. $hgwhere is version $hgversion" >&2
    92   warning "Mercurial version $rqstmajor.$rqstminor.$rqstrev or later is recommended. $hgwhere is version $hgversion"
    66 fi
    93 fi
       
    94 
    67 
    95 
    68 # Get clones of all absent nested repositories (harmless if already exist)
    96 # Get clones of all absent nested repositories (harmless if already exist)
    69 sh ./common/bin/hgforest.sh clone "$@" || exit $?
    97 sh ./common/bin/hgforest.sh clone "$@" || exit $?
    70 
    98 
    71 # Update all existing repositories to the latest sources
    99 # Update all existing repositories to the latest sources