diff options
author | Saqib Khan <khansa@us.ibm.com> | 2017-09-22 18:21:30 +0300 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2017-11-16 06:32:03 +0300 |
commit | 417234737e4238a6f2315188c10d1e16f65e9664 (patch) | |
tree | ade1ca36741a5b8b700f6d19eef4c673e3722a57 /meta-phosphor/classes/image_version.bbclass | |
parent | 10721e62693599aa11d82588dfe5d5c89b2e108e (diff) | |
download | openbmc-417234737e4238a6f2315188c10d1e16f65e9664.tar.xz |
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.bbclass | 26 |
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 |