~ [ 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-6.4.16)


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

~ [ 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