cros-workon: extend show_workon_ebuilds to give full paths, provide wrappers

This will allow replacement of equery which in cros-workon

Also other ebuild-related operations like grouping workon ebuilds with the same repo

* Find for all ebuilds takes almost no time when cached and up to ~2 secs when not
* equery takes ages just to load

TEST=cros_workon_ebuilds before and after, and diff:
--- list1       2010-07-27 21:22:23.000000000 -0700
+++ list2       2010-07-27 21:22:32.000000000 -0700
@@ -1,6 +1,5 @@
 app-crypt/tpm-emulator
 app-crypt/trousers
-app-i18n/ibus
 app-i18n/ibus-chewing
 app-i18n/ibus-hangul
 app-i18n/ibus-m17n
(ibus is a mistake, not a workon package, i'll fix that in a separate CL)

	modified:   lib/cros_workon_common.sh

Review URL: http://codereview.chromium.org/2808072
This commit is contained in:
Zdenek Behan 2010-07-29 13:26:53 -07:00
parent 151112ce00
commit e6a925894c

View File

@ -6,16 +6,29 @@
# Common library for functions used by workon tools.
show_workon_ebuilds() {
find_workon_ebuilds() {
pushd "${BOARD_DIR}"/etc/ 1> /dev/null
source make.conf
popd 1> /dev/null
local CROS_OVERLAYS="${PORTDIR_OVERLAY}"
# NOTE: overlay may be a symlink, and we have to use ${overlay}/
for overlay in ${CROS_OVERLAYS}; do
pushd ${overlay} 1> /dev/null
find . -name '*.ebuild' | xargs fgrep cros-workon | \
awk -F / '{ print $2 "/" $3 }' | uniq | sort
popd 1> /dev/null
# only look up ebuilds named 9999 to eliminate duplicates
find ${overlay}/ -name '*9999.ebuild' | xargs fgrep cros-workon | \
sed -e 's/\([.]ebuild\):.*/\1/'|uniq
done
}
# wrapper script that caches the result of find_workon_ebuilds()
show_workon_ebuilds_files() {
if [ -z "${CROS_ALL_EBUILDS}" ]; then
CROS_ALL_EBUILDS=$(find_workon_ebuilds)
fi
echo "${CROS_ALL_EBUILDS}"
}
show_workon_ebuilds() {
show_workon_ebuilds_sources | \
sed -e 's/.*\/\([^/]*\)\/\([^/]*\)\/.*\.ebuild/\1\/\2/'| sort
}