I was in the middle of making a test set based on Alexander suggestion but it seems i need to redo all my workspace every time i run the tests, which is terrible for iteration. Am i missing something?
oe-selftest -r package.PackageTests.test_custom_metadata_is_in_package_indexcd ../poky-selftest-st/ 2020-05-22 23:27:52,286 - oe-selftest - ERROR - Not found package.PackageTests.test_custom_metadata_is_in_package_indexcd in loaded test cases On Fri, May 22, 2020 at 9:31 PM Michael Ho <michael...@ieee.org> wrote: > > Hi Paulo, > > Yes, this is handled by the bitbake data handlers automatically. You can > check this by trying the following: > > python do_test() { > d.setVar("HELLO", "world!") > d.setVar("HELLO_space", "space!") > bb.warn("HELLO: %s" % d.getVar("HELLO", True)) > d.setVar("OVERRIDES", "space") > bb.warn("HELLO: %s" % d.getVar("HELLO", True)) > } > addtask test > > Then calling this task with bitbake: > > $ bitbake zip -c test | tee > ... > WARNING: zip-3.0-r2 do_test: HELLO: world! > WARNING: zip-3.0-r2 do_test: HELLO: space! > > I don't know the code or tests in oe that implement this functionality off > the top of my head so I can't point you to the oe.selftest coverage. > > Kind regards, > Michael > > On Fri, May 22, 2020 at 8:09 PM Paulo Neves <ptsne...@gmail.com> wrote: >> >> Hello Michael, >> >> The behavior you describe is indeed what i wanted. If you say this is >> already working then my patches are redundant. Even so i am surprised >> it is working. Is it done automatically by the getVar function? >> >> def get_package_additional_metadata (pkg_type, d): >> base_key = "PACKAGE_ADD_METADATA" >> for key in ("%s_%s" % (base_key, pkg_type.upper()), base_key): >> if d.getVar(key, False) is None: >> continue >> d.setVarFlag(key, "type", "list") >> if d.getVarFlag(key, "separator") is None: >> d.setVarFlag(key, "separator", "\\n") >> metadata_fields = [field.strip() for field in >> oe.data.typed_value(key, d)] >> return "\n".join(metadata_fields).strip() >> >> From my understanding, i do not see how the per package override >> happens. Do you have the test for this functionality in oe-selftest? >> >> Grateful for the feedback >> Paulo Neves >> >> On Fri, May 22, 2020 at 8:00 PM Michael Ho <michael...@ieee.org> wrote: >> > >> > Hi Paulo, >> > >> > I actually have some patches in my "to send upstream list" to address the >> > documentation and some sstate-caching bugs with these variables so it's >> > fresh to me at the moment. >> > Correct me if I'm wrong but I think this is already available in the code >> > (applying metadata specific to a certain package in a recipe, that is). >> > >> > eg. >> > http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/package_ipk.bbclass >> > at line 72 sets the local overrides so if PACKAGE_ADD_METADATA_IPK_xxx is >> > set, it overrides PACKAGE_ADD_METADATA_IPK. >> > >> > For rpm, see >> > http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/package_rpm.bbclass#n298 >> > where the recipe wide variable is fetched >> > http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/package_rpm.bbclass#n338 >> > where the local override is also set >> > http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/package_rpm.bbclass#n354 >> > where the package specific variables are fetched >> > http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/package_rpm.bbclass#n436 >> > where the package specific variables are applied to rpm packages >> > >> > I tested the zip recipe by applying these two lines: >> > PACKAGE_ADD_METADATA_RPM = "Vendor: None" >> > PACKAGE_ADD_METADATA_RPM_zip-dbg = "Vendor: Not you!" >> > and could see differing results in the two rpm files produced. >> > >> > I think this covers the use case you're showing in your patches already, >> > what do you think? >> > >> > Kind regards, >> > Michael >> > >> > (sorry if this shows up as a triple email, my mail client wasn't >> > cooperating). >> > >> > On Fri, May 22, 2020 at 5:29 PM Paulo Neve <ptsne...@gmail.com> wrote: >> >> >> >> Is ./meta/lib/oeqa/selftest/cases/package.py the right place? >> >> If yes i can work on it. Note that this functionality is not used >> >> anywhere in poky and is not documented at all. It just happened to >> >> exist for a long time and be useful for my case. >> >> >> >> On Fri, May 22, 2020 at 5:22 PM Alexander Kanavin >> >> <alex.kana...@gmail.com> wrote: >> >> > >> >> > Should there be a test for this functionality? Somewhere in oe-selftest >> >> > perhaps where various package manager features are tested? >> >> > >> >> > Alex >> >> > >> >> > On Fri, 22 May 2020 at 17:13, Paulo Neve <ptsne...@gmail.com> wrote: >> >> >> >> >> >> Up to now the user defined metadata was set recipe wide, >> >> >> meaning all the packages generated in a recipe where the >> >> >> variable was set would get the same metadata. That is not >> >> >> always ideal and is counter to the per package control that >> >> >> is usually available. >> >> >> >> >> >> Keep support for package agnostic metadata but also add option >> >> >> to add it to a specific option like: >> >> >> PACKAGE_ADD_METADATA_${PN}_IPK = "mymeta: myvalue" >> >> >> >> >> >> Signed-off-by: Paulo Neves <ptsne...@gmail.com> >> >> >> --- >> >> >> meta/classes/package.bbclass | 4 ++-- >> >> >> meta/classes/package_deb.bbclass | 2 +- >> >> >> meta/classes/package_ipk.bbclass | 2 +- >> >> >> meta/classes/package_rpm.bbclass | 5 +++-- >> >> >> 4 files changed, 7 insertions(+), 6 deletions(-) >> >> >> >> >> >> diff --git a/meta/classes/package.bbclass >> >> >> b/meta/classes/package.bbclass >> >> >> index 0b5cf47749..1678e0d794 100644 >> >> >> --- a/meta/classes/package.bbclass >> >> >> +++ b/meta/classes/package.bbclass >> >> >> @@ -637,9 +637,9 @@ def get_package_mapping (pkg, basepkg, d, >> >> >> depversions=None): >> >> >> >> >> >> return pkg >> >> >> >> >> >> -def get_package_additional_metadata (pkg_type, d): >> >> >> +def get_package_additional_metadata (pkg_type, pkg_name, d): >> >> >> base_key = "PACKAGE_ADD_METADATA" >> >> >> - for key in ("%s_%s" % (base_key, pkg_type.upper()), base_key): >> >> >> + for key in ("%s_%s" % (base_key, pkg_type.upper()), "%s_%s_%s" % >> >> >> (base_key, pkg_name, pkg_type.upper()), base_key): >> >> >> if d.getVar(key, False) is None: >> >> >> continue >> >> >> d.setVarFlag(key, "type", "list") >> >> >> diff --git a/meta/classes/package_deb.bbclass >> >> >> b/meta/classes/package_deb.bbclass >> >> >> index 790b26aef2..6ef9c8cb3a 100644 >> >> >> --- a/meta/classes/package_deb.bbclass >> >> >> +++ b/meta/classes/package_deb.bbclass >> >> >> @@ -167,7 +167,7 @@ def deb_write_pkg(pkg, d): >> >> >> >> >> >> # more fields >> >> >> >> >> >> - custom_fields_chunk = get_package_additional_metadata("deb", >> >> >> localdata) >> >> >> + custom_fields_chunk = get_package_additional_metadata("deb", >> >> >> pkgname, localdata) >> >> >> if custom_fields_chunk: >> >> >> ctrlfile.write(custom_fields_chunk) >> >> >> ctrlfile.write("\n") >> >> >> diff --git a/meta/classes/package_ipk.bbclass >> >> >> b/meta/classes/package_ipk.bbclass >> >> >> index c008559e4a..f78cec7a70 100644 >> >> >> --- a/meta/classes/package_ipk.bbclass >> >> >> +++ b/meta/classes/package_ipk.bbclass >> >> >> @@ -155,7 +155,7 @@ def ipk_write_pkg(pkg, d): >> >> >> else: >> >> >> ctrlfile.write(c % tuple(pullData(fs, localdata))) >> >> >> >> >> >> - custom_fields_chunk = get_package_additional_metadata("ipk", >> >> >> localdata) >> >> >> + custom_fields_chunk = get_package_additional_metadata("ipk", >> >> >> pkgname, localdata) >> >> >> if custom_fields_chunk is not None: >> >> >> ctrlfile.write(custom_fields_chunk) >> >> >> ctrlfile.write("\n") >> >> >> diff --git a/meta/classes/package_rpm.bbclass >> >> >> b/meta/classes/package_rpm.bbclass >> >> >> index 9145717f98..ab019192da 100644 >> >> >> --- a/meta/classes/package_rpm.bbclass >> >> >> +++ b/meta/classes/package_rpm.bbclass >> >> >> @@ -295,7 +295,6 @@ python write_specfile () { >> >> >> srcmaintainer = d.getVar('MAINTAINER') >> >> >> srchomepage = d.getVar('HOMEPAGE') >> >> >> srcdescription = d.getVar('DESCRIPTION') or "." >> >> >> - srccustomtagschunk = get_package_additional_metadata("rpm", d) >> >> >> >> >> >> srcdepends = d.getVar('DEPENDS') >> >> >> srcrdepends = [] >> >> >> @@ -333,6 +332,8 @@ python write_specfile () { >> >> >> pkgname = localdata.getVar('PKG_%s' % pkg) >> >> >> if not pkgname: >> >> >> pkgname = pkg >> >> >> + >> >> >> + srccustomtagschunk = get_package_additional_metadata("rpm", >> >> >> pkgname, d) >> >> >> localdata.setVar('PKG', pkgname) >> >> >> >> >> >> localdata.setVar('OVERRIDES', d.getVar("OVERRIDES", False) + >> >> >> ":" + pkg) >> >> >> @@ -351,7 +352,7 @@ python write_specfile () { >> >> >> splitlicense = (localdata.getVar('LICENSE') or "") >> >> >> splitsection = (localdata.getVar('SECTION') or "") >> >> >> splitdescription = (localdata.getVar('DESCRIPTION') or ".") >> >> >> - splitcustomtagschunk = get_package_additional_metadata("rpm", >> >> >> localdata) >> >> >> + splitcustomtagschunk = get_package_additional_metadata("rpm", >> >> >> pkgname, localdata) >> >> >> >> >> >> translate_vers('RDEPENDS', localdata) >> >> >> translate_vers('RRECOMMENDS', localdata) >> >> >> -- >> >> >> 2.20.1 >> >> >> >> >> >> >> >>
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#138622): https://lists.openembedded.org/g/openembedded-core/message/138622 Mute This Topic: https://lists.openembedded.org/mt/74401146/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-