# 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
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 [... ]]]
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
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 -- "$@")
# 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"
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"
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)
}