All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] selftest/pkgdata: support musl on unit tests
@ 2017-03-30  6:39 leonardo.sandoval.gonzalez
  2017-03-30 11:45 ` Burton, Ross
  0 siblings, 1 reply; 3+ messages in thread
From: leonardo.sandoval.gonzalez @ 2017-03-30  6:39 UTC (permalink / raw)
  To: openembedded-core

From: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>

Test cases should be agnostic to supported distro/tclibc, so consider
musl libc on pkgdata unit tests.

[YOCTO #10890]

Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
---
 meta/lib/oeqa/selftest/pkgdata.py | 39 ++++++++++++++++++++++++---------------
 1 file changed, 24 insertions(+), 15 deletions(-)

diff --git a/meta/lib/oeqa/selftest/pkgdata.py b/meta/lib/oeqa/selftest/pkgdata.py
index 36d8b34..ae402ab 100644
--- a/meta/lib/oeqa/selftest/pkgdata.py
+++ b/meta/lib/oeqa/selftest/pkgdata.py
@@ -3,6 +3,7 @@ import os
 import tempfile
 import logging
 import fnmatch
+import collections
 
 import oeqa.utils.ftools as ftools
 from oeqa.selftest.base import oeSelfTest
@@ -16,21 +17,27 @@ class OePkgdataUtilTests(oeSelfTest):
         # Ensure we have the right data in pkgdata
         logger = logging.getLogger("selftest")
         logger.info('Running bitbake to generate pkgdata')
-        bitbake('glibc busybox zlib m4')
+        bitbake('virtual/libc busybox zlib m4')
+
+        # recipe-runtime-package relation for virtual/libc provider
+        Libc = collections.namedtuple('Libc', ['recipe', 'runtime_pkg', 'libpath', 'staticdev', 'utils', 'rutils'])
+        cls.libc = Libc('glibc', 'libc6', '/lib/libc.so.6', 'libc6-staticdev', 'glibc-utils', 'lib6-utils')
+        if get_bb_var('TCLIBC') == 'musl':
+            cls.libc = Libc('musl', 'musl', '/usr/lib/libc.so', 'musl-staticdev', None, None)
 
     @testcase(1203)
     def test_lookup_pkg(self):
         # Forward tests
-        result = runCmd('oe-pkgdata-util lookup-pkg "glibc busybox"')
-        self.assertEqual(result.output, 'libc6\nbusybox')
+        result = runCmd('oe-pkgdata-util lookup-pkg "%s busybox"' % self.libc.recipe)
+        self.assertEqual(result.output, '%s\nbusybox' % self.libc.runtime_pkg)
         result = runCmd('oe-pkgdata-util lookup-pkg zlib-dev')
         self.assertEqual(result.output, 'libz-dev')
         result = runCmd('oe-pkgdata-util lookup-pkg nonexistentpkg', ignore_status=True)
         self.assertEqual(result.status, 1, "Status different than 1. output: %s" % result.output)
         self.assertEqual(result.output, 'ERROR: The following packages could not be found: nonexistentpkg')
         # Reverse tests
-        result = runCmd('oe-pkgdata-util lookup-pkg -r "libc6 busybox"')
-        self.assertEqual(result.output, 'glibc\nbusybox')
+        result = runCmd('oe-pkgdata-util lookup-pkg -r "%s busybox"' % self.libc.runtime_pkg)
+        self.assertEqual(result.output, '%s\nbusybox' % self.libc.recipe)
         result = runCmd('oe-pkgdata-util lookup-pkg -r libz-dev')
         self.assertEqual(result.output, 'zlib-dev')
         result = runCmd('oe-pkgdata-util lookup-pkg -r nonexistentpkg', ignore_status=True)
@@ -49,8 +56,8 @@ class OePkgdataUtilTests(oeSelfTest):
 
     @testcase(1198)
     def test_find_path(self):
-        result = runCmd('oe-pkgdata-util find-path /lib/libc.so.6')
-        self.assertEqual(result.output, 'glibc: /lib/libc.so.6')
+        result = runCmd('oe-pkgdata-util find-path %s' % self.libc.libpath)
+        self.assertEqual(result.output, '%s: %s' % (self.libc.recipe, self.libc.libpath))
         result = runCmd('oe-pkgdata-util find-path /usr/bin/m4')
         self.assertEqual(result.output, 'm4: /usr/bin/m4')
         result = runCmd('oe-pkgdata-util find-path /not/exist', ignore_status=True)
@@ -59,8 +66,8 @@ class OePkgdataUtilTests(oeSelfTest):
 
     @testcase(1204)
     def test_lookup_recipe(self):
-        result = runCmd('oe-pkgdata-util lookup-recipe "libc6-staticdev busybox"')
-        self.assertEqual(result.output, 'glibc\nbusybox')
+        result = runCmd('oe-pkgdata-util lookup-recipe "%s busybox"' % self.libc.staticdev)
+        self.assertEqual(result.output, '%s\nbusybox' % self.libc.recipe)
         result = runCmd('oe-pkgdata-util lookup-recipe libz-dbg')
         self.assertEqual(result.output, 'zlib')
         result = runCmd('oe-pkgdata-util lookup-recipe nonexistentpkg', ignore_status=True)
@@ -72,12 +79,14 @@ class OePkgdataUtilTests(oeSelfTest):
         # No arguments
         result = runCmd('oe-pkgdata-util list-pkgs')
         pkglist = result.output.split()
-        self.assertIn('glibc-utils', pkglist, "Listed packages: %s" % result.output)
+        # musl does not have the glibc-utils counterpart so just test on glibc
+        self.libc.utils and self.assertIn(self.libc.utils, pkglist, "Listed packages: %s" % result.output)
         self.assertIn('zlib-dev', pkglist, "Listed packages: %s" % result.output)
         # No pkgspec, runtime
         result = runCmd('oe-pkgdata-util list-pkgs -r')
         pkglist = result.output.split()
-        self.assertIn('libc6-utils', pkglist, "Listed packages: %s" % result.output)
+        # musl does not have the libc6-utils counterpart so just test on glibc
+        self.libc.rutils and self.assertIn(self.libc.rutils, pkglist, "Listed packages: %s" % result.output)
         self.assertIn('libz-dev', pkglist, "Listed packages: %s" % result.output)
         # With recipe specified
         result = runCmd('oe-pkgdata-util list-pkgs -p zlib')
@@ -208,11 +217,11 @@ class OePkgdataUtilTests(oeSelfTest):
         self.track_for_cleanup(tempdir)
         pkglistfile = os.path.join(tempdir, 'pkglist')
         with open(pkglistfile, 'w') as f:
-            f.write('libc6\n')
+            f.write('%s\n' % self.libc.runtime_pkg)
             f.write('libz1\n')
             f.write('busybox\n')
         result = runCmd('oe-pkgdata-util glob %s "*-dev"' % pkglistfile)
-        desiredresult = ['libc6-dev', 'libz-dev', 'busybox-dev']
+        desiredresult = ['%s-dev' % self.libc.runtime_pkg, 'libz-dev', 'busybox-dev']
         self.assertEqual(sorted(result.output.split()), sorted(desiredresult))
         # The following should not error (because when we use this during rootfs construction, sometimes the complementary package won't exist)
         result = runCmd('oe-pkgdata-util glob %s "*-nonexistent"' % pkglistfile)
@@ -225,5 +234,5 @@ class OePkgdataUtilTests(oeSelfTest):
 
     @testcase(1206)
     def test_specify_pkgdatadir(self):
-        result = runCmd('oe-pkgdata-util -p %s lookup-pkg glibc' % get_bb_var('PKGDATA_DIR'))
-        self.assertEqual(result.output, 'libc6')
+        result = runCmd('oe-pkgdata-util -p %s lookup-pkg %s' % (get_bb_var('PKGDATA_DIR'), self.libc.recipe))
+        self.assertEqual(result.output, self.libc.runtime_pkg)
-- 
2.10.2



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] selftest/pkgdata: support musl on unit tests
  2017-03-30  6:39 [PATCH] selftest/pkgdata: support musl on unit tests leonardo.sandoval.gonzalez
@ 2017-03-30 11:45 ` Burton, Ross
  2017-03-30 14:38   ` Leonardo Sandoval
  0 siblings, 1 reply; 3+ messages in thread
From: Burton, Ross @ 2017-03-30 11:45 UTC (permalink / raw)
  To: Leonardo Sandoval; +Cc: OE-core

[-- Attachment #1: Type: text/plain, Size: 768 bytes --]

On 30 March 2017 at 07:39, <leonardo.sandoval.gonzalez@linux.intel.com>
wrote:

> +        # recipe-runtime-package relation for virtual/libc provider
> +        Libc = collections.namedtuple('Libc', ['recipe', 'runtime_pkg',
> 'libpath', 'staticdev', 'utils', 'rutils'])
> +        cls.libc = Libc('glibc', 'libc6', '/lib/libc.so.6',
> 'libc6-staticdev', 'glibc-utils', 'lib6-utils')
> +        if get_bb_var('TCLIBC') == 'musl':
> +            cls.libc = Libc('musl', 'musl', '/usr/lib/libc.so',
> 'musl-staticdev', None, None)
>

Instead of all of this, why not just change the tests to use a different
package?  The bulk of them were just using glibc as it's going to be built,
but we've built zlib too so the tests could use that instead.

Ross

[-- Attachment #2: Type: text/html, Size: 1377 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] selftest/pkgdata: support musl on unit tests
  2017-03-30 11:45 ` Burton, Ross
