mirror of
https://git.yoctoproject.org/poky
synced 2026-04-20 00:32:13 +02:00
nativesdk/sdk: Update sdk dummy providers
When we migrated rpm v5 -> v4, we lost the ability to drop "per file" dependencies from the rpm backend for things like "/bin/bash" and "/usr/bin/env" which meant the sdks were becomming 'bloated'. This restores the functionality using a dummy package, similarly to the way the buildtools perl issue was addressed. It also removes the non-functional old code so as not to confuse people in future. I ran into this problem trying to filter dependencies to only rpms a build directly depends upon and it turns out we have some determinism issues in this area so this is something key to fix. (From OE-Core rev: 9d490dc01dcedb216129b22cbe17a6c99efc4f5c) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -20,6 +20,9 @@ def complementary_globs(featurevar, d):
|
||||
SDKIMAGE_FEATURES ??= "dev-pkgs dbg-pkgs ${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', 'doc-pkgs', '', d)}"
|
||||
SDKIMAGE_INSTALL_COMPLEMENTARY = '${@complementary_globs("SDKIMAGE_FEATURES", d)}'
|
||||
|
||||
PACKAGE_ARCHS_append_task-populate-sdk = " sdk-provides-dummy-target"
|
||||
SDK_PACKAGE_ARCHS += "sdk-provides-dummy-${SDKPKGSUFFIX}"
|
||||
|
||||
inherit rootfs_${IMAGE_PKGTYPE}
|
||||
|
||||
SDK_DIR = "${WORKDIR}/sdk"
|
||||
@@ -34,7 +37,8 @@ SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${REAL_MULTIMACH_TARGET_SYS}"
|
||||
|
||||
TOOLCHAIN_HOST_TASK ?= "nativesdk-packagegroup-sdk-host packagegroup-cross-canadian-${MACHINE}"
|
||||
TOOLCHAIN_HOST_TASK_ATTEMPTONLY ?= ""
|
||||
TOOLCHAIN_TARGET_TASK ?= "${@multilib_pkg_extend(d, 'packagegroup-core-standalone-sdk-target')}"
|
||||
TOOLCHAIN_TARGET_TASK ?= "${@multilib_pkg_extend(d, 'packagegroup-core-standalone-sdk-target')} \
|
||||
${@multilib_pkg_extend(d, 'target-sdk-provides-dummy')}"
|
||||
TOOLCHAIN_TARGET_TASK_ATTEMPTONLY ?= ""
|
||||
TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}"
|
||||
|
||||
|
||||
@@ -28,6 +28,9 @@ SSTATE_EXTRAPATH[vardepvalue] = ""
|
||||
SSTATE_DUPWHITELIST = "${DEPLOY_DIR_IMAGE}/ ${DEPLOY_DIR}/licenses/ ${DEPLOY_DIR_RPM}/noarch/"
|
||||
# Avoid docbook/sgml catalog warnings for now
|
||||
SSTATE_DUPWHITELIST += "${STAGING_ETCDIR_NATIVE}/sgml ${STAGING_DATADIR_NATIVE}/sgml"
|
||||
# sdk-provides-dummy-nativesdk and nativesdk-buildtools-perl-dummy overlap for different SDKMACHINE
|
||||
SSTATE_DUPWHITELIST += "${DEPLOY_DIR_RPM}/sdk_provides_dummy_nativesdk/ ${DEPLOY_DIR_IPK}/sdk-provides-dummy-nativesdk/"
|
||||
SSTATE_DUPWHITELIST += "${DEPLOY_DIR_RPM}/buildtools_dummy_nativesdk/ ${DEPLOY_DIR_IPK}/buildtools-dummy-nativesdk/"
|
||||
# Archive the sources for many architectures in one deploy folder
|
||||
SSTATE_DUPWHITELIST += "${DEPLOY_DIR_SRC}"
|
||||
|
||||
|
||||
@@ -460,7 +460,6 @@ class RpmPM(PackageManager):
|
||||
target_rootfs,
|
||||
target_vendor,
|
||||
task_name='target',
|
||||
providename=None,
|
||||
arch_var=None,
|
||||
os_var=None):
|
||||
super(RpmPM, self).__init__(d)
|
||||
|
||||
@@ -93,34 +93,16 @@ class RpmSdk(Sdk):
|
||||
self.host_manifest = RpmManifest(d, self.manifest_dir,
|
||||
Manifest.MANIFEST_TYPE_SDK_HOST)
|
||||
|
||||
target_providename = ['/bin/sh',
|
||||
'/bin/bash',
|
||||
'/usr/bin/env',
|
||||
'/usr/bin/perl',
|
||||
'pkgconfig'
|
||||
]
|
||||
|
||||
self.target_pm = RpmPM(d,
|
||||
self.sdk_target_sysroot,
|
||||
self.d.getVar('TARGET_VENDOR'),
|
||||
'target',
|
||||
target_providename
|
||||
)
|
||||
|
||||
sdk_providename = ['/bin/sh',
|
||||
'/bin/bash',
|
||||
'/usr/bin/env',
|
||||
'/usr/bin/perl',
|
||||
'pkgconfig',
|
||||
'libGL.so()(64bit)',
|
||||
'libGL.so'
|
||||
]
|
||||
|
||||
self.host_pm = RpmPM(d,
|
||||
self.sdk_host_sysroot,
|
||||
self.d.getVar('SDK_VENDOR'),
|
||||
'host',
|
||||
sdk_providename,
|
||||
"SDK_PACKAGE_ARCHS",
|
||||
"SDK_OS"
|
||||
)
|
||||
|
||||
24
meta/recipes-core/meta/dummy-sdk-package.inc
Normal file
24
meta/recipes-core/meta/dummy-sdk-package.inc
Normal file
@@ -0,0 +1,24 @@
|
||||
SUMMARY = "Dummy packages which handle excluding packages from the sdk, e.g. ensuring perl is excluded from buildtools"
|
||||
LICENSE = "MIT"
|
||||
|
||||
inherit allarch
|
||||
|
||||
python() {
|
||||
# Put the package somewhere separate to ensure it's never used except
|
||||
# when we want it
|
||||
# (note that we have to do this in anonymous python here to avoid
|
||||
# allarch.bbclass disabling itself)
|
||||
d.setVar('PACKAGE_ARCH', '${DUMMYARCH}')
|
||||
}
|
||||
|
||||
ALLOW_EMPTY_${PN} = "1"
|
||||
|
||||
PR[vardeps] += "DUMMYPROVIDES"
|
||||
|
||||
python populate_packages_prepend() {
|
||||
p = d.getVar("PN")
|
||||
d.appendVar("RPROVIDES_%s" % p, "${DUMMYPROVIDES}")
|
||||
#d.appendVar("RCONFLICTS_%s" % p, "${DUMMYPROVIDES}")
|
||||
#d.appendVar("RREPLACES_%s" % p, "${DUMMYPROVIDES}")
|
||||
}
|
||||
|
||||
@@ -1,26 +1,11 @@
|
||||
SUMMARY = "Dummy package which ensures perl is excluded from buildtools"
|
||||
LICENSE = "MIT"
|
||||
DUMMYARCH = "buildtools-dummy-${SDKPKGSUFFIX}"
|
||||
|
||||
inherit allarch
|
||||
DUMMYPROVIDES = "\
|
||||
nativesdk-perl \
|
||||
nativesdk-perl-module-file-path"
|
||||
|
||||
PR = "r2"
|
||||
|
||||
python() {
|
||||
# Put the package somewhere separate to ensure it's never used except
|
||||
# when we want it
|
||||
# (note that we have to do this in anonymous python here to avoid
|
||||
# allarch.bbclass disabling itself)
|
||||
d.setVar('PACKAGE_ARCH', 'buildtools-dummy-${SDKPKGSUFFIX}')
|
||||
}
|
||||
|
||||
PERLPACKAGES = "nativesdk-perl \
|
||||
nativesdk-perl-module-file-path"
|
||||
|
||||
ALLOW_EMPTY_${PN} = "1"
|
||||
|
||||
python populate_packages_prepend() {
|
||||
d.appendVar(d.expand('RPROVIDES_${PN}'), '${PERLPACKAGES}')
|
||||
d.appendVar(d.expand('RCONFLICTS_${PN}'), '${PERLPACKAGES}')
|
||||
d.appendVar(d.expand('RREPLACES_${PN}'), '${PERLPACKAGES}')
|
||||
}
|
||||
require dummy-sdk-package.inc
|
||||
|
||||
inherit nativesdk
|
||||
|
||||
15
meta/recipes-core/meta/nativesdk-sdk-provides-dummy.bb
Normal file
15
meta/recipes-core/meta/nativesdk-sdk-provides-dummy.bb
Normal file
@@ -0,0 +1,15 @@
|
||||
DUMMYARCH = "sdk-provides-dummy-${SDKPKGSUFFIX}"
|
||||
|
||||
# Add /bin/sh?
|
||||
DUMMYPROVIDES = "\
|
||||
/bin/bash \
|
||||
/usr/bin/env \
|
||||
/usr/bin/perl \
|
||||
pkgconfig \
|
||||
libGL.so()(64bit) \
|
||||
libGL.so \
|
||||
"
|
||||
|
||||
require dummy-sdk-package.inc
|
||||
|
||||
inherit nativesdk
|
||||
11
meta/recipes-core/meta/target-sdk-provides-dummy.bb
Normal file
11
meta/recipes-core/meta/target-sdk-provides-dummy.bb
Normal file
@@ -0,0 +1,11 @@
|
||||
DUMMYARCH = "sdk-provides-dummy-target"
|
||||
|
||||
DUMMYPROVIDES = "\
|
||||
/bin/sh \
|
||||
/bin/bash \
|
||||
/usr/bin/env \
|
||||
/usr/bin/perl \
|
||||
pkgconfig \
|
||||
"
|
||||
|
||||
require dummy-sdk-package.inc
|
||||
@@ -25,6 +25,7 @@ RDEPENDS_${PN} = "\
|
||||
nativesdk-cmake \
|
||||
nativesdk-postinst-intercept \
|
||||
${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'nativesdk-wayland', '', d)} \
|
||||
nativesdk-sdk-provides-dummy \
|
||||
"
|
||||
|
||||
RDEPENDS_${PN}_darwin = "\
|
||||
|
||||
Reference in New Issue
Block a user