diff mbox series

[v3,1/3] package/python-yamllint: new package

Message ID 20240412055358.1354293-1-heiko.thiery@gmail.com
State Accepted
Headers show
Series [v3,1/3] package/python-yamllint: new package | expand

Commit Message

Heiko Thiery April 12, 2024, 5:53 a.m. UTC
This host package is needed since u-boot 2024.04 for building ti defconfigs.

This is an requirement for using buildman/binman [1].

[1] https://source.denx.de/u-boot/u-boot/-/blob/v2024.04/tools/buildman/requirements.txt?ref_type=tags#L3

Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
---

v2: accidentally resend this series as v2
    (it's too early in the morning and no coffee yet)

v3:
 - add missing runtime depnedencies
  - a patch that enables the target build for python-pathspec is
    required https://patchwork.ozlabs.org/project/buildroot/patch/20240412054421.1346030-1-heiko.thiery@gmail.com/
 - add runtime test

 package/Config.in                                 |  1 +
 package/python-yamllint/Config.in                 |  8 ++++++++
 package/python-yamllint/python-yamllint.hash      |  3 +++
 package/python-yamllint/python-yamllint.mk        | 15 +++++++++++++++
 .../tests/package/sample_python_yamllint.py       | 13 +++++++++++++
 .../testing/tests/package/test_python_yamllint.py | 11 +++++++++++
 6 files changed, 51 insertions(+)
 create mode 100644 package/python-yamllint/Config.in
 create mode 100644 package/python-yamllint/python-yamllint.hash
 create mode 100644 package/python-yamllint/python-yamllint.mk
 create mode 100644 support/testing/tests/package/sample_python_yamllint.py
 create mode 100644 support/testing/tests/package/test_python_yamllint.py

--
2.39.2

Comments

Yann E. MORIN April 12, 2024, 3:43 p.m. UTC | #1
Heiko, All,

On 2024-04-12 07:53 +0200, Heiko Thiery spake thusly:
> This host package is needed since u-boot 2024.04 for building ti defconfigs.
> 
> This is an requirement for using buildman/binman [1].
> 
> [1] https://source.denx.de/u-boot/u-boot/-/blob/v2024.04/tools/buildman/requirements.txt?ref_type=tags#L3
> 
> Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
> ---
[--SNIP--]
> diff --git a/package/python-yamllint/Config.in b/package/python-yamllint/Config.in
> new file mode 100644
> index 0000000000..5c0962f09f
> --- /dev/null
> +++ b/package/python-yamllint/Config.in
> @@ -0,0 +1,8 @@
> +config BR2_PACKAGE_PYTHON_YAMLLINT
> +	bool "python-yamllint"
> +	select BR2_PACKAGE_PYTHON_PATHSPEC # runtime

    $ ./utils/docker-run make check-package
    package/python-yamllint/Config.in:3: BR2_PACKAGE_PYTHON_PATHSPEC referenced but not defined

OK, I'll go and apply that other patch of yours that introduces the
target variant for python-pathspec, but which is not in this patchset.

You need more coffee! ;-)

Regards,
Yann E. MORIN.