@ 2017-03-30 14:38   ` Leonardo Sandoval
  0 siblings, 0 replies; 3+ messages in thread
From: Leonardo Sandoval @ 2017-03-30 14:38 UTC (permalink / raw)
  To: Burton, Ross; +Cc: OE-core

On Thu, 2017-03-30 at 12:45 +0100, Burton, Ross wrote:
> 
> On 30 March 2017 at 07:39,
> <leonardo.sandoval.gonzalez@linux.intel.com> wrote:
>         +        # recipe-runtime-package relation for virtual/libc
>         provider
>         +        Libc = collections.namedtuple('Libc', ['recipe',
>         'runtime_pkg', 'libpath', 'staticdev', 'utils', 'rutils'])
>         +        cls.libc = Libc('glibc', 'libc6', '/lib/libc.so.6',
>         'libc6-staticdev', 'glibc-utils', 'lib6-utils')
>         +        if get_bb_var('TCLIBC') == 'musl':
>         +            cls.libc = Libc('musl', 'musl',
>         '/usr/lib/libc.so', 'musl-staticdev', None, None)
>         
> 
> Instead of all of this, why not just change the tests to use a
> different package?  The bulk of them were just using glibc as it's
> going to be built, but we've built zlib too so the tests could use
> that instead.

If you consider that replacing the libc for another recipe/package is
fine, I go that way.

Leo
> 
> 
> Ross




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-03-30 14:30 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-30  6:39 [PATCH] selftest/pkgdata: support musl on unit tests leonardo.sandoval.gonzalez
2017-03-30 11:45 ` Burton, Ross
2017-03-30 14:38   ` Leonardo Sandoval

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.