diff options
Diffstat (limited to 'meta/lib/oe/package_manager/__init__.py')
-rw-r--r-- | meta/lib/oe/package_manager/__init__.py | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/meta/lib/oe/package_manager/__init__.py b/meta/lib/oe/package_manager/__init__.py index 8e7128b195..6774cdb794 100644 --- a/meta/lib/oe/package_manager/__init__.py +++ b/meta/lib/oe/package_manager/__init__.py | |||
@@ -1,4 +1,6 @@ | |||
1 | # | 1 | # |
2 | # Copyright OpenEmbedded Contributors | ||
3 | # | ||
2 | # SPDX-License-Identifier: GPL-2.0-only | 4 | # SPDX-License-Identifier: GPL-2.0-only |
3 | # | 5 | # |
4 | 6 | ||
@@ -90,7 +92,7 @@ def opkg_query(cmd_output): | |||
90 | 92 | ||
91 | def failed_postinsts_abort(pkgs, log_path): | 93 | def failed_postinsts_abort(pkgs, log_path): |
92 | bb.fatal("""Postinstall scriptlets of %s have failed. If the intention is to defer them to first boot, | 94 | bb.fatal("""Postinstall scriptlets of %s have failed. If the intention is to defer them to first boot, |
93 | then please place them into pkg_postinst_ontarget_${PN} (). | 95 | then please place them into pkg_postinst_ontarget:${PN} (). |
94 | Deferring to first boot via 'exit 1' is no longer supported. | 96 | Deferring to first boot via 'exit 1' is no longer supported. |
95 | Details of the failure are in %s.""" %(pkgs, log_path)) | 97 | Details of the failure are in %s.""" %(pkgs, log_path)) |
96 | 98 | ||
@@ -120,7 +122,8 @@ def generate_locale_archive(d, rootfs, target_arch, localedir): | |||
120 | "riscv32": ["--uint32-align=4", "--little-endian"], | 122 | "riscv32": ["--uint32-align=4", "--little-endian"], |
121 | "i586": ["--uint32-align=4", "--little-endian"], | 123 | "i586": ["--uint32-align=4", "--little-endian"], |
122 | "i686": ["--uint32-align=4", "--little-endian"], | 124 | "i686": ["--uint32-align=4", "--little-endian"], |
123 | "x86_64": ["--uint32-align=4", "--little-endian"] | 125 | "x86_64": ["--uint32-align=4", "--little-endian"], |
126 | "loongarch64": ["--uint32-align=4", "--little-endian"] | ||
124 | } | 127 | } |
125 | if target_arch in locale_arch_options: | 128 | if target_arch in locale_arch_options: |
126 | arch_options = locale_arch_options[target_arch] | 129 | arch_options = locale_arch_options[target_arch] |
@@ -189,7 +192,7 @@ class PackageManager(object, metaclass=ABCMeta): | |||
189 | bb.utils.remove(self.intercepts_dir, True) | 192 | bb.utils.remove(self.intercepts_dir, True) |
190 | bb.utils.mkdirhier(self.intercepts_dir) | 193 | bb.utils.mkdirhier(self.intercepts_dir) |
191 | for intercept in postinst_intercepts: | 194 | for intercept in postinst_intercepts: |
192 | bb.utils.copyfile(intercept, os.path.join(self.intercepts_dir, os.path.basename(intercept))) | 195 | shutil.copy(intercept, os.path.join(self.intercepts_dir, os.path.basename(intercept))) |
193 | 196 | ||
194 | @abstractmethod | 197 | @abstractmethod |
195 | def _handle_intercept_failure(self, failed_script): | 198 | def _handle_intercept_failure(self, failed_script): |
@@ -266,7 +269,7 @@ class PackageManager(object, metaclass=ABCMeta): | |||
266 | pass | 269 | pass |
267 | 270 | ||
268 | @abstractmethod | 271 | @abstractmethod |
269 | def install(self, pkgs, attempt_only=False): | 272 | def install(self, pkgs, attempt_only=False, hard_depends_only=False): |
270 | """ | 273 | """ |
271 | Install a list of packages. 'pkgs' is a list object. If 'attempt_only' is | 274 | Install a list of packages. 'pkgs' is a list object. If 'attempt_only' is |
272 | True, installation failures are ignored. | 275 | True, installation failures are ignored. |
@@ -321,7 +324,7 @@ class PackageManager(object, metaclass=ABCMeta): | |||
321 | # TODO don't have sdk here but have a property on the superclass | 324 | # TODO don't have sdk here but have a property on the superclass |
322 | # (and respect in install_complementary) | 325 | # (and respect in install_complementary) |
323 | if sdk: | 326 | if sdk: |
324 | pkgdatadir = self.d.expand("${TMPDIR}/pkgdata/${SDK_SYS}") | 327 | pkgdatadir = self.d.getVar("PKGDATA_DIR_SDK") |
325 | else: | 328 | else: |
326 | pkgdatadir = self.d.getVar("PKGDATA_DIR") | 329 | pkgdatadir = self.d.getVar("PKGDATA_DIR") |
327 | 330 | ||
@@ -344,10 +347,8 @@ class PackageManager(object, metaclass=ABCMeta): | |||
344 | def install_complementary(self, globs=None): | 347 | def install_complementary(self, globs=None): |
345 | """ | 348 | """ |
346 | Install complementary packages based upon the list of currently installed | 349 | Install complementary packages based upon the list of currently installed |
347 | packages e.g. locales, *-dev, *-dbg, etc. This will only attempt to install | 350 | packages e.g. locales, *-dev, *-dbg, etc. Note: every backend needs to |
348 | these packages, if they don't exist then no error will occur. Note: every | 351 | call this function explicitly after the normal package installation. |
349 | backend needs to call this function explicitly after the normal package | ||
350 | installation | ||
351 | """ | 352 | """ |
352 | if globs is None: | 353 | if globs is None: |
353 | globs = self.d.getVar('IMAGE_INSTALL_COMPLEMENTARY') | 354 | globs = self.d.getVar('IMAGE_INSTALL_COMPLEMENTARY') |
@@ -398,7 +399,7 @@ class PackageManager(object, metaclass=ABCMeta): | |||
398 | bb.note("Installing complementary packages ... %s (skipped already provided packages %s)" % ( | 399 | bb.note("Installing complementary packages ... %s (skipped already provided packages %s)" % ( |
399 | ' '.join(install_pkgs), | 400 | ' '.join(install_pkgs), |
400 | ' '.join(skip_pkgs))) | 401 | ' '.join(skip_pkgs))) |
401 | self.install(install_pkgs, attempt_only=True) | 402 | self.install(install_pkgs, hard_depends_only=True) |
402 | except subprocess.CalledProcessError as e: | 403 | except subprocess.CalledProcessError as e: |
403 | bb.fatal("Could not compute complementary packages list. Command " | 404 | bb.fatal("Could not compute complementary packages list. Command " |
404 | "'%s' returned %d:\n%s" % | 405 | "'%s' returned %d:\n%s" % |
@@ -469,7 +470,10 @@ def create_packages_dir(d, subrepo_dir, deploydir, taskname, filterbydependencie | |||
469 | # Detect bitbake -b usage | 470 | # Detect bitbake -b usage |
470 | nodeps = d.getVar("BB_LIMITEDDEPS") or False | 471 | nodeps = d.getVar("BB_LIMITEDDEPS") or False |
471 | if nodeps or not filterbydependencies: | 472 | if nodeps or not filterbydependencies: |
472 | oe.path.symlink(deploydir, subrepo_dir, True) | 473 | for arch in d.getVar("ALL_MULTILIB_PACKAGE_ARCHS").split() + d.getVar("ALL_MULTILIB_PACKAGE_ARCHS").replace("-", "_").split(): |
474 | target = os.path.join(deploydir + "/" + arch) | ||
475 | if os.path.exists(target): | ||
476 | oe.path.symlink(target, subrepo_dir + "/" + arch, True) | ||
473 | return | 477 | return |
474 | 478 | ||
475 | start = None | 479 | start = None |