~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/u-boot/scripts/setlocalversion

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
#
 
3
# This scripts adds local version information from the version
 
4
# control systems git, mercurial (hg) and subversion (svn).
 
5
#
 
6
# It was originally copied from the Linux kernel v3.2.0-rc4 and modified
 
7
# to support the U-Boot build-system.
 
8
#
 
9
 
 
10
usage() {
 
11
        echo "Usage: $0 [--save-scmversion] [srctree]" >&2
 
12
        exit 1
 
13
}
 
14
 
 
15
scm_only=false
 
16
srctree=.
 
17
if test "$1" = "--save-scmversion"; then
 
18
        scm_only=true
 
19
        shift
 
20
fi
 
21
if test $# -gt 0; then
 
22
        srctree=$1
 
23
        shift
 
24
fi
 
25
if test $# -gt 0 -o ! -d "$srctree"; then
 
26
        usage
 
27
fi
 
28
 
 
29
scm_version()
 
30
{
 
31
        local short
 
32
        short=false
 
33
 
 
34
        cd "$srctree"
 
35
        if test -e .scmversion; then
 
36
                cat .scmversion
 
37
                return
 
38
        fi
 
39
        if test "$1" = "--short"; then
 
40
                short=true
 
41
        fi
 
42
 
 
43
        # Check for git and a git repo.
 
44
        if test -e .git && head=`git rev-parse --verify --short HEAD 2>/dev/null`; then
 
45
 
 
46
                # If we are at a tagged commit (like "v2.6.30-rc6"), we ignore
 
47
                # it, because this version is defined in the top level Makefile.
 
48
                if [ -z "`git describe --exact-match 2>/dev/null`" ]; then
 
49
 
 
50
                        # If only the short version is requested, don't bother
 
51
                        # running further git commands
 
52
                        if $short; then
 
53
                                echo "+"
 
54
                                return
 
55
                        fi
 
56
                        # If we are past a tagged commit (like
 
57
                        # "v2.6.30-rc5-302-g72357d5"), we pretty print it.
 
58
                        if atag="`git describe 2>/dev/null`"; then
 
59
                                echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}'
 
60
 
 
61
                        # If we don't have a tag at all we print -g{commitish}.
 
62
                        else
 
63
                                printf '%s%s' -g $head
 
64
                        fi
 
65
                fi
 
66
 
 
67
                # Is this git on svn?
 
68
                if git config --get svn-remote.svn.url >/dev/null; then
 
69
                        printf -- '-svn%s' "`git svn find-rev $head`"
 
70
                fi
 
71
 
 
72
                # Update index only on r/w media
 
73
                [ -w . ] && git update-index --refresh --unmerged > /dev/null
 
74
 
 
75
                # Check for uncommitted changes
 
76
                if git diff-index --name-only HEAD | grep -v "^scripts/package" \
 
77
                    | read dummy; then
 
78
                        printf '%s' -dirty
 
79
                fi
 
80
 
 
81
                # All done with git
 
82
                return
 
83
        fi
 
84
 
 
85
        # Check for mercurial and a mercurial repo.
 
86
        if test -d .hg && hgid=`hg id 2>/dev/null`; then
 
87
                # Do we have an tagged version?  If so, latesttagdistance == 1
 
88
                if [ "`hg log -r . --template '{latesttagdistance}'`" == "1" ]; then
 
89
                        id=`hg log -r . --template '{latesttag}'`
 
90
                        printf '%s%s' -hg "$id"
 
91
                else
 
92
                        tag=`printf '%s' "$hgid" | cut -d' ' -f2`
 
93
                        if [ -z "$tag" -o "$tag" = tip ]; then
 
94
                                id=`printf '%s' "$hgid" | sed 's/[+ ].*//'`
 
95
                                printf '%s%s' -hg "$id"
 
96
                        fi
 
97
                fi
 
98
 
 
99
                # Are there uncommitted changes?
 
100
                # These are represented by + after the changeset id.
 
101
                case "$hgid" in
 
102
                        *+|*+\ *) printf '%s' -dirty ;;
 
103
                esac
 
104
 
 
105
                # All done with mercurial
 
106
                return
 
107
        fi
 
108
 
 
109
        # Check for svn and a svn repo.
 
110
        if rev=`svn info 2>/dev/null | grep '^Last Changed Rev'`; then
 
111
                rev=`echo $rev | awk '{print $NF}'`
 
112
                printf -- '-svn%s' "$rev"
 
113
 
 
114
                # All done with svn
 
115
                return
 
116
        fi
 
117
}
 
118
 
 
119
collect_files()
 
120
{
 
121
        local file res
 
122
 
 
123
        for file; do
 
124
                case "$file" in
 
125
                *\~*)
 
126
                        continue
 
127
                        ;;
 
128
                esac
 
129
                if test -e "$file"; then
 
130
                        res="$res$(cat "$file")"
 
131
                fi
 
132
        done
 
133
        echo "$res"
 
134
}
 
135
 
 
136
if $scm_only; then
 
137
        if test ! -e .scmversion; then
 
138
                res=$(scm_version)
 
139
                echo "$res" >.scmversion
 
140
        fi
 
141
        exit
 
142
fi
 
143
 
 
144
#if test -e include/config/auto.conf; then
 
145
#       . include/config/auto.conf
 
146
#else
 
147
#       echo "Error: kernelrelease not valid - run 'make prepare' to update it"
 
148
#       exit 1
 
149
#fi
 
150
CONFIG_LOCALVERSION=
 
151
CONFIG_LOCALVERSION_AUTO=y
 
152
 
 
153
# localversion* files in the build and source directory
 
154
res="$(collect_files localversion*)"
 
155
if test ! "$srctree" -ef .; then
 
156
        res="$res$(collect_files "$srctree"/localversion*)"
 
157
fi
 
158
 
 
159
# CONFIG_LOCALVERSION and LOCALVERSION (if set)
 
160
res="${res}${CONFIG_LOCALVERSION}${LOCALVERSION}"
 
161
 
 
162
# scm version string if not at a tagged commit
 
163
if test "$CONFIG_LOCALVERSION_AUTO" = "y"; then
 
164
        # full scm version string
 
165
        res="$res$(scm_version)"
 
166
else
 
167
        # append a plus sign if the repository is not in a clean
 
168
        # annotated or signed tagged state (as git describe only
 
169
        # looks at signed or annotated tags - git tag -a/-s) and
 
170
        # LOCALVERSION= is not specified
 
171
        if test "${LOCALVERSION+set}" != "set"; then
 
172
                scm=$(scm_version --short)
 
173
                res="$res${scm:++}"
 
174
        fi
 
175
fi
 
176
 
 
177
echo "$res"