| #!/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. |
| |
| # Wrapper scripts around cros_mark_as_stable that marks all packages as stable |
| # that have CROS_WORKON_COMMIT that is different than the current HEAD commit |
| # of the corresponding git repository. |
| |
| # 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" |
| |
| # Load common functions for workon scripts. |
| . "$(dirname "$0")/lib/cros_workon_common.sh" |
| |
| get_default_board |
| |
| DEFINE_string board "${DEFAULT_BOARD}" \ |
| "The board to set package keywords for." |
| |
| FLAGS "$@" || exit 1 |
| eval set -- "${FLAGS_ARGV}" |
| |
| set -e |
| |
| BOARD_DIR=/build/"${FLAGS_board}" |
| EQUERYCMD=equery-"${FLAGS_board}" |
| EBUILDCMD=ebuild-"${FLAGS_board}" |
| |
| PACKAGES=$( show_workon_ebuilds ) |
| |
| GRAB_HEAD_COMMIT_CMD="git show HEAD | head -1 | cut -f 2 -d ' '" |
| |
| # Packages to mark as stable. |
| PACKAGE_LIST="" |
| # List of commit ids corresponding to package list. |
| COMMIT_ID_LIST="" |
| |
| # For each package, compares the head commit id to the commit id in the ebuild. |
| # If they do not match, add the package and its commit id into ${PACKAGE_LIST} |
| # and ${COMMIT_ID_LIST} |
| for package in ${PACKAGES}; do |
| ebuild_path=$(${EQUERYCMD} which ${package}) || continue |
| # Sets ${CROS_WORKON_SRCDIR} from the ebuild. |
| eval $(${EBUILDCMD} ${ebuild_path} info) &> /dev/null || continue |
| head_commit=$( cd "${CROS_WORKON_SRCDIR}" &&\ |
| bash -c "${GRAB_HEAD_COMMIT_CMD}" ) || continue |
| egit_commit=$(\ |
| eval echo $(grep CROS_WORKON_COMMIT ${ebuild_path} | cut -f 2 -d '=')) ||\ |
| echo "No CROS_WORKON_COMMIT found in ${ebuild_path}" |
| if [[ ${head_commit} != ${egit_commit} ]] && \ |
| [ -n "${head_commit}" ]; then |
| info\ |
| "HEAD ${head_commit} != CROS_WORKON_COMMIT ${egit_commit} for ${package}" |
| PACKAGE_LIST="${PACKAGE_LIST} ${package}" |
| COMMIT_ID_LIST="${COMMIT_ID_LIST} ${head_commit}" |
| elif [[ ${head_commit} = ${egit_commit} ]]; then |
| info "Commit id's match for ${package}" |
| fi |
| done |
| |
| info "Candidate package list ${PACKAGE_LIST}" |
| info "With commit id list ${COMMIT_ID_LIST}" |
| |
| ./cros_mark_as_stable --board ${FLAGS_board} -p "${PACKAGE_LIST}" \ |
| -i "${COMMIT_ID_LIST}" commit || \ |
| die "Could not mark all packages as stable" |