mirror of
https://git.yoctoproject.org/poky
synced 2026-04-21 21:32:12 +02:00
rootfs: Ensure run-postinsts is not uninstalled for read-only-rootfs-delayed-postinsts
This patch ensures that pkg_postinst_ontarget task is executed for read only rootfs when read-only-rootfs-delayed-postinsts is set as IMAGE_FEATURES. The issue was that run-postinsts could be uninstalled at the end of rootfs construction and that shouldn't happen for the delayed usecase. In addition to the fix, a test in meta/lib/oeqa/selftest/cases/overlayfs.py testing the fix has been implemented. (From OE-Core rev: 60f587475dda99eaa07848880058b69286b8900e) Signed-off-by: Gassner, Tobias.ext <tobias.gassner.ext@karlstorz.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
a278540fc1
commit
a22bdf729a
@@ -269,7 +269,11 @@ class Rootfs(object, metaclass=ABCMeta):
|
||||
self.pm.remove(["run-postinsts"])
|
||||
|
||||
image_rorfs = bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs",
|
||||
True, False, self.d) and \
|
||||
not bb.utils.contains("IMAGE_FEATURES",
|
||||
"read-only-rootfs-delayed-postinsts",
|
||||
True, False, self.d)
|
||||
|
||||
image_rorfs_force = self.d.getVar('FORCE_RO_REMOVE')
|
||||
|
||||
if image_rorfs or image_rorfs_force == "1":
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#
|
||||
|
||||
from oeqa.selftest.case import OESelftestTestCase
|
||||
from oeqa.utils.commands import bitbake, runqemu
|
||||
from oeqa.utils.commands import bitbake, runqemu, get_bb_vars
|
||||
from oeqa.core.decorator import OETestTag
|
||||
from oeqa.core.decorator.data import skipIfNotMachine
|
||||
|
||||
@@ -466,6 +466,45 @@ IMAGE_INSTALL:append = " overlayfs-user"
|
||||
line = getline_qemu(output, "Read-only file system")
|
||||
self.assertTrue(line, msg=output)
|
||||
|
||||
@skipIfNotMachine("qemux86-64", "tests are qemux86-64 specific currently")
|
||||
def test_postinst_on_target_for_read_only_rootfs(self):
|
||||
"""
|
||||
Summary: The purpose of this test case is to verify that post-installation
|
||||
on target scripts are executed even if using read-only rootfs when
|
||||
read-only-rootfs-delayed-postinsts is set
|
||||
Expected: The test files are created on first boot
|
||||
"""
|
||||
|
||||
import oe.path
|
||||
|
||||
vars = get_bb_vars(("IMAGE_ROOTFS", "sysconfdir"), "core-image-minimal")
|
||||
sysconfdir = vars["sysconfdir"]
|
||||
self.assertIsNotNone(sysconfdir)
|
||||
# Need to use oe.path here as sysconfdir starts with /
|
||||
targettestdir = os.path.join(sysconfdir, "postinst-test")
|
||||
|
||||
config = self.get_working_config()
|
||||
|
||||
args = {
|
||||
'OVERLAYFS_INIT_OPTION': "",
|
||||
'OVERLAYFS_ETC_USE_ORIG_INIT_NAME': 1,
|
||||
'OVERLAYFS_ROOTFS_TYPE': "ext4",
|
||||
'OVERLAYFS_ETC_CREATE_MOUNT_DIRS': 1
|
||||
}
|
||||
|
||||
# read-only-rootfs is already set in get_working_config()
|
||||
config += 'EXTRA_IMAGE_FEATURES += "read-only-rootfs-delayed-postinsts"\n'
|
||||
config += 'CORE_IMAGE_EXTRA_INSTALL = "postinst-delayed-b"\n'
|
||||
|
||||
self.write_config(config.format(**args))
|
||||
|
||||
res = bitbake('core-image-minimal')
|
||||
|
||||
with runqemu('core-image-minimal', image_fstype='wic') as qemu:
|
||||
for filename in ("rootfs", "delayed-a", "delayed-b"):
|
||||
status, output = qemu.run_serial("test -f %s && echo found" % os.path.join(targettestdir, filename))
|
||||
self.assertIn("found", output, "%s was not present on boot" % filename)
|
||||
|
||||
def get_working_config(self):
|
||||
return """
|
||||
# Use systemd as init manager
|
||||
|
||||
Reference in New Issue
Block a user