mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-05 05:04:44 +02:00
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: 39823d3211411e661320e1164ba4c50370804425) 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> (cherry picked from commit 7171f41c07a39a7543bb64f075d38b8e74563089) Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org> Signed-off-by: Steve Sakoman <steve@sakoman.com>
This commit is contained in:
parent
0d017528d4
commit
c80d82054e
|
@ -10,6 +10,9 @@ S = "${WORKDIR}"
|
|||
|
||||
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 () {
|
||||
|
@ -22,9 +25,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"
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Reference in New Issue
Block a user