All of lore.kernel.org
 help / color / mirror / Atom feed
From: Leonid Borisenko <ive.found@gmail.com>
To: openembedded-core@lists.openembedded.org
Subject: [PATCH 2/2] package_{ipk, deb, rpm}.bbclass: support additional user-defined metadata
Date: Sun, 13 May 2012 16:28:42 +0300	[thread overview]
Message-ID: <1336915722-8155-3-git-send-email-ive.found@gmail.com> (raw)
In-Reply-To: <1336915722-8155-1-git-send-email-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>
---
 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 4096fa2..7a45cec 100644
--- a/meta/classes/package_deb.bbclass
+++ b/meta/classes/package_deb.bbclass
@@ -330,6 +330,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)
 
         rdepends = bb.utils.explode_dep_versions(localdata.getVar("RDEPENDS", True) or "")
diff --git a/meta/classes/package_ipk.bbclass b/meta/classes/package_ipk.bbclass
index 73ec0ee..e3a8262 100644
--- a/meta/classes/package_ipk.bbclass
+++ b/meta/classes/package_ipk.bbclass
@@ -367,6 +367,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)
 
 		rdepends = bb.utils.explode_dep_versions(localdata.getVar("RDEPENDS", True) or "")
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass
index 2da7a8b..799e5aa 100644
--- a/meta/classes/package_rpm.bbclass
+++ b/meta/classes/package_rpm.bbclass
@@ -638,6 +638,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(d.getVar('DEPENDS', True), d)
 	srcrdepends    = []
@@ -691,6 +692,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)
@@ -759,6 +761,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
 		if splitrreplaces and splitrreplaces.strip() != "":
 			for dep in splitrreplaces.split(','):
@@ -849,6 +854,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)
 	source_list = get_tarballs(d)
 	tail_source(d,source_list,None)
 
-- 
1.7.10




  parent reply	other threads:[~2012-05-13 13:39 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-13 13:28 [PATCH 0/3] Support additional user-defined package metadata Leonid Borisenko
2012-05-13 13:28 ` [PATCH 1/2] package.bbclass: add getter of additional metadata Leonid Borisenko
2012-05-13 13:28 ` Leonid Borisenko [this message]
2012-05-18 18:34 ` [PATCH 0/3] Support additional user-defined package metadata Ive Found
2012-05-28  6:40 ` [PING v2] [PATCH 0/2] " Ive Found
2012-05-28  9:44 ` [PATCH 0/3] " Phil Blundell
2012-05-28 18:46   ` Ive Found
2012-06-06  7:28 ` [PING v3] [PATCH 0/2] " Ive Found
2012-11-03 23:01   ` Sebastian Krzyszkowiak
2012-11-06 23:58     ` Otavio Salvador
2012-11-16 18:29       ` [PATCH v2 0/2] Support additional user-defined metadata Leonid Borisenko
2012-11-16 18:29         ` [PATCH v2 1/2] package.bbclass: add getter of additional metadata Leonid Borisenko
2012-11-16 18:29         ` [PATCH v2 2/2] package_{ipk, deb, rpm}.bbclass: support additional user-defined metadata Leonid Borisenko
2012-12-07 17:28         ` [PING] [PATCH v2] Support " Leonid Borisenko
  -- strict thread matches above, loose matches on Subject: below --
2014-01-18 14:01 [PATCH 0/2] allow to define additional packaging metadata Martin Jansa
2014-01-18 14:01 ` [PATCH 2/2] package_{ipk, deb, rpm}.bbclass: support additional user-defined metadata Martin Jansa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1336915722-8155-3-git-send-email-ive.found@gmail.com \
    --to=ive.found@gmail.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.