Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(165)

Side by Side Diff: cros_mark_all_as_stable

Issue 3473012: cros_mark_all_as_stable: revert commit 868b77711655d25739de9cced84c64e72580b352 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/crosutils.git
Patch Set: Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/bash 1 #!/bin/bash
2 2
3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 3 # Copyright (c) 2010 The Chromium OS 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 # Wrapper scripts around cros_mark_as_stable that marks all packages as stable 7 # Wrapper scripts around cros_mark_as_stable that marks all packages as stable
8 # that have CROS_WORKON_COMMIT that is different than the current HEAD commit 8 # that have CROS_WORKON_COMMIT that is different than the current HEAD commit
9 # of the corresponding git repository. 9 # of the corresponding git repository.
10 10
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 46
47 [ -f "${BLACKLIST_FILE}" ] && \ 47 [ -f "${BLACKLIST_FILE}" ] && \
48 PACKAGE_BLACKLIST=$(cat "${BLACKLIST_FILE}") 48 PACKAGE_BLACKLIST=$(cat "${BLACKLIST_FILE}")
49 49
50 function package_is_blacklisted() { 50 function package_is_blacklisted() {
51 # Makes a list that looks like "\|package1\|package2\|...packagen". 51 # Makes a list that looks like "\|package1\|package2\|...packagen".
52 local blist_regex=$(for i in ${PACKAGE_BLACKLIST}; do echo -n "\\|${i}"; done) 52 local blist_regex=$(for i in ${PACKAGE_BLACKLIST}; do echo -n "\\|${i}"; done)
53 expr "${1}" : "^\(${blist_regex/\\|/}\)$" &> /dev/null && return 0 || return 1 53 expr "${1}" : "^\(${blist_regex/\\|/}\)$" &> /dev/null && return 0 || return 1
54 } 54 }
55 55
56 function ifs_normalize() {
57 for i in $*; do echo "${i}"; done | sort -u |tr '\n' ' '
58 }
59
60 function eclass_affected_ebuilds() {
61 CHROMIUMOS_OVERLAY="${HOME}/trunk/src/third_party/chromiumos-overlay/"
62
63 info "Tracking eclass changes"
64 pushd "${CHROMIUMOS_OVERLAY}" 1> /dev/null
65
66 # Look at the last time chrome-bot commited anything.
67 last_bot_commit=$(
68 git log --author=chrome-bot -1|head -n 1|cut -f2 -d' '
69 )
70 info "Last bot commit is: ${last_bot_commit}"
71
72 # List of eclasses touched in all commits since that commit.
73 eclass_touched=$(ifs_normalize $(
74 git diff --name-only ${last_bot_commit}|grep "^eclass\/.*\.eclass" | \
75 sed -e 's,eclass/\(.*\)\.eclass,\1,' | \
76 sort -u
77 )
78 )
79 eclass_touched_prev=""
80
81 if [ -z "${eclass_touched}" ]; then
82 info "No eclasses changed"
83 return 0
84 fi
85
86 # Iteratively add all eclasses that inherit the current list, until
87 # the first iteration that will not add anything.
88 while [ "${eclass_touched}" != "${eclass_touched_prev}" ]; do
89 eclass_touched_prev=${eclass_touched}
90
91 # regexp to search for eclass inheritance
92 searchregexp="$(for i in ${eclass_touched}; do echo -n "\|${i}"; done)"
93 searchregexp="inherit.*\(${searchregexp/|/}\).*"
94
95 # Iterate the current list of eclasses and add immediate dependencies.
96 eclass_touched=$(ifs_normalize $(
97 find "eclass/" -name '*.eclass' | \
98 xargs grep -l "${searchregexp}" | \
99 sed -e "s,eclass/\(.*\)\.eclass,\1,"
100 ) ${eclass_touched}
101 )
102 done
103
104 info "Eclasses changed: ${eclass_touched}"
105
106 # Look which ebuilds are affected.
107 # NOTE: searchregexp is usable because last two lists of eclasses were the sam e
108 ebuilds_affected=$(
109 find . -name '*9999.ebuild' | \
110 xargs grep -l "cros-workon" | \
111 xargs grep -l "${searchregexp}" | \
112 sed -e "s,.\/\(.*\)/.*-9999.ebuild,\1,"
113 )
114
115 echo "${ebuilds_affected}"
116
117 popd 1> /dev/null
118 }
119
120 # For each package, compares the head commit id to the commit id in the ebuild. 56 # For each package, compares the head commit id to the commit id in the ebuild.
121 # If they do not match, add the package and its commit id into ${PACKAGE_LIST} 57 # If they do not match, add the package and its commit id into ${PACKAGE_LIST}
122 # and ${COMMIT_ID_LIST} 58 # and ${COMMIT_ID_LIST}
123 for package in ${PACKAGES}; do 59 for package in ${PACKAGES}; do
124 if package_is_blacklisted ${package}; then 60 if package_is_blacklisted ${package}; then
125 info "${package} blacklisted, skipping" 61 info "${package} blacklisted, skipping"
126 continue 62 continue
127 fi 63 fi
128 # We need to pick up any stable ebuilds for any platform. 64 # We need to pick up any stable ebuilds for any platform.
129 ebuild_path=$(ACCEPT_KEYWORDS="arm x86 amd64" ${EQUERYCMD} which ${package})\ 65 ebuild_path=$(ACCEPT_KEYWORDS="arm x86 amd64" ${EQUERYCMD} which ${package})\
(...skipping 19 matching lines...) Expand all
149 # egrep succeeds if there are important differences between the ebuilds. 85 # egrep succeeds if there are important differences between the ebuilds.
150 if diff "${ebuild_path}" "${ebuild_9999_path}" | \ 86 if diff "${ebuild_path}" "${ebuild_9999_path}" | \
151 egrep -v "KEYWORDS|CROS_WORKON_COMMIT|^---|^[<>]\ *$|^[0-9]"; then 87 egrep -v "KEYWORDS|CROS_WORKON_COMMIT|^---|^[<>]\ *$|^[0-9]"; then
152 info "Detected 9999 ebuild change for ${package}." 88 info "Detected 9999 ebuild change for ${package}."
153 PACKAGE_LIST="${PACKAGE_LIST} ${package}" 89 PACKAGE_LIST="${PACKAGE_LIST} ${package}"
154 COMMIT_ID_LIST="${COMMIT_ID_LIST} ${egit_commit}" 90 COMMIT_ID_LIST="${COMMIT_ID_LIST} ${egit_commit}"
155 fi 91 fi
156 fi 92 fi
157 done 93 done
158 94
159 PACKAGE_LIST=$(
160 ifs_normalize ${PACKAGE_LIST} $(eclass_affected_ebuilds)
161 )
162
163 if [ -n "${PACKAGE_LIST}" ] ; then 95 if [ -n "${PACKAGE_LIST}" ] ; then
164 info "Candidate package list ${PACKAGE_LIST}" 96 info "Candidate package list ${PACKAGE_LIST}"
165 info "With commit id list ${COMMIT_ID_LIST}" 97 info "With commit id list ${COMMIT_ID_LIST}"
166 98
167 ./cros_mark_as_stable --board ${FLAGS_board} -p "${PACKAGE_LIST}" \ 99 ./cros_mark_as_stable --board ${FLAGS_board} -p "${PACKAGE_LIST}" \
168 -i "${COMMIT_ID_LIST}" -t ${FLAGS_tracking_branch} commit || \ 100 -i "${COMMIT_ID_LIST}" -t ${FLAGS_tracking_branch} commit || \
169 die "Could not mark all packages as stable" 101 die "Could not mark all packages as stable"
170 else 102 else
171 info "No candidate packages to be marked" 103 info "No candidate packages to be marked"
172 fi 104 fi
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698