|
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 |