done
}
+function validate_builddir() {
+ if [[ "$BUILDDIR" =~ [[:space:]] ]]; then
+ error "Build dir '$BUILDDIR' shouldn't contain any space"
+ fi
+ debug "Build dir is valid"
+}
+
function validate_machines() {
list_all_machines | sort | uniq -c | while read cnt machine; do
[[ $cnt == 1 ]] && continue
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
function execute_setup() {
script=$1
debug "Executing script $script"
- opts=
+ opts="-e"
[[ $DEBUG == 1 ]] && opts="$opts -x"
pushd $BUILDDIR &>/dev/null
$BASH $opts $script \
return $rc
}
+
# process all fragments
FRAGMENTS_BBLAYERS=""
FRAGMENTS_LOCALCONF=""
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 -- "$@")
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
+# remove duplicate features if any
+FEATURES=$(for x in $TMP_FEATURES; do echo $x; done | sort -u | awk '{printf("%s ",$1);}')
# validate the features
for f in $FEATURES; do
# validate build dir
debug "validating builddir $BUILDDIR"
-BUILDDIR=$(mkdir -p $BUILDDIR && cd $BUILDDIR && pwd -P)
+BUILDDIR=$(mkdir -p "$BUILDDIR" && cd "$BUILDDIR" && pwd -P)
+validate_builddir
###########################################################################################
function dump_log() {