Re: git-version-gen w/o git

Eric Blake <[email protected]>
Newsgroups gmane.comp.gnu.libtool.patches,gmane.comp.lib.gnulib.bugs
Organization Red Hat
Message-ID <[email protected]>
[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   [email protected]    +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc (application/pgp-signature, 617 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Public key at http://people.redhat.com/eblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://www.enigmail.net/

iQEcBAEBCAAGBQJQf/3OAAoJEKeha0olJ0Nq4vIH/irHx0iYbcR8wEEz3L3v+5Ef
cBL0XJXvU+Z6ruUWRfjpcz557is+wkkMjDq4zS/D547bOzdN4ntyY36ChljUCuf/
bjHy2xPOELBhudKXJjMSraKAg5l0Dk3wkHRus6uvHvE1EVabM3YS9CSENVSi3KyE
TmmUazr4GZeIIf7W/NeGtwWxY4ujvoEk6PWKQ3Rac9YITKwoAQnZ9Sj7WHMxexX1
ESFxwSg50VZ+F/FECCX4wXvXXptyo+wDIlYHdSKK3IKOGq9Z2xXOkwSMMe9DfmNG
yCG/P6u/kTkoMfwyzzQOIhrPGyYXhGWBRU8kDbu9jpldDrTOivkhDmNinGr4Udw=
=/jb/
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.