]> code.ossystems Code Review - openembedded-core.git/commitdiff
oeqa/selftest: Add package hardlink test
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 30 Jul 2018 23:33:27 +0000 (23:33 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 31 Jul 2018 21:42:03 +0000 (22:42 +0100)
We keep breaking the preservation of hardlinks during the packaging process.
Add a selftest which tests this to try and prevent this breaking again.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink.bb [new file with mode: 0644]
meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink/hello.c [new file with mode: 0644]
meta/lib/oeqa/selftest/cases/package.py

diff --git a/meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink.bb b/meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink.bb
new file mode 100644 (file)
index 0000000..8a0e633
--- /dev/null
@@ -0,0 +1,19 @@
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+LICENSE = "MIT"
+
+SRC_URI = "file://hello.c"
+
+S = "${WORKDIR}"
+
+do_compile () {
+       ${CC} hello.c -o hello ${CFLAGS} ${LDFLAGS}
+}
+
+do_install () {
+       install -d ${D}${bindir}
+       install -m 755 hello ${D}${bindir}/hello
+       ln ${D}${bindir}/hello ${D}${bindir}/hello2
+       ln ${D}${bindir}/hello ${D}${bindir}/hello3
+       ln ${D}${bindir}/hello ${D}${bindir}/hello4
+}
diff --git a/meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink/hello.c b/meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink/hello.c
new file mode 100644 (file)
index 0000000..5c45dc6
--- /dev/null
@@ -0,0 +1,5 @@
+#include <stdio.h>
+
+int main() {
+       printf("Hello World!\n");
+}
\ No newline at end of file
index ef6eabef66580037b2e15019781fb51e6fed197e..1e171b5ebefe0ea3b493b3c6eef41b463a7b1e2f 100644 (file)
@@ -1,6 +1,7 @@
 from oeqa.selftest.case import OESelftestTestCase
 from oeqa.core.decorator.oeid import OETestID
-from oeqa.utils.commands import bitbake, get_bb_vars
+from oeqa.utils.commands import bitbake, get_bb_vars, get_bb_var
+import stat
 import subprocess, os
 import oe.path
 
@@ -84,3 +85,15 @@ class VersionOrdering(OESelftestTestCase):
             status = subprocess.call(command, env=env)
             self.assertIn(status, (99, 100, 101))
             self.assertEqual(status - 100, sort, "%s %s (%d) failed" % (ver1, ver2, sort))
+
+class PackageTests(OESelftestTestCase):
+    # Verify that a recipe which sets up hardlink files has those preserved into split packages
+    def test_preserve_hardlinks(self):
+        result = bitbake("selftest-hardlink")
+
+        dest = get_bb_var('PKGDEST', 'selftest-hardlink')
+        bindir = get_bb_var('bindir', 'selftest-hardlink')
+
+        # 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 + "/hello").st_nlink, 8)