FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" # Calculate the auxiliary firmware revision to be updated in the dev_id.json # file. It is calculated from the VERSION_ID field which currently has two # formats. The revision field is 4 bytes, the first two bytes represent the # count of commits from the tagging and next two bytes represent the version. # Both fields are represented in BCD encoded format, so 9999 is the maximum # value both fields can take. With the format "v2.1-216-ga78ace8", Petitboot # would display the firmware revision as "Firmware version: 2.01.02160000", # "0216" is count and the revision is "0000". With the format # "ibm-v2.0-10-r41-0-gd0c319e" Petitboot would display the firmware revision # as "Firmware version: 2.00.00100041", "0010" is count and the revision # is "0041". inherit image_version unset do_patch[noexec] do_patch[depends] = "os-release:do_populate_sysroot" python do_patch:ibm-ac-server() { import json import re from shutil import copyfile version_id = do_get_version(d) # count from the commit version, minimum of one digit count = re.findall("-(\d{1,4})-", version_id) if count: commit = count[0] else: commit = "0" release = re.findall("-r(\d{1,4})", version_id) if release: auxVer = commit + "{0:0>4}".format(release[0]) else: auxVer = commit + "0000" workdir = d.getVar('WORKDIR', True) file = os.path.join(workdir, 'dev_id.json') # Update dev_id.json with the auxiliary firmware revision with open(file, "r+") as jsonFile: data = json.load(jsonFile) jsonFile.seek(0) jsonFile.truncate() data["aux"] = int(auxVer, 16) json.dump(data, jsonFile) }