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

Side by Side Diff: cros_workon

Issue 3352002: cros_workon: print out short summary of what has been done for start/stop (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/crosutils.git
Patch Set: Addressed a nit 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 # This script moves ebuilds between 'stable' and 'live' states. 7 # This script moves ebuilds between 'stable' and 'live' states.
8 # By default 'stable' ebuilds point at and build from source at the 8 # By default 'stable' ebuilds point at and build from source at the
9 # last known good commit. Moving an ebuild to 'live' (via cros_workon start) 9 # last known good commit. Moving an ebuild to 'live' (via cros_workon start)
10 # is intended to support development. The current source tip is fetched, 10 # is intended to support development. The current source tip is fetched,
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 # there's no way to override. 52 # there's no way to override.
53 [ -n "${FLAGS_board}" ] && [ "${FLAGS_host}" = ${FLAGS_TRUE} ] && \ 53 [ -n "${FLAGS_board}" ] && [ "${FLAGS_host}" = ${FLAGS_TRUE} ] && \
54 FLAGS_board="" # kill board 54 FLAGS_board="" # kill board
55 [ -z "${FLAGS_board}" ] && [ "${FLAGS_host}" = ${FLAGS_FALSE} ] && \ 55 [ -z "${FLAGS_board}" ] && [ "${FLAGS_host}" = ${FLAGS_FALSE} ] && \
56 die "You must specify either --host or --board=" 56 die "You must specify either --host or --board="
57 57
58 if [ -n "${FLAGS_board}" ]; then 58 if [ -n "${FLAGS_board}" ]; then
59 BOARD_DIR=/build/"${FLAGS_board}" # --board specified 59 BOARD_DIR=/build/"${FLAGS_board}" # --board specified
60 EQUERYCMD=equery-"${FLAGS_board}" 60 EQUERYCMD=equery-"${FLAGS_board}"
61 EBUILDCMD=ebuild-"${FLAGS_board}" 61 EBUILDCMD=ebuild-"${FLAGS_board}"
62 BOARD_STR="${FLAGS_board}"
62 else 63 else
63 BOARD_DIR="" # --host specified 64 BOARD_DIR="" # --host specified
64 EQUERYCMD=equery 65 EQUERYCMD=equery
65 EBUILDCMD=ebuild 66 EBUILDCMD=ebuild
67 BOARD_STR="host"
66 fi 68 fi
67 69
68 WORKON_DIR=${CHROOT_TRUNK_DIR}/.config/cros_workon 70 WORKON_DIR=${CHROOT_TRUNK_DIR}/.config/cros_workon
69 KEYWORDS_DIR=${BOARD_DIR}/etc/portage/package.keywords 71 KEYWORDS_DIR=${BOARD_DIR}/etc/portage/package.keywords
70 UNMASK_DIR=${BOARD_DIR}/etc/portage/package.unmask 72 UNMASK_DIR=${BOARD_DIR}/etc/portage/package.unmask
71 WORKON_FILE=${WORKON_DIR}/${FLAGS_board:-host} 73 WORKON_FILE=${WORKON_DIR}/${FLAGS_board:-host}
72 KEYWORDS_FILE=${KEYWORDS_DIR}/cros-workon 74 KEYWORDS_FILE=${KEYWORDS_DIR}/cros-workon
73 UNMASK_FILE=${UNMASK_DIR}/cros-workon 75 UNMASK_FILE=${UNMASK_DIR}/cros-workon
74 76
75 # TODO(msb): remove the backward compatibility after 09/01/2010 77 # TODO(msb): remove the backward compatibility after 09/01/2010
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 | sort | uniq >> "${local_manifest}" 195 | sort | uniq >> "${local_manifest}"
194 echo "</manifest>" >> "${local_manifest}" 196 echo "</manifest>" >> "${local_manifest}"
195 echo "Please run \"repo sync\" now." 197 echo "Please run \"repo sync\" now."
196 fi 198 fi
197 } 199 }
198 200
199 # Move a stable ebuild to the live development catgeory. The ebuild 201 # Move a stable ebuild to the live development catgeory. The ebuild
200 # src_unpack step fetches the package source for local development. 202 # src_unpack step fetches the package source for local development.
201 ebuild_to_live () { 203 ebuild_to_live () {
202 local atoms=$1 204 local atoms=$1
205 local atoms_success=""
203 206
204 for atom in ${atoms}; do 207 for atom in ${atoms}; do
205 if ! grep -qx "[~=]${atom}-9999" "${WORKON_FILE}" ; then 208 if ! grep -qx "[~=]${atom}-9999" "${WORKON_FILE}" ; then
206 sudo bash -c "echo \"=${atom}-9999\" >> \"${WORKON_FILE}\"" 209 if sudo bash -c "echo \"=${atom}-9999\" >> \"${WORKON_FILE}\""; then
210 atoms_success="${atoms_success} ${atom}"
211 fi
207 else 212 else
208 warn "Already working on ${atom}" 213 warn "Already working on ${atom}"
209 fi 214 fi
210 done 215 done
216 [ -n "${atoms_success}" ] && regen_manifest_and_sync && \
217 info "Started working on '${atoms_success/ /}' for '${BOARD_STR}'"
211 } 218 }
212 219
213 # Move a live development ebuild back to stable. 220 # Move a live development ebuild back to stable.
214 ebuild_to_stable () { 221 ebuild_to_stable () {
215 local atoms=$1 222 local atoms=$1
223 local atoms_success=""
216 224
217 for atom in ${atoms}; do 225 for atom in ${atoms}; do
218 if grep -qx "[~=]${atom}-9999" "${WORKON_FILE}" ; then 226 if grep -qx "[~=]${atom}-9999" "${WORKON_FILE}" ; then
219 sudo bash -c "grep -v '^[~=]${atom}-9999\$' \"${WORKON_FILE}\" > \ 227 if sudo sed -e "/^[~=]${atom/\//\\/}-9999\$/d" -i "${WORKON_FILE}"; then
220 \"${WORKON_FILE}+\"" 228 atoms_success="${atoms_success} ${atom}"
221 sudo mv "${WORKON_FILE}+" "${WORKON_FILE}" 229 fi
222 else 230 else
223 warn "Not working on ${atom}" 231 warn "Not working on ${atom}"
224 fi 232 fi
225 done 233 done
234 [ -n "${atoms_success}" ] && \
235 info "Stopped working on '${atoms_success/ /}' for '${BOARD_STR}'"
226 } 236 }
227 237
228 # Run a command on all or a set of repos. 238 # Run a command on all or a set of repos.
229 ebuild_iterate() { 239 ebuild_iterate() {
230 local atoms=$1 240 local atoms=$1
231 241
232 for atom in ${atoms}; do 242 for atom in ${atoms}; do
233 info "Running \"${FLAGS_command}\" on ${atom}" 243 info "Running \"${FLAGS_command}\" on ${atom}"
234 eval $(${EBUILDCMD} $(${EQUERYCMD} which ${atom}) info) 244 eval $(${EBUILDCMD} $(${EQUERYCMD} which ${atom}) info)
235 (cd "${CROS_WORKON_SRCDIR}" && bash -c "${FLAGS_command}") 245 (cd "${CROS_WORKON_SRCDIR}" && bash -c "${FLAGS_command}")
(...skipping 15 matching lines...) Expand all
251 if [ -z "${ATOM_LIST}" ]; then 261 if [ -z "${ATOM_LIST}" ]; then
252 die "${WORKON_CMD}: No packages specified" 262 die "${WORKON_CMD}: No packages specified"
253 elif ! ATOM_LIST=$(canonicalize_names "${ATOM_LIST}"); then 263 elif ! ATOM_LIST=$(canonicalize_names "${ATOM_LIST}"); then
254 die "Error parsing package list" 264 die "Error parsing package list"
255 fi;; 265 fi;;
256 *) ;; 266 *) ;;
257 esac 267 esac
258 fi 268 fi
259 269
260 case ${WORKON_CMD} in 270 case ${WORKON_CMD} in
261 start) ebuild_to_live "${ATOM_LIST}"; regen_manifest_and_sync ;; 271 start) ebuild_to_live "${ATOM_LIST}" ;;
262 stop) ebuild_to_stable "${ATOM_LIST}" ;; 272 stop) ebuild_to_stable "${ATOM_LIST}" ;;
263 list) [ ${FLAGS_all} = "${FLAGS_FALSE}" ] && show_live_ebuilds || show_worko n_ebuilds ;; 273 list) [ ${FLAGS_all} = "${FLAGS_FALSE}" ] && show_live_ebuilds || show_worko n_ebuilds ;;
264 iterate)ebuild_iterate "${ATOM_LIST}" ;; 274 iterate)ebuild_iterate "${ATOM_LIST}" ;;
265 *) die "$(basename $0): command '${WORKON_CMD}' not recognized" ;; 275 *) die "$(basename $0): command '${WORKON_CMD}' not recognized" ;;
266 esac 276 esac
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