Dan Bungert has proposed merging ~dbungert/curtin:lp-1992990-riscv-flash-kernel into curtin:master.
Commit message: kernel: use FK_FORCE to ensure flash-kernel runs Requested reviews: curtin developers (curtin-dev) For more details, see: https://code.launchpad.net/~dbungert/curtin/+git/curtin/+merge/431598 -- Your team curtin developers is requested to review the proposed merge of ~dbungert/curtin:lp-1992990-riscv-flash-kernel into curtin:master.
diff --git a/curtin/commands/curthooks.py b/curtin/commands/curthooks.py index 4001166..03a53b1 100644 --- a/curtin/commands/curthooks.py +++ b/curtin/commands/curthooks.py @@ -352,6 +352,15 @@ def setup_kernel_img_conf(target): def install_kernel(cfg, target): + def install(pkg): + env = os.environ.copy() + # recent flash_kernel has checks to prevent it running in cases like + # containers or chroots, but we actually want that as curtin + # is mostly or always doing chroot installs. LP: #1992990 + env["FK_FORCE"] = "yes" + env["FK_FORCE_CONTAINER"] = "yes" + distro.install_packages([pkg], target=target, env=env) + kernel_cfg = cfg.get('kernel', {'package': None, 'fallback-package': "linux-generic", 'mapping': {}}) @@ -367,13 +376,13 @@ def install_kernel(cfg, target): # Machines using flash-kernel may need additional dependencies installed # before running. Run those checks in the ephemeral environment so the - # target only has required packages installed. See LP:1640519 + # target only has required packages installed. See LP: #1640519 fk_packages = get_flash_kernel_pkgs() if fk_packages: distro.install_packages(fk_packages.split(), target=target) if kernel_package: - distro.install_packages([kernel_package], target=target) + install(kernel_package) return # uname[2] is kernel name (ie: 3.16.0-7-generic) @@ -390,7 +399,7 @@ def install_kernel(cfg, target): LOG.warn("Couldn't detect kernel package to install for %s." % kernel) if kernel_fallback is not None: - distro.install_packages([kernel_fallback], target=target) + install(kernel_fallback) return package = "linux-{flavor}{map_suffix}".format( @@ -401,13 +410,13 @@ def install_kernel(cfg, target): LOG.debug("Kernel package '%s' already installed", package) else: LOG.debug("installing kernel package '%s'", package) - distro.install_packages([package], target=target) + install(package) else: if kernel_fallback is not None: LOG.info("Kernel package '%s' not available. " "Installing fallback package '%s'.", package, kernel_fallback) - distro.install_packages([kernel_fallback], target=target) + install(kernel_fallback) else: LOG.warn("Kernel package '%s' not available and no fallback." " System may not boot.", package) diff --git a/tests/unittests/test_curthooks.py b/tests/unittests/test_curthooks.py index 5ca0b8c..194dd49 100644 --- a/tests/unittests/test_curthooks.py +++ b/tests/unittests/test_curthooks.py @@ -69,22 +69,29 @@ class TestCurthooksInstallKernel(CiTestCase): kernel_package = self.kernel_cfg.get('kernel', {}).get('package', {}) self.mock_get_flash_kernel_pkgs.return_value = 'u-boot-tools' - curthooks.install_kernel(self.kernel_cfg, self.target) + with patch.dict(os.environ, clear=True): + curthooks.install_kernel(self.kernel_cfg, self.target) - inst_calls = [ - call(['u-boot-tools'], target=self.target), - call([kernel_package], target=self.target)] + env = {'FK_FORCE': 'yes', 'FK_FORCE_CONTAINER': 'yes'} - self.mock_instpkg.assert_has_calls(inst_calls) + inst_calls = [ + call(['u-boot-tools'], target=self.target), + call([kernel_package], target=self.target, env=env)] + + self.mock_instpkg.assert_has_calls(inst_calls) def test__installs_kernel_package(self): kernel_package = self.kernel_cfg.get('kernel', {}).get('package', {}) self.mock_get_flash_kernel_pkgs.return_value = None - curthooks.install_kernel(self.kernel_cfg, self.target) + with patch.dict(os.environ, clear=True): + curthooks.install_kernel(self.kernel_cfg, self.target) + + env = {'FK_FORCE': 'yes', 'FK_FORCE_CONTAINER': 'yes'} + + self.mock_instpkg.assert_called_with( + [kernel_package], target=self.target, env=env) - self.mock_instpkg.assert_called_with( - [kernel_package], target=self.target) class TestEnableDisableUpdateInitramfs(CiTestCase):
-- Mailing list: https://launchpad.net/~curtin-dev Post to : curtin-dev@lists.launchpad.net Unsubscribe : https://launchpad.net/~curtin-dev More help : https://help.launchpad.net/ListHelp