[oe-commits] [openembedded-core] 01/12: nativesdk/sdk: Update sdk dummy providers

git at git.openembedded.org git at git.openembedded.org
Wed Jan 10 22:18:27 UTC 2018


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master-next
in repository openembedded-core.

commit 9d490dc01dcedb216129b22cbe17a6c99efc4f5c
Author: Richard Purdie <richard.purdie at linuxfoundation.org>
AuthorDate: Tue Jan 9 11:20:31 2018 +0000

    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 at linuxfoundation.org>
---
 meta/classes/populate_sdk_base.bbclass             |  6 ++++-
 meta/classes/sstate.bbclass                        |  3 +++
 meta/lib/oe/package_manager.py                     |  1 -
 meta/lib/oe/sdk.py                                 | 18 ---------------
 meta/recipes-core/meta/dummy-sdk-package.inc       | 24 +++++++++++++++++++
 .../meta/nativesdk-buildtools-perl-dummy.bb        | 27 +++++-----------------
 .../meta/nativesdk-sdk-provides-dummy.bb           | 15 ++++++++++++
 .../recipes-core/meta/target-sdk-provides-dummy.bb | 11 +++++++++
 .../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 424c63c..acb91d7 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 6e41b56..65f5143 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 ea99165..0f85f3f 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 30e1fb5..dd02b8c 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 0000000..ed83dd7
--- /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 0b58a02..f5bcb82 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 0000000..11a727d
--- /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 0000000..714d15d
--- /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 aee4a03..88e7c64 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 = "\

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list