bug-gnulib
[Top][All Lists]
Advanced

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

Re: git-version-gen w/o git


From: Eric Blake
Subject: Re: git-version-gen w/o git
Date: Thu, 18 Oct 2012 07:02:05 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121009 Thunderbird/16.0

[adding-gnulib]

On 10/18/2012 06:50 AM, Peter Rosin wrote:
> Hi!
> 
> I used to use a libtool git checkout from a platform that lacks
> git [MSYS], but that broke at some point. I would like something
> like the below to unbreak my work flow.
> 
> Please?
> 
> Cheers,
> Peter
> 
> diff --git a/Makefile.am b/Makefile.am
> index 176325c..3bcb419 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -46,7 +46,7 @@ EXTRA_LTLIBRARIES   =
>  # Using `cd' in backquotes may print the directory name, use this instead:
>  lt__cd               = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
>  
> -git_version_gen = '$(SHELL)' '$(aux_dir)/git-version-gen' '.tarball-version'
> +git_version_gen = '$(SHELL)' '$(aux_dir)/git-version-gen' '--fallback' 
> '$(VERSION)' '.tarball-version'

I'm not sure that makes sense - git-version-gen is ALREADY supposed to
use the contents of .tarball-version as the fallback version.

>  rebuild = rebuild=:; revision=`$(lt__cd) $(srcdir) && $(git_version_gen) | 
> sed 's|-.*$$||g'`
>  
>  
> @@ -128,8 +128,10 @@ $(ltversion_m4): $(ltversion_in) $(dotversion)
>       done; \
>       if $$rebuild; then \
>         rm -f '$@'; \
> -       if test -f '$(srcdir)/.serial'; then \
> -         serial=`cat '$(srcdir)/.serial'`; \
> +       if test -d '$(srcdir)/.git' && git --version >& /dev/null; then \
> +         $(git_commit_count) > '$(srcdir)/.serial'; \
> +       fi; \
> +       serial=`cat '$(srcdir)/.serial'`; \

However, something like this would be useful in libtool.

>         else \
>           serial=`$(git_commit_count)`; \
>         fi; \
> 
> 
> 
> And then some support for that in gnulib:
> 
> --- gnulib/build-aux/git-version-gen.orig     2012-10-02 17:10:58.935840500 
> +0200
> +++ gnulib/build-aux/git-version-gen  2012-10-18 14:41:57.458460000 +0200
> @@ -86,6 +86,7 @@
>  Options:
>  
>     --prefix           prefix of git tags (default 'v')
> +   --fallback         fallback version to use if \"git --version\" fails
>  
>     --help             display this help and exit
>     --version          output version information and exit
> @@ -93,12 +94,14 @@
>  Running without arguments will suffice in most cases."
>  
>  prefix=v
> +fallback=
>  
>  while test $# -gt 0; do
>    case $1 in
>      --help) echo "$usage"; exit 0;;
>      --version) echo "$version"; exit 0;;
>      --prefix) shift; prefix="$1";;
> +    --fallback) shift; fallback="$1";;
>      -*)
>        echo "$0: Unknown option '$1'." >&2
>        echo "$0: Try '--help' for more information." >&2
> @@ -184,8 +187,10 @@
>      # Remove the "g" in git describe's output string, to save a byte.
>      v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`;
>      v_from_git=1
> -else
> +elif test -z "$fallback" || git --version >& /dev/null; then
>      v=UNKNOWN
> +else
> +    v=$fallback

Again, I'm not sure if $fallback makes sense, since the .tarball-version
file is already supposed to provide that.

>  fi
>  
>  v=`echo "$v" |sed "s/^$prefix//"`
> --- gnulib/top/maint.mk.orig  2012-10-02 17:10:43.846614700 +0200
> +++ gnulib/top/maint.mk       2012-10-18 14:41:53.433652900 +0200
> @@ -1327,7 +1327,7 @@
>  
>  .PHONY: no-submodule-changes
>  no-submodule-changes:
> -     $(AM_V_GEN)if test -d $(srcdir)/.git; then                      \
> +     $(AM_V_GEN)if test -d $(srcdir)/.git && git --version >& /dev/null; 
> then \
>         diff=$$(cd $(srcdir) && git submodule -q foreach              \

However, this change probably makes sense in gnulib.

>                 git diff-index --name-only HEAD)                      \
>           || exit 1;                                                  \
> @@ -1345,7 +1345,7 @@
>  # cannot be built from a fresh clone.
>  .PHONY: public-submodule-commit
>  public-submodule-commit:
> -     $(AM_V_GEN)if test -d $(srcdir)/.git; then                      \
> +     $(AM_V_GEN)if test -d $(srcdir)/.git && git --version >& /dev/null; 
> then \

As does this (although wrapping both changes to avoid long lines would
be preferable).

>         cd $(srcdir) &&                                               \
>         git submodule --quiet foreach test '$$(git rev-parse $$sha1)' \
>             = '$$(git merge-base origin $$sha1)'                      \
> 
> 
> 

-- 
Eric Blake   address@hidden    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]