# Copyright (c) 2011 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. if [ -z "${FLAGS_board}" ]; then error "--board is required." exit 1 fi BOARD="${FLAGS_board}" BOARD_ROOT="/build/${BOARD}" ARCH=$(get_board_arch ${BOARD}) # What cross-build are we targeting? . "${BOARD_ROOT}/etc/portage/make.conf" || die # check if any of the given use flags are enabled for a pkg pkg_use_enabled() { local pkg="$1" shift # for every flag argument, turn it into `-e ^+flag` for grep local grep_args="${@/#/-e ^+}" equery-"${BOARD}" -q uses "${pkg}" | grep -q ${grep_args} return $? } # Usage: pkg_version [installed|binary|ebuild] some-pkg/name # Prints: some-pkg/name-1.2.3 # Note: returns 0 even if the package was not found. pkg_version() { portageq-"${BOARD}" best_visible "${BOARD_ROOT}" "$1" "$2" || : } # Usage: pkg_provides [installed|binary] some-pkg/name-1.2.3 # Prints: x86_32: libfoo.so.2 x86_64: libfoo.so.2 pkg_provides() { local provides p provides=$(portageq-"${BOARD}" metadata "${BOARD_ROOT}" "$1" "$2" PROVIDES) if [[ -z "$provides" ]]; then return fi # convert: # x86_32: libcom_err.so.2 libss.so.2 x86_64: libcom_err.so.2 libss.so.2 # into: # x86_32 libcom_err.so.2 libss.so.2 # x86_64 libcom_err.so.2 libss.so.2 echo -n "# $1:" for p in ${provides}; do if [[ "$p" == *: ]]; then echo echo -n "${p%:}" else echo -n " $p" fi done echo }