diff --git a/configure b/configure index 84085f0..e818304 100755 --- a/configure +++ b/configure @@ -19,7 +19,7 @@ SCRIPTPATH=`realpath $SCRIPTPATH` CONFIG_FILES=`ls $SCRIPTPATH/configure.d/*.conf | sort` FILES_COUNT=`echo $CONFIG_FILES | wc -w` -CONFIG_FILE="config.out" +CONFIG_FILE=$SCRIPTPATH/"config.out" generate_config() { rm -f ${CONFIG_FILE} @@ -27,47 +27,59 @@ generate_config() { declare -a pid_list progress=0 - # Compile each test module in backgorund + # Compile each test module in background echo "Preparing configuration" for file in $CONFIG_FILES; do progress=$((progress+1)) # $1 - Action to be performed # $2 - File with stored configuration # $3 - Name of called script (since script is running as subprocess - # it has to be passed explicitly - source $file "check" "${SCRIPTPATH}/${CONFIG_FILE}" "$file" & + # it has to be passed explicitly) + source $file "check" "$CONFIG_FILE" "$file" & pid_list+=($!) done # Wait for all compilation processes to finish - for i in "${pid_list[@]}"; do - wait $i &> /dev/null - done + wait - grep "X" ${SCRIPTPATH}/${CONFIG_FILE} &> /dev/null + grep "X" ${CONFIG_FILE} &> /dev/null if [ $? -eq 0 ] ; then echo "ERROR! Following steps failed while preparing config:" - grep "X" ${SCRIPTPATH}/${CONFIG_FILE} | cut -f1 -d ' ' + grep "X" ${CONFIG_FILE} | cut -f1 -d ' ' exit 1 fi } generate_header() { rm -f $SCRIPTPATH/modules/generated_defines.h - progress=0 - for file in $CONFIG_FILES; do - progress=$((progress+1)) - echo -ne "Configuring OpenCAS: $progress/$FILES_COUNT\033[0K\r" - CONF=$(cat ${CONFIG_FILE} | awk -v file=$(basename $file) '{ if ($1 == file) print $2 }') - /bin/bash $file "apply" "$CONF" "$file" + # Configs starting with '1_' have to be put as first in header + FIRST=$(echo $CONFIG_FILES | tr ' ' '\n' | grep '1_') + SECOND=$(echo $CONFIG_FILES | tr ' ' '\n' | grep '2_') + + echo "Configuring OpenCAS" + for file in $FIRST; do + CONF=$(cat ${CONFIG_FILE} | grep $(basename $file) | cut -d' ' -f2) + source $file "apply" "$CONF" "$file" & done - echo "" + + wait + + for file in $SECOND; do + CONF=$(cat ${CONFIG_FILE} | grep $(basename $file) | cut -d' ' -f2) + source $file "apply" "$CONF" "$file" & + done + + wait } if [ -z "$1" ]; then generate_config else - CONFIG_FILE="$1" + CONFIG_FILE=$(realpath $1) + if [ $? -ne 0 ] ; then + echo "Invaild path to config file!" + exit 1 + fi fi generate_header diff --git a/configure.d/conf_framework b/configure.d/conf_framework index d7be5e9..94b6495 100644 --- a/configure.d/conf_framework +++ b/configure.d/conf_framework @@ -9,7 +9,7 @@ SCRIPTPATH=`realpath $SCRIPTPATH` KERNEL_DIR="${KERNEL_DIR:-/lib/modules/$(uname -r)/build/}" KERNEL_VER="$(cd $KERNEL_DIR; make kernelversion)" NPROC=`nproc` -DEFINE_FILE=$SCRIPTPATH/../modules/generated_defines.h +DEFINE_FILE=$SCRIPTPATH/modules/generated_defines.h add_define() {