All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paulo Neve" <ptsneves@gmail.com>
To: openembedded-core@lists.openembedded.org
Cc: Paulo Neves <ptsneves@gmail.com>
Subject: [meta-oe][PATCH] 2/2] package_{ipk, deb, rpm}.bbclass: support per package user-defined metadata.
Date: Fri, 22 May 2020 17:13:35 +0200	[thread overview]
Message-ID: <20200522151335.7918-2-ptsneves@gmail.com> (raw)
In-Reply-To: <20200522151335.7918-1-ptsneves@gmail.com>

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 <ptsneves@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


  reply	other threads:[~2020-05-22 15:13 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-22 15:13 [meta-oe][PATCH] 1/2] package-manager: Allow for package manager user fields Paulo Neve
2020-05-22 15:13 ` Paulo Neve [this message]
2020-05-22 15:22   ` [OE-core] [meta-oe][PATCH] 2/2] package_{ipk, deb, rpm}.bbclass: support per package user-defined metadata Alexander Kanavin
2020-05-22 15:28     ` Paulo Neve
2020-05-22 18:00       ` Michael Ho
2020-05-22 18:09         ` Paulo Neve
2020-05-22 19:31           ` Michael Ho
2020-05-23 17:40             ` Paulo Neve

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=20200522151335.7918-2-ptsneves@gmail.com \
    --to=ptsneves@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.