| OLD | NEW |
| 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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 | 43 |
| 44 | 44 |
| 45 # board dir config | 45 # board dir config |
| 46 [ -n "${FLAGS_board}" ] && [ "${FLAGS_host}" = ${FLAGS_TRUE} ] && \ | 46 [ -n "${FLAGS_board}" ] && [ "${FLAGS_host}" = ${FLAGS_TRUE} ] && \ |
| 47 die "Flags --host and --board are mutually exclusive." | 47 die "Flags --host and --board are mutually exclusive." |
| 48 [ -z "${FLAGS_board}" ] && [ "${FLAGS_host}" = ${FLAGS_FALSE} ] && \ | 48 [ -z "${FLAGS_board}" ] && [ "${FLAGS_host}" = ${FLAGS_FALSE} ] && \ |
| 49 die "You must specify either --host or --board=" | 49 die "You must specify either --host or --board=" |
| 50 | 50 |
| 51 if [ -n "${FLAGS_board}" ]; then | 51 if [ -n "${FLAGS_board}" ]; then |
| 52 BOARD_DIR=/build/"${FLAGS_board}" # --board specified | 52 BOARD_DIR=/build/"${FLAGS_board}" # --board specified |
| 53 EQUERY=equery-"${FLAGS_board}" | 53 EQUERYCMD=equery-"${FLAGS_board}" |
| 54 EBUILDCMD=ebuild-"${FLAGS_board}" |
| 54 else | 55 else |
| 55 BOARD_DIR="" # --host specified | 56 BOARD_DIR="" # --host specified |
| 56 EQUERY=equery | 57 EQUERYCMD=equery |
| 58 EBUILDCMD=ebuild |
| 57 fi | 59 fi |
| 58 | 60 |
| 59 KEYWORDS_DIR=${BOARD_DIR}/etc/portage/package.keywords | 61 KEYWORDS_DIR=${BOARD_DIR}/etc/portage/package.keywords |
| 60 UNMASK_DIR=${BOARD_DIR}/etc/portage/package.unmask | 62 UNMASK_DIR=${BOARD_DIR}/etc/portage/package.unmask |
| 61 KEYWORDS_FILE=${KEYWORDS_DIR}/cros-workon | 63 KEYWORDS_FILE=${KEYWORDS_DIR}/cros-workon |
| 62 UNMASK_FILE=${UNMASK_DIR}/cros-workon | 64 UNMASK_FILE=${UNMASK_DIR}/cros-workon |
| 63 | 65 |
| 64 sudo mkdir -p "${KEYWORDS_DIR}" "${UNMASK_DIR}" || \ | 66 sudo mkdir -p "${KEYWORDS_DIR}" "${UNMASK_DIR}" || \ |
| 65 die "mkdir -p ${KEYWORDS_DIR} ${UNMASK_DIR}" | 67 die "mkdir -p ${KEYWORDS_DIR} ${UNMASK_DIR}" |
| 66 sudo touch "${KEYWORDS_FILE}" "${UNMASK_FILE}" || \ | 68 sudo touch "${KEYWORDS_FILE}" "${UNMASK_FILE}" || \ |
| 67 die "touch ${KEYWORDS_FILE} ${UNMASK_FILE}" | 69 die "touch ${KEYWORDS_FILE} ${UNMASK_FILE}" |
| 68 | 70 |
| 69 # Canonicalize package name to category/package. | 71 # Canonicalize package name to category/package. |
| 70 canonicalize_name () { | 72 canonicalize_name () { |
| 71 local pkgfile | 73 local pkgfile |
| 72 local pkgname | 74 local pkgname |
| 73 | 75 |
| 74 if ! pkgfile=$(${EQUERY} which $1); then | 76 if ! pkgfile=$(${EQUERYCMD} which $1); then |
| 75 warn "error looking up package $1" 1>&2 | 77 warn "error looking up package $1" 1>&2 |
| 76 return 1 | 78 return 1 |
| 77 fi | 79 fi |
| 78 | 80 |
| 79 pkgname=$(\ | 81 pkgname=$(\ |
| 80 echo "${pkgfile}" |awk -F '/' '{ print $(NF-2) "/" $(NF-1) }') | 82 echo "${pkgfile}" |awk -F '/' '{ print $(NF-2) "/" $(NF-1) }') |
| 81 | 83 |
| 82 if ! grep -q "cros-workon" ${pkgfile}; then | 84 if ! grep -q "cros-workon" ${pkgfile}; then |
| 83 warn "${pkgname} is not a cros-workon package" 1>&2 | 85 warn "${pkgname} is not a cros-workon package" 1>&2 |
| 84 return 1 | 86 return 1 |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 fi | 142 fi |
| 141 done | 143 done |
| 142 } | 144 } |
| 143 | 145 |
| 144 # Run a command on all or a set of repos. | 146 # Run a command on all or a set of repos. |
| 145 ebuild_forall() { | 147 ebuild_forall() { |
| 146 local atoms=$1 | 148 local atoms=$1 |
| 147 | 149 |
| 148 for atom in ${atoms}; do | 150 for atom in ${atoms}; do |
| 149 info "Running \"${FLAGS_command}\" on ${atom}" | 151 info "Running \"${FLAGS_command}\" on ${atom}" |
| 150 eval $(ebuild-${FLAGS_board} $(${EQUERY} which ${atom}) info) | 152 eval $(${EBUILDCMD} $(${EQUERYCMD} which ${atom}) info) |
| 151 (cd "${CROS_WORKON_SRCDIR}" && bash -c "${FLAGS_command}") | 153 (cd "${CROS_WORKON_SRCDIR}" && bash -c "${FLAGS_command}") |
| 152 done | 154 done |
| 153 } | 155 } |
| 154 | 156 |
| 155 show_workon_ebuilds() { | 157 show_workon_ebuilds() { |
| 156 pushd "${BOARD_DIR}"/etc/ 1> /dev/null | 158 pushd "${BOARD_DIR}"/etc/ 1> /dev/null |
| 157 source make.conf | 159 source make.conf |
| 158 popd 1> /dev/null | 160 popd 1> /dev/null |
| 159 local CROS_OVERLAYS="${PORTDIR_OVERLAY}" | 161 local CROS_OVERLAYS="${PORTDIR_OVERLAY}" |
| 160 | 162 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 esac | 195 esac |
| 194 fi | 196 fi |
| 195 | 197 |
| 196 case ${WORKON_CMD} in | 198 case ${WORKON_CMD} in |
| 197 start) ebuild_to_live "${ATOM_LIST}" ;; | 199 start) ebuild_to_live "${ATOM_LIST}" ;; |
| 198 stop) ebuild_to_stable "${ATOM_LIST}" ;; | 200 stop) ebuild_to_stable "${ATOM_LIST}" ;; |
| 199 list) [ ${FLAGS_all} = "${FLAGS_FALSE}" ] && show_live_ebuilds || show_worko
n_ebuilds ;; | 201 list) [ ${FLAGS_all} = "${FLAGS_FALSE}" ] && show_live_ebuilds || show_worko
n_ebuilds ;; |
| 200 forall) ebuild_forall "${ATOM_LIST}" ;; | 202 forall) ebuild_forall "${ATOM_LIST}" ;; |
| 201 *) die "invalid cros_workon command" ;; | 203 *) die "invalid cros_workon command" ;; |
| 202 esac | 204 esac |
| OLD | NEW |