[PATCH 0/2] Fix reproducible issues in armhf

30 views
Skip to first unread message

venkat...@toshiba-tsip.com

unread,
Aug 7, 2023, 12:35:20 PM8/7/23
to isar-...@googlegroups.com, venkata pyla, ami...@ilbers.de, jan.k...@siemens.com, kazuhiro...@toshiba.co.jp, dinesh...@toshiba-tsip.com, felix.mo...@siemens.com
From: venkata pyla <venkat...@toshiba-tsip.com>

Hi,

The following series patch fixes some reproducible issues in armhf, the
issues are reported in child project `isar-cip-core`[1], please review
them and let me know your feedback on the solutions.


[1] https://gitlab.com/cip-project/cip-core/isar-cip-core/-/issues/70

venkata pyla (2):
rootfs.bbclass: clean blkid cache files from rootfs
image.bbclass: remove core files generated in rootfs

meta/classes/image.bbclass | 6 ++++++
meta/classes/rootfs.bbclass | 6 ++++++
2 files changed, 12 insertions(+)

--
2.20.1


venkat...@toshiba-tsip.com

unread,
Aug 7, 2023, 12:35:21 PM8/7/23
to isar-...@googlegroups.com, venkata pyla, ami...@ilbers.de, jan.k...@siemens.com, kazuhiro...@toshiba.co.jp, dinesh...@toshiba-tsip.com, felix.mo...@siemens.com
From: venkata pyla <venkat...@toshiba-tsip.com>

Sometimes core dumps are created in rootfs and left in the final image,
and that results into non-reproducible images, so move those files to
${WORKDIR}/temp location and warn the user.

In armhf there is an issue with qemu-user-static that results in
creating core dumps which is reported in Debian upstream [1], meanwhile
move these core dumps outside the rootfs.

[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1040981

Signed-off-by: venkata pyla <venkat...@toshiba-tsip.com>
---
meta/classes/image.bbclass | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 08b6d3d6..80509d0d 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -461,6 +461,12 @@ do_rootfs_finalize() {
fi
EOSUDO

+ # Move core dump files generated in rootfs to temp folder in workdir.
+ for f in ${ROOTFSDIR}/*.core; do
+ sudo mv "${f}" "${WORKDIR}/temp/"
+ bbwarn "found core dump in rootfs, moved it to ${WORKDIR}/temp/"
+ done
+
# Set same time-stamps to the newly generated file/folders in the
# rootfs image for the purpose of reproducible builds.
if [ -n "${SOURCE_DATE_EPOCH}" ]; then
--
2.20.1


venkat...@toshiba-tsip.com

unread,
Aug 7, 2023, 12:35:21 PM8/7/23
to isar-...@googlegroups.com, venkata pyla, ami...@ilbers.de, jan.k...@siemens.com, kazuhiro...@toshiba.co.jp, dinesh...@toshiba-tsip.com, felix.mo...@siemens.com
From: venkata pyla <venkat...@toshiba-tsip.com>

Sometimes `blkid` generates cached files `/run/blkid/blkdid.tab*`, these
cache files are not reproducible and not necessary in the final image,
so remove them to achieve reproducible builds.

Signed-off-by: venkata pyla <venkat...@toshiba-tsip.com>
---
meta/classes/rootfs.bbclass | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
index 22449d71..5d493ea2 100644
--- a/meta/classes/rootfs.bbclass
+++ b/meta/classes/rootfs.bbclass
@@ -293,6 +293,12 @@ rootfs_export_dpkg_status() {
'${ROOTFS_DPKGSTATUS_DEPLOY_DIR}'/'${ROOTFS_PACKAGE_SUFFIX}'.dpkg_status
}

+ROOTFS_POSTPROCESS_COMMAND += "rootfs_postprocess_clean_blkid_cache"
+rootfs_postprocess_clean_blkid_cache() {
+ # blkid generates cache file which are not reproducible
+ sudo rm -rf "${ROOTFSDIR}/run/blkid/blkid.tab"*
+}
+
do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
do_rootfs_postprocess[network] = "${TASK_USE_SUDO}"
python do_rootfs_postprocess() {
--
2.20.1


vijai kumar

unread,
Aug 7, 2023, 12:58:50 PM8/7/23
to isar-users
On Monday, August 7, 2023 at 10:05:21 PM UTC+5:30 venkat...@toshiba-tsip.com wrote:
From: venkata pyla <venkat...@toshiba-tsip.com>

Sometimes `blkid` generates cached files `/run/blkid/blkdid.tab*`, these
cache files are not reproducible and not necessary in the final image,
so remove them to achieve reproducible builds.

Signed-off-by: venkata pyla <venkat...@toshiba-tsip.com>
---
meta/classes/rootfs.bbclass | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
index 22449d71..5d493ea2 100644
--- a/meta/classes/rootfs.bbclass
+++ b/meta/classes/rootfs.bbclass
@@ -293,6 +293,12 @@ rootfs_export_dpkg_status() {
'${ROOTFS_DPKGSTATUS_DEPLOY_DIR}'/'${ROOTFS_PACKAGE_SUFFIX}'.dpkg_status
}

+ROOTFS_POSTPROCESS_COMMAND += "rootfs_postprocess_clean_blkid_cache"
+rootfs_postprocess_clean_blkid_cache() {
+ # blkid generates cache file which are not reproducible
+ sudo rm -rf "${ROOTFSDIR}/run/blkid/blkid.tab"*
+}

If this is a necessary clean up function, can we not move to rootfs_finalize? Or maybe adding it to ROOTFS_CLEAN_FILES?

Thanks,
Vijai Kumar K

Venkat...@toshiba-tsip.com

unread,
Aug 9, 2023, 12:05:52 AM8/9/23
to vijaikumar....@gmail.com, isar-...@googlegroups.com

There is no issue to keep this cleaning in `rootfs_finalize`, in fact it is more meaning full to keep all cleanup in finalize methods.

 

Thanks for the suggestion, I will change in v2.

 

Thanks,

Vijai Kumar K

 

+
do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
do_rootfs_postprocess[network] = "${TASK_USE_SUDO}"
python do_rootfs_postprocess() {
--
2.20.1

--
You received this message because you are subscribed to the Google Groups "isar-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/isar-users/6340d949-acc1-4283-9713-01f584686929n%40googlegroups.com.

venkat...@toshiba-tsip.com

unread,
Aug 9, 2023, 9:47:10 AM8/9/23
to isar-...@googlegroups.com, venkata pyla, ami...@ilbers.de, jan.k...@siemens.com, kazuhiro...@toshiba.co.jp, dinesh...@toshiba-tsip.com, felix.mo...@siemens.com, vijaikumar....@gmail.com
From: venkata pyla <venkat...@toshiba-tsip.com>

Hi,

Updated the patch series based on the feedback.

v2 changes:
- Drop cleaning of blkid cache files in rootfs_postporcess_command and
do it in rootfs_finalize method.
- corrected the condition for scanning the *.core files

venkata pyla (2):
image.bbclass: remove core files generated in rootfs
image.bbclass: clean blkid cache files from rootfs

meta/classes/image.bbclass | 10 ++++++++++
1 file changed, 10 insertions(+)

--
2.20.1


venkat...@toshiba-tsip.com

unread,
Aug 9, 2023, 9:47:13 AM8/9/23
to isar-...@googlegroups.com, venkata pyla, ami...@ilbers.de, jan.k...@siemens.com, kazuhiro...@toshiba.co.jp, dinesh...@toshiba-tsip.com, felix.mo...@siemens.com, vijaikumar....@gmail.com
From: venkata pyla <venkat...@toshiba-tsip.com>

blkid generates cache files when `blkid` command is used during build,
these cache files in rootfs causes non-reproducible rootfs, so
delete these files in the cleanup.

Signed-off-by: venkata pyla <venkat...@toshiba-tsip.com>
---
meta/classes/image.bbclass | 3 +++
1 file changed, 3 insertions(+)

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 9aa6c856..d9fc04eb 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -459,6 +459,9 @@ do_rootfs_finalize() {
mv "${ROOTFSDIR}/etc/apt/sources-list" \
"${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
fi
+
+ rm -f "${ROOTFSDIR}/run/blkid/blkid.tab"
+ rm -f "${ROOTFSDIR}/run/blkid/blkid.tab.old"
EOSUDO

# Sometimes qemu-user-static generates coredumps in chroot, move them
--
2.20.1


venkat...@toshiba-tsip.com

unread,
Aug 9, 2023, 9:47:13 AM8/9/23
to isar-...@googlegroups.com, venkata pyla, ami...@ilbers.de, jan.k...@siemens.com, kazuhiro...@toshiba.co.jp, dinesh...@toshiba-tsip.com, felix.mo...@siemens.com, vijaikumar....@gmail.com
From: venkata pyla <venkat...@toshiba-tsip.com>

Sometimes core dumps are created in rootfs and left in the final image,
and that causes non-reproducible images, so move those files to
${WORKDIR}/temp location and warn the user.

In armhf there is an issue with qemu-user-static that results in
creating core dumps which is reported in Debian upstream [1], meanwhile
move these core dumps outside the rootfs.

[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1040981

Signed-off-by: venkata pyla <venkat...@toshiba-tsip.com>
---
meta/classes/image.bbclass | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 08b6d3d6..9aa6c856 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -461,6 +461,13 @@ do_rootfs_finalize() {
fi
EOSUDO

+ # Sometimes qemu-user-static generates coredumps in chroot, move them
+ # to work temporary directory and inform user about it.
+ for f in $(sudo find ${ROOTFSDIR} -name *.core); do
+ sudo mv "${f}" "${WORKDIR}/temp/"
+ bbwarn "found core dump in rootfs, check it in ${WORKDIR}/temp/${f##*/}"

vijai kumar

unread,
Aug 14, 2023, 7:57:15 AM8/14/23
to isar-users
On Wednesday, August 9, 2023 at 7:17:10 PM UTC+5:30 venkat...@toshiba-tsip.com wrote:
From: venkata pyla <venkat...@toshiba-tsip.com>

Hi,

Updated the patch series based on the feedback.

v2 changes:
- Drop cleaning of blkid cache files in rootfs_postporcess_command and
do it in rootfs_finalize method.
- corrected the condition for scanning the *.core files

venkata pyla (2):
image.bbclass: remove core files generated in rootfs
image.bbclass: clean blkid cache files from rootfs


LGTM.

Thanks,
Vijai Kumar K

Uladzimir Bely

unread,
Aug 15, 2023, 10:59:37 AM8/15/23
to venkat...@toshiba-tsip.com, isar-...@googlegroups.com
Applied to next, thanks.

MOESSBAUER, Felix

unread,
Aug 31, 2023, 2:16:44 AM8/31/23
to isar-...@googlegroups.com, vijaikumar....@gmail.com
Why is the /run dir included at all? It will be over-mounted with a
tmpfs at runtime (when using systemd) and by that we could also clear
it. For non systemd use-cases like the containers, the content of that
directory is also not needed.

For details, see
https://www.freedesktop.org/software/systemd/man/file-hierarchy.html#/run/


Felix

MOESSBAUER, Felix

unread,
Aug 31, 2023, 2:22:00 AM8/31/23
to isar-...@googlegroups.com, venkat...@toshiba-tsip.com, ami...@ilbers.de, Kiszka, Jan, kazuhiro...@toshiba.co.jp, dinesh...@toshiba-tsip.com
The name of the coredump file depends on the values of
/proc/sys/kernel/core_uses_pid and /proc/sys/kernel/core_pattern.

The stock kernel default configuration is just "core".
For further details, see [1].

[1] https://github.com/DynamoRIO/dynamorio/issues/6126

Felix
Reply all
Reply to author
Forward
0 new messages