> +	select BR2_PACKAGE_PYTHON_PYYAML # runtime
> +	help
> +	  A linter for YAML files.
> +
> +	  https://github.com/adrienverge/yamllint
> diff --git a/package/python-yamllint/python-yamllint.hash b/package/python-yamllint/python-yamllint.hash
> new file mode 100644
> index 0000000000..d80e0fdf42
> --- /dev/null
> +++ b/package/python-yamllint/python-yamllint.hash
> @@ -0,0 +1,3 @@
> +# Locally computed sha256 checksums
> +sha256  7a003809f88324fd2c877734f2d575ee7881dd9043360657cc8049c809eba6cd  yamllint-1.35.1.tar.gz
> +sha256  3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986  LICENSE
> diff --git a/package/python-yamllint/python-yamllint.mk b/package/python-yamllint/python-yamllint.mk
> new file mode 100644
> index 0000000000..ceaca3b0b8
> --- /dev/null
> +++ b/package/python-yamllint/python-yamllint.mk
> @@ -0,0 +1,15 @@
> +################################################################################
> +#
> +# python-yamllint
> +#
> +################################################################################
> +
> +PYTHON_YAMLLINT_VERSION = 1.35.1
> +PYTHON_YAMLLINT_SOURCE = yamllint-$(PYTHON_YAMLLINT_VERSION).tar.gz
> +PYTHON_YAMLLINT_SITE = https://files.pythonhosted.org/packages/da/06/d8cee5c3dfd550cc0a466ead8b321138198485d1034130ac1393cc49d63e
> +PYTHON_YAMLLINT_SETUP_TYPE = pep517
> +PYTHON_YAMLLINT_LICENSE = GPL-3.0
> +PYTHON_YAMLLINT_LICENSE_FILES = LICENSE
> +
> +$(eval $(python-package))
> +$(eval $(host-python-package))
> diff --git a/support/testing/tests/package/sample_python_yamllint.py b/support/testing/tests/package/sample_python_yamllint.py
> new file mode 100644
> index 0000000000..369a3b8d7d
> --- /dev/null
> +++ b/support/testing/tests/package/sample_python_yamllint.py
> @@ -0,0 +1,13 @@
> +# example form https://yamllint.readthedocs.io/en/stable/development.html
> +
> +from yamllint import (config, linter)
> +
> +data = '''---
> +- &anchor
> +  foo: bar
> +- *anchor
> +'''
> +
> +yaml_config = config.YamlLintConfig("extends: default")
> +for p in linter.run(data, yaml_config):
> +    print(p.desc, p.line, p.rule)
> diff --git a/support/testing/tests/package/test_python_yamllint.py b/support/testing/tests/package/test_python_yamllint.py
> new file mode 100644
> index 0000000000..226048ae87
> --- /dev/null
> +++ b/support/testing/tests/package/test_python_yamllint.py
> @@ -0,0 +1,11 @@
> +from tests.package.test_python import TestPythonPackageBase
> +
> +
> +class TestPythonYamllint(TestPythonPackageBase):
> +    __test__ = True
> +    config = TestPythonPackageBase.config + \
> +        """
> +        BR2_PACKAGE_PYTHON3=y
> +        BR2_PACKAGE_PYTHON_YAMLLINT=y
> +        """
> +    sample_scripts = ["tests/package/sample_python_yamllint.py"]
> --
> 2.39.2
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
Yann E. MORIN April 12, 2024, 3:51 p.m. UTC | #2
Heiko, All,

On 2024-04-12 17:43 +0200, Yann E. MORIN spake thusly:
> Heiko, All,
> 
> On 2024-04-12 07:53 +0200, Heiko Thiery spake thusly:
> > This host package is needed since u-boot 2024.04 for building ti defconfigs.
> > 
> > This is an requirement for using buildman/binman [1].
> > 
> > [1] https://source.denx.de/u-boot/u-boot/-/blob/v2024.04/tools/buildman/requirements.txt?ref_type=tags#L3
> > 
> > Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
> > ---
> [--SNIP--]
> > diff --git a/package/python-yamllint/Config.in b/package/python-yamllint/Config.in
> > new file mode 100644
> > index 0000000000..5c0962f09f
> > --- /dev/null
> > +++ b/package/python-yamllint/Config.in
> > @@ -0,0 +1,8 @@
> > +config BR2_PACKAGE_PYTHON_YAMLLINT
> > +	bool "python-yamllint"
> > +	select BR2_PACKAGE_PYTHON_PATHSPEC # runtime
> 
>     $ ./utils/docker-run make check-package
>     package/python-yamllint/Config.in:3: BR2_PACKAGE_PYTHON_PATHSPEC referenced but not defined
> 
> OK, I'll go and apply that other patch of yours that introduces the
> target variant for python-pathspec, but which is not in this patchset.

Applied to master, now, thanks.

Regards,
Yann E. MORIN.
Romain Naour April 12, 2024, 8:54 p.m. UTC | #3
Hello Heiko, Yann, All,

