Complete Yocto mirror with license table for TQMa6UL (2038-compliance)
- 264 license table entries with exact download URLs (224/264 resolved) - Complete sources/ directory with all BitBake recipes - Build configuration: tqma6ul-multi-mba6ulx, spaetzle (musl) - Full traceability for Softwarefreigabeantrag - GCC 13.4.0, Linux 6.6.102, U-Boot 2023.04, musl 1.2.4 - License distribution: GPL-2.0 (24), MIT (23), GPL-2.0+ (18), BSD-3 (16)
This commit is contained in:
110
sources/poky/meta/lib/oeqa/selftest/cases/fetch.py
Normal file
110
sources/poky/meta/lib/oeqa/selftest/cases/fetch.py
Normal file
@@ -0,0 +1,110 @@
|
||||
#
|
||||
# Copyright OpenEmbedded Contributors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
import tempfile
|
||||
import textwrap
|
||||
import bb.tinfoil
|
||||
import oe.path
|
||||
from oeqa.selftest.case import OESelftestTestCase
|
||||
from oeqa.utils.commands import bitbake
|
||||
|
||||
class Fetch(OESelftestTestCase):
|
||||
def test_git_mirrors(self):
|
||||
"""
|
||||
Verify that the git fetcher will fall back to the HTTP mirrors. The
|
||||
recipe needs to be one that we have on the Yocto Project source mirror
|
||||
and is hosted in git.
|
||||
"""
|
||||
|
||||
# TODO: mktempd instead of hardcoding
|
||||
dldir = os.path.join(self.builddir, "download-git-mirrors")
|
||||
self.track_for_cleanup(dldir)
|
||||
|
||||
# No mirrors, should use git to fetch successfully
|
||||
features = """
|
||||
DL_DIR = "%s"
|
||||
MIRRORS:forcevariable = ""
|
||||
PREMIRRORS:forcevariable = ""
|
||||
""" % dldir
|
||||
self.write_config(features)
|
||||
oe.path.remove(dldir, recurse=True)
|
||||
bitbake("dbus-wait -c fetch -f")
|
||||
|
||||
# No mirrors and broken git, should fail
|
||||
features = """
|
||||
DL_DIR = "%s"
|
||||
SRC_URI:pn-dbus-wait = "git://git.yoctoproject.org/dbus-wait;branch=master;protocol=git"
|
||||
GIT_PROXY_COMMAND = "false"
|
||||
MIRRORS:forcevariable = ""
|
||||
PREMIRRORS:forcevariable = ""
|
||||
""" % dldir
|
||||
self.write_config(features)
|
||||
oe.path.remove(dldir, recurse=True)
|
||||
with self.assertRaises(AssertionError):
|
||||
bitbake("dbus-wait -c fetch -f")
|
||||
|
||||
# Broken git but a specific mirror
|
||||
features = """
|
||||
DL_DIR = "%s"
|
||||
SRC_URI:pn-dbus-wait = "git://git.yoctoproject.org/dbus-wait;branch=master;protocol=git"
|
||||
GIT_PROXY_COMMAND = "false"
|
||||
MIRRORS:forcevariable = "git://.*/.* http://downloads.yoctoproject.org/mirror/sources/"
|
||||
""" % dldir
|
||||
self.write_config(features)
|
||||
oe.path.remove(dldir, recurse=True)
|
||||
bitbake("dbus-wait -c fetch -f")
|
||||
|
||||
|
||||
class Dependencies(OESelftestTestCase):
|
||||
def write_recipe(self, content, tempdir):
|
||||
f = os.path.join(tempdir, "test.bb")
|
||||
with open(f, "w") as fd:
|
||||
fd.write(content)
|
||||
return f
|
||||
|
||||
def test_dependencies(self):
|
||||
"""
|
||||
Verify that the correct dependencies are generated for specific SRC_URI entries.
|
||||
"""
|
||||
|
||||
with bb.tinfoil.Tinfoil() as tinfoil, tempfile.TemporaryDirectory(prefix="selftest-fetch") as tempdir:
|
||||
tinfoil.prepare(config_only=False, quiet=2)
|
||||
|
||||
r = """
|
||||
LICENSE="CLOSED"
|
||||
SRC_URI="http://example.com/tarball.zip"
|
||||
"""
|
||||
f = self.write_recipe(textwrap.dedent(r), tempdir)
|
||||
d = tinfoil.parse_recipe_file(f)
|
||||
self.assertIn("wget-native", d.getVarFlag("do_fetch", "depends"))
|
||||
self.assertIn("unzip-native", d.getVarFlag("do_unpack", "depends"))
|
||||
|
||||
# Verify that the downloadfilename overrides the URI
|
||||
r = """
|
||||
LICENSE="CLOSED"
|
||||
SRC_URI="https://example.com/tarball;downloadfilename=something.zip"
|
||||
"""
|
||||
f = self.write_recipe(textwrap.dedent(r), tempdir)
|
||||
d = tinfoil.parse_recipe_file(f)
|
||||
self.assertIn("wget-native", d.getVarFlag("do_fetch", "depends"))
|
||||
self.assertIn("unzip-native", d.getVarFlag("do_unpack", "depends") or "")
|
||||
|
||||
r = """
|
||||
LICENSE="CLOSED"
|
||||
SRC_URI="ftp://example.com/tarball.lz"
|
||||
"""
|
||||
f = self.write_recipe(textwrap.dedent(r), tempdir)
|
||||
d = tinfoil.parse_recipe_file(f)
|
||||
self.assertIn("wget-native", d.getVarFlag("do_fetch", "depends"))
|
||||
self.assertIn("lzip-native", d.getVarFlag("do_unpack", "depends"))
|
||||
|
||||
r = """
|
||||
LICENSE="CLOSED"
|
||||
SRC_URI="git://example.com/repo;branch=master;rev=ffffffffffffffffffffffffffffffffffffffff"
|
||||
"""
|
||||
f = self.write_recipe(textwrap.dedent(r), tempdir)
|
||||
d = tinfoil.parse_recipe_file(f)
|
||||
self.assertIn("git-native", d.getVarFlag("do_fetch", "depends"))
|
||||
Reference in New Issue
Block a user