Hi Mark, > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of > Mark Hatle > Sent: Monday, September 12, 2011 10:52 PM > To: [email protected] > Subject: Re: [OE-core] [PATCH 1/3] package_rpm: add architecture info in rpm > spec file > > 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.
Take "task-core-boot-1.0-r8.qemux86_64.rpm" as an example, and it has dependency on tinylogin, how can it determine whether it is depends on " tinylogin-1.4-r7.x86_64.rpm" or "tinylogin-1.4-r7.x86.rpm". Thanks, Dongxiao > > --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 <[email protected]> > > --- > > 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 > > > _______________________________________________ > Openembedded-core mailing list > [email protected] > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core _______________________________________________ Openembedded-core mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
