[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH] do not require two ./autogen.sh runs to permit "make"



On Tue, Mar 16, 2010 at 09:42:32PM +0100, Jim Meyering wrote:
> I tracked down the source of the two-autogen.sh-runs-required bug.
> Here's the fix:
> 
> >From 0583de2de2038d4f8875268391fd4994329d39bf Mon Sep 17 00:00:00 2001
> From: Jim Meyering <meyering redhat com>
> Date: Tue, 16 Mar 2010 21:08:31 +0100
> Subject: [PATCH] do not require two ./autogen.sh runs to permit "make"
> 
> * autogen.sh (bootstrap_hash): New function.
> Running bootstrap may update the gnulib SHA1, yet we were computing
> t=$(git submodule status ...) *prior* to running bootstrap, and
> then recording that sometimes-stale value in the stamp file upon
> a successful bootstrap run.  That would require two (lengthy!)
> bootstrap runs to update the stamp file.
> ---
>  autogen.sh |   21 ++++++++++++++-------
>  1 files changed, 14 insertions(+), 7 deletions(-)
> 
> diff --git a/autogen.sh b/autogen.sh
> index ff94678..b93cdba 100755
> --- a/autogen.sh
> +++ b/autogen.sh
> @@ -62,20 +62,27 @@ else
>      fi
>  fi
> 
> +# Compute the hash we'll use to determine whether rerunning bootstrap
> +# is required.  The first is just the SHA1 that selects a gnulib snapshot.
> +# The second ensures that whenever we change the set of gnulib modules used
> +# by this package, we rerun bootstrap to pull in the matching set of files.
> +bootstrap_hash()
> +{
> +    git submodule status | sed 's/^[ +-]//;s/ .*//'
> +    git hash-object bootstrap.conf
> +}
> +
>  # Ensure that whenever we pull in a gnulib update or otherwise change to a
>  # different version (i.e., when switching branches), we also rerun ./bootstrap.
>  curr_status=.git-module-status
> -t=$(git submodule status|sed 's/^[ +-]//;s/ .*//'; \
> -    git hash-object bootstrap.conf)
> +t=$(bootstrap_hash)
>  if test "$t" = "$(cat $curr_status 2>/dev/null)"; then
>      : # good, it's up to date, all we need is autoreconf
>      autoreconf -if
>  else
> -  echo running bootstrap...
> -  ./bootstrap && echo "$t" > $curr_status || {
> -    echo "Failed to bootstrap gnulib, please investigate."
> -    exit 1;
> -  }
> +    echo running bootstrap...
> +    ./bootstrap && bootstrap_hash > $curr_status \
> +      || { echo "Failed to bootstrap gnulib, please investigate."; exit 1; }
>  fi
> 
>  cd "$THEDIR"

ACK

Daniel
-- 
|: Red Hat, Engineering, London    -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org        -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]