From patchwork Fri Nov 16 18:29:26 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [v2, 2/2] package_{ipk, deb, rpm}.bbclass: support additional user-defined metadata Date: Fri, 16 Nov 2012 18:29:26 -0000 From: Leonid Borisenko X-Patchwork-Id: 39183 Message-Id: <1353090566-16318-3-git-send-email-ive.found@gmail.com> To: openembedded-core@lists.openembedded.org Additional metadata from user-defined variable is written into control/spec file of binary package. Three variables are searched for adiitional package metadata: * PACKAGE_ADD_METADATA__ * PACKAGE_ADD_METADATA_ * PACKAGE_ADD_METADATA First found variable with defined value wins. is a package name. is a distinct name of specific package type: * IPK for .ipk packages * DEB for .deb packages * RPM for .rpm packages Variable can contain multiple [one-line] metadata fields separated by literal sequence '\n'. Separator can be redefined through variable flag 'separator'. In package control/spec file separator is replaced by newline character. Signed-off-by: Leonid Borisenko --- meta/classes/package_deb.bbclass | 5 +++++ meta/classes/package_ipk.bbclass | 5 +++++ meta/classes/package_rpm.bbclass | 7 +++++++ 3 files changed, 17 insertions(+) diff --git a/meta/classes/package_deb.bbclass b/meta/classes/package_deb.bbclass index d273cb0..d59a93d 100644 --- a/meta/classes/package_deb.bbclass +++ b/meta/classes/package_deb.bbclass @@ -332,6 +332,11 @@ python do_package_deb () { raise bb.build.FuncFailed("Missing field for deb generation: %s" % value) # more fields + custom_fields_chunk = get_package_additional_metadata("deb", localdata) + if custom_fields_chunk is not None: + ctrlfile.write(unicode(custom_fields_chunk)) + ctrlfile.write("\n") + mapping_rename_hook(localdata) def debian_cmp_remap(var): diff --git a/meta/classes/package_ipk.bbclass b/meta/classes/package_ipk.bbclass index 4bf1b10..47f5091 100644 --- a/meta/classes/package_ipk.bbclass +++ b/meta/classes/package_ipk.bbclass @@ -370,6 +370,11 @@ python do_package_ipk () { raise bb.build.FuncFailed("Missing field for ipk generation: %s" % value) # more fields + custom_fields_chunk = get_package_additional_metadata("ipk", localdata) + if custom_fields_chunk is not None: + ctrlfile.write(custom_fields_chunk) + ctrlfile.write("\n") + mapping_rename_hook(localdata) def debian_cmp_remap(var): diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass index 1ff92ce..6545701 100644 --- a/meta/classes/package_rpm.bbclass +++ b/meta/classes/package_rpm.bbclass @@ -720,6 +720,7 @@ python write_specfile () { srcmaintainer = d.getVar('MAINTAINER', True) srchomepage = d.getVar('HOMEPAGE', True) srcdescription = d.getVar('DESCRIPTION', True) or "." + srccustomtagschunk = get_package_additional_metadata("rpm", d) srcdepends = strip_multilib_deps(d.getVar('DEPENDS', True), d) srcrdepends = [] @@ -773,6 +774,7 @@ python write_specfile () { splitlicense = (localdata.getVar('LICENSE', True) or "") splitsection = (localdata.getVar('SECTION', True) or "") splitdescription = (localdata.getVar('DESCRIPTION', True) or ".") + splitcustomtagschunk = get_package_additional_metadata("rpm", localdata) translate_vers('RDEPENDS', localdata) translate_vers('RRECOMMENDS', localdata) @@ -837,6 +839,9 @@ python write_specfile () { spec_preamble_bottom.append('License: %s' % splitlicense) spec_preamble_bottom.append('Group: %s' % splitsection) + if srccustomtagschunk != splitcustomtagschunk: + spec_preamble_bottom.append(splitcustomtagschunk) + # Replaces == Obsoletes && Provides robsoletes = bb.utils.explode_dep_versions2(splitrobsoletes or "") rprovides = bb.utils.explode_dep_versions2(splitrprovides or "") @@ -927,6 +932,8 @@ python write_specfile () { spec_preamble_top.append('Group: %s' % srcsection) spec_preamble_top.append('Packager: %s' % srcmaintainer) spec_preamble_top.append('URL: %s' % srchomepage) + if srccustomtagschunk: + spec_preamble_top.append(srccustomtagschunk) tail_source(d) # Replaces == Obsoletes && Provides