Skip to content

Commit

Permalink
multilib fixup
Browse files Browse the repository at this point in the history
(From OE-Core rev: 0260745d0d6a552a2b450048364673fc8fca7a19)

Signed-off-by: Richard Purdie <[email protected]>
  • Loading branch information
rpurdie committed May 1, 2020
1 parent 36ee672 commit 6e59a29
Show file tree
Hide file tree
Showing 9 changed files with 80 additions and 35 deletions.
2 changes: 1 addition & 1 deletion meta/classes/fontcache.bbclass
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ PACKAGE_WRITE_DEPS += "qemu-native"
inherit qemu

FONT_PACKAGES ??= "${PN}"
FONT_EXTRA_RDEPENDS ?= "fontconfig-utils"
FONT_EXTRA_RDEPENDS ?= "${MLPREFIX}fontconfig-utils"
FONTCONFIG_CACHE_DIR ?= "${localstatedir}/cache/fontconfig"
FONTCONFIG_CACHE_PARAMS ?= "-v"
# You can change this to e.g. FC_DEBUG=16 to debug fc-cache issues,
Expand Down
30 changes: 20 additions & 10 deletions meta/classes/multilib.bbclass
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,26 @@ python multilib_virtclass_handler () {
addhandler multilib_virtclass_handler
multilib_virtclass_handler[eventmask] = "bb.event.RecipePreFinalise"

python __anonymous () {
if bb.data.inherits_class('image', d):
variant = d.getVar("BBEXTENDVARIANT")
import oe.classextend

clsextend = oe.classextend.ClassExtender(variant, d)

clsextend.map_depends_variable("PACKAGE_INSTALL")
clsextend.map_depends_variable("LINGUAS_INSTALL")
clsextend.map_depends_variable("RDEPENDS")
pinstall = d.getVar("LINGUAS_INSTALL") + " " + d.getVar("PACKAGE_INSTALL")
d.setVar("PACKAGE_INSTALL", pinstall)
d.setVar("LINGUAS_INSTALL", "")
# FIXME, we need to map this to something, not delete it!
d.setVar("PACKAGE_INSTALL_ATTEMPTONLY", "")
bb.build.deltask('do_populate_sdk', d)
bb.build.deltask('do_populate_sdk_ext', d)
return
}

python multilib_virtclass_handler_postkeyexp () {
cls = d.getVar("BBEXTENDCURR")
variant = d.getVar("BBEXTENDVARIANT")
Expand All @@ -103,16 +123,6 @@ python multilib_virtclass_handler_postkeyexp () {
clsextend = oe.classextend.ClassExtender(variant, d)

if bb.data.inherits_class('image', d):
clsextend.map_depends_variable("PACKAGE_INSTALL")
clsextend.map_depends_variable("LINGUAS_INSTALL")
clsextend.map_depends_variable("RDEPENDS")
pinstall = d.getVar("LINGUAS_INSTALL") + " " + d.getVar("PACKAGE_INSTALL")
d.setVar("PACKAGE_INSTALL", pinstall)
d.setVar("LINGUAS_INSTALL", "")
# FIXME, we need to map this to something, not delete it!
d.setVar("PACKAGE_INSTALL_ATTEMPTONLY", "")
bb.build.deltask('do_populate_sdk', d)
bb.build.deltask('do_populate_sdk_ext', d)
return

clsextend.map_depends_variable("DEPENDS")
Expand Down
35 changes: 32 additions & 3 deletions meta/lib/oe/classextend.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,21 @@

import collections

def get_packages(d):
pkgs = d.getVar("PACKAGES_NONML")
extcls = d.getVar("EXTENDERCLASS")
return extcls.rename_packages_internal(pkgs)

def get_depends(d):
extcls = d.getVar("EXTENDERCLASS")
return extcls. map_depends_variable("DEPENDS_NONML")

class ClassExtender(object):
def __init__(self, extname, d):
self.extname = extname
self.d = d
self.pkgs_mapping = []
self.d.setVar("EXTENDERCLASS", self)

def extend_name(self, name):
if name.startswith("kernel-") or name == "virtual/kernel":
Expand All @@ -24,7 +34,7 @@ def extend_name(self, name):
if not subs.startswith(self.extname):
return "virtual/" + self.extname + "-" + subs
return name
if name.startswith("/"):
if name.startswith("/") or (name.startswith("${") and name.endswith("}")):
return name
if not name.startswith(self.extname):
return self.extname + "-" + name
Expand Down Expand Up @@ -89,8 +99,14 @@ def map_depends_variable(self, varname, suffix = ""):
for dep in deps:
newdeps[self.map_depends(dep)] = deps[dep]

self.d.setVar(varname, bb.utils.join_deps(newdeps, False).replace("EXTENDPKGV", "${EXTENDPKGV}"))
if varname == "DEPENDS":
self.d.setVar("DEPENDS_NONML", self.d.getVar("DEPENDS", False))
self.d.setVar("DEPENDS", "${@oe.classextend.get_depends(d)}")
ret = bb.utils.join_deps(newdeps, False).replace("EXTENDPKGV", "${EXTENDPKGV}")
self.d.setVar("EXTENDPKGV", orig)
if varname == "DEPENDS_NONML" or varname == "DEPENDS":
return ret
self.d.setVar(varname, ret)

def map_packagevars(self):
for pkg in (self.d.getVar("PACKAGES").split() + [""]):
Expand All @@ -109,10 +125,23 @@ def rename_packages(self):
continue
self.pkgs_mapping.append([pkg, self.extend_name(pkg)])

self.d.setVar("PACKAGES", " ".join([row[1] for row in self.pkgs_mapping]))
self.d.setVar("PACKAGES_NONML", self.d.getVar("PACKAGES", False))
self.d.setVar("PACKAGES", "${@oe.classextend.get_packages(d)}")

def rename_packages_internal(self, pkgs):
self.pkgs_mapping = []
for pkg in (self.d.expand(pkgs) or "").split():
if pkg.startswith(self.extname):
self.pkgs_mapping.append([pkg.split(self.extname + "-")[1], pkg])
continue
self.pkgs_mapping.append([pkg, self.extend_name(pkg)])

return " ".join([row[1] for row in self.pkgs_mapping])

def rename_package_variables(self, variables):
for pkg_mapping in self.pkgs_mapping:
if pkg_mapping[0].startswith("${") and pkg_mapping[0].endswith("}"):
continue
for subs in variables:
self.d.renameVar("%s_%s" % (subs, pkg_mapping[0]), "%s_%s" % (subs, pkg_mapping[1]))

Expand Down
2 changes: 1 addition & 1 deletion meta/recipes-core/glibc/glibc-package.inc
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ libc_baselibs_append = " ${@oe.utils.conditional('ARCH_DYNAMIC_LOADER', '', '',
INSANE_SKIP_${PN}_append_aarch64 = " libdir"

FILES_${PN} = "${libc_baselibs} ${libexecdir}/*"
RRECOMMENDS_${PN} = "${@bb.utils.filter('DISTRO_FEATURES', 'ldconfig', d)}"
RRECOMMENDS_${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'ldconfig', '${MLPREFIX}ldconfig', '', d)}"
FILES_ldconfig = "${base_sbindir}/ldconfig ${sysconfdir}/ld.so.conf"
FILES_ldd = "${bindir}/ldd"
FILES_libsegfault = "${base_libdir}/libSegFault*"
Expand Down
6 changes: 3 additions & 3 deletions meta/recipes-core/psplash/psplash_git.bb
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ SPLASH_IMAGES = "file://psplash-poky-img.h;outsuffix=default"
python __anonymous() {
oldpkgs = d.getVar("PACKAGES").split()
splashfiles = d.getVar('SPLASH_IMAGES').split()
mlprefix = d.getVar('MLPREFIX') or ''
pkgs = []
localpaths = []
for uri in splashfiles:
Expand All @@ -36,7 +37,7 @@ python __anonymous() {
outsuffix = fbase
if outsuffix.endswith('-img'):
outsuffix = outsuffix[:-4]
outname = "psplash-%s" % outsuffix
outname = "%spsplash-%s" % (mlprefix, outsuffix)
if outname == '' or outname in oldpkgs:
bb.fatal("The output name '%s' derived from the URI %s is not valid, please specify the outsuffix parameter" % (outname, uri))
else:
Expand All @@ -46,9 +47,8 @@ python __anonymous() {
# Set these so that we have less work to do in do_compile and do_install_append
d.setVar("SPLASH_INSTALL", " ".join(pkgs))
d.setVar("SPLASH_LOCALPATHS", " ".join(localpaths))

d.prependVar("PACKAGES", "%s " % (" ".join(pkgs)))
mlprefix = d.getVar('MLPREFIX') or ''

pn = d.getVar('PN') or ''
for p in pkgs:
ep = '%s%s' % (mlprefix, p)
Expand Down
14 changes: 7 additions & 7 deletions meta/recipes-devtools/python/python3_3.8.2.bb
Original file line number Diff line number Diff line change
Expand Up @@ -311,8 +311,8 @@ do_create_manifest[depends] += "${PN}:do_patch"

# manual dependency additions
RRECOMMENDS_${PN}-core_append_class-nativesdk = " nativesdk-python3-modules"
RRECOMMENDS_${PN}-crypt_append_class-target = " openssl ca-certificates"
RRECOMMENDS_${PN}-crypt_append_class-nativesdk = " openssl ca-certificates"
RRECOMMENDS_${PN}-crypt_append_class-target = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates"
RRECOMMENDS_${PN}-crypt_append_class-nativesdk = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates"

# For historical reasons PN is empty and provided by python3-modules
FILES_${PN} = ""
Expand All @@ -322,7 +322,7 @@ FILES_${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3"
FILES_${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}"

# provide python-pyvenv from python3-venv
RPROVIDES_${PN}-venv += "python3-pyvenv"
RPROVIDES_${PN}-venv += "${MLPREFIX}python3-pyvenv"

# package libpython3
PACKAGES =+ "libpython3 libpython3-staticdev"
Expand All @@ -333,8 +333,8 @@ INSANE_SKIP_${PN}-dev += "dev-elf"
# catch all the rest (unsorted)
PACKAGES += "${PN}-misc"
RDEPENDS_${PN}-misc += "python3-core python3-email python3-codecs python3-pydoc python3-pickle python3-audio"
RDEPENDS_${PN}-modules_append_class-target = " python3-misc"
RDEPENDS_${PN}-modules_append_class-nativesdk = " python3-misc"
RDEPENDS_${PN}-modules_append_class-target = " ${MLPREFIX}python3-misc"
RDEPENDS_${PN}-modules_append_class-nativesdk = " ${MLPREFIX}python3-misc"
FILES_${PN}-misc = "${libdir}/python${PYTHON_MAJMIN} ${libdir}/python${PYTHON_MAJMIN}/lib-dynload"

# catch manpage
Expand All @@ -348,5 +348,5 @@ RDEPENDS_${PN}-ptest_append_libc-glibc = " locale-base-tr-tr.iso-8859-9"
RDEPENDS_${PN}-tkinter += "${@bb.utils.contains('PACKAGECONFIG', 'tk', 'tk tk-lib', '', d)}"
RDEPENDS_${PN}-dev = ""

RDEPENDS_${PN}-tests_append_class-target = " bash"
RDEPENDS_${PN}-tests_append_class-nativesdk = " bash"
RDEPENDS_${PN}-tests_append_class-target = " ${MLPREFIX}bash"
RDEPENDS_${PN}-tests_append_class-nativesdk = " ${MLPREFIX}bash"
10 changes: 6 additions & 4 deletions meta/recipes-graphics/mesa/mesa.inc
Original file line number Diff line number Diff line change
Expand Up @@ -208,18 +208,20 @@ python __anonymous() {
("gles", "libgles3",)):
if not p[0] in pkgconfig:
continue
fullp = p[1] + "-mesa"
pkgs = " ".join(p[1:])
mlprefix = d.getVar("MLPREFIX")
fullp = mlprefix + p[1] + "-mesa"
mlprefix = d.getVar("MLPREFIX")
pkgs = " ".join(mlprefix + x for x in p[1:])
d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
d.appendVar("RREPLACES_" + fullp, pkgs)
d.appendVar("RPROVIDES_" + fullp, pkgs)
d.appendVar("RCONFLICTS_" + fullp, pkgs)

d.appendVar("RRECOMMENDS_" + fullp, " mesa-megadriver")
d.appendVar("RRECOMMENDS_" + fullp, " ${MLPREFIX}mesa-megadriver")

# For -dev, the first element is both the Debian and original name
fullp += "-dev"
pkgs = p[1] + "-dev"
pkgs = mlprefix + p[1] + "-dev"
d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
d.appendVar("RREPLACES_" + fullp, pkgs)
d.appendVar("RPROVIDES_" + fullp, pkgs)
Expand Down
6 changes: 3 additions & 3 deletions meta/recipes-multimedia/alsa/alsa-plugins_1.2.1.bb
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ FILES_${PN}-pulseaudio-conf += "\
"

RDEPENDS_${PN}-pulseaudio-conf += "\
libasound-module-conf-pulse \
libasound-module-ctl-pulse \
libasound-module-pcm-pulse \
${MLPREFIX}libasound-module-conf-pulse \
${MLPREFIX}libasound-module-ctl-pulse \
${MLPREFIX}libasound-module-pcm-pulse \
"
10 changes: 7 additions & 3 deletions meta/recipes-support/boost/boost.inc
Original file line number Diff line number Diff line change
Expand Up @@ -62,12 +62,16 @@ PACKAGES = "${PN}-dbg ${BOOST_PACKAGES}"
python __anonymous () {
packages = []
extras = []
mlprefix = d.getVar("MLPREFIX")
for lib in d.getVar('BOOST_LIBS').split():
extras.append("--with-%s" % lib)
pkg = "boost-%s" % lib.replace("_", "-")
packages.append(pkg)
pkg = "boost-%s" % (lib.replace("_", "-"))
packages.append(mlprefix + pkg)
if not d.getVar("FILES_%s" % pkg):
d.setVar("FILES_%s" % pkg, "${libdir}/libboost_%s*.so.*" % lib)
d.setVar("FILES_%s%s" % (mlprefix, pkg), "${libdir}/libboost_%s*.so.*" % lib)
else:
d.setVar("FILES_%s%s" % (mlprefix, pkg), d.getVar("FILES_%s" % pkg))

d.setVar("BOOST_PACKAGES", " ".join(packages))
d.setVar("BJAM_EXTRA", " ".join(extras))
}
Expand Down

0 comments on commit 6e59a29

Please sign in to comment.