* [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.