mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 21:09:03 +02:00

This adds SPDX license headers in place of the wide assortment of things currently in our script headers. We default to GPL-2.0-only except for the oeqa code where it was clearly submitted and marked as MIT on the most part or some scripts which had the "or later" GPL versioning. The patch also drops other obsolete bits of file headers where they were encoountered such as editor modelines, obsolete maintainer information or the phrase "All rights reserved" which is now obsolete and not required in copyright headers (in this case its actually confusing for licensing as all rights were not reserved). More work is needed for OE-Core but this takes care of the bulk of the scripts and meta/lib directories. The top level LICENSE files are tweaked to match the new structure and the SPDX naming. (From OE-Core rev: f8c9c511b5f1b7dbd45b77f345cb6c048ae6763e) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
221 lines
13 KiB
Python
221 lines
13 KiB
Python
#
|
|
# SPDX-License-Identifier: MIT
|
|
#
|
|
|
|
import os
|
|
import tempfile
|
|
import fnmatch
|
|
|
|
from oeqa.selftest.case import OESelftestTestCase
|
|
from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars
|
|
|
|
class OePkgdataUtilTests(OESelftestTestCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(OePkgdataUtilTests, cls).setUpClass()
|
|
# Ensure we have the right data in pkgdata
|
|
cls.logger.info('Running bitbake to generate pkgdata')
|
|
bitbake('target-sdk-provides-dummy -c clean')
|
|
bitbake('busybox zlib m4')
|
|
|
|
def test_lookup_pkg(self):
|
|
# Forward tests
|
|
result = runCmd('oe-pkgdata-util lookup-pkg "zlib busybox"')
|
|
self.assertEqual(result.output, 'libz1\nbusybox')
|
|
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 "libz1 busybox"')
|
|
self.assertEqual(result.output, 'zlib\nbusybox')
|
|
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)
|
|
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')
|
|
|
|
def test_read_value(self):
|
|
result = runCmd('oe-pkgdata-util read-value PN libz1')
|
|
self.assertEqual(result.output, 'zlib')
|
|
result = runCmd('oe-pkgdata-util read-value PKG libz1')
|
|
self.assertEqual(result.output, 'libz1')
|
|
result = runCmd('oe-pkgdata-util read-value PKGSIZE m4')
|
|
pkgsize = int(result.output.strip())
|
|
self.assertGreater(pkgsize, 1, "Size should be greater than 1. %s" % result.output)
|
|
|
|
def test_find_path(self):
|
|
result = runCmd('oe-pkgdata-util find-path /lib/libz.so.1')
|
|
self.assertEqual(result.output, 'zlib: /lib/libz.so.1')
|
|
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)
|
|
self.assertEqual(result.status, 1, "Status different than 1. output: %s" % result.output)
|
|
self.assertEqual(result.output, 'ERROR: Unable to find any package producing path /not/exist')
|
|
|
|
def test_lookup_recipe(self):
|
|
result = runCmd('oe-pkgdata-util lookup-recipe "libz-staticdev busybox"')
|
|
self.assertEqual(result.output, 'zlib\nbusybox')
|
|
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)
|
|
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')
|
|
|
|
def test_list_pkgs(self):
|
|
# No arguments
|
|
result = runCmd('oe-pkgdata-util list-pkgs')
|
|
pkglist = result.output.split()
|
|
self.assertIn('zlib', 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('libz-dev', pkglist, "Listed packages: %s" % result.output)
|
|
# With recipe specified
|
|
result = runCmd('oe-pkgdata-util list-pkgs -p zlib')
|
|
pkglist = sorted(result.output.split())
|
|
try:
|
|
pkglist.remove('zlib-ptest') # in case ptest is disabled
|
|
except ValueError:
|
|
pass
|
|
self.assertEqual(pkglist, ['zlib', 'zlib-dbg', 'zlib-dev', 'zlib-doc', 'zlib-src', 'zlib-staticdev'], "Packages listed after remove: %s" % result.output)
|
|
# With recipe specified, runtime
|
|
result = runCmd('oe-pkgdata-util list-pkgs -p zlib -r')
|
|
pkglist = sorted(result.output.split())
|
|
try:
|
|
pkglist.remove('libz-ptest') # in case ptest is disabled
|
|
except ValueError:
|
|
pass
|
|
self.assertEqual(pkglist, ['libz-dbg', 'libz-dev', 'libz-doc', 'libz-src', 'libz-staticdev', 'libz1'], "Packages listed after remove: %s" % result.output)
|
|
# With recipe specified and unpackaged
|
|
result = runCmd('oe-pkgdata-util list-pkgs -p zlib -u')
|
|
pkglist = sorted(result.output.split())
|
|
self.assertIn('zlib-locale', pkglist, "Listed packages: %s" % result.output)
|
|
# With recipe specified and unpackaged, runtime
|
|
result = runCmd('oe-pkgdata-util list-pkgs -p zlib -u -r')
|
|
pkglist = sorted(result.output.split())
|
|
self.assertIn('libz-locale', pkglist, "Listed packages: %s" % result.output)
|
|
# With recipe specified and pkgspec
|
|
result = runCmd('oe-pkgdata-util list-pkgs -p zlib "*-d*"')
|
|
pkglist = sorted(result.output.split())
|
|
self.assertEqual(pkglist, ['zlib-dbg', 'zlib-dev', 'zlib-doc'], "Packages listed: %s" % result.output)
|
|
# With recipe specified and pkgspec, runtime
|
|
result = runCmd('oe-pkgdata-util list-pkgs -p zlib -r "*-d*"')
|
|
pkglist = sorted(result.output.split())
|
|
self.assertEqual(pkglist, ['libz-dbg', 'libz-dev', 'libz-doc'], "Packages listed: %s" % result.output)
|
|
|
|
def test_list_pkg_files(self):
|
|
def splitoutput(output):
|
|
files = {}
|
|
curpkg = None
|
|
for line in output.splitlines():
|
|
if line.startswith('\t'):
|
|
self.assertTrue(curpkg, 'Unexpected non-package line:\n%s' % line)
|
|
files[curpkg].append(line.strip())
|
|
else:
|
|
self.assertTrue(line.rstrip().endswith(':'), 'Invalid package line in output:\n%s' % line)
|
|
curpkg = line.split(':')[0]
|
|
files[curpkg] = []
|
|
return files
|
|
bb_vars = get_bb_vars(['base_libdir', 'libdir', 'includedir', 'mandir'])
|
|
base_libdir = bb_vars['base_libdir']
|
|
libdir = bb_vars['libdir']
|
|
includedir = bb_vars['includedir']
|
|
mandir = bb_vars['mandir']
|
|
# Test recipe-space package name
|
|
result = runCmd('oe-pkgdata-util list-pkg-files zlib-dev zlib-doc')
|
|
files = splitoutput(result.output)
|
|
self.assertIn('zlib-dev', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('zlib-doc', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn(os.path.join(includedir, 'zlib.h'), files['zlib-dev'])
|
|
self.assertIn(os.path.join(mandir, 'man3/zlib.3'), files['zlib-doc'])
|
|
# Test runtime package name
|
|
result = runCmd('oe-pkgdata-util list-pkg-files -r libz1 libz-dev')
|
|
files = splitoutput(result.output)
|
|
self.assertIn('libz1', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('libz-dev', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertGreater(len(files['libz1']), 1)
|
|
libspec = os.path.join(base_libdir, 'libz.so.1.*')
|
|
found = False
|
|
for fileitem in files['libz1']:
|
|
if fnmatch.fnmatchcase(fileitem, libspec):
|
|
found = True
|
|
break
|
|
self.assertTrue(found, 'Could not find zlib library file %s in libz1 package file list: %s' % (libspec, files['libz1']))
|
|
self.assertIn(os.path.join(includedir, 'zlib.h'), files['libz-dev'])
|
|
# Test recipe
|
|
result = runCmd('oe-pkgdata-util list-pkg-files -p zlib')
|
|
files = splitoutput(result.output)
|
|
self.assertIn('zlib-dbg', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('zlib-doc', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('zlib-dev', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('zlib-staticdev', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('zlib', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertNotIn('zlib-locale', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
# (ignore ptest, might not be there depending on config)
|
|
self.assertIn(os.path.join(includedir, 'zlib.h'), files['zlib-dev'])
|
|
self.assertIn(os.path.join(mandir, 'man3/zlib.3'), files['zlib-doc'])
|
|
self.assertIn(os.path.join(libdir, 'libz.a'), files['zlib-staticdev'])
|
|
# Test recipe, runtime
|
|
result = runCmd('oe-pkgdata-util list-pkg-files -p zlib -r')
|
|
files = splitoutput(result.output)
|
|
self.assertIn('libz-dbg', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('libz-doc', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('libz-dev', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('libz-staticdev', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('libz1', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertNotIn('libz-locale', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn(os.path.join(includedir, 'zlib.h'), files['libz-dev'])
|
|
self.assertIn(os.path.join(mandir, 'man3/zlib.3'), files['libz-doc'])
|
|
self.assertIn(os.path.join(libdir, 'libz.a'), files['libz-staticdev'])
|
|
# Test recipe, unpackaged
|
|
result = runCmd('oe-pkgdata-util list-pkg-files -p zlib -u')
|
|
files = splitoutput(result.output)
|
|
self.assertIn('zlib-dbg', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('zlib-doc', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('zlib-dev', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('zlib-staticdev', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('zlib', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('zlib-locale', list(files.keys()), "listed pkgs. files: %s" %result.output) # this is the key one
|
|
self.assertIn(os.path.join(includedir, 'zlib.h'), files['zlib-dev'])
|
|
self.assertIn(os.path.join(mandir, 'man3/zlib.3'), files['zlib-doc'])
|
|
self.assertIn(os.path.join(libdir, 'libz.a'), files['zlib-staticdev'])
|
|
# Test recipe, runtime, unpackaged
|
|
result = runCmd('oe-pkgdata-util list-pkg-files -p zlib -r -u')
|
|
files = splitoutput(result.output)
|
|
self.assertIn('libz-dbg', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('libz-doc', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('libz-dev', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('libz-staticdev', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('libz1', list(files.keys()), "listed pkgs. files: %s" %result.output)
|
|
self.assertIn('libz-locale', list(files.keys()), "listed pkgs. files: %s" %result.output) # this is the key one
|
|
self.assertIn(os.path.join(includedir, 'zlib.h'), files['libz-dev'])
|
|
self.assertIn(os.path.join(mandir, 'man3/zlib.3'), files['libz-doc'])
|
|
self.assertIn(os.path.join(libdir, 'libz.a'), files['libz-staticdev'])
|
|
|
|
def test_glob(self):
|
|
tempdir = tempfile.mkdtemp(prefix='pkgdataqa')
|
|
self.track_for_cleanup(tempdir)
|
|
pkglistfile = os.path.join(tempdir, 'pkglist')
|
|
with open(pkglistfile, 'w') as f:
|
|
f.write('libz1\n')
|
|
f.write('busybox\n')
|
|
result = runCmd('oe-pkgdata-util glob %s "*-dev"' % pkglistfile)
|
|
desiredresult = ['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)
|
|
self.assertEqual(result.output, '')
|
|
# Test exclude option
|
|
result = runCmd('oe-pkgdata-util glob %s "*-dev *-dbg" -x "^libz"' % pkglistfile)
|
|
resultlist = result.output.split()
|
|
self.assertNotIn('libz-dev', resultlist)
|
|
self.assertNotIn('libz-dbg', resultlist)
|
|
|
|
def test_specify_pkgdatadir(self):
|
|
result = runCmd('oe-pkgdata-util -p %s lookup-pkg zlib' % get_bb_var('PKGDATA_DIR'))
|
|
self.assertEqual(result.output, 'libz1')
|