The bsdcpio_test odc/newc format tests verify archive headers byte-by-byte
including inode and device numbers. On ext4 root filesystems (particularly
qemuarm64 and qemuriscv64) inode numbers can exceed the odc 6-octal-digit
or newc 8-hex-digit field widths, causing intermittent assertion failures
in test_format_newc and test_option_c.

Set TMPDIR to a tmpfs mount so the test framework creates its working
directories there, where inode numbers always start small.

[YOCTO #16231] : https://bugzilla.yoctoproject.org/show_bug.cgi?id=16231

Signed-off-by: Pratik Farkase <[email protected]>
---
Changes in v3:
- Use export TMPDIR instead of changing CWD (v2 broke test binary's
  ability to find reference data files)

Changes in v2:
- Use cd "$PTEST_DIR" instead of cd
---
 .../libarchive/libarchive/run-ptest                | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/meta/recipes-extended/libarchive/libarchive/run-ptest 
b/meta/recipes-extended/libarchive/libarchive/run-ptest
index d6b4c3f934..f5f2ef490c 100755
--- a/meta/recipes-extended/libarchive/libarchive/run-ptest
+++ b/meta/recipes-extended/libarchive/libarchive/run-ptest
@@ -1,11 +1,23 @@
 #!/bin/sh
 
+PTEST_DIR=$(cd "$(dirname "$0")" && pwd)
+cd "$PTEST_DIR"
+
 # The fuzz tests run 1000 randomised iterations per archive format and are
 # meant for dedicated fuzzing infrastructure, not routine ptest runs. They
 # regularly time out in the time/memory constrained autobuilder QEMU targets
 # (e.g. test_fuzz_iso9660). Skip them via the upstream escape hatch.
 export SKIP_TEST_FUZZ=1
 
+# The bsdcpio odc/newc format tests verify archive headers byte-by-byte
+# including inode and device numbers. On ext4 root filesystems inode numbers
+# can exceed the odc 6-octal-digit (262143) or newc 8-hex-digit (4294967295)
+# field widths, causing intermittent assertion failures. Set TMPDIR to a
+# tmpfs so test-created files get small inode numbers.
+WORKDIR=$(mktemp -d)
+mount -t tmpfs tmpfs "$WORKDIR"
+export TMPDIR="$WORKDIR"
+
 for t in libarchive_test bsdtar_test bsdcpio_test bsdcat_test bsdunzip_test; do
     ./$t
     if [ $? -eq 0 ]; then
@@ -15,3 +27,5 @@ for t in libarchive_test bsdtar_test bsdcpio_test bsdcat_test 
bsdunzip_test; do
     fi
 done
 
+umount "$WORKDIR"
+rmdir "$WORKDIR"
-- 
2.34.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#242183): 
https://lists.openembedded.org/g/openembedded-core/message/242183
Mute This Topic: https://lists.openembedded.org/mt/120482053/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to