meta-rcar-gen3: gles: support for AGL toolchain
[AGL/meta-agl.git] / scripts / .aglsetup_genconfig.bash
index 57a31e2..31520a7 100755 (executable)
@@ -5,6 +5,7 @@
 # The MIT License (MIT)
 #
 # Copyright (c) 2016 Stéphane Desneux <sdx@iot.bzh>
+#           (c) 2016 Jan-Simon Möller <jsmoeller@linuxfoundation.org>
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to deal
@@ -122,6 +123,24 @@ function find_feature_dir() {
        return 1
 }
 
+function process-feature-shortcuts() {
+    TOCHECK=$1
+    debug "processing feature shortcut $TOCHECK"
+    if $(echo "$FEATURES" | grep -q "$TOCHECK" 2>&1 ) ; then
+       featuredir=$(find_feature_dir $TOCHECK)
+       if test -d $featuredir; then
+           tmpfeatures="$FEATURES $(cat $featuredir/included.inc)"
+           tmpfeatures_uniq=$(echo $tmpfeatures | sed -e "s/$TOCHECK//g" -e 's/  / /g' | tr "[:blank:]" "\n" | sort -u )
+           export FEATURES=$tmpfeatures_uniq
+           debug "Features used: $FEATURES"
+       else
+           error "No feature directory with this name: $TOCHECK"
+           exit 1
+       fi
+    fi
+}
+
+
 function usage() {
     cat <<EOF >&2
 Usage: . $SCRIPT [options] [feature [feature [... ]]]
@@ -171,8 +190,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
@@ -210,6 +234,7 @@ function execute_setup() {
        return $rc
 }
 
+
 # process all fragments
 FRAGMENTS_BBLAYERS=""
 FRAGMENTS_LOCALCONF=""
@@ -240,6 +265,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 -- "$@")
@@ -274,6 +324,9 @@ verbose "Command line arguments: ${GLOBAL_ARGS[@]}"
 
 # the remaining args are the features
 FEATURES="$@"
+process-feature-shortcuts agl-all-features
+process-feature-shortcuts agl-ci-change-features
+process-feature-shortcuts agl-ci-snapshot-features
 
 # validate the machine list
 debug "validating machines list"
@@ -287,6 +340,14 @@ find_machine_dir $MACHINE >/dev/null || error "Machine '$MACHINE' not found in [
 debug "validating features list"
 validate_features
 
+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
        debug "validating feature $f"
@@ -373,17 +434,17 @@ EOF
        append_fragment $BUILDDIR/conf/setup.sh "" "echo '--- end of setup script'"
 
        infon "   Executing setup script ... "
-       execute_setup $BUILDDIR/conf/setup.sh 2>&1 | tee $BUILDDIR/conf/setup.log \
-               && { 
-                       info "OK"
-                       [[ $VERBOSE == 1 ]] && dump_log $BUILDDIR/conf/setup.log
-                       rm $BUILDDIR/conf/setup.sh
-               } \
-               || { 
-                       info "FAIL: please check $BUILDDIR/conf/setup.log"
-                       dump_log $BUILDDIR/conf/setup.log
-                       return 1
-               }
+       execute_setup $BUILDDIR/conf/setup.sh 2>&1 | tee $BUILDDIR/conf/setup.log
+       [[ ${PIPESTATUS[0]} == 0 ]] && {
+               info "OK"
+               [[ $VERBOSE == 1 ]] && dump_log $BUILDDIR/conf/setup.log
+               rm $BUILDDIR/conf/setup.sh
+       } \
+       || {
+               info "FAIL: please check $BUILDDIR/conf/setup.log"
+               dump_log $BUILDDIR/conf/setup.log
+               return 1
+       }
        # NOTE: the setup.sh script is removed if execution succeeded (only the log remains)
 }