@@ -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"
@@ -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")