diff mbox

configure: Don't exit until all errors have been detected

Message ID 1431088821-27609-1-git-send-email-quintela@redhat.com
State New
Headers show

Commit Message

Juan Quintela May 8, 2015, 12:40 p.m. UTC
Currently, it exits until each error, so if you are installing on a new
machine, it requires lots of configure runs until you get all the
dependencies that you need.  With this change, it shows all the errors
with the selected configured options.

Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 configure | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

Comments

Peter Maydell May 21, 2015, 11:53 a.m. UTC | #1
On 8 May 2015 at 13:40, Juan Quintela <quintela@redhat.com> wrote:
> Currently, it exits until each error, so if you are installing on a new
> machine, it requires lots of configure runs until you get all the
> dependencies that you need.  With this change, it shows all the errors
> with the selected configured options.
>
> Signed-off-by: Juan Quintela <quintela@redhat.com>
> ---
>  configure | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/configure b/configure
> index b18aa9e..1d7966b 100755
> --- a/configure
> +++ b/configure
> @@ -38,6 +38,8 @@ printf " '%s'" "$0" "$@" >> config.log
>  echo >> config.log
>  echo "#" >> config.log
>
> +has_errors="no"
> +
>  error_exit() {
>      echo
>      echo "ERROR: $1"
> @@ -46,7 +48,7 @@ error_exit() {
>          shift
>      done
>      echo
> -    exit 1
> +    has_errors="yes"
>  }

This will cause problems in some cases which assume that
they're protected by an error_exit, or which at least
will cause a lot of spurious errors later on:

 * python version check assumes python exists
 * you really want to bail out early if the C compiler
   test fails
 * not having pkg-config is going to cause a lot of
   follow-on errors

Also it makes the function name pretty misleading.
I would suggest changing this function to just error,
and having error_exit for the few cases where we really
do want to bail out early.

> +
> +if [ "x$has_errors" == "xyes" ]; then

The POSIX shell string equality operator is "=".
"==" is a bashism and won't work on other shells.
Also, you don't need the 'x' here, so
    if [ "$has_errors" = "yes" ]; then
will do.

> +    echo "There are errors with this configuration.  Exiting."
> +    exit 1;
> +fi

As per discussion on IRC, this should go further up.

thanks
-- PMM
diff mbox

Patch

diff --git a/configure b/configure
index b18aa9e..1d7966b 100755
--- a/configure
+++ b/configure
@@ -38,6 +38,8 @@  printf " '%s'" "$0" "$@" >> config.log
 echo >> config.log
 echo "#" >> config.log

+has_errors="no"
+
 error_exit() {
     echo
     echo "ERROR: $1"
@@ -46,7 +48,7 @@  error_exit() {
         shift
     done
     echo
-    exit 1
+    has_errors="yes"
 }

 do_compiler() {
@@ -5254,6 +5256,13 @@  case "$target_name" in
     error_exit "Unsupported target CPU"
   ;;
 esac
+
+
+if [ "x$has_errors" == "xyes" ]; then
+    echo "There are errors with this configuration.  Exiting."
+    exit 1;
+fi
+
 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
 if [ "$TARGET_BASE_ARCH" = "" ]; then
   TARGET_BASE_ARCH=$TARGET_ARCH