WebKitLibraries/win/tools/scripts/auto-version.sh
changeset 0 4f2f89ce4247
equal deleted inserted replaced
-1:000000000000 0:4f2f89ce4247
       
     1 #!/usr/bin/bash
       
     2 
       
     3 # Copyright (C) 2007, 2009 Apple Inc.  All rights reserved.
       
     4 #
       
     5 # Redistribution and use in source and binary forms, with or without
       
     6 # modification, are permitted provided that the following conditions
       
     7 # are met:
       
     8 # 1. Redistributions of source code must retain the above copyright
       
     9 #    notice, this list of conditions and the following disclaimer.
       
    10 # 2. Redistributions in binary form must reproduce the above copyright
       
    11 #    notice, this list of conditions and the following disclaimer in the
       
    12 #    documentation and/or other materials provided with the distribution.
       
    13 #
       
    14 # THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
       
    15 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
       
    16 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
       
    17 # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
       
    18 # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
       
    19 # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
       
    20 # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
       
    21 # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
       
    22 # OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
       
    23 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
       
    24 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
       
    25 
       
    26 
       
    27 # Trim any trailing \r or \n from the given variable.
       
    28 chomp()
       
    29 {
       
    30     local old_value=$(eval echo "\$$1");
       
    31     local value=$(echo "$old_value" | sed 's/[\r\n]*$//')
       
    32     eval $1=\$value;
       
    33 }
       
    34 
       
    35 if [[ -n "$WEBKITLIBRARIESDIR" ]]; then
       
    36     FALLBACK_VERSION_PATH=`cygpath -u "$WEBKITLIBRARIESDIR\\tools\\scripts\\VERSION"`
       
    37     FALLBACK_VERSION=$(cat "$FALLBACK_VERSION_PATH");
       
    38 
       
    39     COPYRIGHT_END_YEAR_PATH=`cygpath -u "$WEBKITLIBRARIESDIR\\tools\\scripts\\COPYRIGHT-END-YEAR"`
       
    40     COPYRIGHT_END_YEAR=$(cat "$COPYRIGHT_END_YEAR_PATH");
       
    41     chomp COPYRIGHT_END_YEAR
       
    42 fi
       
    43 
       
    44 OUTPUT_FILE=$(cygpath -u "$1")/include/autoversion.h
       
    45 mkdir -p "$(dirname "$OUTPUT_FILE")"
       
    46 
       
    47 # Take the initial version number from RC_PROJECTSOURCEVERSION if it
       
    48 # exists, otherwise fall back to the version number stored in the source.
       
    49 ENVIRONMENT_VERSION="$RC_PROJECTSOURCEVERSION";
       
    50 PROPOSED_VERSION=${ENVIRONMENT_VERSION:-$FALLBACK_VERSION}
       
    51 chomp PROPOSED_VERSION
       
    52 
       
    53 # Split out the three components of the dotted version number.  We pad
       
    54 # the input with trailing dots to handle the case where the input version
       
    55 # has fewer components than we expect.
       
    56 BUILD_MAJOR_VERSION=$(echo "$PROPOSED_VERSION.." | cut -d '.' -f 1)
       
    57 BUILD_MINOR_VERSION=$(echo "$PROPOSED_VERSION.." | cut -d '.' -f 2)
       
    58 BUILD_TINY_VERSION=$(echo "$PROPOSED_VERSION.." | cut -d '.' -f 3)
       
    59 
       
    60 # Cut the major component down to three characters by dropping any
       
    61 # extra leading digits, then adjust the major version portion of the
       
    62 # version string to match.
       
    63 CHARACTERS_TO_DROP=$(( ${#BUILD_MAJOR_VERSION} > 3 ? ${#BUILD_MAJOR_VERSION} - 3 : 0 ))
       
    64 BUILD_MAJOR_VERSION=${BUILD_MAJOR_VERSION:$CHARACTERS_TO_DROP}
       
    65 PROPOSED_VERSION=${PROPOSED_VERSION:$CHARACTERS_TO_DROP}
       
    66 
       
    67 # Have the minor and tiny components default to zero if not present.
       
    68 BUILD_MINOR_VERSION=${BUILD_MINOR_VERSION:-0}
       
    69 BUILD_TINY_VERSION=${BUILD_TINY_VERSION:-0}
       
    70 
       
    71 # Split the first component further by using the first digit for the
       
    72 # major version and the remaining two characters as the minor version.
       
    73 # The minor version is shifted down to the tiny version, with the tiny
       
    74 # version becoming the variant version.
       
    75 MAJOR_VERSION=${BUILD_MAJOR_VERSION:0:1}
       
    76 MINOR_VERSION=${BUILD_MAJOR_VERSION:1}
       
    77 TINY_VERSION=${BUILD_MINOR_VERSION}
       
    78 VARIANT_VERSION=${BUILD_TINY_VERSION}
       
    79 
       
    80 VERSION_TEXT=${PROPOSED_VERSION}
       
    81 VERSION_TEXT_SHORT=${VERSION_TEXT}
       
    82 
       
    83 if [ -z ${ENVIRONMENT_VERSION} ]; then
       
    84     # If we didn't pull the version number from the environment then we're doing
       
    85     # an engineering build and we'll stamp the build with some more information.
       
    86 
       
    87     BUILD_DATE=$(date)
       
    88     SVN_REVISION=$(svn info | grep '^Revision' | sed 's/^Revision: //')
       
    89 
       
    90     chomp BUILD_DATE
       
    91     chomp SVN_REVISION
       
    92 
       
    93     VERSION_TEXT_SHORT="${VERSION_TEXT_SHORT}+"
       
    94     VERSION_TEXT="${VERSION_TEXT_SHORT} ${USER} - ${BUILD_DATE} - r${SVN_REVISION}"
       
    95 fi
       
    96 
       
    97 cat > "$OUTPUT_FILE" <<EOF
       
    98 #define __VERSION_TEXT__ "${VERSION_TEXT}"
       
    99 #define __BUILD_NUMBER__ "${VERSION_TEXT}"
       
   100 #define __BUILD_NUMBER_SHORT__ "${VERSION_TEXT_SHORT}"
       
   101 #define __VERSION_MAJOR__ ${MAJOR_VERSION}
       
   102 #define __VERSION_MINOR__ ${MINOR_VERSION}
       
   103 #define __VERSION_TINY__ ${TINY_VERSION}
       
   104 #define __VERSION_BUILD__ ${VARIANT_VERSION}
       
   105 #define __BUILD_NUMBER_MAJOR__ ${BUILD_MAJOR_VERSION}
       
   106 #define __BUILD_NUMBER_MINOR__ ${BUILD_MINOR_VERSION}
       
   107 #define __BUILD_NUMBER_VARIANT__ ${BUILD_TINY_VERSION}
       
   108 #define __SVN_REVISION__ ${SVN_REVISION}
       
   109 EOF
       
   110 
       
   111 if [[ -n "${COPYRIGHT_END_YEAR}" ]]; then
       
   112 cat >> "$OUTPUT_FILE" <<EOF
       
   113 #define __COPYRIGHT_YEAR_END_TEXT__ "${COPYRIGHT_END_YEAR}"
       
   114 EOF
       
   115 fi