openSUSE Commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
September 2023
- 1 participants
- 2327 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-pytest-xvfb for openSUSE:Factory checked in at 2023-09-29 21:12:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pytest-xvfb (Old)
and /work/SRC/openSUSE:Factory/.python-pytest-xvfb.new.28202 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pytest-xvfb"
Fri Sep 29 21:12:50 2023 rev:9 rq:1114075 version:3.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pytest-xvfb/python-pytest-xvfb.changes 2023-06-12 15:24:53.318497258 +0200
+++ /work/SRC/openSUSE:Factory/.python-pytest-xvfb.new.28202/python-pytest-xvfb.changes 2023-09-29 21:13:13.120979783 +0200
@@ -1,0 +2,19 @@
+Wed Sep 27 10:03:35 UTC 2023 - Ben Greiner <code(a)bnavigator.de>
+
+- Update to 3.0.0
+ * New --xvfb-backend argument, which can be used to run Xephyr or
+ Xvnc in place of Xvfb (e.g. for visual inspection but on a
+ remote system or a consistent screen size needed).
+ * Support for Python 3.5 and 3.6 is now dropped, while official
+ support for 3.9, 3.10 and 3.11 was added (with no code chances
+ required).
+ * The Xvfb instance is now no longer saved in pytest's config
+ object as config.xvfb anymore, and only available via the xvfb
+ fixture.
+ * Xvfb is now shut down as late as possible (via an atexit hook
+ registered at import time), seemingly avoiding errors such as
+ "XIO: fatal IO error 0 (Success)".
+ * Code reformatting using black/shed.
+ * Packaging refresh using pyproject.toml.
+
+-------------------------------------------------------------------
Old:
----
LICENSE
pytest-xvfb-2.0.0.tar.gz
New:
----
pytest-xvfb-3.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pytest-xvfb.spec ++++++
--- /var/tmp/diff_new_pack.wpQXCr/_old 2023-09-29 21:13:14.345023947 +0200
+++ /var/tmp/diff_new_pack.wpQXCr/_new 2023-09-29 21:13:14.345023947 +0200
@@ -18,21 +18,22 @@
%{?sle15_python_module_pythons}
Name: python-pytest-xvfb
-Version: 2.0.0
+Version: 3.0.0
Release: 0
Summary: Pytest plugin to run Xvfb for tests
License: MIT
URL: https://github.com/The-Compiler/pytest-xvfb
Source: https://files.pythonhosted.org/packages/source/p/pytest-xvfb/pytest-xvfb-%{…
-# https://github.com/The-Compiler/pytest-xvfb/pull/26
-Source1: https://raw.githubusercontent.com/The-Compiler/pytest-xvfb/master/LICENSE
-BuildRequires: %{python_module PyVirtualDisplay >= 0.3}
+BuildRequires: %{python_module PyVirtualDisplay >= 1.3}
+BuildRequires: %{python_module base >= 3.7}
+BuildRequires: %{python_module pip}
BuildRequires: %{python_module pytest >= 2.8.1}
-BuildRequires: %{python_module setuptools}
+BuildRequires: %{python_module setuptools >= 61.2}
+BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
BuildRequires: xvfb-run
-Requires: python-PyVirtualDisplay >= 0.3
+Requires: python-PyVirtualDisplay >= 1.3
Requires: python-pytest >= 2.8.1
Requires: xdpyinfo
Recommends: xorg-x11-server
@@ -57,21 +58,23 @@
%prep
%setup -q -n pytest-xvfb-%{version}
rm tests/test_xvfb_windows.py
-cp %{SOURCE1} .
%build
-%python_build
+%pyproject_wheel
%install
-%python_install
+%pyproject_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
-# test_failing_start fails on i586
-%pytest -k 'not test_failing_start'
+# can't test this on obs
+donttest="test_empty_display or test_no_xvfb_marker or test_xvfb_with_xauth"
+%pytest -k "not ($donttest)"
%files %{python_files}
%license LICENSE
%doc README.rst
-%{python_sitelib}/*
+%{python_sitelib}/pytest_xvfb.py
+%pycache_only %{python_sitelib}/__pycache__/pytest_xvfb*.pyc
+%{python_sitelib}/pytest_xvfb-%{version}.dist-info
++++++ pytest-xvfb-2.0.0.tar.gz -> pytest-xvfb-3.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-xvfb-2.0.0/CHANGELOG.rst new/pytest-xvfb-3.0.0/CHANGELOG.rst
--- old/pytest-xvfb-2.0.0/CHANGELOG.rst 2020-06-09 19:16:09.000000000 +0200
+++ new/pytest-xvfb-3.0.0/CHANGELOG.rst 2023-05-29 13:54:19.000000000 +0200
@@ -1,6 +1,22 @@
pytest-xvfb changelog
=====================
+v3.0.0
+------
+
+- New ``--xvfb-backend`` argument, which can be used to run Xephyr or Xvnc in
+ place of Xvfb (e.g. for visual inspection but on a remote system or a
+ consistent screen size needed).
+- Support for Python 3.5 and 3.6 is now dropped, while official support for 3.9,
+ 3.10 and 3.11 was added (with no code chances required).
+- The ``Xvfb`` instance is now no longer saved in pytest's ``config`` object as
+ ``config.xvfb`` anymore, and only available via the ``xvfb`` fixture.
+- Xvfb is now shut down as late as possible (via an ``atexit`` hook registered
+ at import time), seemingly avoiding errors such as
+ "XIO: fatal IO error 0 (Success)".
+- Code reformatting using black/shed.
+- Packaging refresh using ``pyproject.toml``.
+
v2.0.0
------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-xvfb-2.0.0/LICENSE new/pytest-xvfb-3.0.0/LICENSE
--- old/pytest-xvfb-2.0.0/LICENSE 1970-01-01 01:00:00.000000000 +0100
+++ new/pytest-xvfb-3.0.0/LICENSE 2023-05-29 13:54:19.000000000 +0200
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 Florian Bruhin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-xvfb-2.0.0/MANIFEST.in new/pytest-xvfb-3.0.0/MANIFEST.in
--- old/pytest-xvfb-2.0.0/MANIFEST.in 2020-06-09 19:16:09.000000000 +0200
+++ new/pytest-xvfb-3.0.0/MANIFEST.in 2023-05-29 13:54:19.000000000 +0200
@@ -1,2 +1,3 @@
include CHANGELOG.rst
+include LICENSE
recursive-include tests *.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-xvfb-2.0.0/PKG-INFO new/pytest-xvfb-3.0.0/PKG-INFO
--- old/pytest-xvfb-2.0.0/PKG-INFO 2020-06-09 19:16:19.892358800 +0200
+++ new/pytest-xvfb-3.0.0/PKG-INFO 2023-05-29 13:54:26.292681200 +0200
@@ -1,120 +1,124 @@
-Metadata-Version: 1.2
+Metadata-Version: 2.1
Name: pytest-xvfb
-Version: 2.0.0
-Summary: A pytest plugin to run Xvfb for tests.
-Home-page: https://github.com/The-Compiler/pytest-xvfb
-Author: Florian Bruhin
-Author-email: me(a)the-compiler.org
-Maintainer: Florian Bruhin
-Maintainer-email: me(a)the-compiler.org
+Version: 3.0.0
+Summary: A pytest plugin to run Xvfb (or Xephyr/Xvnc) for tests.
+Author-email: Florian Bruhin <me(a)the-compiler.org>
+Maintainer-email: Florian Bruhin <me(a)the-compiler.org>
License: MIT
-Description: pytest-xvfb
- ===================================
-
- .. image:: https://travis-ci.org/The-Compiler/pytest-xvfb.svg?branch=master
- :target: https://travis-ci.org/The-Compiler/pytest-xvfb
- :alt: See Build Status on Travis CI
-
- .. image:: https://ci.appveyor.com/api/projects/status/github/The-Compiler/pytest-xvfb…
- :target: https://ci.appveyor.com/project/The-Compiler/pytest-xvfb/branch/master
- :alt: See Build Status on AppVeyor
-
- A pytest plugin to run Xvfb for tests.
-
- ----
-
- Installation
- ------------
-
- You can install "`pytest-xvfb`_" via `pip`_ from `PyPI`_::
-
- $ pip install pytest-xvfb
-
-
- Usage
- -----
-
- With Xvfb and the plugin installed, your testsuite automatically runs with `Xvfb`_. This allows tests to be run without windows popping up during GUI tests or on systems without a display (like a CI).
-
- If Xvfb is not installed, the plugin does not run and your tests will still work as normal. However,
- a warning message will print to standard output letting you know that Xvfb is not installed.
-
- If you're currently using ``xvfb-run`` in something like ``.travis.yml``,
- simply remove it and install this plugin instead - then you'll also have the
- benefits of Xvfb locally.
-
- Features
- --------
-
- You can pass ``--no-xvfb`` to explicitly turn off Xvfb (e.g. to visually
- inspect a failure).
-
- You can mark tests with ``(a)pytest.mark.no_xvfb`` to skip them when they're
- running with Xvfb.
-
- A ``xvfb`` fixture is available with the following attributes:
-
- - ``width``: The configured width of the screen.
- - ``height``: The configured height of the screen.
- - ``colordepth``: The configured colordepth of the screen.
- - ``args``: The arguments to be passed to Xvfb.
- - ``display``: The display number (as int) which is used.
-
- Contributing
- ------------
-
- Contributions are very welcome. Tests can be run with `tox`_, please ensure
- the coverage at least stays the same before you submit a pull request.
-
- License
- -------
-
- Distributed under the terms of the `MIT`_ license, "pytest-xvfb" is free and open source software
-
- Thanks
- ------
-
- This `pytest`_ plugin was generated with `Cookiecutter`_ along with
- `@hackebrot`_'s `Cookiecutter-pytest-plugin`_ template.
-
- Thanks to `@cgoldberg`_ for `xvfbwrapper`_ which was the inspiration for this
- project.
-
- Issues
- ------
-
- If you encounter any problems, please `file an issue`_ along with a detailed description.
-
- .. _`pytest-xvfb`: https://pypi.python.org/pypi/pytest-xvfb/
- .. _`Xvfb`: http://www.x.org/releases/X11R7.6/doc/man/man1/Xvfb.1.xhtml
- .. _`Cookiecutter`: https://github.com/audreyr/cookiecutter
- .. _`@hackebrot`: https://github.com/hackebrot
- .. _`@cgoldberg`: https://github.com/cgoldberg
- .. _`xvfbwrapper`: https://github.com/cgoldberg/xvfbwrapper
- .. _`MIT`: http://opensource.org/licenses/MIT
- .. _`BSD-3`: http://opensource.org/licenses/BSD-3-Clause
- .. _`GNU GPL v3.0`: http://www.gnu.org/licenses/gpl-3.0.txt
- .. _`Apache Software License 2.0`: http://www.apache.org/licenses/LICENSE-2.0
- .. _`cookiecutter-pytest-plugin`: https://github.com/pytest-dev/cookiecutter-pytest-plugin
- .. _`file an issue`: https://github.com/The-Compiler/pytest-xvfb/issues
- .. _`pytest`: https://github.com/pytest-dev/pytest
- .. _`tox`: https://tox.readthedocs.org/en/latest/
- .. _`pip`: https://pypi.python.org/pypi/pip/
- .. _`PyPI`: https://pypi.python.org/pypi
-
-Platform: UNKNOWN
+Project-URL: Homepage, https://github.com/The-Compiler/pytest-xvfb
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Testing
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
-Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: MIT License
-Requires-Python: >=3.5
+Requires-Python: >=3.7
+Description-Content-Type: text/x-rst
+License-File: LICENSE
+
+pytest-xvfb
+===================================
+
+A pytest plugin to run `Xvfb`_ (or `Xephyr`_/`Xvnc`_) for tests.
+
+----
+
+Installation
+------------
+
+You can install "`pytest-xvfb`_" via `pip`_ from `PyPI`_::
+
+ $ pip install pytest-xvfb
+
+
+Usage
+-----
+
+With Xvfb and the plugin installed, your testsuite automatically runs with `Xvfb`_. This allows tests to be run without windows popping up during GUI tests or on systems without a display (like a CI).
+
+The plugin sees Xvfb being installed as "optional", since the tests can still
+run without it installed. If it's unavailable, it will show an informational
+message, if on Linux and a ``DISPLAY`` is available. When using
+``--xvfb-backend xvfb``, this message will turn into a hard error instead.
+
+If you're currently using ``xvfb-run`` in something like a GitHub Actions YAML
+file simply remove the wrapper and install this plugin instead - then you'll
+also have the benefits of Xvfb locally.
+
+Features
+--------
+
+You can pass ``--no-xvfb`` to explicitly turn off Xvfb (e.g. to visually
+inspect a failure).
+
+With ``--xvfb-backend xephyr`` or ``--xvfb-backend xvnc``, you can use Xephyr
+or Xvnc in place of Xvfb, e.g. to visually inspect failures.
+
+**NOTE:** Support for ``xvnc`` is currently experimental and not tested on CI,
+due to incompatibilities with PyVirtualDisplay and Ubuntu 22.04's tightvncserver.
+
+You can mark tests with ``(a)pytest.mark.no_xvfb`` to skip them when they're
+running with Xvfb.
+
+A ``xvfb`` fixture is available with the following attributes:
+
+- ``width``: The configured width of the screen.
+- ``height``: The configured height of the screen.
+- ``colordepth``: The configured colordepth of the screen.
+- ``args``: The arguments to be passed to Xvfb.
+- ``display``: The display number (as int) which is used.
+- ``backend``: Either ``None`` (Xvfb), ``"xvfb"``, ``"xephyr"``, or ``"xvnc"``.
+
+In a pytest.ini, ``xvfb_width``, ``xvfb_height``, ``xvfb_colordepth`` and
+``xvfb_args`` can be used to configure the respective values. In addition,
+``xvfb_xauth`` can be set to ``true`` to generate an ``Xauthority`` token.
+
+Contributing
+------------
+
+Contributions are very welcome. Tests can be run with `tox`_, please ensure
+the coverage at least stays the same before you submit a pull request.
+
+License
+-------
+
+Distributed under the terms of the `MIT`_ license, "pytest-xvfb" is free and open source software
+
+Thanks
+------
+
+This `pytest`_ plugin was generated with `Cookiecutter`_ along with
+`@hackebrot`_'s `Cookiecutter-pytest-plugin`_ template.
+
+Thanks to `@cgoldberg`_ for `xvfbwrapper`_ which was the inspiration for this
+project.
+
+Issues
+------
+
+If you encounter any problems, please `file an issue`_ along with a detailed description.
+
+.. _`pytest-xvfb`: https://pypi.python.org/pypi/pytest-xvfb/
+.. _`Cookiecutter`: https://github.com/audreyr/cookiecutter
+.. _`@hackebrot`: https://github.com/hackebrot
+.. _`@cgoldberg`: https://github.com/cgoldberg
+.. _`xvfbwrapper`: https://github.com/cgoldberg/xvfbwrapper
+.. _`MIT`: http://opensource.org/licenses/MIT
+.. _`cookiecutter-pytest-plugin`: https://github.com/pytest-dev/cookiecutter-pytest-plugin
+.. _`file an issue`: https://github.com/The-Compiler/pytest-xvfb/issues
+.. _`pytest`: https://github.com/pytest-dev/pytest
+.. _`tox`: https://tox.readthedocs.org/en/latest/
+.. _`pip`: https://pypi.python.org/pypi/pip/
+.. _`PyPI`: https://pypi.python.org/pypi
+.. _`Xvfb`: https://en.wikipedia.org/wiki/Xvfb
+.. _`Xephyr`: https://www.freedesktop.org/wiki/Software/Xephyr/
+.. _`Xvnc`: https://tigervnc.org/doc/Xvnc.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-xvfb-2.0.0/README.rst new/pytest-xvfb-3.0.0/README.rst
--- old/pytest-xvfb-2.0.0/README.rst 2020-06-09 19:16:09.000000000 +0200
+++ new/pytest-xvfb-3.0.0/README.rst 2023-05-29 13:54:19.000000000 +0200
@@ -1,15 +1,7 @@
pytest-xvfb
===================================
-.. image:: https://travis-ci.org/The-Compiler/pytest-xvfb.svg?branch=master
- :target: https://travis-ci.org/The-Compiler/pytest-xvfb
- :alt: See Build Status on Travis CI
-
-.. image:: https://ci.appveyor.com/api/projects/status/github/The-Compiler/pytest-xvfb…
- :target: https://ci.appveyor.com/project/The-Compiler/pytest-xvfb/branch/master
- :alt: See Build Status on AppVeyor
-
-A pytest plugin to run Xvfb for tests.
+A pytest plugin to run `Xvfb`_ (or `Xephyr`_/`Xvnc`_) for tests.
----
@@ -26,12 +18,14 @@
With Xvfb and the plugin installed, your testsuite automatically runs with `Xvfb`_. This allows tests to be run without windows popping up during GUI tests or on systems without a display (like a CI).
-If Xvfb is not installed, the plugin does not run and your tests will still work as normal. However,
-a warning message will print to standard output letting you know that Xvfb is not installed.
-
-If you're currently using ``xvfb-run`` in something like ``.travis.yml``,
-simply remove it and install this plugin instead - then you'll also have the
-benefits of Xvfb locally.
+The plugin sees Xvfb being installed as "optional", since the tests can still
+run without it installed. If it's unavailable, it will show an informational
+message, if on Linux and a ``DISPLAY`` is available. When using
+``--xvfb-backend xvfb``, this message will turn into a hard error instead.
+
+If you're currently using ``xvfb-run`` in something like a GitHub Actions YAML
+file simply remove the wrapper and install this plugin instead - then you'll
+also have the benefits of Xvfb locally.
Features
--------
@@ -39,6 +33,12 @@
You can pass ``--no-xvfb`` to explicitly turn off Xvfb (e.g. to visually
inspect a failure).
+With ``--xvfb-backend xephyr`` or ``--xvfb-backend xvnc``, you can use Xephyr
+or Xvnc in place of Xvfb, e.g. to visually inspect failures.
+
+**NOTE:** Support for ``xvnc`` is currently experimental and not tested on CI,
+due to incompatibilities with PyVirtualDisplay and Ubuntu 22.04's tightvncserver.
+
You can mark tests with ``(a)pytest.mark.no_xvfb`` to skip them when they're
running with Xvfb.
@@ -49,6 +49,11 @@
- ``colordepth``: The configured colordepth of the screen.
- ``args``: The arguments to be passed to Xvfb.
- ``display``: The display number (as int) which is used.
+- ``backend``: Either ``None`` (Xvfb), ``"xvfb"``, ``"xephyr"``, or ``"xvnc"``.
+
+In a pytest.ini, ``xvfb_width``, ``xvfb_height``, ``xvfb_colordepth`` and
+``xvfb_args`` can be used to configure the respective values. In addition,
+``xvfb_xauth`` can be set to ``true`` to generate an ``Xauthority`` token.
Contributing
------------
@@ -76,18 +81,17 @@
If you encounter any problems, please `file an issue`_ along with a detailed description.
.. _`pytest-xvfb`: https://pypi.python.org/pypi/pytest-xvfb/
-.. _`Xvfb`: http://www.x.org/releases/X11R7.6/doc/man/man1/Xvfb.1.xhtml
.. _`Cookiecutter`: https://github.com/audreyr/cookiecutter
.. _`@hackebrot`: https://github.com/hackebrot
.. _`@cgoldberg`: https://github.com/cgoldberg
.. _`xvfbwrapper`: https://github.com/cgoldberg/xvfbwrapper
.. _`MIT`: http://opensource.org/licenses/MIT
-.. _`BSD-3`: http://opensource.org/licenses/BSD-3-Clause
-.. _`GNU GPL v3.0`: http://www.gnu.org/licenses/gpl-3.0.txt
-.. _`Apache Software License 2.0`: http://www.apache.org/licenses/LICENSE-2.0
.. _`cookiecutter-pytest-plugin`: https://github.com/pytest-dev/cookiecutter-pytest-plugin
.. _`file an issue`: https://github.com/The-Compiler/pytest-xvfb/issues
.. _`pytest`: https://github.com/pytest-dev/pytest
.. _`tox`: https://tox.readthedocs.org/en/latest/
.. _`pip`: https://pypi.python.org/pypi/pip/
.. _`PyPI`: https://pypi.python.org/pypi
+.. _`Xvfb`: https://en.wikipedia.org/wiki/Xvfb
+.. _`Xephyr`: https://www.freedesktop.org/wiki/Software/Xephyr/
+.. _`Xvnc`: https://tigervnc.org/doc/Xvnc.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-xvfb-2.0.0/pyproject.toml new/pytest-xvfb-3.0.0/pyproject.toml
--- old/pytest-xvfb-2.0.0/pyproject.toml 1970-01-01 01:00:00.000000000 +0100
+++ new/pytest-xvfb-3.0.0/pyproject.toml 2023-05-29 13:54:19.000000000 +0200
@@ -0,0 +1,41 @@
+[build-system]
+requires = ["setuptools>=61.2"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "pytest-xvfb"
+version = "3.0.0"
+authors = [{name = "Florian Bruhin", email = "me(a)the-compiler.org"}]
+maintainers = [{name = "Florian Bruhin", email = "me(a)the-compiler.org"}]
+license = {text = "MIT"}
+description = "A pytest plugin to run Xvfb (or Xephyr/Xvnc) for tests."
+readme = "README.rst"
+classifiers = [
+ "Development Status :: 4 - Beta",
+ "Intended Audience :: Developers",
+ "Topic :: Software Development :: Testing",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 3 :: Only",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.7",
+ "Programming Language :: Python :: 3.8",
+ "Programming Language :: Python :: 3.9",
+ "Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: Implementation :: CPython",
+ "Programming Language :: Python :: Implementation :: PyPy",
+ "Operating System :: OS Independent",
+ "License :: OSI Approved :: MIT License",
+]
+requires-python = ">=3.7"
+dependencies = ["pytest>=2.8.1", "pyvirtualdisplay>=1.3"]
+
+[project.urls]
+Homepage = "https://github.com/The-Compiler/pytest-xvfb"
+
+[project.entry-points]
+pytest11 = {xvfb = "pytest_xvfb"}
+
+[tool.setuptools]
+py-modules = ["pytest_xvfb"]
+include-package-data = false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-xvfb-2.0.0/pytest_xvfb.egg-info/PKG-INFO new/pytest-xvfb-3.0.0/pytest_xvfb.egg-info/PKG-INFO
--- old/pytest-xvfb-2.0.0/pytest_xvfb.egg-info/PKG-INFO 2020-06-09 19:16:19.000000000 +0200
+++ new/pytest-xvfb-3.0.0/pytest_xvfb.egg-info/PKG-INFO 2023-05-29 13:54:26.000000000 +0200
@@ -1,120 +1,124 @@
-Metadata-Version: 1.2
+Metadata-Version: 2.1
Name: pytest-xvfb
-Version: 2.0.0
-Summary: A pytest plugin to run Xvfb for tests.
-Home-page: https://github.com/The-Compiler/pytest-xvfb
-Author: Florian Bruhin
-Author-email: me(a)the-compiler.org
-Maintainer: Florian Bruhin
-Maintainer-email: me(a)the-compiler.org
+Version: 3.0.0
+Summary: A pytest plugin to run Xvfb (or Xephyr/Xvnc) for tests.
+Author-email: Florian Bruhin <me(a)the-compiler.org>
+Maintainer-email: Florian Bruhin <me(a)the-compiler.org>
License: MIT
-Description: pytest-xvfb
- ===================================
-
- .. image:: https://travis-ci.org/The-Compiler/pytest-xvfb.svg?branch=master
- :target: https://travis-ci.org/The-Compiler/pytest-xvfb
- :alt: See Build Status on Travis CI
-
- .. image:: https://ci.appveyor.com/api/projects/status/github/The-Compiler/pytest-xvfb…
- :target: https://ci.appveyor.com/project/The-Compiler/pytest-xvfb/branch/master
- :alt: See Build Status on AppVeyor
-
- A pytest plugin to run Xvfb for tests.
-
- ----
-
- Installation
- ------------
-
- You can install "`pytest-xvfb`_" via `pip`_ from `PyPI`_::
-
- $ pip install pytest-xvfb
-
-
- Usage
- -----
-
- With Xvfb and the plugin installed, your testsuite automatically runs with `Xvfb`_. This allows tests to be run without windows popping up during GUI tests or on systems without a display (like a CI).
-
- If Xvfb is not installed, the plugin does not run and your tests will still work as normal. However,
- a warning message will print to standard output letting you know that Xvfb is not installed.
-
- If you're currently using ``xvfb-run`` in something like ``.travis.yml``,
- simply remove it and install this plugin instead - then you'll also have the
- benefits of Xvfb locally.
-
- Features
- --------
-
- You can pass ``--no-xvfb`` to explicitly turn off Xvfb (e.g. to visually
- inspect a failure).
-
- You can mark tests with ``(a)pytest.mark.no_xvfb`` to skip them when they're
- running with Xvfb.
-
- A ``xvfb`` fixture is available with the following attributes:
-
- - ``width``: The configured width of the screen.
- - ``height``: The configured height of the screen.
- - ``colordepth``: The configured colordepth of the screen.
- - ``args``: The arguments to be passed to Xvfb.
- - ``display``: The display number (as int) which is used.
-
- Contributing
- ------------
-
- Contributions are very welcome. Tests can be run with `tox`_, please ensure
- the coverage at least stays the same before you submit a pull request.
-
- License
- -------
-
- Distributed under the terms of the `MIT`_ license, "pytest-xvfb" is free and open source software
-
- Thanks
- ------
-
- This `pytest`_ plugin was generated with `Cookiecutter`_ along with
- `@hackebrot`_'s `Cookiecutter-pytest-plugin`_ template.
-
- Thanks to `@cgoldberg`_ for `xvfbwrapper`_ which was the inspiration for this
- project.
-
- Issues
- ------
-
- If you encounter any problems, please `file an issue`_ along with a detailed description.
-
- .. _`pytest-xvfb`: https://pypi.python.org/pypi/pytest-xvfb/
- .. _`Xvfb`: http://www.x.org/releases/X11R7.6/doc/man/man1/Xvfb.1.xhtml
- .. _`Cookiecutter`: https://github.com/audreyr/cookiecutter
- .. _`@hackebrot`: https://github.com/hackebrot
- .. _`@cgoldberg`: https://github.com/cgoldberg
- .. _`xvfbwrapper`: https://github.com/cgoldberg/xvfbwrapper
- .. _`MIT`: http://opensource.org/licenses/MIT
- .. _`BSD-3`: http://opensource.org/licenses/BSD-3-Clause
- .. _`GNU GPL v3.0`: http://www.gnu.org/licenses/gpl-3.0.txt
- .. _`Apache Software License 2.0`: http://www.apache.org/licenses/LICENSE-2.0
- .. _`cookiecutter-pytest-plugin`: https://github.com/pytest-dev/cookiecutter-pytest-plugin
- .. _`file an issue`: https://github.com/The-Compiler/pytest-xvfb/issues
- .. _`pytest`: https://github.com/pytest-dev/pytest
- .. _`tox`: https://tox.readthedocs.org/en/latest/
- .. _`pip`: https://pypi.python.org/pypi/pip/
- .. _`PyPI`: https://pypi.python.org/pypi
-
-Platform: UNKNOWN
+Project-URL: Homepage, https://github.com/The-Compiler/pytest-xvfb
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Testing
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
-Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: MIT License
-Requires-Python: >=3.5
+Requires-Python: >=3.7
+Description-Content-Type: text/x-rst
+License-File: LICENSE
+
+pytest-xvfb
+===================================
+
+A pytest plugin to run `Xvfb`_ (or `Xephyr`_/`Xvnc`_) for tests.
+
+----
+
+Installation
+------------
+
+You can install "`pytest-xvfb`_" via `pip`_ from `PyPI`_::
+
+ $ pip install pytest-xvfb
+
+
+Usage
+-----
+
+With Xvfb and the plugin installed, your testsuite automatically runs with `Xvfb`_. This allows tests to be run without windows popping up during GUI tests or on systems without a display (like a CI).
+
+The plugin sees Xvfb being installed as "optional", since the tests can still
+run without it installed. If it's unavailable, it will show an informational
+message, if on Linux and a ``DISPLAY`` is available. When using
+``--xvfb-backend xvfb``, this message will turn into a hard error instead.
+
+If you're currently using ``xvfb-run`` in something like a GitHub Actions YAML
+file simply remove the wrapper and install this plugin instead - then you'll
+also have the benefits of Xvfb locally.
+
+Features
+--------
+
+You can pass ``--no-xvfb`` to explicitly turn off Xvfb (e.g. to visually
+inspect a failure).
+
+With ``--xvfb-backend xephyr`` or ``--xvfb-backend xvnc``, you can use Xephyr
+or Xvnc in place of Xvfb, e.g. to visually inspect failures.
+
+**NOTE:** Support for ``xvnc`` is currently experimental and not tested on CI,
+due to incompatibilities with PyVirtualDisplay and Ubuntu 22.04's tightvncserver.
+
+You can mark tests with ``(a)pytest.mark.no_xvfb`` to skip them when they're
+running with Xvfb.
+
+A ``xvfb`` fixture is available with the following attributes:
+
+- ``width``: The configured width of the screen.
+- ``height``: The configured height of the screen.
+- ``colordepth``: The configured colordepth of the screen.
+- ``args``: The arguments to be passed to Xvfb.
+- ``display``: The display number (as int) which is used.
+- ``backend``: Either ``None`` (Xvfb), ``"xvfb"``, ``"xephyr"``, or ``"xvnc"``.
+
+In a pytest.ini, ``xvfb_width``, ``xvfb_height``, ``xvfb_colordepth`` and
+``xvfb_args`` can be used to configure the respective values. In addition,
+``xvfb_xauth`` can be set to ``true`` to generate an ``Xauthority`` token.
+
+Contributing
+------------
+
+Contributions are very welcome. Tests can be run with `tox`_, please ensure
+the coverage at least stays the same before you submit a pull request.
+
+License
+-------
+
+Distributed under the terms of the `MIT`_ license, "pytest-xvfb" is free and open source software
+
+Thanks
+------
+
+This `pytest`_ plugin was generated with `Cookiecutter`_ along with
+`@hackebrot`_'s `Cookiecutter-pytest-plugin`_ template.
+
+Thanks to `@cgoldberg`_ for `xvfbwrapper`_ which was the inspiration for this
+project.
+
+Issues
+------
+
+If you encounter any problems, please `file an issue`_ along with a detailed description.
+
+.. _`pytest-xvfb`: https://pypi.python.org/pypi/pytest-xvfb/
+.. _`Cookiecutter`: https://github.com/audreyr/cookiecutter
+.. _`@hackebrot`: https://github.com/hackebrot
+.. _`@cgoldberg`: https://github.com/cgoldberg
+.. _`xvfbwrapper`: https://github.com/cgoldberg/xvfbwrapper
+.. _`MIT`: http://opensource.org/licenses/MIT
+.. _`cookiecutter-pytest-plugin`: https://github.com/pytest-dev/cookiecutter-pytest-plugin
+.. _`file an issue`: https://github.com/The-Compiler/pytest-xvfb/issues
+.. _`pytest`: https://github.com/pytest-dev/pytest
+.. _`tox`: https://tox.readthedocs.org/en/latest/
+.. _`pip`: https://pypi.python.org/pypi/pip/
+.. _`PyPI`: https://pypi.python.org/pypi
+.. _`Xvfb`: https://en.wikipedia.org/wiki/Xvfb
+.. _`Xephyr`: https://www.freedesktop.org/wiki/Software/Xephyr/
+.. _`Xvnc`: https://tigervnc.org/doc/Xvnc.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-xvfb-2.0.0/pytest_xvfb.egg-info/SOURCES.txt new/pytest-xvfb-3.0.0/pytest_xvfb.egg-info/SOURCES.txt
--- old/pytest-xvfb-2.0.0/pytest_xvfb.egg-info/SOURCES.txt 2020-06-09 19:16:19.000000000 +0200
+++ new/pytest-xvfb-3.0.0/pytest_xvfb.egg-info/SOURCES.txt 2023-05-29 13:54:26.000000000 +0200
@@ -1,6 +1,8 @@
CHANGELOG.rst
+LICENSE
MANIFEST.in
README.rst
+pyproject.toml
pytest_xvfb.py
setup.py
pytest_xvfb.egg-info/PKG-INFO
@@ -10,5 +12,6 @@
pytest_xvfb.egg-info/requires.txt
pytest_xvfb.egg-info/top_level.txt
tests/conftest.py
+tests/test_qtwe_xio_error.py
tests/test_xvfb.py
tests/test_xvfb_windows.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-xvfb-2.0.0/pytest_xvfb.egg-info/entry_points.txt new/pytest-xvfb-3.0.0/pytest_xvfb.egg-info/entry_points.txt
--- old/pytest-xvfb-2.0.0/pytest_xvfb.egg-info/entry_points.txt 2020-06-09 19:16:19.000000000 +0200
+++ new/pytest-xvfb-3.0.0/pytest_xvfb.egg-info/entry_points.txt 2023-05-29 13:54:26.000000000 +0200
@@ -1,3 +1,2 @@
[pytest11]
xvfb = pytest_xvfb
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-xvfb-2.0.0/pytest_xvfb.py new/pytest-xvfb-3.0.0/pytest_xvfb.py
--- old/pytest-xvfb-2.0.0/pytest_xvfb.py 2020-06-09 19:16:09.000000000 +0200
+++ new/pytest-xvfb-3.0.0/pytest_xvfb.py 2023-05-29 13:54:19.000000000 +0200
@@ -1,112 +1,133 @@
-# -*- coding: utf-8 -*-
+from __future__ import annotations
+import atexit
import os
-import re
-import time
import os.path
-import fnmatch
-import hashlib
-import tempfile
-import subprocess
import sys
+import pytest
import pyvirtualdisplay
-import pytest
+xvfb_instance = None
+
+
+def shutdown_xvfb() -> None:
+ if xvfb_instance is not None:
+ xvfb_instance.stop()
-def is_xdist_master(config):
- return (
- config.getoption("dist", "no") != "no" and
- not os.environ.get("PYTEST_XDIST_WORKER")
+# This needs to be done as early as possible (before importing QtWebEngine for
+# example), so that Xvfb gets shut down as late as possible.
+atexit.register(shutdown_xvfb)
+
+
+def is_xdist_master(config: pytest.Config) -> bool:
+ return config.getoption("dist", "no") != "no" and not os.environ.get(
+ "PYTEST_XDIST_WORKER"
)
-def xvfb_available():
+def has_executable(name: str) -> bool:
# http://stackoverflow.com/a/28909933/2085149
return any(
- os.access(os.path.join(path, 'Xvfb'), os.X_OK)
+ os.access(os.path.join(path, name), os.X_OK)
for path in os.environ["PATH"].split(os.pathsep)
)
class XvfbExitedError(Exception):
-
pass
-class Xvfb(object):
-
- def __init__(self, config):
- self.width = int(config.getini('xvfb_width'))
- self.height = int(config.getini('xvfb_height'))
- self.colordepth = int(config.getini('xvfb_colordepth'))
- self.args = config.getini('xvfb_args') or []
- self.xauth = config.getini('xvfb_xauth')
+class Xvfb:
+ def __init__(self, config: pytest.Config) -> None:
+ self.width = int(config.getini("xvfb_width"))
+ self.height = int(config.getini("xvfb_height"))
+ self.colordepth = int(config.getini("xvfb_colordepth"))
+ self.args = config.getini("xvfb_args") or []
+ self.xauth = config.getini("xvfb_xauth")
+ self.backend = config.getoption("--xvfb-backend")
self.display = None
self._virtual_display = None
- def start(self):
- self._virtual_display = pyvirtualdisplay.Display(
- backend='xvfb', size=(self.width, self.height),
- color_depth=self.colordepth, use_xauth=self.xauth,
- extra_args=self.args)
+ def start(self) -> None:
+ self._virtual_display = pyvirtualdisplay.Display( # type: ignore[attr-defined]
+ backend=self.backend,
+ size=(self.width, self.height),
+ color_depth=self.colordepth,
+ use_xauth=self.xauth,
+ extra_args=self.args,
+ )
+ assert self._virtual_display is not None # mypy
self._virtual_display.start()
self.display = self._virtual_display.display
assert self._virtual_display.is_alive()
- def stop(self):
+ def stop(self) -> None:
if self.display is not None: # starting worked
self._virtual_display.stop()
-def pytest_addoption(parser):
- group = parser.getgroup('xvfb')
+def pytest_addoption(parser: pytest.Parser) -> None:
+ group = parser.getgroup("xvfb")
+ group.addoption("--no-xvfb", action="store_true", help="Disable Xvfb for tests.")
group.addoption(
- '--no-xvfb',
- action='store_true',
- help='Disable Xvfb for tests.'
+ "--xvfb-backend",
+ action="store",
+ choices=["xvfb", "xvnc", "xephyr"],
+ help="Use Xephyr or Xvnc instead of Xvfb for tests. Will be ignored if --no-xvfb is given.",
+ )
+
+ parser.addini("xvfb_width", "Width of the Xvfb display", default="800")
+ parser.addini("xvfb_height", "Height of the Xvfb display", default="600")
+ parser.addini("xvfb_colordepth", "Color depth of the Xvfb display", default="16")
+ parser.addini("xvfb_args", "Additional arguments for Xvfb", type="args")
+ parser.addini(
+ "xvfb_xauth",
+ "Generate an Xauthority token for Xvfb. Needs xauth.",
+ default=False,
+ type="bool",
)
- parser.addini('xvfb_width', 'Width of the Xvfb display', default='800')
- parser.addini('xvfb_height', 'Height of the Xvfb display', default='600')
- parser.addini('xvfb_colordepth', 'Color depth of the Xvfb display',
- default='16')
- parser.addini('xvfb_args', 'Additional arguments for Xvfb',
- type='args')
- parser.addini('xvfb_xauth',
- 'Generate an Xauthority token for Xvfb. Needs xauth.',
- default=False, type='bool')
-
-
-def pytest_configure(config):
- no_xvfb = config.getoption('--no-xvfb') or is_xdist_master(config)
- if no_xvfb or not xvfb_available():
- config.xvfb = None
- if (sys.platform.startswith('linux')
- and 'DISPLAY' in os.environ
- and not no_xvfb):
- print('pytest-xvfb could not find Xvfb. '
- 'You can install it to prevent windows from being shown.')
- else:
- config.xvfb = Xvfb(config)
- config.xvfb.start()
- config.addinivalue_line("markers", "no_xvfb: Skip test when using Xvfb")
+def pytest_configure(config: pytest.Config) -> None:
+ global xvfb_instance
-def pytest_unconfigure(config):
- if getattr(config, 'xvfb', None) is not None:
- config.xvfb.stop()
+ no_xvfb = config.getoption("--no-xvfb") or is_xdist_master(config)
+ backend = config.getoption("--xvfb-backend")
+
+ if no_xvfb:
+ pass
+ elif backend is None and not has_executable("Xvfb"):
+ # soft fail
+ if sys.platform.startswith("linux") and "DISPLAY" in os.environ:
+ print(
+ "pytest-xvfb could not find Xvfb. "
+ "You can install it to prevent windows from being shown."
+ )
+ elif (
+ backend == "xvfb"
+ and not has_executable("Xvfb")
+ or backend == "xvnc"
+ and not has_executable("Xvnc")
+ or backend == "xephyr"
+ and not has_executable("Xephyr")
+ ):
+ raise pytest.UsageError(f"xvfb backend {backend} requested but not installed.")
+ else:
+ xvfb_instance = Xvfb(config)
+ xvfb_instance.start()
+
+ config.addinivalue_line("markers", "no_xvfb: Skip test when using Xvfb")
-def pytest_collection_modifyitems(items):
+def pytest_collection_modifyitems(items: list[pytest.Item]) -> None:
for item in items:
- if item.get_closest_marker('no_xvfb') and item.config.xvfb is not None:
- skipif_marker = pytest.mark.skipif(
- True, reason="Skipped with Xvfb")
+ if item.get_closest_marker("no_xvfb") and xvfb_instance is not None:
+ skipif_marker = pytest.mark.skipif(True, reason="Skipped with Xvfb")
item.add_marker(skipif_marker)
-(a)pytest.fixture(scope='session')
-def xvfb(pytestconfig):
- return pytestconfig.xvfb
+(a)pytest.fixture(scope="session")
+def xvfb() -> Xvfb | None:
+ return xvfb_instance
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-xvfb-2.0.0/setup.py new/pytest-xvfb-3.0.0/setup.py
--- old/pytest-xvfb-2.0.0/setup.py 2020-06-09 19:16:09.000000000 +0200
+++ new/pytest-xvfb-3.0.0/setup.py 2023-05-29 13:54:19.000000000 +0200
@@ -1,49 +1,3 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import os
-import codecs
from setuptools import setup
-
-def read(fname):
- file_path = os.path.join(os.path.dirname(__file__), fname)
- return codecs.open(file_path, encoding='utf-8').read()
-
-
-setup(
- name='pytest-xvfb',
- version='2.0.0',
- author='Florian Bruhin',
- author_email='me(a)the-compiler.org',
- maintainer='Florian Bruhin',
- maintainer_email='me(a)the-compiler.org',
- license='MIT',
- url='https://github.com/The-Compiler/pytest-xvfb',
- description='A pytest plugin to run Xvfb for tests.',
- long_description=read('README.rst'),
- py_modules=['pytest_xvfb'],
- install_requires=['pytest>=2.8.1', 'pyvirtualdisplay>=1.3'],
- python_requires='>=3.5',
- classifiers=[
- 'Development Status :: 4 - Beta',
- 'Intended Audience :: Developers',
- 'Topic :: Software Development :: Testing',
- 'Programming Language :: Python',
- 'Programming Language :: Python :: 3 :: Only',
- 'Programming Language :: Python :: 3',
- 'Programming Language :: Python :: 3.5',
- 'Programming Language :: Python :: 3.6',
- 'Programming Language :: Python :: 3.7',
- 'Programming Language :: Python :: 3.8',
- 'Programming Language :: Python :: Implementation :: CPython',
- 'Programming Language :: Python :: Implementation :: PyPy',
- 'Operating System :: OS Independent',
- 'License :: OSI Approved :: MIT License',
- ],
- entry_points={
- 'pytest11': [
- 'xvfb = pytest_xvfb',
- ],
- },
-)
+setup()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-xvfb-2.0.0/tests/conftest.py new/pytest-xvfb-3.0.0/tests/conftest.py
--- old/pytest-xvfb-2.0.0/tests/conftest.py 2020-06-09 19:16:09.000000000 +0200
+++ new/pytest-xvfb-3.0.0/tests/conftest.py 2023-05-29 13:54:19.000000000 +0200
@@ -1 +1 @@
-pytest_plugins = 'pytester'
+pytest_plugins = "pytester"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-xvfb-2.0.0/tests/test_qtwe_xio_error.py new/pytest-xvfb-3.0.0/tests/test_qtwe_xio_error.py
--- old/pytest-xvfb-2.0.0/tests/test_qtwe_xio_error.py 1970-01-01 01:00:00.000000000 +0100
+++ new/pytest-xvfb-3.0.0/tests/test_qtwe_xio_error.py 2023-05-29 13:54:19.000000000 +0200
@@ -0,0 +1,32 @@
+from __future__ import annotations
+
+import os
+import sys
+
+import pytest
+
+if sys.version_info == (3, 12, 0, "beta", 1) and "CI" in os.environ:
+ pytest.skip(
+ reason="Segfaults on GHA for unknown reasons",
+ allow_module_level=True,
+ )
+
+pytest.importorskip("PyQt5.QtWebEngineWidgets")
+
+
+def test_qt_output(pytester: pytest.Pytester) -> None:
+ pytester.makepyfile(
+ """
+ import sys
+ import PyQt5.QtWebEngineWidgets
+ from PyQt5.QtWidgets import QWidget, QApplication
+
+ app = QApplication(sys.argv)
+
+ def test_widget():
+ widget = QWidget()
+ widget.show()
+ """
+ )
+ res = pytester.runpytest()
+ assert res.ret == 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-xvfb-2.0.0/tests/test_xvfb.py new/pytest-xvfb-3.0.0/tests/test_xvfb.py
--- old/pytest-xvfb-2.0.0/tests/test_xvfb.py 2020-06-09 19:16:09.000000000 +0200
+++ new/pytest-xvfb-3.0.0/tests/test_xvfb.py 2023-05-29 13:54:19.000000000 +0200
@@ -1,91 +1,170 @@
-# -*- coding: utf-8 -*-
+from __future__ import annotations
import os
+from typing import Iterator
import pytest
+import pyvirtualdisplay
import pytest_xvfb
-
xauth_available = any(
- os.access(os.path.join(path, 'xauth'), os.X_OK)
- for path in os.environ.get('PATH', '').split(os.pathsep)
+ os.access(os.path.join(path, "xauth"), os.X_OK)
+ for path in os.environ.get("PATH", "").split(os.pathsep)
)
-(a)pytest.fixture(autouse=True, scope='session')
-def ensure_xvfb():
- if not pytest_xvfb.xvfb_available():
+(a)pytest.fixture(autouse=True, scope="session")
+def ensure_xvfb() -> None:
+ if not pytest_xvfb.has_executable("Xvfb"):
raise Exception("Tests need Xvfb to run.")
-def test_xvfb_available(testdir, monkeypatch):
- monkeypatch.delenv('DISPLAY')
- testdir.makepyfile("""
+needs_xephyr = pytest.mark.skipif(
+ not pytest_xvfb.has_executable("Xephyr"), reason="Needs Xephyr"
+)
+needs_xvnc = pytest.mark.skipif(
+ not pytest_xvfb.has_executable("Xvnc"), reason="Needs Xvnc"
+)
+
+
+(a)pytest.fixture(
+ params=[
+ None,
+ "xvfb",
+ pytest.param("xephyr", marks=needs_xephyr),
+ pytest.param("xvnc", marks=needs_xvnc),
+ ]
+)
+def backend_args(
+ request: pytest.FixtureRequest, monkeypatch: pytest.MonkeyPatch
+) -> Iterator[list[str]]:
+ monkeypatch.delenv("DISPLAY")
+ args = [] if request.param is None else ["--xvfb-backend", request.param]
+ if request.param == "xephyr":
+ # we need a host display for it... PyVirtualDisplay and Xvfb to the
+ # rescue!
+ display = pyvirtualdisplay.Display() # type: ignore[attr-defined]
+ display.start()
+ yield args
+ display.stop()
+ else:
+ yield args
+
+
+def test_xvfb_available(pytester: pytest.Pytester, backend_args: list[str]) -> None:
+ pytester.makepyfile(
+ """
import os
def test_display():
assert 'DISPLAY' in os.environ
- """)
- result = testdir.runpytest()
+ """
+ )
+ result = pytester.runpytest(*backend_args)
assert result.ret == 0
-def test_empty_display(testdir, monkeypatch):
- monkeypatch.setenv('DISPLAY', '')
- testdir.makepyfile("""
+def test_empty_display(
+ pytester: pytest.Pytester, monkeypatch: pytest.MonkeyPatch, backend_args: list[str]
+) -> None:
+ if backend_args == ["--xvfb-backend", "xephyr"]:
+ pytest.skip("Xephyr needs a host display")
+
+ monkeypatch.setenv("DISPLAY", "")
+ pytester.makepyfile(
+ """
import os
def test_display():
assert 'DISPLAY' in os.environ
- """)
- result = testdir.runpytest()
- assert os.environ['DISPLAY'] == ''
+ """
+ )
+ result = pytester.runpytest(*backend_args)
+ assert os.environ["DISPLAY"] == ""
assert result.ret == 0
-def test_xvfb_unavailable(testdir, monkeypatch):
- monkeypatch.setenv('PATH', '')
- monkeypatch.setenv('DISPLAY', ':42')
- testdir.makepyfile("""
+def test_xvfb_unavailable(
+ pytester: pytest.Pytester, monkeypatch: pytest.MonkeyPatch
+) -> None:
+ monkeypatch.setenv("PATH", "")
+ monkeypatch.setenv("DISPLAY", ":42")
+ pytester.makepyfile(
+ """
import os
def test_display():
assert os.environ['DISPLAY'] == ':42'
- """)
- assert os.environ['DISPLAY'] == ':42'
- result = testdir.runpytest()
- result.stdout.fnmatch_lines('* could not find Xvfb.*')
+ """
+ )
+ assert os.environ["DISPLAY"] == ":42"
+ result = pytester.runpytest()
+ result.stdout.fnmatch_lines("* could not find Xvfb.*")
assert result.ret == 0
-def test_no_xvfb_arg(testdir, monkeypatch):
- monkeypatch.setenv('DISPLAY', ':42')
- testdir.makepyfile("""
+def test_xvfb_unavailable_explicit(
+ pytester: pytest.Pytester, monkeypatch: pytest.MonkeyPatch, backend_args: list[str]
+) -> None:
+ """If an explicitly chosen backend is unavailable: Hard error."""
+ if not backend_args:
+ pytest.skip("Already tested above")
+
+ monkeypatch.setenv("PATH", "")
+ monkeypatch.setenv("DISPLAY", ":42")
+ pytester.makepyfile(
+ """
+ import os
+
+ def test_display():
+ assert False # never run
+ """
+ )
+ assert os.environ["DISPLAY"] == ":42"
+ result = pytester.runpytest(*backend_args)
+ result.stderr.fnmatch_lines("*xvfb backend * requested but not installed.")
+ assert result.ret == pytest.ExitCode.USAGE_ERROR
+
+
+def test_no_xvfb_arg(
+ pytester: pytest.Pytester, monkeypatch: pytest.MonkeyPatch, backend_args: list[str]
+) -> None:
+ monkeypatch.setenv("DISPLAY", ":42")
+ pytester.makepyfile(
+ """
import os
def test_display():
assert os.environ['DISPLAY'] == ':42'
- """)
- assert os.environ['DISPLAY'] == ':42'
- result = testdir.runpytest('--no-xvfb')
+ """
+ )
+ assert os.environ["DISPLAY"] == ":42"
+ result = pytester.runpytest("--no-xvfb", *backend_args)
assert result.ret == 0
-(a)pytest.mark.parametrize('configured', [True, False])
-def test_screen_size(testdir, configured):
+(a)pytest.mark.parametrize("configured", [True, False])
+def test_screen_size(
+ pytester: pytest.Pytester, configured: bool, backend_args: list[str]
+) -> None:
+ if backend_args == ["--xvfb-backend", "xvnc"]:
+ pytest.skip("Seems to be unsupported with Xvnc")
+
try:
- import tkinter
+ import tkinter # noqa
except ImportError:
- pytest.importorskip('Tkinter')
+ pytest.importorskip("Tkinter")
if configured:
- testdir.makeini("""
+ pytester.makeini(
+ """
[pytest]
xvfb_width = 1024
xvfb_height = 768
xvfb_colordepth = 8
- """)
+ """
+ )
expected_width = 1024
expected_height = 768
expected_depth = 8
@@ -94,7 +173,8 @@
expected_height = 600
expected_depth = 16
- testdir.makepyfile("""
+ pytester.makepyfile(
+ """
try:
import tkinter as tk
except ImportError:
@@ -105,34 +185,50 @@
assert root.winfo_screenwidth() == {width}
assert root.winfo_screenheight() == {height}
assert root.winfo_screendepth() == {depth}
- """.format(width=expected_width, height=expected_height,
- depth=expected_depth))
- result = testdir.runpytest()
+ """.format(
+ width=expected_width, height=expected_height, depth=expected_depth
+ )
+ )
+ result = pytester.runpytest(*backend_args)
assert result.ret == 0
-def test_failing_start(testdir, monkeypatch):
- testdir.makeini("""
+def test_failing_start(
+ pytester: pytest.Pytester, monkeypatch: pytest.MonkeyPatch, backend_args: list[str]
+) -> None:
+ pytester.makeini(
+ """
[pytest]
xvfb_args = -foo
- """)
- testdir.makepyfile("""
+ """
+ )
+ pytester.makepyfile(
+ """
def test_none():
pass
- """)
- result = testdir.runpytest()
- result.stderr.fnmatch_lines([
- "INTERNALERROR> *.XStartError: Xvfb program closed. *",
- ])
- assert 'OSError' not in str(result.stderr)
-
-
-(a)pytest.mark.parametrize('args, outcome', [
- ([], '1 passed, 1 skipped'),
- (['--no-xvfb'], '2 passed'),
-])
-def test_no_xvfb_marker(testdir, args, outcome):
- testdir.makepyfile("""
+ """
+ )
+ result = pytester.runpytest(*backend_args)
+ result.stderr.fnmatch_lines(
+ [
+ "INTERNALERROR> *.XStartError: X* program closed. *",
+ ]
+ )
+ assert "OSError" not in str(result.stderr)
+
+
+(a)pytest.mark.parametrize(
+ "args, outcome",
+ [
+ ([], "1 passed, 1 skipped"),
+ (["--no-xvfb"], "2 passed"),
+ ],
+)
+def test_no_xvfb_marker(
+ pytester: pytest.Pytester, args: list[str], outcome: str, backend_args: list[str]
+) -> None:
+ pytester.makepyfile(
+ """
import pytest
@pytest.mark.no_xvfb
@@ -141,13 +237,15 @@
def test_unmarked():
pass
- """)
- res = testdir.runpytest(*args)
- res.stdout.fnmatch_lines('*= {0}*'.format(outcome))
+ """
+ )
+ res = pytester.runpytest(*args, *backend_args)
+ res.stdout.fnmatch_lines(f"*= {outcome}*")
-def test_xvfb_fixture(testdir):
- testdir.makepyfile("""
+def test_xvfb_fixture(pytester: pytest.Pytester, backend_args: list[str]) -> None:
+ pytester.makepyfile(
+ """
import os
def test_display(xvfb):
@@ -160,15 +258,18 @@
def test_args(xvfb):
assert xvfb.args == []
- """)
- result = testdir.runpytest()
+ """
+ )
+ result = pytester.runpytest(*backend_args)
assert result.ret == 0
-def test_early_display(monkeypatch, testdir):
+def test_early_display(
+ monkeypatch: pytest.MonkeyPatch, pytester: pytest.Pytester, backend_args: list[str]
+) -> None:
"""Make sure DISPLAY is set in a session-scoped fixture already."""
- monkeypatch.delenv('DISPLAY')
- testdir.makepyfile("""
+ pytester.makepyfile(
+ """
import os
import pytest
@@ -179,24 +280,30 @@
def test_foo():
pass
- """)
+ """
+ )
+ result = pytester.runpytest(*backend_args)
+ assert result.ret == 0
-def test_strict_markers(testdir):
- testdir.makepyfile("""
+def test_strict_markers(pytester: pytest.Pytester) -> None:
+ pytester.makepyfile(
+ """
import pytest
@pytest.mark.no_xvfb
def test_marked():
pass
- """)
- result = testdir.runpytest('--strict')
+ """
+ )
+ result = pytester.runpytest("--strict")
assert result.ret == 0
-def test_xvfb_session_fixture(testdir):
+def test_xvfb_session_fixture(pytester: pytest.Pytester) -> None:
"""Make sure the xvfb fixture can be used from a session-wide one."""
- testdir.makepyfile("""
+ pytester.makepyfile(
+ """
import pytest
@pytest.fixture(scope='session')
@@ -205,32 +312,37 @@
def test_fixt(fixt):
pass
- """)
- result = testdir.runpytest()
+ """
+ )
+ result = pytester.runpytest()
assert result.ret == 0
-(a)pytest.mark.skipif(not xauth_available, reason='no xauth')
-def test_xvfb_with_xauth(testdir):
- original_auth = os.environ.get('XAUTHORITY')
- testdir.makeini("""
+(a)pytest.mark.skipif(not xauth_available, reason="no xauth")
+def test_xvfb_with_xauth(pytester: pytest.Pytester, backend_args: list[str]) -> None:
+ original_auth = os.environ.get("XAUTHORITY")
+ pytester.makeini(
+ """
[pytest]
xvfb_xauth = True
- """)
- testdir.makepyfile("""
+ """
+ )
+ pytester.makepyfile(
+ """
import os
def test_xauth():
print('\\nXAUTHORITY: ' + os.environ['XAUTHORITY'])
assert os.path.isfile(os.environ['XAUTHORITY'])
assert os.access(os.environ['XAUTHORITY'], os.R_OK)
- """)
- result = testdir.runpytest('-s')
+ """
+ )
+ result = pytester.runpytest("-s", *backend_args)
# Get and parse the XAUTHORITY: line
- authline = next(l for l in result.outlines if l.startswith('XAUTHORITY:'))
- authfile = authline.split(' ', 1)[1]
+ authline = next(l for l in result.outlines if l.startswith("XAUTHORITY:"))
+ authfile = authline.split(" ", 1)[1]
assert result.ret == 0
# Make sure the authfile is deleted
assert not os.path.exists(authfile)
- assert os.environ.get('XAUTHORITY') == original_auth
+ assert os.environ.get("XAUTHORITY") == original_auth
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-xvfb-2.0.0/tests/test_xvfb_windows.py new/pytest-xvfb-3.0.0/tests/test_xvfb_windows.py
--- old/pytest-xvfb-2.0.0/tests/test_xvfb_windows.py 2020-06-09 19:16:09.000000000 +0200
+++ new/pytest-xvfb-3.0.0/tests/test_xvfb_windows.py 2023-05-29 13:54:19.000000000 +0200
@@ -1,12 +1,15 @@
-# -*- coding: utf-8 -*-
+from __future__ import annotations
-"""Make sure things don't break on Windows with no Xvfb available."""
+import pytest
-def test_xvfb_windows(testdir):
- testdir.makepyfile("""
+def test_xvfb_windows(pytester: pytest.Pytester) -> None:
+ """Make sure things don't break on Windows with no Xvfb available."""
+ pytester.makepyfile(
+ """
def test_nothing():
pass
- """)
- result = testdir.runpytest()
+ """
+ )
+ result = pytester.runpytest()
assert result.ret == 0
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package perl-PPI for openSUSE:Factory checked in at 2023-09-29 21:12:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-PPI (Old)
and /work/SRC/openSUSE:Factory/.perl-PPI.new.28202 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-PPI"
Fri Sep 29 21:12:49 2023 rev:26 rq:1114065 version:1.277.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-PPI/perl-PPI.changes 2022-08-01 21:32:28.846014820 +0200
+++ /work/SRC/openSUSE:Factory/.perl-PPI.new.28202/perl-PPI.changes 2023-09-29 21:13:11.176909642 +0200
@@ -1,0 +2,14 @@
+Sat Sep 23 03:09:22 UTC 2023 - Tina Müller <timueller+perl(a)suse.de>
+
+- updated to 1.277
+ see /usr/share/doc/packages/perl-PPI/Changes
+
+ 1.277 2023-09-22 09:12:48Z
+ Summary:
+ - Parse prototypes as literal quotes, enables parens and newlines in protos
+ - Fix false positive detection of labels (GH#289) (Dan Church)
+
+ Details:
+ - Wrapped most Document->new calls in tests with automatic checks
+
+-------------------------------------------------------------------
Old:
----
PPI-1.276.tar.gz
New:
----
PPI-1.277.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-PPI.spec ++++++
--- /var/tmp/diff_new_pack.6d2RHc/_old 2023-09-29 21:13:12.608961310 +0200
+++ /var/tmp/diff_new_pack.6d2RHc/_new 2023-09-29 21:13:12.608961310 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-PPI
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,12 +18,13 @@
%define cpan_name PPI
Name: perl-PPI
-Version: 1.276
+Version: 1.277.0
Release: 0
+%define cpan_version 1.277
License: Artistic-1.0 OR GPL-1.0-or-later
Summary: Parse, Analyze and Manipulate Perl (without perl)
URL: https://metacpan.org/release/%{cpan_name}
-Source0: https://cpan.metacpan.org/authors/id/O/OA/OALDERS/%{cpan_name}-%{version}.t…
+Source0: https://cpan.metacpan.org/authors/id/M/MI/MITHALDU/%{cpan_name}-%{cpan_vers…
Source1: cpanspec.yml
BuildArch: noarch
BuildRequires: perl
@@ -38,19 +39,113 @@
BuildRequires: perl(Test::NoWarnings)
BuildRequires: perl(Test::Object) >= 0.07
BuildRequires: perl(Test::SubCalls) >= 1.07
+BuildRequires: perl(parent)
Requires: perl(Clone) >= 0.30
Requires: perl(List::Util) >= 1.33
Requires: perl(Params::Util) >= 1.00
Requires: perl(Storable) >= 2.17
Requires: perl(Task::Weaken)
+Provides: perl(PPI) = 1.277.0
+Provides: perl(PPI::Cache) = 1.277.0
+Provides: perl(PPI::Document) = 1.277.0
+Provides: perl(PPI::Document::File) = 1.277.0
+Provides: perl(PPI::Document::Fragment) = 1.277.0
+Provides: perl(PPI::Document::Normalized) = 1.277.0
+Provides: perl(PPI::Dumper) = 1.277.0
+Provides: perl(PPI::Element) = 1.277.0
+Provides: perl(PPI::Exception) = 1.277.0
+Provides: perl(PPI::Exception::ParserRejection) = 1.277.0
+Provides: perl(PPI::Find) = 1.277.0
+Provides: perl(PPI::Lexer) = 1.277.0
+Provides: perl(PPI::Node) = 1.277.0
+Provides: perl(PPI::Normal) = 1.277.0
+Provides: perl(PPI::Normal::Standard) = 1.277.0
+Provides: perl(PPI::Singletons) = 1.277.0
+Provides: perl(PPI::Statement) = 1.277.0
+Provides: perl(PPI::Statement::Break) = 1.277.0
+Provides: perl(PPI::Statement::Compound) = 1.277.0
+Provides: perl(PPI::Statement::Data) = 1.277.0
+Provides: perl(PPI::Statement::End) = 1.277.0
+Provides: perl(PPI::Statement::Expression) = 1.277.0
+Provides: perl(PPI::Statement::Given) = 1.277.0
+Provides: perl(PPI::Statement::Include) = 1.277.0
+Provides: perl(PPI::Statement::Include::Perl6) = 1.277.0
+Provides: perl(PPI::Statement::Null) = 1.277.0
+Provides: perl(PPI::Statement::Package) = 1.277.0
+Provides: perl(PPI::Statement::Scheduled) = 1.277.0
+Provides: perl(PPI::Statement::Sub) = 1.277.0
+Provides: perl(PPI::Statement::Unknown) = 1.277.0
+Provides: perl(PPI::Statement::UnmatchedBrace) = 1.277.0
+Provides: perl(PPI::Statement::Variable) = 1.277.0
+Provides: perl(PPI::Statement::When) = 1.277.0
+Provides: perl(PPI::Structure) = 1.277.0
+Provides: perl(PPI::Structure::Block) = 1.277.0
+Provides: perl(PPI::Structure::Condition) = 1.277.0
+Provides: perl(PPI::Structure::Constructor) = 1.277.0
+Provides: perl(PPI::Structure::For) = 1.277.0
+Provides: perl(PPI::Structure::Given) = 1.277.0
+Provides: perl(PPI::Structure::List) = 1.277.0
+Provides: perl(PPI::Structure::Subscript) = 1.277.0
+Provides: perl(PPI::Structure::Unknown) = 1.277.0
+Provides: perl(PPI::Structure::When) = 1.277.0
+Provides: perl(PPI::Token) = 1.277.0
+Provides: perl(PPI::Token::ArrayIndex) = 1.277.0
+Provides: perl(PPI::Token::Attribute) = 1.277.0
+Provides: perl(PPI::Token::BOM) = 1.277.0
+Provides: perl(PPI::Token::Cast) = 1.277.0
+Provides: perl(PPI::Token::Comment) = 1.277.0
+Provides: perl(PPI::Token::DashedWord) = 1.277.0
+Provides: perl(PPI::Token::Data) = 1.277.0
+Provides: perl(PPI::Token::End) = 1.277.0
+Provides: perl(PPI::Token::HereDoc) = 1.277.0
+Provides: perl(PPI::Token::Label) = 1.277.0
+Provides: perl(PPI::Token::Magic) = 1.277.0
+Provides: perl(PPI::Token::Number) = 1.277.0
+Provides: perl(PPI::Token::Number::Binary) = 1.277.0
+Provides: perl(PPI::Token::Number::Exp) = 1.277.0
+Provides: perl(PPI::Token::Number::Float) = 1.277.0
+Provides: perl(PPI::Token::Number::Hex) = 1.277.0
+Provides: perl(PPI::Token::Number::Octal) = 1.277.0
+Provides: perl(PPI::Token::Number::Version) = 1.277.0
+Provides: perl(PPI::Token::Operator) = 1.277.0
+Provides: perl(PPI::Token::Pod) = 1.277.0
+Provides: perl(PPI::Token::Prototype) = 1.277.0
+Provides: perl(PPI::Token::Quote) = 1.277.0
+Provides: perl(PPI::Token::Quote::Double) = 1.277.0
+Provides: perl(PPI::Token::Quote::Interpolate) = 1.277.0
+Provides: perl(PPI::Token::Quote::Literal) = 1.277.0
+Provides: perl(PPI::Token::Quote::Single) = 1.277.0
+Provides: perl(PPI::Token::QuoteLike) = 1.277.0
+Provides: perl(PPI::Token::QuoteLike::Backtick) = 1.277.0
+Provides: perl(PPI::Token::QuoteLike::Command) = 1.277.0
+Provides: perl(PPI::Token::QuoteLike::Readline) = 1.277.0
+Provides: perl(PPI::Token::QuoteLike::Regexp) = 1.277.0
+Provides: perl(PPI::Token::QuoteLike::Words) = 1.277.0
+Provides: perl(PPI::Token::Regexp) = 1.277.0
+Provides: perl(PPI::Token::Regexp::Match) = 1.277.0
+Provides: perl(PPI::Token::Regexp::Substitute) = 1.277.0
+Provides: perl(PPI::Token::Regexp::Transliterate) = 1.277.0
+Provides: perl(PPI::Token::Separator) = 1.277.0
+Provides: perl(PPI::Token::Structure) = 1.277.0
+Provides: perl(PPI::Token::Symbol) = 1.277.0
+Provides: perl(PPI::Token::Unknown) = 1.277.0
+Provides: perl(PPI::Token::Whitespace) = 1.277.0
+Provides: perl(PPI::Token::Word) = 1.277.0
+Provides: perl(PPI::Tokenizer) = 1.277.0
+Provides: perl(PPI::Transform) = 1.277.0
+Provides: perl(PPI::Transform::UpdateCopyright) = 1.277.0
+Provides: perl(PPI::Util) = 1.277.0
+Provides: perl(PPI::XSAccessor) = 1.277.0
+%define __perllib_provides /bin/true
%{perl_requires}
%description
Parse, Analyze and Manipulate Perl (without perl)
%prep
-%autosetup -n %{cpan_name}-%{version}
-find . -type f ! -path "*/t/*" ! -name "*.pl" ! -path "*/bin/*" ! -path "*/script/*" ! -name "configure" -print0 | xargs -0 chmod 644
+%autosetup -n %{cpan_name}-%{cpan_version}
+
+find . -type f ! -path "*/t/*" ! -name "*.pl" ! -path "*/bin/*" ! -path "*/script/*" ! -path "*/scripts/*" ! -name "configure" -print0 | xargs -0 chmod 644
%build
perl Makefile.PL INSTALLDIRS=vendor
++++++ PPI-1.276.tar.gz -> PPI-1.277.tar.gz ++++++
++++ 5790 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package fonttosfnt for openSUSE:Factory checked in at 2023-09-29 21:12:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fonttosfnt (Old)
and /work/SRC/openSUSE:Factory/.fonttosfnt.new.28202 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fonttosfnt"
Fri Sep 29 21:12:48 2023 rev:12 rq:1114060 version:1.2.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/fonttosfnt/fonttosfnt.changes 2021-06-18 10:13:24.661964484 +0200
+++ /work/SRC/openSUSE:Factory/.fonttosfnt.new.28202/fonttosfnt.changes 2023-09-29 21:13:09.848861726 +0200
@@ -1,0 +2,15 @@
+Thu Sep 28 10:47:13 UTC 2023 - Stefan Dirsch <sndirsch(a)suse.com>
+
+- update to 1.2.3
+ * Build xz tarballs instead of bzip2
+ * gitlab CI: enable commit & merge request checks
+ * gitlab CI: enable gitlab's builtin static analysis
+ * Variable scope reductions as recommended by cppcheck
+ * args_copy variable is unused if HAVE_DECL_VA_COPY is not defined
+ * makeBitmap: declare raster parameter const as recommended by cppcheck
+ * Remove unused function findIndex
+ * Allow inlining makeName
+ * Use C99 compound literals to initialize newly allocated structs
+ * Add CI tests
+
+-------------------------------------------------------------------
Old:
----
fonttosfnt-1.2.2.tar.bz2
New:
----
fonttosfnt-1.2.3.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ fonttosfnt.spec ++++++
--- /var/tmp/diff_new_pack.Evjxpn/_old 2023-09-29 21:13:10.856898095 +0200
+++ /var/tmp/diff_new_pack.Evjxpn/_new 2023-09-29 21:13:10.856898095 +0200
@@ -1,7 +1,7 @@
#
# spec file for package fonttosfnt
#
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,13 +17,13 @@
Name: fonttosfnt
-Version: 1.2.2
+Version: 1.2.3
Release: 0
Summary: Utility to wrap a bitmap font in a sfnt (TrueType) wrapper
License: MIT
Group: System/X11/Utilities
URL: https://xorg.freedesktop.org/
-Source0: https://xorg.freedesktop.org/releases/individual/app/%{name}-%{version}.tar…
+Source0: https://xorg.freedesktop.org/releases/individual/app/%{name}-%{version}.tar…
BuildRequires: pkgconfig
BuildRequires: pkgconfig(fontenc)
BuildRequires: pkgconfig(freetype2)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package saxon10 for openSUSE:Factory checked in at 2023-09-29 21:12:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/saxon10 (Old)
and /work/SRC/openSUSE:Factory/.saxon10.new.28202 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "saxon10"
Fri Sep 29 21:12:47 2023 rev:2 rq:1114058 version:10.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/saxon10/saxon10.changes 2023-08-22 08:56:06.790555015 +0200
+++ /work/SRC/openSUSE:Factory/.saxon10.new.28202/saxon10.changes 2023-09-29 21:13:06.852753626 +0200
@@ -1,0 +2,5 @@
+Wed Sep 27 12:20:49 UTC 2023 - Gus Kenion <gkenion(a)suse.com>
+
+- Remove nonfree code from javadoc.
+
+-------------------------------------------------------------------
Old:
----
saxon-resources-10.zip
New:
----
saxon-resources-10-cleaned.zip
saxon10-generate-tarball.sh
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ saxon10.spec ++++++
--- /var/tmp/diff_new_pack.vUhIWH/_old 2023-09-29 21:13:09.508849458 +0200
+++ /var/tmp/diff_new_pack.vUhIWH/_new 2023-09-29 21:13:09.508849458 +0200
@@ -28,7 +28,8 @@
Group: Productivity/Publishing/XML
URL: https://www.saxonica.com/
Source0: https://github.com/Saxonica/Saxon-HE/raw/main/%{saxon_version}/source/saxon…
-Source1: https://github.com/Saxonica/Saxon-HE/raw/main/%{saxon_version}/resources/sa…
+# %{name}-generate-tarball.sh
+Source1: saxon-resources-%{saxon_version}-cleaned.zip
Source2: https://repo1.maven.org/maven2/net/sf/saxon/Saxon-HE/%{saxon_version}.%{sax…
Source3: %{name}.build.xml
Source10: %{name}.saxon.script
@@ -37,6 +38,8 @@
Source20: %{name}.saxon.pod
Source21: %{name}.saxonq.pod
Source22: %{name}.gizmo.pod
+# run saxon10-generate-tarball.sh script to remove potential nonfree content from saxon-resources-10.zip.
+Source100: %{name}-generate-tarball.sh
BuildRequires: ant
BuildRequires: dom4j
BuildRequires: dos2unix
@@ -53,6 +56,8 @@
BuildRequires: xml-commons-apis
BuildRequires: xml-commons-resolver
BuildRequires: xom
+Requires(post): update-alternatives
+Requires(postun):update-alternatives
Recommends: %{name}-scripts
Provides: jaxp_transform_impl = %{version}
BuildArch: noarch
++++++ saxon10-generate-tarball.sh ++++++
#!/bin/sh
SAXON_VERSION=10
wget https://github.com/Saxonica/Saxon-HE/raw/main/${SAXON_VERSION}/resources/sa… -O saxon-resources-${SAXON_VERSION}-cleaned.zip
# Remove script.js and search.js from doc/javadoc/ directory
zip -d saxon-resources-${SAXON_VERSION}-cleaned.zip doc/javadoc/script.js doc/javadoc/search.js
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ipset for openSUSE:Factory checked in at 2023-09-29 21:12:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ipset (Old)
and /work/SRC/openSUSE:Factory/.ipset.new.28202 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ipset"
Fri Sep 29 21:12:46 2023 rev:47 rq:1114054 version:7.19
Changes:
--------
--- /work/SRC/openSUSE:Factory/ipset/ipset.changes 2023-01-07 17:16:49.881123980 +0100
+++ /work/SRC/openSUSE:Factory/.ipset.new.28202/ipset.changes 2023-09-29 21:13:03.732641053 +0200
@@ -1,0 +2,6 @@
+Thu Sep 21 07:10:20 UTC 2023 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Update to release 7.19
+ * Add json output to list command
+
+-------------------------------------------------------------------
Old:
----
ipset-7.17.tar.bz2
New:
----
ipset-7.19.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ipset.spec ++++++
--- /var/tmp/diff_new_pack.34MFAG/_old 2023-09-29 21:13:04.928684207 +0200
+++ /var/tmp/diff_new_pack.34MFAG/_new 2023-09-29 21:13:04.928684207 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ipset
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -25,7 +25,7 @@
%define ipset_build_kmp 0
%endif
Name: ipset
-Version: 7.17
+Version: 7.19
Release: 0
Summary: Netfilter ipset administration utility
License: GPL-2.0-only
++++++ ipset-7.17.tar.bz2 -> ipset-7.19.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/ChangeLog new/ipset-7.19/ChangeLog
--- old/ipset-7.17/ChangeLog 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/ChangeLog 2023-09-21 08:14:18.000000000 +0200
@@ -1,3 +1,18 @@
+7.19
+ - build: Fix the double-prefix in pkgconfig (Sam James)
+
+7.18
+ - Add json output to list command (Thomas Oberhammer)
+ - tests: hash:ip,port.t: Replace VRRP by GRE protocol (Phil Sutter)
+ - tests: hash:ip,port.t: 'vrrp' is printed as 'carp' (Phil Sutter)
+ - tests: cidr.sh: Add ipcalc fallback (Phil Sutter)
+ - tests: xlate: Make test input valid (Phil Sutter)
+ - tests: xlate: Test built binary by default (Phil Sutter)
+ - xlate: Drop dead code (Phil Sutter)
+ - xlate: Fix for fd leak in error path (Phil Sutter)
+ - configure.ac: fix bashisms (Sam James)
+ - lib/Makefile.am: fix pkgconfig dir (Sam James)
+
7.17
- Tests: When verifying comments/timeouts, make sure entries don't expire
- Tests: Make sure the internal batches add the correct number of elements
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/Makefile.in new/ipset-7.19/Makefile.in
--- old/ipset-7.17/Makefile.in 2022-12-30 12:59:42.000000000 +0100
+++ new/ipset-7.19/Makefile.in 2023-09-21 08:15:45.000000000 +0200
@@ -365,6 +365,7 @@
HAVE_SKB_PROTOCOL = @HAVE_SKB_PROTOCOL@
HAVE_STATE_IN_XT_ACTION_PARAM = @HAVE_STATE_IN_XT_ACTION_PARAM@
HAVE_STRSCPY = @HAVE_STRSCPY@
+HAVE_STRSCPY_PAD = @HAVE_STRSCPY_PAD@
HAVE_STRUCT_XT_ACTION_PARAM = @HAVE_STRUCT_XT_ACTION_PARAM@
HAVE_SYNCHRONIZE_RCU_BH = @HAVE_SYNCHRONIZE_RCU_BH@
HAVE_SYSTEM_POWER_EFFICIENT_WQ = @HAVE_SYSTEM_POWER_EFFICIENT_WQ@
@@ -482,6 +483,7 @@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
+pkgconfigdir = @pkgconfigdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/configure new/ipset-7.19/configure
--- old/ipset-7.17/configure 2022-12-30 12:59:42.000000000 +0100
+++ new/ipset-7.19/configure 2023-09-21 08:15:44.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for ipset 7.17.
+# Generated by GNU Autoconf 2.69 for ipset 7.19.
#
# Report bugs to <kadlec(a)netfilter.org>.
#
@@ -594,8 +594,8 @@
# Identity of this package.
PACKAGE_NAME='ipset'
PACKAGE_TARNAME='ipset'
-PACKAGE_VERSION='7.17'
-PACKAGE_STRING='ipset 7.17'
+PACKAGE_VERSION='7.19'
+PACKAGE_STRING='ipset 7.19'
PACKAGE_BUGREPORT='kadlec(a)netfilter.org'
PACKAGE_URL=''
@@ -652,6 +652,7 @@
HAVE_SKB_PROTOCOL
HAVE_LIST_FOR_EACH_ENTRY_RCU_FOUR_ARGS
HAVE_SYNCHRONIZE_RCU_BH
+HAVE_STRSCPY_PAD
HAVE_STRSCPY
HAVE_NLA_STRSCPY
HAVE_LOCKDEP_NFNL_IS_HELD
@@ -724,6 +725,7 @@
WITH_KBUILDDIR_TRUE
WITH_KMOD_FALSE
WITH_KMOD_TRUE
+pkgconfigdir
PKG_CONFIG_LIBDIR
PKG_CONFIG_PATH
PKG_CONFIG
@@ -876,6 +878,7 @@
with_ltdl_include
with_ltdl_lib
enable_ltdl_install
+with_pkgconfigdir
with_kmod
with_kbuild
with_ksource
@@ -1452,7 +1455,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures ipset 7.17 to adapt to many kinds of systems.
+\`configure' configures ipset 7.19 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1523,7 +1526,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of ipset 7.17:";;
+ short | recursive ) echo "Configuration of ipset 7.19:";;
esac
cat <<\_ACEOF
@@ -1563,6 +1566,8 @@
--with-included-ltdl use the GNU ltdl sources included here
--with-ltdl-include=DIR use the ltdl headers installed in DIR
--with-ltdl-lib=DIR use the libltdl.la installed in DIR
+ --with-pkgconfigdir pkg-config installation directory
+ ['${libdir}/pkgconfig']
--with-kmod=yes/no Build the kernel module (default: yes)
--with-kbuild=PATH Path to kernel build directory
--with-ksource=PATH Path to kernel source directory, if not the same as
@@ -1661,7 +1666,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-ipset configure 7.17
+ipset configure 7.19
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2039,7 +2044,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by ipset $as_me 7.17, which was
+It was created by ipset $as_me 7.19, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2971,7 +2976,7 @@
# Define the identity of the package.
PACKAGE='ipset'
- VERSION='7.17'
+ VERSION='7.19'
cat >>confdefs.h <<_ACEOF
@@ -13448,6 +13453,21 @@
fi
fi
+
+
+# Check whether --with-pkgconfigdir was given.
+if test "${with_pkgconfigdir+set}" = set; then :
+ withval=$with_pkgconfigdir;
+else
+ with_pkgconfigdir='${libdir}/pkgconfig'
+fi
+
+pkgconfigdir=$with_pkgconfigdir
+
+
+
+
+
case "$host" in
*-*-linux* | *-*-uclinux*) ;;
*) as_fn_error $? "Linux systems supported exclusively!" "$LINENO" 5;;
@@ -13461,7 +13481,7 @@
BUILDKMOD="yes";
fi
- if test "$BUILDKMOD" == "yes"; then
+ if test "$BUILDKMOD" = "yes"; then
WITH_KMOD_TRUE=
WITH_KMOD_FALSE='#'
else
@@ -13534,7 +13554,7 @@
fi
-if test "$BUILDKMOD" == "yes"
+if test "$BUILDKMOD" = "yes"
then
if test "$KBUILDDIR" != ""
then
@@ -14701,7 +14721,7 @@
done
-if test "$BUILDKMOD" == "yes"
+if test "$BUILDKMOD" = "yes"
then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel source for INIT_DEFERRABLE_WORK" >&5
@@ -15518,6 +15538,21 @@
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel source for strscpy_pad() in string.h" >&5
+$as_echo_n "checking kernel source for strscpy_pad() in string.h... " >&6; }
+if test -f $ksourcedir/include/linux/timer.h && \
+ $GREP -q ' strscpy_pad' $ksourcedir/include/linux/string.h; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ HAVE_STRSCPY_PAD=define
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ HAVE_STRSCPY=undef
+
+fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel source for synchronize_rcu_bh() in rcutiny.h and rcupdate.h" >&5
$as_echo_n "checking kernel source for synchronize_rcu_bh() in rcutiny.h and rcupdate.h... " >&6; }
if test -f $ksourcedir/include/linux/rcupdate.h && \
@@ -18280,7 +18315,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by ipset $as_me 7.17, which was
+This file was extended by ipset $as_me 7.19, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -18346,7 +18381,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-ipset config.status 7.17
+ipset config.status 7.19
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/configure.ac new/ipset-7.19/configure.ac
--- old/ipset-7.17/configure.ac 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/configure.ac 2023-09-21 08:14:18.000000000 +0200
@@ -1,5 +1,5 @@
dnl Boilerplate
-AC_INIT([ipset], [7.17], [kadlec(a)netfilter.org]
+AC_INIT([ipset], [7.19], [kadlec(a)netfilter.org]
AC_CONFIG_AUX_DIR([build-aux])
AC_CANONICAL_HOST
AC_CONFIG_MACRO_DIR([m4])
@@ -14,6 +14,7 @@
LTDL_INIT([nonrecursive])
PKG_PROG_PKG_CONFIG
+PKG_INSTALLDIR
dnl Shortcut: Linux supported alone
case "$host" in
@@ -27,7 +28,7 @@
[Build the kernel module (default: yes)]),
[BUILDKMOD="$withval";],
[BUILDKMOD="yes";])
-AM_CONDITIONAL(WITH_KMOD, test "$BUILDKMOD" == "yes")
+AM_CONDITIONAL(WITH_KMOD, test "$BUILDKMOD" = "yes")
dnl Additional arguments
dnl Kernel build directory or source tree
@@ -76,7 +77,7 @@
AC_SUBST(bashcompdir)
fi
-if test "$BUILDKMOD" == "yes"
+if test "$BUILDKMOD" = "yes"
then
dnl Sigh: check kernel version dependencies
if test "$KBUILDDIR" != ""
@@ -204,7 +205,7 @@
dnl Checks for functions
AC_CHECK_FUNCS(gethostbyname2)
-if test "$BUILDKMOD" == "yes"
+if test "$BUILDKMOD" = "yes"
then
dnl Check kernel incompatibilities... Ugly like hell
@@ -752,6 +753,16 @@
else
AC_MSG_RESULT(no)
AC_SUBST(HAVE_STRSCPY, undef)
+fi
+
+AC_MSG_CHECKING([kernel source for strscpy_pad() in string.h])
+if test -f $ksourcedir/include/linux/timer.h && \
+ $GREP -q ' strscpy_pad' $ksourcedir/include/linux/string.h; then
+ AC_MSG_RESULT(yes)
+ AC_SUBST(HAVE_STRSCPY_PAD, define)
+else
+ AC_MSG_RESULT(no)
+ AC_SUBST(HAVE_STRSCPY, undef)
fi
AC_MSG_CHECKING([kernel source for synchronize_rcu_bh() in rcutiny.h and rcupdate.h])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/include/libipset/Makefile.in new/ipset-7.19/include/libipset/Makefile.in
--- old/ipset-7.17/include/libipset/Makefile.in 2022-12-30 12:59:42.000000000 +0100
+++ new/ipset-7.19/include/libipset/Makefile.in 2023-09-21 08:15:45.000000000 +0200
@@ -246,6 +246,7 @@
HAVE_SKB_PROTOCOL = @HAVE_SKB_PROTOCOL@
HAVE_STATE_IN_XT_ACTION_PARAM = @HAVE_STATE_IN_XT_ACTION_PARAM@
HAVE_STRSCPY = @HAVE_STRSCPY@
+HAVE_STRSCPY_PAD = @HAVE_STRSCPY_PAD@
HAVE_STRUCT_XT_ACTION_PARAM = @HAVE_STRUCT_XT_ACTION_PARAM@
HAVE_SYNCHRONIZE_RCU_BH = @HAVE_SYNCHRONIZE_RCU_BH@
HAVE_SYSTEM_POWER_EFFICIENT_WQ = @HAVE_SYSTEM_POWER_EFFICIENT_WQ@
@@ -363,6 +364,7 @@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
+pkgconfigdir = @pkgconfigdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/include/libipset/session.h new/ipset-7.19/include/libipset/session.h
--- old/ipset-7.17/include/libipset/session.h 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/include/libipset/session.h 2023-09-21 08:14:18.000000000 +0200
@@ -98,6 +98,7 @@
IPSET_LIST_PLAIN,
IPSET_LIST_SAVE,
IPSET_LIST_XML,
+ IPSET_LIST_JSON,
};
extern int ipset_session_output(struct ipset_session *session,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/kernel/ChangeLog new/ipset-7.19/kernel/ChangeLog
--- old/ipset-7.17/kernel/ChangeLog 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/kernel/ChangeLog 2023-09-21 08:14:18.000000000 +0200
@@ -1,3 +1,18 @@
+7.18
+ - netfilter: ipset: Fix race between IPSET_CMD_CREATE and IPSET_CMD_SWAP
+ (reported by Kyle Zeng)
+ - netfilter: ipset: add the missing IP_SET_HASH_WITH_NET0 macro for
+ ip_set_hash_netportnet.c (Kyle Zeng)
+ - compatibility: handle strscpy_pad()
+ - netfilter: ipset: refactor deprecated strncpy (Justin Stitt)
+ - netfilter: ipset: remove rcu_read_lock_bh pair from ip_set_test
+ (Florian Westphal)
+ - netfilter: ipset: Replace strlcpy with strscpy (Azeem Shaikh)
+ - netfilter: ipset: Add schedule point in call_ad(). (Kuniyuki Iwashima)
+ - net: Kconfig: fix spellos (Randy Dunlap)
+ - netfilter: ipset: Fix overflow before widen in the bitmap_ip_create()
+ function. (Gavrilov Ilia)
+
7.17
- netfilter: ipset: Rework long task execution when adding/deleting entries
- netfilter: ipset: fix hash:net,port,net hang with /0 subnet
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/kernel/include/linux/netfilter/ipset/ip_set_compat.h.in new/ipset-7.19/kernel/include/linux/netfilter/ipset/ip_set_compat.h.in
--- old/ipset-7.17/kernel/include/linux/netfilter/ipset/ip_set_compat.h.in 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/kernel/include/linux/netfilter/ipset/ip_set_compat.h.in 2023-09-21 08:14:18.000000000 +0200
@@ -52,6 +52,7 @@
#@HAVE_TYPEDEF_SCTP_SCTPHDR_T@ HAVE_TYPEDEF_SCTP_SCTPHDR_T
#@HAVE_TIMER_SETUP@ HAVE_TIMER_SETUP
#@HAVE_STRSCPY@ HAVE_STRSCPY
+#@HAVE_STRSCPY_PAD@ HAVE_STRSCPY_PAD
#@HAVE_SYNCHRONIZE_RCU_BH@ HAVE_SYNCHRONIZE_RCU_BH
#@HAVE_LOCKDEP_NFNL_IS_HELD@ HAVE_LOCKDEP_NFNL_IS_HELD
#@HAVE_COND_RESCHED_RCU@ HAVE_COND_RESCHED_RCU
@@ -514,6 +515,21 @@
}
#endif
+#ifndef HAVE_STRSCPY_PAD
+static inline ssize_t strscpy_pad(char *dest, const char *src, size_t count)
+{
+ ssize_t written;
+
+ written = strscpy(dest, src, count);
+ if (written < 0 || written == count - 1)
+ return written;
+
+ memset(dest + written + 1, 0, count - written - 1);
+
+ return written;
+}
+#endif
+
#ifndef HAVE_NLA_STRSCPY
#define nla_strscpy nla_strlcpy
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/kernel/net/netfilter/ipset/Kconfig new/ipset-7.19/kernel/net/netfilter/ipset/Kconfig
--- old/ipset-7.17/kernel/net/netfilter/ipset/Kconfig 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/kernel/net/netfilter/ipset/Kconfig 2023-09-21 08:14:18.000000000 +0200
@@ -29,7 +29,7 @@
depends on IP_SET
help
This option adds the bitmap:ip set type support, by which one
- can store IPv4 addresses (or network addresse) from a range.
+ can store IPv4 addresses (or network addresses) from a range.
To compile it as a module, choose M here. If unsure, say N.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/kernel/net/netfilter/ipset/ip_set_bitmap_ip.c new/ipset-7.19/kernel/net/netfilter/ipset/ip_set_bitmap_ip.c
--- old/ipset-7.17/kernel/net/netfilter/ipset/ip_set_bitmap_ip.c 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/kernel/net/netfilter/ipset/ip_set_bitmap_ip.c 2023-09-21 08:14:18.000000000 +0200
@@ -312,8 +312,8 @@
return -IPSET_ERR_BITMAP_RANGE;
pr_debug("mask_bits %u, netmask %u\n", mask_bits, netmask);
- hosts = 2 << (32 - netmask - 1);
- elements = 2 << (netmask - mask_bits - 1);
+ hosts = 2U << (32 - netmask - 1);
+ elements = 2UL << (netmask - mask_bits - 1);
}
if (elements > IPSET_BITMAP_MAX_RANGE + 1)
return -IPSET_ERR_BITMAP_RANGE_SIZE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/kernel/net/netfilter/ipset/ip_set_core.c new/ipset-7.19/kernel/net/netfilter/ipset/ip_set_core.c
--- old/ipset-7.17/kernel/net/netfilter/ipset/ip_set_core.c 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/kernel/net/netfilter/ipset/ip_set_core.c 2023-09-21 08:14:18.000000000 +0200
@@ -684,6 +684,14 @@
* a separate reference counter
*/
static void
+__ip_set_get_netlink(struct ip_set *set)
+{
+ write_lock_bh(&ip_set_ref_lock);
+ set->ref_netlink++;
+ write_unlock_bh(&ip_set_ref_lock);
+}
+
+static void
__ip_set_put_netlink(struct ip_set *set)
{
write_lock_bh(&ip_set_ref_lock);
@@ -740,9 +748,7 @@
!(opt->family == set->family || set->family == NFPROTO_UNSPEC))
return 0;
- rcu_read_lock_bh();
ret = set->variant->kadt(set, skb, par, IPSET_TEST, opt);
- rcu_read_unlock_bh();
if (ret == -EAGAIN) {
/* Type requests element to be completed */
@@ -875,7 +881,7 @@
BUG_ON(!set);
read_lock_bh(&ip_set_ref_lock);
- strncpy(name, set->name, IPSET_MAXNAMELEN);
+ strscpy_pad(name, set->name, IPSET_MAXNAMELEN);
read_unlock_bh(&ip_set_ref_lock);
}
EXPORT_SYMBOL_GPL(ip_set_name_byindex);
@@ -1350,11 +1356,11 @@
goto out;
}
}
- ret = strscpy(set->name, name2, IPSET_MAXNAMELEN);
+ strscpy_pad(set->name, name2, IPSET_MAXNAMELEN);
out:
write_unlock_bh(&ip_set_ref_lock);
- return ret < 0 ? ret : 0;
+ return ret;
}
/* Swap two sets so that name/index points to the other.
@@ -1408,9 +1414,9 @@
return -EBUSY;
}
- strncpy(from_name, from->name, IPSET_MAXNAMELEN);
- strncpy(from->name, to->name, IPSET_MAXNAMELEN);
- strncpy(to->name, from_name, IPSET_MAXNAMELEN);
+ strscpy_pad(from_name, from->name, IPSET_MAXNAMELEN);
+ strscpy_pad(from->name, to->name, IPSET_MAXNAMELEN);
+ strscpy_pad(to->name, from_name, IPSET_MAXNAMELEN);
swap(from->ref, to->ref);
ip_set(inst, from_id) = to;
@@ -1750,6 +1756,14 @@
bool eexist = flags & IPSET_FLAG_EXIST, retried = false;
do {
+ if (retried) {
+ __ip_set_get_netlink(set);
+ nfnl_unlock(NFNL_SUBSYS_IPSET);
+ cond_resched();
+ nfnl_lock(NFNL_SUBSYS_IPSET);
+ __ip_set_put_netlink(set);
+ }
+
ip_set_lock(set);
ret = set->variant->uadt(set, tb, adt, &lineno, flags, retried);
ip_set_unlock(set);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/kernel/net/netfilter/ipset/ip_set_hash_netiface.c new/ipset-7.19/kernel/net/netfilter/ipset/ip_set_hash_netiface.c
--- old/ipset-7.17/kernel/net/netfilter/ipset/ip_set_hash_netiface.c 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/kernel/net/netfilter/ipset/ip_set_hash_netiface.c 2023-09-21 08:14:18.000000000 +0200
@@ -41,7 +41,7 @@
#define IP_SET_HASH_WITH_MULTI
#define IP_SET_HASH_WITH_NET0
-#define STRLCPY(a, b) strlcpy(a, b, IFNAMSIZ)
+#define STRSCPY(a, b) strscpy(a, b, IFNAMSIZ)
/* IPv4 variant */
@@ -183,11 +183,11 @@
if (!eiface)
return -EINVAL;
- STRLCPY(e.iface, eiface);
+ STRSCPY(e.iface, eiface);
e.physdev = 1;
#endif
} else {
- STRLCPY(e.iface, SRCDIR ? IFACE(in) : IFACE(out));
+ STRSCPY(e.iface, SRCDIR ? IFACE(in) : IFACE(out));
}
if (strlen(e.iface) == 0)
@@ -401,11 +401,11 @@
if (!eiface)
return -EINVAL;
- STRLCPY(e.iface, eiface);
+ STRSCPY(e.iface, eiface);
e.physdev = 1;
#endif
} else {
- STRLCPY(e.iface, SRCDIR ? IFACE(in) : IFACE(out));
+ STRSCPY(e.iface, SRCDIR ? IFACE(in) : IFACE(out));
}
if (strlen(e.iface) == 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/kernel/net/netfilter/ipset/ip_set_hash_netportnet.c new/ipset-7.19/kernel/net/netfilter/ipset/ip_set_hash_netportnet.c
--- old/ipset-7.17/kernel/net/netfilter/ipset/ip_set_hash_netportnet.c 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/kernel/net/netfilter/ipset/ip_set_hash_netportnet.c 2023-09-21 08:14:18.000000000 +0200
@@ -37,6 +37,7 @@
#define IP_SET_HASH_WITH_PROTO
#define IP_SET_HASH_WITH_NETS
#define IPSET_NET_COUNT 2
+#define IP_SET_HASH_WITH_NET0
/* IPv4 variant */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/lib/Makefile.am new/ipset-7.19/lib/Makefile.am
--- old/ipset-7.17/lib/Makefile.am 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/lib/Makefile.am 2023-09-21 08:14:18.000000000 +0200
@@ -46,7 +46,6 @@
EXTRA_DIST = $(IPSET_SETTYPE_LIST) libipset.map
-pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libipset.pc
dist_man_MANS = libipset.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/lib/Makefile.in new/ipset-7.19/lib/Makefile.in
--- old/ipset-7.17/lib/Makefile.in 2022-12-30 12:59:42.000000000 +0100
+++ new/ipset-7.19/lib/Makefile.in 2023-09-21 08:15:45.000000000 +0200
@@ -372,6 +372,7 @@
HAVE_SKB_PROTOCOL = @HAVE_SKB_PROTOCOL@
HAVE_STATE_IN_XT_ACTION_PARAM = @HAVE_STATE_IN_XT_ACTION_PARAM@
HAVE_STRSCPY = @HAVE_STRSCPY@
+HAVE_STRSCPY_PAD = @HAVE_STRSCPY_PAD@
HAVE_STRUCT_XT_ACTION_PARAM = @HAVE_STRUCT_XT_ACTION_PARAM@
HAVE_SYNCHRONIZE_RCU_BH = @HAVE_SYNCHRONIZE_RCU_BH@
HAVE_SYSTEM_POWER_EFFICIENT_WQ = @HAVE_SYSTEM_POWER_EFFICIENT_WQ@
@@ -489,6 +490,7 @@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
+pkgconfigdir = @pkgconfigdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
@@ -574,7 +576,6 @@
debug.c
EXTRA_DIST = $(IPSET_SETTYPE_LIST) libipset.map
-pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libipset.pc
dist_man_MANS = libipset.3
all: $(BUILT_SOURCES)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/lib/ipset.c new/ipset-7.19/lib/ipset.c
--- old/ipset-7.17/lib/ipset.c 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/lib/ipset.c 2023-09-21 08:14:18.000000000 +0200
@@ -235,7 +235,7 @@
{ .name = { "-o", "-output" },
.has_arg = IPSET_MANDATORY_ARG, .flag = IPSET_OPT_MAX,
.parse = ipset_parse_output,
- .help = "plain|save|xml\n"
+ .help = "plain|save|xml|json\n"
" Specify output mode for listing sets.\n"
" Default value for \"list\" command is mode \"plain\"\n"
" and for \"save\" command is mode \"save\".",
@@ -429,6 +429,8 @@
return ipset_session_output(session, IPSET_LIST_PLAIN);
else if (STREQ(str, "xml"))
return ipset_session_output(session, IPSET_LIST_XML);
+ else if (STREQ(str, "json"))
+ return ipset_session_output(session, IPSET_LIST_JSON);
else if (STREQ(str, "save"))
return ipset_session_output(session, IPSET_LIST_SAVE);
@@ -1876,9 +1878,6 @@
cmd == IPSET_CMD_DEL ? "delete" : "get",
ipset_xlate_family(family), table, set);
- typename = ipset_data_get(data, IPSET_OPT_TYPENAME);
- type = ipset_xlate_set_type(typename);
-
xlate_set = (struct ipset_xlate_set *)
ipset_xlate_set_get(ipset, set);
if (xlate_set && xlate_set->interval)
@@ -1999,7 +1998,7 @@
ret = build_argv(ipset, c);
if (ret < 0)
- return ret;
+ break;
cmd = ipset_parser(ipset, ipset->newargc, ipset->newargv);
if (cmd < 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/lib/session.c new/ipset-7.19/lib/session.c
--- old/ipset-7.17/lib/session.c 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/lib/session.c 2023-09-21 08:14:18.000000000 +0200
@@ -860,6 +860,7 @@
const struct ipset_arg *arg;
size_t offset = 0;
int i, found = 0;
+ static char last_setname[IPSET_MAXNAMELEN] = "";
D("enter");
/* Check and load type, family */
@@ -894,6 +895,13 @@
case IPSET_LIST_XML:
safe_snprintf(session, "<member><elem>");
break;
+ case IPSET_LIST_JSON:
+ /* print separator if a member for this set was printed before */
+ if (STREQ(ipset_data_setname(data), last_setname))
+ safe_snprintf(session, ",");
+ strcpy(last_setname, ipset_data_setname(data));
+ safe_snprintf(session, "\n {\n \"elem\" : \"");
+ break;
case IPSET_LIST_PLAIN:
default:
break;
@@ -902,6 +910,8 @@
safe_dprintf(session, ipset_print_elem, IPSET_OPT_ELEM);
if (session->mode == IPSET_LIST_XML)
safe_snprintf(session, "</elem>");
+ if (session->mode == IPSET_LIST_JSON)
+ safe_snprintf(session, "\"");
for (i = 0; type->cmd[IPSET_ADD].args[i] != IPSET_ARG_NONE; i++) {
arg = ipset_keyword(type->cmd[IPSET_ADD].args[i]);
@@ -929,6 +939,15 @@
safe_dprintf(session, arg->print, arg->opt);
safe_snprintf(session, "</%s>", arg->name[0]);
break;
+ case IPSET_LIST_JSON:
+ if (arg->has_arg == IPSET_NO_ARG) {
+ safe_snprintf(session,
+ ",\n \"%s\" : true", arg->name[0]);
+ break;
+ }
+ safe_snprintf(session, ",\n \"%s\" : ", arg->name[0]);
+ safe_dprintf(session, arg->print, arg->opt);
+ break;
default:
break;
}
@@ -936,6 +955,8 @@
if (session->mode == IPSET_LIST_XML)
safe_snprintf(session, "</member>\n");
+ else if (session->mode == IPSET_LIST_JSON)
+ safe_snprintf(session, "\n }");
else
safe_snprintf(session, "\n");
@@ -972,6 +993,7 @@
const struct ipset_arg *arg;
uint8_t family;
int i;
+ static bool firstipset = true;
for (i = IPSET_ATTR_UNSPEC + 1; i <= IPSET_ATTR_CREATE_MAX; i++)
if (nla[i]) {
@@ -1007,6 +1029,19 @@
ipset_data_setname(data),
type->name, type->revision);
break;
+ case IPSET_LIST_JSON:
+ if (!firstipset)
+ safe_snprintf(session, ",\n");
+ firstipset = false;
+ safe_snprintf(session,
+ " \{\n"
+ " \"name\" : \"%s\",\n"
+ " \"type\" : \"%s\",\n"
+ " \"revision\" : %u,\n"
+ " \"header\" : \{\n",
+ ipset_data_setname(data),
+ type->name, type->revision);
+ break;
default:
break;
}
@@ -1042,6 +1077,22 @@
safe_dprintf(session, arg->print, arg->opt);
safe_snprintf(session, "</%s>", arg->name[0]);
break;
+ case IPSET_LIST_JSON:
+ if (arg->has_arg == IPSET_NO_ARG) {
+ safe_snprintf(session,
+ " \"%s\" : true,\n", arg->name[0]);
+ break;
+ }
+ if (arg->opt == IPSET_OPT_FAMILY) {
+ safe_snprintf(session, " \"%s\" : \"", arg->name[0]);
+ safe_dprintf(session, arg->print, arg->opt);
+ safe_snprintf(session, "\",\n", arg->name[0]);
+ break;
+ }
+ safe_snprintf(session, " \"%s\" : ", arg->name[0]);
+ safe_dprintf(session, arg->print, arg->opt);
+ safe_snprintf(session, ",\n", arg->name[0]);
+ break;
default:
break;
}
@@ -1079,6 +1130,21 @@
"</header>\n" :
"</header>\n<members>\n");
break;
+ case IPSET_LIST_JSON:
+ safe_snprintf(session, " \"memsize\" : ");
+ safe_dprintf(session, ipset_print_number, IPSET_OPT_MEMSIZE);
+ safe_snprintf(session, ",\n \"references\" : ");
+ safe_dprintf(session, ipset_print_number, IPSET_OPT_REFERENCES);
+ if (ipset_data_test(data, IPSET_OPT_ELEMENTS)) {
+ safe_snprintf(session, ",\n \"numentries\" : ");
+ safe_dprintf(session, ipset_print_number, IPSET_OPT_ELEMENTS);
+ }
+ safe_snprintf(session, "\n");
+ safe_snprintf(session,
+ session->envopts & IPSET_ENV_LIST_HEADER ?
+ " },\n" :
+ " },\n \"members\" : [");
+ break;
default:
break;
}
@@ -1214,11 +1280,24 @@
if (session->saved_setname[0] != '\0')
safe_snprintf(session, "</members>\n</ipset>\n");
break;
+ case IPSET_LIST_JSON:
+ if (session->envopts & IPSET_ENV_LIST_SETNAME)
+ break;
+ if (session->envopts & IPSET_ENV_LIST_HEADER) {
+ if (session->saved_setname[0] != '\0')
+ safe_snprintf(session, " }");
+ break;
+ }
+ if (session->saved_setname[0] != '\0')
+ safe_snprintf(session, "\n ]\n }");
+ break;
default:
break;
}
if (callback_done && session->mode == IPSET_LIST_XML)
safe_snprintf(session, "</ipsets>\n");
+ if (callback_done && session->mode == IPSET_LIST_JSON)
+ safe_snprintf(session, "\n]\n");
return call_outfn(session) ? MNL_CB_ERROR : MNL_CB_STOP;
}
@@ -1245,6 +1324,9 @@
if (session->mode == IPSET_LIST_XML)
safe_snprintf(session, "<ipset name=\"%s\"/>\n",
ipset_data_setname(data));
+ if (session->mode == IPSET_LIST_JSON)
+ safe_snprintf(session, "\"name\" : \"%s\"\n",
+ ipset_data_setname(data));
else
safe_snprintf(session, "%s\n",
ipset_data_setname(data));
@@ -2208,6 +2290,11 @@
session->mode == IPSET_LIST_XML)
safe_snprintf(session, "<ipsets>\n");
+ /* Start the root element in json mode */
+ if ((cmd == IPSET_CMD_LIST || cmd == IPSET_CMD_SAVE) &&
+ session->mode == IPSET_LIST_JSON)
+ safe_snprintf(session, "[\n");
+
D("next: build_msg");
/* Build new message or append buffered commands */
ret = build_msg(session, aggregate);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/src/Makefile.in new/ipset-7.19/src/Makefile.in
--- old/ipset-7.17/src/Makefile.in 2022-12-30 12:59:42.000000000 +0100
+++ new/ipset-7.19/src/Makefile.in 2023-09-21 08:15:45.000000000 +0200
@@ -352,6 +352,7 @@
HAVE_SKB_PROTOCOL = @HAVE_SKB_PROTOCOL@
HAVE_STATE_IN_XT_ACTION_PARAM = @HAVE_STATE_IN_XT_ACTION_PARAM@
HAVE_STRSCPY = @HAVE_STRSCPY@
+HAVE_STRSCPY_PAD = @HAVE_STRSCPY_PAD@
HAVE_STRUCT_XT_ACTION_PARAM = @HAVE_STRUCT_XT_ACTION_PARAM@
HAVE_SYNCHRONIZE_RCU_BH = @HAVE_SYNCHRONIZE_RCU_BH@
HAVE_SYSTEM_POWER_EFFICIENT_WQ = @HAVE_SYSTEM_POWER_EFFICIENT_WQ@
@@ -469,6 +470,7 @@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
+pkgconfigdir = @pkgconfigdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/src/ipset.8 new/ipset-7.19/src/ipset.8
--- old/ipset-7.17/src/ipset.8 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/src/ipset.8 2023-09-21 08:14:18.000000000 +0200
@@ -21,7 +21,7 @@
.PP
COMMANDS := { \fBcreate\fR | \fBadd\fR | \fBdel\fR | \fBtest\fR | \fBdestroy\fR | \fBlist\fR | \fBsave\fR | \fBrestore\fR | \fBflush\fR | \fBrename\fR | \fBswap\fR | \fBhelp\fR | \fBversion\fR | \fB\-\fR }
.PP
-\fIOPTIONS\fR := { \fB\-exist\fR | \fB\-output\fR { \fBplain\fR | \fBsave\fR | \fBxml\fR } | \fB\-quiet\fR | \fB\-resolve\fR | \fB\-sorted\fR | \fB\-name\fR | \fB\-terse\fR | \fB\-file\fR \fIfilename\fR }
+\fIOPTIONS\fR := { \fB\-exist\fR | \fB\-output\fR { \fBplain\fR | \fBsave\fR | \fBxml\fR } | \fBjson\fR } | \fB\-quiet\fR | \fB\-resolve\fR | \fB\-sorted\fR | \fB\-name\fR | \fB\-terse\fR | \fB\-file\fR \fIfilename\fR }
.PP
\fBipset\fR \fBcreate\fR \fISETNAME\fR \fITYPENAME\fR [ \fICREATE\-OPTIONS\fR ]
.PP
@@ -118,7 +118,7 @@
The option
\fB\-output\fR
can be used to control the format of the listing:
-\fBplain\fR, \fBsave\fR or \fBxml\fR.
+\fBplain\fR, \fBsave\fR, \fBxml\fR or \fBjson\fR.
(The default is
\fBplain\fR.)
If the option
@@ -187,7 +187,7 @@
Ignore errors when exactly the same set is to be created or already
added entry is added or missing entry is deleted.
.TP
-\fB\-o\fP, \fB\-output\fP { \fBplain\fR | \fBsave\fR | \fBxml\fR }
+\fB\-o\fP, \fB\-output\fP { \fBplain\fR | \fBsave\fR | \fBxml\fR | \fBjson\fR }
Select the output format to the
\fBlist\fR
command.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/src/ui.c new/ipset-7.19/src/ui.c
--- old/ipset-7.17/src/ui.c 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/src/ui.c 2023-09-21 08:14:18.000000000 +0200
@@ -180,7 +180,7 @@
{ .name = { "-o", "-output" },
.has_arg = IPSET_MANDATORY_ARG, .flag = IPSET_OPT_MAX,
.parse = ipset_parse_output,
- .help = "plain|save|xml\n"
+ .help = "plain|save|xml|json\n"
" Specify output mode for listing sets.\n"
" Default value for \"list\" command is mode \"plain\"\n"
" and for \"save\" command is mode \"save\".",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/tests/cidr.sh new/ipset-7.19/tests/cidr.sh
--- old/ipset-7.17/tests/cidr.sh 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/tests/cidr.sh 2023-09-21 08:14:18.000000000 +0200
@@ -37,6 +37,30 @@
ipset="../src/ipset"
+if which netmask >/dev/null 2>&1; then
+ net_first_addr() {
+ netmask -r $1 | cut -d - -f 1
+ }
+ net_last_addr() {
+ netmask -r $1 | cut -d - -f 2 | cut -d ' ' -f 1
+ }
+elif which ipcalc >/dev/null 2>&1; then
+ net_first_addr() {
+ ipcalc $1 | awk '/^Address:/{print $2}'
+ }
+ net_last_addr() {
+ # Netmask tool prints broadcast address as last one, so
+ # prefer that instead of HostMax. Also fix for /31 and /32
+ # being recognized as special by ipcalc.
+ ipcalc $1 | awk '/^(Hostroute|HostMax):/{out=$2}
+ /^Broadcast:/{out=$2}
+ END{print out}'
+ }
+else
+ echo "need either netmask or ipcalc tools"
+ exit 1
+fi
+
case "$1" in
net)
$ipset n test hash:net
@@ -46,9 +70,9 @@
done <<<"$NETS"
while IFS= read x; do
- first=`netmask -r $x | cut -d - -f 1`
+ first=`net_first_addr $x`
$ipset test test $first >/dev/null 2>&1
- last=`netmask -r $x | cut -d - -f 2 | cut -d ' ' -f 1`
+ last=`net_last_addr $x`
$ipset test test $last >/dev/null 2>&1
done <<<"$NETS"
@@ -67,9 +91,9 @@
n=1
while IFS= read x; do
- first=`netmask -r $x | cut -d - -f 1`
+ first=`net_first_addr $x`
$ipset test test $first,$n >/dev/null 2>&1
- last=`netmask -r $x | cut -d - -f 2 | cut -d ' ' -f 1`
+ last=`net_last_addr $x`
$ipset test test $last,$n >/dev/null 2>&1
n=$((n+1))
done <<<"$NETS"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/tests/hash:ip,port.t new/ipset-7.19/tests/hash:ip,port.t
--- old/ipset-7.17/tests/hash:ip,port.t 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/tests/hash:ip,port.t 2023-09-21 08:14:18.000000000 +0200
@@ -62,10 +62,10 @@
0 ipset test test 2.0.0.1,tcp:80
# Test element with UDP protocol
0 ipset test test 2.0.0.1,udp:80
-# Add element with vrrp
-0 ipset add test 2.0.0.1,vrrp:0
-# Test element with vrrp
-0 ipset test test 2.0.0.1,vrrp:0
+# Add element with GRE
+0 ipset add test 2.0.0.1,gre:0
+# Test element with GRE
+0 ipset test test 2.0.0.1,gre:0
# Add element with sctp
0 ipset add test 2.0.0.1,sctp:80
# Test element with sctp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/tests/hash:ip,port.t.list2 new/ipset-7.19/tests/hash:ip,port.t.list2
--- old/ipset-7.17/tests/hash:ip,port.t.list2 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/tests/hash:ip,port.t.list2 2023-09-21 08:14:18.000000000 +0200
@@ -6,6 +6,6 @@
References: 0
Number of entries: 3
Members:
+2.0.0.1,gre:0
2.0.0.1,tcp:80
2.0.0.1,udp:80
-2.0.0.1,vrrp:0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/tests/xlate/ipset-translate new/ipset-7.19/tests/xlate/ipset-translate
--- old/ipset-7.17/tests/xlate/ipset-translate 1970-01-01 01:00:00.000000000 +0100
+++ new/ipset-7.19/tests/xlate/ipset-translate 2023-09-29 21:13:05.360699793 +0200
@@ -0,0 +1 @@
+symbolic link to ../../src/ipset
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/tests/xlate/runtest.sh new/ipset-7.19/tests/xlate/runtest.sh
--- old/ipset-7.17/tests/xlate/runtest.sh 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/tests/xlate/runtest.sh 2023-09-21 08:14:18.000000000 +0200
@@ -6,14 +6,20 @@
exit 1
fi
-IPSET_XLATE=$(which ipset-translate)
-if [ ! -x "$IPSET_XLATE" ] ; then
- echo "ERROR: ipset-translate is not installed yet"
+ipset=${IPSET_BIN:-../../src/ipset}
+ipset_xlate=${IPSET_XLATE_BIN:-$(dirname $0)/ipset-translate}
+
+$ipset restore < xlate.t
+rc=$?
+$ipset destroy
+if [ $rc -ne 0 ]
+then
+ echo -e "[\033[0;31mERROR\033[0m] invalid test input"
exit 1
fi
TMP=$(mktemp)
-ipset-translate restore < xlate.t &> $TMP
+$ipset_xlate restore < xlate.t &> $TMP
if [ $? -ne 0 ]
then
cat $TMP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/tests/xlate/xlate.t new/ipset-7.19/tests/xlate/xlate.t
--- old/ipset-7.17/tests/xlate/xlate.t 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/tests/xlate/xlate.t 2023-09-21 08:14:18.000000000 +0200
@@ -11,8 +11,8 @@
create hip5 hash:ip maxelem 24
add hip5 192.168.10.0
create hip6 hash:ip comment
-add hip5 192.168.10.1
-add hip5 192.168.10.2 comment "this is a comment"
+add hip6 192.168.10.1
+add hip6 192.168.10.2 comment "this is a comment"
create ipp1 hash:ip,port
add ipp1 192.168.10.1,0
add ipp1 192.168.10.2,5
@@ -23,7 +23,7 @@
add ipp3 192.168.10.3,20 packets 5 bytes 3456
create ipp4 hash:ip,port timeout 4 counters
add ipp4 192.168.10.3,20 packets 5 bytes 3456
-create bip1 bitmap:ip range 2.0.0.1-2.1.0.1 timeout 5
+create bip1 bitmap:ip range 2.0.0.1-2.0.1.1 timeout 5
create bip2 bitmap:ip range 10.0.0.0/8 netmask 24 timeout 5
add bip2 10.10.10.0
add bip2 10.10.20.0 timeout 12
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/tests/xlate/xlate.t.nft new/ipset-7.19/tests/xlate/xlate.t.nft
--- old/ipset-7.17/tests/xlate/xlate.t.nft 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/tests/xlate/xlate.t.nft 2023-09-21 08:14:18.000000000 +0200
@@ -12,8 +12,8 @@
add set inet global hip5 { type ipv4_addr; size 24; }
add element inet global hip5 { 192.168.10.0 }
add set inet global hip6 { type ipv4_addr; }
-add element inet global hip5 { 192.168.10.1 }
-add element inet global hip5 { 192.168.10.2 comment "this is a comment" }
+add element inet global hip6 { 192.168.10.1 }
+add element inet global hip6 { 192.168.10.2 comment "this is a comment" }
add set inet global ipp1 { type ipv4_addr . inet_proto . inet_service; }
add element inet global ipp1 { 192.168.10.1 . tcp . 0 }
add element inet global ipp1 { 192.168.10.2 . tcp . 5 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/utils/Makefile.in new/ipset-7.19/utils/Makefile.in
--- old/ipset-7.17/utils/Makefile.in 2022-12-30 12:59:42.000000000 +0100
+++ new/ipset-7.19/utils/Makefile.in 2023-09-21 08:15:45.000000000 +0200
@@ -300,6 +300,7 @@
HAVE_SKB_PROTOCOL = @HAVE_SKB_PROTOCOL@
HAVE_STATE_IN_XT_ACTION_PARAM = @HAVE_STATE_IN_XT_ACTION_PARAM@
HAVE_STRSCPY = @HAVE_STRSCPY@
+HAVE_STRSCPY_PAD = @HAVE_STRSCPY_PAD@
HAVE_STRUCT_XT_ACTION_PARAM = @HAVE_STRUCT_XT_ACTION_PARAM@
HAVE_SYNCHRONIZE_RCU_BH = @HAVE_SYNCHRONIZE_RCU_BH@
HAVE_SYSTEM_POWER_EFFICIENT_WQ = @HAVE_SYSTEM_POWER_EFFICIENT_WQ@
@@ -417,6 +418,7 @@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
+pkgconfigdir = @pkgconfigdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipset-7.17/utils/ipset_bash_completion/ipset new/ipset-7.19/utils/ipset_bash_completion/ipset
--- old/ipset-7.17/utils/ipset_bash_completion/ipset 2022-12-30 12:57:30.000000000 +0100
+++ new/ipset-7.19/utils/ipset_bash_completion/ipset 2023-09-21 08:14:18.000000000 +0200
@@ -362,7 +362,7 @@
while read -r; do
REPLY="${REPLY#*: }"
printf "%s\n" ${REPLY%%:*}
-done < <(PATH=${PATH}:/sbin ( command ip -o link show ) 2>/dev/null)
+done < <(( PATH=${PATH}:/sbin command ip -o link show ) 2>/dev/null)
}
_ipset_get_iplist() {
@@ -1130,9 +1130,9 @@
# make sure it's not a filename named -o or -output
if [[ $str_filename != $prev ]]; then
if ((names_only || headers_only)); then
- COMPREPLY=( $( compgen -W 'plain xml' -- "$cur" ) )
+ COMPREPLY=( $( compgen -W 'plain xml json' -- "$cur" ) )
else
- COMPREPLY=( $( compgen -W 'plain save xml' -- "$cur" ) )
+ COMPREPLY=( $( compgen -W 'plain save xml json' -- "$cur" ) )
fi
return 0
fi
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package perl-DBD-SQLite for openSUSE:Factory checked in at 2023-09-29 21:12:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-DBD-SQLite (Old)
and /work/SRC/openSUSE:Factory/.perl-DBD-SQLite.new.28202 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-DBD-SQLite"
Fri Sep 29 21:12:45 2023 rev:51 rq:1114052 version:1.740.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-DBD-SQLite/perl-DBD-SQLite.changes 2022-11-25 13:11:22.767753663 +0100
+++ /work/SRC/openSUSE:Factory/.perl-DBD-SQLite.new.28202/perl-DBD-SQLite.changes 2023-09-29 21:13:01.808571633 +0200
@@ -1,0 +2,13 @@
+Wed Sep 20 03:06:10 UTC 2023 - Tina Müller <timueller+perl(a)suse.de>
+
+- updated to 1.74
+ see /usr/share/doc/packages/perl-DBD-SQLite/Changes
+
+ 1.74 2023-09-20
+ - Switched to a production version
+
+ 1.73_01 2023-07-09
+ - Upgraded SQLite to 3.42.0
+ - Add missing possible table_type values to POD (GH#105, dboehmer++)
+
+-------------------------------------------------------------------
Old:
----
DBD-SQLite-1.72.tar.gz
New:
----
DBD-SQLite-1.74.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-DBD-SQLite.spec ++++++
--- /var/tmp/diff_new_pack.97g63F/_old 2023-09-29 21:13:03.096618105 +0200
+++ /var/tmp/diff_new_pack.97g63F/_new 2023-09-29 21:13:03.100618250 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-DBD-SQLite
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,12 +18,13 @@
%define cpan_name DBD-SQLite
Name: perl-DBD-SQLite
-Version: 1.72
+Version: 1.740.0
Release: 0
+%define cpan_version 1.74
License: Artistic-1.0 OR GPL-1.0-or-later
Summary: Self Contained SQLite RDBMS in a DBI Driver
URL: https://metacpan.org/release/%{cpan_name}
-Source0: https://cpan.metacpan.org/authors/id/I/IS/ISHIGAKI/%{cpan_name}-%{version}.…
+Source0: https://cpan.metacpan.org/authors/id/I/IS/ISHIGAKI/%{cpan_name}-%{cpan_vers…
Source1: cpanspec.yml
# PATCH-FIX-OPENSUSE use system sqlite
Patch0: perl-DBD-SQLite-use-external-sqlite3.patch
@@ -33,7 +34,16 @@
BuildRequires: perl(ExtUtils::MakeMaker) >= 6.48
BuildRequires: perl(Test::More) >= 0.88
Requires: perl(DBI) >= 1.57
-Requires: perl(Test::More) >= 0.88
+Provides: perl(DBD::SQLite) = 1.740.0
+Provides: perl(DBD::SQLite::Constants)
+Provides: perl(DBD::SQLite::GetInfo)
+Provides: perl(DBD::SQLite::VirtualTable) = 1.740.0
+Provides: perl(DBD::SQLite::VirtualTable::Cursor)
+Provides: perl(DBD::SQLite::VirtualTable::FileContent)
+Provides: perl(DBD::SQLite::VirtualTable::FileContent::Cursor)
+Provides: perl(DBD::SQLite::VirtualTable::PerlData)
+Provides: perl(DBD::SQLite::VirtualTable::PerlData::Cursor)
+%define __perllib_provides /bin/true
%{perl_requires}
# MANUAL BEGIN
%if 0%{?sle_version} >= 140000 && 0%{?sle_version} <= 150400
@@ -79,7 +89,8 @@
the typeless nature of the SQLite database.
%prep
-%autosetup -n %{cpan_name}-%{version} -p1
+%autosetup -n %{cpan_name}-%{cpan_version} -p1
+
# MANUAL BEGIN
%if 0%{?sle_version} >= 140000 && 0%{?sle_version} <= 150400
patch -p1 --reverse <%{PATCH0}
++++++ DBD-SQLite-1.72.tar.gz -> DBD-SQLite-1.74.tar.gz ++++++
++++ 27827 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libvpx for openSUSE:Factory checked in at 2023-09-29 21:12:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libvpx (Old)
and /work/SRC/openSUSE:Factory/.libvpx.new.28202 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libvpx"
Fri Sep 29 21:12:43 2023 rev:49 rq:1114051 version:1.13.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/libvpx/libvpx.changes 2023-02-16 16:55:10.594536615 +0100
+++ /work/SRC/openSUSE:Factory/.libvpx.new.28202/libvpx.changes 2023-09-29 21:12:59.228478544 +0200
@@ -1,0 +2,6 @@
+Thu Sep 28 09:27:46 UTC 2023 - Adrian Schröter <adrian(a)suse.de>
+
+- Fixing CVE-2023-5217 heap buffer overflow (boo#1215778)
+ added CVE-2023-5217.patch
+
+-------------------------------------------------------------------
New:
----
CVE-2023-5217.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libvpx.spec ++++++
--- /var/tmp/diff_new_pack.JAdzE3/_old 2023-09-29 21:13:01.064544789 +0200
+++ /var/tmp/diff_new_pack.JAdzE3/_new 2023-09-29 21:13:01.064544789 +0200
@@ -26,6 +26,8 @@
URL: https://www.webmproject.org/
Source0: %{name}-%{version}.tar.xz
Source1000: baselibs.conf
+# PATCH-FIX-UPSTREAM
+Patch1: CVE-2023-5217.patch
Patch2: libvpx-configure-add-arch.patch
# only needed for test suite
BuildRequires: gcc-c++
++++++ CVE-2023-5217.patch ++++++
commit af6dedd715f4307669366944cca6e0417b290282
Author: James Zern <jzern(a)google.com>
Date: Mon Sep 25 18:53:41 2023 -0700
encode_api_test: add ConfigResizeChangeThreadCount
Update thread counts and resolution to ensure allocations are updated
correctly. VP8 is disabled to avoid a crash.
Bug: chromium:1486441
Change-Id: Ie89776d9818d27dc351eff298a44c699e850761b
Index: libvpx-1.13.0/test/encode_api_test.cc
===================================================================
--- libvpx-1.13.0.orig/test/encode_api_test.cc
+++ libvpx-1.13.0/test/encode_api_test.cc
@@ -304,7 +304,6 @@ TEST(EncodeAPI, SetRoi) {
void InitCodec(const vpx_codec_iface_t &iface, int width, int height,
vpx_codec_ctx_t *enc, vpx_codec_enc_cfg_t *cfg) {
- ASSERT_EQ(vpx_codec_enc_config_default(&iface, cfg, 0), VPX_CODEC_OK);
cfg->g_w = width;
cfg->g_h = height;
cfg->g_lag_in_frames = 0;
@@ -342,6 +341,7 @@ TEST(EncodeAPI, ConfigChangeThreadCount)
vpx_codec_ctx_t ctx = {};
} enc;
+ ASSERT_EQ(vpx_codec_enc_config_default(iface, &cfg, 0), VPX_CODEC_OK);
EXPECT_NO_FATAL_FAILURE(
InitCodec(*iface, kWidth, kHeight, &enc.ctx, &cfg));
if (IsVP9(iface)) {
@@ -353,6 +353,54 @@ TEST(EncodeAPI, ConfigChangeThreadCount)
for (const auto threads : { 1, 4, 8, 6, 2, 1 }) {
cfg.g_threads = threads;
+ EXPECT_NO_FATAL_FAILURE(EncodeWithConfig(cfg, &enc.ctx))
+ << "iteration: " << i << " threads: " << threads;
+ }
+ }
+ }
+}
+
+TEST(EncodeAPI, ConfigResizeChangeThreadCount) {
+ constexpr int kInitWidth = 1024;
+ constexpr int kInitHeight = 1024;
+
+ for (const auto *iface : kCodecIfaces) {
+ SCOPED_TRACE(vpx_codec_iface_name(iface));
+ if (!IsVP9(iface)) {
+ GTEST_SKIP() << "TODO(https://crbug.com/1486441) remove this condition "
+ "after VP8 is fixed.";
+ }
+ for (int i = 0; i < (IsVP9(iface) ? 2 : 1); ++i) {
+ vpx_codec_enc_cfg_t cfg = {};
+ struct Encoder {
+ ~Encoder() { EXPECT_EQ(vpx_codec_destroy(&ctx), VPX_CODEC_OK); }
+ vpx_codec_ctx_t ctx = {};
+ } enc;
+
+ ASSERT_EQ(vpx_codec_enc_config_default(iface, &cfg, 0), VPX_CODEC_OK);
+ // Start in threaded mode to ensure resolution and thread related
+ // allocations are updated correctly across changes in resolution and
+ // thread counts. See https://crbug.com/1486441.
+ cfg.g_threads = 4;
+ EXPECT_NO_FATAL_FAILURE(
+ InitCodec(*iface, kInitWidth, kInitHeight, &enc.ctx, &cfg));
+ if (IsVP9(iface)) {
+ EXPECT_EQ(vpx_codec_control_(&enc.ctx, VP9E_SET_TILE_COLUMNS, 6),
+ VPX_CODEC_OK);
+ EXPECT_EQ(vpx_codec_control_(&enc.ctx, VP9E_SET_ROW_MT, i),
+ VPX_CODEC_OK);
+ }
+
+ cfg.g_w = 1000;
+ cfg.g_h = 608;
+ EXPECT_EQ(vpx_codec_enc_config_set(&enc.ctx, &cfg), VPX_CODEC_OK)
+ << vpx_codec_error_detail(&enc.ctx);
+
+ cfg.g_w = 16;
+ cfg.g_h = 720;
+
+ for (const auto threads : { 1, 4, 8, 6, 2, 1 }) {
+ cfg.g_threads = threads;
EXPECT_NO_FATAL_FAILURE(EncodeWithConfig(cfg, &enc.ctx))
<< "iteration: " << i << " threads: " << threads;
}
Index: libvpx-1.13.0/vp8/encoder/onyx_if.c
===================================================================
--- libvpx-1.13.0.orig/vp8/encoder/onyx_if.c
+++ libvpx-1.13.0/vp8/encoder/onyx_if.c
@@ -1443,6 +1443,11 @@ void vp8_change_config(VP8_COMP *cpi, VP
last_h = cpi->oxcf.Height;
prev_number_of_layers = cpi->oxcf.number_of_layers;
+ if (cpi->initial_width) {
+ // TODO(https://crbug.com/1486441): Allow changing thread counts; the
+ // allocation is done once in vp8_create_compressor().
+ oxcf->multi_threaded = cpi->oxcf.multi_threaded;
+ }
cpi->oxcf = *oxcf;
switch (cpi->oxcf.Mode) {
++++++ libvpx-1.13.0.obscpio ++++++
/work/SRC/openSUSE:Factory/libvpx/libvpx-1.13.0.obscpio /work/SRC/openSUSE:Factory/.libvpx.new.28202/libvpx-1.13.0.obscpio differ: char 69090, line 1820
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package perl-File-Copy-Recursive-Reduced for openSUSE:Factory checked in at 2023-09-29 21:12:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-File-Copy-Recursive-Reduced (Old)
and /work/SRC/openSUSE:Factory/.perl-File-Copy-Recursive-Reduced.new.28202 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-File-Copy-Recursive-Reduced"
Fri Sep 29 21:12:42 2023 rev:2 rq:1114049 version:0.7.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-File-Copy-Recursive-Reduced/perl-File-Copy-Recursive-Reduced.changes 2019-07-11 13:15:19.938825703 +0200
+++ /work/SRC/openSUSE:Factory/.perl-File-Copy-Recursive-Reduced.new.28202/perl-File-Copy-Recursive-Reduced.changes 2023-09-29 21:12:54.776317910 +0200
@@ -1,0 +2,10 @@
+Sun Sep 17 03:06:52 UTC 2023 - Tina Müller <timueller+perl(a)suse.de>
+
+- updated to 0.007
+ see /usr/share/doc/packages/perl-File-Copy-Recursive-Reduced/Changes
+
+ 0.007 Sat Sep 16 07:48:17 AM EDT 2023
+ - Corrections to better accommodate Windows path separators, mostly
+ provided by Håkon Hægland.
+
+-------------------------------------------------------------------
Old:
----
File-Copy-Recursive-Reduced-0.006.tar.gz
New:
----
File-Copy-Recursive-Reduced-0.007.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-File-Copy-Recursive-Reduced.spec ++++++
--- /var/tmp/diff_new_pack.5FlPgY/_old 2023-09-29 21:12:56.592383433 +0200
+++ /var/tmp/diff_new_pack.5FlPgY/_new 2023-09-29 21:12:56.600383722 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-File-Copy-Recursive-Reduced
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,21 +16,22 @@
#
+%define cpan_name File-Copy-Recursive-Reduced
Name: perl-File-Copy-Recursive-Reduced
-Version: 0.006
+Version: 0.7.0
Release: 0
-%define cpan_name File-Copy-Recursive-Reduced
-Summary: Recursive copying of files and directories within Perl 5 toolchain
+%define cpan_version 0.007
License: Artistic-1.0 OR GPL-1.0-or-later
-Group: Development/Libraries/Perl
-Url: https://metacpan.org/release/%{cpan_name}
-Source0: https://cpan.metacpan.org/authors/id/J/JK/JKEENAN/%{cpan_name}-%{version}.t…
+Summary: Recursive copying of files and directories within Perl 5 toolchain
+URL: https://metacpan.org/release/%{cpan_name}
+Source0: https://cpan.metacpan.org/authors/id/J/JK/JKEENAN/%{cpan_name}-%{cpan_versi…
BuildArch: noarch
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: perl
BuildRequires: perl-macros
BuildRequires: perl(Capture::Tiny)
BuildRequires: perl(Path::Tiny)
+Provides: perl(File::Copy::Recursive::Reduced) = 0.7.0
+%define __perllib_provides /bin/true
%{perl_requires}
%description
@@ -42,11 +43,11 @@
distributions often described as being part of the Perl toolchain.
%prep
-%setup -q -n %{cpan_name}-%{version}
+%autosetup -n %{cpan_name}-%{cpan_version}
%build
perl Makefile.PL INSTALLDIRS=vendor
-make %{?_smp_mflags}
+%make_build
%check
make test
@@ -57,7 +58,6 @@
%perl_gen_filelist
%files -f %{name}.files
-%defattr(-,root,root,755)
%doc Changes README Todo
%license LICENSE
++++++ File-Copy-Recursive-Reduced-0.006.tar.gz -> File-Copy-Recursive-Reduced-0.007.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/File-Copy-Recursive-Reduced-0.006/Changes new/File-Copy-Recursive-Reduced-0.007/Changes
--- old/File-Copy-Recursive-Reduced-0.006/Changes 2018-04-20 16:23:08.000000000 +0200
+++ new/File-Copy-Recursive-Reduced-0.007/Changes 2023-09-16 13:55:22.000000000 +0200
@@ -1,5 +1,9 @@
Revision history for Perl module File::Copy::Recursive::Reduced
+0.007 Sat Sep 16 07:48:17 AM EDT 2023
+ - Corrections to better accommodate Windows path separators, mostly
+ provided by Håkon Hægland.
+
0.006 Fri Apr 20 10:21:48 EDT 2018
- File::Copy::Recursive 0.41 has been released to CPAN and
addresses the problem which was the focus of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/File-Copy-Recursive-Reduced-0.006/MANIFEST.SKIP new/File-Copy-Recursive-Reduced-0.007/MANIFEST.SKIP
--- old/File-Copy-Recursive-Reduced-0.006/MANIFEST.SKIP 2018-04-17 15:08:51.000000000 +0200
+++ new/File-Copy-Recursive-Reduced-0.007/MANIFEST.SKIP 2023-09-16 13:52:11.000000000 +0200
@@ -37,7 +37,6 @@
.version_info.pl
dump
\.gitignore
-\.travis.yml
\.appveyor.yml
^README.md
^.README.pod
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/File-Copy-Recursive-Reduced-0.006/META.json new/File-Copy-Recursive-Reduced-0.007/META.json
--- old/File-Copy-Recursive-Reduced-0.006/META.json 2018-04-20 16:44:36.000000000 +0200
+++ new/File-Copy-Recursive-Reduced-0.007/META.json 2023-09-16 13:56:33.000000000 +0200
@@ -4,13 +4,13 @@
"James E Keenan (jkeenan(a)cpan.org)"
],
"dynamic_config" : 1,
- "generated_by" : "ExtUtils::MakeMaker version 7.24, CPAN::Meta::Converter version 2.150010",
+ "generated_by" : "ExtUtils::MakeMaker version 7.70, CPAN::Meta::Converter version 2.150010",
"license" : [
"perl_5"
],
"meta-spec" : {
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
- "version" : "2"
+ "version" : 2
},
"name" : "File-Copy-Recursive-Reduced",
"no_index" : {
@@ -62,6 +62,6 @@
"web" : "https://github.com/jkeenan/file-copy-recursive-reduced"
}
},
- "version" : "0.006",
- "x_serialization_backend" : "JSON::PP version 2.27400_02"
+ "version" : "0.007",
+ "x_serialization_backend" : "JSON::PP version 4.16"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/File-Copy-Recursive-Reduced-0.006/META.yml new/File-Copy-Recursive-Reduced-0.007/META.yml
--- old/File-Copy-Recursive-Reduced-0.006/META.yml 2018-04-20 16:44:35.000000000 +0200
+++ new/File-Copy-Recursive-Reduced-0.007/META.yml 2023-09-16 13:56:33.000000000 +0200
@@ -13,7 +13,7 @@
configure_requires:
ExtUtils::MakeMaker: '0'
dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 7.24, CPAN::Meta::Converter version 2.150010'
+generated_by: 'ExtUtils::MakeMaker version 7.70, CPAN::Meta::Converter version 2.150010'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -33,5 +33,5 @@
bugtracker: https://rt.cpan.org/Public/Dist/Display.html?Name=File-Copy-Recursive-Reduc…
homepage: http://thenceforward.net/perl/modules/File-Copy-Recursive-Reduced/
repository: https://github.com/jkeenan/file-copy-recursive-reduced.git
-version: '0.006'
+version: '0.007'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/File-Copy-Recursive-Reduced-0.006/lib/File/Copy/Recursive/Reduced.pm new/File-Copy-Recursive-Reduced-0.007/lib/File/Copy/Recursive/Reduced.pm
--- old/File-Copy-Recursive-Reduced-0.006/lib/File/Copy/Recursive/Reduced.pm 2018-04-20 16:43:32.000000000 +0200
+++ new/File-Copy-Recursive-Reduced-0.007/lib/File/Copy/Recursive/Reduced.pm 2023-09-16 13:50:29.000000000 +0200
@@ -4,7 +4,7 @@
use parent qw( Exporter );
our @EXPORT_OK = qw( dircopy fcopy rcopy );
-our $VERSION = '0.006';
+our $VERSION = '0.007';
use File::Copy;
use File::Find;
@@ -505,6 +505,9 @@
Thanks also to Tom Hukins for supplying the patch which corrects FCR's
problems and which has been incorporated into FCR2 as well.
+Thanks to Håkon Hægland for paying attention to how this library performs on
+Windows and other platforms to which the author does not have access.
+
=head1 AUTHOR
James E Keenan
@@ -520,7 +523,7 @@
The full text of the license can be found in the
LICENSE file included with this module.
-Copyright James E Keenan 2018. All rights reserved.
+Copyright James E Keenan 2018-2023. All rights reserved.
=head1 SEE ALSO
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/File-Copy-Recursive-Reduced-0.006/t/001-fcopy.t new/File-Copy-Recursive-Reduced-0.007/t/001-fcopy.t
--- old/File-Copy-Recursive-Reduced-0.006/t/001-fcopy.t 2018-04-19 22:16:06.000000000 +0200
+++ new/File-Copy-Recursive-Reduced-0.007/t/001-fcopy.t 2023-09-15 14:42:44.000000000 +0200
@@ -91,7 +91,8 @@
$stderr = capture_stderr { $rv = fcopy($xsymlink, $xnew); };
ok(defined $rv, "fcopy() returned defined value when copying from symlink");
ok($rv, "fcopy() returned true value when copying from symlink");
- like($stderr, qr/Copying a symlink \($xsymlink\) whose target does not exist/,
+
+ like($stderr, qr/Copying a symlink \(\Q$xsymlink\E\) whose target does not exist/,
"fcopy(): Got expected warning when copying from symlink whose target does not exist");
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/File-Copy-Recursive-Reduced-0.006/t/002-dircopy.t new/File-Copy-Recursive-Reduced-0.007/t/002-dircopy.t
--- old/File-Copy-Recursive-Reduced-0.006/t/002-dircopy.t 2018-04-20 02:45:50.000000000 +0200
+++ new/File-Copy-Recursive-Reduced-0.007/t/002-dircopy.t 2023-09-15 14:42:56.000000000 +0200
@@ -281,8 +281,6 @@
# Test
my ($from, $to) = ($old, $tdir2);
- print STDOUT "AAA: 1st: $from\n";
- print STDOUT " 2nd: $to\n";
$rv = dircopy($from, $to);
ok($rv, "dircopy() returned true value");
ok(-d $tdir2, "dircopy(): directory $tdir2 created");
@@ -309,8 +307,6 @@
# Test
my ($from, $to) = ($old, $tdir2);
- print STDOUT "BBB: 1st: $from\n";
- print STDOUT " 2nd: $to\n";
$rv = dircopy($from, $to);
ok(-d $expected, "dircopy(): directory $expected created");
# test for creation of files
@@ -344,8 +340,6 @@
# Test
my ($from, $to) = ($old, $tdir2);
- print STDOUT "CCC: 1st: $from\n";
- print STDOUT " 2nd: $to\n";
$rv = dircopy($from, $to);
ok($rv, "dircopy() returned true value");
ok(-d $expected, "dircopy(): directory $expected created");
@@ -382,13 +376,16 @@
ok(defined $rv, "dircopy() returned defined value");
my %seen = ();
my $wanted = sub {
- unless ($File::Find::name eq $new) {
- $seen{dirs}{$File::Find::name}++ if -d $File::Find::name;
- if (-l $File::Find::name) {
- $seen{symlinks}{$File::Find::name}++;
+ # NOTE: File::Find returns path with forward slashes on Windows
+ # so we need to convert to canonical path before comparing
+ my $name = File::Spec->canonpath($File::Find::name);
+ unless ($name eq $new) {
+ $seen{dirs}{$name}++ if -d $name;
+ if (-l $name) {
+ $seen{symlinks}{$name}++;
}
- elsif (-f $File::Find::name) {
- $seen{files}{$File::Find::name}++;
+ elsif (-f $name) {
+ $seen{files}{$name}++;
}
}
};
@@ -436,13 +433,16 @@
my %seen = ();
my $wanted = sub {
- unless ($File::Find::name eq $new) {
- $seen{dirs}{$File::Find::name}++ if -d $File::Find::name;
- if (-l $File::Find::name) {
- $seen{symlinks}{$File::Find::name}++;
+ # NOTE: File::Find returns path with forward slashes on Windows
+ # so we need to convert to canonical path before comparing
+ my $name = File::Spec->canonpath($File::Find::name);
+ unless ($name eq $new) {
+ $seen{dirs}{$name}++ if -d $name;
+ if (-l $name) {
+ $seen{symlinks}{$name}++;
}
- elsif (-f $File::Find::name) {
- $seen{files}{$File::Find::name}++;
+ elsif (-f $name) {
+ $seen{files}{$name}++;
}
}
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/File-Copy-Recursive-Reduced-0.006/t/003-rcopy.t new/File-Copy-Recursive-Reduced-0.007/t/003-rcopy.t
--- old/File-Copy-Recursive-Reduced-0.006/t/003-rcopy.t 2018-04-20 00:50:58.000000000 +0200
+++ new/File-Copy-Recursive-Reduced-0.007/t/003-rcopy.t 2023-09-15 17:33:34.000000000 +0200
@@ -98,7 +98,7 @@
$stderr = capture_stderr { $rv = rcopy($xsymlink, $xnew); };
ok(defined $rv, "fcopy() returned defined value when copying from symlink");
ok($rv, "fcopy() returned true value when copying from symlink");
- like($stderr, qr/Copying a symlink \($xsymlink\) whose target does not exist/,
+ like($stderr, qr/Copying a symlink \(\Q$xsymlink\E\) whose target does not exist/,
"fcopy(): Got expected warning when copying from symlink whose target does not exist");
}
@@ -507,8 +507,6 @@
# Test
my ($from, $to) = ($old, $tdir2);
- print STDOUT "AAA: 1st: $from\n";
- print STDOUT " 2nd: $to\n";
$rv = rcopy($from, $to);
ok($rv, "rcopy() returned true value");
ok(-d $tdir2, "rcopy(): directory $tdir2 created");
@@ -535,8 +533,6 @@
# Test
my ($from, $to) = ($old, $tdir2);
- print STDOUT "BBB: 1st: $from\n";
- print STDOUT " 2nd: $to\n";
$rv = rcopy($from, $to);
ok(-d $expected, "rcopy(): directory $expected created");
# test for creation of files
@@ -570,8 +566,6 @@
# Test
my ($from, $to) = ($old, $tdir2);
- print STDOUT "CCC: 1st: $from\n";
- print STDOUT " 2nd: $to\n";
$rv = rcopy($from, $to);
ok($rv, "rcopy() returned true value");
ok(-d $expected, "rcopy(): directory $expected created");
@@ -608,13 +602,16 @@
ok(defined $rv, "rcopy() returned defined value");
my %seen = ();
my $wanted = sub {
- unless ($File::Find::name eq $new) {
- $seen{dirs}{$File::Find::name}++ if -d $File::Find::name;
- if (-l $File::Find::name) {
- $seen{symlinks}{$File::Find::name}++;
+ # NOTE: File::Find returns path with forward slashes on Windows
+ # so we need to convert to canonical path before comparing
+ my $name = File::Spec->canonpath($File::Find::name);
+ unless ($name eq $new) {
+ $seen{dirs}{$name}++ if -d $name;
+ if (-l $name) {
+ $seen{symlinks}{$name}++;
}
- elsif (-f $File::Find::name) {
- $seen{files}{$File::Find::name}++;
+ elsif (-f $name) {
+ $seen{files}{$name}++;
}
}
};
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package perl-Test2-Suite for openSUSE:Factory checked in at 2023-09-29 21:12:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Test2-Suite (Old)
and /work/SRC/openSUSE:Factory/.perl-Test2-Suite.new.28202 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Test2-Suite"
Fri Sep 29 21:12:42 2023 rev:35 rq:1114048 version:0.000156
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Test2-Suite/perl-Test2-Suite.changes 2023-05-04 17:09:16.351907566 +0200
+++ /work/SRC/openSUSE:Factory/.perl-Test2-Suite.new.28202/perl-Test2-Suite.changes 2023-09-29 21:12:53.332265809 +0200
@@ -1,0 +2,10 @@
+Thu Sep 14 03:10:33 UTC 2023 - Tina Müller <timueller+perl(a)suse.de>
+
+- updated to 0.000156
+ see /usr/share/doc/packages/perl-Test2-Suite/Changes
+
+ 0.000156 2023-09-13 15:11:52-07:00 America/Los_Angeles
+
+ - Fix typo in POD for Test2::Util::Importer
+
+-------------------------------------------------------------------
Old:
----
Test2-Suite-0.000155.tar.gz
New:
----
Test2-Suite-0.000156.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Test2-Suite.spec ++++++
--- /var/tmp/diff_new_pack.0Blcbk/_old 2023-09-29 21:12:54.448306076 +0200
+++ /var/tmp/diff_new_pack.0Blcbk/_new 2023-09-29 21:12:54.448306076 +0200
@@ -18,7 +18,7 @@
%define cpan_name Test2-Suite
Name: perl-Test2-Suite
-Version: 0.000155
+Version: 0.000156
Release: 0
License: Artistic-1.0 OR GPL-1.0-or-later
Summary: Distribution with a rich set of tools built upon the Test2 framework
++++++ Test2-Suite-0.000155.tar.gz -> Test2-Suite-0.000156.tar.gz ++++++
++++ 1977 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package perl-GD-Barcode for openSUSE:Factory checked in at 2023-09-29 21:12:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-GD-Barcode (Old)
and /work/SRC/openSUSE:Factory/.perl-GD-Barcode.new.28202 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-GD-Barcode"
Fri Sep 29 21:12:38 2023 rev:17 rq:1114046 version:2.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-GD-Barcode/perl-GD-Barcode.changes 2011-11-18 15:47:30.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.perl-GD-Barcode.new.28202/perl-GD-Barcode.changes 2023-09-29 21:12:51.352194368 +0200
@@ -1,0 +2,22 @@
+Thu Sep 14 03:06:15 UTC 2023 - Tina Müller <timueller+perl(a)suse.de>
+
+- updated to 2.00
+ see /usr/share/doc/packages/perl-GD-Barcode/Changes
+
+ 2.00 2023-09-13
+ - 'Production' release, no changes to 1.99_03
+ 1.99_03 2022-01-10 (DEVELOPMENT RELEASE)
+ - Fix cpantesters test for Business::ISBN failing
+ seemingly because of broken version of Business::ISBN:
+ require Business::ISBN 3.007 or later
+ 1.99_02 2021-12-20 (DEVELOPMENT RELEASE)
+ - Fix issue with Code39 barcodes that prevent rendering white
+ background in some cases by Boris Zentner
+ - Add unit tests
+ - Modernize code
+ 1.99_01 2016-10-23 (DEVELOPMENT RELEASE)
+ - Moved modules to lib/
+ - Specified correct dependencies.
+ - Fixed RT#20297 - Auto-size with 'Version'.
+
+-------------------------------------------------------------------
Old:
----
GD-Barcode-1.15.tar.gz
New:
----
GD-Barcode-2.00.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-GD-Barcode.spec ++++++
--- /var/tmp/diff_new_pack.8fkbb8/_old 2023-09-29 21:12:52.568238243 +0200
+++ /var/tmp/diff_new_pack.8fkbb8/_new 2023-09-29 21:12:52.568238243 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-GD-Barcode
#
-# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,25 +12,39 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
-
-Name: perl-GD-Barcode
-Version: 1.15
-Release: 1
-License: GPL-1.0+ or Artistic-1.0
%define cpan_name GD-Barcode
+Name: perl-GD-Barcode
+Version: 2.0.0
+Release: 0
+%define cpan_version 2.00
+License: Artistic-1.0 OR GPL-1.0-or-later
Summary: Create barcode image with GD
-Url: http://search.cpan.org/dist/GD-Barcode/
-Group: Development/Libraries/Perl
-Source: http://www.cpan.org/authors/id/K/KW/KWITKNR/%{cpan_name}-%{version}.tar.gz
+URL: https://metacpan.org/release/%{cpan_name}
+Source0: https://cpan.metacpan.org/authors/id/M/MI/MICHIELB/%{cpan_name}-%{cpan_vers…
BuildArch: noarch
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: perl
BuildRequires: perl-macros
-BuildRequires: perl(GD)
+BuildRequires: perl(Test2::V0) >= 0.000060
+BuildRequires: perl(parent)
+Requires: perl(parent)
+Provides: perl(GD::Barcode) = 2.0.0
+Provides: perl(GD::Barcode::COOP2of5) = 2.0.0
+Provides: perl(GD::Barcode::Code39) = 2.0.0
+Provides: perl(GD::Barcode::EAN13) = 2.0.0
+Provides: perl(GD::Barcode::EAN8) = 2.0.0
+Provides: perl(GD::Barcode::IATA2of5) = 2.0.0
+Provides: perl(GD::Barcode::ITF) = 2.0.0
+Provides: perl(GD::Barcode::Industrial2of5) = 2.0.0
+Provides: perl(GD::Barcode::Matrix2of5) = 2.0.0
+Provides: perl(GD::Barcode::NW7) = 2.0.0
+Provides: perl(GD::Barcode::QRcode) = 2.0.0
+Provides: perl(GD::Barcode::UPCA) = 2.0.0
+Provides: perl(GD::Barcode::UPCE) = 2.0.0
+%define __perllib_provides /bin/true
%{perl_requires}
%description
@@ -41,14 +55,14 @@
From 1.14, you can use this module even if no GD (except plot method).
%prep
-%setup -q -n %{cpan_name}-%{version}
+%autosetup -n %{cpan_name}-%{cpan_version}
%build
-%{__perl} Makefile.PL INSTALLDIRS=vendor
-%{__make} %{?_smp_mflags}
+perl Makefile.PL INSTALLDIRS=vendor
+%make_build
%check
-%{__make} test
+make test
%install
%perl_make_install
@@ -56,6 +70,5 @@
%perl_gen_filelist
%files -f %{name}.files
-%defattr(-,root,root,755)
%doc Changes README
++++++ GD-Barcode-1.15.tar.gz -> GD-Barcode-2.00.tar.gz ++++++
++++ 16110 lines of diff (skipped)
1
0