From cbdddefcffde4ae3cbbc644cb698cd48db8750d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcus=20Sch=C3=A4fer?= Date: Thu, 17 Oct 2024 20:53:40 +0200 Subject: [PATCH] Fixed debian bootstrap script calls Run scripts as commands with their native shebang and not through bash. Not all debian package scripts uses bash, some of them uses sh which can be a link to dash or other interpreters. This Fixes #2660 --- kiwi/package_manager/apt.py | 6 ++-- test/unit/package_manager/apt_test.py | 42 +++++++++++++++++++++++---- 2 files changed, 40 insertions(+), 8 deletions(-) diff --git a/kiwi/package_manager/apt.py b/kiwi/package_manager/apt.py index 25e8fa1f..12f01f20 100644 --- a/kiwi/package_manager/apt.py +++ b/kiwi/package_manager/apt.py @@ -557,17 +557,19 @@ class PackageManagerApt(PackageManagerBase): script_post = f'{package_metadata_dir}/postinst' # 1. preinst if os.path.exists(script_pre): + Command.run(['chmod', '755', script_pre]) Command.run( [ - 'chroot', self.root_dir, 'bash', + 'chroot', self.root_dir, f'{script_pre.replace(self.root_dir, "")}', 'install' ], self.command_env ) # 2. postinst if os.path.exists(script_post): + Command.run(['chmod', '755', script_post]) Command.run( [ - 'chroot', self.root_dir, 'bash', + 'chroot', self.root_dir, f'{script_post.replace(self.root_dir, "")}', 'configure' ], self.command_env ) diff --git a/test/unit/package_manager/apt_test.py b/test/unit/package_manager/apt_test.py index 1f2bada4..28fd8286 100644 --- a/test/unit/package_manager/apt_test.py +++ b/test/unit/package_manager/apt_test.py @@ -182,13 +182,23 @@ class TestPackageManagerApt: ), call( [ - 'chroot', 'root-dir', 'bash', + 'chmod', '755', 'tempdir/base-passwd/preinst' + ] + ), + call( + [ + 'chroot', 'root-dir', 'tempdir/base-passwd/preinst', 'install' ], new_env ), call( [ - 'chroot', 'root-dir', 'bash', + 'chmod', '755', 'tempdir/base-passwd/postinst' + ] + ), + call( + [ + 'chroot', 'root-dir', 'tempdir/base-passwd/postinst', 'configure' ], new_env ), @@ -197,13 +207,23 @@ class TestPackageManagerApt: ), call( [ - 'chroot', 'root-dir', 'bash', + 'chmod', '755', 'tempdir/base-passwd/preinst' + ] + ), + call( + [ + 'chroot', 'root-dir', 'tempdir/base-passwd/preinst', 'install' ], new_env ), call( [ - 'chroot', 'root-dir', 'bash', + 'chmod', '755', 'tempdir/base-passwd/postinst' + ] + ), + call( + [ + 'chroot', 'root-dir', 'tempdir/base-passwd/postinst', 'configure' ], new_env ), @@ -212,13 +232,23 @@ class TestPackageManagerApt: ), call( [ - 'chroot', 'root-dir', 'bash', + 'chmod', '755', 'tempdir/vim/preinst' + ] + ), + call( + [ + 'chroot', 'root-dir', 'tempdir/vim/preinst', 'install' ], new_env ), call( [ - 'chroot', 'root-dir', 'bash', + 'chmod', '755', 'tempdir/vim/postinst' + ] + ), + call( + [ + 'chroot', 'root-dir', 'tempdir/vim/postinst', 'configure' ], new_env )