summaryrefslogtreecommitdiffstats
path: root/scripts/lib/recipetool/create.py
diff options
context:
space:
mode:
authorJulien Stephan <jstephan@baylibre.com>2023-12-04 16:59:32 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-12-06 22:55:49 +0000
commit85a2a6f68af304ace1d767e3e8367627cea898f6 (patch)
tree8e20b0b68250cf3a8cc0e69d3036d5f87b92fbe9 /scripts/lib/recipetool/create.py
parent6c06fb0a4395bd98918cbcdb16e93e094e79226e (diff)
downloadpoky-85a2a6f68af304ace1d767e3e8367627cea898f6.tar.gz
recipetool: create_buildsys_python: add pypi support
Today, we can use devtool/recipetool to create recipes for python projects using the github url or the direct release tarball of the project, but the create_buildsys_python plugin doesn't support the pypi class, since we cannot know from the extracted source if the package is available on pypi or not. By implementing the new optional process_url callback, we can detect that the url is a pypi one (i.e 'https://pypi.org/project/<package>') and retrieve the release tarball location. Also detect if the url points to a release tarball hosted on "files.pythonhosted.iorg" (i.e https://files.pythonhosted.org/packages/...) In both cases, adds the pypi class, remove 'S' and 'SRC_URIxxx' variables from the created recipe as they will be handled by the pypi class and add the PYPI_PACKAGE variable This helps to produce cleaner recipes when package is hosted on pypi. If the url points to a github url or a release tarball not coming from "files.pythonhosted.org", the created recipe is the same as before. One can also use the newly added "--no-pypi" switch to NOT inherit from pypi class on matching url, to keep legacy behaviour. To create a recipe for a pypi package, one can now use one of the new following syntax (using recipetool create / devtool add): * recipetool create https://pypi.org/project/<package> * recipetool create https://pypi.org/project/<package>/<version> * recipetool create https://pypi.org/project/<package> --version <version> or the old syntax: * recipetool create https://files.pythonhosted.org/packages/<...> (From OE-Core rev: 097a43846cd99a7d74d004efc57f583ce78970a4) Signed-off-by: Julien Stephan <jstephan@baylibre.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib/recipetool/create.py')
-rw-r--r--scripts/lib/recipetool/create.py1
1 files changed, 1 insertions, 0 deletions
diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/create.py
index 5c5ac7ae40..963aa91421 100644
--- a/scripts/lib/recipetool/create.py
+++ b/scripts/lib/recipetool/create.py
@@ -1413,6 +1413,7 @@ def register_commands(subparsers):
1413 parser_create.add_argument('-B', '--srcbranch', help='Branch in source repository if fetching from an SCM such as git (default master)') 1413 parser_create.add_argument('-B', '--srcbranch', help='Branch in source repository if fetching from an SCM such as git (default master)')
1414 parser_create.add_argument('--keep-temp', action="store_true", help='Keep temporary directory (for debugging)') 1414 parser_create.add_argument('--keep-temp', action="store_true", help='Keep temporary directory (for debugging)')
1415 parser_create.add_argument('--npm-dev', action="store_true", help='For npm, also fetch devDependencies') 1415 parser_create.add_argument('--npm-dev', action="store_true", help='For npm, also fetch devDependencies')
1416 parser_create.add_argument('--no-pypi', action="store_true", help='Do not inherit pypi class')
1416 parser_create.add_argument('--devtool', action="store_true", help=argparse.SUPPRESS) 1417 parser_create.add_argument('--devtool', action="store_true", help=argparse.SUPPRESS)
1417 parser_create.add_argument('--mirrors', action="store_true", help='Enable PREMIRRORS and MIRRORS for source tree fetching (disabled by default).') 1418 parser_create.add_argument('--mirrors', action="store_true", help='Enable PREMIRRORS and MIRRORS for source tree fetching (disabled by default).')
1418 parser_create.set_defaults(func=create_recipe) 1419 parser_create.set_defaults(func=create_recipe)