mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-29 01:50:53 +00:00
We no longer depend on this directory, so there's no need to
include its sha1sum in the version string.
BUG=chrome-os-partner:54101
BRANCH=none
TEST=make buildall; try on Cr50 hardware
Before
> version
Chip: g cr50 B2
Board: 0
RO_A: * 0.0.9/0088a3eb
RO_B: 0.0.3/8fe06b9e
RW_A: * 0.0.6/DEV/cr50_v1.1.5333-cca986c
RW_B: 0.0.6/DEV/cr50_v1.1.5334-115b338
Build: 0.0.6/DEV/cr50_v1.1.5333-cca986c
private-cr51:v0.0.87-24457f2
tpm2:v0.0.264-5e5aaa3
cryptoc:v0.0.4-5319e83
2016-09-16 21:59:31 wfrichar@wintermute.mt
>
After
> version
Chip: g cr50 B2
Board: 0
RO_A: * 0.0.9/0088a3eb
RO_B: 0.0.3/8fe06b9e
RW_A: 0.0.6/DEV/cr50_v1.1.5333-cca986c
RW_B: * 0.0.6/DEV/cr50_v1.1.5334-36b2cee
Build: 0.0.6/DEV/cr50_v1.1.5334-36b2cee
tpm2:v0.0.264-5e5aaa3
cryptoc:v0.0.4-5319e83
2016-09-19 17:48:17 wfrichar@wintermute.mtv.corp.google.com
>
Change-Id: I785dff86e6b970219da87c8674f2a324fa074987
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/387238
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
127 lines
3.9 KiB
Bash
Executable File
127 lines
3.9 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
#
|
|
# Generate version information for the EC binary
|
|
|
|
# Use this symbol as a separator to be able to reliably concatenate strings of
|
|
# text.
|
|
dc=$'\001'
|
|
|
|
# Default marker to indicate 'dirty' repositories
|
|
dirty_marker='-dirty'
|
|
|
|
# This function examines the state of the current directory and attempts to
|
|
# extract its version information: the latest tag, if any, how many patches
|
|
# are there since the latest tag, the top sha1, and if there are local
|
|
# modifications.
|
|
#
|
|
# Local modifications are reported by concatenating the revision string and
|
|
# the string '-dirty' using the $dc symbol as the separator.
|
|
#
|
|
# If there is no tags defined in this git repository, the base version is
|
|
# considered to be 0.0.
|
|
#
|
|
# If current directory is not a git depository, this function prints out
|
|
# "no_version"
|
|
|
|
get_tree_version() {
|
|
local dirty
|
|
local ghash
|
|
local numcommits
|
|
local tag
|
|
local vbase
|
|
local ver_branch
|
|
local ver_major
|
|
|
|
if ghash=`git rev-parse --short --verify HEAD 2>/dev/null`; then
|
|
if gdesc=`git describe --dirty --match='v*' 2>/dev/null`; then
|
|
IFS="-" fields=($gdesc)
|
|
tag="${fields[0]}"
|
|
IFS="." vernum=($tag)
|
|
numcommits=$((${vernum[2]}+${fields[1]:-0}))
|
|
ver_major="${vernum[0]}"
|
|
ver_branch="${vernum[1]}"
|
|
else
|
|
numcommits=`git rev-list HEAD | wc -l`
|
|
ver_major="v0"
|
|
ver_branch="0"
|
|
fi
|
|
# avoid putting the -dirty attribute if only the timestamp
|
|
# changed
|
|
git status > /dev/null 2>&1
|
|
|
|
if [ -n "$(git diff-index --name-only HEAD 2>/dev/null)" ]; then
|
|
dirty="${dirty_marker}"
|
|
fi
|
|
vbase="${ver_major}.${ver_branch}.${numcommits}-${ghash}${dirty}"
|
|
else
|
|
# Fall back to the VCSID provided by the packaging system if available.
|
|
if ghash=${VCSID##*-}; then
|
|
vbase="1.1.9999-${ghash:0:7}"
|
|
else
|
|
# then ultimately fails to "no_version"
|
|
vbase="no_version"
|
|
fi
|
|
fi
|
|
echo "${vbase}${dc}${dirty}"
|
|
}
|
|
|
|
|
|
IFS="${dc}"
|
|
ver="${CR50_DEV:+DEV/}${BOARD}_"
|
|
global_dirty= # set if any of the component repos is 'dirty'.
|
|
dir_list=( . ) # list of component directories, always includes the EC tree
|
|
|
|
case "${BOARD}" in
|
|
(cr50)
|
|
# cr50 includes sources from 4 different git trees. Shortened 'dirty' tree
|
|
# marker allows to keep the summary version string shorter.
|
|
dirty_marker='+'
|
|
dir_list+=( ../../third_party/tpm2 ../../third_party/cryptoc )
|
|
;;
|
|
esac
|
|
|
|
# Create a combined version string for all component directories.
|
|
for git_dir in ${dir_list[@]}; do
|
|
pushd "${git_dir}" > /dev/null
|
|
component="$(basename "${git_dir}")"
|
|
values=( $(get_tree_version) )
|
|
vbase="${values[0]}" # Retrieved version information.
|
|
global_dirty+="${values[1]}" # Non-zero, if the repository is 'dirty'
|
|
if [ "${component}" != "." ]; then
|
|
ver+=" ${component}:"
|
|
fi
|
|
ver+="${vbase}"
|
|
popd > /dev/null
|
|
done
|
|
|
|
# On some boards where the version number consists of multiple components we
|
|
# want to separate the first word of the version string as the version of the
|
|
# EC tree.
|
|
IFS=' ' first_word=(${ver})
|
|
|
|
echo "/* This file is generated by util/getversion.sh */"
|
|
|
|
echo "/* Version string for use by common/version.c */"
|
|
echo "#define CROS_EC_VERSION \"${ver}\""
|
|
|
|
echo "/* Version string, truncated to 31 chars (+ terminating null = 32) */"
|
|
echo "#define CROS_EC_VERSION32 \"${first_word:0:31}\""
|
|
|
|
echo "/* Sub-fields for use in Makefile.rules and to form build info string"
|
|
echo " * in common/version.c. */"
|
|
echo "#define VERSION \"${ver}\""
|
|
echo "#define BUILDER \"${USER}@`hostname`\""
|
|
|
|
if [ -n "$global_dirty" ]; then
|
|
echo "/* Repo is dirty, using time of last compilation */"
|
|
echo "#define DATE \"$(date '+%F %T')\""
|
|
else
|
|
echo "/* Repo is clean, use the commit date of the last commit */"
|
|
gitdate=$(git log -1 --format='%ci' HEAD | cut -d ' ' -f '1 2')
|
|
echo "#define DATE \"${gitdate}\""
|
|
fi
|