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

Side by Side Diff: cros_mark_branch_as_stable

Issue 3607014: Update all ebuilds to point to a branch or tag. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/crosutils.git
Patch Set: More cleanup per feedback from djmm Created 10 years, 2 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
(Empty)
1 #!/bin/bash
2
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
5 # found in the LICENSE file.
6
7 # Mark all ebuilds in chromiumos-overlay and chromeos-overlay as stable and
8 # point them at the current version we have checked out.
9 #
10 # This is useful in case we want to verify that all ebuilds are pointing at the
11 # right commit hash when we are doing a build on a branch. It is intended to be
12 # used prior to tagging and can be used instead of a preflight queue. It is an
13 # alternative to cros_mark_all_as_stable that does not require a chroot and
14 # does not increase the revision number on ebuilds.
15 #
16 # Unlike cros_mark_all_as_stable, which only updates the latest stable ebuild
17 # for a given board, this script updates all stable ebuilds for all boards,
18 # including unused stable ebuilds. We do this for the sake of simplicity
19 # because it's hard to know in advance which ebuilds are truly unused, and it
20 # shouldn't hurt to update unused ebuilds.
21 #
22 # This script does not support cros_mark_as_stable_blacklist. If there are any
23 # packages in the blacklist, this script exits with an error message.
24 #
25 # Long term, the plan is to get rid of this script and replace it with
26 # cros_mark_all_as_stable. This script is only present to help with branching.
27 #
28 # Example usage: ./cros_mark_branch_as_stable
29
30 # Load common constants. This should be the first executable line.
31 # The path to common.sh should be relative to your script's location.
32 . "$(dirname "$0")/common.sh"
33
34 function is_workon() { xargs grep -lE '^inherit.*cros-workon'; }
35 function is_stable() { xargs grep -lE '^KEYWORDS=[^~]*$'; }
36 function is_unstable() { xargs grep -lE '^KEYWORDS=.*~'; }
37
38 function get_workon_commit() {
39 # Get the latest workon commit associated with an ebuild.
40 ebuild="$1"
41 dir=$(dirname $ebuild)
42 CATEGORY=$(basename $(dirname "$dir"))
43 CROS_WORKON_LOCALNAME=$(basename "$dir")
44 CROS_WORKON_SUBDIR=
45
46 # Grab the code from the ebuild that initializes the CROS_WORKON_*
47 # variables, and eval it. Note that this only works if the variables are at
48 # the start of the line (i.e. it doesn't work for "if" statements).
49 eval $(grep -E '^CROS_WORKON' $ebuild)
djmm 2010/10/11 22:02:50 Bash's elegant simplicity. :)
50
51 SUFFIX="$CROS_WORKON_LOCALNAME/$CROS_WORKON_SUBDIR"
52 if [[ "$CATEGORY" = "chromeos-base" ]]; then
53 SRCDIR="$GCLIENT_ROOT/src/platform/$SUFFIX"
54 else
55 SRCDIR="$GCLIENT_ROOT/src/third_party/$SUFFIX"
56 fi
57
58 # TODO(anush): This hack is only necessary because the kernel ebuild has "if"
59 # statements, so we can't grab the CROS_WORKON_LOCALNAME properly. We should
60 # clean up the kernel ebuild and remove this hack.
61 if ! [[ -d "$SRCDIR" ]] && [[ "$CROS_WORKON_LOCALNAME" = "kernel" ]]; then
62 SRCDIR="$GCLIENT_ROOT/src/third_party/kernel/files"
63 fi
64
65 cd $SRCDIR && git rev-parse HEAD
66 }
67
68 BLACKLIST_FILE=$(dirname "$0")/cros_mark_as_stable_blacklist
69 BLACKLIST=$(cat "$BLACKLIST_FILE")
70 if [[ -n "$BLACKLIST" ]]; then
71 die "$0 does not support cros_mark_as_stable_blacklist"
72 fi
73
74 for overlay in "$GCLIENT_ROOT/src/private-overlays/chromeos-overlay" \
75 "$GCLIENT_ROOT/src/third_party/chromiumos-overlay"; do
76 if [[ -d "$overlay" ]]; then
77 ebuilds=$(find "$overlay" -type f -name "*.ebuild" | is_workon | is_stable)
78 for ebuild in $ebuilds; do
79 dir=$(dirname "$ebuild")
80 unstable_ebuild=$(echo "$dir"/*-9999.ebuild | is_workon | is_unstable)
81 if [[ -f "$unstable_ebuild" ]]; then
82 COMMIT=$(get_workon_commit $unstable_ebuild)
83 sed -e '/^KEYWORDS="/s/~//g' -e '/^CROS_WORKON_COMMIT=/d' \
84 -e "/^EAPI/s/\$/\nCROS_WORKON_COMMIT=\"$COMMIT\"/g" \
85 "$unstable_ebuild" > "$ebuild"
86 else
87 echo "No 9999 ebuild for $ebuild" >&2
88 COMMIT=$(get_workon_commit $ebuild)
89 sed -i -e "/^CROS_WORKON_COMMIT/s|=.*|=\"$COMMIT\"|" "$ebuild"
90 fi
91 if [[ -z "$COMMIT" ]]; then
92 die "No commit hash for $ebuild"
93 fi
94 done
95 fi
96 done
97
98 echo Updated all ebuilds
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