recipetool; add support for python_mesonpy class

* Add support to detect the "mesonpy" build-backend for recipetool create.
* Add oe-selftest case for creating a recipe for "siphash24" from pypi.
  https://pypi.org/project/siphash24/

This is by far the simplest recipe using the mesonpy build backend.

Upstream does not provide LICENSE file(s) and we do not detect the
LICENSE so don't check for that result in the test. Likewise, upstream
does not define HOMEPAGE, so skip that result.

(From OE-Core rev: 256749322671d2f4ea994db671d73c4de10e1723)

Signed-off-by: Tim Orling <tim.orling@konsulko.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Tim Orling 2024-02-19 09:30:24 -08:00 committed by Richard Purdie
parent a7484a66b4
commit 9f7475b4e5
2 changed files with 23 additions and 0 deletions

View File

@ -676,6 +676,25 @@ class RecipetoolCreateTests(RecipetoolBase):
self._test_recipe_contents(recipefile, checkvars, inherits)
def test_recipetool_create_python3_pep517_mesonpy(self):
# This test require python 3.11 or above for the tomllib module or tomli module to be installed
needTomllib(self)
# Test creating python3 package from tarball (using mesonpy class)
temprecipe = os.path.join(self.tempdir, 'recipe')
os.makedirs(temprecipe)
pn = 'siphash24'
pv = '1.4'
recipefile = os.path.join(temprecipe, 'python3-%s_%s.bb' % (pn, pv))
srcuri = 'https://files.pythonhosted.org/packages/c2/32/b934a70592f314afcfa86c7f7e388804a8061be65b822e2aa07e573b6477/%s-%s.tar.gz' % (pn, pv)
result = runCmd('recipetool create -o %s %s' % (temprecipe, srcuri))
self.assertTrue(os.path.isfile(recipefile))
checkvars = {}
checkvars['SRC_URI[sha256sum]'] = '7fd65e39b2a7c8c4ddc3a168a687f4610751b0ac2ebb518783c0cdfc30bec4a0'
inherits = ['python_mesonpy', 'pypi']
self._test_recipe_contents(recipefile, checkvars, inherits)
def test_recipetool_create_github_tarball(self):
# Basic test to ensure github URL mangling doesn't apply to release tarballs.
# Deliberately use an older release of Meson at present so we don't need a toml parser.

View File

@ -739,6 +739,7 @@ class PythonPyprojectTomlRecipeHandler(PythonRecipeHandler):
"flit_core.buildapi": "python_flit_core",
"hatchling.build": "python_hatchling",
"maturin": "python_maturin",
"mesonpy": "python_mesonpy",
}
# setuptools.build_meta and flit declare project metadata into the "project" section of pyproject.toml
@ -779,6 +780,8 @@ class PythonPyprojectTomlRecipeHandler(PythonRecipeHandler):
"python3-poetry-core-native",
# already provided by python_flit_core.bbclass
"python3-flit-core-native",
# already provided by python_mesonpy
"python3-meson-python-native",
]
# add here a list of known and often used packages and the corresponding bitbake package
@ -790,6 +793,7 @@ class PythonPyprojectTomlRecipeHandler(PythonRecipeHandler):
"setuptools-scm": "python3-setuptools-scm",
"hatchling": "python3-hatchling",
"hatch-vcs": "python3-hatch-vcs",
"meson-python" : "python3-meson-python",
}
def __init__(self):