summaryrefslogtreecommitdiffstats
path: root/meta/lib/oe/sdk.py
diff options
context:
space:
mode:
authorFredrik Gustafsson <fredrik.gustafsson@axis.com>2020-09-08 12:53:07 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-11-24 15:53:07 +0000
commite51345b50784572602a09a233b9d6f4847fe1f16 (patch)
treed65d4d5d4e06f3d0a014a634c03ced594d6c1dc7 /meta/lib/oe/sdk.py
parent8c28435258ea28dadbbbe9506beae700c226c379 (diff)
downloadpoky-e51345b50784572602a09a233b9d6f4847fe1f16.tar.gz
package management: Allow dynamic loading of PM
Dynamic loading of package managers will allow other layers to simply add their package manager code in package_manager/ and have bitbake find it according to the package manager configuration. This is useful for adding new (faster) package managers to Open Embedded while not increasing the test scope or require Open Embedded to support more package managers. How this is tested: * Build core-image-minimal with all three package managers * Build the sdk with all three package managers. dpkg fails, but it fails on master as well. * Run the complete test suite, all tests passed except 16 * Run those 16 tests on master and verify that they fail there as well * Fix errors making tests works on master but not with this patch. (From OE-Core rev: 02670501dea192879ddf9f8048eea57a94719fc1) Signed-off-by: Fredrik Gustafsson <fredrigu@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oe/sdk.py')
-rw-r--r--meta/lib/oe/sdk.py27
1 files changed, 6 insertions, 21 deletions
diff --git a/meta/lib/oe/sdk.py b/meta/lib/oe/sdk.py
index fdcadcb8de..37b59afd1a 100644
--- a/meta/lib/oe/sdk.py
+++ b/meta/lib/oe/sdk.py
@@ -115,33 +115,18 @@ def sdk_list_installed_packages(d, target, rootfs_dir=None):
115 115
116 rootfs_dir = [sdk_output, os.path.join(sdk_output, target_path)][target is True] 116 rootfs_dir = [sdk_output, os.path.join(sdk_output, target_path)][target is True]
117 117
118 from oe.package_manager.rpm import RpmPkgsList
119 from oe.package_manager.ipk import OpkgPkgsList
120 from oe.package_manager.deb import DpkgPkgsList
121 img_type = d.getVar('IMAGE_PKGTYPE') 118 img_type = d.getVar('IMAGE_PKGTYPE')
122 if img_type == "rpm": 119 import importlib
123 arch_var = ["SDK_PACKAGE_ARCHS", None][target is True] 120 cls = importlib.import_module('oe.package_manager.' + img_type)
124 os_var = ["SDK_OS", None][target is True] 121 return cls.PMPkgsList(d, rootfs_dir).list_pkgs()
125 return RpmPkgsList(d, rootfs_dir).list_pkgs()
126 elif img_type == "ipk":
127 conf_file_var = ["IPKGCONF_SDK", "IPKGCONF_TARGET"][target is True]
128 return OpkgPkgsList(d, rootfs_dir, d.getVar(conf_file_var)).list_pkgs()
129 elif img_type == "deb":
130 return DpkgPkgsList(d, rootfs_dir).list_pkgs()
131 122
132def populate_sdk(d, manifest_dir=None): 123def populate_sdk(d, manifest_dir=None):
133 env_bkp = os.environ.copy() 124 env_bkp = os.environ.copy()
134 125
135 img_type = d.getVar('IMAGE_PKGTYPE') 126 img_type = d.getVar('IMAGE_PKGTYPE')
136 from oe.package_manager.rpm.sdk import RpmSdk 127 import importlib
137 from oe.package_manager.ipk.sdk import OpkgSdk 128 cls = importlib.import_module('oe.package_manager.' + img_type + '.sdk')
138 from oe.package_manager.deb.sdk import DpkgSdk 129 cls.PkgSdk(d, manifest_dir).populate()
139 if img_type == "rpm":
140 RpmSdk(d, manifest_dir).populate()
141 elif img_type == "ipk":
142 OpkgSdk(d, manifest_dir).populate()
143 elif img_type == "deb":
144 DpkgSdk(d, manifest_dir).populate()
145 130
146 os.environ.clear() 131 os.environ.clear()
147 os.environ.update(env_bkp) 132 os.environ.update(env_bkp)