From 955f5bc0b8a879ba5d1b9a65a31cc235c9fd9be8 Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Tue, 13 Dec 2016 18:07:21 -0800 Subject: Get rid of .config.2. Now handled by CT_LoadConfig. Signed-off-by: Alexey Neyman diff --git a/.gitignore b/.gitignore index 1a510d7..98480b0 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,6 @@ paths.* !paths.in config.gen/ .config -.config.2 # Temporaries .*.swp diff --git a/ct-ng.in b/ct-ng.in index bc63bc8..d856828 100644 --- a/ct-ng.in +++ b/ct-ng.in @@ -136,19 +136,14 @@ help-env:: @echo "or configure an existing sample." @false -.config.2: .config - $(SILENT)$(sed) -r -e 's/^([^=]+_ARRAY)="(.*)"$$/\1=( \2 )/;' \ - -e '/^[^=]+_ARRAY=/s/\\(.)/\1/g;' \ - $< >$@ - -show-tuple: .config.2 +show-tuple: .config $(SILENT)$(bash) $(CT_LIB_DIR)/scripts/showConfig.sh '$${CT_TARGET}' # Actual build -source: .config.2 +source: .config $(SILENT)CT_SOURCE=y $(CT_LIB_DIR)/scripts/crosstool-NG.sh -build: .config.2 +build: .config $(SILENT)$(CT_LIB_DIR)/scripts/crosstool-NG.sh build.%: diff --git a/scripts/crosstool-NG.sh.in b/scripts/crosstool-NG.sh.in index 68716f8..303e5fc 100644 --- a/scripts/crosstool-NG.sh.in +++ b/scripts/crosstool-NG.sh.in @@ -126,8 +126,6 @@ CT_STAR_DATE_HUMAN=$(CT_DoDate +%Y%m%d.%H%M%S) # Log real begining of build, now CT_DoLog INFO "Build started ${CT_STAR_DATE_HUMAN}" -# We really need to extract from .config and not .config.2, as we -# do want the kconfig's values, not our mangled config with arrays. CT_DoStep DEBUG "Dumping user-supplied crosstool-NG configuration" CT_DoExecLog DEBUG ${grep} -E '^(# )?CT_' .config CT_EndStep @@ -571,8 +569,6 @@ if [ -z "${CT_RESTART}" ]; then fi rm -f "${testc}" - # We need to save the real .config with kconfig's value, - # not our mangled .config.2 with arrays. CT_DoLog EXTRA "Installing user-supplied crosstool-NG configuration" CT_DoExecLog ALL mkdir -p "${CT_PREFIX_DIR}/bin" CT_DoExecLog DEBUG ${install} -m 0755 "${CT_LIB_DIR}/scripts/toolchain-config.in" "${CT_PREFIX_DIR}/bin/${CT_TARGET}-ct-ng.config" diff --git a/scripts/functions b/scripts/functions index baaf51e..9aa4fc7 100644 --- a/scripts/functions +++ b/scripts/functions @@ -5,12 +5,14 @@ # Licensed under the GPL v2. See COPYING in the root of this package CT_LoadConfig() { + local o + # Parse the configuration file # It has some info about the logging facility, so include it early # It also sets KERNEL/ARCH/... for file inclusion below. Does not handle - # recursive definitions yet. - CT_TestOrAbort "Configuration file not found. Please create one." -r .config.2 - . .config.2 + # recursive definitions yet. We don't need arrays at this point. + CT_TestOrAbort "Configuration file not found. Please create one." -r .config + . .config # Include sub-scripts instead of calling them: that way, we do not have to # export any variable, nor re-parse the configuration and functions files. @@ -31,21 +33,25 @@ CT_LoadConfig() { # Kludge: If any of the configured options needs CT_TARGET, # then rescan the options file now. This also handles recursive variables; # but we don't want to loop forever if there's a circular reference. - touch ${CT_TOP_DIR}/.config.out.1 + oldvals="" try=0 while [ "$try" -le 10 ]; do - . .config.2 - set | ${grep} -E '^CT_' > ${CT_TOP_DIR}/.config.out.2 - if cmp -s ${CT_TOP_DIR}/.config.out.1 ${CT_TOP_DIR}/.config.out.2; then + . .config + vals=`set | ${grep} -E '^CT_'` + if [ "$oldvals" = "$vals" ]; then break fi - mv ${CT_TOP_DIR}/.config.out.2 ${CT_TOP_DIR}/.config.out.1 + oldvals="$vals" try=$[ try + 1 ] done if [ "$try" -gt 10 ]; then CT_Abort "Variables in .config recurse too deep." fi - rm -f ${CT_TOP_DIR}/.config.out.[12] + # Double eval: first eval substitutes option name, second eval unescapes quotes + # and whitespace. + for o in `set | sed -rn 's/^(CT_[A-Za-z0-9_]*_ARRAY)=.*/\1/p'`; do + eval "eval $o=(\"\$$o\")" + done } # Prepare the fault handler diff --git a/scripts/saveSample.sh.in b/scripts/saveSample.sh.in index 701c660..4fa1c87 100644 --- a/scripts/saveSample.sh.in +++ b/scripts/saveSample.sh.in @@ -40,9 +40,7 @@ esac samp_dir="samples/${samp_name}" mkdir -p "${samp_dir}" -# Tweak the .config file -# We need to be based on the real .config with kconfig's values, -# not our mangled .config.2 with shell arrays +# Tweak the .config file. cp .config .defconfig "${sed}" -r -e 's|^(CT_PREFIX_DIR)=.*|\1="${HOME}/x-tools/${CT_TARGET}"|;' \ -e 's|^# CT_LOG_TO_FILE is not set$|CT_LOG_TO_FILE=y|;' \ -- cgit v0.10.2-6-g49f6