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

Unified Diff: cros_workon

Issue 2852019: cros_workon: initial implementation (Closed) Base URL: ssh://git@gitrw.chromium.org//crosutils.git
Patch Set: arg reordering complete, simple is better; sed --> grep Created 10 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cros_workon
diff --git a/cros_workon b/cros_workon
new file mode 100755
index 0000000000000000000000000000000000000000..5854b889ab6e7ca40a4608c00debbf4765098a30
--- /dev/null
+++ b/cros_workon
@@ -0,0 +1,105 @@
+#!/bin/bash
+
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This script moves ebuilds between 'stable' and 'live' states.
+# By default 'stable' ebuilds point at and build from source at the
+# last known good commit. Moving an ebuild to 'live' (via cros_workon start)
+# is intended to support development. The current source tip is fetched,
+# source modified and built using the unstable 'live' (9999) ebuild.
+#
+# Usage:
+# cros_workon <start|stop> <package> [<package> ...] [--board=<board-name]
+# cros_workon list
+
+# Load common constants. This should be the first executable line.
+# The path to common.sh should be relative to your script's location.
+. "$(dirname "$0")/common.sh"
+
+# Script must be run inside the chroot
+restart_in_chroot_if_needed $*
+get_default_board
+
+DEFINE_string board "${DEFAULT_BOARD}" \
+ "The board to set package keywords for."
+
+FLAGS_HELP="usage: $0 [flags]"
+FLAGS "$@" || exit 1
+eval set -- "${FLAGS_ARGV}"
+
+if [ -z "${FLAGS_board}" ] ; then
+ die "--board is required."
+fi
+
+# eat the workon command keywords: start, stop or list.
+WORKON_CMD=$1
+shift
+
+ATOM_LIST=$@
+
+BOARD_DIR=/build/"${FLAGS_board}"
+KEYWORDS_DIR=${BOARD_DIR}/etc/portage/package.keywords
+KEYWORDS_FILE=${KEYWORDS_DIR}/cros-workon
+
+# Move a stable ebuild to the live development catgeory. The ebuild
+# src_unpack step fetches the package source for local development.
+ebuild_to_live () {
+
+ local atoms=$1
+
+ echo
+ echo "Moving stable ebuild to live development:"
+
+ if [[ -d "${KEYWORDS_DIR}" ]]; then
+ sudo mkdir -p "${KEYWORDS_DIR}"
+ fi
+
+ for atom in ${atoms}; do
+
+ if [[ -f "${KEYWORDS_FILE}" ]] &&
+ $(grep -qx "${atom}" "${KEYWORDS_FILE}") ; then
+ echo " '${atom}' already marked for development"
+ else
+ echo " '${atom}'"
+ sudo bash -c "echo \"${atom}\" >> \"${KEYWORDS_FILE}\""
+ fi
+ done
+}
+
+# Move a live development ebuild back to stable.
+ebuild_to_stable () {
+
+ local atoms=$1
+
+ echo
+ echo "Moving live development ebuild to stable:"
+
+ for atom in ${atoms}; do
+
+ if [[ -f "${KEYWORDS_FILE}" ]] &&
+ $(grep -qx "${atom}" "${KEYWORDS_FILE}") ; then
+ echo " '${atom}'"
+ sudo bash -c "grep -v '^${atom}\$' \"${KEYWORDS_FILE}\" > \
+ \"${KEYWORDS_FILE}+\""
+ sudo mv "${KEYWORDS_FILE}+" "${KEYWORDS_FILE}"
+ fi
+ done
+}
+
+# Display ebuilds currently part of the live branch and open for development.
+show_live_ebuilds () {
+ echo
+ echo "Live development ebuilds:"
+
+ cat "${KEYWORDS_FILE}"
+}
+
+case ${WORKON_CMD} in
+ start) ebuild_to_live "${ATOM_LIST}" ;;
+ stop) ebuild_to_stable "${ATOM_LIST}" ;;
+ list) show_live_ebuilds ;;
+ *) die "valid cros_workon commands: start|stop|list" ;;
+esac
+
« 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