From: Mark Hatle <mark.hatle@windriver.com>
To: <openembedded-core@lists.openembedded.org>
Subject: [PATCH 1/1 RFC - Denzil] nativesdk.bbclass: Fix the remapping code on nativesdk
Date: Thu, 28 Mar 2013 14:40:29 -0500 [thread overview]
Message-ID: <1364499629-3445-1-git-send-email-mark.hatle@windriver.com> (raw)
The following patch is being sent to the oe-core list in order to meet our
Yocto Project compliance requirements. We don't believe this patch is
generally applicable to Denzil.
The purpose of this change is to fix the way automatic dependencies and such
are generated when creating nativesdk packages. (This approach was
abandoned in the Danny development and replaced with the multilib approach.)
---
When remapping the nativesdk we need to change the values of
PACKAGES, as well as the various R* items. But not only the
values, but we need to rename the vars to their new PACKAGES
entries.
In addition, if a package has "-nativesdk" already in the name
we want to add it to RPROVIDES to avoid compatibility problems.
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
---
meta/classes/insane.bbclass | 2 +
meta/classes/nativesdk.bbclass | 61 +++++++++++++++++++++++++++++++++++----
2 files changed, 56 insertions(+), 7 deletions(-)
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index 85ccdab..6a80ccf 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -213,6 +213,8 @@ def package_qa_check_staticdev(path, name, d, elf, messages):
libgcc.a, libgcov.a will be skipped in their packages
"""
+ if name.endswith("-nativesdk"):
+ name = name.replace("-nativesdk", "")
if not name.endswith("-pic") and not name.endswith("-staticdev") and path.endswith(".a") and not path.endswith("_nonshared.a"):
messages.append("non -staticdev package contains static .a library: %s path '%s'" % \
(name, package_qa_clean_path(path,d)))
diff --git a/meta/classes/nativesdk.bbclass b/meta/classes/nativesdk.bbclass
index a58fce2..3746190 100644
--- a/meta/classes/nativesdk.bbclass
+++ b/meta/classes/nativesdk.bbclass
@@ -78,7 +78,9 @@ python () {
deps = bb.utils.explode_deps(deps)
newdeps = []
for dep in deps:
- if dep.endswith("-native") or dep.endswith("-cross"):
+ if dep.startswith("rtld"):
+ newdeps.append(dep)
+ elif dep.endswith("-native") or dep.endswith("-cross"):
newdeps.append(dep)
elif dep.endswith("-gcc-intermediate") or dep.endswith("-gcc-initial") or dep.endswith("-gcc") or dep.endswith("-g++"):
newdeps.append(dep + "-crosssdk")
@@ -88,13 +90,58 @@ python () {
newdeps.append(dep)
d.setVar(varname, " ".join(newdeps))
+ def renameVars(varname, d, origpkg, newpkg):
+ origV = varname + "_" + origpkg
+ # In the case where FOO_${PN}-bar, we need to figure out the ${PN} and change it to BPN-bar-nativesdk!
+ pnV = varname + "_" + origpkg.replace("-nativesdk", "").replace(d.getVar('PN', True).replace('-nativesdk', ""),d.getVar('PN', True))
+ newV = varname + "_" + newpkg
+ if origV != newV and not d.getVar(newV, False) and d.getVar(origV, False):
+ d.renameVar(origV, newV)
+ elif pnV != newV and not d.getVar(newV, False) and d.getVar(pnV, False):
+ d.renameVar(pnV, newV)
+
map_dependencies("DEPENDS", d)
- #for pkg in (d.getVar("PACKAGES", True).split() + [""]):
- # map_dependencies("RDEPENDS", d, pkg)
- # map_dependencies("RRECOMMENDS", d, pkg)
- # map_dependencies("RSUGGESTS", d, pkg)
- # map_dependencies("RPROVIDES", d, pkg)
- # map_dependencies("RREPLACES", d, pkg)
+ newpkgs = ""
+ for pkg in (d.getVar("PACKAGES", True).split() + [""]):
+ if pkg and not pkg.endswith("-nativesdk"):
+ newpkg = pkg.replace("-nativesdk", "") + "-nativesdk"
+ # If we end up renaming this, we need to add ourselves as a provider
+ if "-nativesdk" in pkg:
+ d.appendVar("RPROVIDES_" + pkg, " " + pkg)
+ else:
+ newpkg = pkg
+ newpkgs += " " + newpkg
+
+ renameVars("FILES", d, pkg, newpkg)
+ renameVars("INSANE_SKIP", d, pkg, newpkg)
+
+ renameVars("ALTERNATIVE", d, pkg, newpkg)
+ renameVars("ALTERNATIVE_TARGET", d, pkg, newpkg)
+ renameVars("ALTERNATIVE_PRIORITY", d, pkg, newpkg)
+
+ renameVars("pkg_postinst", d, pkg, newpkg)
+ renameVars("pkg_postrm", d, pkg, newpkg)
+ renameVars("pkg_preinst", d, pkg, newpkg)
+ renameVars("pkg_prerm", d, pkg, newpkg)
+
+ renameVars("ALLOW_EMPTY", d, pkg, newpkg)
+
+ renameVars("RDEPENDS", d, pkg, newpkg)
+ map_dependencies("RDEPENDS", d, newpkg)
+ renameVars("RRECOMMENDS", d, pkg, newpkg)
+ map_dependencies("RRECOMMENDS", d, newpkg)
+ renameVars("RSUGGESTS", d, pkg, newpkg)
+ map_dependencies("RSUGGESTS", d, newpkg)
+ renameVars("RPROVIDES", d, pkg, newpkg)
+ map_dependencies("RPROVIDES", d, newpkg)
+ renameVars("RREPLACES", d, pkg, newpkg)
+ map_dependencies("RREPLACES", d, newpkg)
+ renameVars("RCONFLICTS", d, pkg, newpkg)
+ map_dependencies("RCONFLICTS", d, newpkg)
+ renameVars("PKG", d, pkg, newpkg)
+ map_dependencies("PKG", d, newpkg)
+
+ d.setVar("PACKAGES", newpkgs)
provides = d.getVar("PROVIDES", True)
for prov in provides.split():
--
1.7.1
reply other threads:[~2013-03-28 19:57 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=1364499629-3445-1-git-send-email-mark.hatle@windriver.com \
--to=mark.hatle@windriver.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox