* [OE-Core][PATCH v2 1/3] rootfs: Add debugfs package db file copy and cleanup
@ 2023-07-20 10:20 Alex Kiernan
2023-07-20 10:20 ` [OE-Core][PATCH v2 2/3] rpm: Pick debugfs package db files/dirs explicitly Alex Kiernan
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Alex Kiernan @ 2023-07-20 10:20 UTC (permalink / raw)
To: openembedded-core; +Cc: Alex Kiernan
When copying the package database files for the debugfs, add individual
file copy as well as tree copying. After the debug rootfs has been
created, cleanup the package files.
This then allows us to avoid a problem where (for rpm at least)
extraneous files in the debug rootfs would cause failures during
oe-selftest because some files existed in both regular and debugfs
images.
Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
---
Changes in v2:
- New in v2
meta/lib/oe/rootfs.py | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py
index 890ba5f03984..1a48ed10b3f6 100644
--- a/meta/lib/oe/rootfs.py
+++ b/meta/lib/oe/rootfs.py
@@ -106,7 +106,7 @@ class Rootfs(object, metaclass=ABCMeta):
def _cleanup(self):
pass
- def _setup_dbg_rootfs(self, dirs):
+ def _setup_dbg_rootfs(self, package_paths):
gen_debugfs = self.d.getVar('IMAGE_GEN_DEBUGFS') or '0'
if gen_debugfs != '1':
return
@@ -122,11 +122,12 @@ class Rootfs(object, metaclass=ABCMeta):
bb.utils.mkdirhier(self.image_rootfs)
bb.note(" Copying back package database...")
- for dir in dirs:
- if not os.path.isdir(self.image_rootfs + '-orig' + dir):
- continue
- bb.utils.mkdirhier(self.image_rootfs + os.path.dirname(dir))
- shutil.copytree(self.image_rootfs + '-orig' + dir, self.image_rootfs + dir, symlinks=True)
+ for path in package_paths:
+ bb.utils.mkdirhier(self.image_rootfs + os.path.dirname(path))
+ if os.path.isdir(self.image_rootfs + '-orig' + path):
+ shutil.copytree(self.image_rootfs + '-orig' + path, self.image_rootfs + path, symlinks=True)
+ elif os.path.isfile(self.image_rootfs + '-orig' + path):
+ shutil.copyfile(self.image_rootfs + '-orig' + path, self.image_rootfs + path)
# Copy files located in /usr/lib/debug or /usr/src/debug
for dir in ["/usr/lib/debug", "/usr/src/debug"]:
@@ -162,6 +163,13 @@ class Rootfs(object, metaclass=ABCMeta):
bb.note(" Install extra debug packages...")
self.pm.install(extra_debug_pkgs.split(), True)
+ bb.note(" Removing package database...")
+ for path in package_paths:
+ if os.path.isdir(self.image_rootfs + path):
+ shutil.rmtree(self.image_rootfs + path)
+ elif os.path.isfile(self.image_rootfs + path):
+ os.remove(self.image_rootfs + path)
+
bb.note(" Rename debug rootfs...")
try:
shutil.rmtree(self.image_rootfs + '-dbg')
--
2.39.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* [OE-Core][PATCH v2 2/3] rpm: Pick debugfs package db files/dirs explicitly 2023-07-20 10:20 [OE-Core][PATCH v2 1/3] rootfs: Add debugfs package db file copy and cleanup Alex Kiernan @ 2023-07-20 10:20 ` Alex Kiernan 2023-07-20 10:20 ` [OE-Core][PATCH v2 3/3] eudev: Add group sgx to eudev package Alex Kiernan 2023-08-07 20:21 ` [OE-Core][PATCH v2 1/3] rootfs: Add debugfs package db file copy and cleanup Peter Kjellerstedt 2 siblings, 0 replies; 5+ messages in thread From: Alex Kiernan @ 2023-07-20 10:20 UTC (permalink / raw) To: openembedded-core; +Cc: Alex Kiernan Rather than copying the entire /etc hierarchy, specify the pieces we actually need. Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> --- Changes in v2: - New in v2 meta/lib/oe/package_manager/rpm/rootfs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta/lib/oe/package_manager/rpm/rootfs.py b/meta/lib/oe/package_manager/rpm/rootfs.py index d4c415f68cad..3ba539632063 100644 --- a/meta/lib/oe/package_manager/rpm/rootfs.py +++ b/meta/lib/oe/package_manager/rpm/rootfs.py @@ -110,7 +110,7 @@ class PkgRootfs(Rootfs): if self.progress_reporter: self.progress_reporter.next_stage() - self._setup_dbg_rootfs(['/etc', '/var/lib/rpm', '/var/cache/dnf', '/var/lib/dnf']) + self._setup_dbg_rootfs(['/etc/rpm', '/etc/rpmrc', '/etc/dnf', '/var/lib/rpm', '/var/cache/dnf', '/var/lib/dnf']) execute_pre_post_process(self.d, rpm_post_process_cmds) -- 2.39.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [OE-Core][PATCH v2 3/3] eudev: Add group sgx to eudev package 2023-07-20 10:20 [OE-Core][PATCH v2 1/3] rootfs: Add debugfs package db file copy and cleanup Alex Kiernan 2023-07-20 10:20 ` [OE-Core][PATCH v2 2/3] rpm: Pick debugfs package db files/dirs explicitly Alex Kiernan @ 2023-07-20 10:20 ` Alex Kiernan 2023-08-07 20:21 ` [OE-Core][PATCH v2 1/3] rootfs: Add debugfs package db file copy and cleanup Peter Kjellerstedt 2 siblings, 0 replies; 5+ messages in thread From: Alex Kiernan @ 2023-07-20 10:20 UTC (permalink / raw) To: openembedded-core; +Cc: Alex Kiernan Fix startup warning: udevd[171]: specified group 'sgx' unknown This mirrors the change in bab455cd9b1b ("systemd: add group sgx to udev package") for systemd-udev. Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> --- Changes in v2: - Rework rpm handling so that the debugfs doesn't include a spurious copy of /etc which caused the gdbserver selftest to fail because of a duplicate /etc/gshadow file meta/recipes-core/udev/eudev_3.2.12.bb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/meta/recipes-core/udev/eudev_3.2.12.bb b/meta/recipes-core/udev/eudev_3.2.12.bb index 572ccecafd0c..4268bcc2c5de 100644 --- a/meta/recipes-core/udev/eudev_3.2.12.bb +++ b/meta/recipes-core/udev/eudev_3.2.12.bb @@ -18,7 +18,7 @@ SRC_URI[sha256sum] = "ccdd64ec3c381d3c3ed0e99d2e70d1f62988c7763de89ca7bdffafa5ea GITHUB_BASE_URI = "https://github.com/eudev-project/eudev/releases" -inherit autotools update-rc.d qemu pkgconfig features_check manpages github-releases +inherit autotools update-rc.d qemu pkgconfig features_check manpages github-releases useradd CONFLICT_DISTRO_FEATURES = "systemd" @@ -85,3 +85,6 @@ pkg_postinst:${PN}-hwdb () { pkg_prerm:${PN}-hwdb () { rm -f $D${sysconfdir}/udev/hwdb.bin } + +USERADD_PACKAGES = "${PN}" +GROUPADD_PARAM:${PN} = "-r sgx" -- 2.39.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* RE: [OE-Core][PATCH v2 1/3] rootfs: Add debugfs package db file copy and cleanup 2023-07-20 10:20 [OE-Core][PATCH v2 1/3] rootfs: Add debugfs package db file copy and cleanup Alex Kiernan 2023-07-20 10:20 ` [OE-Core][PATCH v2 2/3] rpm: Pick debugfs package db files/dirs explicitly Alex Kiernan 2023-07-20 10:20 ` [OE-Core][PATCH v2 3/3] eudev: Add group sgx to eudev package Alex Kiernan @ 2023-08-07 20:21 ` Peter Kjellerstedt 2023-08-08 7:59 ` Alex Kiernan 2 siblings, 1 reply; 5+ messages in thread From: Peter Kjellerstedt @ 2023-08-07 20:21 UTC (permalink / raw) To: Alex Kiernan, openembedded-core@lists.openembedded.org > -----Original Message----- > From: openembedded-core@lists.openembedded.org <openembedded-core@lists.openembedded.org> On Behalf Of Alex Kiernan > Sent: den 20 juli 2023 12:20 > To: openembedded-core@lists.openembedded.org > Cc: Alex Kiernan <alex.kiernan@gmail.com> > Subject: [OE-Core][PATCH v2 1/3] rootfs: Add debugfs package db file copy and cleanup > > When copying the package database files for the debugfs, add individual > file copy as well as tree copying. After the debug rootfs has been > created, cleanup the package files. > > This then allows us to avoid a problem where (for rpm at least) > extraneous files in the debug rootfs would cause failures during > oe-selftest because some files existed in both regular and debugfs > images. > > Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> > --- > > Changes in v2: > - New in v2 > > meta/lib/oe/rootfs.py | 20 ++++++++++++++------ > 1 file changed, 14 insertions(+), 6 deletions(-) > > diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py > index 890ba5f03984..1a48ed10b3f6 100644 > --- a/meta/lib/oe/rootfs.py > +++ b/meta/lib/oe/rootfs.py > @@ -106,7 +106,7 @@ class Rootfs(object, metaclass=ABCMeta): > def _cleanup(self): > pass > > - def _setup_dbg_rootfs(self, dirs): > + def _setup_dbg_rootfs(self, package_paths): > gen_debugfs = self.d.getVar('IMAGE_GEN_DEBUGFS') or '0' > if gen_debugfs != '1': > return > @@ -122,11 +122,12 @@ class Rootfs(object, metaclass=ABCMeta): > bb.utils.mkdirhier(self.image_rootfs) > > bb.note(" Copying back package database...") > - for dir in dirs: > - if not os.path.isdir(self.image_rootfs + '-orig' + dir): > - continue > - bb.utils.mkdirhier(self.image_rootfs + os.path.dirname(dir)) > - shutil.copytree(self.image_rootfs + '-orig' + dir, self.image_rootfs + dir, symlinks=True) > + for path in package_paths: > + bb.utils.mkdirhier(self.image_rootfs + os.path.dirname(path)) > + if os.path.isdir(self.image_rootfs + '-orig' + path): > + shutil.copytree(self.image_rootfs + '-orig' + path, self.image_rootfs + path, symlinks=True) > + elif os.path.isfile(self.image_rootfs + '-orig' + path): > + shutil.copyfile(self.image_rootfs + '-orig' + path, self.image_rootfs + path) > > # Copy files located in /usr/lib/debug or /usr/src/debug > for dir in ["/usr/lib/debug", "/usr/src/debug"]: > @@ -162,6 +163,13 @@ class Rootfs(object, metaclass=ABCMeta): > bb.note(" Install extra debug packages...") > self.pm.install(extra_debug_pkgs.split(), True) > > + bb.note(" Removing package database...") > + for path in package_paths: > + if os.path.isdir(self.image_rootfs + path): > + shutil.rmtree(self.image_rootfs + path) > + elif os.path.isfile(self.image_rootfs + path): > + os.remove(self.image_rootfs + path) What's the reason to do it like this rather than calling self.pm.remove_packaging_data()? I also just noticed that we apparently have a local change that does the above, but where we also do: # Remove /etc as it may clash with rootfs. Also saves some space. bb.utils.remove(oe.path.join(self.image_rootfs, 'etc'), True) I do not know if that would be appropriate to do here as well? > + > bb.note(" Rename debug rootfs...") > try: > shutil.rmtree(self.image_rootfs + '-dbg') > -- > 2.39.0 //Peter ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [OE-Core][PATCH v2 1/3] rootfs: Add debugfs package db file copy and cleanup 2023-08-07 20:21 ` [OE-Core][PATCH v2 1/3] rootfs: Add debugfs package db file copy and cleanup Peter Kjellerstedt @ 2023-08-08 7:59 ` Alex Kiernan 0 siblings, 0 replies; 5+ messages in thread From: Alex Kiernan @ 2023-08-08 7:59 UTC (permalink / raw) To: Peter Kjellerstedt; +Cc: openembedded-core@lists.openembedded.org On Mon, Aug 7, 2023 at 9:21 PM Peter Kjellerstedt <peter.kjellerstedt@axis.com> wrote: > > > -----Original Message----- > > From: openembedded-core@lists.openembedded.org <openembedded-core@lists.openembedded.org> On Behalf Of Alex Kiernan > > Sent: den 20 juli 2023 12:20 > > To: openembedded-core@lists.openembedded.org > > Cc: Alex Kiernan <alex.kiernan@gmail.com> > > Subject: [OE-Core][PATCH v2 1/3] rootfs: Add debugfs package db file copy and cleanup > > > > When copying the package database files for the debugfs, add individual > > file copy as well as tree copying. After the debug rootfs has been > > created, cleanup the package files. > > > > This then allows us to avoid a problem where (for rpm at least) > > extraneous files in the debug rootfs would cause failures during > > oe-selftest because some files existed in both regular and debugfs > > images. > > > > Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> > > --- > > > > Changes in v2: > > - New in v2 > > > > meta/lib/oe/rootfs.py | 20 ++++++++++++++------ > > 1 file changed, 14 insertions(+), 6 deletions(-) > > > > diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py > > index 890ba5f03984..1a48ed10b3f6 100644 > > --- a/meta/lib/oe/rootfs.py > > +++ b/meta/lib/oe/rootfs.py > > @@ -106,7 +106,7 @@ class Rootfs(object, metaclass=ABCMeta): > > def _cleanup(self): > > pass > > > > - def _setup_dbg_rootfs(self, dirs): > > + def _setup_dbg_rootfs(self, package_paths): > > gen_debugfs = self.d.getVar('IMAGE_GEN_DEBUGFS') or '0' > > if gen_debugfs != '1': > > return > > @@ -122,11 +122,12 @@ class Rootfs(object, metaclass=ABCMeta): > > bb.utils.mkdirhier(self.image_rootfs) > > > > bb.note(" Copying back package database...") > > - for dir in dirs: > > - if not os.path.isdir(self.image_rootfs + '-orig' + dir): > > - continue > > - bb.utils.mkdirhier(self.image_rootfs + os.path.dirname(dir)) > > - shutil.copytree(self.image_rootfs + '-orig' + dir, self.image_rootfs + dir, symlinks=True) > > + for path in package_paths: > > + bb.utils.mkdirhier(self.image_rootfs + os.path.dirname(path)) > > + if os.path.isdir(self.image_rootfs + '-orig' + path): > > + shutil.copytree(self.image_rootfs + '-orig' + path, self.image_rootfs + path, symlinks=True) > > + elif os.path.isfile(self.image_rootfs + '-orig' + path): > > + shutil.copyfile(self.image_rootfs + '-orig' + path, self.image_rootfs + path) > > > > # Copy files located in /usr/lib/debug or /usr/src/debug > > for dir in ["/usr/lib/debug", "/usr/src/debug"]: > > @@ -162,6 +163,13 @@ class Rootfs(object, metaclass=ABCMeta): > > bb.note(" Install extra debug packages...") > > self.pm.install(extra_debug_pkgs.split(), True) > > > > + bb.note(" Removing package database...") > > + for path in package_paths: > > + if os.path.isdir(self.image_rootfs + path): > > + shutil.rmtree(self.image_rootfs + path) > > + elif os.path.isfile(self.image_rootfs + path): > > + os.remove(self.image_rootfs + path) > > What's the reason to do it like this rather than calling > self.pm.remove_packaging_data()? > Just looking now, I suspect only that I didn't notice that it existed! Though looking across the other packaging implementations, it looks like you'd get different things removed than were passed initially. Certainly looks like a refactor would be in order. > I also just noticed that we apparently have a local change that does the > above, but where we also do: > > # Remove /etc as it may clash with rootfs. Also saves some space. > bb.utils.remove(oe.path.join(self.image_rootfs, 'etc'), True) > > I do not know if that would be appropriate to do here as well? > The clash was exactly what I was fixing here (gshadow), but prior to these two changes you got the whole of /etc copied, so a clash was exactly what you were in danger of running into - anything that clashes now, I think wants investigating as to why, rather than just wiping out `/etc` entirely. -- Alex Kiernan ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-08-08 7:59 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-07-20 10:20 [OE-Core][PATCH v2 1/3] rootfs: Add debugfs package db file copy and cleanup Alex Kiernan 2023-07-20 10:20 ` [OE-Core][PATCH v2 2/3] rpm: Pick debugfs package db files/dirs explicitly Alex Kiernan 2023-07-20 10:20 ` [OE-Core][PATCH v2 3/3] eudev: Add group sgx to eudev package Alex Kiernan 2023-08-07 20:21 ` [OE-Core][PATCH v2 1/3] rootfs: Add debugfs package db file copy and cleanup Peter Kjellerstedt 2023-08-08 7:59 ` Alex Kiernan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox