* [PATCH 0/8] Multilib core enablement patches
@ 2011-07-26 21:53 Richard Purdie
2011-07-26 21:53 ` [PATCH 1/8] multilib: Add support for compiling recipes against multiple ABIs Richard Purdie
` (7 more replies)
0 siblings, 8 replies; 11+ messages in thread
From: Richard Purdie @ 2011-07-26 21:53 UTC (permalink / raw)
To: openembedded-core
This patch series forms the core multilib enablement for OE-Core. The first patch
adds the main class which can be enabled as per the local.conf.sample code.
The following patches are various misc multilib related tweaks the system needed.
Following this series, the tune changes I posted earlier and Mark's header changes,
the only remaining piece is the package manager integration. I'll post those as a
separate follow on series but those are likely still in need of some tweaks before
merging.
The patches are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib rpurdie/ml4
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=rpurdie/ml4
Dongxiao Xu (1):
distcc: fix makefile parameter order
Mark Hatle (1):
RPM: multilib file class/color
Richard Purdie (2):
multilib: Add support for compiling recipes against multiple ABIs
lib/oe/util.py: Add MLPREFIX support to prune_suffix()
Yu Ke (4):
do_split_packages: revise for multilib case
eglibc: fix for multilib RPROVIDES issue
cmake.bbclass: add ${libdir}} for multilib case
linux-yocto: revise the dependency for multilib
meta/classes/autotools.bbclass | 2 +-
meta/classes/cmake.bbclass | 2 +-
meta/classes/insane.bbclass | 3 +-
meta/classes/multilib.bbclass | 87 ++++++++++++++++++++
meta/classes/package.bbclass | 15 ++++
meta/conf/bitbake.conf | 1 +
meta/conf/local.conf.sample | 5 +
meta/conf/multilib.conf | 24 ++++++
meta/lib/oe/utils.py | 7 ++-
meta/recipes-core/dbus/dbus.inc | 8 +-
meta/recipes-core/eglibc/eglibc-package.inc | 2 +-
meta/recipes-devtools/distcc/distcc_2.18.3.bb | 3 +-
.../distcc/files/makefile-param-order.patch | 20 +++++
meta/recipes-devtools/gcc/libgcc_4.6.bb | 6 +-
meta/recipes-devtools/rpm/rpm/rpm-fileclass.patch | 34 ++++++++
meta/recipes-devtools/rpm/rpm_5.4.0.bb | 1 +
meta/recipes-kernel/linux/linux-tools.inc | 2 +-
17 files changed, 207 insertions(+), 15 deletions(-)
create mode 100644 meta/classes/multilib.bbclass
create mode 100644 meta/conf/multilib.conf
create mode 100644 meta/recipes-devtools/distcc/files/makefile-param-order.patch
create mode 100644 meta/recipes-devtools/rpm/rpm/rpm-fileclass.patch
--
1.7.4.1
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH 1/8] multilib: Add support for compiling recipes against multiple ABIs 2011-07-26 21:53 [PATCH 0/8] Multilib core enablement patches Richard Purdie @ 2011-07-26 21:53 ` Richard Purdie 2011-08-01 16:30 ` Phil Blundell 2011-07-26 21:53 ` [PATCH 2/8] lib/oe/util.py: Add MLPREFIX support to prune_suffix() Richard Purdie ` (6 subsequent siblings) 7 siblings, 1 reply; 11+ messages in thread From: Richard Purdie @ 2011-07-26 21:53 UTC (permalink / raw) To: openembedded-core This patch adds the core multilib class which can be used along with a parameter specifying the mutlilib to use in BBCLASSEXTEND. The MLPREFIX variable is added and can be used in cases where its too difficult to dynmaically work out where a mutltilib prefix is needed to be added to a variable. This includes: * SHLIBSDIR and PACKAGE_ARCH fixes from Lianhao Lu. * PACKAGE_DYNAMIC mapping from Yu Ke * PACKAGE_INSTALL mapping from Yu Ke * RPROVIDES mapping from Yu Ke * TARGET_VENDOR fix from Mark Hatle * Ignorning *-native-runtime dependnecies as well as *-native from Yu Ke Signed-off-by: Yu Ke <ke.yu@intel.com> Signed-off-by: Xu Dongxiao <dongxiao.xu@intel.com> Signed-off-by: Lianhao Lu <lianhao.lu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> --- meta/classes/autotools.bbclass | 2 +- meta/classes/insane.bbclass | 3 +- meta/classes/multilib.bbclass | 87 +++++++++++++++++++++++++++++++ meta/classes/package.bbclass | 11 ++++ meta/conf/bitbake.conf | 1 + meta/conf/local.conf.sample | 5 ++ meta/conf/multilib.conf | 24 +++++++++ meta/recipes-core/dbus/dbus.inc | 8 +-- meta/recipes-devtools/gcc/libgcc_4.6.bb | 6 +- 9 files changed, 137 insertions(+), 10 deletions(-) create mode 100644 meta/classes/multilib.bbclass create mode 100644 meta/conf/multilib.conf diff --git a/meta/classes/autotools.bbclass b/meta/classes/autotools.bbclass index ed5637e..e5c13ae 100644 --- a/meta/classes/autotools.bbclass +++ b/meta/classes/autotools.bbclass @@ -9,7 +9,7 @@ def autotools_dep_prepend(d): return deps deps += 'autoconf-native automake-native help2man-native ' - if not pn in ['libtool', 'libtool-native', 'libtool-cross']: + if not pn in ['libtool', 'libtool-native'] and not pn.endswith("libtool-cross"): deps += 'libtool-native ' if not bb.data.inherits_class('native', d) \ and not bb.data.inherits_class('cross', d) \ diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass index d56c9ed..5fb0d98 100644 --- a/meta/classes/insane.bbclass +++ b/meta/classes/insane.bbclass @@ -571,12 +571,13 @@ Rerun configure task after fixing this. The path was '%s'""" % root) cnf = bb.data.getVar('EXTRA_OECONF', d, True) or "" if "gettext" not in bb.data.getVar('P', d, True) and "gcc-runtime" not in bb.data.getVar('P', d, True) and "--disable-nls" not in cnf: + ml = d.getVar("MLPREFIX", True) or "" if bb.data.inherits_class('native', d) or bb.data.inherits_class('cross', d) or bb.data.inherits_class('crosssdk', d) or bb.data.inherits_class('nativesdk', d): gt = "gettext-native" elif bb.data.inherits_class('cross-canadian', d): gt = "gettext-nativesdk" else: - gt = "virtual/gettext" + gt = "virtual/" + ml + "gettext" deps = bb.utils.explode_deps(bb.data.getVar('DEPENDS', d, True) or "") if gt not in deps: for config in configs: diff --git a/meta/classes/multilib.bbclass b/meta/classes/multilib.bbclass new file mode 100644 index 0000000..ceed990 --- /dev/null +++ b/meta/classes/multilib.bbclass @@ -0,0 +1,87 @@ +python multilib_virtclass_handler () { + if not isinstance(e, bb.event.RecipePreFinalise): + return + + cls = e.data.getVar("BBEXTENDCURR", True) + variant = e.data.getVar("BBEXTENDVARIANT", True) + if cls != "multilib" or not variant: + return + + override = ":virtclass-multilib-" + variant + + 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("OVERRIDES", e.data.getVar("OVERRIDES", False) + override) +} + +addhandler multilib_virtclass_handler + +STAGINGCC_prepend = "${BBEXTENDVARIANT}-" + +python __anonymous () { + variant = d.getVar("BBEXTENDVARIANT", True) + d.setVar("MLPREFIX", variant + "-") + + def extend_name(name): + if name.startswith("virtual/"): + subs = name.split("/", 1)[1] + if not subs.startswith(variant): + return "virtual/" + variant + "-" + subs + return name + if not name.startswith(variant): + return variant + "-" + name + return name + + def map_dependencies(varname, d, suffix = ""): + if suffix: + varname = varname + "_" + suffix + deps = d.getVar(varname, True) + if not deps: + return + deps = bb.utils.explode_deps(deps) + newdeps = [] + for dep in deps: + if dep.endswith(("-native", "-native-runtime")): + newdeps.append(dep) + else: + newdeps.append(extend_name(dep)) + d.setVar(varname, " ".join(newdeps)) + + def map_variable(varname, d): + var = d.getVar(varname, True) + if not var: + return + var = var.split() + newvar = [] + for v in var: + newvar.append(extend_name(v)) + d.setVar(varname, " ".join(newvar)) + + pkgs = [] + pkgrename = {} + for pkg in (d.getVar("PACKAGES", True) or "").split(): + if pkg.startswith(variant): + pkgs.append(pkg) + continue + pkgrename[pkg] = extend_name(pkg) + pkgs.append(pkgrename[pkg]) + + if pkgrename: + d.setVar("PACKAGES", " ".join(pkgs)) + for pkg in pkgrename: + for subs in ["FILES", "RDEPENDS", "RRECOMMENDS", "SUMMARY", "DESCRIPTION", "RSUGGESTS", "RPROVIDES", "RCONFLICTS"]: + d.renameVar("%s_%s" % (subs, pkg), "%s_%s" % (subs, pkgrename[pkg])) + + 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) + + map_variable("PROVIDES", d) + map_variable("PACKAGES_DYNAMIC", d) + map_variable("PACKAGE_INSTALL", d) +} diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index f2950e2..ea8ad05 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass @@ -168,6 +168,17 @@ python () { bb.data.setVarFlag('do_package', 'deptask', " ".join(deps), d) else: d.setVar("PACKAGERDEPTASK", "") + + multilib_archs = [] + multilibs= d.getVar('MULTILIBS', True) or "" + if multilibs: + for ext in multilibs.split(): + eext = ext.split(':') + if len(eext) > 1: + if eext[0] == 'multilib': + multilib_archs.append('ml' + eext[1]) + + d.setVar("MULTILIB_ARCHS", ' '.join(multilib_archs)) } def splitfile(file, debugfile, debugsrcdir, d): diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index 46a9a82..6e109ec 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf @@ -735,3 +735,4 @@ BB_SIGNATURE_HANDLER ?= "basic" BB_HASHTASK_WHITELIST ?= "(.*-cross$|.*-native$|.*-cross-initial$|.*-cross-intermediate$|^virtual:native:.*|^virtual:nativesdk:.*)" BB_HASHBASE_WHITELIST ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH DL_DIR SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM USER FILESPATH USERNAME STAGING_DIR_HOST STAGING_DIR_TARGET COREBASE" +MLPREFIX ??= "" diff --git a/meta/conf/local.conf.sample b/meta/conf/local.conf.sample index 812b896..4be7b1d 100644 --- a/meta/conf/local.conf.sample +++ b/meta/conf/local.conf.sample @@ -189,3 +189,8 @@ NO32LIBS = "1" # Uncomment this if your host distribution provides the help2man tool. #ASSUME_PROVIDED += "help2man-native" + +# Uncomment the following lines to enable multilib builds +#require conf/multilib.conf +#MULTILIBS = "multilib:lib32" +#TUNENAME_virtclass-multilib-lib32 = "x86" diff --git a/meta/conf/multilib.conf b/meta/conf/multilib.conf new file mode 100644 index 0000000..894b7a5 --- /dev/null +++ b/meta/conf/multilib.conf @@ -0,0 +1,24 @@ + +baselib = "${@d.getVar('BASE_LIB_tune-' + (d.getVar('DEFAULTTUNE', True) or 'INVALID'), True) or 'lib'}" + +MULTILIBS ??= "multilib:lib32" +BBCLASSEXTEND_append_pn-linux-libc-headers = " ${MULTILIBS}" +BBCLASSEXTEND_append_pn-eglibc-initial = " ${MULTILIBS}" +BBCLASSEXTEND_append_pn-eglibc = " ${MULTILIBS}" +BBCLASSEXTEND_append_pn-libgcc = " ${MULTILIBS}" +BBCLASSEXTEND_append_pn-gcc-runtime = " ${MULTILIBS}" +BBCLASSEXTEND_append_pn-libtool-cross = " ${MULTILIBS}" +BBCLASSEXTEND_append_pn-zlib = " ${MULTILIBS}" +BBCLASSEXTEND_append_pn-binutils-cross = " ${MULTILIBS}" +BBCLASSEXTEND_append_pn-gcc-cross-initial = " ${MULTILIBS}" +BBCLASSEXTEND_append_pn-gcc-cross-intermediate = " ${MULTILIBS}" +BBCLASSEXTEND_append_pn-gcc-cross = " ${MULTILIBS}" +BBCLASSEXTEND_append_pn-busybox = " ${MULTILIBS}" +BBCLASSEXTEND_append_pn-update-rc.d = " ${MULTILIBS}" +BBCLASSEXTEND_append_pn-util-linux = " ${MULTILIBS}" +BBCLASSEXTEND_append_pn-gettext = " ${MULTILIBS}" +BBCLASSEXTEND_append_pn-bash = " ${MULTILIBS}" +BBCLASSEXTEND_append_pn-ncurses = " ${MULTILIBS}" +BBCLASSEXTEND_append_pn-expat = " ${MULTILIBS}" +BBCLASSEXTEND_append_pn-eglibc-locale = " ${MULTILIBS}" + diff --git a/meta/recipes-core/dbus/dbus.inc b/meta/recipes-core/dbus/dbus.inc index 5f9a8a3..6b76cba 100644 --- a/meta/recipes-core/dbus/dbus.inc +++ b/meta/recipes-core/dbus/dbus.inc @@ -5,11 +5,9 @@ SECTION = "base" LICENSE = "AFL-2 | GPLv2+" LIC_FILES_CHKSUM = "file://COPYING;md5=10dded3b58148f3f1fd804b26354af3e \ file://dbus/dbus.h;firstline=6;endline=20;md5=6eea2e0c7750dd8e620dcb1437312fa5" -x11deps = "virtual/libx11 libsm" -basedeps = "expat virtual/libintl" -DEPENDS = "${basedeps} ${x11deps}" -DEPENDS_virtclass-native = "${basedeps}" -DEPENDS_virtclass-nativesdk = "${basedeps} virtual/libx11" +DEPENDS = "expat virtual/libintl virtual/libx11 libsm" +DEPENDS_virtclass-native = "expat-native virtual/libintl-native" +DEPENDS_virtclass-nativesdk = "expat-nativesdk virtual/libintl-nativesdk virtual/libx11" SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \ file://tmpdir.patch; \ diff --git a/meta/recipes-devtools/gcc/libgcc_4.6.bb b/meta/recipes-devtools/gcc/libgcc_4.6.bb index 6a77ce4..a6e1146 100644 --- a/meta/recipes-devtools/gcc/libgcc_4.6.bb +++ b/meta/recipes-devtools/gcc/libgcc_4.6.bb @@ -41,9 +41,9 @@ do_install () { chmod +x ${D}${base_libdir}/libgcc_s.so.* } -do_package_write_ipk[depends] += "virtual/libc:do_package" -do_package_write_deb[depends] += "virtual/libc:do_package" -do_package_write_rpm[depends] += "virtual/libc:do_package" +do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_package" +do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_package" +do_package_write_rpm[depends] += "virtual/${MLPREFIX}libc:do_package" BBCLASSEXTEND = "nativesdk" -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 1/8] multilib: Add support for compiling recipes against multiple ABIs 2011-07-26 21:53 ` [PATCH 1/8] multilib: Add support for compiling recipes against multiple ABIs Richard Purdie @ 2011-08-01 16:30 ` Phil Blundell 2011-08-01 17:00 ` Richard Purdie 0 siblings, 1 reply; 11+ messages in thread From: Phil Blundell @ 2011-08-01 16:30 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Tue, 2011-07-26 at 22:53 +0100, Richard Purdie wrote: > +MULTILIBS ??= "multilib:lib32" > +BBCLASSEXTEND_append_pn-linux-libc-headers = " ${MULTILIBS}" > +BBCLASSEXTEND_append_pn-eglibc-initial = " ${MULTILIBS}" > +BBCLASSEXTEND_append_pn-eglibc = " ${MULTILIBS}" > +BBCLASSEXTEND_append_pn-libgcc = " ${MULTILIBS}" > +BBCLASSEXTEND_append_pn-gcc-runtime = " ${MULTILIBS}" > +BBCLASSEXTEND_append_pn-libtool-cross = " ${MULTILIBS}" > +BBCLASSEXTEND_append_pn-zlib = " ${MULTILIBS}" > +BBCLASSEXTEND_append_pn-binutils-cross = " ${MULTILIBS}" > +BBCLASSEXTEND_append_pn-gcc-cross-initial = " ${MULTILIBS}" > +BBCLASSEXTEND_append_pn-gcc-cross-intermediate = " ${MULTILIBS}" > +BBCLASSEXTEND_append_pn-gcc-cross = " ${MULTILIBS}" > +BBCLASSEXTEND_append_pn-busybox = " ${MULTILIBS}" > +BBCLASSEXTEND_append_pn-update-rc.d = " ${MULTILIBS}" > +BBCLASSEXTEND_append_pn-util-linux = " ${MULTILIBS}" > +BBCLASSEXTEND_append_pn-gettext = " ${MULTILIBS}" > +BBCLASSEXTEND_append_pn-bash = " ${MULTILIBS}" > +BBCLASSEXTEND_append_pn-ncurses = " ${MULTILIBS}" > +BBCLASSEXTEND_append_pn-expat = " ${MULTILIBS}" > +BBCLASSEXTEND_append_pn-eglibc-locale = " ${MULTILIBS}" What's the significance of this set of package names? I couldn't immediately spot an obvious reason why these particular recipes were getting special treatment. It seems particularly weird to have update-rc.d in there since that is an allarch recipe and (one hopes) isn't going to change much under multilib. p. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/8] multilib: Add support for compiling recipes against multiple ABIs 2011-08-01 16:30 ` Phil Blundell @ 2011-08-01 17:00 ` Richard Purdie 0 siblings, 0 replies; 11+ messages in thread From: Richard Purdie @ 2011-08-01 17:00 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Mon, 2011-08-01 at 17:30 +0100, Phil Blundell wrote: > On Tue, 2011-07-26 at 22:53 +0100, Richard Purdie wrote: > > +MULTILIBS ??= "multilib:lib32" > > +BBCLASSEXTEND_append_pn-linux-libc-headers = " ${MULTILIBS}" > > +BBCLASSEXTEND_append_pn-eglibc-initial = " ${MULTILIBS}" > > +BBCLASSEXTEND_append_pn-eglibc = " ${MULTILIBS}" > > +BBCLASSEXTEND_append_pn-libgcc = " ${MULTILIBS}" > > +BBCLASSEXTEND_append_pn-gcc-runtime = " ${MULTILIBS}" > > +BBCLASSEXTEND_append_pn-libtool-cross = " ${MULTILIBS}" > > +BBCLASSEXTEND_append_pn-zlib = " ${MULTILIBS}" > > +BBCLASSEXTEND_append_pn-binutils-cross = " ${MULTILIBS}" > > +BBCLASSEXTEND_append_pn-gcc-cross-initial = " ${MULTILIBS}" > > +BBCLASSEXTEND_append_pn-gcc-cross-intermediate = " ${MULTILIBS}" > > +BBCLASSEXTEND_append_pn-gcc-cross = " ${MULTILIBS}" > > +BBCLASSEXTEND_append_pn-busybox = " ${MULTILIBS}" > > +BBCLASSEXTEND_append_pn-update-rc.d = " ${MULTILIBS}" > > +BBCLASSEXTEND_append_pn-util-linux = " ${MULTILIBS}" > > +BBCLASSEXTEND_append_pn-gettext = " ${MULTILIBS}" > > +BBCLASSEXTEND_append_pn-bash = " ${MULTILIBS}" > > +BBCLASSEXTEND_append_pn-ncurses = " ${MULTILIBS}" > > +BBCLASSEXTEND_append_pn-expat = " ${MULTILIBS}" > > +BBCLASSEXTEND_append_pn-eglibc-locale = " ${MULTILIBS}" > > What's the significance of this set of package names? I couldn't > immediately spot an obvious reason why these particular recipes were > getting special treatment. > > It seems particularly weird to have update-rc.d in there since that is > an allarch recipe and (one hopes) isn't going to change much under > multilib. It was the basic testing set of things we'd tested with multilib. We still need to better handle "all" arch, likely by adding in some RPROVIDES and disabling the class extensions themselves. Its intended this list go away in time and the extentions work with any recipe and this is purely a transition artefact. Cheers, Richard ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/8] lib/oe/util.py: Add MLPREFIX support to prune_suffix() 2011-07-26 21:53 [PATCH 0/8] Multilib core enablement patches Richard Purdie 2011-07-26 21:53 ` [PATCH 1/8] multilib: Add support for compiling recipes against multiple ABIs Richard Purdie @ 2011-07-26 21:53 ` Richard Purdie 2011-07-26 21:53 ` [PATCH 3/8] do_split_packages: revise for multilib case Richard Purdie ` (5 subsequent siblings) 7 siblings, 0 replies; 11+ messages in thread From: Richard Purdie @ 2011-07-26 21:53 UTC (permalink / raw) To: openembedded-core prune_suffix() also needs be aware of MLPREFIX when changing PN for use in BPN. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> --- meta/lib/oe/utils.py | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py index 5a63ed3..b3473d3 100644 --- a/meta/lib/oe/utils.py +++ b/meta/lib/oe/utils.py @@ -58,7 +58,12 @@ def prune_suffix(var, suffixes, d): # remove it if found for suffix in suffixes: if var.endswith(suffix): - return var.replace(suffix, "") + var = var.replace(suffix, "") + + prefix = d.getVar("MLPREFIX", True) + if prefix and var.startswith(prefix): + var = var.replace(prefix, "") + return var def str_filter(f, str, d): -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/8] do_split_packages: revise for multilib case 2011-07-26 21:53 [PATCH 0/8] Multilib core enablement patches Richard Purdie 2011-07-26 21:53 ` [PATCH 1/8] multilib: Add support for compiling recipes against multiple ABIs Richard Purdie 2011-07-26 21:53 ` [PATCH 2/8] lib/oe/util.py: Add MLPREFIX support to prune_suffix() Richard Purdie @ 2011-07-26 21:53 ` Richard Purdie 2011-07-26 21:53 ` [PATCH 4/8] eglibc: fix for multilib RPROVIDES issue Richard Purdie ` (4 subsequent siblings) 7 siblings, 0 replies; 11+ messages in thread From: Richard Purdie @ 2011-07-26 21:53 UTC (permalink / raw) To: openembedded-core From: Yu Ke <ke.yu@intel.com> in multilib case, the PACKAGE_DYNAMIC is overrided with multilib prefix. Take multilib:lib64-perl as example. the "perl-module-*" will become "lib64-perl-module-*" the output_pattern in do_split_packages is designed to work with PACKAGE_DYNAMIC, so it should be applied with the same logic, i.e. overriding with multilib prefix. otherwise the do_split_package will split incorrect files this patch implements the mulitlib override logic for do_split_packages Signed-off-by: Yu Ke <ke.yu@intel.com> Signed-off-by: Xu Dongxiao <dongxiao.xu@intel.com> --- meta/classes/package.bbclass | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index ea8ad05..99c60e8 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass @@ -70,6 +70,10 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst given package, usually plugins or modules. """ + ml = d.getVar("MLPREFIX", True) + if ml and not output_pattern.startswith(ml): + output_pattern = ml + output_pattern + dvar = bb.data.getVar('PKGD', d, True) packages = bb.data.getVar('PACKAGES', d, True).split() -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/8] eglibc: fix for multilib RPROVIDES issue 2011-07-26 21:53 [PATCH 0/8] Multilib core enablement patches Richard Purdie ` (2 preceding siblings ...) 2011-07-26 21:53 ` [PATCH 3/8] do_split_packages: revise for multilib case Richard Purdie @ 2011-07-26 21:53 ` Richard Purdie 2011-07-26 21:53 ` [PATCH 5/8] cmake.bbclass: add ${libdir}} for multilib case Richard Purdie ` (3 subsequent siblings) 7 siblings, 0 replies; 11+ messages in thread From: Richard Purdie @ 2011-07-26 21:53 UTC (permalink / raw) To: openembedded-core From: Yu Ke <ke.yu@intel.com> in eglibc-package.inc, the "PACKAGES" variable use the ${PN} reference, while RPROVIDES does not use ${PN}. This will lead multilib.bbclass not mapping its RPROVIDES, and cause "NO RPROVIDER: lib64-glibc-utils" error. This patch unify the recipe to fix this issue Signed-off-by: Yu Ke <ke.yu@intel.com> --- meta/recipes-core/eglibc/eglibc-package.inc | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/meta/recipes-core/eglibc/eglibc-package.inc b/meta/recipes-core/eglibc/eglibc-package.inc index 9e71150..e5524e8 100644 --- a/meta/recipes-core/eglibc/eglibc-package.inc +++ b/meta/recipes-core/eglibc/eglibc-package.inc @@ -43,7 +43,7 @@ PACKAGES += "${PN}-localedatas" RRECOMMENDS_${PN}-localedatas = "${@" ".join([p for p in d.getVar('PACKAGES', True).split() if p.find("eglibc-localedata") != -1])}" RPROVIDES_eglibc = "glibc" -RPROVIDES_eglibc-utils = "glibc-utils" +RPROVIDES_${PN}-utils = "glibc-utils" RPROVIDES_eglibc-pic = "glibc-pic" RPROVIDES_eglibc-dev = "glibc-dev" RPROVIDES_eglibc-doc = "glibc-doc" -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 5/8] cmake.bbclass: add ${libdir}} for multilib case 2011-07-26 21:53 [PATCH 0/8] Multilib core enablement patches Richard Purdie ` (3 preceding siblings ...) 2011-07-26 21:53 ` [PATCH 4/8] eglibc: fix for multilib RPROVIDES issue Richard Purdie @ 2011-07-26 21:53 ` Richard Purdie 2011-07-26 21:53 ` [PATCH 6/8] linux-yocto: revise the dependency for multilib Richard Purdie ` (2 subsequent siblings) 7 siblings, 0 replies; 11+ messages in thread From: Richard Purdie @ 2011-07-26 21:53 UTC (permalink / raw) To: openembedded-core From: Yu Ke <ke.yu@intel.com> Signed-off-by: Yu Ke <ke.yu@intel.com> --- meta/classes/cmake.bbclass | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass index 5ac540c..89a154f 100644 --- a/meta/classes/cmake.bbclass +++ b/meta/classes/cmake.bbclass @@ -57,7 +57,7 @@ set( CMAKE_INSTALL_RPATH ${OECMAKE_RPATH} ) set( CMAKE_MODULE_PATH ${STAGING_DATADIR}/cmake/Modules/ ) # add for non /usr/lib libdir, e.g. /usr/lib64 -LIST(APPEND CMAKE_SYSTEM_LIBRARY_PATH ${libdir}) +set( CMAKE_LIBRARY_PATH ${libdir} ) EOF } -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 6/8] linux-yocto: revise the dependency for multilib 2011-07-26 21:53 [PATCH 0/8] Multilib core enablement patches Richard Purdie ` (4 preceding siblings ...) 2011-07-26 21:53 ` [PATCH 5/8] cmake.bbclass: add ${libdir}} for multilib case Richard Purdie @ 2011-07-26 21:53 ` Richard Purdie 2011-07-26 21:53 ` [PATCH 7/8] distcc: fix makefile parameter order Richard Purdie 2011-07-26 21:53 ` [PATCH 8/8] RPM: multilib file class/color Richard Purdie 7 siblings, 0 replies; 11+ messages in thread From: Richard Purdie @ 2011-07-26 21:53 UTC (permalink / raw) To: openembedded-core From: Yu Ke <ke.yu@intel.com> Signed-off-by: Yu Ke <ke.yu@intel.com> --- meta/recipes-kernel/linux/linux-tools.inc | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/meta/recipes-kernel/linux/linux-tools.inc b/meta/recipes-kernel/linux/linux-tools.inc index 729e912..950f197 100644 --- a/meta/recipes-kernel/linux/linux-tools.inc +++ b/meta/recipes-kernel/linux/linux-tools.inc @@ -22,7 +22,7 @@ addtask install_perf after do_install before do_package do_compile_perf[umask] = 022 do_install_perf[umask] = 022 -PERFDEPENDS = "virtual/libc:do_populate_sysroot elfutils:do_populate_sysroot" +PERFDEPENDS = "virtual/${MLPREFIX}libc:do_populate_sysroot ${MLPREFIX}elfutils:do_populate_sysroot" PERFDEPENDS_libc-uclibc = "" PERFRDEPENDS = "python perl elfutils" PERFRDEPENDS_libc-uclibc = "" -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 7/8] distcc: fix makefile parameter order 2011-07-26 21:53 [PATCH 0/8] Multilib core enablement patches Richard Purdie ` (5 preceding siblings ...) 2011-07-26 21:53 ` [PATCH 6/8] linux-yocto: revise the dependency for multilib Richard Purdie @ 2011-07-26 21:53 ` Richard Purdie 2011-07-26 21:53 ` [PATCH 8/8] RPM: multilib file class/color Richard Purdie 7 siblings, 0 replies; 11+ messages in thread From: Richard Purdie @ 2011-07-26 21:53 UTC (permalink / raw) To: openembedded-core From: Dongxiao Xu <dongxiao.xu@intel.com> When linking with gcc, the parameter is read from left to write, if *.o calls a function contained in libxxx, the parameter order should be "gcc ... *.o -lxxx". This commit fixes the problem in distcc. Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> --- meta/recipes-devtools/distcc/distcc_2.18.3.bb | 3 ++- .../distcc/files/makefile-param-order.patch | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletions(-) create mode 100644 meta/recipes-devtools/distcc/files/makefile-param-order.patch diff --git a/meta/recipes-devtools/distcc/distcc_2.18.3.bb b/meta/recipes-devtools/distcc/distcc_2.18.3.bb index ece1b02..e474cce 100644 --- a/meta/recipes-devtools/distcc/distcc_2.18.3.bb +++ b/meta/recipes-devtools/distcc/distcc_2.18.3.bb @@ -4,7 +4,7 @@ compilation of C/C++/ObjC code across machines on a network." SECTION = "devel" LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" -PR = "r6" +PR = "r7" DEPENDS = "avahi ${GTKDEP}" GTKDEP_libc-uclibc = "" @@ -16,6 +16,7 @@ RRECOMMENDS_${PN} = "avahi-daemon" # http://0pointer.de/public/distcc-avahi.patch SRC_URI = "http://distcc.googlecode.com/files/${PN}-${PV}.tar.bz2 \ file://distcc-avahi.patch \ + file://makefile-param-order.patch \ file://default \ file://distccmon-gnome.desktop \ file://distcc" diff --git a/meta/recipes-devtools/distcc/files/makefile-param-order.patch b/meta/recipes-devtools/distcc/files/makefile-param-order.patch new file mode 100644 index 0000000..fc57414 --- /dev/null +++ b/meta/recipes-devtools/distcc/files/makefile-param-order.patch @@ -0,0 +1,20 @@ +distcc: Put the "-lLIB" parameter in the end of the gcc command. + +Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> + +Upstream-Status: Pending + +diff -ruN distcc-2.18.3-orig/Makefile.in distcc-2.18.3/Makefile.in +--- distcc-2.18.3-orig/Makefile.in 2011-07-25 16:43:21.000000000 +0800 ++++ distcc-2.18.3/Makefile.in 2011-07-25 16:45:39.000000000 +0800 +@@ -378,8 +378,8 @@ + + distccmon-gnome@EXEEXT@: $(mon_obj) $(gnome_obj) + $(CC) -o $@ $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(LIBS) \ +- $(GNOME_CFLAGS) $(GNOME_LIBS) \ +- $(mon_obj) $(gnome_obj) ++ $(GNOME_CFLAGS) \ ++ $(mon_obj) $(gnome_obj) $(GNOME_LIBS) + + + ## Dist targets -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 8/8] RPM: multilib file class/color 2011-07-26 21:53 [PATCH 0/8] Multilib core enablement patches Richard Purdie ` (6 preceding siblings ...) 2011-07-26 21:53 ` [PATCH 7/8] distcc: fix makefile parameter order Richard Purdie @ 2011-07-26 21:53 ` Richard Purdie 7 siblings, 0 replies; 11+ messages in thread From: Richard Purdie @ 2011-07-26 21:53 UTC (permalink / raw) To: openembedded-core From: Mark Hatle <mark.hatle@windriver.com> We need to include file class and file color in order to do the conflict resolution required with a multilib design. This is normally disabled when we don't use the internal dependency generator, patch enables it in all cases. Signed-off-by: Mark Hatle <mark.hatle@windriver.com> --- meta/recipes-devtools/rpm/rpm/rpm-fileclass.patch | 34 +++++++++++++++++++++ meta/recipes-devtools/rpm/rpm_5.4.0.bb | 1 + 2 files changed, 35 insertions(+), 0 deletions(-) create mode 100644 meta/recipes-devtools/rpm/rpm/rpm-fileclass.patch diff --git a/meta/recipes-devtools/rpm/rpm/rpm-fileclass.patch b/meta/recipes-devtools/rpm/rpm/rpm-fileclass.patch new file mode 100644 index 0000000..d1e4bf6 --- /dev/null +++ b/meta/recipes-devtools/rpm/rpm/rpm-fileclass.patch @@ -0,0 +1,34 @@ +rpmfc.c: Always generate per-file information + +Even when the per-file dependency generate is disabled, we want to generate +per file classification and other associated data. + +Note: this is a temporary workaround. Eventually we will want to have a way +to seed per-file dependency and other information in order to generate a +package from previously determined information. + +Signed-off-by: Mark Hatle <mark.hatle@windriver.com> + +diff --git a/lib/rpmfc.c b/lib/rpmfc.c +index 0c3befd..9306999 100644 +--- a/lib/rpmfc.c ++++ b/lib/rpmfc.c +@@ -1692,7 +1692,6 @@ rpmRC rpmfcGenerateDepends(void * specp, void * pkgp) + /* ... then generate dependencies using %{__find_requires} et al. */ + rc = rpmfcGenerateDependsHelper(spec, pkg, fi); + printDeps(pkg->header); +- return rc; + } + + /* Generate scriptlet Dependencies. */ +@@ -1720,8 +1719,8 @@ rpmRC rpmfcGenerateDepends(void * specp, void * pkgp) + av[ac] = NULL; + + fc = rpmfcNew(); +- fc->skipProv = !pkg->autoProv; +- fc->skipReq = !pkg->autoReq; ++ fc->skipProv = !pkg->autoProv || !internaldeps; ++ fc->skipReq = !pkg->autoReq || !internaldeps; + fc->tracked = 0; + + { const char * buildRootURL; diff --git a/meta/recipes-devtools/rpm/rpm_5.4.0.bb b/meta/recipes-devtools/rpm/rpm_5.4.0.bb index 9cfb3ab..c0e3208 100644 --- a/meta/recipes-devtools/rpm/rpm_5.4.0.bb +++ b/meta/recipes-devtools/rpm/rpm_5.4.0.bb @@ -60,6 +60,7 @@ SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.0-0.20101229.src.rpm;ex file://rpm-solvedb.patch \ file://rpm-tools-mtree-LDFLAGS.patch \ file://fprint-pointer-fix.patch \ + file://rpm-fileclass.patch \ " # file://hdraddorappend.patch \ -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
end of thread, other threads:[~2011-08-01 17:05 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-26 21:53 [PATCH 0/8] Multilib core enablement patches Richard Purdie
2011-07-26 21:53 ` [PATCH 1/8] multilib: Add support for compiling recipes against multiple ABIs Richard Purdie
2011-08-01 16:30 ` Phil Blundell
2011-08-01 17:00 ` Richard Purdie
2011-07-26 21:53 ` [PATCH 2/8] lib/oe/util.py: Add MLPREFIX support to prune_suffix() Richard Purdie
2011-07-26 21:53 ` [PATCH 3/8] do_split_packages: revise for multilib case Richard Purdie
2011-07-26 21:53 ` [PATCH 4/8] eglibc: fix for multilib RPROVIDES issue Richard Purdie
2011-07-26 21:53 ` [PATCH 5/8] cmake.bbclass: add ${libdir}} for multilib case Richard Purdie
2011-07-26 21:53 ` [PATCH 6/8] linux-yocto: revise the dependency for multilib Richard Purdie
2011-07-26 21:53 ` [PATCH 7/8] distcc: fix makefile parameter order Richard Purdie
2011-07-26 21:53 ` [PATCH 8/8] RPM: multilib file class/color Richard Purdie
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox