setup: Use config name instead layer name
Allows user to pass a config name instead of a layer name.
This can be extremely useful for layers, which contain several configs.
E.g. to build firmware for swift you can call:
```
. setup swift
bitbake obmc-phosphor-image
```
Change-Id: I397a53b0cc135f622e4b3dc712ff93f6a0c10b8a
Signed-off-by: Alexander Filippov <a.filippov@yadro.com>
diff --git a/setup b/setup
index a1b3cc1..09329cd 100755
--- a/setup
+++ b/setup
@@ -24,24 +24,28 @@
machine() {
local target=$1
local build_dir=$2
- local mfg mach realmach
- for mfg in meta-*; do
- for mach in $mfg/meta-*; do
- if [ -d "$mach" -a -d "$mach/conf/machine" ]; then
- realmach=${mach##*meta-}
- # If a target is specified, then check for a match,
- # otherwise just list what we've discovered
- if [ -n "$target" ]; then
- if [ "$realmach" = "$target" ]; then
- echo Machine $target is $mach
- TEMPLATECONF="$mach/conf" source oe-init-build-env $build_dir
- return
- fi
- else
- echo "$realmach"
+ local cfg name tmpl
+ for cfg in meta-*/meta-*/conf/machine/*.conf; do
+ name=${cfg##*/}
+ name=${name%.conf}
+ tmpl=${cfg%/machine/*.conf}
+ # If a target is specified, then check for a match,
+ # otherwise just list what we've discovered
+ if [ -n "$target" ]; then
+ if [ "${name}" = "${target}" ]; then
+ echo "Machine ${target} found in ${tmpl%/conf}"
+ TEMPLATECONF="${tmpl}" source \
+ oe-init-build-env ${build_dir}
+
+ if [ "$(cat conf/templateconf.cfg)" = "${tmpl}" ]; then
+ sed "s/^\(MACHINE\s*[?:]*\s*=\s*\).*$/\1${target}/" \
+ -i conf/local.conf
fi
+ return
fi
- done
+ else
+ echo "${name}"
+ fi
done
[ -n "$target" ] && echo "No such machine!"