[7/7] oeqa/sdk: add test to exercise Meson

Message ID 20190107163823.31816-7-ross.burton@intel.com
State Accepted
Commit 237ed166f48b0e32684a5307d3b47b9485238ed9
Headers show
Series
  • [1/7] toolchain-scripts: run post-relocate scripts for every environment
Related show

Commit Message

Ross Burton Jan. 7, 2019, 4:38 p.m.
(From OE-Core rev: 29359493e391d68a5a6b4fa4d09ffdc1fe6db620)

Signed-off-by: Ross Burton <ross.burton@intel.com>

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

---
 meta/lib/oeqa/sdk/cases/buildepoxy.py | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)
 create mode 100644 meta/lib/oeqa/sdk/cases/buildepoxy.py

-- 
2.11.0

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Comments

Joshua Watt Jan. 7, 2019, 4:44 p.m. | #1
On Mon, 2019-01-07 at 16:38 +0000, Ross Burton wrote:
> (From OE-Core rev: 29359493e391d68a5a6b4fa4d09ffdc1fe6db620)

> 

> Signed-off-by: Ross Burton <ross.burton@intel.com>

> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

> ---

>  meta/lib/oeqa/sdk/cases/buildepoxy.py | 35

> +++++++++++++++++++++++++++++++++++

>  1 file changed, 35 insertions(+)

>  create mode 100644 meta/lib/oeqa/sdk/cases/buildepoxy.py

> 

> diff --git a/meta/lib/oeqa/sdk/cases/buildepoxy.py

> b/meta/lib/oeqa/sdk/cases/buildepoxy.py

> new file mode 100644

> index 00000000000..ef24b4f4ac1

> --- /dev/null

> +++ b/meta/lib/oeqa/sdk/cases/buildepoxy.py

> @@ -0,0 +1,35 @@

> +import os

> +import subprocess

> +import tempfile

> +import unittest

> +

> +from oeqa.sdk.case import OESDKTestCase

> +from oeqa.utils.subprocesstweak import errors_have_output

> +errors_have_output()

> +

> +class EpoxyTest(OESDKTestCase):


FWIW: I know that is in the same style as the assimp test, but I always
thought the test should have been called the "cmake" test, since that
is what we actually care about (not specifically that it can build
assimp; any cmake package could have been used AFAIK).

Perhaps this should break that trend and be called the "meson" test?

> +    """

> +    Test that Meson builds correctly.

> +    """

> +    def setUp(self):

> +        if not (self.tc.hasHostPackage("nativesdk-meson")):

> +            raise unittest.SkipTest("GalculatorTest class: SDK

> doesn't contain Meson")

> +

> +    def test_epoxy(self):

> +        with tempfile.TemporaryDirectory(prefix="epoxy",

> dir=self.tc.sdk_dir) as testdir:

> +            tarball = self.fetch(testdir, self.td["DL_DIR"], "

> https://github.com/anholt/libepoxy/releases/download/1.5.3/libepoxy-1.5.3.tar.xz

> ")

> +

> +            dirs = {}

> +            dirs["source"] = os.path.join(testdir, "libepoxy-1.5.3")

> +            dirs["build"] = os.path.join(testdir, "build")

> +            dirs["install"] = os.path.join(testdir, "install")

> +

> +            subprocess.check_output(["tar", "xf", tarball, "-C",

> testdir])

> +            self.assertTrue(os.path.isdir(dirs["source"]))

> +            os.makedirs(dirs["build"])

> +

> +            self._run("meson -Degl=no -Dglx=no -Dx11=false {build}

> {source}".format(**dirs))

> +            self._run("ninja -C {build} -v".format(**dirs))

> +            self._run("DESTDIR={install} ninja -C {build} -v

> install".format(**dirs))

> +

> +            self.check_elf(os.path.join(dirs["install"], "usr",

> "local", "lib", "libepoxy.so"))

> -- 

> 2.11.0

> 

-- 
Joshua Watt <JPEWhacker@gmail.com>

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Ross Burton Jan. 7, 2019, 4:48 p.m. | #2
On Mon, 7 Jan 2019 at 16:45, Joshua Watt <jpewhacker@gmail.com> wrote:
> FWIW: I know that is in the same style as the assimp test, but I always

> thought the test should have been called the "cmake" test, since that

> is what we actually care about (not specifically that it can build

> assimp; any cmake package could have been used AFAIK).

>

> Perhaps this should break that trend and be called the "meson" test?


My worry was that in the future we'd add another recipe that used
cmake/meson to exercise some other codepaths, and then we'd have the
cmake.py and cmake2.py.

At least by using the upstream name, it's clear what is actually being tested.

Ross
-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Patch

diff --git a/meta/lib/oeqa/sdk/cases/buildepoxy.py b/meta/lib/oeqa/sdk/cases/buildepoxy.py
new file mode 100644
index 00000000000..ef24b4f4ac1
--- /dev/null
+++ b/meta/lib/oeqa/sdk/cases/buildepoxy.py
@@ -0,0 +1,35 @@ 
+import os
+import subprocess
+import tempfile
+import unittest
+
+from oeqa.sdk.case import OESDKTestCase
+from oeqa.utils.subprocesstweak import errors_have_output
+errors_have_output()
+
+class EpoxyTest(OESDKTestCase):
+    """
+    Test that Meson builds correctly.
+    """
+    def setUp(self):
+        if not (self.tc.hasHostPackage("nativesdk-meson")):
+            raise unittest.SkipTest("GalculatorTest class: SDK doesn't contain Meson")
+
+    def test_epoxy(self):
+        with tempfile.TemporaryDirectory(prefix="epoxy", dir=self.tc.sdk_dir) as testdir:
+            tarball = self.fetch(testdir, self.td["DL_DIR"], "https://github.com/anholt/libepoxy/releases/download/1.5.3/libepoxy-1.5.3.tar.xz")
+
+            dirs = {}
+            dirs["source"] = os.path.join(testdir, "libepoxy-1.5.3")
+            dirs["build"] = os.path.join(testdir, "build")
+            dirs["install"] = os.path.join(testdir, "install")
+
+            subprocess.check_output(["tar", "xf", tarball, "-C", testdir])
+            self.assertTrue(os.path.isdir(dirs["source"]))
+            os.makedirs(dirs["build"])
+
+            self._run("meson -Degl=no -Dglx=no -Dx11=false {build} {source}".format(**dirs))
+            self._run("ninja -C {build} -v".format(**dirs))
+            self._run("DESTDIR={install} ninja -C {build} -v install".format(**dirs))
+
+            self.check_elf(os.path.join(dirs["install"], "usr", "local", "lib", "libepoxy.so"))