selftest-hardlink: Add additional test cases

Additional test cases for debug symlink generation both binaries
and static libraries.

This also has the side effect of testing for race conditions in the
hardlink debug generation and stripping.

(From OE-Core rev: 7171f41c07a39a7543bb64f075d38b8e74563089)

Signed-off-by: Mark Hatle <mark.hatle@amd.com>
Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Mark Hatle authored and Richard Purdie committed 2024-07-22 16:53:06 +01:00
1 parent fa894486a9
commit 4462724cab
2 files changed
+39

No files matched your search

@@ -11,6 +11,9 @@ UNPACKDIR = "${S}"
do_compile () {
${CC} hello.c -o hello1 ${CFLAGS} ${LDFLAGS}
${CC} hello.c -c -o hello.o ${CFLAGS}
${AR} rcs libhello.a hello.o
}
do_install () {
@@ -23,9 +26,19 @@ do_install () {
ln ${D}${bindir}/hello1 ${D}${libexecdir}/hello3
ln ${D}${bindir}/hello1 ${D}${libexecdir}/hello4
# We need so many hardlink copies to look for specific race conditions
install -d ${D}${libdir}
install -m 0644 libhello.a ${D}${libdir}
for num in `seq 1 100` ; do
ln ${D}${libdir}/libhello.a ${D}${libdir}/libhello-${num}.a
done
dd if=/dev/zero of=${D}${bindir}/sparsetest bs=1 count=0 seek=1M
}
RDEPENDS:${PN}-gdb += "gdb"
PACKAGES =+ "${PN}-gdb"
FILES:${PN}-gdb = "${bindir}/gdb.sh"
PACKAGE_STRIP_STATIC = "1"
PACKAGE_DEBUG_STATIC_SPLIT = "1"
+26
View File
@@ -103,11 +103,37 @@ class PackageTests(OESelftestTestCase):
dest = get_bb_var('PKGDEST', 'selftest-hardlink')
bindir = get_bb_var('bindir', 'selftest-hardlink')
libdir = get_bb_var('libdir', 'selftest-hardlink')
libexecdir = get_bb_var('libexecdir', 'selftest-hardlink')
def checkfiles():
# Recipe creates 4 hardlinked files, there is a copy in package/ and a copy in packages-split/
# so expect 8 in total.
self.assertEqual(os.stat(dest + "/selftest-hardlink" + bindir + "/hello1").st_nlink, 8)
self.assertEqual(os.stat(dest + "/selftest-hardlink" + libexecdir + "/hello3").st_nlink, 8)
# Check dbg version
# 2 items, a copy in both package/packages-split so 4
self.assertEqual(os.stat(dest + "/selftest-hardlink-dbg" + bindir + "/.debug/hello1").st_nlink, 4)
self.assertEqual(os.stat(dest + "/selftest-hardlink-dbg" + libexecdir + "/.debug/hello1").st_nlink, 4)
# Even though the libexecdir name is 'hello3' or 'hello4', that isn't the debug target name
self.assertEqual(os.path.exists(dest + "/selftest-hardlink-dbg" + libexecdir + "/.debug/hello3"), False)
self.assertEqual(os.path.exists(dest + "/selftest-hardlink-dbg" + libexecdir + "/.debug/hello4"), False)
# Check the staticdev libraries
# 101 items, a copy in both package/packages-split so 202
self.assertEqual(os.stat(dest + "/selftest-hardlink-staticdev" + libdir + "/libhello.a").st_nlink, 202)
self.assertEqual(os.stat(dest + "/selftest-hardlink-staticdev" + libdir + "/libhello-25.a").st_nlink, 202)
self.assertEqual(os.stat(dest + "/selftest-hardlink-staticdev" + libdir + "/libhello-50.a").st_nlink, 202)
self.assertEqual(os.stat(dest + "/selftest-hardlink-staticdev" + libdir + "/libhello-75.a").st_nlink, 202)
# Check static dbg
# 101 items, a copy in both package/packages-split so 202
self.assertEqual(os.stat(dest + "/selftest-hardlink-dbg" + libdir + "/.debug-static/libhello.a").st_nlink, 202)
self.assertEqual(os.stat(dest + "/selftest-hardlink-dbg" + libdir + "/.debug-static/libhello-25.a").st_nlink, 202)
self.assertEqual(os.stat(dest + "/selftest-hardlink-dbg" + libdir + "/.debug-static/libhello-50.a").st_nlink, 202)
self.assertEqual(os.stat(dest + "/selftest-hardlink-dbg" + libdir + "/.debug-static/libhello-75.a").st_nlink, 202)
# Test a sparse file remains sparse
sparsestat = os.stat(dest + "/selftest-hardlink" + bindir + "/sparsetest")