diff mbox

[v3,2/2] Makefile: Derive "PKGVERSION" from "git describe" by default

Message ID b972e299-40d6-dff1-89ac-b984a79c75c2@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Paolo Bonzini June 1, 2016, 1:55 p.m. UTC
On 01/06/2016 13:13, Laszlo Ersek wrote:
> On 06/01/16 12:40, Gerd Hoffmann wrote:
>>   Hi,
>>
>>> +				git describe 2>/dev/null | tr -d '\n'; \
>>> +				if ! git diff-index --quiet HEAD &>/dev/null; then \
>>> +					printf -- '-dirty'; \
>>> +				fi \
>>
>> /me suggests "git describe --dirty --match 'v*'"
>>
>> Saves the extra effort to check for a dirty tree manually.
> 
> We couldn't convince ourselves that support for "--dirty" is ubiquitous;
> please see the sub-thread rooted at
> <http://thread.gmane.org/gmane.comp.emulators.qemu/414824/focus=414828>.
> 
>> Also greatly reduces the chance non-release tags are matched, so I don't
>> get results like "pull-vga-20160523-1-236-g9fd5eb7".
> 
> Since what version is "--match" supported? ;)

git's own version history says 1.5.5.

Another small point is that some people put the whole home directory in
git, so I would test for $(SRC_PATH)/.git instead of using "git
status".  And no-git is unnecessary if the git part is included in
parentheses.  This gives:



Looks good?

Thanks,

Paolo

Comments

Laszlo Ersek June 1, 2016, 3:30 p.m. UTC | #1
On 06/01/16 15:55, Paolo Bonzini wrote:
> 
> 
> On 01/06/2016 13:13, Laszlo Ersek wrote:
>> On 06/01/16 12:40, Gerd Hoffmann wrote:
>>>   Hi,
>>>
>>>> +				git describe 2>/dev/null | tr -d '\n'; \
>>>> +				if ! git diff-index --quiet HEAD &>/dev/null; then \
>>>> +					printf -- '-dirty'; \
>>>> +				fi \
>>>
>>> /me suggests "git describe --dirty --match 'v*'"
>>>
>>> Saves the extra effort to check for a dirty tree manually.
>>
>> We couldn't convince ourselves that support for "--dirty" is ubiquitous;
>> please see the sub-thread rooted at
>> <http://thread.gmane.org/gmane.comp.emulators.qemu/414824/focus=414828>.
>>
>>> Also greatly reduces the chance non-release tags are matched, so I don't
>>> get results like "pull-vga-20160523-1-236-g9fd5eb7".
>>
>> Since what version is "--match" supported? ;)
> 
> git's own version history says 1.5.5.
> 
> Another small point is that some people put the whole home directory in
> git, so I would test for $(SRC_PATH)/.git instead of using "git
> status".  And no-git is unnecessary if the git part is included in
> parentheses.  This gives:
> 
> diff --git a/Makefile b/Makefile
> index a4d7da0..412c2b8 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -173,16 +173,16 @@ qemu-version.h: FORCE
>  		if test -n "$(PKGVERSION)"; then \
>  			printf '"$(PKGVERSION)"\n'; \
>  		else \
> -			printf '" ('; \
> -			if ! git status &>/dev/null; then \
> -				printf "no-git"; \
> -			else \
> -				git describe 2>/dev/null | tr -d '\n'; \
> +			if test -d .git; then \
> +			        printf '" ('; \
> +				git describe --match 'v*' 2>/dev/null | tr -d '\n'; \
>  				if ! git diff-index --quiet HEAD &>/dev/null; then \
>  					printf -- '-dirty'; \
> -				fi \
> +				fi; \
> +			        printf ')"\n'; \
> +			else \
> +				printf '""\n'; \
>  			fi; \
> -			printf ')"\n'; \
>  		fi) > $@.tmp)
>  	$(call quiet-command, cmp --quiet $@ $@.tmp || mv $@.tmp $@)
>  
> 
> 
> Looks good?

It does to me, yes.

Thanks!
Laszlo
Fam Zheng June 2, 2016, 1:14 a.m. UTC | #2
On Wed, 06/01 15:55, Paolo Bonzini wrote:
> 
> 
> On 01/06/2016 13:13, Laszlo Ersek wrote:
> > On 06/01/16 12:40, Gerd Hoffmann wrote:
> >>   Hi,
> >>
> >>> +				git describe 2>/dev/null | tr -d '\n'; \
> >>> +				if ! git diff-index --quiet HEAD &>/dev/null; then \
> >>> +					printf -- '-dirty'; \
> >>> +				fi \
> >>
> >> /me suggests "git describe --dirty --match 'v*'"
> >>
> >> Saves the extra effort to check for a dirty tree manually.
> > 
> > We couldn't convince ourselves that support for "--dirty" is ubiquitous;
> > please see the sub-thread rooted at
> > <http://thread.gmane.org/gmane.comp.emulators.qemu/414824/focus=414828>.
> > 
> >> Also greatly reduces the chance non-release tags are matched, so I don't
> >> get results like "pull-vga-20160523-1-236-g9fd5eb7".
> > 
> > Since what version is "--match" supported? ;)
> 
> git's own version history says 1.5.5.
> 
> Another small point is that some people put the whole home directory in
> git, so I would test for $(SRC_PATH)/.git instead of using "git
> status".  And no-git is unnecessary if the git part is included in
> parentheses.  This gives:
> 
> diff --git a/Makefile b/Makefile
> index a4d7da0..412c2b8 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -173,16 +173,16 @@ qemu-version.h: FORCE
>  		if test -n "$(PKGVERSION)"; then \
>  			printf '"$(PKGVERSION)"\n'; \
>  		else \
> -			printf '" ('; \
> -			if ! git status &>/dev/null; then \
> -				printf "no-git"; \
> -			else \
> -				git describe 2>/dev/null | tr -d '\n'; \
> +			if test -d .git; then \
> +			        printf '" ('; \
> +				git describe --match 'v*' 2>/dev/null | tr -d '\n'; \
>  				if ! git diff-index --quiet HEAD &>/dev/null; then \
>  					printf -- '-dirty'; \
> -				fi \
> +				fi; \
> +			        printf ')"\n'; \
> +			else \
> +				printf '""\n'; \
>  			fi; \
> -			printf ')"\n'; \
>  		fi) > $@.tmp)
>  	$(call quiet-command, cmp --quiet $@ $@.tmp || mv $@.tmp $@)
>  
> 
> 
> Looks good?

Looks good except I'd use tabs everywhere. Can you fix when applying? :)

Fam
diff mbox

Patch

diff --git a/Makefile b/Makefile
index a4d7da0..412c2b8 100644
--- a/Makefile
+++ b/Makefile
@@ -173,16 +173,16 @@  qemu-version.h: FORCE
 		if test -n "$(PKGVERSION)"; then \
 			printf '"$(PKGVERSION)"\n'; \
 		else \
-			printf '" ('; \
-			if ! git status &>/dev/null; then \
-				printf "no-git"; \
-			else \
-				git describe 2>/dev/null | tr -d '\n'; \
+			if test -d .git; then \
+			        printf '" ('; \
+				git describe --match 'v*' 2>/dev/null | tr -d '\n'; \
 				if ! git diff-index --quiet HEAD &>/dev/null; then \
 					printf -- '-dirty'; \
-				fi \
+				fi; \
+			        printf ')"\n'; \
+			else \
+				printf '""\n'; \
 			fi; \
-			printf ')"\n'; \
 		fi) > $@.tmp)
 	$(call quiet-command, cmp --quiet $@ $@.tmp || mv $@.tmp $@)