Le 12/04/2024 à 17:51, Yann E. MORIN a écrit :
> Heiko, All,
> 
> On 2024-04-12 17:43 +0200, Yann E. MORIN spake thusly:
>> Heiko, All,
>>
>> On 2024-04-12 07:53 +0200, Heiko Thiery spake thusly:
>>> This host package is needed since u-boot 2024.04 for building ti defconfigs.
>>>
>>> This is an requirement for using buildman/binman [1].
>>>
>>> [1] https://source.denx.de/u-boot/u-boot/-/blob/v2024.04/tools/buildman/requirements.txt?ref_type=tags#L3
>>>
>>> Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
>>> ---
>> [--SNIP--]
>>> diff --git a/package/python-yamllint/Config.in b/package/python-yamllint/Config.in
>>> new file mode 100644
>>> index 0000000000..5c0962f09f
>>> --- /dev/null
>>> +++ b/package/python-yamllint/Config.in
>>> @@ -0,0 +1,8 @@
>>> +config BR2_PACKAGE_PYTHON_YAMLLINT
>>> +	bool "python-yamllint"
>>> +	select BR2_PACKAGE_PYTHON_PATHSPEC # runtime
>>
>>     $ ./utils/docker-run make check-package
>>     package/python-yamllint/Config.in:3: BR2_PACKAGE_PYTHON_PATHSPEC referenced but not defined
>>
>> OK, I'll go and apply that other patch of yours that introduces the
>> target variant for python-pathspec, but which is not in this patchset.

What if python-pathspec is not installed on the host?

make host-python-yamllint

./ouput/host/bin/python ./support/testing/tests/package/sample_python_yamllint.py

ModuleNotFoundError: No module named 'pathspec'

We must add host-python-pathspec (and all other runtime dependencies) in build
dependencies of host-python-yamllint

  # This is a runtime dependency, but we don't have the concept of
  # runtime dependencies for host packages.
  HOST_PYTHON_YAMLLINT_DEPENDENCIES += \
    host-python-pathspec \
    host-python-pyyaml

Actually, I'm not sure if every host-python packages really do this.

Best regards,
Romain


> 
> Applied to master, now, thanks.
> 
> Regards,
> Yann E. MORIN.
>
Heiko Thiery April 13, 2024, 7:20 a.m. UTC | #4
Hi Romain, all,

Am Fr., 12. Apr. 2024 um 22:54 Uhr schrieb Romain Naour <romain.naour@smile.fr>:
>
> Hello Heiko, Yann, All,
>
> Le 12/04/2024 à 17:51, Yann E. MORIN a écrit :
> > Heiko, All,
> >
> > On 2024-04-12 17:43 +0200, Yann E. MORIN spake thusly:
> >> Heiko, All,
> >>
> >> On 2024-04-12 07:53 +0200, Heiko Thiery spake thusly:
> >>> This host package is needed since u-boot 2024.04 for building ti defconfigs.
> >>>
> >>> This is an requirement for using buildman/binman [1].
> >>>
> >>> [1] https://source.denx.de/u-boot/u-boot/-/blob/v2024.04/tools/buildman/requirements.txt?ref_type=tags#L3
> >>>
> >>> Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
> >>> ---
> >> [--SNIP--]
> >>> diff --git a/package/python-yamllint/Config.in b/package/python-yamllint/Config.in
> >>> new file mode 100644
> >>> index 0000000000..5c0962f09f
> >>> --- /dev/null
> >>> +++ b/package/python-yamllint/Config.in
> >>> @@ -0,0 +1,8 @@
> >>> +config BR2_PACKAGE_PYTHON_YAMLLINT
> >>> +   bool "python-yamllint"
> >>> +   select BR2_PACKAGE_PYTHON_PATHSPEC # runtime
> >>
> >>     $ ./utils/docker-run make check-package
> >>     package/python-yamllint/Config.in:3: BR2_PACKAGE_PYTHON_PATHSPEC referenced but not defined
> >>
> >> OK, I'll go and apply that other patch of yours that introduces the
> >> target variant for python-pathspec, but which is not in this patchset.
>
> What if python-pathspec is not installed on the host?
>
> make host-python-yamllint
>
> ./ouput/host/bin/python ./support/testing/tests/package/sample_python_yamllint.py
>
> ModuleNotFoundError: No module named 'pathspec'
>
> We must add host-python-pathspec (and all other runtime dependencies) in build
> dependencies of host-python-yamllint

You are right .. I just retested this and can confirm. I will prepare
a patch. I also see that the PYTHON_YAMLLINT_SETUP_TYPE is not
correct. I had to use setuptools and not pep517.

It's really not very satisfying that with the growth of binman so many
dependencies for the uboot are now coming in.

>
>   # This is a runtime dependency, but we don't have the concept of
>   # runtime dependencies for host packages.
>   HOST_PYTHON_YAMLLINT_DEPENDENCIES += \
>     host-python-pathspec \
>     host-python-pyyaml
>
> Actually, I'm not sure if every host-python packages really do this.

