Class: build info management

Signed-off-by: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
Change-Id: Ie6c04fba3d22960ae438085cb51e2350ccbf6929
This commit is contained in:
Christophe Priouzeau 2022-06-06 15:34:53 +02:00 committed by bernard PUEL
parent 32f6724539
commit 919572b847
1 changed files with 27 additions and 19 deletions

View File

@ -2,7 +2,7 @@
# #
# The format to specify it, in the machine, is: # The format to specify it, in the machine, is:
# #
# PARTITIONS_IMAGE ??= "partition_image_name_1 partition_image_name_2" # PARTITIONS_IMAGES ??= "partition_image_name_1 partition_image_name_2"
# #
# The partition generation might be disabled by resetting ENABLE_PARTITIONS_IMAGE var # The partition generation might be disabled by resetting ENABLE_PARTITIONS_IMAGE var
# in an image recipe (for example) # in an image recipe (for example)
@ -13,7 +13,7 @@ ENABLE_PARTITIONS_IMAGE ??= "1"
ENABLE_IMAGE_LICENSE_SUMMARY ??= "0" ENABLE_IMAGE_LICENSE_SUMMARY ??= "0"
ENABLE_MULTIVOLUME_UBI ??= "0" ENABLE_MULTIVOLUME_UBI ??= "0"
PARTITIONS_IMAGE ??= "" PARTITIONS_IMAGES ??= ""
python __anonymous () { python __anonymous () {
# We check first if it is requested to generate any partition images # We check first if it is requested to generate any partition images
@ -46,7 +46,11 @@ python __anonymous () {
# Update IMAGE vars for each partition image # Update IMAGE vars for each partition image
if items[1] != '': if items[1] != '':
bb.debug(1, "Set UBI_VOLNAME to %s for %s partition image." % (items[1], items[0])) bb.debug(1, "Set UBI_VOLNAME to %s for %s partition image." % (items[1], items[0]))
d.setVar('UBI_VOLNAME:pn-%s' % d.expand(items[0]), items[1]) if d.getVar('UBI_VOLNAME:pn-%s' % d.expand(items[0])):
bb.debug(1,"UBI_VOLNAME is already configured to '%s' for %s partition image." % (d.getVar('UBI_VOLNAME:pn-%s' % d.expand(items[0])), items[0]))
else:
bb.debug(1, "Set UBI_VOLNAME to %s for %s partition image." % (items[1], items[0]))
d.setVar('UBI_VOLNAME:pn-%s' % d.expand(items[0]), items[1])
if d.expand(items[1])[-2:] != 'fs': if d.expand(items[1])[-2:] != 'fs':
bb.debug(1, "Set IMAGE_NAME_SUFFIX to '.%sfs' for %s partition image." % (items[1], items[0])) bb.debug(1, "Set IMAGE_NAME_SUFFIX to '.%sfs' for %s partition image." % (items[1], items[0]))
d.setVar('IMAGE_NAME_SUFFIX:pn-%s' % d.expand(items[0]), '.' + items[1] + 'fs') d.setVar('IMAGE_NAME_SUFFIX:pn-%s' % d.expand(items[0]), '.' + items[1] + 'fs')
@ -133,8 +137,8 @@ python image_rootfs_image_clean_task(){
machine = d.expand("${MACHINE}") machine = d.expand("${MACHINE}")
distro = d.expand("${DISTRO}") distro = d.expand("${DISTRO}")
img_rootfs = d.getVar('IMAGE_ROOTFS') img_rootfs = d.getVar('IMAGE_ROOTFS')
partitionsconfigflags = d.getVarFlags('PARTITIONS_IMAGE') partitionsconfigflags = d.getVarFlags('PARTITIONS_IMAGES')
partitionsconfig = (d.getVar('PARTITIONS_IMAGE') or "").split() partitionsconfig = (d.getVar('PARTITIONS_IMAGES') or "").split()
if len(partitionsconfig) == 0: if len(partitionsconfig) == 0:
bb.note('No partition image: nothing more to do...') bb.note('No partition image: nothing more to do...')
@ -196,6 +200,7 @@ python image_rootfs_image_clean_task(){
# Use oe-pkgdata-util to find the package providing a file # Use oe-pkgdata-util to find the package providing a file
cmd = ["oe-pkgdata-util", cmd = ["oe-pkgdata-util",
"-p", d.getVar('PKGDATA_DIR'), "find-path", f ] "-p", d.getVar('PKGDATA_DIR'), "find-path", f ]
package = ""
try: try:
package = subprocess.check_output(cmd, stderr=subprocess.STDOUT).decode("utf-8").rstrip('\n') package = subprocess.check_output(cmd, stderr=subprocess.STDOUT).decode("utf-8").rstrip('\n')
package = re.sub(r":.*", "", package) package = re.sub(r":.*", "", package)
@ -222,10 +227,10 @@ python image_rootfs_image_clean_task(){
match = True match = True
break break
if not match: if not match:
bb.warn("Package %s should belong to %s partition image. Did you add it into the right image?" % (package, _img_partition)) bb.note("Package %s should belong to %s partition image. Did you add it into the right image?" % (package, _img_partition))
else: else:
bb.warn("File %s is not in a package" % (os.path.join(root, f))) bb.note("File %s is not in a package" % (os.path.join(root, f)))
bb.note('Expecting to clean folder: %s' % part_dir) bb.note('Expecting to clean folder: %s' % part_dir)
shutil.rmtree(part_dir) shutil.rmtree(part_dir)
@ -235,19 +240,22 @@ python image_rootfs_image_clean_task(){
} }
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Append buildinfo() to allow to export to DEPLOYDIR the buildinfo file itself # Manage to export to DEPLOYDIR the buildinfo file itself
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
DEPLOY_BUILDINFO_FILE ??= "0" DEPLOY_BUILDINFO_FILE ??= "0"
buildinfo:append() { python extract_buildinfo() {
if d.getVar('DEPLOY_BUILDINFO_FILE') != '1': if d.getVar('DEPLOY_BUILDINFO_FILE') == '1' and d.getVar('IMAGE_BUILDINFO_FILE'):
return # Export build information to deploy dir
# Export build information to deploy dir import shutil
import shutil buildinfo_origin = d.getVar('IMAGE_BUILDINFO_FILE')
buildinfo_srcfile=d.expand('${IMAGE_ROOTFS}${IMAGE_BUILDINFO_FILE}') rootfs_path = d.getVar('IMAGE_ROOTFS')
buildinfo_dstfile=os.path.join(d.getVar('IMGDEPLOYDIR'), os.path.basename(d.getVar('IMAGE_BUILDINFO_FILE')) + '-' + d.getVar('IMAGE_LINK_NAME')) buildinfo_srcfile = os.path.normpath(rootfs_path + '/' + buildinfo_origin)
if os.path.isfile(buildinfo_srcfile): if os.path.isfile(buildinfo_srcfile):
shutil.copy2(buildinfo_srcfile, buildinfo_dstfile) buildinfo_deploy = os.path.basename(d.getVar('IMAGE_BUILDINFO_FILE')) + '-' + d.getVar('IMAGE_LINK_NAME')
else: buildinfo_dstfile = os.path.join(d.getVar('IMGDEPLOYDIR'), buildinfo_deploy)
bb.warn('Not able to locate %s file in image rootfs %s' % (d.getVar('IMAGE_BUILDINFO_FILE'), d.getVar('IMAGE_ROOTFS'))) shutil.copy2(buildinfo_srcfile, buildinfo_dstfile)
else:
bb.warn('Not able to locate %s file in image rootfs %s' % (buildinfo_origin, rootfs_path))
} }
IMAGE_PREPROCESS_COMMAND += "extract_buildinfo;"