OLD | NEW |
1 #!/bin/bash | 1 #!/bin/bash |
2 # | 2 # |
3 # Copyright 2014 The Chromium Authors. All rights reserved. | 3 # Copyright 2014 The Chromium Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 # | 6 # |
7 | 7 |
8 # Clones the dom-distiller repo, compiles and extracts its javascript Then | 8 # Clones the dom-distiller repo, compiles and extracts its javascript Then |
9 # copies that js into the Chromium tree. | 9 # copies that js into the Chromium tree. |
10 # This script should be run from the src/ directory and requires that ant is | 10 # This script should be run from the src/ directory and requires that ant is |
11 # installed. It takes an optional parameter for which SHA1 to roll to. If left | 11 # installed. It takes an optional parameter for which SHA1 to roll to. If left |
12 # unspecified the script rolls to HEAD. | 12 # unspecified the script rolls to HEAD. |
13 | 13 |
14 ( | 14 ( |
15 set -e | 15 set -e |
16 | 16 |
17 dom_distiller_js_path=third_party/dom_distiller_js | 17 dom_distiller_js_path=third_party/dom_distiller_js |
18 dom_distiller_js_package=$dom_distiller_js_path/package | |
19 readme_chromium=$dom_distiller_js_path/README.chromium | 18 readme_chromium=$dom_distiller_js_path/README.chromium |
20 tmpdir=/tmp/domdistiller-$$ | 19 tmpdir=/tmp/domdistiller-$$ |
21 changes=$tmpdir/domdistiller.changes | 20 changes=$tmpdir/domdistiller.changes |
22 bugs=$tmpdir/domdistiller.bugs | 21 bugs=$tmpdir/domdistiller.bugs |
23 curr_gitsha=$(grep 'Version:' $readme_chromium | awk '{print $2}') | 22 curr_gitsha=$(grep 'Version:' $readme_chromium | awk '{print $2}') |
24 | 23 |
25 rm -rf $tmpdir | 24 rm -rf $tmpdir |
26 mkdir $tmpdir | 25 mkdir $tmpdir |
| 26 pushd $tmpdir |
27 | 27 |
28 pushd $tmpdir | 28 git clone https://github.com/chromium/dom-distiller.git |
29 git clone https://github.com/chromium/dom-distiller/ . | 29 pushd dom-distiller |
30 | 30 |
31 # The new git SHA1 is HEAD or the first command line parameter. | 31 # The new git SHA1 is HEAD or the first command line parameter. |
32 [[ -z "$1" ]] && gitsha_target="HEAD" || gitsha_target="$1" | 32 [[ -z "$1" ]] && gitsha_target="HEAD" || gitsha_target="$1" |
33 new_gitsha=$(git rev-parse --short=10 ${gitsha_target}) | 33 new_gitsha=$(git rev-parse --short=10 ${gitsha_target}) |
34 git reset --hard ${new_gitsha} | 34 git reset --hard ${new_gitsha} |
35 git log --oneline ${curr_gitsha}..${new_gitsha} > $changes | 35 git log --oneline ${curr_gitsha}..${new_gitsha} > $changes |
36 | 36 |
37 echo -n BUG= > $bugs | 37 echo -n BUG= > $bugs |
38 | 38 |
39 # This extracts BUG= lines from the log, extracts the numbers part, removes | 39 # This extracts BUG= lines from the log, extracts the numbers part, removes |
40 # whitespace and deletes empty lines. Then, split on ',', sort, uniquify and | 40 # whitespace and deletes empty lines. Then, split on ',', sort, uniquify and |
41 # rejoin. Finally, remove the trailing ',' and concat to $bugs. | 41 # rejoin. Finally, remove the trailing ',' and concat to $bugs. |
42 git log ${curr_gitsha}..${new_gitsha} \ | 42 git log ${curr_gitsha}..${new_gitsha} \ |
43 | grep BUG= \ | 43 | grep BUG= \ |
44 | sed -e 's/.*BUG=\(.*\)/\1/' -e 's/\s*//g' -e '/^$/d' \ | 44 | sed -e 's/.*BUG=\(.*\)/\1/' -e 's/\s*//g' -e '/^$/d' \ |
45 | tr ',' '\n' \ | 45 | tr ',' '\n' \ |
46 | sort \ | 46 | sort \ |
47 | uniq \ | 47 | uniq \ |
48 | tr '\n' ',' \ | 48 | tr '\n' ',' \ |
49 | head --bytes=-1 \ | 49 | head --bytes=-1 \ |
50 >> $bugs | 50 >> $bugs |
51 | 51 |
52 echo >> $bugs # add a newline | 52 echo >> $bugs # add a newline |
53 | 53 |
54 ant package | 54 ant package |
55 popd | 55 popd # dom-distiller |
56 | 56 |
57 rm -rf $dom_distiller_js_package | 57 git clone https://github.com/chromium/dom-distiller-dist.git $tmpdir/dom-disti
ller-dist |
58 mkdir $dom_distiller_js_package | 58 rm -rf $tmpdir/dom-distiller-dist/* |
59 cp -rf $tmpdir/out/package/* $dom_distiller_js_package | 59 pushd dom-distiller-dist |
60 git add $dom_distiller_js_package | 60 cp -r $tmpdir/dom-distiller/out/package/* . |
61 cp $tmpdir/LICENSE $dom_distiller_js_path/ | 61 git add . |
62 sed -i "s/Version: [0-9a-f]*/Version: $new_gitsha/" $readme_chromium | 62 if [[ $(git status --short | wc -l) -ne 0 ]]; then |
| 63 git commit -a -m "Package for ${new_gitsha}" |
| 64 git push origin master |
| 65 else |
| 66 # No changes to external repo, but need to check if DEPS refers to same SHA1
. |
| 67 echo "WARNING: There were no changes to the distribution package." |
| 68 fi |
| 69 new_dist_gitsha=$(git rev-parse HEAD) |
| 70 popd # dom-distiller-dist |
| 71 |
| 72 popd # tmpdir |
| 73 curr_dist_gitsha=$(grep -e "/external\/github.com\/chromium\/dom-distiller-dis
t.git" DEPS | sed -e "s/.*'\([A-Za-z0-9]\{40\}\)'.*/\1/g") |
| 74 if [[ "${new_dist_gitsha}" == "${curr_dist_gitsha}" ]]; then |
| 75 echo "The roll does not include any changes to the dist package. Exiting." |
| 76 rm -rf $tmpdir |
| 77 exit 1 |
| 78 fi |
| 79 |
| 80 cp $tmpdir/dom-distiller/LICENSE $dom_distiller_js_path/ |
| 81 sed -i "s/Version: [0-9a-f]*/Version: ${new_gitsha}/" $readme_chromium |
| 82 sed -i -e "s/\('\/external\/github.com\/chromium\/dom-distiller-dist.git' + '@
' + '\)\([0-9a-f]\+\)'/\1${new_dist_gitsha}'/" DEPS |
63 | 83 |
64 gen_message () { | 84 gen_message () { |
65 echo "Roll DomDistillerJS" | 85 echo "Roll DOM Distiller JavaScript distribution package" |
| 86 echo |
| 87 echo "Diff since last roll:" |
| 88 echo "https://github.com/chromium/dom-distiller/compare/${curr_gitsha}...${n
ew_gitsha}" |
66 echo | 89 echo |
67 echo "Picked up changes:" | 90 echo "Picked up changes:" |
68 cat $changes | 91 cat $changes |
69 echo | 92 echo |
70 cat $bugs | 93 cat $bugs |
71 } | 94 } |
72 | 95 |
73 message=$tmpdir/message | 96 message=$tmpdir/message |
74 gen_message > $message | 97 gen_message > $message |
75 | 98 |
76 # Run checklicenses.py on the pulled files, but only print the output on | 99 # Run checklicenses.py on the pulled files, but only print the output on |
77 # failures. | 100 # failures. |
78 tools/checklicenses/checklicenses.py $dom_distiller_js_path > $tmpdir/checklic
enses.out || cat $tmpdir/checklicenses.out | 101 tools/checklicenses/checklicenses.py $dom_distiller_js_path > $tmpdir/checklic
enses.out || cat $tmpdir/checklicenses.out |
79 | 102 |
80 git commit -a -F $message | 103 git commit -a -F $message |
81 | 104 |
82 rm -rf $tmpdir | 105 rm -rf $tmpdir |
83 ) | 106 ) |
OLD | NEW |