From b86899a341a756088e065edbf9c63c6187ff3fb6 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Mon, 16 Jan 2012 23:36:42 +0100 Subject: scripts: fix tools override The tools found by the new autostuff configure can contain arguments, for example: grep -E This needs separating the paths set for the Makfile from the paths set for the scripts. Signed-off-by: "Yann E. MORIN" diff --git a/.hgignore b/.hgignore index 3bd1884..76c2b48 100644 --- a/.hgignore +++ b/.hgignore @@ -10,6 +10,7 @@ Makefile docs/*ct-ng*.1 docs/*ct-ng*.1.gz paths.mk +paths.sh scripts/crosstool-NG.sh scripts/saveSample.sh scripts/showTuple.sh diff --git a/Makefile.in b/Makefile.in index 66e0773..5663c83 100644 --- a/Makefile.in +++ b/Makefile.in @@ -151,8 +151,9 @@ build-bin: $(PROG_NAME) \ scripts/showTuple.sh @chmod 755 $^ -build-lib: paths.mk \ - config/configure.in +build-lib: config/configure.in \ + paths.mk \ + paths.sh build-lib-kconfig: @$(MAKE) -C kconfig @@ -189,24 +190,36 @@ $(PROG_NAME): ct-ng.in Makefile $(call sed_it) # We create a script fragment that is parseable from inside a Makefile, -# but also from inside a shell script, hence the reason why we don't -# use := to set variables, although that will incur a (very small) -# penalty from the Makefile that includes it (due to re-evaluation at -# each call). +# and one from inside a shell script paths.mk: FORCE @echo " GEN '$@'" - @(echo "export install=$(install)"; \ - echo "export bash=$(bash)"; \ - echo "export grep=$(grep)"; \ - echo "export make=$(make)"; \ - echo "export sed=$(sed)"; \ - echo "export libtool=$(libtool)"; \ - echo "export libtoolize=$(libtoolize)"; \ - echo "export objcopy=$(objcopy)"; \ - echo "export objdump=$(objdump)"; \ - echo "export readelf=$(readelf)"; \ - echo "export patch=$(patch)"; \ - ) >paths.mk + @(echo 'export install=$(install)'; \ + echo 'export bash=$(bash)'; \ + echo 'export grep=$(grep)'; \ + echo 'export make=$(make)'; \ + echo 'export sed=$(sed)'; \ + echo 'export libtool=$(libtool)'; \ + echo 'export libtoolize=$(libtoolize)'; \ + echo 'export objcopy=$(objcopy)'; \ + echo 'export objdump=$(objdump)'; \ + echo 'export readelf=$(readelf)'; \ + echo 'export patch=$(patch)'; \ + ) >$@ + +paths.sh: FORCE + @echo " GEN '$@'" + @(echo 'export install="$(install)"'; \ + echo 'export bash="$(bash)"'; \ + echo 'export grep="$(grep)"'; \ + echo 'export make="$(make)"'; \ + echo 'export sed="$(sed)"'; \ + echo 'export libtool="$(libtool)"'; \ + echo 'export libtoolize="$(libtoolize)"'; \ + echo 'export objcopy="$(objcopy)"'; \ + echo 'export objdump="$(objdump)"'; \ + echo 'export readelf="$(readelf)"'; \ + echo 'export patch="$(patch)"'; \ + ) >$@ config/configure.in: FORCE @echo " GEN '$@'" @@ -239,8 +252,8 @@ clean-bin: @rm -f scripts/showTuple.sh clean-lib: - @echo " RM 'paths.mk'" - @rm -f paths.mk + @echo " RM 'paths'" + @rm -f paths.mk paths.sh @echo " RM 'config/configure.in'" @rm -f config/configure.in @@ -304,8 +317,8 @@ install-lib-scripts: install-lib-scripts-copy install-lib-main: $(DESTDIR)$(libdir) $(patsubst %,install-lib-%,$(LIB_SUB_DIR)) @echo " INST 'steps.mk'" @$(install) -m 644 steps.mk "$(DESTDIR)$(libdir)/steps.mk" - @echo " INST 'paths.mk'" - @$(install) -m 644 paths.mk "$(DESTDIR)$(libdir)/paths.mk" + @echo " INST 'paths'" + @$(install) -m 644 paths.mk paths.sh "$(DESTDIR)$(libdir)" # Samples need a little love: # - change every occurrence of CT_TOP_DIR to CT_LIB_DIR diff --git a/scripts/addToolVersion.sh b/scripts/addToolVersion.sh index c394d24..b82d485 100755 --- a/scripts/addToolVersion.sh +++ b/scripts/addToolVersion.sh @@ -7,10 +7,10 @@ myname="$0" # Parse the tools' paths configuration # It is expected that this script is only to be run from the # source directory of crosstool-NG, so it is trivial to find -# paths.mk (we can't use ". paths.mk", as POSIX states that +# paths.sh (we can't use ". paths.sh", as POSIX states that # $PATH should be searched for, and $PATH most probably doe # not include "."), hence the "./". -. "./paths.mk" +. "./paths.sh" doHelp() { cat <<-EOF diff --git a/scripts/crosstool-NG.sh.in b/scripts/crosstool-NG.sh.in index 057559f..2c52047 100644 --- a/scripts/crosstool-NG.sh.in +++ b/scripts/crosstool-NG.sh.in @@ -78,11 +78,13 @@ CT_TestOrAbort "The CONFIG_SHELL '${CT_CONFIG_SHELL}' is not valid" -f "${CT_CON CT_TOOLS_OVERIDE_DIR="${CT_WORK_DIR}/tools" CT_DoLog DEBUG "Creating bin-override for tools in '${CT_TOOLS_OVERIDE_DIR}'" CT_DoExecLog DEBUG mkdir -p "${CT_TOOLS_OVERIDE_DIR}/bin" -cat "${CT_LIB_DIR}/paths.mk" |while read trash line; do +cat "${CT_LIB_DIR}/paths.sh" |while read trash line; do tool="${line%%=*}" path="${line#*=}" CT_DoLog DEBUG "Creating script-override for '${tool}' -> '${path}'" - printf "#${BANG}${CT_CONFIG_SHELL}\nexec '${path}' \"\${@}\"\n" >"${CT_TOOLS_OVERIDE_DIR}/bin/${tool}" + # Note: we need to supress the " in the path because + # there can be arguments in there (thanks autostuff...) + printf "#${BANG}${CT_CONFIG_SHELL}\nexec ${path//\"/} \"\${@}\"\n" >"${CT_TOOLS_OVERIDE_DIR}/bin/${tool}" CT_DoExecLog ALL chmod 700 "${CT_TOOLS_OVERIDE_DIR}/bin/${tool}" done export PATH="${CT_TOOLS_OVERIDE_DIR}/bin:${PATH}" diff --git a/scripts/patch-renumber.sh b/scripts/patch-renumber.sh index 3604df5..c56473b 100755 --- a/scripts/patch-renumber.sh +++ b/scripts/patch-renumber.sh @@ -7,10 +7,10 @@ myname="$0" # Parse the tools' paths configuration # It is expected that this script is only to be run from the # source directory of crosstool-NG, so it is trivial to find -# paths.mk (we can't use ". paths.mk", as POSIX states that +# paths.sh (we can't use ". paths.sh", as POSIX states that # $PATH should be searched for, and $PATH most probably doe # not include "."), hence the "./". -. "./paths.mk" +. "./paths.sh" doUsage() { cat <<_EOF_ diff --git a/scripts/saveSample.sh.in b/scripts/saveSample.sh.in index de3ef31..8967d54 100644 --- a/scripts/saveSample.sh.in +++ b/scripts/saveSample.sh.in @@ -9,7 +9,7 @@ # - info about who reported the sample # Parse the tools' paths configuration -. "${CT_LIB_DIR}/paths.mk" +. "${CT_LIB_DIR}/paths.sh" # We'll need the stdout later, save it exec 7>&1 diff --git a/scripts/showSamples.sh b/scripts/showSamples.sh index 777eb96..774794b 100755 --- a/scripts/showSamples.sh +++ b/scripts/showSamples.sh @@ -5,7 +5,7 @@ # the versions of the main tools # Use tools discovered by ./configure -. "${CT_LIB_DIR}/paths.mk" +. "${CT_LIB_DIR}/paths.sh" [ "$1" = "-v" ] && opt="$1" && shift [ "$1" = "-w" ] && opt="$1" && shift diff --git a/scripts/showTuple.sh.in b/scripts/showTuple.sh.in index 9753bb5..074e550 100644 --- a/scripts/showTuple.sh.in +++ b/scripts/showTuple.sh.in @@ -4,7 +4,7 @@ # - the .config file # Parse the tools' paths configuration -. "${CT_LIB_DIR}/paths.mk" +. "${CT_LIB_DIR}/paths.sh" # We'll need the stdout later, save it exec 7>&1 -- cgit v0.10.2-6-g49f6