From: Mark Hatle <mark.hatle@windriver.com>
To: <openembedded-core@lists.openembedded.org>
Subject: Re: [PATCH 1/3] package_rpm: add architecture info in rpm spec file
Date: Mon, 12 Sep 2011 09:51:54 -0500 [thread overview]
Message-ID: <4E6E1C8A.5060508@windriver.com> (raw)
In-Reply-To: <85e223c8783eca48835226c2786e60b2c67e66df.1315815933.git.dongxiao.xu@intel.com>
This patch is incorrect. Architectural information should not be in the
dependencies within RPM packages.
RPM is expected to find the proper version of a package to install based on the
existing dependency information. I'm in the process of investigating why
certain items are not found properly.
--Mark
On 9/12/11 3:33 AM, Dongxiao Xu wrote:
> For supporting multilib, architecture information is needed in package
> require/provide/suggest/recommend fields.
>
> Use DEFAULTTUNE value as the postfix.
>
> For "all" arch recipe, it requires "all" arch recipe with no postfix,
> but provides all possible multilib archs.
>
> For example, qemu-config:
>
> Requires: rsync
> Requires: update-rc.d
> Requires: task-core-nfs-server
> Requires: distcc
> Requires: oprofileui-server
> Requires: dbus-x11
> Requires: bash
> Provides: qemu-config.x86
> Provides: qemu-config.x86-64
>
> For other recipe like zlib:
>
> Requires: libc6.x86-64 >= 2.13
> Provides: zlib.x86-64
>
> [YOCTO #1457]
>
> Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
> ---
> meta/classes/multilib.bbclass | 1 +
> meta/classes/package_rpm.bbclass | 36 ++++++++++++++++++++++++++++++++++++
> 2 files changed, 37 insertions(+), 0 deletions(-)
>
> diff --git a/meta/classes/multilib.bbclass b/meta/classes/multilib.bbclass
> index 583d76b..76c86b2 100644
> --- a/meta/classes/multilib.bbclass
> +++ b/meta/classes/multilib.bbclass
> @@ -23,6 +23,7 @@ python multilib_virtclass_handler () {
> e.data.setVar("PN", variant + "-" + e.data.getVar("PN", False))
> e.data.setVar("SHLIBSDIR_virtclass-multilib-" + variant ,e.data.getVar("SHLIBSDIR", False) + "/" + variant)
> e.data.setVar("TARGET_VENDOR_virtclass-multilib-" + variant, e.data.getVar("TARGET_VENDOR", False) + "ml" + variant)
> + e.data.setVar("SAVED_DEFAULTTUNE", e.data.getVar("DEFAULTTUNE", True))
> e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override)
> }
>
> diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass
> index 9ef1acd..ea0a079 100644
> --- a/meta/classes/package_rpm.bbclass
> +++ b/meta/classes/package_rpm.bbclass
> @@ -350,6 +350,7 @@ package_install_internal_rpm () {
> python write_specfile () {
> import textwrap
> import oe.packagedata
> + import re
>
> # We need a simple way to remove the MLPREFIX from the package name,
> # and dependency information...
> @@ -498,6 +499,8 @@ python write_specfile () {
>
> splitname = strip_multilib(pkgname, d)
>
> + defaulttune = bb.data.getVar('DEFAULTTUNE', localdata, True)
> +
> splitsummary = (bb.data.getVar('SUMMARY', localdata, True) or bb.data.getVar('DESCRIPTION', localdata, True) or ".")
> splitversion = (bb.data.getVar('PKGV', localdata, True) or "").replace('-', '+')
> splitrelease = (bb.data.getVar('PKGR', localdata, True) or "")
> @@ -528,6 +531,39 @@ python write_specfile () {
> if pkg == d.getVar("PN", True):
> splitrprovides = splitrprovides + " " + (d.getVar('ALTERNATIVE_LINK', True) or '') + " " + (d.getVar('ALTERNATIVE_LINKS', True) or '')
>
> + package_arch = bb.data.getVar('PACKAGE_ARCH', localdata, True)
> +
> + splitrprovides = splitrprovides + " " + splitname + "." + defaulttune
> + if package_arch != "all":
> + pattern = '\([^()]*\)'
> + prog = re.compile(pattern)
> +
> + str_list = [splitrdepends, splitrrecommends, splitrsuggests]
> + for e in range(len(str_list)):
> + brackets = prog.findall(str_list[e])
> + for i in range(len(brackets)):
> + str_list[e] = str_list[e].replace(brackets[i], "#BRACKETS"+str(i)+"#")
> + tmp = ""
> + for i in str_list[e].split():
> + if i.startswith("#BRACKETS"):
> + tmp += " " + str(i)
> + continue
> + tmp += " " + str(i) + "." + defaulttune
> + str_list[e] = tmp
> + for i in range(len(brackets)):
> + str_list[e] = str_list[e].replace("#BRACKETS"+str(i)+"#", brackets[i])
> +
> + [splitrdepends, splitrrecommends, splitrsuggests] = str_list
> + else:
> + variants = (bb.data.getVar("MULTILIB_VARIANTS", localdata, True) or "").split()
> + for variant in variants:
> + tune = bb.data.getVar("DEFAULTTUNE_virtclass-multilib-" + variant, localdata, True) or ""
> + if tune:
> + splitrprovides = splitrprovides + " " + splitname + "." + tune
> + tune = bb.data.getVar("SAVED_DEFAULTTUNE", localdata, True) or ""
> + if tune:
> + splitrprovides = splitrprovides + " " + splitname + "." + tune
> +
> # Gather special src/first package data
> if srcname == splitname:
> srcrdepends = splitrdepends
next prev parent reply other threads:[~2011-09-12 14:57 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-12 8:33 [PATCH 0/3][RFC] rpm: multilib related fixes Dongxiao Xu
2011-09-12 8:33 ` [PATCH 1/3] package_rpm: add architecture info in rpm spec file Dongxiao Xu
2011-09-12 14:51 ` Mark Hatle [this message]
2011-09-13 2:24 ` Xu, Dongxiao
2011-09-13 15:29 ` Mark Hatle
2011-09-13 15:41 ` Xu, Dongxiao
2011-09-13 15:58 ` Mark Hatle
2011-09-14 1:03 ` Xu, Dongxiao
2011-09-14 14:33 ` Mark Hatle
2011-09-12 8:34 ` [PATCH 2/3] rpm: add multilib prefix for archs under deploy/rpm Dongxiao Xu
2011-09-12 14:55 ` Mark Hatle
2011-09-12 15:07 ` Xu, Dongxiao
2011-09-12 17:22 ` Mark Hatle
2011-09-13 2:39 ` Xu, Dongxiao
2011-09-13 15:24 ` Mark Hatle
2011-09-14 2:56 ` Xu, Dongxiao
2011-09-14 14:34 ` Mark Hatle
2011-09-12 8:34 ` [PATCH 3/3] multilib: install MULTILIB_PACKAGE_INSTALL Dongxiao Xu
-- strict thread matches above, loose matches on Subject: below --
2011-09-14 6:08 [PATCH 0/3][RFC v2] rpm: multilib related fixes Dongxiao Xu
2011-09-14 6:08 ` [PATCH 1/3] package_rpm: add architecture info in rpm spec file Dongxiao Xu
2011-09-14 14:37 ` Mark Hatle
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=4E6E1C8A.5060508@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 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.