allow dependency between agl feature 59/6959/5
authorRonan <ronan.lemartret@iot.bzh>
Tue, 1 Nov 2016 13:24:33 +0000 (14:24 +0100)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Tue, 8 Nov 2016 23:28:33 +0000 (23:28 +0000)
  * you can add included.inc file for each feature
  * if features is include into an other feature,
    they are print during the --help command

  #source meta-agl/scripts/aglsetup.sh -h
   ...
  Available features:
   [meta-agl]
       agl-all-features :( agl-demo  agl-appfw-smack  agl-devel  agl-netboot  agl-sota )
       agl-archiver
       agl-devel
       agl-isafw
       agl-netboot
   [meta-agl-devel]
       agl-renesas-kernel
   [meta-agl-extra]
       agl-appfw-smack
       agl-demo :( agl-appfw-smack agl-devel)

Change-Id: I4a72abd48f70a9262203acba84fac24d9dd4dce0
Signed-off-by: Ronan <ronan.lemartret@iot.bzh>
scripts/.aglsetup_genconfig.bash
templates/feature/agl-all-features/included.dep [new file with mode: 0644]
templates/feature/agl-all-features/included.inc [deleted file]

index e73facd..285ecee 100755 (executable)
@@ -172,8 +172,13 @@ EOF
                buf=$(list_features $x)
                [[ -z "$buf" ]] && continue
                echo "   [$x]"
-               for y in $buf; do
-                       echo "       $y"
+               for feature in $buf; do
+                       print_feature="$feature"
+                       featuredir=$(find_feature_dir $feature)
+                       if [ -e $featuredir/included.dep ];then
+                               print_feature="$print_feature :($(find_feature_dependency $feature $feature))"
+                       fi;
+                       echo "       $print_feature"
                done
        done
        echo >&2
@@ -211,6 +216,7 @@ function execute_setup() {
        return $rc
 }
 
+
 # process all fragments
 FRAGMENTS_BBLAYERS=""
 FRAGMENTS_LOCALCONF=""
@@ -241,6 +247,31 @@ function process_fragments() {
        done
 }
 
+function containsFeature () {
+  for feature in $1; do
+    [[ "$feature" == "$2" ]] && return 1;
+  done;
+  return 0;
+}
+
+function find_feature_dependency() {
+       res_dep_features=""
+       featuredir=$(find_feature_dir $1)
+       full_feature=$2;
+       if [ -e $featuredir/included.dep ]; then
+               dep_features="$(cat $featuredir/included.dep)"
+               for dep_feature in $dep_features; do
+                       full_feature="$full_feature $res_dep_features"
+                       res_dep_features="$res_dep_features $dep_feature"
+                       if  containsFeature $dep_feature $full_feature ; then
+                               res_dep_features="$res_dep_features $(find_feature_dependency $dep_feature $full_feature)"
+                       fi;
+               done;
+       fi;
+       echo "$res_dep_features";
+       return 0;
+}
+
 GLOBAL_ARGS=( "$@" )
 debug "Parsing arguments: $@"
 TEMP=$(getopt -o m:b:s:fvdh --long machine:,builddir:,script:,force,verbose,debug,help -n $SCRIPT -- "$@")
@@ -288,13 +319,13 @@ find_machine_dir $MACHINE >/dev/null || error "Machine '$MACHINE' not found in [
 debug "validating features list"
 validate_features
 
-if $(echo "$FEATURES" | grep -q 'agl-all-features' 2>&1 ) ; then
-    featuredir=$(find_feature_dir agl-all-features)
-    tmpfeatures="$FEATURES $(cat $featuredir/included.inc)"
-    tmpfeatures_uniq="$(echo $tmpfeatures | sed -e 's/agl-all-features//g' -e 's/  / /g' | sort -u )"
-    export FEATURES=$tmpfeatures_uniq
-    echo "Features used: $FEATURES"
-fi
+TMP_FEATURES="";
+for FEATURE in $FEATURES;do
+    TMP_FEATURES="$TMP_FEATURES $FEATURE"
+    TMP_FEATURES="$TMP_FEATURES $(find_feature_dependency $FEATURE $TMP_FEATURES)"
+done
+FEATURES=$TMP_FEATURES
+echo "Features used: $FEATURES"
 
 # validate the features
 for f in $FEATURES; do
diff --git a/templates/feature/agl-all-features/included.dep b/templates/feature/agl-all-features/included.dep
new file mode 100644 (file)
index 0000000..1ed6763
--- /dev/null
@@ -0,0 +1 @@
+agl-demo agl-netboot agl-sota
diff --git a/templates/feature/agl-all-features/included.inc b/templates/feature/agl-all-features/included.inc
deleted file mode 100644 (file)
index 4d528e4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-agl-demo agl-devel agl-netboot agl-sota agl-appfw-smack
\ No newline at end of file