12 VERSION="60.7.0" |
12 VERSION="60.7.0" |
13 VERSION_SUFFIX="esr" |
13 VERSION_SUFFIX="esr" |
14 RELEASE_TAG="" # Needs only to be set if no tar-ball can be downloaded |
14 RELEASE_TAG="" # Needs only to be set if no tar-ball can be downloaded |
15 PREV_VERSION="60.6.3" # Prev. version only needed for locales (leave empty to force l10n-generation) |
15 PREV_VERSION="60.6.3" # Prev. version only needed for locales (leave empty to force l10n-generation) |
16 PREV_VERSION_SUFFIX="esr" |
16 PREV_VERSION_SUFFIX="esr" |
17 #SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation |
17 #SKIP_LOCALES="" # Uncomment to skip l10n-generation |
18 EOF |
18 EOF |
19 |
19 |
20 exit 1 |
20 exit 1 |
21 } |
21 } |
22 |
22 |
40 FTP_URL="https://ftp.mozilla.org/pub/$PRODUCT/releases/$VERSION$VERSION_SUFFIX/source" |
40 FTP_URL="https://ftp.mozilla.org/pub/$PRODUCT/releases/$VERSION$VERSION_SUFFIX/source" |
41 FTP_CANDIDATES_BASE_URL="https://ftp.mozilla.org/pub/$PRODUCT/candidates" |
41 FTP_CANDIDATES_BASE_URL="https://ftp.mozilla.org/pub/$PRODUCT/candidates" |
42 # Make first letter of PRODCUT upper case |
42 # Make first letter of PRODCUT upper case |
43 PRODUCT_CAP="${PRODUCT^}" |
43 PRODUCT_CAP="${PRODUCT^}" |
44 LOCALES_URL="https://product-details.mozilla.org/1.0/l10n/$PRODUCT_CAP" |
44 LOCALES_URL="https://product-details.mozilla.org/1.0/l10n/$PRODUCT_CAP" |
|
45 PRODUCT_URL="https://product-details.mozilla.org/1.0/$PRODUCT.json" |
45 # Exit script on CTRL+C |
46 # Exit script on CTRL+C |
46 trap "exit" INT |
47 trap "exit" INT |
47 |
48 |
48 function get_ftp_candidates_url() { |
49 function get_ftp_candidates_url() { |
49 VERSION_WITH_SUFFIX="$1" |
50 VERSION_WITH_SUFFIX="$1" |
81 } |
82 } |
82 |
83 |
83 function get_source_stamp() { |
84 function get_source_stamp() { |
84 BUILD_ID="$1" |
85 BUILD_ID="$1" |
85 FTP_CANDIDATES_BASE_URL=$(get_ftp_candidates_url $VERSION$VERSION_SUFFIX) |
86 FTP_CANDIDATES_BASE_URL=$(get_ftp_candidates_url $VERSION$VERSION_SUFFIX) |
86 FTP_CANDIDATES_JSON_SUFFIX="${BUILD_ID}/linux-x86_64/en-US/firefox-$VERSION$VERSION_SUFFIX.json" |
87 FTP_CANDIDATES_JSON_SUFFIX="${BUILD_ID}/linux-x86_64/en-US/$PRODUCT-$VERSION$VERSION_SUFFIX.json" |
87 BUILD_JSON=$(curl --silent --fail "$FTP_CANDIDATES_BASE_URL/$FTP_CANDIDATES_JSON_SUFFIX") || return 1; |
88 BUILD_JSON=$(curl --silent --fail "$FTP_CANDIDATES_BASE_URL/$FTP_CANDIDATES_JSON_SUFFIX") || return 1; |
88 REV=$(echo "$BUILD_JSON" | jq .moz_source_stamp) |
89 REV=$(echo "$BUILD_JSON" | jq .moz_source_stamp) |
89 SOURCE_REPO=$(echo "$BUILD_JSON" | jq .moz_source_repo) |
90 SOURCE_REPO=$(echo "$BUILD_JSON" | jq .moz_source_repo) |
90 TIMESTAMP=$(echo "$BUILD_JSON" | jq .buildid) |
91 TIMESTAMP=$(echo "$BUILD_JSON" | jq .buildid) |
91 echo "Extending $TAR_STAMP with:" |
92 echo "Extending $TAR_STAMP with:" |
102 } |
103 } |
103 |
104 |
104 function get_build_number() { |
105 function get_build_number() { |
105 LAST_FOUND="" |
106 LAST_FOUND="" |
106 VERSION_WITH_SUFFIX="$1" |
107 VERSION_WITH_SUFFIX="$1" |
107 FTP_CANDIDATES_BASE_URL=$(get_ftp_candidates_url $VERSION_WITH_SUFFIX) |
108 |
108 # Unfortunately, locales-files are not associated to releases, but to builds. |
109 BUILD_ID=$(curl --silent "$PRODUCT_URL" | jq -e '.["releases"] | .["'$PRODUCT-$VERSION_WITH_SUFFIX'"] | .["build_number"]') |
109 # And since we don't know which build was the final build, we grep them all from |
110 |
110 # the candidates-page, sort them and take the last one which should be the oldest |
111 # Slow fall-back |
111 # Error only if not even the first one exists |
112 if [ $? -ne 0 ]; then |
112 LAST_FOUND=$(curl --silent --fail "$FTP_CANDIDATES_BASE_URL/" | grep -o "build[0-9]*/" | sort | uniq | tail -n 1 | cut -d "/" -f 1) |
113 echo "Build number not found in product URL, falling back to slow FTP-parsing." 1>&2 |
|
114 FTP_CANDIDATES_BASE_URL=$(get_ftp_candidates_url $VERSION_WITH_SUFFIX) |
|
115 # Unfortunately, locales-files are not associated to releases, but to builds. |
|
116 # And since we don't know which build was the final build, we grep them all from |
|
117 # the candidates-page, sort them and take the last one which should be the oldest |
|
118 # Error only if not even the first one exists |
|
119 LAST_FOUND=$(curl --silent --fail "$FTP_CANDIDATES_BASE_URL/" | grep -o "build[0-9]*/" | sort | uniq | tail -n 1 | cut -d "/" -f 1) |
|
120 else |
|
121 LAST_FOUND="build$BUILD_ID" |
|
122 fi |
113 |
123 |
114 if [ "$LAST_FOUND" != "" ]; then |
124 if [ "$LAST_FOUND" != "" ]; then |
115 echo "$LAST_FOUND" |
125 echo "$LAST_FOUND" |
116 return 0 |
126 return 0 |
117 else |
127 else |
248 fi |
258 fi |
249 |
259 |
250 hg update --check $FF_RELEASE_TAG |
260 hg update --check $FF_RELEASE_TAG |
251 [ "$FF_RELEASE_TAG" == "default" ] || hg update -r $FF_RELEASE_TAG |
261 [ "$FF_RELEASE_TAG" == "default" ] || hg update -r $FF_RELEASE_TAG |
252 # get repo and source stamp |
262 # get repo and source stamp |
253 echo -n "REV=" > ../source-stamp.txt |
263 REV=$(hg -R . parent --template="{node|short}\n") |
254 hg -R . parent --template="{node|short}\n" >> ../source-stamp.txt |
264 SOURCE_REPO=$(hg showconfig paths.default 2>/dev/null | head -n1 | sed -e "s/^ssh:/http:/") |
255 echo -n "REPO=" >> ../source-stamp.txt |
265 TIMESTAMP=$(date +%Y%m%d%H%M%S) |
256 hg showconfig paths.default 2>/dev/null | head -n1 | sed -e "s/^ssh:/http:/" >> ../source-stamp.txt |
|
257 |
266 |
258 if [ "$PRODUCT" = "thunderbird" ]; then |
267 if [ "$PRODUCT" = "thunderbird" ]; then |
259 pushd comm || exit 1 |
268 pushd comm || exit 1 |
260 hg update --check $RELEASE_TAG |
269 hg update --check $RELEASE_TAG |
261 popd || exit 1 |
270 popd || exit 1 |
262 rm -rf thunderbird-${VERSION}/{,comm/}other-licenses/7zstub |
271 rm -rf thunderbird-${VERSION}/{,comm/}other-licenses/7zstub |
263 fi |
272 fi |
264 popd || exit 1 |
273 popd || exit 1 |
|
274 |
|
275 echo "Extending $TAR_STAMP with:" |
|
276 echo "RELEASE_REPO=${SOURCE_REPO}" |
|
277 echo "RELEASE_TAG=${REV}" |
|
278 echo "RELEASE_TIMESTAMP=${TIMESTAMP}" |
|
279 |
|
280 # We "remove and add" instead of "replace" in case the entries are not there yet |
|
281 # Removing the old RELEASE_-tags |
|
282 sed -i "/RELEASE_\(TAG\|REPO\|TIMESTAMP\)=.*/d" "$TAR_STAMP" |
|
283 # Appending the new |
|
284 echo "RELEASE_REPO=$SOURCE_REPO" >> "$TAR_STAMP" |
|
285 echo "RELEASE_TAG=$REV" >> "$TAR_STAMP" |
|
286 echo "RELEASE_TIMESTAMP=$TIMESTAMP" >> "$TAR_STAMP" |
265 |
287 |
266 echo "creating archive..." |
288 echo "creating archive..." |
267 tar $compression -cf $PRODUCT-$VERSION$VERSION_SUFFIX.source.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=CVS $PRODUCT-$VERSION |
289 tar $compression -cf $PRODUCT-$VERSION$VERSION_SUFFIX.source.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=CVS $PRODUCT-$VERSION |
268 fi |
290 fi |
269 |
291 |
307 # Locales did not change, but the old tar-ball is in this directory |
329 # Locales did not change, but the old tar-ball is in this directory |
308 # Simply rename it: |
330 # Simply rename it: |
309 echo "Moving l10n-$PREV_VERSION$PREV_VERSION_SUFFIX.tar.xz to l10n-$VERSION$VERSION_SUFFIX.tar.xz" |
331 echo "Moving l10n-$PREV_VERSION$PREV_VERSION_SUFFIX.tar.xz to l10n-$VERSION$VERSION_SUFFIX.tar.xz" |
310 mv "l10n-$PREV_VERSION$PREV_VERSION_SUFFIX.tar.xz" "l10n-$VERSION$VERSION_SUFFIX.tar.xz" |
332 mv "l10n-$PREV_VERSION$PREV_VERSION_SUFFIX.tar.xz" "l10n-$VERSION$VERSION_SUFFIX.tar.xz" |
311 fi |
333 fi |
312 |
|
313 # compare-locales |
|
314 echo "creating compare-locales" |
|
315 if [ -d compare-locales/.hg ]; then |
|
316 pushd compare-locales || exit 1 |
|
317 hg pull |
|
318 popd || exit 1 |
|
319 else |
|
320 hg clone http://hg.mozilla.org/build/compare-locales |
|
321 fi |
|
322 tar $compression -cf compare-locales.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg compare-locales |
|
323 |
|