History

Merge branch 'setlocalversion-speedup' into kbuild/rc-fixes

Michal Marek committed 16 years ago

Commit 62052be2 parents d5eda75 0a564b23 files · +134 −119Browse files

Showing the changes to scripts (2 of 3 files). Show all

Unified · Split

2 files
  1. scripts/package/Makefile +1 −1
  2. scripts/setlocalversion +132 −47
scripts/package/Makefile+1−1
@@ -44,7 +44,7 @@ rpm-pkg rpm: $(objtree)/kernel.spec FORCE · 43 unmodified lines
44 fi44 fi
45 $(MAKE) clean45 $(MAKE) clean
46 $(PREV) ln -sf $(srctree) $(KERNELPATH)46 $(PREV) ln -sf $(srctree) $(KERNELPATH)
47 $(CONFIG_SHELL) $(srctree)/scripts/setlocalversion > $(objtree)/.scmversion47 $(CONFIG_SHELL) $(srctree)/scripts/setlocalversion --scm-only > $(objtree)/.scmversion
48 $(PREV) tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(KERNELPATH)/.48 $(PREV) tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(KERNELPATH)/.
49 $(PREV) rm $(KERNELPATH)49 $(PREV) rm $(KERNELPATH)
50 rm -f $(objtree)/.scmversion50 rm -f $(objtree)/.scmversion
scripts/setlocalversion+132−47
@@ -10,73 +10,158 @@ · 9 unmodified lines
10#10#
11 11
12usage() {12usage() {
13 echo "Usage: $0 [srctree]" >&213 echo "Usage: $0 [--scm-only] [srctree]" >&2
14 exit 114 exit 1
15}15}
16 16
17cd "${1:-.}" || usage17scm_only=false
18srctree=.
19if test "$1" = "--scm-only"; then
20 scm_only=true
21 shift
22fi
23if test $# -gt 0; then
24 srctree=$1
25 shift
26fi
27if test $# -gt 0 -o ! -d "$srctree"; then
28 usage
29fi
18 30
19# Check for git and a git repo.31scm_version()
20if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then32{
33 local short=false
21 34
22 # If we are at a tagged commit (like "v2.6.30-rc6"), we ignore it,35 cd "$srctree"
23 # because this version is defined in the top level Makefile.36 if test -e .scmversion; then
24 if [ -z "`git describe --exact-match 2>/dev/null`" ]; then37 cat "$_"
38 return
39 fi
40 if test "$1" = "--short"; then
41 short=true
42 fi
25 43
26 # If we are past a tagged commit (like "v2.6.30-rc5-302-g72357d5"),44 # Check for git and a git repo.
27 # we pretty print it.45 if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then
28 if atag="`git describe 2>/dev/null`"; then46
29 echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}'47 # If we are at a tagged commit (like "v2.6.30-rc6"), we ignore
48 # it, because this version is defined in the top level Makefile.
49 if [ -z "`git describe --exact-match 2>/dev/null`" ]; then
50
51 # If only the short version is requested, don't bother
52 # running further git commands
53 if $short; then
54 echo "+"
55 return
56 fi
57 # If we are past a tagged commit (like
58 # "v2.6.30-rc5-302-g72357d5"), we pretty print it.
59 if atag="`git describe 2>/dev/null`"; then
60 echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}'
61
62 # If we don't have a tag at all we print -g{commitish}.
63 else
64 printf '%s%s' -g $head
65 fi
66 fi
30 67
31 # If we don't have a tag at all we print -g{commitish}.68 # Is this git on svn?
32 else69 if git config --get svn-remote.svn.url >/dev/null; then
33 printf '%s%s' -g $head70 printf -- '-svn%s' "`git svn find-rev $head`"
34 fi71 fi
35 fi
36 72
37 # Is this git on svn?73 # Update index only on r/w media
38 if git config --get svn-remote.svn.url >/dev/null; then74 [ -w . ] && git update-index --refresh --unmerged > /dev/null
39 printf -- '-svn%s' "`git svn find-rev $head`"
40 fi
41 75
42 # Update index only on r/w media76 # Check for uncommitted changes
43 [ -w . ] && git update-index --refresh --unmerged > /dev/null77 if git diff-index --name-only HEAD | grep -v "^scripts/package" \
78 | read dummy; then
79 printf '%s' -dirty
80 fi
44 81
45 # Check for uncommitted changes82 # All done with git
46 if git diff-index --name-only HEAD | grep -v "^scripts/package" \83 return
47 | read dummy; then
48 printf '%s' -dirty
49 fi84 fi
50 85
51 # All done with git86 # Check for mercurial and a mercurial repo.
52 exit87 if hgid=`hg id 2>/dev/null`; then
53fi88 tag=`printf '%s' "$hgid" | cut -d' ' -f2`
89
90 # Do we have an untagged version?
91 if [ -z "$tag" -o "$tag" = tip ]; then
92 id=`printf '%s' "$hgid" | sed 's/[+ ].*//'`
93 printf '%s%s' -hg "$id"
94 fi
54 95
55# Check for mercurial and a mercurial repo.96 # Are there uncommitted changes?
56if hgid=`hg id 2>/dev/null`; then97 # These are represented by + after the changeset id.
57 tag=`printf '%s' "$hgid" | cut -d' ' -f2`98 case "$hgid" in
99 *+|*+\ *) printf '%s' -dirty ;;
100 esac
58 101
59 # Do we have an untagged version?102 # All done with mercurial
60 if [ -z "$tag" -o "$tag" = tip ]; then103 return
61 id=`printf '%s' "$hgid" | sed 's/[+ ].*//'`
62 printf '%s%s' -hg "$id"
63 fi104 fi
64 105
65 # Are there uncommitted changes?106 # Check for svn and a svn repo.
66 # These are represented by + after the changeset id.107 if rev=`svn info 2>/dev/null | grep '^Last Changed Rev'`; then
67 case "$hgid" in108 rev=`echo $rev | awk '{print $NF}'`
68 *+|*+\ *) printf '%s' -dirty ;;109 printf -- '-svn%s' "$rev"
69 esac
70 110
71 # All done with mercurial111 # All done with svn
112 return
113 fi
114}
115
116collect_files()
117{
118 local file res
119
120 for file; do
121 case "$file" in
122 *\~*)
123 continue
124 ;;
125 esac
126 if test -e "$file"; then
127 res="$res$(cat "$file")"
128 fi
129 done
130 echo "$res"
131}
132
133if $scm_only; then
134 scm_version
72 exit135 exit
73fi136fi
74 137
75# Check for svn and a svn repo.138if test -e include/config/auto.conf; then
76if rev=`svn info 2>/dev/null | grep '^Last Changed Rev'`; then139 source "$_"
77 rev=`echo $rev | awk '{print $NF}'`140else
78 printf -- '-svn%s' "$rev"141 echo "Error: kernelrelease not valid - run 'make prepare' to update it"
142 exit 1
143fi
79 144
80 # All done with svn145# localversion* files in the build and source directory
81 exit146res="$(collect_files localversion*)"
147if test ! "$srctree" -ef .; then
148 res="$res$(collect_files "$srctree"/localversion*)"
149fi
150
151# CONFIG_LOCALVERSION and LOCALVERSION (if set)
152res="${res}${CONFIG_LOCALVERSION}${LOCALVERSION}"
153
154# scm version string if not at a tagged commit
155if test "$CONFIG_LOCALVERSION_AUTO" = "y"; then
156 # full scm version string
157 res="$res$(scm_version)"
158else
159 # apped a plus sign if the repository is not in a clean tagged
160 # state and LOCALVERSION= is not specified
161 if test "${LOCALVERSION+set}" != "set"; then
162 scm=$(scm_version --short)
163 res="$res${scm:++}"
164 fi
82fi165fi
166
167echo "$res"

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t