openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 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
December 2021
- 1 participants
- 2461 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-charset-normalizer for openSUSE:Factory checked in at 2021-12-01 20:46:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-charset-normalizer (Old)
and /work/SRC/openSUSE:Factory/.python-charset-normalizer.new.31177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-charset-normalizer"
Wed Dec 1 20:46:49 2021 rev:9 rq:934519 version:2.0.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-charset-normalizer/python-charset-normalizer.changes 2021-10-27 22:21:17.695201405 +0200
+++ /work/SRC/openSUSE:Factory/.python-charset-normalizer.new.31177/python-charset-normalizer.changes 2021-12-02 02:22:34.933166895 +0100
@@ -1,0 +2,28 @@
+Mon Nov 29 11:14:37 UTC 2021 - Dirk M��ller <dmueller(a)suse.com>
+
+- update to 2.0.8:
+ * Improvement over Vietnamese detection
+ * MD improvement on trailing data and long foreign (non-pure latin)
+ * Efficiency improvements in cd/alphabet_languages
+ * call sum() without an intermediary list following PEP 289 recommendations
+ * Code style as refactored by Sourcery-AI
+ * Minor adjustment on the MD around european words
+ * Remove and replace SRTs from assets / tests
+ * Initialize the library logger with a `NullHandler` by default
+ * Setting kwarg `explain` to True will add provisionally
+ * Fix large (misleading) sequence giving UnicodeDecodeError
+ * Avoid using too insignificant chunk
+ * Add and expose function `set_logging_handler` to configure a specific
+ StreamHandler
+
+-------------------------------------------------------------------
+Fri Nov 26 11:35:25 UTC 2021 - Dirk M��ller <dmueller(a)suse.com>
+
+- require lower-case name instead of breaking build
+
+-------------------------------------------------------------------
+Thu Nov 25 22:26:52 UTC 2021 - Matej Cepl <mcepl(a)suse.com>
+
+- Use lower-case name of prettytable package
+
+-------------------------------------------------------------------
Old:
----
charset_normalizer-2.0.7.tar.gz
New:
----
charset_normalizer-2.0.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-charset-normalizer.spec ++++++
--- /var/tmp/diff_new_pack.CSZ0ro/_old 2021-12-02 02:22:35.293165639 +0100
+++ /var/tmp/diff_new_pack.CSZ0ro/_new 2021-12-02 02:22:35.293165639 +0100
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-charset-normalizer
-Version: 2.0.7
+Version: 2.0.8
Release: 0
Summary: Python Universal Charset detector
License: MIT
@@ -28,10 +28,10 @@
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires: python-PrettyTable
Requires: python-cached-property >= 1.5
Requires: python-dragonmapper >= 0.2
Requires: python-loguru >= 0.5
+Requires: python-prettytable
Requires: python-zhon
Requires(post): update-alternatives
Requires(postun):update-alternatives
@@ -40,7 +40,7 @@
Suggests: python-unicodedata2
BuildArch: noarch
# SECTION test requirements
-BuildRequires: %{python_module PrettyTable}
+BuildRequires: %{python_module prettytable}
BuildRequires: %{python_module cached-property >= 1.5}
BuildRequires: %{python_module dragonmapper >= 0.2}
BuildRequires: %{python_module loguru >= 0.5}
++++++ charset_normalizer-2.0.7.tar.gz -> charset_normalizer-2.0.8.tar.gz ++++++
++++ 48270 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-bashate for openSUSE:Factory checked in at 2021-11-29 17:28:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-bashate (Old)
and /work/SRC/openSUSE:Factory/.python-bashate.new.31177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-bashate"
Mon Nov 29 17:28:34 2021 rev:7 rq:934508 version:2.1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-bashate/python-bashate.changes 2021-01-28 21:29:13.476266801 +0100
+++ /work/SRC/openSUSE:Factory/.python-bashate.new.31177/python-bashate.changes 2021-12-02 02:22:26.697195625 +0100
@@ -1,0 +2,24 @@
+Mon Nov 29 10:49:10 UTC 2021 - Dirk M��ller <dmueller(a)suse.com>
+
+- update to 2.1.0:
+ * Update IRC network to OFTC
+ * Fix doc job
+ * Switch testing to Xena testing runtime
+ * [CI] Make bashate-devstack job voting and gating
+ * setup.cfg: Replace dashes with underscores
+ * Add ensure-tox role to test job
+ * Changed minversion in tox to 3.18.0
+ * remove unicode from code
+ * Add Python3 wallaby unit tests
+ * Create tox environment to build pdf documentation
+ * Remove obsolete files
+ * drop mock from lower-constraints and requirements
+ * Stop to use the \_\_future\_\_ module
+ * Switch to newer openstackdocstheme and reno versions
+ * Fix hacking min version to 3.0.1
+ * Switch testing to Victoria testing runtime
+ * [ussuri][goal] Update contributor documentation
+ * Cleanup py27 support
+ * Update hacking for Python3
+
+-------------------------------------------------------------------
Old:
----
bashate-2.0.0.tar.gz
New:
----
bashate-2.1.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-bashate.spec ++++++
--- /var/tmp/diff_new_pack.wzLq9H/_old 2021-12-02 02:22:27.101194216 +0100
+++ /var/tmp/diff_new_pack.wzLq9H/_new 2021-12-02 02:22:27.105194202 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-bashate
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%global skip_python2 1
Name: python-bashate
-Version: 2.0.0
+Version: 2.1.0
Release: 0
Summary: A PEP8 equivalent for bash scripts
License: Apache-2.0
@@ -38,7 +38,7 @@
Requires: python-Babel >= 0.9.6
Requires: python-pbr
Requires(post): update-alternatives
-Requires(postun): update-alternatives
+Requires(postun):update-alternatives
BuildArch: noarch
%ifpython2
Requires: python-argparse
++++++ bashate-2.0.0.tar.gz -> bashate-2.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/.zuul.d/jobs.yaml new/bashate-2.1.0/.zuul.d/jobs.yaml
--- old/bashate-2.0.0/.zuul.d/jobs.yaml 2020-03-04 02:04:53.000000000 +0100
+++ new/bashate-2.1.0/.zuul.d/jobs.yaml 2021-09-13 10:22:06.000000000 +0200
@@ -1,13 +1,15 @@
- project:
templates:
- openstack-python35-jobs
- - openstack-python3-ussuri-jobs
+ - openstack-python3-xena-jobs
- publish-openstack-docs-pti
- release-notes-jobs-python3
check:
jobs:
- - bashate-devstack:
- voting: false
+ - bashate-devstack
+ gate:
+ jobs:
+ - bashate-devstack
- job:
name: bashate-devstack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/AUTHORS new/bashate-2.1.0/AUTHORS
--- old/bashate-2.0.0/AUTHORS 2020-03-04 02:05:44.000000000 +0100
+++ new/bashate-2.1.0/AUTHORS 2021-09-13 10:23:12.000000000 +0200
@@ -10,14 +10,18 @@
Dirk Mueller <dirk(a)dmllr.de>
Doug Hellmann <doug(a)doughellmann.com>
Ghanshyam Mann <gmann(a)ghanshyammann.com>
+Herv�� Beraud <hberaud(a)redhat.com>
Ian Wienand <iwienand(a)redhat.com>
Ihar Hrachyshka <ihrachys(a)redhat.com>
James E. Blair <jeblair(a)redhat.com>
+Jens Harbott <j.harbott(a)x-ion.de>
Jeremy Stanley <fungi(a)yuggoth.org>
Joe Gordon <joe.gordon0(a)gmail.com>
K Jonathan Harker <k.jonathan.harker(a)hp.com>
Le Hou <houl7(a)chinaunicom.cn>
Longgeek <longgeek(a)thstack.com>
+Lukas Piwowarski <lpiwowar(a)redhat.com>
+Martin Kopec <mkopec(a)redhat.com>
Masayuki Igawa <masayuki(a)igawa.io>
Mathew Odden <locke105(a)gmail.com>
Mathew Odden <mrodden(a)us.ibm.com>
@@ -25,6 +29,7 @@
Monty Taylor <mordred(a)inaugust.com>
Nikki Heald <nicky(a)notnowlewis.com>
Paul Belanger <pabelanger(a)redhat.com>
+Rados��aw Piliszek <radoslaw.piliszek(a)gmail.com>
Riccardo Pittau <rpittau(a)blizzard.com>
Ryan Selden <ryanx.seldon(a)intel.com>
Sean Dague <sdague(a)linux.vnet.ibm.com>
@@ -40,7 +45,10 @@
Tristan Cacqueray <tristan.cacqueray(a)enovance.com>
Vieri <15050873171(a)163.com>
William Huang <pyhex2dec(a)gmail.com>
+Yandong Xuan <xuanyandong(a)inspur.com>
+manchandavishal <manchandavishal143(a)gmail.com>
nizam <abdul.nizamuddin(a)nectechnologies.in>
qingszhao <zhao.daqing(a)99cloud.net>
sonu.kumar <sonu.kumar(a)nectechnologies.in>
+tushargite96 <tushargite96(a)gmail.com>
xuanyandong <xuanyandong(a)inspur.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/CONTRIBUTING.rst new/bashate-2.1.0/CONTRIBUTING.rst
--- old/bashate-2.0.0/CONTRIBUTING.rst 2020-03-04 02:04:53.000000000 +0100
+++ new/bashate-2.1.0/CONTRIBUTING.rst 2021-09-13 10:22:06.000000000 +0200
@@ -1,13 +1,19 @@
-If you would like to contribute to the development of OpenStack,
-you must follow the steps in this page:
-http://docs.openstack.org/infra/manual/developers.html
-
-Once those steps have been completed, changes to OpenStack
-should be submitted for review via the Gerrit tool, following
-the workflow documented at:
-http://docs.openstack.org/infra/manual/developers.html#development-workflow
+The source repository for this project can be found at:
-Pull requests submitted through GitHub will be ignored.
+ https://opendev.org/openstack/bashate
-Bugs should be filed on Launchpad, not GitHub:
-https://bugs.launchpad.net/bash8
+Pull requests submitted through GitHub are not monitored.
+
+To start contributing to OpenStack, follow the steps in the contribution guide
+to set up and use Gerrit:
+
+ https://docs.openstack.org/contributors/code-and-documentation/quick-start.…
+
+Bugs should be filed on Launchpad:
+
+ https://bugs.launchpad.net/bash8
+
+For more specific information about contributing to this repository, see the
+Bashate contributor guide:
+
+ https://docs.openstack.org/bashate/latest/contributor/contributing.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/ChangeLog new/bashate-2.1.0/ChangeLog
--- old/bashate-2.0.0/ChangeLog 2020-03-04 02:05:44.000000000 +0100
+++ new/bashate-2.1.0/ChangeLog 2021-09-13 10:23:12.000000000 +0200
@@ -1,6 +1,29 @@
CHANGES
=======
+2.1.0
+-----
+
+* Update IRC network to OFTC
+* Fix doc job
+* Switch testing to Xena testing runtime
+* [CI] Make bashate-devstack job voting and gating
+* setup.cfg: Replace dashes with underscores
+* Add ensure-tox role to test job
+* Changed minversion in tox to 3.18.0
+* remove unicode from code
+* Add Python3 wallaby unit tests
+* Create tox environment to build pdf documentation
+* Remove obsolete files
+* drop mock from lower-constraints and requirements
+* Stop to use the \_\_future\_\_ module
+* Switch to newer openstackdocstheme and reno versions
+* Fix hacking min version to 3.0.1
+* Switch testing to Victoria testing runtime
+* [ussuri][goal] Update contributor documentation
+* Cleanup py27 support
+* Update hacking for Python3
+
2.0.0
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/PKG-INFO new/bashate-2.1.0/PKG-INFO
--- old/bashate-2.0.0/PKG-INFO 2020-03-04 02:05:44.000000000 +0100
+++ new/bashate-2.1.0/PKG-INFO 2021-09-13 10:23:12.915040300 +0200
@@ -1,8 +1,8 @@
Metadata-Version: 1.2
Name: bashate
-Version: 2.0.0
+Version: 2.1.0
Summary: A pep8 equivalent for bash scripts
-Home-page: http://docs.openstack.org/developer/bashate/
+Home-page: https://docs.openstack.org/bashate/latest/
Author: OpenStack
Author-email: openstack-discuss(a)lists.openstack.org
License: UNKNOWN
@@ -75,8 +75,11 @@
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: Implementation :: CPython
+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
Requires-Python: >=3.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/babel.cfg new/bashate-2.1.0/babel.cfg
--- old/bashate-2.0.0/babel.cfg 2020-03-04 02:04:53.000000000 +0100
+++ new/bashate-2.1.0/babel.cfg 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-[python: **.py]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/bashate/bashate.py new/bashate-2.1.0/bashate/bashate.py
--- old/bashate-2.0.0/bashate/bashate.py 2020-03-04 02:04:53.000000000 +0100
+++ new/bashate-2.1.0/bashate/bashate.py 2021-09-13 10:22:06.000000000 +0200
@@ -12,8 +12,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-from __future__ import absolute_import
-
import argparse
import fileinput
import os
@@ -29,33 +27,33 @@
def is_continuation(line):
- return re.search('\\\\\s*$', line)
+ return re.search(r'\\\s*$', line)
def check_for_do(line, report):
if not is_continuation(line):
- match = re.match('^\s*(for|while|until)\s', line)
+ match = re.match(r'^\s*(for|while|until)\s', line)
if match:
operator = match.group(1).strip()
if operator == "for":
# "for i in ..." and "for ((" is bash, but
# "for (" is likely from an embedded awk script,
# so skip it
- if re.search('for \([^\(]', line):
+ if re.search(r'for \([^\(]', line):
return
- if not re.search(';\s*do$', line):
+ if not re.search(r';\s*do$', line):
report.print_error((MESSAGES['E010'].msg % operator), line)
def check_if_then(line, report):
if not is_continuation(line):
- if re.search('^\s*(el)?if \[', line):
- if not re.search(';\s*then$', line):
+ if re.search(r'^\s*(el)?if \[', line):
+ if not re.search(r';\s*then$', line):
report.print_error(MESSAGES['E011'].msg, line)
def check_no_trailing_whitespace(line, report):
- if re.search('[ \t]+$', line):
+ if re.search(r'[ \t]+$', line):
report.print_error(MESSAGES['E001'].msg, line)
@@ -74,7 +72,7 @@
# Find the offset of the first argument of the command (if it has
# one)
- m = re.search('^(?P<indent>[ \t]+)?(?P<cmd>\S+)(?P<ws>\s+)(?P<arg>\S+)',
+ m = re.search(r'^(?P<indent>[ \t]+)?(?P<cmd>\S+)(?P<ws>\s+)(?P<arg>\S+)',
logical_line[0])
arg_offset = None
if m:
@@ -83,10 +81,10 @@
# go through each line
for lineno, line in enumerate(logical_line):
- m = re.search('^(?P<indent>[ \t]+)', line)
+ m = re.search(r'^(?P<indent>[ \t]+)', line)
if m:
# no tabs, only spaces
- if re.search('\t', m.group('indent')):
+ if re.search(r'\t', m.group('indent')):
report.print_error(MESSAGES['E002'].msg, line)
offset = len(m.group('indent'))
@@ -106,12 +104,12 @@
def check_function_decl(line, report):
failed = False
if line.startswith("function"):
- if not re.search('^function [\w-]* \{$', line):
+ if not re.search(r'^function [\w-]* \{$', line):
failed = True
else:
# catch the case without "function", e.g.
# things like '^foo() {'
- if re.search('^\s*?\(\)\s*?\{', line):
+ if re.search(r'^\s*?\(\)\s*?\{', line):
failed = True
if failed:
@@ -121,12 +119,12 @@
def starts_heredoc(line):
# note, watch out for <<EOF and <<'EOF' ; quotes in the
# deliminator are part of syntax
- m = re.search("[^<]<<\s*([\'\"]?)(?P<token>\w+)([\'\"]?)", line)
+ m = re.search(r"[^<]<<\s*([\'\"]?)(?P<token>\w+)([\'\"]?)", line)
return m.group('token') if m else False
def end_of_heredoc(line, token):
- return token and re.search("^%s\s*$" % token, line)
+ return token and re.search(r"^%s\s*$" % token, line)
def check_arithmetic(line, report):
@@ -152,7 +150,7 @@
# maybe this should check for shell?
if (not filename.endswith(".sh") and not line.startswith("#!") and
not os.path.basename(filename).startswith('.')):
- report.print_error(MESSAGES['E005'].msg, line)
+ report.print_error(MESSAGES['E005'].msg, line)
def check_conditional_expression(line, report):
@@ -473,5 +471,6 @@
return 0
+
if __name__ == "__main__":
sys.exit(main())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/bashate/tests/test_bashate.py new/bashate-2.1.0/bashate/tests/test_bashate.py
--- old/bashate-2.0.0/bashate/tests/test_bashate.py 2020-03-04 02:04:53.000000000 +0100
+++ new/bashate-2.1.0/bashate/tests/test_bashate.py 2021-09-13 10:22:06.000000000 +0200
@@ -17,7 +17,7 @@
Tests for `bashate` module.
"""
-import mock
+from unittest import mock
from bashate import bashate
from bashate import messages
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/bashate.egg-info/PKG-INFO new/bashate-2.1.0/bashate.egg-info/PKG-INFO
--- old/bashate-2.0.0/bashate.egg-info/PKG-INFO 2020-03-04 02:05:44.000000000 +0100
+++ new/bashate-2.1.0/bashate.egg-info/PKG-INFO 2021-09-13 10:23:12.000000000 +0200
@@ -1,8 +1,8 @@
Metadata-Version: 1.2
Name: bashate
-Version: 2.0.0
+Version: 2.1.0
Summary: A pep8 equivalent for bash scripts
-Home-page: http://docs.openstack.org/developer/bashate/
+Home-page: https://docs.openstack.org/bashate/latest/
Author: OpenStack
Author-email: openstack-discuss(a)lists.openstack.org
License: UNKNOWN
@@ -75,8 +75,11 @@
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: Implementation :: CPython
+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
Requires-Python: >=3.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/bashate.egg-info/SOURCES.txt new/bashate-2.1.0/bashate.egg-info/SOURCES.txt
--- old/bashate-2.0.0/bashate.egg-info/SOURCES.txt 2020-03-04 02:05:44.000000000 +0100
+++ new/bashate-2.1.0/bashate.egg-info/SOURCES.txt 2021-09-13 10:23:12.000000000 +0200
@@ -8,9 +8,7 @@
HACKING.rst
LICENSE
README.rst
-babel.cfg
bindep.txt
-openstack-common.conf
requirements.txt
setup.cfg
setup.py
@@ -56,9 +54,11 @@
bashate/tests/samples/for_loops.sh
bashate/tests/samples/heredoc_ignore.sh
bashate/tests/samples/legacy_sample.sh
+doc/requirements.txt
doc/source/conf.py
doc/source/index.rst
doc/source/readme.rst
+doc/source/contributor/contributing.rst
doc/source/contributor/index.rst
doc/source/install/index.rst
doc/source/man/bashate.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/bashate.egg-info/pbr.json new/bashate-2.1.0/bashate.egg-info/pbr.json
--- old/bashate-2.0.0/bashate.egg-info/pbr.json 2020-03-04 02:05:44.000000000 +0100
+++ new/bashate-2.1.0/bashate.egg-info/pbr.json 2021-09-13 10:23:12.000000000 +0200
@@ -1 +1 @@
-{"git_version": "349e45c", "is_release": true}
\ No newline at end of file
+{"git_version": "8f9b2fb", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/bashate.egg-info/requires.txt new/bashate-2.1.0/bashate.egg-info/requires.txt
--- old/bashate-2.0.0/bashate.egg-info/requires.txt 2020-03-04 02:05:44.000000000 +0100
+++ new/bashate-2.1.0/bashate.egg-info/requires.txt 2021-09-13 10:23:12.000000000 +0200
@@ -1,2 +1 @@
pbr!=2.1.0,>=2.0.0
-Babel!=2.4.0,>=2.3.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/bindep.txt new/bashate-2.1.0/bindep.txt
--- old/bashate-2.0.0/bindep.txt 2020-03-04 02:04:53.000000000 +0100
+++ new/bashate-2.1.0/bindep.txt 2021-09-13 10:22:06.000000000 +0200
@@ -1,2 +1,4 @@
# This is a cross-platform list tracking distribution packages needed by tests;
# see http://docs.openstack.org/infra/bindep/ for additional information.
+# PDF Docs package dependencies
+tex-gyre [doc platform:dpkg]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/doc/requirements.txt new/bashate-2.1.0/doc/requirements.txt
--- old/bashate-2.0.0/doc/requirements.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/bashate-2.1.0/doc/requirements.txt 2021-09-13 10:22:06.000000000 +0200
@@ -0,0 +1,7 @@
+# The order of packages is significant, because pip processes them in the order
+# of appearance. Changing the order has an impact on the overall integration
+# process, which may cause wedges in the gate later.
+
+sphinx>=2.0.0,!=2.1.0 # BSD
+openstackdocstheme>=2.2.1 # Apache-2.0
+reno>=3.1.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/doc/source/conf.py new/bashate-2.1.0/doc/source/conf.py
--- old/bashate-2.0.0/doc/source/conf.py 2020-03-04 02:04:53.000000000 +0100
+++ new/bashate-2.1.0/doc/source/conf.py 2021-09-13 10:22:06.000000000 +0200
@@ -37,8 +37,8 @@
master_doc = 'index'
# General information about the project.
-project = u'bashate'
-copyright = u'2017, Bashate Authors'
+project = 'bashate'
+copyright = '2017, Bashate Authors'
# If true, '()' will be appended to :func: etc. cross-reference text.
add_function_parentheses = True
@@ -48,18 +48,19 @@
add_module_names = True
# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
+pygments_style = 'native'
# openstackdocstheme options
-repository_name = 'openstack-dev/bashate'
-bug_project = 'bashate'
-bug_tag = ''
+openstackdocs_repo_name = 'openstack-dev/bashate'
+openstackdocs_bug_project = 'bashate'
+openstackdocs_bug_tag = ''
+openstackdocs_pdf_link = True
# Grouping the document tree for man pages.
-# List of tuples 'sourcefile', 'target', u'title', u'Authors name', 'manual'
+# List of tuples 'sourcefile', 'target', 'title', 'Authors name', 'manual'
man_pages = [
- ('man/bashate', 'bashate', u'Style checker for bash scripts',
- [u'OpenStack Foundation'], 1),
+ ('man/bashate', 'bashate', 'Style checker for bash scripts',
+ ['OpenStack Foundation'], 1),
]
@@ -75,20 +76,19 @@
# Output file base name for HTML help builder.
htmlhelp_basename = '%sdoc' % project
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-# html_last_updated_fmt = '%b %d, %Y'
-html_last_updated_fmt = '%Y-%m-%d %H:%M'
-
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass
# [howto/manual]).
latex_documents = [
('index',
- '%s.tex' % project,
- u'%s Documentation' % project,
- u'Bashate Authors', 'manual'),
+ 'doc-%s.tex' % project,
+ 'Bashate Documentation',
+ 'Bashate Authors', 'manual'),
]
# Example configuration for intersphinx: refer to the Python standard library.
#intersphinx_mapping = {'http://docs.python.org/': None}
+latex_use_xindy = False
+latex_elements = {
+ 'extraclassoptions': 'openany,oneside',
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/doc/source/contributor/contributing.rst new/bashate-2.1.0/doc/source/contributor/contributing.rst
--- old/bashate-2.0.0/doc/source/contributor/contributing.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/bashate-2.1.0/doc/source/contributor/contributing.rst 2021-09-13 10:22:06.000000000 +0200
@@ -0,0 +1,53 @@
+============================
+So You Want to Contribute...
+============================
+
+For general information on contributing to OpenStack, please check out the
+`contributor guide <https://docs.openstack.org/contributors/>`_ to get started.
+It covers all the basics that are common to all OpenStack projects: the accounts
+you need, the basics of interacting with our Gerrit review system, how we
+communicate as a community, etc.
+
+Below will cover the more project specific information you need to get started
+with Bashate.
+
+Communication
+~~~~~~~~~~~~~
+* IRC channel ``#openstack-qa`` at OFTC
+* Mailing list (prefix subjects with ``[qa]`` for faster responses)
+ http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-discuss
+
+Contacting the Core Team
+~~~~~~~~~~~~~~~~~~~~~~~~
+Please refer to the `Bashate Core Team
+<https://review.opendev.org/#/admin/groups/333,members>`_ contacts.
+
+New Feature Planning
+~~~~~~~~~~~~~~~~~~~~
+If you want to propose a new feature please read `Feature Proposal Process`_
+
+Task Tracking
+~~~~~~~~~~~~~
+We track our tasks in `Launchpad <https://bugs.launchpad.net/bash8>`__.
+
+Reporting a Bug
+~~~~~~~~~~~~~~~
+You found an issue and want to make sure we are aware of it? You can do so on
+`Launchpad <https://bugs.launchpad.net/bash8/+filebug>`__.
+More info about Launchpad usage can be found on `OpenStack docs page
+<https://docs.openstack.org/contributors/common/task-tracking.html#launchpad>`_
+
+Getting Your Patch Merged
+~~~~~~~~~~~~~~~~~~~~~~~~~
+All changes proposed to the Bashate requires single ``Code-Review +2`` votes as minimum from
+Bashate core reviewers who can approve patch by giving ``Workflow +1`` vote.
+
+Project Team Lead Duties
+~~~~~~~~~~~~~~~~~~~~~~~~
+All common PTL duties are enumerated in the `PTL guide
+<https://docs.openstack.org/project-team-guide/ptl.html>`_.
+
+The Release Process for QA is documented in `QA Release Process
+<https://wiki.openstack.org/wiki/QA/releases>`_.
+
+.. _Feature Proposal Process: https://wiki.openstack.org/wiki/QA#Feature_Proposal_.26_Design_discussions
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/doc/source/contributor/index.rst new/bashate-2.1.0/doc/source/contributor/index.rst
--- old/bashate-2.0.0/doc/source/contributor/index.rst 2020-03-04 02:04:53.000000000 +0100
+++ new/bashate-2.1.0/doc/source/contributor/index.rst 2021-09-13 10:22:06.000000000 +0200
@@ -1,4 +1,8 @@
============
Contributing
============
-.. include:: ../../../CONTRIBUTING.rst
+
+.. toctree::
+ :maxdepth: 2
+
+ contributing.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/doc/source/index.rst new/bashate-2.1.0/doc/source/index.rst
--- old/bashate-2.0.0/doc/source/index.rst 2020-03-04 02:04:53.000000000 +0100
+++ new/bashate-2.1.0/doc/source/index.rst 2021-09-13 10:22:06.000000000 +0200
@@ -2,8 +2,6 @@
Welcome to bashate's documentation!
===================================
-Contents:
-
.. toctree::
:maxdepth: 2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/doc/source/user/index.rst new/bashate-2.1.0/doc/source/user/index.rst
--- old/bashate-2.0.0/doc/source/user/index.rst 2020-03-04 02:04:53.000000000 +0100
+++ new/bashate-2.1.0/doc/source/user/index.rst 2021-09-13 10:22:06.000000000 +0200
@@ -2,9 +2,6 @@
Using bashate
=============
-
-Contents:
-
.. toctree::
:maxdepth: 2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/openstack-common.conf new/bashate-2.1.0/openstack-common.conf
--- old/bashate-2.0.0/openstack-common.conf 2020-03-04 02:04:53.000000000 +0100
+++ new/bashate-2.1.0/openstack-common.conf 1970-01-01 01:00:00.000000000 +0100
@@ -1,6 +0,0 @@
-[DEFAULT]
-
-# The list of modules to copy from oslo-incubator.git
-
-# The base module to hold the copy of openstack.common
-base=bashate
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/playbooks/bashate-devstack-master/run.yaml new/bashate-2.1.0/playbooks/bashate-devstack-master/run.yaml
--- old/bashate-2.0.0/playbooks/bashate-devstack-master/run.yaml 2020-03-04 02:04:53.000000000 +0100
+++ new/bashate-2.1.0/playbooks/bashate-devstack-master/run.yaml 2021-09-13 10:22:06.000000000 +0200
@@ -2,6 +2,8 @@
name: Run bashate against devstack master
roles:
- bindep
+ - role: ensure-tox
+ ensure_global_symlinks: true
tasks:
- shell: 'tox -e bashate'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/releasenotes/source/conf.py new/bashate-2.1.0/releasenotes/source/conf.py
--- old/bashate-2.0.0/releasenotes/source/conf.py 2020-03-04 02:04:53.000000000 +0100
+++ new/bashate-2.1.0/releasenotes/source/conf.py 2021-09-13 10:22:06.000000000 +0200
@@ -55,8 +55,8 @@
master_doc = 'index'
# General information about the project.
-project = u'Bashate Release Notes'
-copyright = u'2017, Bashate Developers'
+project = 'Bashate Release Notes'
+copyright = '2017, Bashate Developers'
# Release notes are version independent
# The full version, including alpha/beta/rc tags.
@@ -94,7 +94,7 @@
# show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
+pygments_style = 'native'
# A list of ignored prefixes for module index sorting.
# modindex_common_prefix = []
@@ -103,9 +103,10 @@
# keep_warnings = False
# openstackdocstheme options
-repository_name = 'openstack-dev/bashate'
-bug_project = 'bashate'
-bug_tag = ''
+openstackdocs_repo_name = 'openstack-dev/bashate'
+openstackdocs_bug_project = 'bashate'
+openstackdocs_bug_tag = ''
+openstackdocs_auto_name = False
# -- Options for HTML output ----------------------------------------------
@@ -147,11 +148,6 @@
# directly to the root of the documentation.
# html_extra_path = []
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-# html_last_updated_fmt = '%b %d, %Y'
-html_last_updated_fmt = '%Y-%m-%d %H:%M'
-
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
# html_use_smartypants = True
@@ -211,8 +207,8 @@
# author, documentclass [howto, manual, or own class]).
latex_documents = [
('index', 'BashateReleaseNotes.tex',
- u'Bashate Release Notes Documentation',
- u'Bashate Developers', 'manual'),
+ 'Bashate Release Notes Documentation',
+ 'Bashate Developers', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
@@ -241,8 +237,8 @@
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
- ('index', 'bashatereleasenotes', u'Bashate Release Notes Documentation',
- [u'Bashate Developers'], 1)
+ ('index', 'bashatereleasenotes', 'Bashate Release Notes Documentation',
+ ['Bashate Developers'], 1)
]
# If true, show URL addresses after external links.
@@ -255,8 +251,8 @@
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
- ('index', 'BashateReleaseNotes', u'Bashate Release Notes Documentation',
- u'Bashate Developers', 'BashateReleaseNotes',
+ ('index', 'BashateReleaseNotes', 'Bashate Release Notes Documentation',
+ 'Bashate Developers', 'BashateReleaseNotes',
'Style Checker for Bash.',
'Miscellaneous'),
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/requirements.txt new/bashate-2.1.0/requirements.txt
--- old/bashate-2.0.0/requirements.txt 2020-03-04 02:04:53.000000000 +0100
+++ new/bashate-2.1.0/requirements.txt 2021-09-13 10:22:06.000000000 +0200
@@ -3,4 +3,3 @@
# process, which may cause wedges in the gate later.
pbr!=2.1.0,>=2.0.0 # Apache-2.0
-Babel!=2.4.0,>=2.3.4 # BSD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/setup.cfg new/bashate-2.1.0/setup.cfg
--- old/bashate-2.0.0/setup.cfg 2020-03-04 02:05:44.000000000 +0100
+++ new/bashate-2.1.0/setup.cfg 2021-09-13 10:23:12.915040300 +0200
@@ -1,12 +1,12 @@
[metadata]
name = bashate
summary = A pep8 equivalent for bash scripts
-description-file =
+description_file =
README.rst
author = OpenStack
-author-email = openstack-discuss(a)lists.openstack.org
-home-page = http://docs.openstack.org/developer/bashate/
-python-requires = >=3.5
+author_email = openstack-discuss(a)lists.openstack.org
+home_page = https://docs.openstack.org/bashate/latest/
+python_requires = >=3.5
classifier =
Environment :: OpenStack
Intended Audience :: Information Technology
@@ -14,10 +14,13 @@
License :: OSI Approved :: Apache Software License
Operating System :: POSIX :: Linux
Programming Language :: Python
+ Programming Language :: Python :: Implementation :: CPython
+ 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
[files]
packages =
@@ -27,29 +30,6 @@
console_scripts =
bashate = bashate.bashate:main
-[build_sphinx]
-source-dir = doc/source
-build-dir = doc/build
-all_files = 1
-warning-is-error = 1
-
-[upload_sphinx]
-upload-dir = doc/build/html
-
-[compile_catalog]
-directory = bashate/locale
-domain = bashate
-
-[update_catalog]
-domain = bashate
-output_dir = bashate/locale
-input_file = bashate/locale/bashate.pot
-
-[extract_messages]
-keywords = _ gettext ngettext l_ lazy_gettext
-mapping_file = babel.cfg
-output_file = bashate/locale/bashate.pot
-
[egg_info]
tag_build =
tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/setup.py new/bashate-2.1.0/setup.py
--- old/bashate-2.0.0/setup.py 2020-03-04 02:04:53.000000000 +0100
+++ new/bashate-2.1.0/setup.py 2021-09-13 10:22:06.000000000 +0200
@@ -13,17 +13,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
import setuptools
-# In python < 2.7.4, a lazy loading of package `pbr` will break
-# setuptools if some other modules registered functions in `atexit`.
-# solution from: http://bugs.python.org/issue15881#msg170215
-try:
- import multiprocessing # noqa
-except ImportError:
- pass
-
setuptools.setup(
setup_requires=['pbr>=1.8'],
pbr=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/test-requirements.txt new/bashate-2.1.0/test-requirements.txt
--- old/bashate-2.0.0/test-requirements.txt 2020-03-04 02:04:53.000000000 +0100
+++ new/bashate-2.1.0/test-requirements.txt 2021-09-13 10:22:06.000000000 +0200
@@ -2,15 +2,11 @@
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
-hacking<0.11,>=0.10.0
-mock>=1.2
+hacking>=3.0.1,<3.1.0 # Apache-2.0
coverage>=3.6
discover
fixtures>=1.3.1
python-subunit>=0.0.18
-sphinx!=1.6.6,!=1.6.7,!=2.1.0 # BSD
-openstackdocstheme>=1.11.0 # Apache-2.0
testtools>=2.2.0
stestr>=1.0.0 # Apache-2.0
-reno!=2.3.1,>=1.8.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bashate-2.0.0/tox.ini new/bashate-2.1.0/tox.ini
--- old/bashate-2.0.0/tox.ini 2020-03-04 02:04:53.000000000 +0100
+++ new/bashate-2.1.0/tox.ini 2021-09-13 10:22:06.000000000 +0200
@@ -1,16 +1,15 @@
[tox]
-minversion = 3.1.1
-envlist = py36,py37,pep8
+minversion = 3.18.0
+envlist = py36,py38,pep8
skipsdist = True
ignore_basepython_conflict = True
[testenv]
basepython = python3
usedevelop = True
-install_command = pip install -U {opts} {packages}
setenv =
VIRTUAL_ENV={envdir}
-whitelist_externals = *
+allowlist_externals = *
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
commands =
@@ -20,7 +19,16 @@
commands = flake8
[testenv:docs]
-commands = python setup.py build_sphinx
+deps = -r{toxinidir}/doc/requirements.txt
+commands = sphinx-build -a -W -E -b html doc/source doc/build/html
+
+[testenv:pdf-docs]
+deps = {[testenv:docs]deps}
+allowlist_externals =
+ make
+commands =
+ sphinx-build -W -b latex doc/source doc/build/pdf
+ make -C doc/build/pdf
[testenv:venv]
commands = {posargs}
@@ -38,13 +46,14 @@
coverage report
[testenv:releasenotes]
+deps = {[testenv:docs]deps}
commands = sphinx-build -a -W -E -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
[flake8]
# E123, E125 skipped as they are invalid PEP-8.
show-source = True
-ignore = E123,E125
+ignore = E123,E125,W504
builtins = _
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-anyio for openSUSE:Factory checked in at 2021-11-29 17:28:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-anyio (Old)
and /work/SRC/openSUSE:Factory/.python-anyio.new.31177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-anyio"
Mon Nov 29 17:28:40 2021 rev:7 rq:934534 version:3.4.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-anyio/python-anyio.changes 2021-10-27 22:21:12.727198859 +0200
+++ /work/SRC/openSUSE:Factory/.python-anyio.new.31177/python-anyio.changes 2021-12-02 02:22:04.193274130 +0100
@@ -1,0 +2,14 @@
+Mon Nov 29 12:01:51 UTC 2021 - Dirk M��ller <dmueller(a)suse.com>
+
+- update to 3.4.0:
+ * Added context propagation to/from worker threads in ``to_thread.run_sync()``,
+ ``from_thread.run()`` and ``from_thread.run_sync()``
+ * Fixed race condition in ``Lock`` and ``Semaphore`` classes when a task waiting on ``acquire()``
+ is cancelled while another task is waiting to acquire the same primitive
+ * Fixed async context manager's ``__aexit__()`` method not being called in
+ ``BlockingPortal.wrap_async_context_manager()`` if the host task is cancelled
+ * Fixed worker threads being marked as being event loop threads in sniffio
+ * Fixed task parent ID not getting set to the correct value on asyncio
+ * Enabled the test suite to run without IPv6 support, trio or pytest plugin autoloading
+
+-------------------------------------------------------------------
Old:
----
anyio-3.3.4.tar.gz
New:
----
anyio-3.4.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-anyio.spec ++++++
--- /var/tmp/diff_new_pack.NqEphl/_old 2021-12-02 02:22:04.661272497 +0100
+++ /var/tmp/diff_new_pack.NqEphl/_new 2021-12-02 02:22:04.665272483 +0100
@@ -19,12 +19,13 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-anyio
-Version: 3.3.4
+Version: 3.4.0
Release: 0
Summary: High level compatibility layer for asynchronous event loop implementations
License: MIT
URL: https://github.com/agronholm/anyio
Source: https://files.pythonhosted.org/packages/source/a/anyio/anyio-%{version}.tar…
+BuildRequires: %{python_module contextlib2 if %python-base < 3.7}
BuildRequires: %{python_module dataclasses if %python-base < 3.7}
BuildRequires: %{python_module idna >= 2.8}
BuildRequires: %{python_module setuptools_scm}
@@ -49,6 +50,7 @@
Requires: python-typing_extensions
%endif
%if 0%{?python_version_nodots} < 37
+Requires: python-contextvars
Requires: python-dataclasses
%endif
Suggests: python-trio >= 0.16
++++++ anyio-3.3.4.tar.gz -> anyio-3.4.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/.github/workflows/codeqa-test.yml new/anyio-3.4.0/.github/workflows/codeqa-test.yml
--- old/anyio-3.3.4/.github/workflows/codeqa-test.yml 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/.github/workflows/codeqa-test.yml 2021-11-23 00:57:30.000000000 +0100
@@ -66,6 +66,8 @@
run: pip install .[test,trio] coveralls
- name: Test with pytest
run: coverage run -m pytest
+ env:
+ PYTEST_DISABLE_PLUGIN_AUTOLOAD: 1
- name: Upload Coverage
run: coveralls --service=github
env:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/PKG-INFO new/anyio-3.4.0/PKG-INFO
--- old/anyio-3.3.4/PKG-INFO 2021-10-16 12:45:40.520680400 +0200
+++ new/anyio-3.4.0/PKG-INFO 2021-11-23 00:57:44.761705900 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: anyio
-Version: 3.3.4
+Version: 3.4.0
Summary: High level compatibility layer for multiple asynchronous event loop implementations
Home-page: UNKNOWN
Author: Alex Gr��nholm
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/docs/subprocesses.rst new/anyio-3.4.0/docs/subprocesses.rst
--- old/anyio-3.3.4/docs/subprocesses.rst 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/docs/subprocesses.rst 2021-11-23 00:57:30.000000000 +0100
@@ -108,7 +108,7 @@
* If a cancellable call is cancelled during execution on the worker process, the worker process
will be killed
* The worker process imports the parent's ``__main__`` module, so guarding for any import time side
- effects using ``if __name__ == '__main__':`` is required to avoid inifinite recursion
+ effects using ``if __name__ == '__main__':`` is required to avoid infinite recursion
* ``sys.stdin`` and ``sys.stdout``, ``sys.stderr`` are redirected to ``/dev/null`` so :func:`print`
and :func:`input` won't work
* Worker processes terminate after 5 minutes of inactivity, or when the event loop is finished
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/docs/tasks.rst new/anyio-3.4.0/docs/tasks.rst
--- old/anyio-3.3.4/docs/tasks.rst 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/docs/tasks.rst 2021-11-23 00:57:30.000000000 +0100
@@ -90,3 +90,17 @@
exception, :exc:`~ExceptionGroup` is raised which contains both exception objects.
Unfortunately this complicates any code that wishes to catch a specific exception because it could
be wrapped in an :exc:`~ExceptionGroup`.
+
+Context propagation
+-------------------
+
+Whenever a new task is spawned, `context`_ will be copied to the new task. It is important to note
+*which* content will be copied to the newly spawned task. It is not the context of the task group's
+host task that will be copied, but the context of the task that calls
+:meth:`TaskGroup.start() <.abc.TaskGroup.start>` or
+:meth:`TaskGroup.start_soon() <.abc.TaskGroup.start_soon>`.
+
+.. note:: Context propagation **does not work** on asyncio when using Python 3.6, as asyncio
+ support for this only landed in v3.7.
+
+.. _context: https://docs.python.org/3/library/contextvars.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/docs/threads.rst new/anyio-3.4.0/docs/threads.rst
--- old/anyio-3.3.4/docs/threads.rst 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/docs/threads.rst 2021-11-23 00:57:30.000000000 +0100
@@ -177,3 +177,15 @@
.. note:: You cannot use wrapped async context managers in synchronous callbacks inside the event
loop thread.
+
+Context propagation
+-------------------
+
+When running functions in worker threads, the current context is copied to the worker thread.
+Therefore any context variables available on the task will also be available to the code running
+on the thread. As always with context variables, any changes made to them will not propagate back
+to the calling asynchronous task.
+
+When calling asynchronous code from worker threads, context is again copied to the task that calls
+the target function in the event loop thread. Note, however, that this **does not work** on asyncio
+when running on Python 3.6.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/docs/versionhistory.rst new/anyio-3.4.0/docs/versionhistory.rst
--- old/anyio-3.3.4/docs/versionhistory.rst 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/docs/versionhistory.rst 2021-11-23 00:57:30.000000000 +0100
@@ -3,6 +3,24 @@
This library adheres to `Semantic Versioning 2.0 <http://semver.org/>`_.
+**3.4.0**
+
+- Added context propagation to/from worker threads in ``to_thread.run_sync()``,
+ ``from_thread.run()`` and ``from_thread.run_sync()``
+ (`#363 <https://github.com/agronholm/anyio/issues/363>`_; partially based on a PR by Sebasti��n
+ Ram��rez)
+
+ **NOTE**: Requires Python 3.7 to work properly on asyncio!
+- Fixed race condition in ``Lock`` and ``Semaphore`` classes when a task waiting on ``acquire()``
+ is cancelled while another task is waiting to acquire the same primitive
+ (`#387 <https://github.com/agronholm/anyio/issues/387>`_)
+- Fixed async context manager's ``__aexit__()`` method not being called in
+ ``BlockingPortal.wrap_async_context_manager()`` if the host task is cancelled
+ (`#381 <https://github.com/agronholm/anyio/issues/381>`_; PR by Jonathan Slenders)
+- Fixed worker threads being marked as being event loop threads in sniffio
+- Fixed task parent ID not getting set to the correct value on asyncio
+- Enabled the test suite to run without IPv6 support, trio or pytest plugin autoloading
+
**3.3.4**
- Fixed ``BrokenResourceError`` instead of ``EndOfStream`` being raised in ``TLSStream`` when the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/pyproject.toml new/anyio-3.4.0/pyproject.toml
--- old/anyio-3.3.4/pyproject.toml 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/pyproject.toml 2021-11-23 00:57:30.000000000 +0100
@@ -32,7 +32,7 @@
disallow_subclassing_any = false
[tool.pytest.ini_options]
-addopts = "-rsx --tb=short --strict-config --strict-markers"
+addopts = "-rsx --tb=short --strict-config --strict-markers -p anyio -p no:asyncio"
testpaths = ["tests"]
# Ignore resource warnings due to a CPython/Windows bug (https://bugs.python.org/issue44428)
filterwarnings = [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/setup.cfg new/anyio-3.4.0/setup.cfg
--- old/anyio-3.3.4/setup.cfg 2021-10-16 12:45:40.520680400 +0200
+++ new/anyio-3.4.0/setup.cfg 2021-11-23 00:57:44.761705900 +0100
@@ -28,6 +28,7 @@
python_requires = >= 3.6.2
zip_safe = False
install_requires =
+ contextvars; python_version < '3.7'
dataclasses; python_version < '3.7'
idna >= 2.8
sniffio >= 1.1
@@ -42,6 +43,7 @@
[options.extras_require]
test =
mock >= 4; python_version < '3.8'
+ contextlib2; python_version < '3.7'
coverage[toml] >= 4.5
hypothesis >= 4.0
pytest >= 6.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/src/anyio/_backends/_asyncio.py new/anyio-3.4.0/src/anyio/_backends/_asyncio.py
--- old/anyio-3.3.4/src/anyio/_backends/_asyncio.py 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/src/anyio/_backends/_asyncio.py 2021-11-23 00:57:30.000000000 +0100
@@ -7,6 +7,7 @@
from asyncio.base_events import _run_until_complete_cb # type: ignore
from collections import OrderedDict, deque
from concurrent.futures import Future
+from contextvars import Context, copy_context
from dataclasses import dataclass
from functools import partial, wraps
from inspect import (
@@ -22,6 +23,8 @@
Mapping, Optional, Sequence, Set, Tuple, Type, TypeVar, Union, cast)
from weakref import WeakKeyDictionary
+import sniffio
+
from .. import CapacityLimiterStatistics, EventStatistics, TaskInfo, abc
from .._core._compat import DeprecatedAsyncContextManager, DeprecatedAwaitable
from .._core._eventloop import claim_worker_thread, threadlocals
@@ -515,8 +518,9 @@
class _AsyncioTaskStatus(abc.TaskStatus):
- def __init__(self, future: asyncio.Future):
+ def __init__(self, future: asyncio.Future, parent_id: int):
self._future = future
+ self._parent_id = parent_id
def started(self, value: object = None) -> None:
try:
@@ -524,6 +528,9 @@
except asyncio.InvalidStateError:
raise RuntimeError("called 'started' twice on the same task status") from None
+ task = cast(asyncio.Task, current_task())
+ _task_states[task].parent_id = self._parent_id
+
class TaskGroup(abc.TaskGroup):
def __init__(self) -> None:
@@ -653,7 +660,11 @@
kwargs = {}
if task_status_future:
- kwargs['task_status'] = _AsyncioTaskStatus(task_status_future)
+ parent_id = id(current_task())
+ kwargs['task_status'] = _AsyncioTaskStatus(task_status_future,
+ id(self.cancel_scope._host_task))
+ else:
+ parent_id = id(self.cancel_scope._host_task)
coro = func(*args, **kwargs)
if not asyncio.iscoroutine(coro):
@@ -668,7 +679,7 @@
task.add_done_callback(task_done)
# Make the spawned task inherit the task group's cancel scope
- _task_states[task] = TaskState(parent_id=id(current_task()), name=name,
+ _task_states[task] = TaskState(parent_id=parent_id, name=name,
cancel_scope=self.cancel_scope)
self.cancel_scope._tasks.add(task)
return task
@@ -710,7 +721,7 @@
self.workers = workers
self.idle_workers = idle_workers
self.loop = root_task._loop
- self.queue: Queue[Union[Tuple[Callable, tuple, asyncio.Future], None]] = Queue(2)
+ self.queue: Queue[Union[Tuple[Context, Callable, tuple, asyncio.Future], None]] = Queue(2)
self.idle_since = current_time()
self.stopping = False
@@ -735,12 +746,12 @@
# Shutdown command received
return
- func, args, future = item
+ context, func, args, future = item
if not future.cancelled():
result = None
exception: Optional[BaseException] = None
try:
- result = func(*args)
+ result = context.run(func, *args)
except BaseException as exc:
exception = exc
@@ -801,7 +812,9 @@
expired_worker.root_task.remove_done_callback(expired_worker.stop)
expired_worker.stop()
- worker.queue.put_nowait((func, args, future))
+ context = copy_context()
+ context.run(sniffio.current_async_library_cvar.set, None)
+ worker.queue.put_nowait((context, func, args, future))
return await future
@@ -818,7 +831,11 @@
f: concurrent.futures.Future[T_Retval] = Future()
loop = loop or threadlocals.loop
- loop.call_soon_threadsafe(wrapper)
+ if sys.version_info < (3, 7):
+ loop.call_soon_threadsafe(copy_context().run, wrapper)
+ else:
+ loop.call_soon_threadsafe(wrapper)
+
return f.result()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/src/anyio/_backends/_trio.py new/anyio-3.4.0/src/anyio/_backends/_trio.py
--- old/anyio-3.3.4/src/anyio/_backends/_trio.py 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/src/anyio/_backends/_trio.py 2021-11-23 00:57:30.000000000 +0100
@@ -2,6 +2,7 @@
import math
import socket
from concurrent.futures import Future
+from contextvars import copy_context
from dataclasses import dataclass
from functools import partial
from io import IOBase
@@ -11,6 +12,7 @@
Any, Awaitable, Callable, Collection, ContextManager, Coroutine, Deque, Dict, Generic, List,
Mapping, NoReturn, Optional, Sequence, Set, Tuple, Type, TypeVar, Union)
+import sniffio
import trio.from_thread
from outcome import Error, Outcome, Value
from trio.socket import SocketType as TrioSocketType
@@ -37,6 +39,10 @@
else:
from trio.lowlevel import wait_readable, wait_writable
+try:
+ from trio.lowlevel import open_process as trio_open_process
+except ImportError:
+ from trio import open_process as trio_open_process
T_Retval = TypeVar('T_Retval')
T_SockAddr = TypeVar('T_SockAddr', str, IPSockAddrType)
@@ -167,10 +173,36 @@
with claim_worker_thread('trio'):
return func(*args)
- return await run_sync(wrapper, cancellable=cancellable, limiter=limiter)
+ # TODO: remove explicit context copying when trio 0.20 is the minimum requirement
+ context = copy_context()
+ context.run(sniffio.current_async_library_cvar.set, None)
+ return await run_sync(context.run, wrapper, cancellable=cancellable, limiter=limiter)
+
+
+# TODO: remove this workaround when trio 0.20 is the minimum requirement
+def run_async_from_thread(fn: Callable[..., Awaitable[T_Retval]], *args: Any) -> T_Retval:
+ async def wrapper() -> Optional[T_Retval]:
+ retval: T_Retval
+
+ async def inner() -> None:
+ nonlocal retval
+ __tracebackhide__ = True
+ retval = await fn(*args)
+
+ async with trio.open_nursery() as n:
+ context.run(n.start_soon, inner)
+
+ __tracebackhide__ = True
+ return retval
+
+ context = copy_context()
+ context.run(sniffio.current_async_library_cvar.set, 'trio')
+ return trio.from_thread.run(wrapper)
+
-run_async_from_thread = trio.from_thread.run
-run_sync_from_thread = trio.from_thread.run_sync
+def run_sync_from_thread(fn: Callable[..., T_Retval], *args: Any) -> T_Retval:
+ # TODO: remove explicit context copying when trio 0.20 is the minimum requirement
+ return trio.from_thread.run_sync(copy_context().run, fn, *args)
class BlockingPortal(abc.BlockingPortal):
@@ -183,9 +215,11 @@
def _spawn_task_from_thread(self, func: Callable, args: tuple, kwargs: Dict[str, Any],
name: object, future: Future) -> None:
+ context = copy_context()
+ context.run(sniffio.current_async_library_cvar.set, 'trio')
return trio.from_thread.run_sync(
- partial(self._task_group.start_soon, name=name), self._call_func, func, args, kwargs,
- future, trio_token=self._token)
+ context.run, partial(self._task_group.start_soon, name=name), self._call_func, func,
+ args, kwargs, future, trio_token=self._token)
#
@@ -283,7 +317,7 @@
stdin: int, stdout: int, stderr: int,
cwd: Union[str, bytes, PathLike, None] = None,
env: Optional[Mapping[str, str]] = None) -> Process:
- process = await trio.open_process(command, stdin=stdin, stdout=stdout, stderr=stderr,
+ process = await trio_open_process(command, stdin=stdin, stdout=stdout, stderr=stderr,
shell=shell, cwd=cwd, env=env)
stdin_stream = SendStreamWrapper(process.stdin) if process.stdin else None
stdout_stream = ReceiveStreamWrapper(process.stdout) if process.stdout else None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/src/anyio/_core/_eventloop.py new/anyio-3.4.0/src/anyio/_core/_eventloop.py
--- old/anyio-3.3.4/src/anyio/_core/_eventloop.py 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/src/anyio/_core/_eventloop.py 2021-11-23 00:57:30.000000000 +0100
@@ -123,11 +123,9 @@
def claim_worker_thread(backend: str) -> Generator[Any, None, None]:
module = sys.modules['anyio._backends._' + backend]
threadlocals.current_async_module = module
- token = sniffio.current_async_library_cvar.set(backend)
try:
yield
finally:
- sniffio.current_async_library_cvar.reset(token)
del threadlocals.current_async_module
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/src/anyio/_core/_exceptions.py new/anyio-3.4.0/src/anyio/_core/_exceptions.py
--- old/anyio-3.3.4/src/anyio/_core/_exceptions.py 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/src/anyio/_core/_exceptions.py 2021-11-23 00:57:30.000000000 +0100
@@ -4,7 +4,7 @@
class BrokenResourceError(Exception):
"""
- Raised when trying to use a resource that has been rendered unusuable due to external causes
+ Raised when trying to use a resource that has been rendered unusable due to external causes
(e.g. a send stream whose peer has disconnected).
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/src/anyio/_core/_synchronization.py new/anyio-3.4.0/src/anyio/_core/_synchronization.py
--- old/anyio-3.3.4/src/anyio/_core/_synchronization.py 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/src/anyio/_core/_synchronization.py 2021-11-23 00:57:30.000000000 +0100
@@ -127,6 +127,8 @@
except BaseException:
if not event.is_set():
self._waiters.remove(token)
+ elif self._owner_task == task:
+ self.release()
raise
@@ -302,6 +304,8 @@
except BaseException:
if not event.is_set():
self._waiters.remove(event)
+ else:
+ self.release()
raise
else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/src/anyio/from_thread.py new/anyio-3.4.0/src/anyio/from_thread.py
--- old/anyio-3.3.4/src/anyio/from_thread.py 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/src/anyio/from_thread.py 2021-11-23 00:57:30.000000000 +0100
@@ -70,7 +70,7 @@
_exit_future: Future
_exit_event: Event
_exit_exc_info: Tuple[Optional[Type[BaseException]], Optional[BaseException],
- Optional[TracebackType]]
+ Optional[TracebackType]] = (None, None, None)
def __init__(self, async_cm: AsyncContextManager[T_co], portal: 'BlockingPortal'):
self._async_cm = async_cm
@@ -86,8 +86,18 @@
else:
self._enter_future.set_result(value)
- await self._exit_event.wait()
- return await self._async_cm.__aexit__(*self._exit_exc_info)
+ try:
+ # Wait for the sync context manager to exit.
+ # This next statement can raise `get_cancelled_exc_class()` if
+ # something went wrong in a task group in this async context
+ # manager.
+ await self._exit_event.wait()
+ finally:
+ # In case of cancellation, it could be that we end up here before
+ # `_BlockingAsyncContextManager.__exit__` is called, and an
+ # `_exit_exc_info` has been set.
+ result = await self._async_cm.__aexit__(*self._exit_exc_info)
+ return result
def __enter__(self) -> T_co:
self._enter_future = Future()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/src/anyio.egg-info/PKG-INFO new/anyio-3.4.0/src/anyio.egg-info/PKG-INFO
--- old/anyio-3.3.4/src/anyio.egg-info/PKG-INFO 2021-10-16 12:45:40.000000000 +0200
+++ new/anyio-3.4.0/src/anyio.egg-info/PKG-INFO 2021-11-23 00:57:44.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: anyio
-Version: 3.3.4
+Version: 3.4.0
Summary: High level compatibility layer for multiple asynchronous event loop implementations
Home-page: UNKNOWN
Author: Alex Gr��nholm
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/src/anyio.egg-info/requires.txt new/anyio-3.4.0/src/anyio.egg-info/requires.txt
--- old/anyio-3.3.4/src/anyio.egg-info/requires.txt 2021-10-16 12:45:40.000000000 +0200
+++ new/anyio-3.4.0/src/anyio.egg-info/requires.txt 2021-11-23 00:57:44.000000000 +0100
@@ -2,6 +2,7 @@
sniffio>=1.1
[:python_version < "3.7"]
+contextvars
dataclasses
[:python_version < "3.8"]
@@ -18,6 +19,9 @@
pytest-mock>=3.6.1
trustme
+[test:python_version < "3.7"]
+contextlib2
+
[test:python_version < "3.7" and (platform_python_implementation == "CPython" and platform_system != "Windows")]
uvloop<0.15
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/tests/conftest.py new/anyio-3.4.0/tests/conftest.py
--- old/anyio-3.3.4/tests/conftest.py 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/tests/conftest.py 2021-11-23 00:57:30.000000000 +0100
@@ -22,7 +22,7 @@
else:
uvloop_policy = uvloop.EventLoopPolicy()
-pytest_plugins = ['pytester']
+pytest_plugins = ['pytester', 'pytest_mock']
@pytest.fixture(params=[
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/tests/test_from_thread.py new/anyio-3.4.0/tests/test_from_thread.py
--- old/anyio-3.3.4/tests/test_from_thread.py 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/tests/test_from_thread.py 2021-11-23 00:57:30.000000000 +0100
@@ -3,22 +3,29 @@
import time
from concurrent.futures import CancelledError
from contextlib import suppress
-from typing import Any, Dict, List, NoReturn, Optional
+from contextvars import ContextVar
+from typing import Any, AsyncGenerator, Dict, List, NoReturn, Optional
import pytest
from _pytest.logging import LogCaptureFixture
from anyio import (
- Event, from_thread, get_cancelled_exc_class, get_current_task, run, sleep, to_thread,
- wait_all_tasks_blocked)
+ Event, create_task_group, from_thread, get_cancelled_exc_class, get_current_task, run, sleep,
+ to_thread, wait_all_tasks_blocked)
from anyio.abc import TaskStatus
from anyio.from_thread import BlockingPortal, start_blocking_portal
+from anyio.lowlevel import checkpoint
if sys.version_info >= (3, 8):
from typing import Literal
else:
from typing_extensions import Literal
+if sys.version_info >= (3, 7):
+ from contextlib import asynccontextmanager
+else:
+ from contextlib2 import asynccontextmanager
+
pytestmark = pytest.mark.anyio
@@ -117,6 +124,22 @@
exc = pytest.raises(RuntimeError, from_thread.run, foo)
exc.match('This function can only be run from an AnyIO worker thread')
+ async def test_contextvar_propagation(self, anyio_backend_name: str) -> None:
+ if anyio_backend_name == 'asyncio' and sys.version_info < (3, 7):
+ pytest.skip('Asyncio does not propagate context before Python 3.7')
+
+ var = ContextVar('var', default=1)
+
+ async def async_func() -> int:
+ await checkpoint()
+ return var.get()
+
+ def worker() -> int:
+ var.set(6)
+ return from_thread.run(async_func)
+
+ assert await to_thread.run_sync(worker) == 6
+
class TestRunSyncFromThread:
def test_run_sync_from_unclaimed_thread(self) -> None:
@@ -126,6 +149,15 @@
exc = pytest.raises(RuntimeError, from_thread.run_sync, foo)
exc.match('This function can only be run from an AnyIO worker thread')
+ async def test_contextvar_propagation(self) -> None:
+ var = ContextVar('var', default=1)
+
+ def worker() -> int:
+ var.set(6)
+ return from_thread.run_sync(var.get)
+
+ assert await to_thread.run_sync(worker) == 6
+
class TestBlockingPortal:
class AsyncCM:
@@ -318,6 +350,23 @@
assert cm == 'test'
raise Exception('should be ignored')
+ def test_async_context_manager_exception_in_task_group(
+ self, anyio_backend_name: str, anyio_backend_options: Dict[str, Any]) -> None:
+ """Regression test for #381."""
+ async def failing_func() -> None:
+ 0 / 0
+
+ @asynccontextmanager
+ async def run_in_context() -> AsyncGenerator[None, None]:
+ async with create_task_group() as tg:
+ tg.start_soon(failing_func)
+ yield
+
+ with start_blocking_portal(anyio_backend_name, anyio_backend_options) as portal:
+ with pytest.raises(ZeroDivisionError):
+ with portal.wrap_async_context_manager(run_in_context()):
+ pass
+
def test_start_no_value(self, anyio_backend_name: str,
anyio_backend_options: Dict[str, Any]) -> None:
def taskfunc(*, task_status: TaskStatus) -> None:
@@ -378,6 +427,35 @@
taskfunc, name='testname') # type: ignore[arg-type]
assert start_value == 'testname'
+ def test_contextvar_propagation_sync(self, anyio_backend_name: str,
+ anyio_backend_options: Dict[str, Any]) -> None:
+ if anyio_backend_name == 'asyncio' and sys.version_info < (3, 7):
+ pytest.skip('Asyncio does not propagate context before Python 3.7')
+
+ var = ContextVar('var', default=1)
+ var.set(6)
+ with start_blocking_portal(anyio_backend_name, anyio_backend_options) as portal:
+ propagated_value = portal.call(var.get)
+
+ assert propagated_value == 6
+
+ def test_contextvar_propagation_async(self, anyio_backend_name: str,
+ anyio_backend_options: Dict[str, Any]) -> None:
+ if anyio_backend_name == 'asyncio' and sys.version_info < (3, 7):
+ pytest.skip('Asyncio does not propagate context before Python 3.7')
+
+ var = ContextVar('var', default=1)
+ var.set(6)
+
+ async def get_var() -> int:
+ await checkpoint()
+ return var.get()
+
+ with start_blocking_portal(anyio_backend_name, anyio_backend_options) as portal:
+ propagated_value = portal.call(get_var)
+
+ assert propagated_value == 6
+
@pytest.mark.parametrize('anyio_backend', ['asyncio'])
async def test_asyncio_run_sync_called(self, caplog: LogCaptureFixture) -> None:
"""Regression test for #357."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/tests/test_pytest_plugin.py new/anyio-3.4.0/tests/test_pytest_plugin.py
--- old/anyio-3.3.4/tests/test_pytest_plugin.py 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/tests/test_pytest_plugin.py 2021-11-23 00:57:30.000000000 +0100
@@ -6,6 +6,8 @@
pytestmark = pytest.mark.filterwarnings(
'ignore:The TerminalReporter.writer attribute is deprecated:pytest.PytestDeprecationWarning:')
+pytest_args = '-v', '-p', 'anyio', '-p', 'no:asyncio'
+
def test_plugin(testdir: Testdir) -> None:
testdir.makeconftest(
@@ -61,7 +63,7 @@
"""
)
- result = testdir.runpytest('-v', '-p', 'no:asyncio')
+ result = testdir.runpytest(*pytest_args)
result.assert_outcomes(passed=3 * len(get_all_backends()), skipped=len(get_all_backends()))
@@ -134,7 +136,7 @@
"""
)
- result = testdir.runpytest('-v', '-p', 'no:asyncio')
+ result = testdir.runpytest(*pytest_args)
result.assert_outcomes(passed=2, failed=1, errors=2)
@@ -171,7 +173,7 @@
"""
)
- result = testdir.runpytest('-v', '-p', 'no:asyncio')
+ result = testdir.runpytest_subprocess(*pytest_args)
result.assert_outcomes(passed=len(get_all_backends()))
@@ -198,7 +200,7 @@
"""
)
- result = testdir.runpytest('-v', '-p', 'no:asyncio')
+ result = testdir.runpytest_subprocess(*pytest_args)
result.assert_outcomes(passed=len(get_all_backends()))
@@ -229,7 +231,7 @@
"""
)
- result = testdir.runpytest('-v', '-p', 'no:asyncio')
+ result = testdir.runpytest(*pytest_args)
result.assert_outcomes(passed=len(get_all_backends()) + 1, xfailed=len(get_all_backends()))
@@ -268,5 +270,5 @@
"""
)
- result = testdir.runpytest('-v', '-p', 'no:asyncio')
+ result = testdir.runpytest(*pytest_args)
result.assert_outcomes(passed=2 * len(get_all_backends()), xfailed=2 * len(get_all_backends()))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/tests/test_sockets.py new/anyio-3.4.0/tests/test_sockets.py
--- old/anyio-3.3.4/tests/test_sockets.py 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/tests/test_sockets.py 2021-11-23 00:57:30.000000000 +0100
@@ -38,6 +38,20 @@
pytestmark = pytest.mark.anyio
+# If a socket can bind to ::1, the current environment has IPv6 properly configured
+has_ipv6 = False
+if socket.has_ipv6:
+ s = socket.socket(AddressFamily.AF_INET6)
+ try:
+ s.bind(('::1', 0))
+ except OSError:
+ pass
+ else:
+ has_ipv6 = True
+ finally:
+ s.close()
+ del s
+
@pytest.fixture
def fake_localhost_dns(monkeypatch: MonkeyPatch) -> None:
@@ -53,7 +67,7 @@
@pytest.fixture(params=[
pytest.param(AddressFamily.AF_INET, id='ipv4'),
pytest.param(AddressFamily.AF_INET6, id='ipv6',
- marks=[pytest.mark.skipif(not socket.has_ipv6, reason='no IPv6 support')])
+ marks=[pytest.mark.skipif(not has_ipv6, reason='no IPv6 support')])
])
def family(request: SubRequest) -> AnyIPAddressFamily:
return request.param
@@ -194,7 +208,7 @@
raw_socket = stream.extra(SocketAttribute.raw_socket)
assert raw_socket.getsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY) != 0
- @pytest.mark.skipif(not socket.has_ipv6, reason='IPv6 is not available')
+ @pytest.mark.skipif(not has_ipv6, reason='IPv6 is not available')
@pytest.mark.parametrize('local_addr, expected_client_addr', [
pytest.param('', '::1', id='dualstack'),
pytest.param('127.0.0.1', '127.0.0.1', id='ipv4'),
@@ -227,7 +241,7 @@
@pytest.mark.parametrize('target, exception_class', [
pytest.param(
'localhost', ExceptionGroup, id='multi',
- marks=[pytest.mark.skipif(not socket.has_ipv6, reason='IPv6 is not available')]
+ marks=[pytest.mark.skipif(not has_ipv6, reason='IPv6 is not available')]
),
pytest.param('127.0.0.1', ConnectionRefusedError, id='single')
])
@@ -441,9 +455,9 @@
@pytest.mark.parametrize('family', [
pytest.param(AddressFamily.AF_INET, id='ipv4'),
pytest.param(AddressFamily.AF_INET6, id='ipv6',
- marks=[pytest.mark.skipif(not socket.has_ipv6, reason='no IPv6 support')]),
+ marks=[pytest.mark.skipif(not has_ipv6, reason='no IPv6 support')]),
pytest.param(socket.AF_UNSPEC, id='both',
- marks=[pytest.mark.skipif(not socket.has_ipv6, reason='no IPv6 support')])
+ marks=[pytest.mark.skipif(not has_ipv6, reason='no IPv6 support')])
])
async def test_accept(self, family: AnyIPAddressFamily) -> None:
async with await create_tcp_listener(local_host='localhost', family=family) as multi:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/tests/test_synchronization.py new/anyio-3.4.0/tests/test_synchronization.py
--- old/anyio-3.3.4/tests/test_synchronization.py 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/tests/test_synchronization.py 2021-11-23 00:57:30.000000000 +0100
@@ -5,7 +5,7 @@
from anyio import (
CancelScope, Condition, Event, Lock, Semaphore, WouldBlock, create_task_group, to_thread,
wait_all_tasks_blocked)
-from anyio.abc import CapacityLimiter
+from anyio.abc import CapacityLimiter, TaskStatus
pytestmark = pytest.mark.anyio
@@ -65,23 +65,34 @@
assert lock.locked()
tg.start_soon(try_lock)
- async def test_cancel(self) -> None:
- task_started = got_lock = False
-
- async def task() -> None:
- nonlocal task_started, got_lock
- task_started = True
+ @pytest.mark.parametrize('release_first', [
+ pytest.param(False, id='releaselast'),
+ pytest.param(True, id='releasefirst')
+ ])
+ async def test_cancel_during_acquire(self, release_first: bool) -> None:
+ acquired = False
+
+ async def task(*, task_status: TaskStatus) -> None:
+ nonlocal acquired
+ task_status.started()
async with lock:
- got_lock = True
+ acquired = True
lock = Lock()
async with create_task_group() as tg:
- async with lock:
- tg.start_soon(task)
- tg.cancel_scope.cancel()
+ await lock.acquire()
+ await tg.start(task)
+ tg.cancel_scope.cancel()
+ with CancelScope(shield=True):
+ if release_first:
+ lock.release()
+ await wait_all_tasks_blocked()
+ else:
+ await wait_all_tasks_blocked()
+ lock.release()
- assert task_started
- assert not got_lock
+ assert not acquired
+ assert not lock.locked()
async def test_statistics(self) -> None:
async def waiter() -> None:
@@ -282,24 +293,34 @@
assert semaphore.value == 0
pytest.raises(WouldBlock, semaphore.acquire_nowait)
- async def test_acquire_cancel(self) -> None:
- local_scope = acquired = None
-
- async def task() -> None:
- nonlocal local_scope, acquired
- with CancelScope() as local_scope:
- async with semaphore:
- acquired = True
+ @pytest.mark.parametrize('release_first', [
+ pytest.param(False, id='releaselast'),
+ pytest.param(True, id='releasefirst')
+ ])
+ async def test_cancel_during_acquire(self, release_first: bool) -> None:
+ acquired = False
+
+ async def task(*, task_status: TaskStatus) -> None:
+ nonlocal acquired
+ task_status.started()
+ async with semaphore:
+ acquired = True
semaphore = Semaphore(1)
async with create_task_group() as tg:
- async with semaphore:
- tg.start_soon(task)
- await wait_all_tasks_blocked()
- assert local_scope is not None
- local_scope.cancel()
+ await semaphore.acquire()
+ await tg.start(task)
+ tg.cancel_scope.cancel()
+ with CancelScope(shield=True):
+ if release_first:
+ semaphore.release()
+ await wait_all_tasks_blocked()
+ else:
+ await wait_all_tasks_blocked()
+ semaphore.release()
assert not acquired
+ assert semaphore.value == 1
@pytest.mark.parametrize('max_value', [2, None])
async def test_max_value(self, max_value: Optional[int]) -> None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/tests/test_taskgroups.py new/anyio-3.4.0/tests/test_taskgroups.py
--- old/anyio-3.3.4/tests/test_taskgroups.py 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/tests/test_taskgroups.py 2021-11-23 00:57:30.000000000 +0100
@@ -2,15 +2,15 @@
import re
import sys
import time
-from typing import Any, AsyncGenerator, Coroutine, Dict, Generator, NoReturn, Set
+from typing import Any, AsyncGenerator, Coroutine, Dict, Generator, NoReturn, Optional, Set
import pytest
-import trio
import anyio
from anyio import (
CancelScope, ExceptionGroup, create_task_group, current_effective_deadline, current_time,
- fail_after, get_cancelled_exc_class, move_on_after, sleep, wait_all_tasks_blocked)
+ fail_after, get_cancelled_exc_class, get_current_task, move_on_after, sleep,
+ wait_all_tasks_blocked)
from anyio.abc import TaskGroup, TaskStatus
from anyio.lowlevel import checkpoint
@@ -54,7 +54,7 @@
@pytest.mark.parametrize('module', [
pytest.param(asyncio, id='asyncio'),
- pytest.param(trio, id='trio')
+ pytest.param(pytest.importorskip('trio'), id='trio')
])
def test_run_natively(module: Any) -> None:
async def testfunc() -> None:
@@ -1004,3 +1004,45 @@
await wait_all_tasks_blocked()
assert isinstance(task, asyncio.Task)
task.cancel('blah')
+
+
+async def test_start_soon_parent_id() -> None:
+ root_task_id = get_current_task().id
+ parent_id: Optional[int] = None
+
+ async def subtask() -> None:
+ nonlocal parent_id
+ parent_id = get_current_task().parent_id
+
+ async def starter_task() -> None:
+ tg.start_soon(subtask)
+
+ async with anyio.create_task_group() as tg:
+ tg.start_soon(starter_task)
+
+ assert parent_id == root_task_id
+
+
+async def test_start_parent_id() -> None:
+ root_task_id = get_current_task().id
+ starter_task_id: Optional[int] = None
+ initial_parent_id: Optional[int] = None
+ permanent_parent_id: Optional[int] = None
+
+ async def subtask(*, task_status: TaskStatus) -> None:
+ nonlocal initial_parent_id, permanent_parent_id
+ initial_parent_id = get_current_task().parent_id
+ task_status.started()
+ permanent_parent_id = get_current_task().parent_id
+
+ async def starter_task() -> None:
+ nonlocal starter_task_id
+ starter_task_id = get_current_task().id
+ await tg.start(subtask)
+
+ async with anyio.create_task_group() as tg:
+ tg.start_soon(starter_task)
+
+ assert initial_parent_id != permanent_parent_id
+ assert initial_parent_id == starter_task_id
+ assert permanent_parent_id == root_task_id
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/anyio-3.3.4/tests/test_to_thread.py new/anyio-3.4.0/tests/test_to_thread.py
--- old/anyio-3.3.4/tests/test_to_thread.py 2021-10-16 12:45:31.000000000 +0200
+++ new/anyio-3.4.0/tests/test_to_thread.py 2021-11-23 00:57:30.000000000 +0100
@@ -3,10 +3,12 @@
import threading
import time
from concurrent.futures import Future
+from contextvars import ContextVar
from functools import partial
from typing import Any, List, NoReturn, Optional
import pytest
+import sniffio
import anyio.to_thread
from anyio import (
@@ -132,6 +134,17 @@
assert future.result(1)
+async def test_contextvar_propagation() -> None:
+ var = ContextVar('var', default=1)
+ var.set(6)
+ assert await to_thread.run_sync(var.get) == 6
+
+
+async def test_asynclib_detection() -> None:
+ with pytest.raises(sniffio.AsyncLibraryNotFoundError):
+ await to_thread.run_sync(sniffio.current_async_library)
+
+
@pytest.mark.parametrize('anyio_backend', ['asyncio'])
async def test_asyncio_cancel_native_task() -> None:
task: "Optional[asyncio.Task[None]]" = None
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package pulseaudio for openSUSE:Factory checked in at 2021-12-01 20:46:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pulseaudio (Old)
and /work/SRC/openSUSE:Factory/.pulseaudio.new.31177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pulseaudio"
Wed Dec 1 20:46:52 2021 rev:189 rq:934567 version:15.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/pulseaudio/pulseaudio.changes 2021-11-20 02:39:08.492779885 +0100
+++ /work/SRC/openSUSE:Factory/.pulseaudio.new.31177/pulseaudio.changes 2021-12-02 02:21:42.953348224 +0100
@@ -1,0 +2,8 @@
+Tue Nov 23 10:52:47 CET 2021 - tiwai(a)suse.de
+
+- Improving the handling with pipewire (bsc#1188516):
+ * Split the setup script to a sub-package pulseaudio-setup to be
+ shared with pipewire-pulseaudio package
+ * Modified setup script to adapt pipewire-pulse
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pulseaudio.spec ++++++
--- /var/tmp/diff_new_pack.C1VdhM/_old 2021-12-02 02:21:43.513346271 +0100
+++ /var/tmp/diff_new_pack.C1VdhM/_new 2021-12-02 02:21:43.513346271 +0100
@@ -101,7 +101,7 @@
Requires(pre): user(pulse)
## needs the same liborc version which was used to build against
%requires_eq liborc-0_4-0
-Requires(post): %fillup_prereq
+Requires(post): pulseaudio-setup
Recommends: alsa-plugins-pulse
Suggests: libsoxr0 >= 0.1.1
Conflicts: kernel < 2.6.31
@@ -118,6 +118,15 @@
operating systems and Microsoft Windows. It is intended to be an
improved drop-in replacement for the Enlightened Sound Daemon (ESOUND).
+%package setup
+Summary: Set-up script for PulseAudio
+Group: System/Sound Daemons
+Requires(post): %fillup_prereq
+
+%description setup
+This package contains a setup script for making PulseAudio working with
+various applications.
+
%package module-lirc
Summary: LIRC module for PulseAudio
Group: System/Sound Daemons
@@ -407,7 +416,6 @@
%post
/sbin/ldconfig
%tmpfiles_create pulseaudio.conf
-%{fillup_only -an sound}
if [ ! -f /etc/systemd/user/sockets.target.wants/%{name}.socket ]; then
echo "Switching PulseAudio activation using systemd user socket."
echo "Please log out from all sessions once to make it effective."
@@ -451,6 +459,9 @@
%service_del_postun pulseaudio.service
exit 0
+%post setup
+%{fillup_only -an sound}
+
%post gdm-hooks
%tmpfiles_create pulseaudio-gdm-hooks.conf
@@ -458,11 +469,9 @@
%doc README
%license LICENSE GPL LGPL
%{_bindir}/pulseaudio
-%{_bindir}/setup-pulseaudio
%{_bindir}/qpaeq
%dir %{_datadir}/pulseaudio
%{_datadir}/pulseaudio/alsa-mixer
-%{_fillupdir}/sysconfig.sound-pulseaudio
%dir %{_libdir}/pulseaudio
%{_libdir}/pulseaudio/libpulsecore-%{drvver}.so
%dir %{_libdir}/pulse-%{drvver}/
@@ -564,13 +573,16 @@
%{_prefix}/lib/tmpfiles.d/pulseaudio.conf
%ghost %dir %{_localstatedir}/lib/pulseaudio
+# xwayland integration
+%{_userunitdir}/pulseaudio-x11.service
+
+%files setup
+%{_bindir}/setup-pulseaudio
+%{_fillupdir}/sysconfig.sound-pulseaudio
# created by setup-pulseaudio script
%ghost %{_sysconfdir}/profile.d/pulseaudio.sh
%ghost %{_sysconfdir}/profile.d/pulseaudio.csh
-# xwayland integration
-%{_userunitdir}/pulseaudio-x11.service
-
%files gdm-hooks
%attr(0750, gdm, gdm) %ghost %dir %{_localstatedir}/lib/gdm
%attr(0700, gdm, gdm) %ghost %dir %{_localstatedir}/lib/gdm/.pulse
++++++ setup-pulseaudio ++++++
--- /var/tmp/diff_new_pack.C1VdhM/_old 2021-12-02 02:21:43.617345908 +0100
+++ /var/tmp/diff_new_pack.C1VdhM/_new 2021-12-02 02:21:43.617345908 +0100
@@ -66,6 +66,20 @@
fi
}
+has_user_pulseaudio() {
+ test -f /etc/systemd/user/sockets.target.wants/pulseaudio.socket && return 0
+ test -f /etc/systemd/user/sockets.target.wants/pipewire-pulse.socket && return 0
+ return 1
+}
+
+pulseaudio_bin_name() {
+ if [ -x /usr/bin/pulseaudio ]; then
+ echo "pulseaudio"
+ else
+ echo "pipewire-pulse"
+ fi
+}
+
enable_phonon() {
echo "Enabling PulseAudio for Phonon..."
delete_variable PHONON_PULSEAUDIO_DISABLE
@@ -213,7 +227,8 @@
}
enable_autospawn() {
- test -f /etc/systemd/user/sockets.target.wants/pulseaudio.socket && return
+ has_user_pulseaudio && return
+ test -x /usr/bin/pulseaudio || return
echo "Enabling PulseAudio autospawn..."
if grep -q ^autospawn $pulse_client_conf >/dev/null 2>&1; then
sed -i -e "s|^autospawn.*|autospawn = yes|g" $pulse_client_conf
@@ -223,10 +238,11 @@
}
enable_systemd() {
- test -f /etc/systemd/user/sockets.target.wants/pulseaudio.socket || return
+ has_user_pulseaudio || return
echo "Enabling systemd user socket..."
- systemctl --global unmask pulseaudio.socket
- systemctl --global unmask pulseaudio.service
+ s=$(pulseaudio_bin_name)
+ systemctl --global unmask $s.socket
+ systemctl --global unmask $s.service
}
disable_alsa() {
@@ -329,7 +345,8 @@
}
disable_autospawn() {
- test -f /etc/systemd/user/sockets.target.wants/pulseaudio.socket && return
+ has_user_pulseaudio && return
+ test -x /usr/bin/pulseaudio || return
echo "Disabling PulseAudio autospawn..."
if grep -q ^autospawn $pulse_client_conf >/dev/null 2>&1; then
sed -i -e "s|^autospawn.*|autospawn = no|g" $pulse_client_conf
@@ -341,12 +358,13 @@
}
disable_systemd() {
- test -f /etc/systemd/user/sockets.target.wants/pulseaudio.socket || return
+ has_user_pulseaudio || return
echo "Disabling systemd user socket..."
- systemctl --global mask pulseaudio.socket
- systemctl --global mask pulseaudio.service
+ s=$(pulseaudio_bin_name)
+ systemctl --global mask $s.socket
+ systemctl --global mask $s.service
# kill leftover PA processes
- killall pulseaudio > /dev/null 2>&1
+ killall $s > /dev/null 2>&1
}
enable_all() {
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package proj for openSUSE:Factory checked in at 2021-11-29 17:28:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/proj (Old)
and /work/SRC/openSUSE:Factory/.proj.new.31177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "proj"
Mon Nov 29 17:28:32 2021 rev:33 rq:934478 version:8.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/proj/proj.changes 2021-11-10 21:46:32.595813939 +0100
+++ /work/SRC/openSUSE:Factory/.proj.new.31177/proj.changes 2021-12-02 02:21:37.577366978 +0100
@@ -1,0 +2,31 @@
+Fri Nov 26 18:32:18 UTC 2021 - Dirk M��ller <dmueller(a)suse.com>
+
+- update 8.2.0:
+ * Added the S2 projection (#2749)
+ * Added support for Degree Sign on input (#2791)
+ * ESRI WKT: add support for import/export of (non interrupted)
+ Goode Homolosine (#2827)
+ * Make filemanager aware of UWP Win32 API (#2831)
+ * Add proj_create_conversion_pole_rotation_netcdf_cf_convention() to
+ address netCDF datasets using a pole rotation method (#2835)
+ * Emit better debug message when a grid isn't found (#2838)
+ * Add support for GeodeticCRS using a Spherical planetocentric
+ coordinate system
+ * PROJJSON: support additional properties allowed in id object (version,
+ authority_citation, uri) for parity with WKT2:2019 (#2850)
+ * Database layout modified to include "anchor" field to geodetic_datum and
+ vertical_datum tables, consequently database layout version is increased
+ * proj_factors(): accept P to be a projected CRS (#2868)
+ * Add IAU_2015 CRS definitions (#2876)
+ * CRS::extractGeodeticCRS(): implement for DerivedProjectedCRS (#2877)
+ * Added proj_trans_bounds() (#2882)
+ * Add fallback strategy for tinshift transform to use closest triangle for
+ points not in any (#2907)
+ * Database: update to EPSG v10.038 (#2910)
+ * Fix O(n^2) performance patterns where n is the number of steps of
+ a pipeline (#2820)
+ * Detect ESRI WKT better in certain circumstances (#2823)
+ * Fix performance issue on pipeline instanciation of huge (broken)
+ pipelines (#2824)
+
+-------------------------------------------------------------------
Old:
----
proj-8.1.1.tar.gz
New:
----
proj-8.2.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ proj.spec ++++++
--- /var/tmp/diff_new_pack.NgvAr0/_old 2021-12-02 02:21:39.593359945 +0100
+++ /var/tmp/diff_new_pack.NgvAr0/_new 2021-12-02 02:21:39.597359931 +0100
@@ -20,7 +20,7 @@
%define sover 22
%define libname lib%{name}%{sover}
Name: proj
-Version: 8.1.1
+Version: 8.2.0
Release: 0
Summary: Cartographic projection software
License: MIT
++++++ proj-8.1.1.tar.gz -> proj-8.2.0.tar.gz ++++++
++++ 25103 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package polkit-gnome for openSUSE:Factory checked in at 2021-12-01 20:46:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/polkit-gnome (Old)
and /work/SRC/openSUSE:Factory/.polkit-gnome.new.31177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "polkit-gnome"
Wed Dec 1 20:46:52 2021 rev:30 rq:934576 version:0.105
Changes:
--------
--- /work/SRC/openSUSE:Factory/polkit-gnome/polkit-gnome.changes 2020-01-28 10:52:49.040865569 +0100
+++ /work/SRC/openSUSE:Factory/.polkit-gnome.new.31177/polkit-gnome.changes 2021-12-02 02:21:29.957393560 +0100
@@ -1,0 +2,5 @@
+Sun Nov 28 07:32:43 UTC 2021 - Alexei Podvalsky <avvissu(a)yandex.by>
+
+- Disable agent startup on Pantheon desktop
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ polkit-gnome-authentication-agent-1.desktop.in ++++++
--- /var/tmp/diff_new_pack.LGh9gD/_old 2021-12-02 02:21:30.385392067 +0100
+++ /var/tmp/diff_new_pack.LGh9gD/_new 2021-12-02 02:21:30.385392067 +0100
@@ -84,5 +84,5 @@
Type=Application
Categories=
NoDisplay=true
-NotShowIn=KDE;
+NotShowIn=KDE;Pantheon;
AutostartCondition=GNOME3 unless-session gnome
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package pngquant for openSUSE:Factory checked in at 2021-12-01 20:46:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pngquant (Old)
and /work/SRC/openSUSE:Factory/.pngquant.new.31177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pngquant"
Wed Dec 1 20:46:28 2021 rev:9 rq:934864 version:2.17.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/pngquant/pngquant.changes 2021-06-25 15:01:29.688163057 +0200
+++ /work/SRC/openSUSE:Factory/.pngquant.new.31177/pngquant.changes 2021-12-02 02:21:28.101400035 +0100
@@ -1,0 +2,6 @@
+Sat Nov 27 13:07:38 UTC 2021 - Dirk M��ller <dmueller(a)suse.com>
+
+- update to 2.17.0:
+ - reduced stack usage, preventing stack overflow in pathological cases
+
+-------------------------------------------------------------------
Old:
----
pngquant-2.15.1.tar.gz
New:
----
pngquant-2.17.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pngquant.spec ++++++
--- /var/tmp/diff_new_pack.YSNtzz/_old 2021-12-02 02:21:28.453398807 +0100
+++ /var/tmp/diff_new_pack.YSNtzz/_new 2021-12-02 02:21:28.457398792 +0100
@@ -17,7 +17,7 @@
Name: pngquant
-Version: 2.15.1
+Version: 2.17.0
Release: 0
Summary: Tool for lossy compression of PNG images
License: GPL-3.0-or-later
++++++ pngquant-2.15.1.tar.gz -> pngquant-2.17.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pngquant-2.15.1/.github/workflows/ci.yml new/pngquant-2.17.0/.github/workflows/ci.yml
--- old/pngquant-2.15.1/.github/workflows/ci.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/pngquant-2.17.0/.github/workflows/ci.yml 2021-11-21 23:19:03.000000000 +0100
@@ -0,0 +1,28 @@
+name: CI
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
+
+env:
+ CARGO_TERM_COLOR: always
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ submodules: true
+ - uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ - uses: actions-rs/cargo@v1
+ with:
+ command: test
+ args: --all
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pngquant-2.15.1/.travis.yml new/pngquant-2.17.0/.travis.yml
--- old/pngquant-2.15.1/.travis.yml 2021-05-13 11:30:18.000000000 +0200
+++ new/pngquant-2.17.0/.travis.yml 1970-01-01 01:00:00.000000000 +0100
@@ -1,21 +0,0 @@
-language: c
-sudo: required
-
-os:
- - linux
- - osx
-
-before_install:
- - if [[ $TRAVIS_OS_NAME = "osx" ]]; then
- brew install lcms2 || true;
- elif [[ $TRAVIS_OS_NAME = "linux" ]]; then
- echo "deb-src http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list;
- sudo apt-get update -q;
- sudo apt-get build-dep -y libpng16-16;
- sudo apt-get source -b -t xenial libpng16-16;
- fi
-
-script:
- - ./configure --with-lcms2
- - make
- - make test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pngquant-2.15.1/CHANGELOG new/pngquant-2.17.0/CHANGELOG
--- old/pngquant-2.15.1/CHANGELOG 2021-05-13 11:30:18.000000000 +0200
+++ new/pngquant-2.17.0/CHANGELOG 2021-11-21 23:19:03.000000000 +0100
@@ -1,3 +1,7 @@
+version 2.16
+------------
+- reduced stack usage, prevenitng stack overlfow in pathological cases
+
version 2.13-2.15
------------
- speed and quality improvements
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pngquant-2.15.1/Cargo.toml new/pngquant-2.17.0/Cargo.toml
--- old/pngquant-2.15.1/Cargo.toml 2021-05-13 11:30:18.000000000 +0200
+++ new/pngquant-2.17.0/Cargo.toml 2021-11-21 23:19:03.000000000 +0100
@@ -1,12 +1,12 @@
[package]
-version = "2.15.1"
+version = "2.17.0"
authors = ["Kornel Lesin��ski <kornel(a)pngquant.org>"]
build = "rust/build.rs"
categories = ["multimedia::images"]
description = "Convert 24/32-bit images to 8-bit palette with alpha channel.\nBindings for libimagequant that powers pngquant lossy PNG compressor.\n\nDual-licensed like pngquant. See https://pngquant.org for details."
documentation= "https://github.com/kornelski/pngquant#readme"
homepage = "https://pngquant.org"
-include = ["/rwpng*", "/pngquant.c", "/rust/*", "/COPYRIGHT", "/Cargo.toml", "/README.md"]
+include = ["/rwpng*.[ch]", "/pngquant.c","/pngquant_opts.[ch]", "/rust/*.rs", "/COPYRIGHT", "/Cargo.toml", "/README.md"]
keywords = ["quantization", "palette", "image", "pngquant", "compression"]
license = "GPL-3.0+"
name = "pngquant"
@@ -19,12 +19,12 @@
path = "rust/bin.rs"
[build-dependencies]
-cc = "1.0.66"
-dunce = "1.0.1"
+cc = "1.0.71"
+dunce = "1.0.2"
[dependencies]
getopts = "0.2.21"
-libc = "0.2.82"
+libc = "0.2.106"
libpng-sys = "1.1.8"
wild = "2.0.4"
@@ -38,11 +38,11 @@
[dependencies.lcms2-sys]
optional = true
-version = "3.1.6"
+version = "3.1.9"
[dependencies.openmp-sys]
optional = true
-version = "1.0.0"
+version = "1.2.0"
[features]
cocoa = ["cocoa_image"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pngquant-2.15.1/README.md new/pngquant-2.17.0/README.md
--- old/pngquant-2.15.1/README.md 2021-05-13 11:30:18.000000000 +0200
+++ new/pngquant-2.17.0/README.md 2021-11-21 23:19:03.000000000 +0100
@@ -1,4 +1,4 @@
-# pngquant 2 [![build](https://travis-ci.org/kornelski/pngquant.svg?branch=master)](https://travis-ci.org/kornelski/pngquant)
+# pngquant 2 [![CI](https://github.com/kornelski/pngquant/actions/workflows/ci.yml/badge.svg)](https://github.com/kornelski/pngquant/actions/workflows/ci.yml)
[pngquant](https://pngquant.org) is a PNG compressor that significantly reduces file sizes by converting images to a more efficient 8-bit PNG format *with alpha channel* (often 60-80% smaller than 24/32-bit PNG files). Compressed images are fully standards-compliant and are supported by all web browsers and operating systems.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pngquant-2.15.1/pngquant.c new/pngquant-2.17.0/pngquant.c
--- old/pngquant-2.15.1/pngquant.c 2021-05-13 11:30:18.000000000 +0200
+++ new/pngquant-2.17.0/pngquant.c 2021-11-21 23:19:03.000000000 +0100
@@ -58,7 +58,7 @@
#include "libimagequant.h" /* if it fails here, run: git submodule update; ./configure; or add -Ilib to compiler flags */
#include "pngquant_opts.h"
-char *PNGQUANT_VERSION = LIQ_VERSION_STRING " (May 2021)";
+char *PNGQUANT_VERSION = LIQ_VERSION_STRING " (September 2021)";
static pngquant_error prepare_output_image(liq_result *result, liq_image *input_image, rwpng_color_transform tag, png8_image *output_image);
static void set_palette(liq_result *result, png8_image *output_image);
@@ -324,6 +324,10 @@
// Don't use this. This is not a public API.
pngquant_error pngquant_main_internal(struct pngquant_options *options, liq_attr *liq)
{
+#if defined(_WIN32) || defined(WIN32) || defined(__WIN32__)
+ setlocale(LC_ALL, ".65001"); // issue #376; set UTF-8 for Unicode filenames
+#endif
+
if (options->map_file) {
png24_image tmp = {.width=0};
if (SUCCESS != read_image(liq, options->map_file, false, &tmp, &options->fixed_palette_image, true, true, false)) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pngquant-2.15.1/pngquant.spec new/pngquant-2.17.0/pngquant.spec
--- old/pngquant-2.15.1/pngquant.spec 2021-05-13 11:30:18.000000000 +0200
+++ new/pngquant-2.17.0/pngquant.spec 2021-11-21 23:19:03.000000000 +0100
@@ -1,5 +1,5 @@
Name: pngquant
-Version: 2.15.1
+Version: 2.17.0
Release: 1%{?dist}
Summary: PNG quantization tool for reducing image file size
# New code is under GPL, forked from old BSD-like
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pngquant-2.15.1/rust/ffi.rs new/pngquant-2.17.0/rust/ffi.rs
--- old/pngquant-2.15.1/rust/ffi.rs 2021-05-13 11:30:18.000000000 +0200
+++ new/pngquant-2.17.0/rust/ffi.rs 2021-11-21 23:19:03.000000000 +0100
@@ -18,6 +18,7 @@
#[derive(Debug, Copy, Clone)]
#[allow(dead_code)]
#[allow(non_camel_case_types)]
+#[non_exhaustive]
pub enum pngquant_error {
SUCCESS = 0,
MISSING_ARGUMENT = 1,
@@ -31,6 +32,7 @@
LIBPNG_FATAL_ERROR = 25,
WRONG_INPUT_COLOR_TYPE = 26,
LIBPNG_INIT_ERROR = 35,
+ LCMS_FATAL_ERROR = 45,
TOO_LARGE_FILE = 98,
TOO_LOW_QUALITY = 99,
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pngquant-2.15.1/rust/rwpng_cocoa.rs new/pngquant-2.17.0/rust/rwpng_cocoa.rs
--- old/pngquant-2.15.1/rust/rwpng_cocoa.rs 2021-05-13 11:30:18.000000000 +0200
+++ new/pngquant-2.17.0/rust/rwpng_cocoa.rs 2021-11-21 23:19:03.000000000 +0100
@@ -21,15 +21,16 @@
Err(_) => return pngquant_error::LIBPNG_FATAL_ERROR,
};
+ let (buf, w, h) = image.into_contiguous_buf();
*file_size = data.len();
- *width = image.width() as u32;
- *height = image.height() as u32;
+ *width = w as u32;
+ *height = h as u32;
unsafe {
- *out = malloc(image.buf.len() * ::std::mem::size_of::<cocoa_image::RGBA8>()) as *mut _;
+ *out = malloc(buf.len() * std::mem::size_of::<cocoa_image::RGBA8>()) as *mut cocoa_image::RGBA8;
if (*out).is_null() {
return pngquant_error::OUT_OF_MEMORY_ERROR;
}
- ::std::slice::from_raw_parts_mut(*out, image.buf.len()).clone_from_slice(&image.buf);
+ std::slice::from_raw_parts_mut(*out, buf.len()).copy_from_slice(&buf);
}
pngquant_error::SUCCESS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pngquant-2.15.1/rwpng.c new/pngquant-2.17.0/rwpng.c
--- old/pngquant-2.15.1/rwpng.c 2021-05-13 11:30:18.000000000 +0200
+++ new/pngquant-2.17.0/rwpng.c 2021-11-21 23:19:03.000000000 +0100
@@ -376,6 +376,12 @@
hOutProfile, TYPE_RGBA_8,
INTENT_PERCEPTUAL,
omp_get_max_threads() > 1 ? cmsFLAGS_NOCACHE : 0);
+ if(!hTransform) {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ cmsCloseProfile(hOutProfile);
+ cmsCloseProfile(hInProfile);
+ return LCMS_FATAL_ERROR;
+ }
#pragma omp parallel for \
if (mainprog_ptr->height*mainprog_ptr->width > 8000) \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pngquant-2.15.1/rwpng.h new/pngquant-2.17.0/rwpng.h
--- old/pngquant-2.15.1/rwpng.h 2021-05-13 11:30:18.000000000 +0200
+++ new/pngquant-2.17.0/rwpng.h 2021-11-21 23:19:03.000000000 +0100
@@ -32,6 +32,7 @@
LIBPNG_FATAL_ERROR = 25,
WRONG_INPUT_COLOR_TYPE = 26,
LIBPNG_INIT_ERROR = 35,
+ LCMS_FATAL_ERROR = 45,
TOO_LARGE_FILE = 98,
TOO_LOW_QUALITY = 99,
} pngquant_error;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pngquant-2.15.1/snapcraft.yaml new/pngquant-2.17.0/snapcraft.yaml
--- old/pngquant-2.15.1/snapcraft.yaml 2021-05-13 11:30:18.000000000 +0200
+++ new/pngquant-2.17.0/snapcraft.yaml 2021-11-21 23:19:03.000000000 +0100
@@ -1,5 +1,5 @@
name: pngquant
-version: 2.15.1
+version: 2.17.0
summary: pngquant
description: |
Lossy PNG compressor ��� pngquant command based
@@ -18,7 +18,7 @@
pngquant:
source-type: git
source: https://github.com/kornelski/pngquant.git
- source-tag: 2.15.1
+ source-tag: 2.17.0
plugin: autotools
configflags:
- --with-openmp
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package plasma5-openSUSE for openSUSE:Factory checked in at 2021-12-01 20:46:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/plasma5-openSUSE (Old)
and /work/SRC/openSUSE:Factory/.plasma5-openSUSE.new.31177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "plasma5-openSUSE"
Wed Dec 1 20:46:44 2021 rev:138 rq:934821 version:84.87~git20190606T185118~3d37a0c
Changes:
--------
--- /work/SRC/openSUSE:Factory/plasma5-openSUSE/plasma5-openSUSE.changes 2021-11-15 15:25:59.781816709 +0100
+++ /work/SRC/openSUSE:Factory/.plasma5-openSUSE.new.31177/plasma5-openSUSE.changes 2021-12-02 02:21:23.365416556 +0100
@@ -1,0 +2,5 @@
+Tue Nov 30 14:59:23 UTC 2021 - Fabian Vogt <fabian(a)ritter-vogt.de>
+
+- Update to 5.23.4
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package pcsc-lite for openSUSE:Factory checked in at 2021-12-01 20:46:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pcsc-lite (Old)
and /work/SRC/openSUSE:Factory/.pcsc-lite.new.31177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pcsc-lite"
Wed Dec 1 20:46:19 2021 rev:91 rq:934676 version:1.9.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/pcsc-lite/pcsc-lite.changes 2021-10-30 23:14:35.999097150 +0200
+++ /work/SRC/openSUSE:Factory/.pcsc-lite.new.31177/pcsc-lite.changes 2021-12-02 02:19:42.785767423 +0100
@@ -1,0 +2,5 @@
+Sat Nov 13 13:20:53 UTC 2021 - Callum Farmer <gmbr3(a)opensuse.org>
+
+- Change to systemd-sysusers
+
+-------------------------------------------------------------------
New:
----
pcsc-lite.sysusers
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pcsc-lite.spec ++++++
--- /var/tmp/diff_new_pack.S5am09/_old 2021-12-02 02:19:43.285765679 +0100
+++ /var/tmp/diff_new_pack.S5am09/_new 2021-12-02 02:19:43.289765665 +0100
@@ -39,21 +39,23 @@
Source6: pcsc-lite-reader-conf
Source7: https://pcsclite.apdu.fr/files/%{name}-%{version}.tar.bz2.asc
Source8: %{name}.keyring
+Source9: %{name}.sysusers
Patch0: systemd-service.patch
Patch1: harden_pcscd.service.patch
BuildRequires: gcc
BuildRequires: libtool
-BuildRequires: pkg-config
+BuildRequires: pkgconfig
BuildRequires: readline-devel
BuildRequires: pkgconfig(libsystemd)
+BuildRequires: sysuser-tools
Requires: libpcsclite1 = %{version}
Requires(post): %fillup_prereq
-Requires(pre): shadow
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: polkit-devel
BuildRequires: systemd-rpm-macros
BuildRequires: pkgconfig(libudev)
%{?systemd_requires}
+%sysusers_requires
%description
PC/SC Lite provides a Windows SCard interface in a small form factor
@@ -113,6 +115,7 @@
%patch1 -p1
%build
+%sysusers_generate_pre %{SOURCE9} %{PKG_USER} %{PKG_USER}.conf
%configure \
--disable-silent-rules \
--docdir=%{_docdir}/%{name} \
@@ -135,10 +138,9 @@
cp -a AUTHORS ChangeLog COPYING HELP NEWS README README.SUSE SECURITY TODO %{buildroot}%{_docdir}/%{name}
# Remove useless la files
find %{buildroot} -type f -name "*.la" -delete -print
+install -Dm0644 %{SOURCE9} %{buildroot}%{_sysusersdir}/%{PKG_USER}.conf
-%pre
-getent group %{PKG_GROUP} >/dev/null || groupadd -r %{PKG_GROUP}
-getent passwd %{PKG_USER} >/dev/null || useradd -r -g %{PKG_GROUP} -s %{_sbindir}/nologin -c "Smart Card Reader" -d /run/pcscd %{PKG_USER}
+%pre -f %{PKG_USER}.pre
%service_add_pre pcscd.service pcscd.socket
%post
@@ -178,6 +180,7 @@
%config(noreplace) %{_sysconfdir}/reader.conf.d/reader.conf
%{ifddir}
%{_unitdir}/*
+%{_sysusersdir}/%{PKG_USER}.conf
%{_fillupdir}/sysconfig.pcscd
# libpcsclite.so should stay in the main package (#732911). Third party packages may need it for dlopen().
%{_libdir}/libpcsclite.so
++++++ pcsc-lite.sysusers ++++++
#Type Name ID GECOS Home directory Shell
u scard - "Smart Card Reader" /run/pcscd -
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package pam_chroot for openSUSE:Factory checked in at 2021-12-01 20:47:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pam_chroot (Old)
and /work/SRC/openSUSE:Factory/.pam_chroot.new.31177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pam_chroot"
Wed Dec 1 20:47:27 2021 rev:19 rq:934974 version:0.9.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/pam_chroot/pam_chroot.changes 2011-09-23 12:21:34.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.pam_chroot.new.31177/pam_chroot.changes 2021-12-02 02:19:32.401803648 +0100
@@ -1,0 +2,7 @@
+Mon Oct 4 13:35:30 UTC 2021 - Josef M��llers <josef.moellers(a)suse.com>
+
+- Use the %_pam_moduledir macro in pam_chroot.spec in order to
+ have the package follow UsrMerge.
+ [bsc#1190948, pam_chroot.spec]
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pam_chroot.spec ++++++
--- /var/tmp/diff_new_pack.hEc6BA/_old 2021-12-02 02:19:32.841802113 +0100
+++ /var/tmp/diff_new_pack.hEc6BA/_new 2021-12-02 02:19:32.845802099 +0100
@@ -1,7 +1,7 @@
#
-# spec file for package pam_chroot (Version 0.9.2)
+# spec file for package pam_chroot
#
-# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,23 +12,22 @@
# 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/
#
-# norootforbuild
+%define _buildshell /bin/bash
Name: pam_chroot
-Url: http://sourceforge.net/projects/pam-chroot/
+URL: http://sourceforge.net/projects/pam-chroot/
BuildRequires: pam-devel
-License: GPL-2.0+
-Group: System/Libraries
Requires: pam
Provides: pam-modules:/etc/security/chroot.conf
-AutoReqProv: on
Version: 0.9.2
-Release: 42
+Release: 0
Summary: Linux-PAM Module that Allows a User to Be Chrooted
+License: GPL-2.0-or-later
+Group: System/Libraries
Source0: pam_chroot-0.9.2.tar.bz2
Source1: baselibs.conf
Source50: dlopen.sh
@@ -63,31 +62,17 @@
make CFLAGS="$RPM_OPT_FLAGS $EXTRA_CFLAGS -fPIC -DHAVE_SHADOW -DLINUX_PAM"
%install
-mkdir -p $RPM_BUILD_ROOT/%{_lib}/security
-make DESTDIR=$RPM_BUILD_ROOT install
-rm -rf $RPM_BUILD_ROOT/usr/{include,lib}
-rm -rf $RPM_BUILD_ROOT/%{_lib}/security/*.la
-#
-# On 64bit archs, we need to move same libraries ourself:
-#
-if [ %_lib = lib64 ]; then
- mv $RPM_BUILD_ROOT/lib/security/* $RPM_BUILD_ROOT/%{_lib}/security/
-fi
-# Check for module problems. Specifically, check that every module we just
-# installed can actually be loaded by a minimal PAM-aware application.
-for module in $RPM_BUILD_ROOT/%{_lib}/security/pam*.so ; do
- if ! sh $RPM_SOURCE_DIR/dlopen.sh -lpam -ldl ${module} ; then
- exit 1
- fi
-done
+mkdir -p %{buildroot}%{_pam_moduledir}
+make DESTDIR=%{buildroot} install
+[[ X"%{_pam_moduledir}" =~ X/lib.*/security/* ]] || mv %{buildroot}/lib/security/* %{buildroot}%{_pam_moduledir}
%clean
-rm -rf $RPM_BUILD_ROOT
+rm -rf %{buildroot}
%files
%defattr(-,root,root,755)
%doc CREDITS LICENSE README TROUBLESHOOTING
%attr(644,root,root) %config(noreplace) /etc/security/chroot.conf
-%attr(755,root,root) /%{_lib}/security/pam_*.so
+%attr(755,root,root) /%{_pam_moduledir}/pam_*.so
%changelog
1
0