123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #
- # 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"))
|