diff options
-rw-r--r-- | config/global/build-behave.in | 74 | ||||
-rw-r--r-- | scripts/crosstool-NG.sh.in | 14 |
2 files changed, 77 insertions, 11 deletions
diff --git a/config/global/build-behave.in b/config/global/build-behave.in index 7f8a854..9ee8316 100644 --- a/config/global/build-behave.in +++ b/config/global/build-behave.in @@ -44,16 +44,74 @@ config USE_PIPES Use gcc's option -pipe to use pipes rather than temp files when building the toolchain. +choice + bool + prompt "Shell to use as CONFIG_SHELL" + default CONFIG_SHELL_SYSTEM + +config CONFIG_SHELL_SH + bool + prompt "sh (the system shell)" + help + Use 'sh' as CONFIG_SHELL. + + ./configure scripts and Makefiles make intensive use of calling + sub-shells. This is usually done by calling /bin/sh. /bin/sh ought + to be an at-least-POSIX-conformant shell (that is, able to interpret + POSIX shell scripts). + + On many (most?) systems, /bin/sh is a symlink to bash. On some other + systems (eg. Ubuntu, latest Debian), /bin/sh points to dash (or ash). + bash is a full-featured shell, with many extension to POSIX, but is + quite slow (see ection BUGS in the bash man page), while dash is + faster, with very few extensions to POSIX. On the other hand, some + ./configure scripts, although written to use /bin/sh, may really + require to be run by bash. + + The default is to use your system's /bin/sh shell. If you want to + run faster, you can select to use dash. If you have problems with + either the system shell or when using dash, then you can force to + use bash. + config CONFIG_SHELL_ASH bool - prompt "Use 'ash' as CONFIG_SHELL" - default n + prompt "ash (READ HELP!)" help - Use /bin/ash as the shell used by ./configure scripts. + Use 'ash' as CONFIG_SHELL. - ./configure scripts make intensive use of calling a sub-shell, and the - traditional bash is slow, whereas ash is faster. + See help for CONFIG_SHELL_SH, above, for more explanations. - Saying 'y' here should be safe enough, but some components may not - accept using a shell other than bash (this is most probably true for - old versions). If you have trouble, say 'n' here and see if it fixes it. + NOTE: It is advised that you do NOT use ash as CONFIG_SHELL, as some + components are broken. If you decide to use ash, and the build breaks, + don't come moaning and set the CONFIG_SHELL to bash, below. + +config CONFIG_SHELL_BASH + bool + prompt "bash" + help + Use 'bash' as CONFIG_SHELL. + + See help for CONFIG_SHELL_SH, above, for more explanations. + +config CONFIG_SHELL_CUSTOM + bool + prompt "custom shell" + help + Enter full path to the custom shell below. + + See help for CONFIG_SHELL_SH, above, for more explanations. + +config CONFIG_SHELL_CUSTOM_PATH + string + prompt "Path to custom shell" + depends on CONFIG_SHELL_CUSTOM + default "/bin/sh" + +endchoice + +config CONFIG_SHELL + string + default "sh" if CONFIG_SHELL_SH + default "ash" if CONFIG_SHELL_ASH + default "bash" if CONFIG_SHELL_BASH + default "custom" if CONFIG_SHELL_CUSTOM diff --git a/scripts/crosstool-NG.sh.in b/scripts/crosstool-NG.sh.in index 6382c0a..ba30c4f 100644 --- a/scripts/crosstool-NG.sh.in +++ b/scripts/crosstool-NG.sh.in @@ -63,8 +63,15 @@ CT_DoExecLog DEBUG rm -f "${CT_WORK_DIR}/foo" # What's our shell? # Will be plain /bin/sh on most systems, except if we have /bin/ash and we # _explictly_ required using it -CT_SHELL="/bin/sh" -[ "${CT_CONFIG_SHELL_ASH}" = "y" -a -x "/bin/ash" ] && CT_SHELL="/bin/ash" +case "${CT_CONFIG_SHELL}" in + sh) CT_SHELL="/bin/sh";; + ash) CT_SHELL="/bin/ash";; + bash) CT_SHELL="${BASH}";; + custom) CT_SHELL="${CT_CONFIG_SHELL_CUSTOM_PATH}";; +esac + +# Check the user is using an existing SHELL to be used by ./configure and Makefiles +CT_TestOrAbort "The CONFIG_SHELL '${CT_CONFIG_SHELL}' (${CT_SHELL}) is not valid" -f "${CT_SHELL}" -a -x "${CT_SHELL}" # Create the bin-overide early # Contains symlinks to the tools found by ./configure @@ -452,7 +459,8 @@ if [ -z "${CT_RESTART}" ]; then # Set the shell to be used by ./configure scripts and by Makefiles (those # that support it!). - export CONFIG_SHELL="${CT_SHELL}" + export CONFIG_SHELL="${CT_SHELL}" # for ./configure + export SHELL="${CT_SHELL}" # for Makefiles # And help make go faster PARALLELMFLAGS= |