-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[PATCH] kbuild: automatically append a short string to the version ba…
…sed upon the git commit If CONFIG_AUTO_LOCALVERSION is set, the user is using a git-based tree, and the current HEAD is not referred to by any tags in .git/refs/tags/, append -g and the first 8 characters of the commit to the version string. This makes it easier to use git-bisect, and/or to do a daily build, without trampling on your older, working builds, or accidentally setting up conflicting sets of modules. Signed-off-by: Ryan Anderson <ryan@michonline.com> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
- Loading branch information
Ryan Anderson
authored and
Sam Ravnborg
committed
Aug 10, 2005
1 parent
dbec486
commit aaebf43
Showing
3 changed files
with
92 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
#!/usr/bin/perl | ||
# Copyright 2004 - Ryan Anderson <ryan@michonline.com> GPL v2 | ||
|
||
use strict; | ||
use warnings; | ||
use Digest::MD5; | ||
require 5.006; | ||
|
||
if (@ARGV != 1) { | ||
print <<EOT; | ||
Usage: setlocalversion <srctree> | ||
EOT | ||
exit(1); | ||
} | ||
|
||
my ($srctree) = @ARGV; | ||
chdir($srctree); | ||
|
||
my @LOCALVERSIONS = (); | ||
|
||
# We are going to use the following commands to try and determine if this | ||
# repository is at a Version boundary (i.e, 2.6.10 vs 2.6.10 + some patches) We | ||
# currently assume that all meaningful version boundaries are marked by a tag. | ||
# We don't care what the tag is, just that something exists. | ||
|
||
# Git/Cogito store the top-of-tree "commit" in .git/HEAD | ||
# A list of known tags sits in .git/refs/tags/ | ||
# | ||
# The simple trick here is to just compare the two of these, and if we get a | ||
# match, return nothing, otherwise, return a subset of the SHA-1 hash in | ||
# .git/HEAD | ||
|
||
sub do_git_checks { | ||
open(H,"<.git/HEAD") or return; | ||
my $head = <H>; | ||
chomp $head; | ||
close(H); | ||
|
||
opendir(D,".git/refs/tags") or return; | ||
foreach my $tagfile (grep !/^\.{1,2}$/, readdir(D)) { | ||
open(F,"<.git/refs/tags/" . $tagfile) or return; | ||
my $tag = <F>; | ||
chomp $tag; | ||
close(F); | ||
return if ($tag eq $head); | ||
} | ||
closedir(D); | ||
|
||
push @LOCALVERSIONS, "g" . substr($head,0,8); | ||
} | ||
|
||
if ( -d ".git") { | ||
do_git_checks(); | ||
} | ||
|
||
printf "-%s\n", join("-",@LOCALVERSIONS) if (scalar @LOCALVERSIONS > 0); |