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

Unified Diff: bin/cros_workon_make

Issue 5244001: [crosutils] Add script to help build incrementally (Closed) Base URL: http://git.chromium.org/git/crosutils.git@master
Patch Set: added --install Created 10 years, 1 month 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: bin/cros_workon_make
diff --git a/bin/cros_workon_make b/bin/cros_workon_make
new file mode 100755
index 0000000000000000000000000000000000000000..95cc709a5dd41ec4246c8913d50a535ae0b85592
--- /dev/null
+++ b/bin/cros_workon_make
@@ -0,0 +1,93 @@
+#!/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.
+#
+# Simple wrapper script to build a cros_workon package incrementally.
+# You must already be cros_workon'ing the package in question.
+
+. "$(dirname $0)/../common.sh"
+
+# Script must be run inside the chroot.
+assert_inside_chroot
+
+get_default_board
+
+DEFINE_string board "${DEFAULT_BOARD}" \
+ "Board for which to build the package."
+DEFINE_boolean test "${FLAGS_FALSE}" \
+ "Compile and run tests as well."
+DEFINE_boolean reconf "${FLAGS_FALSE}" \
+ "Re-run configure and prepare steps."
+DEFINE_boolean install "${FLAGS_FALSE}" \
+ "Incrementally build and install your package."
+DEFINE_boolean scrub "${FLAGS_FALSE}" \
+ "Blow away all in-tree files not managed by git."
anush 2010/11/23 16:04:59 Should we call this "distclean" to keep with make'
Chris Masone 2010/11/23 19:42:21 I'm torn. --scrub is really destructive, moreso t
rochberg 2010/11/29 21:04:06 +1 to "are you sure"---files you forgot to git add
+
+set -e
+# Parse command line.
+FLAGS "$@" || exit 1
+eval set -- "${FLAGS_ARGV}"
+
+if [ $# -lt 1 ]; then
+ echo "Usage: ${0} [OPTIONS] <package (read: ebuild) basename>"
+ exit 1
+fi
+
+if [ -n "${FLAGS_board}" ]; then
+ BOARD_DIR=/build/"${FLAGS_board}"
+ EBUILDCMD=ebuild-"${FLAGS_board}"
+ EMERGECMD=emerge-"${FLAGS_board}"
+ EQUERYCMD=equery-"${FLAGS_board}"
+ BOARD_STR="${FLAGS_board}"
+ BOARD_KEYWORD="$(portageq-${FLAGS_board} envvar ARCH)"
+fi
+
+unstable_suffix="9999"
+workon_name="${1}-${unstable_suffix}"
+pkgfile=
+workpath=
+
+if ! pkgfile=$("${EQUERYCMD}" which "${workon_name}" 2> /dev/null); then
+ if ACCEPT_KEYWORDS="~${BOARD_KEYWORD}" "${EQUERYCMD}" which "${workon_name}" \
+ > /dev/null 2>&1; then
+ die "run './cros_workon --board ${BOARD_STR} start ${1}' first!" 1>&2
anush 2010/11/23 16:04:59 I was wondering if we should just call the command
Chris Masone 2010/11/23 19:42:21 I always prefer the toolbox approach to the swiss
+ fi
+ die "error looking up package $1"
+fi
+
+if [ "${FLAGS_scrub}" = "${FLAGS_TRUE}" ]; then
+ eval $(${EBUILDCMD} $(${EQUERYCMD} which ${workon_name}) info)
+ srcdir=$(readlink -m ${CROS_WORKON_SRCDIR})
+ trunkdir=$(readlink -m ${CHROOT_TRUNK_DIR})
+ project_path=${srcdir#${trunkdir}/}
+ if ! (cd "${GCLIENT_ROOT}/${project_path}" && git clean -xf); then
+ die "Could not scrub source directory"
+ fi
+ exit 0
+fi
+
+workpath=$(\
+ echo "${pkgfile}" | \
+ awk -F '/' '{ print $(NF-2) "/" $(NF-1) }')-"${unstable_suffix}"
+
+emerge_features=
+to_do="compile"
+if [ "${FLAGS_test}" = "${FLAGS_TRUE}" ]; then
+ to_do="test"
+ emerge_features="test"
+fi
+if [ "${FLAGS_install}" = "${FLAGS_TRUE}" ]; then
anush 2010/11/23 16:04:59 Can we make this the default i.e without an "insta
Chris Masone 2010/11/23 19:42:21 No, the whole point of this tool is to enable incr
+ FEATURES="${emerge_features}" "${EMERGECMD}" "${1}"
+ exit $?
+fi
+
+clean=
+if [ "${FLAGS_reconf}" = "${FLAGS_TRUE}" ]; then
+ clean="clean"
+else
+ rm -f "/build/${BOARD_STR}/tmp/portage/${workpath}/.compiled"
+fi
+SANDBOX_WRITE=~/trunk CROS_WORKON_INPLACE=1 \
+ "${EBUILDCMD}" "${pkgfile}" ${clean} "${to_do}"
anush 2010/11/23 16:04:59 If we make the default as "install" then this need
Chris Masone 2010/11/23 19:42:21 nah, I think this should stay the default. I'm wr
rochberg 2010/11/29 21:04:06 Since my incremental workflow involves the device,
rochberg 2010/11/29 21:04:06 Since my incremental workflow involves the device,
« 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