* [PATCH 1/2] package.bbclass: add getter of additional metadata
2014-01-18 14:01 [PATCH 0/2] allow to define additional packaging metadata Martin Jansa
@ 2014-01-18 14:01 ` Martin Jansa
2014-01-18 14:01 ` [PATCH 2/2] package_{ipk, deb, rpm}.bbclass: support additional user-defined metadata Martin Jansa
1 sibling, 0 replies; 3+ messages in thread
From: Martin Jansa @ 2014-01-18 14:01 UTC (permalink / raw)
To: openembedded-core
From: Leonid Borisenko <ive.found@gmail.com>
Two variables are searched for value of additional package metadata:
* PACKAGE_ADD_METADATA_<PKGTYPE>
* PACKAGE_ADD_METADATA
First found variable with defined value wins.
<PKGTYPE> is a parameter of getter and expected to be a distinct name
of specific package type. For example: 'DEB' or 'RPM'.
Variable can contain multiple [one-line] metadata fields, separated by
literal sequence '\n'. Separator can be redefined through variable flag
'separator'. Getter returns found value with separator replaced with
newline character.
As side-effect, searched variables acquired flags 'type' (equals to
'list') and 'separator'.
Signed-off-by: Leonid Borisenko <ive.found@gmail.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
meta/classes/package.bbclass | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 768047c..561800a 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -363,6 +363,17 @@ def get_package_mapping (pkg, basepkg, d):
return pkg
+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) 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()
+
def runtime_mapping_rename (varname, pkg, d):
#bb.note("%s before: %s" % (varname, d.getVar(varname, True)))
--
1.8.5.2
^ permalink raw reply related [flat|nested] 3+ messages in thread* [PATCH 2/2] package_{ipk, deb, rpm}.bbclass: support additional user-defined metadata
2014-01-18 14:01 [PATCH 0/2] allow to define additional packaging metadata Martin Jansa
2014-01-18 14:01 ` [PATCH 1/2] package.bbclass: add getter of additional metadata Martin Jansa
@ 2014-01-18 14:01 ` Martin Jansa
1 sibling, 0 replies; 3+ messages in thread
From: Martin Jansa @ 2014-01-18 14:01 UTC (permalink / raw)
To: openembedded-core
From: Leonid Borisenko <ive.found@gmail.com>
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_<PKGTYPE>_<PN>
* PACKAGE_ADD_METADATA_<PKGTYPE>
* PACKAGE_ADD_METADATA
First found variable with defined value wins.
<PN> is a package name. <PKGTYPE> 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 <ive.found@gmail.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
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 82ff432..5d316aa 100644
--- a/meta/classes/package_deb.bbclass
+++ b/meta/classes/package_deb.bbclass
@@ -318,6 +318,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 e7b2755..2d8e459 100644
--- a/meta/classes/package_ipk.bbclass
+++ b/meta/classes/package_ipk.bbclass
@@ -331,6 +331,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 acbb18d..2d193b7 100644
--- a/meta/classes/package_rpm.bbclass
+++ b/meta/classes/package_rpm.bbclass
@@ -737,6 +737,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 = []
@@ -790,6 +791,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)
@@ -863,6 +865,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 "")
@@ -965,6 +970,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
--
1.8.5.2
^ permalink raw reply related [flat|nested] 3+ messages in thread