We were getting an endlessly-growing list of directories in build/tmp/deploy/licenses/ of the form myimage-mymachine-20210629010203. Use the normal sstate behaviour to clean them. Brings license_image in line with the do_populate_lic behaviour in license.bbclass.
We must only clean the (new) WORKDIR/license-destdir at do_rootfs time, as the write_package_manifest and license_create_manifest rootfs postprocess commands write the package.manifest and license.manifest files at that time. They get stored in the sstate cache at do_populate_lic_deploy time, alongside the image_license.manifest. Looks like this: license-destdir/ ├── myimage-mymachine -> myimage-mymachine-20210629025723/ └── myimage-mymachine-20210629025723/ ├── image_license.manifest ├── license.manifest └── package.manifest Signed-off-by: Douglas Royds <douglas.ro...@taitradio.com> --- meta/classes/license_image.bbclass | 35 ++++++++++++++++-------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/meta/classes/license_image.bbclass b/meta/classes/license_image.bbclass index 73cebb4d55e..4afbb5ed575 100644 --- a/meta/classes/license_image.bbclass +++ b/meta/classes/license_image.bbclass @@ -1,8 +1,9 @@ ROOTFS_LICENSE_DIR = "${IMAGE_ROOTFS}/usr/share/common-licenses" +LICSSTATEDIR = "${WORKDIR}/license-destdir/" python write_package_manifest() { # Get list of installed packages - license_image_dir = d.expand('${LICENSE_DIRECTORY}/${IMAGE_NAME}') + license_image_dir = d.expand('${LICSSTATEDIR}/${IMAGE_NAME}') bb.utils.mkdirhier(license_image_dir) from oe.rootfs import image_list_installed_packages from oe.utils import format_pkg_list @@ -32,7 +33,7 @@ python license_create_manifest() { pkg_lic_name = "LICENSE_" + pkg_name pkg_dic[pkg_name]["LICENSE"] = pkg_dic[pkg_name][pkg_lic_name] - rootfs_license_manifest = os.path.join(d.getVar('LICENSE_DIRECTORY'), + rootfs_license_manifest = os.path.join(d.getVar('LICSSTATEDIR'), d.getVar('IMAGE_NAME'), 'license.manifest') write_license_files(d, rootfs_license_manifest, pkg_dic, rootfs=True) } @@ -196,23 +197,15 @@ def license_deployed_manifest(d): key,val = line.split(": ", 1) man_dic[dep][key] = val[:-1] - lic_manifest_dir = os.path.join(d.getVar('LICENSE_DIRECTORY'), - d.getVar('IMAGE_NAME')) - bb.utils.mkdirhier(lic_manifest_dir) - image_license_manifest = os.path.join(lic_manifest_dir, 'image_license.manifest') + licsstatedir = d.getVar('LICSSTATEDIR') + image_name = d.getVar('IMAGE_NAME') + image_license_manifest = os.path.join(licsstatedir, image_name, 'image_license.manifest') write_license_files(d, image_license_manifest, man_dic, rootfs=False) link_name = d.getVar('IMAGE_LINK_NAME') if link_name: - lic_manifest_symlink_dir = os.path.join(d.getVar('LICENSE_DIRECTORY'), - link_name) - # remove old symlink - if os.path.islink(lic_manifest_symlink_dir): - os.unlink(lic_manifest_symlink_dir) - - # create the image dir symlink - if lic_manifest_dir != lic_manifest_symlink_dir: - os.symlink(lic_manifest_dir, lic_manifest_symlink_dir) + if image_name != link_name: + os.symlink(image_name, os.path.join(licsstatedir, link_name)) def get_deployed_dependencies(d): """ @@ -260,14 +253,24 @@ def get_deployed_files(man_file): return dep_files ROOTFS_POSTPROCESS_COMMAND_prepend = "write_package_manifest; license_create_manifest; " +do_rootfs[cleandirs] += "${LICSSTATEDIR}" do_rootfs[recrdeptask] += "do_populate_lic" python do_populate_lic_deploy() { license_deployed_manifest(d) } - addtask populate_lic_deploy before do_build after do_image_complete + +SSTATETASKS += "do_populate_lic_deploy" +do_populate_lic_deploy[dirs] = "${LICSSTATEDIR}/${IMAGE_NAME}" do_populate_lic_deploy[recrdeptask] += "do_populate_lic do_deploy" +do_populate_lic_deploy[sstate-inputdirs] = "${LICSSTATEDIR}" +do_populate_lic_deploy[sstate-outputdirs] = "${LICENSE_DIRECTORY}/" + +python do_populate_lic_deploy_setscene () { + sstate_setscene(d) +} +addtask do_populate_lic_deploy_setscene python license_qa_dead_symlink() { import os -- 2.25.1
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#153405): https://lists.openembedded.org/g/openembedded-core/message/153405 Mute This Topic: https://lists.openembedded.org/mt/83862729/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-