| OLD | NEW |
| 1 #!/bin/bash | 1 #!/bin/bash |
| 2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 # This enables bash to treat any unhandled non-zero exit codes as "exceptions" | 6 # This enables bash to treat any unhandled non-zero exit codes as "exceptions" |
| 7 set -e | 7 set -e |
| 8 source $(dirname $0)/uploader_exit_codes.sh | 8 source $(dirname $0)/uploader_exit_codes.sh |
| 9 | 9 |
| 10 mark_step() { | 10 mark_step() { |
| 11 echo "$*" | 11 echo "$*" |
| 12 echo '=====================' | 12 echo '=====================' |
| 13 } | 13 } |
| 14 | 14 |
| 15 unlock_git_repo() { |
| 16 local git_index_lock=".git/index.lock" |
| 17 if [ -e "$git_index_lock" ]; then |
| 18 # Can be left over from an interrupted iteration. |
| 19 # Safe to remove unless someone is trying to run two iterations in parallel. |
| 20 echo "!!! Warning: removing Git index lock in $1 repo !!!" |
| 21 rm -f "$git_index_lock" |
| 22 fi |
| 23 } |
| 24 |
| 15 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" | 25 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" |
| 16 | 26 |
| 17 mark_step 'Moving to the source code directory' | 27 mark_step 'Moving to the source code directory' |
| 18 SOURCE_DIR=/uploader/src | 28 SOURCE_DIR=/uploader/src/chrome |
| 19 cd "$SOURCE_DIR" | 29 cd "$SOURCE_DIR" |
| 20 | 30 |
| 31 mark_step 'Updating chromium' |
| 32 unlock_git_repo Chromium || exit $EXIT_CHROMIUM_UPDATE |
| 33 git reset --hard master || exit $EXIT_CHROMIUM_UPDATE |
| 34 git pull || exit $EXIT_CHROMIUM_UPDATE |
| 35 CHROMIUM_GYP_REVISION="$(cat DEPS | $SCRIPT_DIR/uploader_helper.py --find_projec
t_revision='src/tools/gyp')" |
| 36 |
| 21 mark_step 'Updating gyp' | 37 mark_step 'Updating gyp' |
| 22 pushd gyp | 38 pushd tools/gyp |
| 23 CHROMIUM_DEPS=$(curl -fsS http://src.chromium.org/chrome/trunk/src/DEPS) || exit
$EXIT_GYP_UPDATE | 39 unlock_git_repo Gyp |
| 24 CHROMIUM_GYP_REVISION="$(echo "$CHROMIUM_DEPS" | $SCRIPT_DIR/uploader_helper.py
--find_project_revision='src/tools/gyp')" | 40 git fetch || exit $EXIT_GYP_UPDATE |
| 25 svn cleanup || exit $EXIT_GYP_UPDATE | 41 git reset --hard $CHROMIUM_GYP_REVISION || exit $EXIT_GYP_UPDATE |
| 26 svn up -r $CHROMIUM_GYP_REVISION || exit $EXIT_GYP_UPDATE | |
| 27 popd | 42 popd |
| 28 | 43 |
| 29 mark_step 'Getting the last Blink revision for which the frontend has been uploa
ded' | 44 mark_step 'Getting the last Blink revision for which the frontend has been uploa
ded' |
| 30 GS_PATH=gs://chrome-devtools-frontend | 45 GS_PATH=gs://chrome-devtools-frontend |
| 31 KNOWN_REVISIONS_DIR="$GS_PATH/revs" | 46 KNOWN_REVISIONS_DIR="$GS_PATH/revs" |
| 32 ALL_UPLOADED_REVS=$(gsutil ls "$KNOWN_REVISIONS_DIR") || exit $EXIT_LAST_UPLOADE
D_BLINK_REV | 47 ALL_UPLOADED_REVS=$(gsutil ls "$KNOWN_REVISIONS_DIR") || exit $EXIT_LAST_UPLOADE
D_BLINK_REV |
| 33 LAST_BLINK_REVISION=$(echo "$ALL_UPLOADED_REVS" | sed -e "s#^$KNOWN_REVISIONS_DI
R/@##" | sort -nr | head -n 1) | 48 LAST_BLINK_REVISION=$(echo "$ALL_UPLOADED_REVS" | sed -e "s#^$KNOWN_REVISIONS_DI
R/@##" | sort -nr | head -n 1) |
| 34 if [ -z "$LAST_BLINK_REVISION" ]; then | 49 if [ -z "$LAST_BLINK_REVISION" ]; then |
| 35 exit $EXIT_LAST_UPLOADED_BLINK_REV | 50 exit $EXIT_LAST_UPLOADED_BLINK_REV |
| 36 fi | 51 fi |
| 37 echo "Last uploaded was for Blink revision $LAST_BLINK_REVISION" | 52 echo "Last uploaded was for Blink revision $LAST_BLINK_REVISION" |
| 38 | 53 |
| 39 mark_step 'Getting Blink revisions blacklist' | 54 mark_step 'Getting Blink revisions blacklist' |
| 40 BLINK_REVISIONS_BLACKLIST_FILE=$GS_PATH/blink_revisions_blacklist | 55 BLINK_REVISIONS_BLACKLIST_FILE=$GS_PATH/blink_revisions_blacklist |
| 41 BLINK_REVISIONS_BLACKLIST="" | 56 BLINK_REVISIONS_BLACKLIST="" |
| 42 if gsutil ls "$BLINK_REVISIONS_BLACKLIST_FILE"; then | 57 if gsutil ls "$BLINK_REVISIONS_BLACKLIST_FILE"; then |
| 43 BLINK_REVISIONS_BLACKLIST=$(gsutil cat "$BLINK_REVISIONS_BLACKLIST_FILE") | 58 BLINK_REVISIONS_BLACKLIST=$(gsutil cat "$BLINK_REVISIONS_BLACKLIST_FILE") |
| 44 fi | 59 fi |
| 45 | 60 |
| 46 mark_step 'Working out SVN revisions list' | 61 mark_step 'Working out SVN revisions list' |
| 47 pushd blink | 62 pushd third_party/WebKit |
| 48 git fetch || exit $EXIT_BLINK_UPDATE | 63 git fetch || exit $EXIT_BLINK_UPDATE |
| 49 HEAD_BLINK_REVISION=$(git log -n 1 --all --grep="git-svn-id:" --pretty=medium |
grep -Po "git-svn-id:[^@]*@\d+" | grep -Po "@\d+" | grep -Po "\d+") | 64 HEAD_BLINK_REVISION=$(git log -n 1 --all --grep="git-svn-id:" --pretty=medium |
grep -Po "git-svn-id:[^@]*@\d+" | grep -Po "@\d+" | grep -Po "\d+") |
| 50 popd | 65 popd |
| 51 echo "Last committed was Blink revision $HEAD_BLINK_REVISION" | 66 echo "Last committed was Blink revision $HEAD_BLINK_REVISION" |
| 52 REVISION_LIST=$(seq $[LAST_BLINK_REVISION+1] $HEAD_BLINK_REVISION) | 67 REVISION_LIST=$(seq $[LAST_BLINK_REVISION+1] $HEAD_BLINK_REVISION) |
| 53 if [ -z "$REVISION_LIST" ]; then | 68 if [ -z "$REVISION_LIST" ]; then |
| 54 exit $EXIT_NO_UPDATED_BRANCHES | 69 exit $EXIT_NO_UPDATED_BRANCHES |
| 55 fi | 70 fi |
| 56 | 71 |
| 57 mark_step 'Building DevTools frontend for revisions and uploading to Cloud Stora
ge' | 72 mark_step 'Building DevTools frontend for revisions and uploading to Cloud Stora
ge' |
| 58 for REVISION in $REVISION_LIST; do | 73 for REVISION in $REVISION_LIST; do |
| 59 LOCAL_STORAGE_DIR=/uploader/storage | 74 LOCAL_STORAGE_DIR=/uploader/storage |
| 60 if [ -d $LOCAL_STORAGE_DIR ]; then | 75 if [ -d $LOCAL_STORAGE_DIR ]; then |
| 61 rm -rf $LOCAL_STORAGE_DIR | 76 rm -rf $LOCAL_STORAGE_DIR |
| 62 fi | 77 fi |
| 63 ZIPS_DIR="$LOCAL_STORAGE_DIR/zips" | 78 ZIPS_DIR="$LOCAL_STORAGE_DIR/zips" |
| 64 REVS_DIR="$LOCAL_STORAGE_DIR/revs" | 79 REVS_DIR="$LOCAL_STORAGE_DIR/revs" |
| 65 META_DIR="$LOCAL_STORAGE_DIR/meta" | 80 META_DIR="$LOCAL_STORAGE_DIR/meta" |
| 66 HASH_DIR="$LOCAL_STORAGE_DIR/hash" | 81 HASH_DIR="$LOCAL_STORAGE_DIR/hash" |
| 67 mkdir -p $ZIPS_DIR $REVS_DIR $META_DIR $HASH_DIR | 82 mkdir -p $ZIPS_DIR $REVS_DIR $META_DIR $HASH_DIR |
| 68 | 83 |
| 69 if echo "$BLINK_REVISIONS_BLACKLIST" | grep -w $REVISION; then | 84 if echo "$BLINK_REVISIONS_BLACKLIST" | grep -w $REVISION; then |
| 70 echo "Revision $REVISION is in the blacklist, skipping over" | 85 echo "Revision $REVISION is in the blacklist, skipping over" |
| 71 continue | 86 continue |
| 72 fi | 87 fi |
| 73 | 88 |
| 74 pushd blink | 89 pushd third_party/WebKit |
| 75 REVISION_COMMIT=$(git log -n 1 --all --grep="git-svn-id:[^@]*@$REVISION" --p
retty=oneline | awk '{ print $1; }') | 90 REVISION_COMMIT=$(git log -n 1 --all --grep="git-svn-id:[^@]*@$REVISION" --p
retty=oneline | awk '{ print $1; }') |
| 76 if [ -z "$REVISION_COMMIT" ]; then | 91 if [ -z "$REVISION_COMMIT" ]; then |
| 77 echo "@$REVISION ==> missing!" | 92 echo "@$REVISION ==> missing!" |
| 78 popd | 93 popd |
| 79 continue | 94 continue |
| 80 fi | 95 fi |
| 81 echo "@$REVISION ==> $REVISION_COMMIT" | 96 echo "@$REVISION ==> $REVISION_COMMIT" |
| 82 GIT_INDEX_LOCK=".git/index.lock" | 97 unlock_git_repo Blink || exit $EXIT_BLINK_UPDATE |
| 83 if [ -e "$GIT_INDEX_LOCK" ]; then | |
| 84 # Can be left over from an interrupted iteration. | |
| 85 # Safe to remove unless someone is trying to run two iterations in paral
lel. | |
| 86 echo "!!! Warning: removing Git index lock !!!" | |
| 87 rm -f "$GIT_INDEX_LOCK" || exit $EXIT_BLINK_UPDATE | |
| 88 fi | |
| 89 git reset --hard $REVISION_COMMIT || exit $EXIT_BLINK_UPDATE | 98 git reset --hard $REVISION_COMMIT || exit $EXIT_BLINK_UPDATE |
| 90 | 99 |
| 91 # Exclude "trunk" to work around branches that accidentally have a second | 100 # Exclude "trunk" to work around branches that accidentally have a second |
| 92 # copy of Blink sources inside it. See http://crbug.com/450975 | 101 # copy of Blink sources inside it. See http://crbug.com/450975 |
| 93 DEVTOOLS_GYP=$(find . -type f -name devtools.gyp -not -path "*/trunk/*") | 102 DEVTOOLS_GYP=$(find . -type f -name devtools.gyp -not -path "*/trunk/*") |
| 94 if [ -z "$DEVTOOLS_GYP" ]; then | 103 if [ -z "$DEVTOOLS_GYP" ]; then |
| 95 exit $EXIT_DEVTOOLS_GYP_FILE | 104 exit $EXIT_DEVTOOLS_GYP_FILE |
| 96 fi | 105 fi |
| 97 if [ -d ../devtools-frontend ]; then | 106 if [ -d ../../out ]; then |
| 98 rm -rf ../devtools-frontend | 107 rm -rf ../../out |
| 99 fi | 108 fi |
| 100 DEVTOOLS_DIR=$(dirname "$DEVTOOLS_GYP") | 109 DEVTOOLS_DIR=$(dirname "$DEVTOOLS_GYP") |
| 101 GYP_GENERATORS=ninja ../gyp/gyp --toplevel-dir="$DEVTOOLS_DIR" --depth=../..
/../../devtools-frontend --generator-output=../../../../devtools-frontend "$DEVT
OOLS_GYP" || exit $EXIT_GYP_DEVTOOLS | 110 #TODO: need to calculate depth and output paths based on DEVTOOLS_DIR nestin
g level |
| 111 GYP_GENERATORS=ninja ../../tools/gyp/gyp --toplevel-dir="$DEVTOOLS_DIR" --de
pth=../../../.. --generator-output=../../../.. "$DEVTOOLS_GYP" || exit $EXIT_GYP
_DEVTOOLS |
| 102 popd | 112 popd |
| 103 | 113 |
| 104 LASTCHANGE_DIR="$SOURCE_DIR/../build/util" | 114 LASTCHANGE_FILE="build/util/LASTCHANGE.blink" |
| 105 LASTCHANGE_FILE="$LASTCHANGE_DIR/LASTCHANGE.blink" | |
| 106 mkdir -p $LASTCHANGE_DIR | |
| 107 echo "LASTCHANGE=$REVISION" > $LASTCHANGE_FILE | 115 echo "LASTCHANGE=$REVISION" > $LASTCHANGE_FILE |
| 108 | 116 |
| 109 ninja -C devtools-frontend/out/Default devtools_frontend_resources || exit $
EXIT_BUILD_FRONTEND | 117 ninja -C out/Default devtools_frontend_resources || exit $EXIT_BUILD_FRONTEN
D |
| 110 ZIP_FILE_NAME=devtools_frontend.zip | 118 ZIP_FILE_NAME=devtools_frontend.zip |
| 111 ZIP_FILE=$(pwd)/devtools-frontend/$ZIP_FILE_NAME | 119 ZIP_FILE=$(pwd)/out/$ZIP_FILE_NAME |
| 112 | 120 |
| 113 pushd devtools-frontend/out/Default/resources/inspector | 121 pushd out/Default/resources/inspector |
| 114 # Create an AppCache manifest and patch devtools.html and / or inspector.htm
l to point to it | 122 # Create an AppCache manifest and patch devtools.html and / or inspector.htm
l to point to it |
| 115 MANIFEST_FILE_NAME=$REVISION.manifest | 123 MANIFEST_FILE_NAME=$REVISION.manifest |
| 116 FALLBACK_ENTRIES= | 124 FALLBACK_ENTRIES= |
| 117 for DEVTOOLS_MAIN_HTML in devtools.html inspector.html; do | 125 for DEVTOOLS_MAIN_HTML in devtools.html inspector.html; do |
| 118 if [ ! -f "$DEVTOOLS_MAIN_HTML" ]; then | 126 if [ ! -f "$DEVTOOLS_MAIN_HTML" ]; then |
| 119 continue | 127 continue |
| 120 fi | 128 fi |
| 121 sed -i -e 's/^<html>/<html manifest="'$MANIFEST_FILE_NAME'">/' $DEVTOOLS
_MAIN_HTML | 129 sed -i -e 's/^<html>/<html manifest="'$MANIFEST_FILE_NAME'">/' $DEVTOOLS
_MAIN_HTML |
| 122 FALLBACK_ENTRIES="$FALLBACK_ENTRIES $DEVTOOLS_MAIN_HTML" | 130 FALLBACK_ENTRIES="$FALLBACK_ENTRIES $DEVTOOLS_MAIN_HTML" |
| 123 done | 131 done |
| (...skipping 23 matching lines...) Expand all Loading... |
| 147 | 155 |
| 148 popd | 156 popd |
| 149 | 157 |
| 150 ZIP_SHA1=$(sha1sum $ZIP_FILE | awk '{print $1}') | 158 ZIP_SHA1=$(sha1sum $ZIP_FILE | awk '{print $1}') |
| 151 mv $ZIP_FILE "$ZIPS_DIR/$ZIP_SHA1.zip" | 159 mv $ZIP_FILE "$ZIPS_DIR/$ZIP_SHA1.zip" |
| 152 echo "$ZIP_SHA1" > "$REVS_DIR/@$REVISION" | 160 echo "$ZIP_SHA1" > "$REVS_DIR/@$REVISION" |
| 153 | 161 |
| 154 # Comment out the line below for testing. | 162 # Comment out the line below for testing. |
| 155 gsutil -m cp -R $LOCAL_STORAGE_DIR/* $GS_PATH || exit $EXIT_CS_UPLOAD | 163 gsutil -m cp -R $LOCAL_STORAGE_DIR/* $GS_PATH || exit $EXIT_CS_UPLOAD |
| 156 done | 164 done |
| OLD | NEW |