~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/scripts/setlocalversion

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /scripts/setlocalversion (Version linux-6.12-rc7) and /scripts/setlocalversion (Version linux-2.6.32.71)


  1 #!/bin/sh                                           1 #!/bin/sh
  2 # SPDX-License-Identifier: GPL-2.0             << 
  3 #                                                   2 #
  4 # This scripts adds local version information       3 # This scripts adds local version information from the version
  5 # control system git.                          !!   4 # control systems git, mercurial (hg) and subversion (svn).
  6 #                                                   5 #
  7 # If something goes wrong, send a mail the ker      6 # If something goes wrong, send a mail the kernel build mailinglist
  8 # (see MAINTAINERS) and CC Nico Schottelius         7 # (see MAINTAINERS) and CC Nico Schottelius
  9 # <nico-linuxsetlocalversion -at- schottelius.      8 # <nico-linuxsetlocalversion -at- schottelius.org>.
 10 #                                                   9 #
 11 #                                                  10 #
 12                                                    11 
 13 usage() {                                          12 usage() {
 14         echo "Usage: $0 [--no-local] [srctree] !!  13         echo "Usage: $0 [srctree]" >&2
 15         exit 1                                     14         exit 1
 16 }                                                  15 }
 17                                                    16 
 18 no_local=false                                 !!  17 cd "${1:-.}" || usage
 19 if test "$1" = "--no-local"; then              << 
 20         no_local=true                          << 
 21         shift                                  << 
 22 fi                                             << 
 23                                                << 
 24 srctree=.                                      << 
 25 if test $# -gt 0; then                         << 
 26         srctree=$1                             << 
 27         shift                                  << 
 28 fi                                             << 
 29 if test $# -gt 0 -o ! -d "$srctree"; then      << 
 30         usage                                  << 
 31 fi                                             << 
 32                                                << 
 33 scm_version()                                  << 
 34 {                                              << 
 35         local short=false                      << 
 36         local no_dirty=false                   << 
 37         local tag                              << 
 38                                                << 
 39         while [ $# -gt 0 ];                    << 
 40         do                                     << 
 41                 case "$1" in                   << 
 42                 --short)                       << 
 43                         short=true;;           << 
 44                 --no-dirty)                    << 
 45                         no_dirty=true;;        << 
 46                 esac                           << 
 47                 shift                          << 
 48         done                                   << 
 49                                                << 
 50         cd "$srctree"                          << 
 51                                                << 
 52         if test -n "$(git rev-parse --show-cdu << 
 53                 return                         << 
 54         fi                                     << 
 55                                                    18 
 56         if ! head=$(git rev-parse --verify HEA !!  19 # Check for git and a git repo.
 57                 return                         !!  20 if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then
 58         fi                                     << 
 59                                                << 
 60         # mainline kernel:  6.2.0-rc5  ->  v6. << 
 61         # stable kernel:    6.1.7      ->  v6. << 
 62         version_tag=v$(echo "${KERNELVERSION}" << 
 63                                                << 
 64         # If a localversion* file exists, and  << 
 65         # annotated tag exists and is an ances << 
 66         # it. This is the case in linux-next.  << 
 67         tag=${file_localversion#-}             << 
 68         desc=                                  << 
 69         if [ -n "${tag}" ]; then               << 
 70                 desc=$(git describe --match=$t << 
 71         fi                                     << 
 72                                                << 
 73         # Otherwise, if a localversion* file e << 
 74         # obtained by appending it to the tag  << 
 75         # KERNELVERSION exists and is an ances << 
 76         # it. This is e.g. the case in linux-r << 
 77         if [ -z "${desc}" ] && [ -n "${file_lo << 
 78                 tag="${version_tag}${file_loca << 
 79                 desc=$(git describe --match=$t << 
 80         fi                                     << 
 81                                                << 
 82         # Otherwise, default to the annotated  << 
 83         if [ -z "${desc}" ]; then              << 
 84                 tag="${version_tag}"           << 
 85                 desc=$(git describe --match=$t << 
 86         fi                                     << 
 87                                                    21 
 88         # If we are at the tagged commit, we i !!  22         # If we are at a tagged commit (like "v2.6.30-rc6"), we ignore it,
 89         # well-defined.                        !!  23         # because this version is defined in the top level Makefile.
 90         if [ "${tag}" != "${desc}" ]; then     !!  24         if [ -z "`git describe --exact-match 2>/dev/null`" ]; then
 91                                                !!  25 
 92                 # If only the short version is !!  26                 # If we are past a tagged commit (like "v2.6.30-rc5-302-g72357d5"),
 93                 # running further git commands !!  27                 # we pretty print it.
 94                 if $short; then                !!  28                 if atag="`git describe 2>/dev/null`"; then
 95                         echo "+"               !!  29                         echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}'
 96                         return                 !!  30 
                                                   >>  31                 # If we don't have a tag at all we print -g{commitish}.
                                                   >>  32                 else
                                                   >>  33                         printf '%s%s' -g $head
 97                 fi                                 34                 fi
 98                 # If we are past the tagged co << 
 99                 # (like 6.1.0-14595-g292a089d7 << 
100                 if [ -n "${desc}" ]; then      << 
101                         echo "${desc}" | awk - << 
102                 fi                             << 
103                                                << 
104                 # Add -g and exactly 12 hex ch << 
105                 printf '%s%s' -g "$(echo $head << 
106         fi                                         35         fi
107                                                    36 
108         if ${no_dirty}; then                   !!  37         # Is this git on svn?
109                 return                         !!  38         if git config --get svn-remote.svn.url >/dev/null; then
                                                   >>  39                 printf -- '-svn%s' "`git svn find-rev $head`"
110         fi                                         40         fi
111                                                    41 
112         # Check for uncommitted changes.       !!  42         # Update index only on r/w media
113         # This script must avoid any write att !!  43         [ -w . ] && git update-index --refresh --unmerged > /dev/null
114         # might be read-only.                  !!  44 
115         # You cannot use 'git describe --dirty !!  45         # Check for uncommitted changes
116         # .git/index.lock .                    !!  46         if git diff-index --name-only HEAD | grep -v "^scripts/package" \
117         # First, with git-status, but --no-opt !!  47             | read dummy; then
118         # git >= 2.14, so fall back to git-dif << 
119         # git-diff-index does not refresh the  << 
120         # results.                             << 
121         # See git-update-index(1), git-diff-in << 
122         if {                                   << 
123                 git --no-optional-locks status << 
124                 git diff-index --name-only HEA << 
125         } | read dummy; then                   << 
126                 printf '%s' -dirty                 48                 printf '%s' -dirty
127         fi                                         49         fi
128 }                                              << 
129                                                << 
130 collect_files()                                << 
131 {                                              << 
132         local file res=                        << 
133                                                << 
134         for file; do                           << 
135                 case "$file" in                << 
136                 *\~*)                          << 
137                         continue               << 
138                         ;;                     << 
139                 esac                           << 
140                 if test -e "$file"; then       << 
141                         res="$res$(cat "$file" << 
142                 fi                             << 
143         done                                   << 
144         echo "$res"                            << 
145 }                                              << 
146                                                    50 
147 if [ -z "${KERNELVERSION}" ]; then             !!  51         # All done with git
148         echo "KERNELVERSION is not set" >&2    !!  52         exit
149         exit 1                                 << 
150 fi                                                 53 fi
151                                                    54 
152 # localversion* files in the build and source  !!  55 # Check for mercurial and a mercurial repo.
153 file_localversion="$(collect_files localversio !!  56 if hgid=`hg id 2>/dev/null`; then
154 if test ! "$srctree" -ef .; then               !!  57         tag=`printf '%s' "$hgid" | cut -d' ' -f2`
155         file_localversion="${file_localversion << 
156 fi                                             << 
157                                                    58 
158 if ${no_local}; then                           !!  59         # Do we have an untagged version?
159         echo "${KERNELVERSION}$(scm_version -- !!  60         if [ -z "$tag" -o "$tag" = tip ]; then
160         exit 0                                 !!  61                 id=`printf '%s' "$hgid" | sed 's/[+ ].*//'`
161 fi                                             !!  62                 printf '%s%s' -hg "$id"
                                                   >>  63         fi
162                                                    64 
163 if ! test -e include/config/auto.conf; then    !!  65         # Are there uncommitted changes?
164         echo "Error: kernelrelease not valid - !!  66         # These are represented by + after the changeset id.
165         exit 1                                 !!  67         case "$hgid" in
                                                   >>  68                 *+|*+\ *) printf '%s' -dirty ;;
                                                   >>  69         esac
                                                   >>  70 
                                                   >>  71         # All done with mercurial
                                                   >>  72         exit
166 fi                                                 73 fi
167                                                    74 
168 # version string from CONFIG_LOCALVERSION      !!  75 # Check for svn and a svn repo.
169 config_localversion=$(sed -n 's/^CONFIG_LOCALV !!  76 if rev=`svn info 2>/dev/null | grep '^Last Changed Rev'`; then
                                                   >>  77         rev=`echo $rev | awk '{print $NF}'`
                                                   >>  78         printf -- '-svn%s' "$rev"
170                                                    79 
171 # scm version string if not at the kernel vers !!  80         # All done with svn
172 if grep -q "^CONFIG_LOCALVERSION_AUTO=y$" incl !!  81         exit
173         # full scm version string              << 
174         scm_version="$(scm_version)"           << 
175 elif [ "${LOCALVERSION+set}" != "set" ]; then  << 
176         # If the variable LOCALVERSION is not  << 
177         # sign if the repository is not in a c << 
178         # signed tagged state (as git describe << 
179         # or annotated tags - git tag -a/-s).  << 
180         #                                      << 
181         # If the variable LOCALVERSION is set  << 
182         # to an empty string), we don't want t << 
183         scm_version="$(scm_version --short)"   << 
184 fi                                                 82 fi
185                                                << 
186 echo "${KERNELVERSION}${file_localversion}${co << 
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php