I think you are right.

> Best regards,
> Romain
>
diff mbox series

Patch

diff --git a/package/Config.in b/package/Config.in
index d9bbf64c95..1935077f0f 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1437,6 +1437,7 @@  menu "External python modules"
 	source "package/python-xmljson/Config.in"
 	source "package/python-xmltodict/Config.in"
 	source "package/python-xmodem/Config.in"
+	source "package/python-yamllint/Config.in"
 	source "package/python-yarl/Config.in"
 	source "package/python-yatl/Config.in"
 	source "package/python-zc-lockfile/Config.in"
diff --git a/package/python-yamllint/Config.in b/package/python-yamllint/Config.in
new file mode 100644
index 0000000000..5c0962f09f
--- /dev/null
+++ b/package/python-yamllint/Config.in
@@ -0,0 +1,8 @@ 
+config BR2_PACKAGE_PYTHON_YAMLLINT
+	bool "python-yamllint"
+	select BR2_PACKAGE_PYTHON_PATHSPEC # runtime
+	select BR2_PACKAGE_PYTHON_PYYAML # runtime
+	help
+	  A linter for YAML files.
+
+	  https://github.com/adrienverge/yamllint
diff --git a/package/python-yamllint/python-yamllint.hash b/package/python-yamllint/python-yamllint.hash
new file mode 100644
index 0000000000..d80e0fdf42
--- /dev/null
+++ b/package/python-yamllint/python-yamllint.hash
@@ -0,0 +1,3 @@ 
+# Locally computed sha256 checksums
+sha256  7a003809f88324fd2c877734f2d575ee7881dd9043360657cc8049c809eba6cd  yamllint-1.35.1.tar.gz
+sha256  3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986  LICENSE
diff --git a/package/python-yamllint/python-yamllint.mk b/package/python-yamllint/python-yamllint.mk
new file mode 100644
index 0000000000..ceaca3b0b8
--- /dev/null
+++ b/package/python-yamllint/python-yamllint.mk
@@ -0,0 +1,15 @@ 
+################################################################################
+#
+# python-yamllint
+#
+################################################################################
+
+PYTHON_YAMLLINT_VERSION = 1.35.1
+PYTHON_YAMLLINT_SOURCE = yamllint-$(PYTHON_YAMLLINT_VERSION).tar.gz
+PYTHON_YAMLLINT_SITE = https://files.pythonhosted.org/packages/da/06/d8cee5c3dfd550cc0a466ead8b321138198485d1034130ac1393cc49d63e
+PYTHON_YAMLLINT_SETUP_TYPE = pep517
+PYTHON_YAMLLINT_LICENSE = GPL-3.0
+PYTHON_YAMLLINT_LICENSE_FILES = LICENSE
+
+$(eval $(python-package))
+$(eval $(host-python-package))
diff --git a/support/testing/tests/package/sample_python_yamllint.py b/support/testing/tests/package/sample_python_yamllint.py
new file mode 100644
index 0000000000..369a3b8d7d
--- /dev/null
+++ b/support/testing/tests/package/sample_python_yamllint.py
@@ -0,0 +1,13 @@ 
+# example form https://yamllint.readthedocs.io/en/stable/development.html
+
+from yamllint import (config, linter)
+
+data = '''---
+- &anchor
+  foo: bar
+- *anchor
+'''
+
+yaml_config = config.YamlLintConfig("extends: default")
+for p in linter.run(data, yaml_config):
+    print(p.desc, p.line, p.rule)
diff --git a/support/testing/tests/package/test_python_yamllint.py b/support/testing/tests/package/test_python_yamllint.py
new file mode 100644
index 0000000000..226048ae87
--- /dev/null
+++ b/support/testing/tests/package/test_python_yamllint.py
@@ -0,0 +1,11 @@ 
+from tests.package.test_python import TestPythonPackageBase
+
+
+class TestPythonYamllint(TestPythonPackageBase):
+    __test__ = True
+    config = TestPythonPackageBase.config + \
+        """
+        BR2_PACKAGE_PYTHON3=y
+        BR2_PACKAGE_PYTHON_YAMLLINT=y
+        """
+    sample_scripts = ["tests/package/sample_python_yamllint.py"]