summaryrefslogtreecommitdiffstats
path: root/meta-phosphor/classes/image_version.bbclass
diff options
context:
space:
mode:
authorSaqib Khan <khansa@us.ibm.com>2017-09-22 10:21:30 -0500
committerBrad Bishop <bradleyb@fuzziesquirrel.com>2017-11-16 03:32:03 +0000
commit417234737e4238a6f2315188c10d1e16f65e9664 (patch)
treeade1ca36741a5b8b700f6d19eef4c673e3722a57 /meta-phosphor/classes/image_version.bbclass
parent10721e62693599aa11d82588dfe5d5c89b2e108e (diff)
downloadtalos-openbmc-417234737e4238a6f2315188c10d1e16f65e9664.tar.gz
talos-openbmc-417234737e4238a6f2315188c10d1e16f65e9664.zip
Calculate the version ID of BMC UBI volumes during build time.
- When the new ubi layout is flashed onto the BMC, the volumes were named kernel-0 and rofs-0 by default. This tends to be misleading as we can't differentiate between two different BMC versions. - Now the ubi volumes will be named kernel-<versionID> and rofs-<versionID> calculated by getting the hash(SHA-512) of the version and taking the first 8 characters. - The Uboot env needs to be updated to point to the correct kernelname which has now changed from kernel-0 to kernel-<versionID> calculated by getting the HASH(SHA-512) of the version and taking the first 8 characters. Resolves openbmc/openbmc#2323 Change-Id: I258d165b399d1ff59ea86f410006f6d03fe13a2e Signed-off-by: Saqib Khan <khansa@us.ibm.com>
Diffstat (limited to 'meta-phosphor/classes/image_version.bbclass')
-rw-r--r--meta-phosphor/classes/image_version.bbclass26
1 files changed, 26 insertions, 0 deletions
diff --git a/meta-phosphor/classes/image_version.bbclass b/meta-phosphor/classes/image_version.bbclass
new file mode 100644
index 000000000..f9abb5fc9
--- /dev/null
+++ b/meta-phosphor/classes/image_version.bbclass
@@ -0,0 +1,26 @@
+# Base image version class extension
+
+def do_get_version(d):
+ import configparser
+ import io
+ path = d.getVar('STAGING_DIR_HOST', True) + d.getVar('sysconfdir', True)
+ path = os.path.join(path, 'os-release')
+ parser = configparser.SafeConfigParser(strict=False)
+ parser.optionxform = str
+ version = ''
+ try:
+ with open(path, 'r') as fd:
+ buf = '[root]\n' + fd.read()
+ fd = io.StringIO(buf)
+ parser.readfp(fd)
+ version = parser['root']['VERSION_ID']
+ except:
+ pass
+ return version
+
+def do_get_versionID(d):
+ import hashlib
+ version = do_get_version(d)
+ version = version.strip('"')
+ version_id = (hashlib.sha512(version.encode('utf-8')).hexdigest())[:8]
+ return version_id
OpenPOWER on IntegriCloud