VERSION: Improve logic behind and information in VERSION partition
The VERSION partition is constructed in pkg-versions.mk, and has
the purpose of indicating to both the user and developer/support
what firmware build is on a particular machine.
This patch addresess a few issues with VERSION.
Firstly, the pkg-versions.mk code was making needlessly excessive calls
to git, which could be solved by using "git describe --always --dirty"
rather than going around and around.
Secondly, the information in VERSION was not always useful. Previously,
we'd get an entry like 'open-power-habanero-78d8928', which is only
useful if you posses a tree with that commit in it. With this patch,
instead you get 'open-power-habanero-v1.14-45-g78d89280c3f9' which tells
us a *lot* more information about what was used to build this image. The
same issue was with buildroot (was: 'buildroot-6b9fd80',
now: 'buildroot-2016.11-4-g6b9fd8036d72')
Thirdly, the (truncated) SHA512 hash of the patches to a package was
not always clear that it was a SHA of patches. We now prefix the
patch sha with a 'p' (Git prefixes a sha with a 'g'). For example:
'habanero-xml-6a78496-67a075c' becomes 'habanero-xml-6a78496-p67a075c'
Fourthly, the version targets threw some shell errors, so they're also
fixed.
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
diff --git a/openpower/package/pkg-versions.mk b/openpower/package/pkg-versions.mk
index 23ac15c..9a37bbb 100644
--- a/openpower/package/pkg-versions.mk
+++ b/openpower/package/pkg-versions.mk
@@ -40,7 +40,7 @@
fi
# If this is for linux, also check openpower/linux
-if [ $(filter "LINUX", "$(2)") == "$(2)" ]; then \
+if [ "LINUX" == "$(2)" ]; then \
if ls $$(BR2_EXTERNAL_OP_BUILD_PATH)/$(1)/*.patch 2>/dev/null; then sha512sum \
$$(BR2_EXTERNAL_OP_BUILD_PATH)/$(1)/*.patch | sha512sum | \
xargs echo >> $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt; \
@@ -77,19 +77,17 @@
whoami | xargs echo -n >> $$($(2)_VERSION_FILE); \
echo -n "-" >> $$($(2)_VERSION_FILE); \
\
-cd "$$($(2)_SITE)"; (git describe --tags || git log -n1 --pretty=format:'%h' || echo "unknown") \
- | sed 's/\(.*\)-g\([0-9a-f]\{7\}\).*/\2/;s/$(1)-//;' | xargs echo -n \
+cd "$$($(2)_SITE)"; (git describe --always --dirty || echo "unknown") \
+ |sed -e 's/$(1)-//' | xargs echo -n\
>> $$($(2)_VERSION_FILE); \
\
-cd "$$($(2)_SITE)"; git describe --all --dirty | grep -e "-dirty" | sed 's/.*\(-dirty\)/\1/;' | \
- xargs echo -n >> $$($(2)_VERSION_FILE); \
else \
\
[ `echo -n $$($(2)_VERSION) | wc -c` == "40" ] && (echo -n $$($(2)_VERSION) | \
sed "s/^\([0-9a-f]\{7\}\).*/\1/;s/$(1)-//;" >> $$($(2)_VERSION_FILE)) \
|| echo -n $$($(2)_VERSION) | sed -e 's/$(1)-//' >> $$($(2)_VERSION_FILE); \
\
-if [ $(filter "LINUX", "$(2)") == "$(2)" ]; then \
+if [ "LINUX" == "$(2)" ]; then \
if ls $$(BUILD_DIR)/$(1)-$$($(2)_VERSION)/Makefile 1>/dev/null; then \
head $$(BUILD_DIR)/$(1)-$$($(2)_VERSION)/Makefile | grep EXTRAVERSION \
| cut -d ' ' -f 3 | \
@@ -97,13 +95,8 @@
fi; \
fi; \
\
-cd "$$(BR2_EXTERNAL_OP_BUILD_PATH)"; git describe --all --dirty | \
- if grep -e "-dirty"; then \
- echo -n "-opdirty" >> $$($(2)_VERSION_FILE); \
- fi; \
-\
if [ -f $$(OPENPOWER_VERSION_DIR)/$(1).patch.txt ]; then \
- echo -n "-" >> $$($(2)_VERSION_FILE); \
+ echo -n "-p" >> $$($(2)_VERSION_FILE); \
cat $$(OPENPOWER_VERSION_DIR)/$(1).patch.txt >> $$($(2)_VERSION_FILE); fi \
fi
@@ -152,14 +145,14 @@
mkdir -p "$$(OPENPOWER_VERSION_DIR)"
# Add vendor or default open-power
-if [ "$$(OPBUILD_VENDOR)" != '' ]; then \
+if [ -n "$$(OPBUILD_VENDOR)" ]; then \
echo -n "$$(OPBUILD_VENDOR)-" > $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
else \
echo -n "open-power-" > $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
fi
# Add platform or default from defconfig
-if [ "$$(OPBUILD_PLATFORM)" != '' ]; then \
+if [ -n "$$(OPBUILD_PLATFORM)" ]; then \
echo -n "$$(OPBUILD_PLATFORM)-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
else \
echo -n "$$(BR2_OPENPOWER_CONFIG_NAME)-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
@@ -167,38 +160,30 @@
# Add op-build version
# Order: OPBUILD_VERSION, tag, commit, unknown
-if [ "$$(OPBUILD_VERSION)" != '' ]; then \
+if [ -n "$$(OPBUILD_VERSION)" ]; then \
echo -n "$$(OPBUILD_VERSION)" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
else \
-cd "$$(BR2_EXTERNAL_OP_BUILD_PATH)"; (git describe --tags || git log -n1 --pretty=format:'%h' || echo "unknown") \
- | sed 's/\(.*\)-g\([0-9a-f]\{7\}\).*/\2/' | xargs echo -n \
+cd "$$(BR2_EXTERNAL_OP_BUILD_PATH)"; (git describe --always --dirty || echo "unknown") \
+ | xargs echo -n \
>> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
fi
-# Check if op-build is dirty
-cd "$$(BR2_EXTERNAL_OP_BUILD_PATH)"; git describe --all --dirty | grep -e "-dirty" | sed 's/.*\(-dirty\)/\1/' | \
- xargs echo -n >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
-
# Add new line to $$($$(UPPER_CASE_PKG)_VERSION_FILE)
echo "" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
# Add a specific line for op-build if it has been overwritten
-if [ "$$(OPBUILD_VENDOR)" != '' ]; then \
+if [ -n "$$(OPBUILD_VENDOR)" ]; then \
echo -n " op-build-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
-cd "$$(BR2_EXTERNAL_OP_BUILD_PATH)"; (git describe --tags || git log -n1 --pretty=format:'%h' || echo "unknown") \
- | sed 's/\(.*\)-g\([0-9a-f]\{7\}\).*/\2/' | xargs echo -n \
+(cd "$$(BR2_EXTERNAL_OP_BUILD_PATH)"; (git describe --always --dirty || echo "unknown")) \
+ | xargs echo \
>> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
-cd "$$(BR2_EXTERNAL_OP_BUILD_PATH)"; git describe --all --dirty | grep -e "-dirty" | sed 's/.*\(-dirty\)/\1/' | \
- xargs echo >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
fi
# Include the currently checked-out buildroot version
echo -n " buildroot-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
-cd "./buildroot"; (git describe --tags || git log -n1 --pretty=format:'%h' || echo "unknown") \
- | sed 's/\(.*\)-g\([0-9a-f]\{7\}\).*/\2/' | xargs echo -n \
+(git describe --always --dirty || echo "unknown") \
+ | xargs echo \
>> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
-git describe --all --dirty | grep -e "-dirty" | sed 's/.*\(-dirty\)/\1/' | \
- xargs echo >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
# Combing subpackage version files into $$($$(UPPER_CASE_PKG)_VERSION_FILE)