Index: lib/cros_workon_common.sh |
diff --git a/lib/cros_workon_common.sh b/lib/cros_workon_common.sh |
index 45f3c1370311f237f3d2373abbd632e23e998211..129bc0c1d80a69f75cad5c55917c550d43660afd 100644 |
--- a/lib/cros_workon_common.sh |
+++ b/lib/cros_workon_common.sh |
@@ -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 |
+} |