diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-01-09 11:20:31 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-01-10 22:14:52 +0000 |
commit | 9d490dc01dcedb216129b22cbe17a6c99efc4f5c (patch) | |
tree | 88826cf0a465900d63419d7ee8de6bccf08ac28f | |
parent | fc08972688d784f561c8be88d3100d6baaf22070 (diff) | |
download | openembedded-core-9d490dc01dcedb216129b22cbe17a6c99efc4f5c.tar.gz openembedded-core-9d490dc01dcedb216129b22cbe17a6c99efc4f5c.tar.bz2 openembedded-core-9d490dc01dcedb216129b22cbe17a6c99efc4f5c.zip |
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.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/classes/populate_sdk_base.bbclass | 6 | ||||
-rw-r--r-- | meta/classes/sstate.bbclass | 3 | ||||
-rw-r--r-- | meta/lib/oe/package_manager.py | 1 | ||||
-rw-r--r-- | meta/lib/oe/sdk.py | 18 | ||||
-rw-r--r-- | meta/recipes-core/meta/dummy-sdk-package.inc | 24 | ||||
-rw-r--r-- | meta/recipes-core/meta/nativesdk-buildtools-perl-dummy.bb | 27 | ||||
-rw-r--r-- | meta/recipes-core/meta/nativesdk-sdk-provides-dummy.bb | 15 | ||||
-rw-r--r-- | meta/recipes-core/meta/target-sdk-provides-dummy.bb | 11 | ||||
-rw-r--r-- | meta/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bb | 1 |
9 files changed, 65 insertions, 41 deletions
diff --git a/meta/classes/populate_sdk_base.bbclass b/meta/classes/populate_sdk_base.bbclass index 424c63cbfc..acb91d7d63 100644 --- a/meta/classes/populate_sdk_base.bbclass +++ b/meta/classes/populate_sdk_base.bbclass @@ -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}" diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass index 6e41b56861..65f51430ee 100644 --- a/meta/classes/sstate.bbclass +++ b/meta/classes/sstate.bbclass @@ -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}" diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py index ea99165d61..0f85f3fb7c 100644 --- a/meta/lib/oe/package_manager.py +++ b/meta/lib/oe/package_manager.py @@ -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) diff --git a/meta/lib/oe/sdk.py b/meta/lib/oe/sdk.py index 30e1fb5316..dd02b8c12b 100644 --- a/meta/lib/oe/sdk.py +++ b/meta/lib/oe/sdk.py @@ -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" ) diff --git a/meta/recipes-core/meta/dummy-sdk-package.inc b/meta/recipes-core/meta/dummy-sdk-package.inc new file mode 100644 index 0000000000..ed83dd77da --- /dev/null +++ b/meta/recipes-core/meta/dummy-sdk-package.inc @@ -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}") +} + diff --git a/meta/recipes-core/meta/nativesdk-buildtools-perl-dummy.bb b/meta/recipes-core/meta/nativesdk-buildtools-perl-dummy.bb index 0b58a027f3..f5bcb82548 100644 --- a/meta/recipes-core/meta/nativesdk-buildtools-perl-dummy.bb +++ b/meta/recipes-core/meta/nativesdk-buildtools-perl-dummy.bb @@ -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 diff --git a/meta/recipes-core/meta/nativesdk-sdk-provides-dummy.bb b/meta/recipes-core/meta/nativesdk-sdk-provides-dummy.bb new file mode 100644 index 0000000000..11a727d486 --- /dev/null +++ b/meta/recipes-core/meta/nativesdk-sdk-provides-dummy.bb @@ -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 diff --git a/meta/recipes-core/meta/target-sdk-provides-dummy.bb b/meta/recipes-core/meta/target-sdk-provides-dummy.bb new file mode 100644 index 0000000000..714d15d8ba --- /dev/null +++ b/meta/recipes-core/meta/target-sdk-provides-dummy.bb @@ -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 diff --git a/meta/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bb b/meta/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bb index aee4a03718..88e7c648b6 100644 --- a/meta/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bb +++ b/meta/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bb @@ -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 = "\ |