openSUSE Commits
Threads by month
- ----- 2024 -----
- 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
October 2024
- 1 participants
- 1410 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-parse for openSUSE:Factory checked in at 2024-10-25 19:20:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-parse (Old)
and /work/SRC/openSUSE:Factory/.python-parse.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-parse"
Fri Oct 25 19:20:08 2024 rev:14 rq:1218157 version:1.20.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-parse/python-parse.changes 2024-06-20 16:49:35.298670505 +0200
+++ /work/SRC/openSUSE:Factory/.python-parse.new.2020/python-parse.changes 2024-10-25 19:22:53.470756499 +0200
@@ -1,0 +2,5 @@
+Thu Sep 26 21:25:03 UTC 2024 - Thiago Bertoldi <thiago.bertoldi(a)suse.com>
+
+- use modern python version on Leap15.6
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-parse.spec ++++++
--- /var/tmp/diff_new_pack.pU83kM/_old 2024-10-25 19:22:54.142784525 +0200
+++ /var/tmp/diff_new_pack.pU83kM/_new 2024-10-25 19:22:54.142784525 +0200
@@ -15,7 +15,7 @@
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
-
+%{?sle15_python_module_pythons}
Name: python-parse
Version: 1.20.2
Release: 0
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libxlsxwriter for openSUSE:Factory checked in at 2024-10-25 19:20:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libxlsxwriter (Old)
and /work/SRC/openSUSE:Factory/.libxlsxwriter.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libxlsxwriter"
Fri Oct 25 19:20:01 2024 rev:5 rq:1218147 version:1.1.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/libxlsxwriter/libxlsxwriter.changes 2024-08-01 22:05:34.547303526 +0200
+++ /work/SRC/openSUSE:Factory/.libxlsxwriter.new.2020/libxlsxwriter.changes 2024-10-25 19:20:50.405624098 +0200
@@ -1,0 +2,8 @@
+Fri Oct 25 00:26:54 UTC 2024 - Joshua Smith <smolsheep(a)opensuse.org>
+
+- Update to version 1.1.9:
+ * CMake: Check for third party libraries using pkgconfig
+ * Fix minor pointer/value error in lxw_name_to_row() and
+ lxw_name_to_col() utility functions.
+
+-------------------------------------------------------------------
Old:
----
libxlsxwriter-1.1.8.tar.gz
New:
----
libxlsxwriter-1.1.9.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libxlsxwriter.spec ++++++
--- /var/tmp/diff_new_pack.KIIuuh/_old 2024-10-25 19:20:50.921645628 +0200
+++ /var/tmp/diff_new_pack.KIIuuh/_new 2024-10-25 19:20:50.925645795 +0200
@@ -19,7 +19,7 @@
%define libname libxlsxwriter7
Name: libxlsxwriter
-Version: 1.1.8
+Version: 1.1.9
Release: 0
Summary: A C library for creating Excel XLSX files
License: BSD-2-Clause
++++++ libxlsxwriter-1.1.8.tar.gz -> libxlsxwriter-1.1.9.tar.gz ++++++
/work/SRC/openSUSE:Factory/libxlsxwriter/libxlsxwriter-1.1.8.tar.gz /work/SRC/openSUSE:Factory/.libxlsxwriter.new.2020/libxlsxwriter-1.1.9.tar.gz differ: char 13, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-pre-commit for openSUSE:Factory checked in at 2024-10-25 19:19:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pre-commit (Old)
and /work/SRC/openSUSE:Factory/.python-pre-commit.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pre-commit"
Fri Oct 25 19:19:47 2024 rev:22 rq:1218114 version:4.0.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pre-commit/python-pre-commit.changes 2024-08-06 09:08:32.406225019 +0200
+++ /work/SRC/openSUSE:Factory/.python-pre-commit.new.2020/python-pre-commit.changes 2024-10-25 19:20:39.221157451 +0200
@@ -1,0 +2,16 @@
+Thu Oct 24 19:23:34 UTC 2024 - Dirk Müller <dmueller(a)suse.com>
+
+- update to 4.0.1:
+ * Fix `pre-commit migrate-config` for unquoted deprecated
+ stages names with purelib `pyyaml`.
+ * Improve `pre-commit migrate-config` to handle more yaml
+ formats.
+ * Handle `stages` deprecation in `pre-commit migrate-config`.
+ * Upgrade `ruby-build`.
+ * Add "sensible regex" warnings to `repo: meta`.
+ * Add warnings for deprecated `stages` (`commit` -> `pre-
+ commit`, `push` -> `pre-push`, `merge-commit` -> `pre-merge-commit`).
+ * `language: python_venv` has been removed -- use `language:
+ python` instead.
+
+-------------------------------------------------------------------
Old:
----
pre-commit-3.8.0.tar.gz
New:
----
pre-commit-4.0.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pre-commit.spec ++++++
--- /var/tmp/diff_new_pack.ocM3e6/_old 2024-10-25 19:20:39.685176811 +0200
+++ /var/tmp/diff_new_pack.ocM3e6/_new 2024-10-25 19:20:39.689176978 +0200
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-pre-commit
-Version: 3.8.0
+Version: 4.0.1
Release: 0
Summary: Multi-language pre-commit hooks
License: MIT
++++++ pre-commit-3.8.0.tar.gz -> pre-commit-4.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/.pre-commit-config.yaml new/pre-commit-4.0.1/.pre-commit-config.yaml
--- old/pre-commit-3.8.0/.pre-commit-config.yaml 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/.pre-commit-config.yaml 2024-10-08 18:08:49.000000000 +0200
@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v4.6.0
+ rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
@@ -24,7 +24,7 @@
hooks:
- id: add-trailing-comma
- repo: https://github.com/asottile/pyupgrade
- rev: v3.16.0
+ rev: v3.17.0
hooks:
- id: pyupgrade
args: [--py39-plus]
@@ -33,11 +33,11 @@
hooks:
- id: autopep8
- repo: https://github.com/PyCQA/flake8
- rev: 7.1.0
+ rev: 7.1.1
hooks:
- id: flake8
- repo: https://github.com/pre-commit/mirrors-mypy
- rev: v1.11.0
+ rev: v1.11.2
hooks:
- id: mypy
additional_dependencies: [types-pyyaml]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/CHANGELOG.md new/pre-commit-4.0.1/CHANGELOG.md
--- old/pre-commit-3.8.0/CHANGELOG.md 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/CHANGELOG.md 2024-10-08 18:08:49.000000000 +0200
@@ -1,3 +1,37 @@
+4.0.1 - 2024-10-08
+==================
+
+### Fixes
+- Fix `pre-commit migrate-config` for unquoted deprecated stages names with
+ purelib `pyyaml`.
+ - #3324 PR by @asottile.
+ - pre-commit-ci/issues#234 issue by @lorenzwalthert.
+
+4.0.0 - 2024-10-05
+==================
+
+### Features
+- Improve `pre-commit migrate-config` to handle more yaml formats.
+ - #3301 PR by @asottile.
+- Handle `stages` deprecation in `pre-commit migrate-config`.
+ - #3302 PR by @asottile.
+ - #2732 issue by @asottile.
+- Upgrade `ruby-build`.
+ - #3199 PR by @ThisGuyCodes.
+- Add "sensible regex" warnings to `repo: meta`.
+ - #3311 PR by @asottile.
+- Add warnings for deprecated `stages` (`commit` -> `pre-commit`, `push` ->
+ `pre-push`, `merge-commit` -> `pre-merge-commit`).
+ - #3312 PR by @asottile.
+ - #3313 PR by @asottile.
+ - #3315 PR by @asottile.
+ - #2732 issue by @asottile.
+
+### Migrating
+- `language: python_venv` has been removed -- use `language: python` instead.
+ - #3320 PR by @asottile.
+ - #2734 issue by @asottile.
+
3.8.0 - 2024-07-28
==================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/all_languages.py new/pre-commit-4.0.1/pre_commit/all_languages.py
--- old/pre-commit-3.8.0/pre_commit/all_languages.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/all_languages.py 2024-10-08 18:08:49.000000000 +0200
@@ -44,7 +44,5 @@
'script': script,
'swift': swift,
'system': system,
- # TODO: fully deprecate `python_venv`
- 'python_venv': python,
}
language_names = sorted(languages)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/clientlib.py new/pre-commit-4.0.1/pre_commit/clientlib.py
--- old/pre-commit-3.8.0/pre_commit/clientlib.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/clientlib.py 2024-10-08 18:08:49.000000000 +0200
@@ -2,6 +2,7 @@
import functools
import logging
+import os.path
import re
import shlex
import sys
@@ -70,6 +71,43 @@
return _STAGES.get(stage, stage)
+MINIMAL_MANIFEST_SCHEMA = cfgv.Array(
+ cfgv.Map(
+ 'Hook', 'id',
+ cfgv.Required('id', cfgv.check_string),
+ cfgv.Optional('stages', cfgv.check_array(cfgv.check_string), []),
+ ),
+)
+
+
+def warn_for_stages_on_repo_init(repo: str, directory: str) -> None:
+ try:
+ manifest = cfgv.load_from_filename(
+ os.path.join(directory, C.MANIFEST_FILE),
+ schema=MINIMAL_MANIFEST_SCHEMA,
+ load_strategy=yaml_load,
+ exc_tp=InvalidManifestError,
+ )
+ except InvalidManifestError:
+ return # they'll get a better error message when it actually loads!
+
+ legacy_stages = {} # sorted set
+ for hook in manifest:
+ for stage in hook.get('stages', ()):
+ if stage in _STAGES:
+ legacy_stages[stage] = True
+
+ if legacy_stages:
+ logger.warning(
+ f'repo `{repo}` uses deprecated stage names '
+ f'({", ".join(legacy_stages)}) which will be removed in a '
+ f'future version. '
+ f'Hint: often `pre-commit autoupdate --repo {shlex.quote(repo)}` '
+ f'will fix this. '
+ f'if it does not -- consider reporting an issue to that repo.',
+ )
+
+
class StagesMigrationNoDefault(NamedTuple):
key: str
default: Sequence[str]
@@ -99,6 +137,58 @@
super().apply_default(dct)
+class DeprecatedStagesWarning(NamedTuple):
+ key: str
+
+ def check(self, dct: dict[str, Any]) -> None:
+ if self.key not in dct:
+ return
+
+ val = dct[self.key]
+ cfgv.check_array(cfgv.check_any)(val)
+
+ legacy_stages = [stage for stage in val if stage in _STAGES]
+ if legacy_stages:
+ logger.warning(
+ f'hook id `{dct["id"]}` uses deprecated stage names '
+ f'({", ".join(legacy_stages)}) which will be removed in a '
+ f'future version. '
+ f'run: `pre-commit migrate-config` to automatically fix this.',
+ )
+
+ def apply_default(self, dct: dict[str, Any]) -> None:
+ pass
+
+ def remove_default(self, dct: dict[str, Any]) -> None:
+ raise NotImplementedError
+
+
+class DeprecatedDefaultStagesWarning(NamedTuple):
+ key: str
+
+ def check(self, dct: dict[str, Any]) -> None:
+ if self.key not in dct:
+ return
+
+ val = dct[self.key]
+ cfgv.check_array(cfgv.check_any)(val)
+
+ legacy_stages = [stage for stage in val if stage in _STAGES]
+ if legacy_stages:
+ logger.warning(
+ f'top-level `default_stages` uses deprecated stage names '
+ f'({", ".join(legacy_stages)}) which will be removed in a '
+ f'future version. '
+ f'run: `pre-commit migrate-config` to automatically fix this.',
+ )
+
+ def apply_default(self, dct: dict[str, Any]) -> None:
+ pass
+
+ def remove_default(self, dct: dict[str, Any]) -> None:
+ raise NotImplementedError
+
+
MANIFEST_HOOK_DICT = cfgv.Map(
'Hook', 'id',
@@ -267,6 +357,12 @@
raise cfgv.ValidationError(f'{self.key!r} cannot be overridden')
+_COMMON_HOOK_WARNINGS = (
+ OptionalSensibleRegexAtHook('files', cfgv.check_string),
+ OptionalSensibleRegexAtHook('exclude', cfgv.check_string),
+ DeprecatedStagesWarning('stages'),
+)
+
META_HOOK_DICT = cfgv.Map(
'Hook', 'id',
cfgv.Required('id', cfgv.check_string),
@@ -289,6 +385,7 @@
item
for item in MANIFEST_HOOK_DICT.items
),
+ *_COMMON_HOOK_WARNINGS,
)
CONFIG_HOOK_DICT = cfgv.Map(
'Hook', 'id',
@@ -306,16 +403,13 @@
if item.key != 'stages'
),
StagesMigrationNoDefault('stages', []),
- OptionalSensibleRegexAtHook('files', cfgv.check_string),
- OptionalSensibleRegexAtHook('exclude', cfgv.check_string),
+ *_COMMON_HOOK_WARNINGS,
)
LOCAL_HOOK_DICT = cfgv.Map(
'Hook', 'id',
*MANIFEST_HOOK_DICT.items,
-
- OptionalSensibleRegexAtHook('files', cfgv.check_string),
- OptionalSensibleRegexAtHook('exclude', cfgv.check_string),
+ *_COMMON_HOOK_WARNINGS,
)
CONFIG_REPO_DICT = cfgv.Map(
'Repository', 'repo',
@@ -368,6 +462,7 @@
'default_language_version', DEFAULT_LANGUAGE_VERSION, {},
),
StagesMigration('default_stages', STAGES),
+ DeprecatedDefaultStagesWarning('default_stages'),
cfgv.Optional('files', check_string_regex, ''),
cfgv.Optional('exclude', check_string_regex, '^$'),
cfgv.Optional('fail_fast', cfgv.check_bool, False),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/commands/migrate_config.py new/pre-commit-4.0.1/pre_commit/commands/migrate_config.py
--- old/pre-commit-3.8.0/pre_commit/commands/migrate_config.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/commands/migrate_config.py 2024-10-08 18:08:49.000000000 +0200
@@ -1,13 +1,21 @@
from __future__ import annotations
-import re
+import functools
+import itertools
import textwrap
+from typing import Callable
import cfgv
import yaml
+from yaml.nodes import ScalarNode
from pre_commit.clientlib import InvalidConfigError
+from pre_commit.yaml import yaml_compose
from pre_commit.yaml import yaml_load
+from pre_commit.yaml_rewrite import MappingKey
+from pre_commit.yaml_rewrite import MappingValue
+from pre_commit.yaml_rewrite import match
+from pre_commit.yaml_rewrite import SequenceItem
def _is_header_line(line: str) -> bool:
@@ -38,16 +46,69 @@
return contents
-def _migrate_sha_to_rev(contents: str) -> str:
- return re.sub(r'(\n\s+)sha:', r'\1rev:', contents)
+def _preserve_style(n: ScalarNode, *, s: str) -> str:
+ style = n.style or ''
+ return f'{style}{s}{style}'
-def _migrate_python_venv(contents: str) -> str:
- return re.sub(
- r'(\n\s+)language: python_venv\b',
- r'\1language: python',
- contents,
+def _fix_stage(n: ScalarNode) -> str:
+ return _preserve_style(n, s=f'pre-{n.value}')
+
+
+def _migrate_composed(contents: str) -> str:
+ tree = yaml_compose(contents)
+ rewrites: list[tuple[ScalarNode, Callable[[ScalarNode], str]]] = []
+
+ # sha -> rev
+ sha_to_rev_replace = functools.partial(_preserve_style, s='rev')
+ sha_to_rev_matcher = (
+ MappingValue('repos'),
+ SequenceItem(),
+ MappingKey('sha'),
+ )
+ for node in match(tree, sha_to_rev_matcher):
+ rewrites.append((node, sha_to_rev_replace))
+
+ # python_venv -> python
+ language_matcher = (
+ MappingValue('repos'),
+ SequenceItem(),
+ MappingValue('hooks'),
+ SequenceItem(),
+ MappingValue('language'),
+ )
+ python_venv_replace = functools.partial(_preserve_style, s='python')
+ for node in match(tree, language_matcher):
+ if node.value == 'python_venv':
+ rewrites.append((node, python_venv_replace))
+
+ # stages rewrites
+ default_stages_matcher = (MappingValue('default_stages'), SequenceItem())
+ default_stages_match = match(tree, default_stages_matcher)
+ hook_stages_matcher = (
+ MappingValue('repos'),
+ SequenceItem(),
+ MappingValue('hooks'),
+ SequenceItem(),
+ MappingValue('stages'),
+ SequenceItem(),
)
+ hook_stages_match = match(tree, hook_stages_matcher)
+ for node in itertools.chain(default_stages_match, hook_stages_match):
+ if node.value in {'commit', 'push', 'merge-commit'}:
+ rewrites.append((node, _fix_stage))
+
+ rewrites.sort(reverse=True, key=lambda nf: nf[0].start_mark.index)
+
+ src_parts = []
+ end: int | None = None
+ for node, func in rewrites:
+ src_parts.append(contents[node.end_mark.index:end])
+ src_parts.append(func(node))
+ end = node.start_mark.index
+ src_parts.append(contents[:end])
+ src_parts.reverse()
+ return ''.join(src_parts)
def migrate_config(config_file: str, quiet: bool = False) -> int:
@@ -62,8 +123,7 @@
raise cfgv.ValidationError(str(e))
contents = _migrate_map(contents)
- contents = _migrate_sha_to_rev(contents)
- contents = _migrate_python_venv(contents)
+ contents = _migrate_composed(contents)
if contents != orig_contents:
with open(config_file, 'w') as f:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/commands/run.py new/pre-commit-4.0.1/pre_commit/commands/run.py
--- old/pre-commit-3.8.0/pre_commit/commands/run.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/commands/run.py 2024-10-08 18:08:49.000000000 +0200
@@ -61,7 +61,7 @@
names: Iterable[str],
include: str,
exclude: str,
-) -> Generator[str, None, None]:
+) -> Generator[str]:
include_re, exclude_re = re.compile(include), re.compile(exclude)
return (
filename for filename in names
@@ -84,7 +84,7 @@
types: Iterable[str],
types_or: Iterable[str],
exclude_types: Iterable[str],
- ) -> Generator[str, None, None]:
+ ) -> Generator[str]:
types = frozenset(types)
types_or = frozenset(types_or)
exclude_types = frozenset(exclude_types)
@@ -97,7 +97,7 @@
):
yield filename
- def filenames_for_hook(self, hook: Hook) -> Generator[str, None, None]:
+ def filenames_for_hook(self, hook: Hook) -> Generator[str]:
return self.by_types(
filter_by_include_exclude(
self.filenames,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/envcontext.py new/pre-commit-4.0.1/pre_commit/envcontext.py
--- old/pre-commit-3.8.0/pre_commit/envcontext.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/envcontext.py 2024-10-08 18:08:49.000000000 +0200
@@ -33,7 +33,7 @@
def envcontext(
patch: PatchesT,
_env: MutableMapping[str, str] | None = None,
-) -> Generator[None, None, None]:
+) -> Generator[None]:
"""In this context, `os.environ` is modified according to `patch`.
`patch` is an iterable of 2-tuples (key, value):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/error_handler.py new/pre-commit-4.0.1/pre_commit/error_handler.py
--- old/pre-commit-3.8.0/pre_commit/error_handler.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/error_handler.py 2024-10-08 18:08:49.000000000 +0200
@@ -68,7 +68,7 @@
@contextlib.contextmanager
-def error_handler() -> Generator[None, None, None]:
+def error_handler() -> Generator[None]:
try:
yield
except (Exception, KeyboardInterrupt) as e:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/file_lock.py new/pre-commit-4.0.1/pre_commit/file_lock.py
--- old/pre-commit-3.8.0/pre_commit/file_lock.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/file_lock.py 2024-10-08 18:08:49.000000000 +0200
@@ -20,7 +20,7 @@
def _locked(
fileno: int,
blocked_cb: Callable[[], None],
- ) -> Generator[None, None, None]:
+ ) -> Generator[None]:
try:
msvcrt.locking(fileno, msvcrt.LK_NBLCK, _region)
except OSError:
@@ -53,7 +53,7 @@
def _locked(
fileno: int,
blocked_cb: Callable[[], None],
- ) -> Generator[None, None, None]:
+ ) -> Generator[None]:
try:
fcntl.flock(fileno, fcntl.LOCK_EX | fcntl.LOCK_NB)
except OSError: # pragma: no cover (tests are single-threaded)
@@ -69,7 +69,7 @@
def lock(
path: str,
blocked_cb: Callable[[], None],
-) -> Generator[None, None, None]:
+) -> Generator[None]:
with open(path, 'a+') as f:
with _locked(f.fileno(), blocked_cb):
yield
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/lang_base.py new/pre-commit-4.0.1/pre_commit/lang_base.py
--- old/pre-commit-3.8.0/pre_commit/lang_base.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/lang_base.py 2024-10-08 18:08:49.000000000 +0200
@@ -127,7 +127,7 @@
@contextlib.contextmanager
-def no_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
+def no_env(prefix: Prefix, version: str) -> Generator[None]:
yield
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/languages/conda.py new/pre-commit-4.0.1/pre_commit/languages/conda.py
--- old/pre-commit-3.8.0/pre_commit/languages/conda.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/languages/conda.py 2024-10-08 18:08:49.000000000 +0200
@@ -41,7 +41,7 @@
@contextlib.contextmanager
-def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
+def in_env(prefix: Prefix, version: str) -> Generator[None]:
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
with envcontext(get_env_patch(envdir)):
yield
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/languages/coursier.py new/pre-commit-4.0.1/pre_commit/languages/coursier.py
--- old/pre-commit-3.8.0/pre_commit/languages/coursier.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/languages/coursier.py 2024-10-08 18:08:49.000000000 +0200
@@ -70,7 +70,7 @@
@contextlib.contextmanager
-def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
+def in_env(prefix: Prefix, version: str) -> Generator[None]:
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
with envcontext(get_env_patch(envdir)):
yield
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/languages/dart.py new/pre-commit-4.0.1/pre_commit/languages/dart.py
--- old/pre-commit-3.8.0/pre_commit/languages/dart.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/languages/dart.py 2024-10-08 18:08:49.000000000 +0200
@@ -29,7 +29,7 @@
@contextlib.contextmanager
-def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
+def in_env(prefix: Prefix, version: str) -> Generator[None]:
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
with envcontext(get_env_patch(envdir)):
yield
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/languages/dotnet.py new/pre-commit-4.0.1/pre_commit/languages/dotnet.py
--- old/pre-commit-3.8.0/pre_commit/languages/dotnet.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/languages/dotnet.py 2024-10-08 18:08:49.000000000 +0200
@@ -30,14 +30,14 @@
@contextlib.contextmanager
-def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
+def in_env(prefix: Prefix, version: str) -> Generator[None]:
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
with envcontext(get_env_patch(envdir)):
yield
@contextlib.contextmanager
-def _nuget_config_no_sources() -> Generator[str, None, None]:
+def _nuget_config_no_sources() -> Generator[str]:
with tempfile.TemporaryDirectory() as tmpdir:
nuget_config = os.path.join(tmpdir, 'nuget.config')
with open(nuget_config, 'w') as f:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/languages/golang.py new/pre-commit-4.0.1/pre_commit/languages/golang.py
--- old/pre-commit-3.8.0/pre_commit/languages/golang.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/languages/golang.py 2024-10-08 18:08:49.000000000 +0200
@@ -121,7 +121,7 @@
@contextlib.contextmanager
-def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
+def in_env(prefix: Prefix, version: str) -> Generator[None]:
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
with envcontext(get_env_patch(envdir, version)):
yield
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/languages/haskell.py new/pre-commit-4.0.1/pre_commit/languages/haskell.py
--- old/pre-commit-3.8.0/pre_commit/languages/haskell.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/languages/haskell.py 2024-10-08 18:08:49.000000000 +0200
@@ -24,7 +24,7 @@
@contextlib.contextmanager
-def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
+def in_env(prefix: Prefix, version: str) -> Generator[None]:
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
with envcontext(get_env_patch(envdir)):
yield
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/languages/lua.py new/pre-commit-4.0.1/pre_commit/languages/lua.py
--- old/pre-commit-3.8.0/pre_commit/languages/lua.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/languages/lua.py 2024-10-08 18:08:49.000000000 +0200
@@ -44,7 +44,7 @@
@contextlib.contextmanager # pragma: win32 no cover
-def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
+def in_env(prefix: Prefix, version: str) -> Generator[None]:
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
with envcontext(get_env_patch(envdir)):
yield
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/languages/node.py new/pre-commit-4.0.1/pre_commit/languages/node.py
--- old/pre-commit-3.8.0/pre_commit/languages/node.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/languages/node.py 2024-10-08 18:08:49.000000000 +0200
@@ -59,7 +59,7 @@
@contextlib.contextmanager
-def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
+def in_env(prefix: Prefix, version: str) -> Generator[None]:
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
with envcontext(get_env_patch(envdir)):
yield
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/languages/perl.py new/pre-commit-4.0.1/pre_commit/languages/perl.py
--- old/pre-commit-3.8.0/pre_commit/languages/perl.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/languages/perl.py 2024-10-08 18:08:49.000000000 +0200
@@ -33,7 +33,7 @@
@contextlib.contextmanager
-def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
+def in_env(prefix: Prefix, version: str) -> Generator[None]:
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
with envcontext(get_env_patch(envdir)):
yield
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/languages/python.py new/pre-commit-4.0.1/pre_commit/languages/python.py
--- old/pre-commit-3.8.0/pre_commit/languages/python.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/languages/python.py 2024-10-08 18:08:49.000000000 +0200
@@ -152,7 +152,7 @@
@contextlib.contextmanager
-def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
+def in_env(prefix: Prefix, version: str) -> Generator[None]:
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
with envcontext(get_env_patch(envdir)):
yield
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/languages/r.py new/pre-commit-4.0.1/pre_commit/languages/r.py
--- old/pre-commit-3.8.0/pre_commit/languages/r.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/languages/r.py 2024-10-08 18:08:49.000000000 +0200
@@ -85,7 +85,7 @@
@contextlib.contextmanager
-def _r_code_in_tempfile(code: str) -> Generator[str, None, None]:
+def _r_code_in_tempfile(code: str) -> Generator[str]:
"""
To avoid quoting and escaping issues, avoid `Rscript [options] -e {expr}`
but use `Rscript [options] path/to/file_with_expr.R`
@@ -105,7 +105,7 @@
@contextlib.contextmanager
-def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
+def in_env(prefix: Prefix, version: str) -> Generator[None]:
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
with envcontext(get_env_patch(envdir)):
yield
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/languages/ruby.py new/pre-commit-4.0.1/pre_commit/languages/ruby.py
--- old/pre-commit-3.8.0/pre_commit/languages/ruby.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/languages/ruby.py 2024-10-08 18:08:49.000000000 +0200
@@ -73,7 +73,7 @@
@contextlib.contextmanager
-def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
+def in_env(prefix: Prefix, version: str) -> Generator[None]:
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
with envcontext(get_env_patch(envdir, version)):
yield
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/languages/rust.py new/pre-commit-4.0.1/pre_commit/languages/rust.py
--- old/pre-commit-3.8.0/pre_commit/languages/rust.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/languages/rust.py 2024-10-08 18:08:49.000000000 +0200
@@ -61,7 +61,7 @@
@contextlib.contextmanager
-def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
+def in_env(prefix: Prefix, version: str) -> Generator[None]:
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
with envcontext(get_env_patch(envdir, version)):
yield
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/languages/swift.py new/pre-commit-4.0.1/pre_commit/languages/swift.py
--- old/pre-commit-3.8.0/pre_commit/languages/swift.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/languages/swift.py 2024-10-08 18:08:49.000000000 +0200
@@ -27,7 +27,7 @@
@contextlib.contextmanager # pragma: win32 no cover
-def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
+def in_env(prefix: Prefix, version: str) -> Generator[None]:
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
with envcontext(get_env_patch(envdir)):
yield
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/logging_handler.py new/pre-commit-4.0.1/pre_commit/logging_handler.py
--- old/pre-commit-3.8.0/pre_commit/logging_handler.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/logging_handler.py 2024-10-08 18:08:49.000000000 +0200
@@ -32,7 +32,7 @@
@contextlib.contextmanager
-def logging_handler(use_color: bool) -> Generator[None, None, None]:
+def logging_handler(use_color: bool) -> Generator[None]:
handler = LoggingHandler(use_color)
logger.addHandler(handler)
logger.setLevel(logging.INFO)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/repository.py new/pre-commit-4.0.1/pre_commit/repository.py
--- old/pre-commit-3.8.0/pre_commit/repository.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/repository.py 2024-10-08 18:08:49.000000000 +0200
@@ -3,7 +3,6 @@
import json
import logging
import os
-import shlex
from collections.abc import Sequence
from typing import Any
@@ -68,14 +67,6 @@
logger.info('Once installed this environment will be reused.')
logger.info('This may take a few minutes...')
- if hook.language == 'python_venv':
- logger.warning(
- f'`repo: {hook.src}` uses deprecated `language: python_venv`. '
- f'This is an alias for `language: python`. '
- f'Often `pre-commit autoupdate --repo {shlex.quote(hook.src)}` '
- f'will fix this.',
- )
-
lang = languages[hook.language]
assert lang.ENVIRONMENT_DIR is not None
Binary files old/pre-commit-3.8.0/pre_commit/resources/rbenv.tar.gz and new/pre-commit-4.0.1/pre_commit/resources/rbenv.tar.gz differ
Binary files old/pre-commit-3.8.0/pre_commit/resources/ruby-build.tar.gz and new/pre-commit-4.0.1/pre_commit/resources/ruby-build.tar.gz differ
Binary files old/pre-commit-3.8.0/pre_commit/resources/ruby-download.tar.gz and new/pre-commit-4.0.1/pre_commit/resources/ruby-download.tar.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/staged_files_only.py new/pre-commit-4.0.1/pre_commit/staged_files_only.py
--- old/pre-commit-3.8.0/pre_commit/staged_files_only.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/staged_files_only.py 2024-10-08 18:08:49.000000000 +0200
@@ -33,7 +33,7 @@
@contextlib.contextmanager
-def _intent_to_add_cleared() -> Generator[None, None, None]:
+def _intent_to_add_cleared() -> Generator[None]:
intent_to_add = git.intent_to_add_files()
if intent_to_add:
logger.warning('Unstaged intent-to-add files detected.')
@@ -48,7 +48,7 @@
@contextlib.contextmanager
-def _unstaged_changes_cleared(patch_dir: str) -> Generator[None, None, None]:
+def _unstaged_changes_cleared(patch_dir: str) -> Generator[None]:
tree = cmd_output('git', 'write-tree')[1].strip()
diff_cmd = (
'git', 'diff-index', '--ignore-submodules', '--binary',
@@ -105,7 +105,7 @@
@contextlib.contextmanager
-def staged_files_only(patch_dir: str) -> Generator[None, None, None]:
+def staged_files_only(patch_dir: str) -> Generator[None]:
"""Clear any unstaged changes from the git working directory inside this
context.
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/store.py new/pre-commit-4.0.1/pre_commit/store.py
--- old/pre-commit-3.8.0/pre_commit/store.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/store.py 2024-10-08 18:08:49.000000000 +0200
@@ -10,6 +10,7 @@
from typing import Callable
import pre_commit.constants as C
+from pre_commit import clientlib
from pre_commit import file_lock
from pre_commit import git
from pre_commit.util import CalledProcessError
@@ -101,7 +102,7 @@
os.replace(tmpfile, self.db_path)
@contextlib.contextmanager
- def exclusive_lock(self) -> Generator[None, None, None]:
+ def exclusive_lock(self) -> Generator[None]:
def blocked_cb() -> None: # pragma: no cover (tests are in-process)
logger.info('Locking pre-commit directory')
@@ -112,7 +113,7 @@
def connect(
self,
db_path: str | None = None,
- ) -> Generator[sqlite3.Connection, None, None]:
+ ) -> Generator[sqlite3.Connection]:
db_path = db_path or self.db_path
# sqlite doesn't close its fd with its contextmanager >.<
# contextlib.closing fixes this.
@@ -136,6 +137,7 @@
deps: Sequence[str],
make_strategy: Callable[[str], None],
) -> str:
+ original_repo = repo
repo = self.db_repo_name(repo, deps)
def _get_result() -> str | None:
@@ -168,6 +170,9 @@
'INSERT INTO repos (repo, ref, path) VALUES (?, ?, ?)',
[repo, ref, directory],
)
+
+ clientlib.warn_for_stages_on_repo_init(original_repo, directory)
+
return directory
def _complete_clone(self, ref: str, git_cmd: Callable[..., None]) -> None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/util.py new/pre-commit-4.0.1/pre_commit/util.py
--- old/pre-commit-3.8.0/pre_commit/util.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/util.py 2024-10-08 18:08:49.000000000 +0200
@@ -25,7 +25,7 @@
@contextlib.contextmanager
-def clean_path_on_failure(path: str) -> Generator[None, None, None]:
+def clean_path_on_failure(path: str) -> Generator[None]:
"""Cleans up the directory on an exceptional failure."""
try:
yield
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/xargs.py new/pre-commit-4.0.1/pre_commit/xargs.py
--- old/pre-commit-3.8.0/pre_commit/xargs.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/xargs.py 2024-10-08 18:08:49.000000000 +0200
@@ -120,7 +120,6 @@
@contextlib.contextmanager
def _thread_mapper(maxsize: int) -> Generator[
Callable[[Callable[[TArg], TRet], Iterable[TArg]], Iterable[TRet]],
- None, None,
]:
if maxsize == 1:
yield map
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/yaml.py new/pre-commit-4.0.1/pre_commit/yaml.py
--- old/pre-commit-3.8.0/pre_commit/yaml.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/pre_commit/yaml.py 2024-10-08 18:08:49.000000000 +0200
@@ -6,6 +6,7 @@
import yaml
Loader = getattr(yaml, 'CSafeLoader', yaml.SafeLoader)
+yaml_compose = functools.partial(yaml.compose, Loader=Loader)
yaml_load = functools.partial(yaml.load, Loader=Loader)
Dumper = getattr(yaml, 'CSafeDumper', yaml.SafeDumper)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/pre_commit/yaml_rewrite.py new/pre-commit-4.0.1/pre_commit/yaml_rewrite.py
--- old/pre-commit-3.8.0/pre_commit/yaml_rewrite.py 1970-01-01 01:00:00.000000000 +0100
+++ new/pre-commit-4.0.1/pre_commit/yaml_rewrite.py 2024-10-08 18:08:49.000000000 +0200
@@ -0,0 +1,52 @@
+from __future__ import annotations
+
+from collections.abc import Generator
+from collections.abc import Iterable
+from typing import NamedTuple
+from typing import Protocol
+
+from yaml.nodes import MappingNode
+from yaml.nodes import Node
+from yaml.nodes import ScalarNode
+from yaml.nodes import SequenceNode
+
+
+class _Matcher(Protocol):
+ def match(self, n: Node) -> Generator[Node]: ...
+
+
+class MappingKey(NamedTuple):
+ k: str
+
+ def match(self, n: Node) -> Generator[Node]:
+ if isinstance(n, MappingNode):
+ for k, _ in n.value:
+ if k.value == self.k:
+ yield k
+
+
+class MappingValue(NamedTuple):
+ k: str
+
+ def match(self, n: Node) -> Generator[Node]:
+ if isinstance(n, MappingNode):
+ for k, v in n.value:
+ if k.value == self.k:
+ yield v
+
+
+class SequenceItem(NamedTuple):
+ def match(self, n: Node) -> Generator[Node]:
+ if isinstance(n, SequenceNode):
+ yield from n.value
+
+
+def _match(gen: Iterable[Node], m: _Matcher) -> Iterable[Node]:
+ return (n for src in gen for n in m.match(src))
+
+
+def match(n: Node, matcher: tuple[_Matcher, ...]) -> Generator[ScalarNode]:
+ gen: Iterable[Node] = (n,)
+ for m in matcher:
+ gen = _match(gen, m)
+ return (n for n in gen if isinstance(n, ScalarNode))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/setup.cfg new/pre-commit-4.0.1/setup.cfg
--- old/pre-commit-3.8.0/setup.cfg 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/setup.cfg 2024-10-08 18:08:49.000000000 +0200
@@ -1,6 +1,6 @@
[metadata]
name = pre_commit
-version = 3.8.0
+version = 4.0.1
description = A framework for managing and maintaining multi-language pre-commit hooks.
long_description = file: README.md
long_description_content_type = text/markdown
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/testing/make-archives new/pre-commit-4.0.1/testing/make-archives
--- old/pre-commit-3.8.0/testing/make-archives 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/testing/make-archives 2024-10-08 18:08:49.000000000 +0200
@@ -17,7 +17,7 @@
REPOS = (
('rbenv', 'https://github.com/rbenv/rbenv', '38e1fbb'),
- ('ruby-build', 'https://github.com/rbenv/ruby-build', '855b963'),
+ ('ruby-build', 'https://github.com/rbenv/ruby-build', 'ed384c8'),
(
'ruby-download',
'https://github.com/garnieretienne/rvm-download',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/tests/all_languages_test.py new/pre-commit-4.0.1/tests/all_languages_test.py
--- old/pre-commit-3.8.0/tests/all_languages_test.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/tests/all_languages_test.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,7 +0,0 @@
-from __future__ import annotations
-
-from pre_commit.all_languages import languages
-
-
-def test_python_venv_is_an_alias_to_python():
- assert languages['python_venv'] is languages['python']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/tests/clientlib_test.py new/pre-commit-4.0.1/tests/clientlib_test.py
--- old/pre-commit-3.8.0/tests/clientlib_test.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/tests/clientlib_test.py 2024-10-08 18:08:49.000000000 +0200
@@ -256,6 +256,24 @@
]
+def test_validate_optional_sensible_regex_at_meta_hook(caplog):
+ config_obj = {
+ 'repo': 'meta',
+ 'hooks': [{'id': 'identity', 'files': 'dir/*.py'}],
+ }
+
+ cfgv.validate(config_obj, CONFIG_REPO_DICT)
+
+ assert caplog.record_tuples == [
+ (
+ 'pre_commit',
+ logging.WARNING,
+ "The 'files' field in hook 'identity' is a regex, not a glob "
+ "-- matching '/*' probably isn't what you want here",
+ ),
+ ]
+
+
@pytest.mark.parametrize(
('regex', 'warning'),
(
@@ -291,6 +309,56 @@
assert caplog.record_tuples == [('pre_commit', logging.WARNING, warning)]
+def test_warning_for_deprecated_stages(caplog):
+ config_obj = sample_local_config()
+ config_obj['hooks'][0]['stages'] = ['commit', 'push']
+
+ cfgv.validate(config_obj, CONFIG_REPO_DICT)
+
+ assert caplog.record_tuples == [
+ (
+ 'pre_commit',
+ logging.WARNING,
+ 'hook id `do_not_commit` uses deprecated stage names '
+ '(commit, push) which will be removed in a future version. '
+ 'run: `pre-commit migrate-config` to automatically fix this.',
+ ),
+ ]
+
+
+def test_no_warning_for_non_deprecated_stages(caplog):
+ config_obj = sample_local_config()
+ config_obj['hooks'][0]['stages'] = ['pre-commit', 'pre-push']
+
+ cfgv.validate(config_obj, CONFIG_REPO_DICT)
+
+ assert caplog.record_tuples == []
+
+
+def test_warning_for_deprecated_default_stages(caplog):
+ cfg = {'default_stages': ['commit', 'push'], 'repos': []}
+
+ cfgv.validate(cfg, CONFIG_SCHEMA)
+
+ assert caplog.record_tuples == [
+ (
+ 'pre_commit',
+ logging.WARNING,
+ 'top-level `default_stages` uses deprecated stage names '
+ '(commit, push) which will be removed in a future version. '
+ 'run: `pre-commit migrate-config` to automatically fix this.',
+ ),
+ ]
+
+
+def test_no_warning_for_non_deprecated_default_stages(caplog):
+ cfg = {'default_stages': ['pre-commit', 'pre-push'], 'repos': []}
+
+ cfgv.validate(cfg, CONFIG_SCHEMA)
+
+ assert caplog.record_tuples == []
+
+
@pytest.mark.parametrize(
'manifest_obj',
(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/tests/commands/migrate_config_test.py new/pre-commit-4.0.1/tests/commands/migrate_config_test.py
--- old/pre-commit-3.8.0/tests/commands/migrate_config_test.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/tests/commands/migrate_config_test.py 2024-10-08 18:08:49.000000000 +0200
@@ -1,10 +1,26 @@
from __future__ import annotations
+from unittest import mock
+
import pytest
+import yaml
import pre_commit.constants as C
from pre_commit.clientlib import InvalidConfigError
from pre_commit.commands.migrate_config import migrate_config
+from pre_commit.yaml import yaml_compose
+
+
+(a)pytest.fixture(autouse=True, params=['c', 'pure'])
+def switch_pyyaml_impl(request):
+ if request.param == 'c':
+ yield
+ else:
+ with mock.patch.dict(
+ yaml_compose.keywords,
+ {'Loader': yaml.SafeLoader},
+ ):
+ yield
def test_migrate_config_normal_format(tmpdir, capsys):
@@ -134,6 +150,27 @@
)
+def test_migrate_config_sha_to_rev_json(tmp_path):
+ contents = """\
+{"repos": [{
+ "repo": "https://github.com/pre-commit/pre-commit-hooks",
+ "sha": "v1.2.0",
+ "hooks": []
+}]}
+"""
+ expected = """\
+{"repos": [{
+ "repo": "https://github.com/pre-commit/pre-commit-hooks",
+ "rev": "v1.2.0",
+ "hooks": []
+}]}
+"""
+ cfg = tmp_path.joinpath('cfg.yaml')
+ cfg.write_text(contents)
+ assert not migrate_config(str(cfg))
+ assert cfg.read_text() == expected
+
+
def test_migrate_config_language_python_venv(tmp_path):
src = '''\
repos:
@@ -163,6 +200,73 @@
'''
cfg = tmp_path.joinpath('cfg.yaml')
cfg.write_text(src)
+ assert migrate_config(str(cfg)) == 0
+ assert cfg.read_text() == expected
+
+
+def test_migrate_config_quoted_python_venv(tmp_path):
+ src = '''\
+repos:
+- repo: local
+ hooks:
+ - id: example
+ name: example
+ entry: example
+ language: "python_venv"
+'''
+ expected = '''\
+repos:
+- repo: local
+ hooks:
+ - id: example
+ name: example
+ entry: example
+ language: "python"
+'''
+ cfg = tmp_path.joinpath('cfg.yaml')
+ cfg.write_text(src)
+ assert migrate_config(str(cfg)) == 0
+ assert cfg.read_text() == expected
+
+
+def test_migrate_config_default_stages(tmp_path):
+ src = '''\
+default_stages: [commit, push, merge-commit, commit-msg]
+repos: []
+'''
+ expected = '''\
+default_stages: [pre-commit, pre-push, pre-merge-commit, commit-msg]
+repos: []
+'''
+ cfg = tmp_path.joinpath('cfg.yaml')
+ cfg.write_text(src)
+ assert migrate_config(str(cfg)) == 0
+ assert cfg.read_text() == expected
+
+
+def test_migrate_config_hook_stages(tmp_path):
+ src = '''\
+repos:
+- repo: local
+ hooks:
+ - id: example
+ name: example
+ entry: example
+ language: system
+ stages: ["commit", "push", "merge-commit", "commit-msg"]
+'''
+ expected = '''\
+repos:
+- repo: local
+ hooks:
+ - id: example
+ name: example
+ entry: example
+ language: system
+ stages: ["pre-commit", "pre-push", "pre-merge-commit", "commit-msg"]
+'''
+ cfg = tmp_path.joinpath('cfg.yaml')
+ cfg.write_text(src)
assert migrate_config(str(cfg)) == 0
assert cfg.read_text() == expected
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/tests/conftest.py new/pre-commit-4.0.1/tests/conftest.py
--- old/pre-commit-3.8.0/tests/conftest.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/tests/conftest.py 2024-10-08 18:08:49.000000000 +0200
@@ -2,7 +2,6 @@
import functools
import io
-import logging
import os.path
from unittest import mock
@@ -203,12 +202,6 @@
yield Store(os.path.join(tempdir_factory.get(), '.pre-commit'))
-(a)pytest.fixture
-def log_info_mock():
- with mock.patch.object(logging.getLogger('pre_commit'), 'info') as mck:
- yield mck
-
-
class Fixture:
def __init__(self, stream: io.BytesIO) -> None:
self._stream = stream
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/tests/repository_test.py new/pre-commit-4.0.1/tests/repository_test.py
--- old/pre-commit-3.8.0/tests/repository_test.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/tests/repository_test.py 2024-10-08 18:08:49.000000000 +0200
@@ -80,24 +80,6 @@
assert out == expected
-def test_python_venv_deprecation(store, caplog):
- config = {
- 'repo': 'local',
- 'hooks': [{
- 'id': 'example',
- 'name': 'example',
- 'language': 'python_venv',
- 'entry': 'echo hi',
- }],
- }
- _get_hook(config, store, 'example')
- assert caplog.messages[-1] == (
- '`repo: local` uses deprecated `language: python_venv`. '
- 'This is an alias for `language: python`. '
- 'Often `pre-commit autoupdate --repo local` will fix this.'
- )
-
-
def test_system_hook_with_spaces(tempdir_factory, store):
_test_hook_repo(
tempdir_factory, store, 'system_hook_with_spaces_repo',
@@ -240,16 +222,16 @@
assert msg == 'Unexpected key(s) present on local => too-much: foo, hello'
-def test_reinstall(tempdir_factory, store, log_info_mock):
+def test_reinstall(tempdir_factory, store, caplog):
path = make_repo(tempdir_factory, 'python_hooks_repo')
config = make_config_from_repo(path)
_get_hook(config, store, 'foo')
# We print some logging during clone (1) + install (3)
- assert log_info_mock.call_count == 4
- log_info_mock.reset_mock()
+ assert len(caplog.record_tuples) == 4
+ caplog.clear()
# Reinstall on another run should not trigger another install
_get_hook(config, store, 'foo')
- assert log_info_mock.call_count == 0
+ assert len(caplog.record_tuples) == 0
def test_control_c_control_c_on_install(tempdir_factory, store):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/tests/store_test.py new/pre-commit-4.0.1/tests/store_test.py
--- old/pre-commit-3.8.0/tests/store_test.py 2024-07-28 21:58:29.000000000 +0200
+++ new/pre-commit-4.0.1/tests/store_test.py 2024-10-08 18:08:49.000000000 +0200
@@ -1,12 +1,15 @@
from __future__ import annotations
+import logging
import os.path
+import shlex
import sqlite3
import stat
from unittest import mock
import pytest
+import pre_commit.constants as C
from pre_commit import git
from pre_commit.store import _get_default_directory
from pre_commit.store import _LOCAL_RESOURCES
@@ -65,7 +68,7 @@
assert text_line in readme_contents
-def test_clone(store, tempdir_factory, log_info_mock):
+def test_clone(store, tempdir_factory, caplog):
path = git_dir(tempdir_factory)
with cwd(path):
git_commit()
@@ -74,7 +77,7 @@
ret = store.clone(path, rev)
# Should have printed some stuff
- assert log_info_mock.call_args_list[0][0][0].startswith(
+ assert caplog.record_tuples[0][-1].startswith(
'Initializing environment for ',
)
@@ -91,6 +94,72 @@
assert store.select_all_repos() == [(path, rev, ret)]
+def test_warning_for_deprecated_stages_on_init(store, tempdir_factory, caplog):
+ manifest = '''\
+- id: hook1
+ name: hook1
+ language: system
+ entry: echo hook1
+ stages: [commit, push]
+- id: hook2
+ name: hook2
+ language: system
+ entry: echo hook2
+ stages: [push, merge-commit]
+'''
+
+ path = git_dir(tempdir_factory)
+ with open(os.path.join(path, C.MANIFEST_FILE), 'w') as f:
+ f.write(manifest)
+ cmd_output('git', 'add', '.', cwd=path)
+ git_commit(cwd=path)
+ rev = git.head_rev(path)
+
+ store.clone(path, rev)
+ assert caplog.record_tuples[1] == (
+ 'pre_commit',
+ logging.WARNING,
+ f'repo `{path}` uses deprecated stage names '
+ f'(commit, push, merge-commit) which will be removed in a future '
+ f'version. '
+ f'Hint: often `pre-commit autoupdate --repo {shlex.quote(path)}` '
+ f'will fix this. '
+ f'if it does not -- consider reporting an issue to that repo.',
+ )
+
+ # should not re-warn
+ caplog.clear()
+ store.clone(path, rev)
+ assert caplog.record_tuples == []
+
+
+def test_no_warning_for_non_deprecated_stages_on_init(
+ store, tempdir_factory, caplog,
+):
+ manifest = '''\
+- id: hook1
+ name: hook1
+ language: system
+ entry: echo hook1
+ stages: [pre-commit, pre-push]
+- id: hook2
+ name: hook2
+ language: system
+ entry: echo hook2
+ stages: [pre-push, pre-merge-commit]
+'''
+
+ path = git_dir(tempdir_factory)
+ with open(os.path.join(path, C.MANIFEST_FILE), 'w') as f:
+ f.write(manifest)
+ cmd_output('git', 'add', '.', cwd=path)
+ git_commit(cwd=path)
+ rev = git.head_rev(path)
+
+ store.clone(path, rev)
+ assert logging.WARNING not in {tup[1] for tup in caplog.record_tuples}
+
+
def test_clone_cleans_up_on_checkout_failure(store):
with pytest.raises(Exception) as excinfo:
# This raises an exception because you can't clone something that
@@ -118,7 +187,7 @@
def test_clone_shallow_failure_fallback_to_complete(
store, tempdir_factory,
- log_info_mock,
+ caplog,
):
path = git_dir(tempdir_factory)
with cwd(path):
@@ -134,7 +203,7 @@
ret = store.clone(path, rev)
# Should have printed some stuff
- assert log_info_mock.call_args_list[0][0][0].startswith(
+ assert caplog.record_tuples[0][-1].startswith(
'Initializing environment for ',
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre-commit-3.8.0/tests/yaml_rewrite_test.py new/pre-commit-4.0.1/tests/yaml_rewrite_test.py
--- old/pre-commit-3.8.0/tests/yaml_rewrite_test.py 1970-01-01 01:00:00.000000000 +0100
+++ new/pre-commit-4.0.1/tests/yaml_rewrite_test.py 2024-10-08 18:08:49.000000000 +0200
@@ -0,0 +1,47 @@
+from __future__ import annotations
+
+import pytest
+
+from pre_commit.yaml import yaml_compose
+from pre_commit.yaml_rewrite import MappingKey
+from pre_commit.yaml_rewrite import MappingValue
+from pre_commit.yaml_rewrite import match
+from pre_commit.yaml_rewrite import SequenceItem
+
+
+def test_match_produces_scalar_values_only():
+ src = '''\
+- name: foo
+- name: [not, foo] # not a scalar: should be skipped!
+- name: bar
+'''
+ matcher = (SequenceItem(), MappingValue('name'))
+ ret = [n.value for n in match(yaml_compose(src), matcher)]
+ assert ret == ['foo', 'bar']
+
+
+(a)pytest.mark.parametrize('cls', (MappingKey, MappingValue))
+def test_mapping_not_a_map(cls):
+ m = cls('s')
+ assert list(m.match(yaml_compose('[foo]'))) == []
+
+
+def test_sequence_item_not_a_sequence():
+ assert list(SequenceItem().match(yaml_compose('s: val'))) == []
+
+
+def test_mapping_key():
+ m = MappingKey('s')
+ ret = [n.value for n in m.match(yaml_compose('s: val\nt: val2'))]
+ assert ret == ['s']
+
+
+def test_mapping_value():
+ m = MappingValue('s')
+ ret = [n.value for n in m.match(yaml_compose('s: val\nt: val2'))]
+ assert ret == ['val']
+
+
+def test_sequence_item():
+ ret = [n.value for n in SequenceItem().match(yaml_compose('[a, b, c]'))]
+ assert ret == ['a', 'b', 'c']
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package AusweisApp for openSUSE:Factory checked in at 2024-10-25 19:19:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/AusweisApp (Old)
and /work/SRC/openSUSE:Factory/.AusweisApp.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "AusweisApp"
Fri Oct 25 19:19:41 2024 rev:11 rq:1218098 version:2.2.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/AusweisApp/AusweisApp.changes 2024-09-11 16:57:45.803972720 +0200
+++ /work/SRC/openSUSE:Factory/.AusweisApp.new.2020/AusweisApp.changes 2024-10-25 19:20:35.172988550 +0200
@@ -1,0 +2,10 @@
+Wed Oct 23 13:41:45 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 2.2.2
+ - Visual adjustments and optimization of the graphical user interface.
+ - Optimization of accessibility and keyboard operability.
+ - Addition of the Android ABIs armeabi-v7a and x86_64 in addition to
+ arm64-v8a in the SDK.
+
+-------------------------------------------------------------------
Old:
----
2.2.1.tar.gz
New:
----
2.2.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ AusweisApp.spec ++++++
--- /var/tmp/diff_new_pack.nqgVwY/_old 2024-10-25 19:20:36.641049802 +0200
+++ /var/tmp/diff_new_pack.nqgVwY/_new 2024-10-25 19:20:36.645049969 +0200
@@ -17,7 +17,7 @@
Name: AusweisApp
-Version: 2.2.1
+Version: 2.2.2
Release: 0
Summary: Official authentication app for German ID cards and residence permits
License: EUPL-1.2
++++++ 2.2.1.tar.gz -> 2.2.2.tar.gz ++++++
++++ 8650 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python39 for openSUSE:Factory checked in at 2024-10-25 19:19:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python39 (Old)
and /work/SRC/openSUSE:Factory/.python39.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python39"
Fri Oct 25 19:19:37 2024 rev:67 rq:1218097 version:3.9.20
Changes:
--------
--- /work/SRC/openSUSE:Factory/python39/python39.changes 2024-09-29 18:10:50.474134779 +0200
+++ /work/SRC/openSUSE:Factory/.python39.new.2020/python39.changes 2024-10-25 19:20:29.680759399 +0200
@@ -1,0 +2,13 @@
+Thu Oct 24 16:09:00 UTC 2024 - Matej Cepl <mcepl(a)cepl.eu>
+
+- Add CVE-2024-9287-venv_path_unquoted.patch to properly quote
+ path names provided when creating a virtual environment
+ (bsc#1232241, CVE-2024-9287)
+
+-------------------------------------------------------------------
+Wed Oct 2 16:18:29 UTC 2024 - Matej Cepl <mcepl(a)cepl.eu>
+
+- Drop .pyc files from docdir for reproducible builds
+ (bsc#1230906).
+
+-------------------------------------------------------------------
New:
----
CVE-2024-9287-venv_path_unquoted.patch
BETA DEBUG BEGIN:
New:
- Add CVE-2024-9287-venv_path_unquoted.patch to properly quote
path names provided when creating a virtual environment
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python39.spec ++++++
--- /var/tmp/diff_new_pack.hA1Fcq/_old 2024-10-25 19:20:33.388914114 +0200
+++ /var/tmp/diff_new_pack.hA1Fcq/_new 2024-10-25 19:20:33.392914281 +0200
@@ -194,6 +194,9 @@
# PATCH-FIX-UPSTREAM sphinx-802.patch mcepl(a)suse.com
# status_iterator method moved between the Sphinx versions
Patch51: sphinx-802.patch
+# PATCH-FIX-UPSTREAM CVE-2024-9287-venv_path_unquoted.patch gh#python/cpython#124651 mcepl(a)suse.com
+# venv should properly quote path names provided when creating a venv
+Patch52: CVE-2024-9287-venv_path_unquoted.patch
BuildRequires: autoconf-archive
BuildRequires: automake
@@ -467,6 +470,7 @@
%patch -P 48 -p1
%patch -P 50 -p1
%patch -P 51 -p1
+%patch -P 52 -p1
# drop Autoconf version requirement
sed -i 's/^AC_PREREQ/dnl AC_PREREQ/' configure.ac
@@ -801,6 +805,11 @@
echo %{sitedir}/_import_failed > %{buildroot}/%{sitedir}/site-packages/zzzz-import-failed-hooks.pth
%endif
+# For the purposes of reproducibility, it is necessary to eliminate any *.pyc files inside documentation dirs
+if [ -d %{buildroot}%{_defaultdocdir} ] ; then
+find %{buildroot}%{_defaultdocdir} -type f -name \*.pyc -ls -exec rm -vf '{}' \;
+fi
+
%if %{with general}
%files -n %{python_pkg_name}-tk
%{sitedir}/tkinter
++++++ CVE-2024-9287-venv_path_unquoted.patch ++++++
From b6a3bbd155c558cdcda482629073e492437db3d0 Mon Sep 17 00:00:00 2001
From: y5c4l3 <y5c4l3(a)proton.me>
Date: Sat, 28 Sep 2024 02:09:07 +0800
Subject: [PATCH] Quote template strings in `venv` activation scripts
This patch properly quotes template strings in `venv` activation
scripts. This mitigates potential command injection.
Signed-off-by: y5c4l3 <y5c4l3(a)proton.me>
---
Lib/test/test_venv.py | 81 ++++++++++
Lib/venv/__init__.py | 42 ++++-
Lib/venv/scripts/common/activate | 6
Lib/venv/scripts/nt/activate.bat | 6
Lib/venv/scripts/posix/activate.csh | 6
Misc/NEWS.d/next/Library/2024-09-28-02-03-04.gh-issue-124651.bLBGtH.rst | 1
6 files changed, 128 insertions(+), 14 deletions(-)
create mode 100644 Misc/NEWS.d/next/Library/2024-09-28-02-03-04.gh-issue-124651.bLBGtH.rst
--- a/Lib/test/test_venv.py
+++ b/Lib/test/test_venv.py
@@ -9,6 +9,7 @@ import ensurepip
import os
import os.path
import re
+import shlex
import shutil
import struct
import subprocess
@@ -85,6 +86,10 @@ class BaseTest(unittest.TestCase):
result = f.read()
return result
+ def assertEndsWith(self, string, tail):
+ if not string.endswith(tail):
+ self.fail(f"String {string!r} does not end with {tail!r}")
+
class BasicTest(BaseTest):
"""Test venv module functionality."""
@@ -342,6 +347,82 @@ class BasicTest(BaseTest):
'import sys; print(sys.executable)'])
self.assertEqual(out.strip(), envpy.encode())
+ # gh-124651: test quoted strings
+ @unittest.skipIf(os.name == 'nt', 'contains invalid characters on Windows')
+ def test_special_chars_bash(self):
+ """
+ Test that the template strings are quoted properly (bash)
+ """
+ rmtree(self.env_dir)
+ bash = shutil.which('bash')
+ if bash is None:
+ self.skipTest('bash required for this test')
+ env_name = '"\';&&$e|\'"'
+ env_dir = os.path.join(os.path.realpath(self.env_dir), env_name)
+ builder = venv.EnvBuilder(clear=True)
+ builder.create(env_dir)
+ activate = os.path.join(env_dir, self.bindir, 'activate')
+ test_script = os.path.join(self.env_dir, 'test_special_chars.sh')
+ with open(test_script, "w") as f:
+ f.write(f'source {shlex.quote(activate)}\n'
+ 'python -c \'import sys; print(sys.executable)\'\n'
+ 'python -c \'import os; print(os.environ["VIRTUAL_ENV"])\'\n'
+ 'deactivate\n')
+ out, err = check_output([bash, test_script])
+ lines = out.splitlines()
+ self.assertTrue(env_name.encode() in lines[0])
+ self.assertEndsWith(lines[1], env_name.encode())
+
+ # gh-124651: test quoted strings
+ @unittest.skipIf(os.name == 'nt', 'contains invalid characters on Windows')
+ def test_special_chars_csh(self):
+ """
+ Test that the template strings are quoted properly (csh)
+ """
+ rmtree(self.env_dir)
+ csh = shutil.which('tcsh') or shutil.which('csh')
+ if csh is None:
+ self.skipTest('csh required for this test')
+ env_name = '"\';&&$e|\'"'
+ env_dir = os.path.join(os.path.realpath(self.env_dir), env_name)
+ builder = venv.EnvBuilder(clear=True)
+ builder.create(env_dir)
+ activate = os.path.join(env_dir, self.bindir, 'activate.csh')
+ test_script = os.path.join(self.env_dir, 'test_special_chars.csh')
+ with open(test_script, "w") as f:
+ f.write(f'source {shlex.quote(activate)}\n'
+ 'python -c \'import sys; print(sys.executable)\'\n'
+ 'python -c \'import os; print(os.environ["VIRTUAL_ENV"])\'\n'
+ 'deactivate\n')
+ out, err = check_output([csh, test_script])
+ lines = out.splitlines()
+ self.assertTrue(env_name.encode() in lines[0])
+ self.assertEndsWith(lines[1], env_name.encode())
+
+ # gh-124651: test quoted strings on Windows
+ @unittest.skipUnless(os.name == 'nt', 'only relevant on Windows')
+ def test_special_chars_windows(self):
+ """
+ Test that the template strings are quoted properly on Windows
+ """
+ rmtree(self.env_dir)
+ env_name = "'&&^$e"
+ env_dir = os.path.join(os.path.realpath(self.env_dir), env_name)
+ builder = venv.EnvBuilder(clear=True)
+ builder.create(env_dir)
+ activate = os.path.join(env_dir, self.bindir, 'activate.bat')
+ test_batch = os.path.join(self.env_dir, 'test_special_chars.bat')
+ with open(test_batch, "w") as f:
+ f.write('@echo off\n'
+ f'"{activate}" & '
+ f'{self.exe} -c "import sys; print(sys.executable)" & '
+ f'{self.exe} -c "import os; print(os.environ[\'VIRTUAL_ENV\'])" & '
+ 'deactivate')
+ out, err = check_output([test_batch])
+ lines = out.splitlines()
+ self.assertTrue(env_name.encode() in lines[0])
+ self.assertEndsWith(lines[1], env_name.encode())
+
@unittest.skipUnless(os.name == 'nt', 'only relevant on Windows')
def test_unicode_in_batch_file(self):
"""
--- a/Lib/venv/__init__.py
+++ b/Lib/venv/__init__.py
@@ -11,6 +11,7 @@ import subprocess
import sys
import sysconfig
import types
+import shlex
CORE_VENV_DEPS = ('pip', 'setuptools')
@@ -348,11 +349,41 @@ class EnvBuilder:
:param context: The information for the environment creation request
being processed.
"""
- text = text.replace('__VENV_DIR__', context.env_dir)
- text = text.replace('__VENV_NAME__', context.env_name)
- text = text.replace('__VENV_PROMPT__', context.prompt)
- text = text.replace('__VENV_BIN_NAME__', context.bin_name)
- text = text.replace('__VENV_PYTHON__', context.env_exe)
+ replacements = {
+ '__VENV_DIR__': context.env_dir,
+ '__VENV_NAME__': context.env_name,
+ '__VENV_PROMPT__': context.prompt,
+ '__VENV_BIN_NAME__': context.bin_name,
+ '__VENV_PYTHON__': context.env_exe,
+ }
+
+ def quote_ps1(s):
+ """
+ This should satisfy PowerShell quoting rules [1], unless the quoted
+ string is passed directly to Windows native commands [2].
+ [1]: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.co…
+ [2]: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.co…
+ """
+ s = s.replace("'", "''")
+ return f"'{s}'"
+
+ def quote_bat(s):
+ return s
+
+ # gh-124651: need to quote the template strings properly
+ quote = shlex.quote
+ script_path = context.script_path
+ if script_path.endswith('.ps1'):
+ quote = quote_ps1
+ elif script_path.endswith('.bat'):
+ quote = quote_bat
+ else:
+ # fallbacks to POSIX shell compliant quote
+ quote = shlex.quote
+
+ replacements = {key: quote(s) for key, s in replacements.items()}
+ for key, quoted in replacements.items():
+ text = text.replace(key, quoted)
return text
def install_scripts(self, context, path):
@@ -393,6 +424,7 @@ class EnvBuilder:
data = f.read()
if not srcfile.endswith(('.exe', '.pdb')):
try:
+ context.script_path = srcfile
data = data.decode('utf-8')
data = self.replace_variables(data, context)
data = data.encode('utf-8')
--- a/Lib/venv/scripts/common/activate
+++ b/Lib/venv/scripts/common/activate
@@ -37,11 +37,11 @@ deactivate () {
# unset irrelevant variables
deactivate nondestructive
-VIRTUAL_ENV="__VENV_DIR__"
+VIRTUAL_ENV=__VENV_DIR__
export VIRTUAL_ENV
_OLD_VIRTUAL_PATH="$PATH"
-PATH="$VIRTUAL_ENV/__VENV_BIN_NAME__:$PATH"
+PATH="$VIRTUAL_ENV/"__VENV_BIN_NAME__":$PATH"
export PATH
# unset PYTHONHOME if set
@@ -54,7 +54,7 @@ fi
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
_OLD_VIRTUAL_PS1="${PS1:-}"
- PS1="__VENV_PROMPT__${PS1:-}"
+ PS1=__VENV_PROMPT__"${PS1:-}"
export PS1
fi
--- a/Lib/venv/scripts/nt/activate.bat
+++ b/Lib/venv/scripts/nt/activate.bat
@@ -8,7 +8,7 @@ if defined _OLD_CODEPAGE (
"%SystemRoot%\System32\chcp.com" 65001 > nul
)
-set VIRTUAL_ENV=__VENV_DIR__
+set "VIRTUAL_ENV=__VENV_DIR__"
if not defined PROMPT set PROMPT=$P$G
@@ -16,7 +16,7 @@ if defined _OLD_VIRTUAL_PROMPT set PROMP
if defined _OLD_VIRTUAL_PYTHONHOME set PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%
set _OLD_VIRTUAL_PROMPT=%PROMPT%
-set PROMPT=__VENV_PROMPT__%PROMPT%
+set "PROMPT=__VENV_PROMPT__%PROMPT%"
if defined PYTHONHOME set _OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME%
set PYTHONHOME=
@@ -24,7 +24,7 @@ set PYTHONHOME=
if defined _OLD_VIRTUAL_PATH set PATH=%_OLD_VIRTUAL_PATH%
if not defined _OLD_VIRTUAL_PATH set _OLD_VIRTUAL_PATH=%PATH%
-set PATH=%VIRTUAL_ENV%\__VENV_BIN_NAME__;%PATH%
+set "PATH=%VIRTUAL_ENV%\__VENV_BIN_NAME__;%PATH%"
:END
if defined _OLD_CODEPAGE (
--- a/Lib/venv/scripts/posix/activate.csh
+++ b/Lib/venv/scripts/posix/activate.csh
@@ -8,16 +8,16 @@ alias deactivate 'test $?_OLD_VIRTUAL_PA
# Unset irrelevant variables.
deactivate nondestructive
-setenv VIRTUAL_ENV "__VENV_DIR__"
+setenv VIRTUAL_ENV __VENV_DIR__
set _OLD_VIRTUAL_PATH="$PATH"
-setenv PATH "$VIRTUAL_ENV/__VENV_BIN_NAME__:$PATH"
+setenv PATH "$VIRTUAL_ENV/"__VENV_BIN_NAME__":$PATH"
set _OLD_VIRTUAL_PROMPT="$prompt"
if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then
- set prompt = "__VENV_PROMPT__$prompt"
+ set prompt = __VENV_PROMPT__"$prompt"
endif
alias pydoc python -m pydoc
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2024-09-28-02-03-04.gh-issue-124651.bLBGtH.rst
@@ -0,0 +1 @@
+Properly quote template strings in :mod:`venv` activation scripts.
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package tailscale for openSUSE:Factory checked in at 2024-10-25 19:19:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/tailscale (Old)
and /work/SRC/openSUSE:Factory/.tailscale.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tailscale"
Fri Oct 25 19:19:32 2024 rev:17 rq:1218078 version:1.76.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/tailscale/tailscale.changes 2024-10-17 18:41:48.912472695 +0200
+++ /work/SRC/openSUSE:Factory/.tailscale.new.2020/tailscale.changes 2024-10-25 19:20:26.596630721 +0200
@@ -1,0 +2,10 @@
+Tue Oct 22 18:34:42 UTC 2024 - Richard Rahl <rrahl0(a)opensuse.org>
+
+- update to 1.76.3:
+ * no relevant changelog
+- update to 1.76.2:
+ * no relevant changelog
+- switch over to the new %{default_fw_backend} macro
+- create old init file only for < leap 16
+
+-------------------------------------------------------------------
Old:
----
tailscale-1.76.1.tar.gz
New:
----
tailscale-1.76.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ tailscale.spec ++++++
--- /var/tmp/diff_new_pack.KnZBIO/_old 2024-10-25 19:20:27.796680790 +0200
+++ /var/tmp/diff_new_pack.KnZBIO/_new 2024-10-25 19:20:27.800680957 +0200
@@ -16,32 +16,25 @@
#
-%if 0%{?suse_version} >= 1600
-%define default_fw nftables
-%else
-%define default_fw iptables
-%endif
Name: tailscale
-Version: 1.76.1
+Version: 1.76.3
Release: 0
Summary: The easiest, most secure way to use WireGuard and 2FA
License: BSD-3-Clause
-Group: Productivity/Networking/Security
URL: https://github.com/tailscale/tailscale
Source: %{name}-%{version}.tar.gz
Source1: vendor.tar.gz
-Source2: tailscaled.service
-Source3: tailscaled.defaults
+Source2: %{name}d.service
+Source3: %{name}d.defaults
Patch1: build-verbose.patch
Patch2: disable-auto-update.patch
BuildRequires: bash-completion
BuildRequires: fish
-BuildRequires: git
+BuildRequires: git-core
BuildRequires: golang-packaging
BuildRequires: zsh
BuildRequires: golang(API) = 1.23
-Requires: (nftables or iptables)
-Recommends: %{default_fw}
+Requires: %{default_firewall_backend}
ExcludeArch: i586
%{?systemd_requires}
@@ -83,8 +76,8 @@
export VERSION_SHORT=%{version}
export VERSION_LONG=%{version}
export VERSION_GIT_HASH='$(git rev-parse v%{version})'
-./build_dist.sh ./cmd/tailscale
-./build_dist.sh ./cmd/tailscaled
+./build_dist.sh ./cmd/%{name}
+./build_dist.sh ./cmd/%{name}d
#generate completions
./%{name} completion bash > ./%{name}.bash
@@ -92,8 +85,8 @@
./%{name} completion fish > ./%{name}.fish
%check
-./tailscale version
-./tailscaled -version
+./%{name} version
+./%{name}d -version
%install
mkdir -p %{buildroot}%{_sharedstatedir}/%{name}
@@ -103,7 +96,9 @@
# service
install -D -p -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}/%{name}d.service
+%if 0%{?suse_version} < 1600
ln -sf %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}d
+%endif
# defaults
install -D -p -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/default/%{name}d
@@ -132,7 +127,9 @@
%{_bindir}/%{name}
%{_sbindir}/%{name}d
%{_unitdir}/%{name}d.service
+%if 0%{?suse_version} < 1600
%{_sbindir}/rc%{name}d
+%endif
%files bash-completion
%{_datadir}/bash-completion/completions/%{name}
++++++ _service ++++++
--- /var/tmp/diff_new_pack.KnZBIO/_old 2024-10-25 19:20:27.836682459 +0200
+++ /var/tmp/diff_new_pack.KnZBIO/_new 2024-10-25 19:20:27.840682626 +0200
@@ -3,7 +3,7 @@
<param name="url">https://github.com/tailscale/tailscale.git</param>
<param name="scm">git</param>
<param name="package-meta">yes</param>
- <param name="revision">refs/tags/v1.76.1</param>
+ <param name="revision">refs/tags/v1.76.3</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="versionrewrite-pattern">v(.*)</param>
<param name="changesgenerate">disable</param>
@@ -14,8 +14,5 @@
</service>
<service name="go_modules" mode="manual">
</service>
- <!-- somehow set_version is broken
- <service name="set_version" mode="manual" />
- -->
</services>
++++++ tailscale-1.76.1.tar.gz -> tailscale-1.76.3.tar.gz ++++++
/work/SRC/openSUSE:Factory/tailscale/tailscale-1.76.1.tar.gz /work/SRC/openSUSE:Factory/.tailscale.new.2020/tailscale-1.76.3.tar.gz differ: char 12, line 1
++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/tailscale/vendor.tar.gz /work/SRC/openSUSE:Factory/.tailscale.new.2020/vendor.tar.gz differ: char 5, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libnvidia-egl-x11 for openSUSE:Factory checked in at 2024-10-25 19:19:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libnvidia-egl-x11 (Old)
and /work/SRC/openSUSE:Factory/.libnvidia-egl-x11.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libnvidia-egl-x11"
Fri Oct 25 19:19:32 2024 rev:2 rq:1218074 version:1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/libnvidia-egl-x11/libnvidia-egl-x11.changes 2024-10-01 17:12:39.151814337 +0200
+++ /work/SRC/openSUSE:Factory/.libnvidia-egl-x11.new.2020/libnvidia-egl-x11.changes 2024-10-25 19:20:24.996563961 +0200
@@ -1,0 +2,10 @@
+Thu Oct 24 14:07:35 UTC 2024 - Stefan Dirsch <sndirsch(a)suse.com>
+
+- added '#src/x11/dma-buf.h:/* SPDX-License-Identifier: GPL-2.0
+ WITH Linux-syscall-note */' as comment to license tag in the hope
+ that it gets accepted now and guys no longer tell me that you
+ can't mix GPL-2.0-only with incompatible Apache-2.0 ...; this
+ should explain it:
+ https://github.com/torvalds/linux/blob/master/LICENSES/exceptions/Linux-sys…
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libnvidia-egl-x11.spec ++++++
--- /var/tmp/diff_new_pack.igjFuG/_old 2024-10-25 19:20:25.780596673 +0200
+++ /var/tmp/diff_new_pack.igjFuG/_new 2024-10-25 19:20:25.784596840 +0200
@@ -23,6 +23,7 @@
Version: 1.0
Release: 0
Summary: NVIDIA XLib and XCB EGL Platform Library
+# src/x11/dma-buf.h:/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
License: Apache-2.0
Group: Development/Libraries/C and C++
URL: https://github.com/sndirsch/egl-x11
@@ -32,15 +33,15 @@
BuildRequires: meson
BuildRequires: ninja
BuildRequires: pkgconfig
-BuildRequires: pkgconfig(xcb) >= 1.17.0
-BuildRequires: pkgconfig(xcb-present) >= 1.17.0
-BuildRequires: pkgconfig(xcb-dri3) >= 1.17.0
-BuildRequires: pkgconfig(gbm) >= 21.3.0
-BuildRequires: pkgconfig(libdrm) >= 2.4.99
-BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(egl)
BuildRequires: pkgconfig(eglexternalplatform) >= 1.2
+BuildRequires: pkgconfig(gbm) >= 21.3.0
BuildRequires: pkgconfig(gl)
+BuildRequires: pkgconfig(libdrm) >= 2.4.99
+BuildRequires: pkgconfig(x11)
+BuildRequires: pkgconfig(xcb) >= 1.17.0
+BuildRequires: pkgconfig(xcb-dri3) >= 1.17.0
+BuildRequires: pkgconfig(xcb-present) >= 1.17.0
%description
This is an EGL platform library for the NVIDIA driver to support XWayland via
@@ -104,7 +105,6 @@
%post -n %{lname} -p /sbin/ldconfig
%postun -n %{lname} -p /sbin/ldconfig
-
%files -n %{lname}
%license LICENSE
%doc README.md
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package nvidia-persistenced for openSUSE:Factory checked in at 2024-10-25 19:19:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nvidia-persistenced (Old)
and /work/SRC/openSUSE:Factory/.nvidia-persistenced.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nvidia-persistenced"
Fri Oct 25 19:19:30 2024 rev:2 rq:1218073 version:560.35.03
Changes:
--------
--- /work/SRC/openSUSE:Factory/nvidia-persistenced/nvidia-persistenced.changes 2024-09-24 17:31:53.053582746 +0200
+++ /work/SRC/openSUSE:Factory/.nvidia-persistenced.new.2020/nvidia-persistenced.changes 2024-10-25 19:20:23.876517230 +0200
@@ -1,0 +2,5 @@
+Thu Oct 24 13:53:14 UTC 2024 - Stefan Dirsch <sndirsch(a)suse.com>
+
+- corrected license tag (GPL-2.0-or-later -> MIT)
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ nvidia-persistenced.spec ++++++
--- /var/tmp/diff_new_pack.9F8O19/_old 2024-10-25 19:20:24.856558120 +0200
+++ /var/tmp/diff_new_pack.9F8O19/_new 2024-10-25 19:20:24.860558287 +0200
@@ -20,7 +20,7 @@
Version: 560.35.03
Release: 0
Summary: A daemon to maintain persistent software state in the NVIDIA driver
-License: GPL-2.0-or-later
+License: MIT
URL: http://www.nvidia.com/object/unix.html
ExclusiveArch: x86_64 aarch64
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package dino for openSUSE:Factory checked in at 2024-10-25 19:19:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dino (Old)
and /work/SRC/openSUSE:Factory/.dino.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dino"
Fri Oct 25 19:19:29 2024 rev:13 rq:1218068 version:0.4.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/dino/dino.changes 2024-07-01 11:23:02.932903306 +0200
+++ /work/SRC/openSUSE:Factory/.dino.new.2020/dino.changes 2024-10-25 19:20:22.696467995 +0200
@@ -1,0 +2,6 @@
+Thu Oct 24 12:13:54 UTC 2024 - Bjørn Lie <bjorn.lie(a)gmail.com>
+
+- Replace pkgconfig(libsoup-2.4) with pkgconfig(libsoup-3.0)
+ BuildRequires: Use the preferred newer version of libsoup.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ dino.spec ++++++
--- /var/tmp/diff_new_pack.en2XXF/_old 2024-10-25 19:20:23.424498371 +0200
+++ /var/tmp/diff_new_pack.en2XXF/_new 2024-10-25 19:20:23.428498537 +0200
@@ -60,7 +60,7 @@
BuildRequires: pkgconfig(gtk4)
BuildRequires: pkgconfig(libadwaita-1)
BuildRequires: pkgconfig(libqrencode)
-BuildRequires: pkgconfig(libsoup-2.4)
+BuildRequires: pkgconfig(libsoup-3.0)
BuildRequires: pkgconfig(libsrtp2)
BuildRequires: pkgconfig(nice) >= 0.1.15
BuildRequires: pkgconfig(sqlite3)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package rpmlint for openSUSE:Factory checked in at 2024-10-25 19:19:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rpmlint (Old)
and /work/SRC/openSUSE:Factory/.rpmlint.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rpmlint"
Fri Oct 25 19:19:22 2024 rev:488 rq:1218023 version:2.6.1+git20241024.1f09e50
Changes:
--------
--- /work/SRC/openSUSE:Factory/rpmlint/rpmlint.changes 2024-10-23 21:08:45.066886824 +0200
+++ /work/SRC/openSUSE:Factory/.rpmlint.new.2020/rpmlint.changes 2024-10-25 19:20:14.580129359 +0200
@@ -1,0 +2,6 @@
+Thu Oct 24 11:33:51 UTC 2024 - filippo.bonazzi(a)suse.com
+
+- Update to version 2.6.1+git20241024.1f09e50:
+ * whitelistings: add libcgroup PAM module and setgid binary (bsc#1231381)
+
+-------------------------------------------------------------------
Old:
----
rpmlint-2.6.1+git20241017.b725184.tar.xz
New:
----
rpmlint-2.6.1+git20241024.1f09e50.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rpmlint.spec ++++++
--- /var/tmp/diff_new_pack.RcfdjR/_old 2024-10-25 19:20:15.816180931 +0200
+++ /var/tmp/diff_new_pack.RcfdjR/_new 2024-10-25 19:20:15.816180931 +0200
@@ -23,7 +23,7 @@
%define name_suffix -%{flavor}
%endif
Name: rpmlint%{name_suffix}
-Version: 2.6.1+git20241017.b725184
+Version: 2.6.1+git20241024.1f09e50
Release: 0
Summary: RPM file correctness checker
License: GPL-2.0-or-later
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.RcfdjR/_old 2024-10-25 19:20:15.872183267 +0200
+++ /var/tmp/diff_new_pack.RcfdjR/_new 2024-10-25 19:20:15.876183434 +0200
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/rpm-software-management/rpmlint.git</param>
- <param name="changesrevision">b7251848208dfd5e46bf8c57b9e0bd5d38bcb924</param></service></servicedata>
+ <param name="changesrevision">1f09e5065c4f538e2e7fabd2d2deeaff2254dc6a</param></service></servicedata>
(No newline at EOF)
++++++ rpmlint-2.6.1+git20241017.b725184.tar.xz -> rpmlint-2.6.1+git20241024.1f09e50.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmlint-2.6.1+git20241017.b725184/configs/openSUSE/pam-modules.toml new/rpmlint-2.6.1+git20241024.1f09e50/configs/openSUSE/pam-modules.toml
--- old/rpmlint-2.6.1+git20241017.b725184/configs/openSUSE/pam-modules.toml 2024-10-17 17:36:51.000000000 +0200
+++ new/rpmlint-2.6.1+git20241024.1f09e50/configs/openSUSE/pam-modules.toml 2024-10-24 10:50:59.000000000 +0200
@@ -566,3 +566,12 @@
nodigests = [
"glob:*/security/pam_himmelblau.so",
]
+
+[[FileDigestGroup]]
+package = "libcgroup-pam"
+note = "session PAM module that places the login process into a cgroup according to configuration"
+bug = "bsc#1231381"
+type = "pam"
+nodigests = [
+ "glob:*/security/pam_cgroup.so",
+]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rpmlint-2.6.1+git20241017.b725184/configs/openSUSE/permissions-whitelist.toml new/rpmlint-2.6.1+git20241024.1f09e50/configs/openSUSE/permissions-whitelist.toml
--- old/rpmlint-2.6.1+git20241017.b725184/configs/openSUSE/permissions-whitelist.toml 2024-10-17 17:36:51.000000000 +0200
+++ new/rpmlint-2.6.1+git20241024.1f09e50/configs/openSUSE/permissions-whitelist.toml 2024-10-24 10:50:59.000000000 +0200
@@ -58,3 +58,11 @@
path = "/etc/permissions.d/texlive.texlive"
hash = "c4d3d806535c6737a07828ac84e297b87f6a406f6df67c9928c4fac71f47a17d"
+[[FileDigestGroup]]
+package = "libcgroup-tools"
+note = "this is for a setgid binary 'cgexec', running with 'cgred' group privs"
+bug = "bsc#1231381"
+type = "permissions"
+[[FileDigestGroup.digests]]
+path = "/usr/share/permissions/permissions.d/libcgroup"
+hash = "6d3a669b10b2449484dcad1c6d932f5897666bcbeef2a45d9608ef63a1e43188"
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-numpy for openSUSE:Factory checked in at 2024-10-25 19:19:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-numpy (Old)
and /work/SRC/openSUSE:Factory/.python-numpy.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-numpy"
Fri Oct 25 19:19:20 2024 rev:133 rq:1218079 version:2.1.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-numpy/python-numpy.changes 2024-10-23 21:07:57.380907102 +0200
+++ /work/SRC/openSUSE:Factory/.python-numpy.new.2020/python-numpy.changes 2024-10-25 19:20:11.920018372 +0200
@@ -1,0 +2,5 @@
+Thu Oct 24 12:21:00 UTC 2024 - Daniel Garcia <daniel.garcia(a)suse.com>
+
+- Build with latest gcc for Leap 16.0
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-numpy.spec ++++++
--- /var/tmp/diff_new_pack.56Ryey/_old 2024-10-25 19:20:13.496084130 +0200
+++ /var/tmp/diff_new_pack.56Ryey/_new 2024-10-25 19:20:13.496084130 +0200
@@ -88,7 +88,7 @@
BuildRequires: %{python_module pip}
BuildRequires: %{python_module pyproject-metadata >= 0.7.1}
BuildRequires: cmake
-%if 0%{?suse_version} <= 1600
+%if 0%{?suse_version} < 1600
BuildRequires: gcc12
BuildRequires: gcc12-c++
%else
@@ -215,7 +215,7 @@
%else
export CFLAGS="%{optflags} -fno-strict-aliasing"
%endif
-%if 0%{?suse_version} <= 1600
+%if 0%{?suse_version} < 1600
export CC=gcc-12
export CXX=g++-12
%endif
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package nvidia-settings for openSUSE:Factory checked in at 2024-10-25 19:19:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nvidia-settings (Old)
and /work/SRC/openSUSE:Factory/.nvidia-settings.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nvidia-settings"
Fri Oct 25 19:19:18 2024 rev:4 rq:1218072 version:560.35.03
Changes:
--------
--- /work/SRC/openSUSE:Factory/nvidia-settings/nvidia-settings.changes 2024-09-29 18:09:18.898351385 +0200
+++ /work/SRC/openSUSE:Factory/.nvidia-settings.new.2020/nvidia-settings.changes 2024-10-25 19:20:05.715759513 +0200
@@ -1,0 +2,5 @@
+Thu Oct 24 13:48:08 UTC 2024 - Stefan Dirsch <sndirsch(a)suse.com>
+
+- corrected license tag (GPL-2.0-or-later -> GPL-2.0-only)
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ nvidia-settings.spec ++++++
--- /var/tmp/diff_new_pack.a0dq2b/_old 2024-10-25 19:20:06.499792225 +0200
+++ /var/tmp/diff_new_pack.a0dq2b/_new 2024-10-25 19:20:06.503792392 +0200
@@ -20,7 +20,7 @@
Version: 560.35.03
Release: 0
Summary: Configure the NVIDIA graphics driver
-License: GPL-2.0-or-later
+License: GPL-2.0-only
URL: http://www.nvidia.com/object/unix.html
Source0: https://download.nvidia.com/XFree86/%{name}/%{name}-%{version}.tar.bz2
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package rubygem-ruby-augeas for openSUSE:Factory checked in at 2024-10-25 19:19:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-ruby-augeas (Old)
and /work/SRC/openSUSE:Factory/.rubygem-ruby-augeas.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-ruby-augeas"
Fri Oct 25 19:19:14 2024 rev:6 rq:1218211 version:0.6.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-ruby-augeas/rubygem-ruby-augeas.changes 2024-07-28 17:19:05.802961368 +0200
+++ /work/SRC/openSUSE:Factory/.rubygem-ruby-augeas.new.2020/rubygem-ruby-augeas.changes 2024-10-25 19:19:59.739510167 +0200
@@ -1,0 +2,13 @@
+Wed Oct 23 11:40:07 UTC 2024 - Josef Reidinger <jreidinger(a)suse.com>
+
+- Update to version 0.6.0 which includes mostly distribution patches
+- remove arity-fix.patch as it is included in new release
+- remove COPYING.patch as it is included in new release
+
+-------------------------------------------------------------------
+Fri Jul 26 14:00:47 UTC 2024 - Josef Reidinger <jreidinger(a)suse.com>
+
+- remove gcc14.patch and apply proper fix that fix arity of method
+ (gh#hercules-team/ruby-augeas#17)
+
+-------------------------------------------------------------------
@@ -5 +18 @@
-- Add gcc14.patch dont enforce the check until upstream can fix the
+- Add gcc14.patch don't enforce the check until upstream can fix the
Old:
----
COPYING.patch
gcc14.patch
ruby-augeas-0.5.0.gem
New:
----
ruby-augeas-0.6.0.gem
BETA DEBUG BEGIN:
Old:- remove arity-fix.patch as it is included in new release
- remove COPYING.patch as it is included in new release
Old:
- remove gcc14.patch and apply proper fix that fix arity of method
(gh#hercules-team/ruby-augeas#17)
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rubygem-ruby-augeas.spec ++++++
--- /var/tmp/diff_new_pack.EiKexu/_old 2024-10-25 19:20:00.699550223 +0200
+++ /var/tmp/diff_new_pack.EiKexu/_new 2024-10-25 19:20:00.699550223 +0200
@@ -24,7 +24,7 @@
#
Name: rubygem-ruby-augeas
-Version: 0.5.0
+Version: 0.6.0
Release: 0
%define mod_name ruby-augeas
%define mod_full_name %{mod_name}-%{version}
@@ -45,26 +45,17 @@
BuildRequires: libxml2-devel
%endif
# /MANUAL
-# MANUAL
-Patch0: COPYING.patch
-Patch1: gcc14.patch
-# /MANUAL
%description
Provides bindings for augeas.
%prep
-%gem_unpack
-%patch -P 0 -p1
-%patch -P 1 -p1
-find -type f -print0 | xargs -0 touch -r %{SOURCE0}
-%gem_build
%build
%install
%gem_install \
- --doc-files="COPYING NEWS README.rdoc" \
+ --doc-files="COPYING NEWS README.md" \
-f
%gem_cleanup
++++++ gem2rpm.yml ++++++
--- /var/tmp/diff_new_pack.EiKexu/_old 2024-10-25 19:20:00.735551725 +0200
+++ /var/tmp/diff_new_pack.EiKexu/_new 2024-10-25 19:20:00.739551892 +0200
@@ -1,7 +1,3 @@
-:license: LGPL-2.1+
-:patches:
- 'COPYING.patch': -p1
- gcc14.patch: -p1
:preamble: |-
BuildRequires: pkgconfig
BuildRequires: augeas-devel
++++++ ruby-augeas-0.5.0.gem -> ruby-augeas-0.6.0.gem ++++++
++++ 1740 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package patterns-containers for openSUSE:Factory checked in at 2024-10-25 19:19:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/patterns-containers (Old)
and /work/SRC/openSUSE:Factory/.patterns-containers.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "patterns-containers"
Fri Oct 25 19:19:12 2024 rev:33 rq:1218204 version:5.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/patterns-containers/patterns-containers.changes 2023-06-29 17:27:32.573983256 +0200
+++ /work/SRC/openSUSE:Factory/.patterns-containers.new.2020/patterns-containers.changes 2024-10-25 19:19:58.571461433 +0200
@@ -1,0 +2,6 @@
+Fri Oct 25 07:56:50 UTC 2024 - Thorsten Kukuk <kukuk(a)suse.com>
+
+- Remove containers-systemd, deprecated upstream technology, quadlets
+ should be used today
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ patterns-containers.spec ++++++
--- /var/tmp/diff_new_pack.1uU6zX/_old 2024-10-25 19:19:59.531501489 +0200
+++ /var/tmp/diff_new_pack.1uU6zX/_new 2024-10-25 19:19:59.535501655 +0200
@@ -1,7 +1,7 @@
#
# spec file for package patterns-containers
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -39,14 +39,10 @@
Provides: pattern-icon() = pattern-kubic
Provides: pattern-order() = 9030
Provides: pattern-visible()
-Requires: containers-systemd
Requires: podman
Requires: (distrobox if patterns-microos-desktop-common else toolbox)
Suggests: toolbox
Requires: pattern() = basesystem
-#Obsolete CaaSP Patterns
-Provides: patterns-caasp-container-runtime
-Obsoletes: patterns-caasp-container-runtime <= 4.0
%description container_runtime
This pattern installs the default container runtime packages for non-clustered systems.
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package scons for openSUSE:Factory checked in at 2024-10-25 19:19:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/scons (Old)
and /work/SRC/openSUSE:Factory/.scons.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "scons"
Fri Oct 25 19:19:10 2024 rev:49 rq:1218160 version:4.8.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/scons/scons.changes 2024-07-10 16:48:05.852494118 +0200
+++ /work/SRC/openSUSE:Factory/.scons.new.2020/scons.changes 2024-10-25 19:19:54.619296538 +0200
@@ -1,0 +2,12 @@
+Thu Oct 24 18:52:36 UTC 2024 - Andreas Stieger <andreas.stieger(a)gmx.de>
+
+- SCons 4.8.1:
+ * env.Dump() now accepts any number of optional "key" arguments,
+ and returns a dictionary string
+ * Fix SCons.Variables import
+ * Fix a problem with AppendUnique and PrependUnique where a value
+ could be erroneously removed due to a substring match.
+ * Fix handling of ListVariable when supplying a quoted choice
+ containing a space character
+
+-------------------------------------------------------------------
Old:
----
SCons-4.8.0.tar.gz
New:
----
SCons-4.8.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ scons.spec ++++++
--- /var/tmp/diff_new_pack.o6jOYZ/_old 2024-10-25 19:19:55.511333756 +0200
+++ /var/tmp/diff_new_pack.o6jOYZ/_new 2024-10-25 19:19:55.515333923 +0200
@@ -20,7 +20,7 @@
%define pythons python3
%{?sle15_python_module_pythons}
Name: scons
-Version: 4.8.0
+Version: 4.8.1
Release: 0
Summary: Replacement for Make
License: MIT
++++++ SCons-4.8.0.tar.gz -> SCons-4.8.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scons-4.8.0/PKG-INFO new/scons-4.8.1/PKG-INFO
--- old/scons-4.8.0/PKG-INFO 2024-07-08 01:52:31.029407500 +0200
+++ new/scons-4.8.1/PKG-INFO 2024-09-04 02:46:54.910740000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: SCons
-Version: 4.8.0
+Version: 4.8.1
Summary: Open Source next-generation build tool.
Author-email: William Deegan <bill(a)baddogconsulting.com>
License: MIT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scons-4.8.0/SCons/Environment.py new/scons-4.8.1/SCons/Environment.py
--- old/scons-4.8.0/SCons/Environment.py 2024-06-30 23:44:47.000000000 +0200
+++ new/scons-4.8.1/SCons/Environment.py 2024-09-03 04:38:32.000000000 +0200
@@ -1512,11 +1512,17 @@
self._dict[envname][name] = nv
- def AppendUnique(self, delete_existing: bool=False, **kw) -> None:
- """Append values to existing construction variables
- in an Environment, if they're not already there.
- If delete_existing is True, removes existing values first, so
- values move to end.
+ def AppendUnique(self, delete_existing: bool = False, **kw) -> None:
+ """Append values uniquely to existing construction variables.
+
+ Similar to :meth:`Append`, but the result may not contain duplicates
+ of any values passed for each given key (construction variable),
+ so an existing list may need to be pruned first, however it may still
+ contain other duplicates.
+
+ If *delete_existing* is true, removes existing values first, so values
+ move to the end; otherwise (the default) values are skipped if
+ already present.
"""
kw = copy_non_reserved_keywords(kw)
for key, val in kw.items():
@@ -1539,12 +1545,11 @@
val = [x for x in val if x not in dk]
self._dict[key] = dk + val
else:
+ # val is not a list, so presumably a scalar (likely str).
dk = self._dict[key]
if is_List(dk):
- # By elimination, val is not a list. Since dk is a
- # list, wrap val in a list first.
if delete_existing:
- dk = list(filter(lambda x, val=val: x not in val, dk))
+ dk = [x for x in dk if x != val]
self._dict[key] = dk + [val]
else:
if val not in dk:
@@ -1694,28 +1699,37 @@
return dlist
- def Dump(self, key: Optional[str] = None, format: str = 'pretty') -> str:
- """ Returns a dump of serialized construction variables.
+ def Dump(self, *key: str, format: str = 'pretty') -> str:
+ """Return string of serialized construction variables.
- The display formats are intended for humaan readers when
- debugging - none of the supported formats produce a result that
- SCons itself can directly make use of. Objects that cannot
- directly be represented get a placeholder like
- ``<function foo at 0x123456>`` or ``<<non-serializable: function>>``.
+ Produces a "pretty" output of a dictionary of selected
+ construction variables, or all of them. The display *format* is
+ selectable. The result is intended for human consumption (e.g,
+ to print), mainly when debugging. Objects that cannot directly be
+ represented get a placeholder like ``<function foo at 0x123456>``
+ (pretty-print) or ``<<non-serializable: function>>`` (JSON).
Args:
- key: if ``None``, format the whole dict of variables,
- else format just the value of *key*.
+ key: if omitted, format the whole dict of variables,
+ else format *key*(s) with the corresponding values.
format: specify the format to serialize to. ``"pretty"`` generates
a pretty-printed string, ``"json"`` a JSON-formatted string.
Raises:
ValueError: *format* is not a recognized serialization format.
+
+ .. versionchanged:: NEXT_VERSION
+ *key* is no longer limited to a single construction variable name.
+ If *key* is supplied, a formatted dictionary is generated like the
+ no-arg case - previously a single *key* displayed just the value.
"""
- if key:
- cvars = self.Dictionary(key)
- else:
+ if not key:
cvars = self.Dictionary()
+ elif len(key) == 1:
+ dkey = key[0]
+ cvars = {dkey: self[dkey]}
+ else:
+ cvars = dict(zip(key, self.Dictionary(*key)))
fmt = format.lower()
@@ -1735,14 +1749,15 @@
class DumpEncoder(json.JSONEncoder):
"""SCons special json Dump formatter."""
+
def default(self, obj):
if isinstance(obj, (UserList, UserDict)):
return obj.data
return f'<<non-serializable: {type(obj).__qualname__}>>'
return json.dumps(cvars, indent=4, cls=DumpEncoder, sort_keys=True)
- else:
- raise ValueError("Unsupported serialization format: %s." % fmt)
+
+ raise ValueError("Unsupported serialization format: %s." % fmt)
def FindIxes(self, paths: Sequence[str], prefix: str, suffix: str) -> Optional[str]:
@@ -1929,11 +1944,17 @@
self._dict[envname][name] = nv
- def PrependUnique(self, delete_existing: bool=False, **kw) -> None:
- """Prepend values to existing construction variables
- in an Environment, if they're not already there.
- If delete_existing is True, removes existing values first, so
- values move to front.
+ def PrependUnique(self, delete_existing: bool = False, **kw) -> None:
+ """Prepend values uniquely to existing construction variables.
+
+ Similar to :meth:`Prepend`, but the result may not contain duplicates
+ of any values passed for each given key (construction variable),
+ so an existing list may need to be pruned first, however it may still
+ contain other duplicates.
+
+ If *delete_existing* is true, removes existing values first, so values
+ move to the front; otherwise (the default) values are skipped if
+ already present.
"""
kw = copy_non_reserved_keywords(kw)
for key, val in kw.items():
@@ -1956,12 +1977,11 @@
val = [x for x in val if x not in dk]
self._dict[key] = val + dk
else:
+ # val is not a list, so presumably a scalar (likely str).
dk = self._dict[key]
if is_List(dk):
- # By elimination, val is not a list. Since dk is a
- # list, wrap val in a list first.
if delete_existing:
- dk = [x for x in dk if x not in val]
+ dk = [x for x in dk if x != val]
self._dict[key] = [val] + dk
else:
if val not in dk:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scons-4.8.0/SCons/Platform/win32.py new/scons-4.8.1/SCons/Platform/win32.py
--- old/scons-4.8.0/SCons/Platform/win32.py 2024-02-04 21:49:23.000000000 +0100
+++ new/scons-4.8.1/SCons/Platform/win32.py 2024-09-03 04:38:32.000000000 +0200
@@ -167,7 +167,7 @@
try:
with open(tmpFileStdoutName, "rb") as tmpFileStdout:
output = tmpFileStdout.read()
- stdout.write(output.decode(stdout.encoding, "replace"))
+ stdout.write(output.decode('oem', "replace").replace("\r\n", "\n"))
os.remove(tmpFileStdoutName)
except OSError:
pass
@@ -176,7 +176,7 @@
try:
with open(tmpFileStderrName, "rb") as tmpFileStderr:
errors = tmpFileStderr.read()
- stderr.write(errors.decode(stderr.encoding, "replace"))
+ stderr.write(errors.decode('oem', "replace").replace("\r\n", "\n"))
os.remove(tmpFileStderrName)
except OSError:
pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scons-4.8.0/SCons/Script/Main.py new/scons-4.8.1/SCons/Script/Main.py
--- old/scons-4.8.0/SCons/Script/Main.py 2024-07-08 01:48:05.000000000 +0200
+++ new/scons-4.8.1/SCons/Script/Main.py 2024-07-08 02:20:02.000000000 +0200
@@ -67,7 +67,7 @@
# these define the range of versions SCons supports
minimum_python_version = (3, 6, 0)
-deprecated_python_version = (3, 7, 0) # the first non-deprecated version
+deprecated_python_version = (3, 7, 0)
# ordered list of SConstruct names to look for if there is no -f flag
KNOWN_SCONSTRUCT_NAMES = [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scons-4.8.0/SCons/Util/sctypes.py new/scons-4.8.1/SCons/Util/sctypes.py
--- old/scons-4.8.0/SCons/Util/sctypes.py 2024-02-22 23:42:56.000000000 +0100
+++ new/scons-4.8.1/SCons/Util/sctypes.py 2024-07-22 03:13:08.000000000 +0200
@@ -11,7 +11,8 @@
import os
import pprint
import re
-from typing import Optional
+import sys
+from typing import Optional, Union
from collections import UserDict, UserList, UserString, deque
from collections.abc import MappingView, Iterable
@@ -50,38 +51,63 @@
# Empirically, it is faster to check explicitly for str than for basestring.
BaseStringTypes = str
+# Later Python versions allow us to explicitly apply type hints based off the
+# return value similar to isinstance(), albeit not as precise.
+if sys.version_info >= (3, 13):
+ from typing import TypeAlias, TypeIs
+
+ DictTypeRet: TypeAlias = TypeIs[Union[dict, UserDict]]
+ ListTypeRet: TypeAlias = TypeIs[Union[list, UserList, deque]]
+ SequenceTypeRet: TypeAlias = TypeIs[Union[list, tuple, deque, UserList, MappingView]]
+ TupleTypeRet: TypeAlias = TypeIs[tuple]
+ StringTypeRet: TypeAlias = TypeIs[Union[str, UserString]]
+elif sys.version_info >= (3, 10):
+ from typing import TypeAlias, TypeGuard
+
+ DictTypeRet: TypeAlias = TypeGuard[Union[dict, UserDict]]
+ ListTypeRet: TypeAlias = TypeGuard[Union[list, UserList, deque]]
+ SequenceTypeRet: TypeAlias = TypeGuard[Union[list, tuple, deque, UserList, MappingView]]
+ TupleTypeRet: TypeAlias = TypeGuard[tuple]
+ StringTypeRet: TypeAlias = TypeGuard[Union[str, UserString]]
+else:
+ DictTypeRet = Union[bool, bool]
+ ListTypeRet = Union[bool, bool]
+ SequenceTypeRet = Union[bool, bool]
+ TupleTypeRet = Union[bool, bool]
+ StringTypeRet = Union[bool, bool]
+
def is_Dict( # pylint: disable=redefined-outer-name,redefined-builtin
obj, isinstance=isinstance, DictTypes=DictTypes
-) -> bool:
+) -> DictTypeRet:
"""Check if object is a dict."""
return isinstance(obj, DictTypes)
def is_List( # pylint: disable=redefined-outer-name,redefined-builtin
obj, isinstance=isinstance, ListTypes=ListTypes
-) -> bool:
+) -> ListTypeRet:
"""Check if object is a list."""
return isinstance(obj, ListTypes)
def is_Sequence( # pylint: disable=redefined-outer-name,redefined-builtin
obj, isinstance=isinstance, SequenceTypes=SequenceTypes
-) -> bool:
+) -> SequenceTypeRet:
"""Check if object is a sequence."""
return isinstance(obj, SequenceTypes)
def is_Tuple( # pylint: disable=redefined-builtin
obj, isinstance=isinstance, tuple=tuple
-) -> bool:
+) -> TupleTypeRet:
"""Check if object is a tuple."""
return isinstance(obj, tuple)
def is_String( # pylint: disable=redefined-outer-name,redefined-builtin
obj, isinstance=isinstance, StringTypes=StringTypes
-) -> bool:
+) -> StringTypeRet:
"""Check if object is a string."""
return isinstance(obj, StringTypes)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scons-4.8.0/SCons/Variables/BoolVariable.py new/scons-4.8.1/SCons/Variables/BoolVariable.py
--- old/scons-4.8.0/SCons/Variables/BoolVariable.py 2024-07-06 05:33:58.000000000 +0200
+++ new/scons-4.8.1/SCons/Variables/BoolVariable.py 2024-09-03 04:38:32.000000000 +0200
@@ -32,7 +32,7 @@
...
"""
-from typing import Tuple, Callable
+from typing import Callable, Tuple, Union
import SCons.Errors
@@ -42,7 +42,7 @@
FALSE_STRINGS = ('n', 'no', 'false', 'f', '0', 'off', 'none')
-def _text2bool(val: str) -> bool:
+def _text2bool(val: Union[str, bool]) -> bool:
"""Convert boolean-like string to boolean.
If *val* looks like it expresses a bool-like value, based on
@@ -54,6 +54,9 @@
Raises:
ValueError: if *val* cannot be converted to boolean.
"""
+ if isinstance(val, bool):
+ # mainly for the subst=False case: default might be a bool
+ return val
lval = val.lower()
if lval in TRUE_STRINGS:
return True
@@ -63,7 +66,7 @@
raise ValueError(f"Invalid value for boolean variable: {val!r}")
-def _validator(key, val, env) -> None:
+def _validator(key: str, val, env) -> None:
"""Validate that the value of *key* in *env* is a boolean.
Parameter *val* is not used in the check.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scons-4.8.0/SCons/Variables/ListVariable.py new/scons-4.8.1/SCons/Variables/ListVariable.py
--- old/scons-4.8.0/SCons/Variables/ListVariable.py 2024-07-06 05:33:58.000000000 +0200
+++ new/scons-4.8.1/SCons/Variables/ListVariable.py 2024-09-03 04:38:32.000000000 +0200
@@ -81,6 +81,7 @@
if allowedElems is None:
allowedElems = []
super().__init__([_f for _f in initlist if _f])
+ # TODO: why sorted? don't we want to display in the order user gave?
self.allowedElems = sorted(allowedElems)
def __cmp__(self, other):
@@ -118,6 +119,9 @@
The arguments *allowedElems* and *mapdict* are non-standard
for a :class:`Variables` converter: the lambda in the
:func:`ListVariable` function arranges for us to be called correctly.
+
+ Incoming values ``all`` and ``none`` are recognized and converted
+ into their expanded form.
"""
if val == 'none':
val = []
@@ -155,7 +159,7 @@
allowedElems = env[key].allowedElems
if isinstance(val, _ListVariable): # not substituted, use .data
notAllowed = [v for v in val.data if v not in allowedElems]
- else: # val will be a string
+ else: # presumably a string
notAllowed = [v for v in val.split() if v not in allowedElems]
if notAllowed:
# Converter only synthesized 'all' and 'none', they are never
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scons-4.8.0/SCons/Variables/PackageVariable.py new/scons-4.8.1/SCons/Variables/PackageVariable.py
--- old/scons-4.8.0/SCons/Variables/PackageVariable.py 2024-05-25 21:36:34.000000000 +0200
+++ new/scons-4.8.1/SCons/Variables/PackageVariable.py 2024-09-03 04:38:32.000000000 +0200
@@ -51,7 +51,7 @@
"""
import os
-from typing import Callable, Optional, Tuple
+from typing import Callable, Optional, Tuple, Union
import SCons.Errors
@@ -60,13 +60,16 @@
ENABLE_STRINGS = ('1', 'yes', 'true', 'on', 'enable', 'search')
DISABLE_STRINGS = ('0', 'no', 'false', 'off', 'disable')
-def _converter(val):
+def _converter(val: Union[str, bool]) -> Union[str, bool]:
"""Convert package variables.
Returns True or False if one of the recognized truthy or falsy
values is seen, else return the value unchanged (expected to
be a path string).
"""
+ if isinstance(val, bool):
+ # mainly for the subst=False case: default might be a bool
+ return val
lval = val.lower()
if lval in ENABLE_STRINGS:
return True
@@ -75,7 +78,7 @@
return val
-def _validator(key, val, env, searchfunc) -> None:
+def _validator(key: str, val, env, searchfunc) -> None:
"""Validate package variable for valid path.
Checks that if a path is given as the value, that pathname actually exists.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scons-4.8.0/SCons/Variables/PathVariable.py new/scons-4.8.1/SCons/Variables/PathVariable.py
--- old/scons-4.8.0/SCons/Variables/PathVariable.py 2024-07-06 05:33:58.000000000 +0200
+++ new/scons-4.8.1/SCons/Variables/PathVariable.py 2024-09-03 04:38:32.000000000 +0200
@@ -93,12 +93,12 @@
"""
@staticmethod
- def PathAccept(key, val, env) -> None:
+ def PathAccept(key: str, val, env) -> None:
"""Validate path with no checking."""
return
@staticmethod
- def PathIsDir(key, val, env) -> None:
+ def PathIsDir(key: str, val, env) -> None:
"""Validate path is a directory."""
if os.path.isdir(val):
return
@@ -109,7 +109,7 @@
raise SCons.Errors.UserError(msg)
@staticmethod
- def PathIsDirCreate(key, val, env) -> None:
+ def PathIsDirCreate(key: str, val, env) -> None:
"""Validate path is a directory, creating if needed."""
if os.path.isdir(val):
return
@@ -123,7 +123,7 @@
raise SCons.Errors.UserError(msg) from exc
@staticmethod
- def PathIsFile(key, val, env) -> None:
+ def PathIsFile(key: str, val, env) -> None:
"""Validate path is a file."""
if not os.path.isfile(val):
if os.path.isdir(val):
@@ -133,7 +133,7 @@
raise SCons.Errors.UserError(msg)
@staticmethod
- def PathExists(key, val, env) -> None:
+ def PathExists(key: str, val, env) -> None:
"""Validate path exists."""
if not os.path.exists(val):
msg = f'Path for variable {key!r} does not exist: {val}'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scons-4.8.0/SCons/Variables/__init__.py new/scons-4.8.1/SCons/Variables/__init__.py
--- old/scons-4.8.0/SCons/Variables/__init__.py 2024-07-06 05:33:58.000000000 +0200
+++ new/scons-4.8.1/SCons/Variables/__init__.py 2024-09-03 04:38:32.000000000 +0200
@@ -43,6 +43,11 @@
__all__ = [
"Variable",
"Variables",
+ "BoolVariable",
+ "EnumVariable",
+ "ListVariable",
+ "PackageVariable",
+ "PathVariable",
]
class Variable:
@@ -56,7 +61,10 @@
def __str__(self) -> str:
"""Provide a way to "print" a Variable object."""
- return f"({self.key!r}, {self.aliases}, {self.help!r}, {self.default!r}, {self.validator}, {self.converter})"
+ return (
+ f"({self.key!r}, {self.aliases}, {self.help!r}, {self.default!r}, "
+ f"validator={self.validator}, converter={self.converter})"
+ )
class Variables:
@@ -282,7 +290,13 @@
for option in self.options:
if option.validator and option.key in values:
if option.do_subst:
- value = env.subst('${%s}' % option.key)
+ val = env[option.key]
+ if not SCons.Util.is_String(val):
+ # issue #4585: a _ListVariable should not be further
+ # substituted, breaks on values with spaces.
+ value = val
+ else:
+ value = env.subst('${%s}' % option.key)
else:
value = env[option.key]
option.validator(option.key, value, env)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scons-4.8.0/SCons/__init__.py new/scons-4.8.1/SCons/__init__.py
--- old/scons-4.8.0/SCons/__init__.py 2024-07-08 01:52:12.000000000 +0200
+++ new/scons-4.8.1/SCons/__init__.py 2024-09-04 02:46:37.000000000 +0200
@@ -1,9 +1,9 @@
-__version__="4.8.0"
+__version__="4.8.1"
__copyright__="Copyright (c) 2001 - 2024 The SCons Foundation"
__developer__="bdbaddog"
-__date__="Sun, 07 Jul 2024 16:52:07 -0700"
+__date__="Tue, 03 Sep 2024 17:46:32 -0700"
__buildsys__="M1Dog2021"
-__revision__="7c688f694c644b61342670ce92977bf4a396c0d4"
-__build__="7c688f694c644b61342670ce92977bf4a396c0d4"
+__revision__="08661ed4c552323ef3a7f0ff1af38868cbabb05e"
+__build__="08661ed4c552323ef3a7f0ff1af38868cbabb05e"
# make sure compatibility is always in place
import SCons.compat # noqa
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scons-4.8.0/SCons.egg-info/PKG-INFO new/scons-4.8.1/SCons.egg-info/PKG-INFO
--- old/scons-4.8.0/SCons.egg-info/PKG-INFO 2024-07-08 01:52:30.000000000 +0200
+++ new/scons-4.8.1/SCons.egg-info/PKG-INFO 2024-09-04 02:46:54.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: SCons
-Version: 4.8.0
+Version: 4.8.1
Summary: Open Source next-generation build tool.
Author-email: William Deegan <bill(a)baddogconsulting.com>
License: MIT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scons-4.8.0/pyproject.toml new/scons-4.8.1/pyproject.toml
--- old/scons-4.8.0/pyproject.toml 2024-07-06 05:33:58.000000000 +0200
+++ new/scons-4.8.1/pyproject.toml 2024-07-22 03:13:08.000000000 +0200
@@ -52,6 +52,9 @@
include-package-data = true
license-files = ["LICENSE"]
+[tool.setuptools.dynamic]
+version = {attr = "SCons.__version__"}
+
[tool.setuptools.packages.find]
exclude = ["template"]
namespaces = false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scons-4.8.0/scons-time.1 new/scons-4.8.1/scons-time.1
--- old/scons-4.8.0/scons-time.1 2024-07-08 01:52:25.000000000 +0200
+++ new/scons-4.8.1/scons-time.1 2024-09-04 02:46:49.000000000 +0200
@@ -2,12 +2,12 @@
.\" Title: SCONS-TIME
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 07/07/2024
-.\" Manual: SCons 4.8.0
-.\" Source: SCons 4.8.0
+.\" Date: 09/03/2024
+.\" Manual: SCons 4.8.1
+.\" Source: SCons 4.8.1
.\" Language: English
.\"
-.TH "SCONS\-TIME" "1" "07/07/2024" "SCons 4\&.8\&.0" "SCons 4\&.8\&.0"
+.TH "SCONS\-TIME" "1" "09/03/2024" "SCons 4\&.8\&.1" "SCons 4\&.8\&.1"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scons-4.8.0/scons.1 new/scons-4.8.1/scons.1
--- old/scons-4.8.0/scons.1 2024-07-08 01:52:28.000000000 +0200
+++ new/scons-4.8.1/scons.1 2024-09-04 02:46:52.000000000 +0200
@@ -2,12 +2,12 @@
.\" Title: SCONS
.\" Author: The SCons Development Team
.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: <pubdate>Released Sun, 07 Jul 2024 16:52:07 -0700</pubdate>
-.\" Manual: SCons 4.8.0
-.\" Source: SCons 4.8.0 Version 4.8.0
+.\" Date: <pubdate>Released Tue, 03 Sep 2024 17:46:32 -0700</pubdate>
+.\" Manual: SCons 4.8.1
+.\" Source: SCons 4.8.1 Version 4.8.1
.\" Language: English
.\"
-.TH "SCONS" "1" "<pubdate>Released Sun, 07 Jul 2024 16:52:07 -0700</pubdate>" "SCons 4\&.8\&.0 Version 4.8.0" "SCons 4\&.8\&.0"
+.TH "SCONS" "1" "<pubdate>Released Tue, 03 Sep 2024 17:46:32 -0700</pubdate>" "SCons 4\&.8\&.1 Version 4.8.1" "SCons 4\&.8\&.1"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -2044,7 +2044,7 @@
Builder Methods
.RE
.RS 4
-Methods and Functions to do Things
+Functions and Environment Methods
.RE
.RS 4
SConscript Variables
@@ -8802,110 +8802,105 @@
for more information about defining your own Scanner objects and using the
SourceFileScanner
object\&.
-.SS "Methods and Functions To Do Things"
+.SS "SCons Functions and Environment Methods"
.PP
-In addition to Builder methods,
-\fBscons\fR
-provides a number of other
+
+SCons
+provides a variety of
construction environment
-methods and global functions to manipulate the build configuration\&. Usually, a
+methods and global functions to manipulate the build configuration\&. Often, a
construction environment
-method and global function with the same name both exist for convenience\&. In the following list, the global function is documented in this style:
+method and a global function with the same name exist for convenience\&. In this section, both forms are shown if the function can be called in either way\&. The documentation style for these is as follows:
.sp
.if n \{\
.RS 4
.\}
.nf
-\fBFunction\fR(\fIarguments, [optional arguments]\fR)
+\fBFunction\fR(\fIarguments, [optional arguments, \&.\&.\&.]\fR) # Global function
+\fIenv\fR\&.Function(\fIarguments, [optional arguments, \&.\&.\&.]\fR) # Environment method
.fi
.if n \{\
.RE
.\}
.PP
-and the
+In these function signatures, arguments in brackets ([]) are optional, and ellipses (\&.\&.\&.) indicate possible repetition\&. Positional vs\&. keyword arguments are usually detailed in the following text, not in the signature itself\&. The
+Python
+positional\-only (/) and keyword\-only (*) markers are not used\&.
+.PP
+When the
+Python
+keyword=value
+style is shown, it can have two meanings\&. If the keyword argument is known to the function, the value is the default for that argument if it is omitted\&. If the keyword is unknown to the function, some methods treat it as a
+construction variable
+assignment; otherwise an exception is raised for an unknown argument\&.
+.PP
+A global function and a same\-named
construction environment
-method looks like:
+method have the same base functionality, with two key differences:
.sp
-.if n \{\
.RS 4
+.ie n \{\
+\h'-04' 1.\h'+01'\c
.\}
-.nf
-\fIenv\fR\&.Function(\fIarguments, [optional arguments]\fR)
-.fi
-.if n \{\
-.RE
+.el \{\
+.sp -1
+.IP " 1." 4.2
.\}
-.PP
-If the function can be called both ways, then both forms are listed\&.
-.PP
-The global function and same\-named
-construction environment
-method provide almost identical functionality, with a couple of exceptions\&. First, many of the
-construction environment
-methods affect only that
-construction environment, while the global function has a global effect (or, alternatively, takes an additional positional argument to specify the affected
-construction environment)\&. Second, where appropriate, calling the functionality through a
-construction environment
-will substitute
-construction variables
-into any supplied string arguments, while the global function, unless it takes a
-construction environment
-parameter, does not have the context of a
+
+Construction environment
+methods that change the environment act on the environment instance from which they are called, while the corresponding global function acts on a special \(lqhidden\(rq
construction environment
-to pick variables from, and thus cannot perform substitutions\&. For example:
+called the Default Environment\&. In some cases, the global function may take an initial argument giving the object to operate on\&.
+.RE
.sp
-.if n \{\
.RS 4
+.ie n \{\
+\h'-04' 2.\h'+01'\c
.\}
-.nf
-Default(\*(Aq$FOO\*(Aq)
-
-env = Environment(FOO=\*(Aqfoo\*(Aq)
-env\&.Default(\*(Aq$FOO\*(Aq)
-.fi
-.if n \{\
-.RE
+.el \{\
+.sp -1
+.IP " 2." 4.2
.\}
-.PP
-In the above example, the call to the global
-\fBDefault\fR
-function will add a target named
-\fB$FOO\fR
-to the list of default targets, while the call to the
-\fBenv\&.Default\fR
-construction environment
-method will expand the value and add a target named
-\fBfoo\fR
-to the list of default targets\&. For more on
+String\-valued arguments (including strings in list\-valued arguments) are subject to construction variable expansion by the environment method form; variable expansion is not immediately performed in the global function\&. For example,
+\fBDefault(\*(Aq$MYTARGET\*(Aq)\fR
+adds
+\*(Aq$MYTARGET\*(Aq
+to the list of default targets, while if the value in
+\fIenv\fR
+of
+MYTARGET
+is
+\*(Aqmine\*(Aq,
+\fBenv\&.Default(\*(Aq$MYTARGET\*(Aq\fR
+adds
+\*(Aqmine\*(Aq
+to the default targets\&. For more details on
construction variable
expansion, see the
Construction variables
-section below\&.
+section\&.
+.RE
.PP
Global functions are automatically in scope inside
SConscript
-files\&. If you have custom
+files\&. If your project adds
+Python
+modules that you include via the
Python
-code that you import into an
+import
+statement from an
SConscript
-file, such code will need to bring them into their own scope\&. You can do that by adding the following import to the
+file, such code will need to add the functions to that module\(cqs global scope explicitly\&. You can do that by adding the following import to the
Python
module:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-from SCons\&.Script import *
-.fi
-.if n \{\
-.RE
-.\}
+\fBfrom SCons\&.Script import *\fR\&.
.PP
-Construction environment
-methods and global functions provided by
-\fBscons\fR
-include:
+
+SCons
+provides the following
+construction environment
+methods and global functions\&. The list can be augmented on a project basis using
+\fBAddMethod\fR
.PP
\fBAction\fR(\fIaction, [output, [var, \&.\&.\&.]] [key=value, \&.\&.\&.]\fR), \fIenv\fR\&.Action(\fIaction, [output, [var, \&.\&.\&.]] [key=value, \&.\&.\&.]\fR)
.RS 4
@@ -8975,16 +8970,18 @@
.\}
.RE
.PP
-\fBAddOption\fR(\fIarguments\fR)
+\fBAddOption\fR(\fIopt_str, \&.\&.\&., attr=value, \&.\&.\&.\fR)
.RS 4
-Adds a local (project\-specific) command\-line option\&.
-\fIarguments\fR
-are the same as those supported by the
-\fBadd_option\fR
+Adds a local (project\-specific) command\-line option\&. One or more
+\fIopt_str\fR
+values are the strings representing how the option can be called, while the keyword arguments define attributes of the option\&. For the most part these are the same as for the
+\fBOptionParser\&.add_option\fR
method in the standard Python library module
-optparse, with a few additional capabilities noted below\&. See the documentation for
-optparse
-for a thorough discussion of its option\-processing capabities\&.
+optparse, but with a few additional capabilities noted below\&. See the
+\m[blue]\fBoptparse documentation\fR\m[]\&\s-2\u[6]\d\s+2
+for a thorough discussion of its option\-processing capabities\&. All options added through
+\fBAddOption\fR
+are placed in a special "Local Options" option group\&.
.sp
In addition to the arguments and values supported by the
optparse
@@ -8993,7 +8990,9 @@
\fBAddOption\fR
allows setting the
\fInargs\fR
-keyword value to a string consisting of a question mark (\*(Aq?\*(Aq) to indicate that the option argument for that option string is optional\&. If the option string is present on the command line but has no matching option argument, the value of the
+keyword value to a string
+\*(Aq?\*(Aq
+(question mark) to indicate that the option argument for that option string may be omitted\&. If the option string is present on the command line but has no matching option argument, the value of the
\fIconst\fR
keyword argument is produced as the value of the option\&. If the option string is omitted from the command line, the value of the
\fIdefault\fR
@@ -10239,47 +10238,50 @@
.\}
.RE
.PP
-\fBDefaultEnvironment\fR(\fI[**kwargs]\fR)
+\fBDefaultEnvironment\fR(\fI[key=value, \&.\&.\&.]\fR)
.RS 4
Instantiates and returns the global
construction environment
-object\&. This environment is used internally by SCons when it executes many of the global functions listed in this section (that is, those not called as methods of a specific
-construction environment)\&. The
-default environment
-is a singleton: the keyword arguments are used only on the first call; on subsequent calls the already\-constructed object is returned and any keyword arguments are silently ignored\&. The
-default environment
-can still be modified after instantiation in the same way as any other
-construction environment\&. The
-default environment
-is independent: modifying it has no effect on any other
-construction environment
-constructed by an
+object\&. The
+Default Environment
+is used internally by
+SCons
+when executing a global function or the global form of a Builder method that requires access to a
+construction environment\&.
+.sp
+On the first call, arguments are interpreted as for the
\fBEnvironment\fR
-or
-\fBClone\fR
-call\&.
+function\&. The
+Default Environment
+is a singleton; subsequent calls to
+\fBDefaultEnvironment\fR
+return the already\-constructed object, and any keyword arguments are silently ignored\&.
.sp
-It is not mandatory to call
-\fBDefaultEnvironment\fR: the
+The
+Default Environment
+can be modified after instantiation, similar to other
+construction environments, although some
+construction environment
+methods may be unavailable\&. Modifying the
+Default Environment
+has no effect on any other
+construction environment, either existing or newly constructed\&.
+.sp
+It is not necessary to explicitly call
+\fBDefaultEnvironment\fR\&.
+SCons
+instantiates the
default environment
-is instantiated automatically when the build phase begins if this function has not been called; however calling it explicitly gives the opportunity to affect and examine the contents of the
-default environment\&. Instantiation happens even if no build instructions appar to use it, as there are internal uses\&. If there are no uses in the project
+automatically when the build phase begins, if has not already been done\&. However, calling it explicitly provides the opportunity to affect and examine its contents\&. Instantiation occurs even if nothing in the build system appars to use it, due to internal uses\&.
+.sp
+If the project
SConscript
-files, a small performance gain may be seen by calling
+files do not use global functions or Builders, a small performance gain may be achieved by calling
\fBDefaultEnvironment\fR
-with an empty tools list, thus avoiding that part of the initialization cost\&. This is mainly of interest in testing when
+with an empty tools list (\fBDefaultEnvironment(tools=[])\fR)\&. This avoids the tool initialization cost for the
+Default Environment, which is mainly of interest in the test suite where
\fBscons\fR
-is launched repeatedly in a short time period:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-DefaultEnvironment(tools=[])
-.fi
-.if n \{\
-.RE
-.\}
+is launched repeatedly in a short time period\&.
.RE
.PP
\fBDepends\fR(\fItarget, dependency\fR), \fIenv\fR\&.Depends(\fItarget, dependency\fR)
@@ -10375,34 +10377,39 @@
Directory Nodes can be used anywhere you would supply a string as a directory name to a Builder method or function\&. Directory Nodes have attributes and methods that are useful in many situations; see manpage section "Filesystem Nodes" for more information\&.
.RE
.PP
-\fIenv\fR\&.Dump(\fI[key], [format]\fR)
+\fIenv\fR\&.Dump(\fI[key, \&.\&.\&.], [format=]\fR)
.RS 4
Serializes
construction variables
+from the current
+construction environment
to a string\&. The method supports the following formats specified by
-\fIformat\fR:
+\fIformat\fR, which must be used a a keyword argument:
.PP
pretty
.RS 4
-Returns a pretty printed representation of the environment (if
-\fIformat\fR
-is not specified, this is the default)\&.
+Returns a pretty\-printed representation of the variables (this is the default)\&. The variables will be presented in
+Python
+dict form\&.
.RE
.PP
json
.RS 4
-Returns a JSON\-formatted string representation of the environment\&.
+Returns a JSON\-formatted string representation of the variables\&. The variables will be presented as a JSON object literal, the JSON equivalent of a
+Python
+dict\&.
.RE
.sp
-If
+If no
\fIkey\fR
-is
-\fBNone\fR
-(the default) the entire dictionary of
+is supplied, all the
construction variables
-is serialized\&. If supplied, it is taken as the name of a
-construction variable
-whose value is serialized\&.
+are serialized\&. If one or more keys are supplied, only those keys and their values are serialized\&.
+.sp
+
+\fIChanged in NEXT_VERSION\fR: More than one
+\fIkey\fR
+can be specified\&. The returned string always looks like a dict (or JSON equivalent); previously a single key serialized only the value, not the key with the value\&.
.sp
This SConstruct:
.sp
@@ -10410,20 +10417,25 @@
.RS 4
.\}
.nf
-env=Environment()
+env = Environment()
print(env\&.Dump(\*(AqCCCOM\*(Aq))
+print(env\&.Dump(\*(AqCC\*(Aq, \*(AqCCFLAGS\*(Aq, format=\*(Aqjson\*(Aq))
.fi
.if n \{\
.RE
.\}
.sp
-will print:
+will print something like:
.sp
.if n \{\
.RS 4
.\}
.nf
-\*(Aq$CC \-c \-o $TARGET $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS $SOURCES\*(Aq
+{\*(AqCCCOM\*(Aq: \*(Aq$CC \-o $TARGET \-c $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES\*(Aq}
+{
+ "CC": "gcc",
+ "CCFLAGS": []
+}
.fi
.if n \{\
.RE
@@ -10442,7 +10454,7 @@
.RE
.\}
.sp
-will print:
+will print something like:
.sp
.if n \{\
.RS 4
@@ -12884,7 +12896,7 @@
\fB\-Q\fR
T}:T{
See
- \&\s-2\u[6]\d\s+2
+ \&\s-2\u[7]\d\s+2
T}
T{
\fInum_jobs\fR
@@ -13126,7 +13138,7 @@
.\}
.RE
.PP
-\fBTool\fR(\fIname, [toolpath, **kwargs]\fR), \fIenv\fR\&.Tool(\fIname, [toolpath, **kwargs]\fR)
+\fBTool\fR(\fIname, [toolpath, key=value, \&.\&.\&.]\fR), \fIenv\fR\&.Tool(\fIname, [toolpath, key=value, \&.\&.\&.]\fR)
.RS 4
Locates the tool specification module
\fIname\fR
@@ -17454,7 +17466,7 @@
\fBLICENSE\fR
.RS 4
The abbreviated name, preferably the SPDX code, of the license under which this project is released (GPL\-3\&.0, LGPL\-2\&.1, BSD\-2\-Clause etc\&.)\&. See
-\m[blue]\fBhttp://www\&.opensource\&.org/licenses/alphabetical\fR\m[]\&\s-2\u[7]\d\s+2
+\m[blue]\fBhttp://www\&.opensource\&.org/licenses/alphabetical\fR\m[]\&\s-2\u[8]\d\s+2
for a list of license names and SPDX codes\&.
.sp
See the
@@ -26165,7 +26177,7 @@
is limited on Windows and on WebAssembly platforms, see the notes in the
Python
documentation for
-\m[blue]\fBos\&.chmod\fR\m[]\&\s-2\u[8]\d\s+2, which is the underlying function\&.
+\m[blue]\fBos\&.chmod\fR\m[]\&\s-2\u[9]\d\s+2, which is the underlying function\&.
.RE
.PP
\fBCopy\fR(\fIdest, src\fR)
@@ -27671,7 +27683,7 @@
.RS 4
SCons source code
- \m[blue]\fBon GitHub\fR\m[]\&\s-2\u[9]\d\s+2
+ \m[blue]\fBon GitHub\fR\m[]\&\s-2\u[10]\d\s+2
.RE
.RS 4
@@ -27724,6 +27736,11 @@
\%https://learn.microsoft.com/en-us/visualstudio/extensibility/internals/solution-dot-sln-file
.RE
.IP " 6." 4
+optparse documentation
+.RS 4
+\%https://docs.python.org/3/library/optparse.html
+.RE
+.IP " 7." 4
If
\fIno_progress\fR
is set via
@@ -27734,17 +27751,17 @@
SCons
has to start reading them before it can see the
\fBSetOption\fR.
-.IP " 7." 4
+.IP " 8." 4
http://www.opensource.org/licenses/alphabetical
.RS 4
\%http://www.opensource.org/licenses/alphabetical
.RE
-.IP " 8." 4
+.IP " 9." 4
os.chmod
.RS 4
\%https://docs.python.org/3/library/os.html#os.chmod
.RE
-.IP " 9." 4
+.IP "10." 4
on GitHub
.RS 4
\%https://github.com/SCons/scons
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scons-4.8.0/sconsign.1 new/scons-4.8.1/sconsign.1
--- old/scons-4.8.0/sconsign.1 2024-07-08 01:52:28.000000000 +0200
+++ new/scons-4.8.1/sconsign.1 2024-09-04 02:46:52.000000000 +0200
@@ -2,12 +2,12 @@
.\" Title: SCONSIGN
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\" Date: 07/07/2024
-.\" Manual: SCons 4.8.0
-.\" Source: SCons 4.8.0
+.\" Date: 09/03/2024
+.\" Manual: SCons 4.8.1
+.\" Source: SCons 4.8.1
.\" Language: English
.\"
-.TH "SCONSIGN" "1" "07/07/2024" "SCons 4\&.8\&.0" "SCons 4\&.8\&.0"
+.TH "SCONSIGN" "1" "09/03/2024" "SCons 4\&.8\&.1" "SCons 4\&.8\&.1"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scons-4.8.0/setup.py new/scons-4.8.1/setup.py
--- old/scons-4.8.0/setup.py 2023-01-24 05:14:53.000000000 +0100
+++ new/scons-4.8.1/setup.py 2024-07-22 03:13:08.000000000 +0200
@@ -14,24 +14,16 @@
return fp.read()
-def get_version(rel_path):
- for line in read(rel_path).splitlines():
- if line.startswith('__version__'):
- delim = '"' if '"' in line else "'"
- return line.split(delim)[1]
- else:
- raise RuntimeError("Unable to find version string.")
-
-
exclude = ['*Tests']
class build_py(build_py_orig):
def find_package_modules(self, package, package_dir):
- """
- Custom module to find package modules.
- It will strip out any modules which match the glob patters in exclude above
+ """Custom module to find package modules.
+
+ Will strip out any modules which match the glob patters in
+ *exclude* above
"""
modules = super().find_package_modules(package, package_dir)
return [(pkg, mod, file, ) for (pkg, mod, file, ) in modules
@@ -42,5 +34,4 @@
cmdclass={
'build_py': build_py,
},
- version=get_version('SCons/__init__.py'),
-)
\ No newline at end of file
+)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-sdjson for openSUSE:Factory checked in at 2024-10-25 19:19:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-sdjson (Old)
and /work/SRC/openSUSE:Factory/.python-sdjson.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-sdjson"
Fri Oct 25 19:19:08 2024 rev:2 rq:1218156 version:0.5.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-sdjson/python-sdjson.changes 2024-07-30 11:56:40.334871534 +0200
+++ /work/SRC/openSUSE:Factory/.python-sdjson.new.2020/python-sdjson.changes 2024-10-25 19:19:51.591170196 +0200
@@ -1,0 +2,6 @@
+Fri Oct 25 05:20:57 UTC 2024 - Matej Cepl <mcepl(a)cepl.eu>
+
+- Skip failing test test_unexpected_data
+ (gh#domdfcoding/singledispatch-json#55).
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-sdjson.spec ++++++
--- /var/tmp/diff_new_pack.XVEExw/_old 2024-10-25 19:19:52.315200404 +0200
+++ /var/tmp/diff_new_pack.XVEExw/_new 2024-10-25 19:19:52.315200404 +0200
@@ -68,7 +68,8 @@
%check
%if %{with test}
-%pytest
+# skip because of gh#domdfcoding/singledispatch-json#55
+%pytest -k 'not test_unexpected_data'
%endif
%if !%{with test}
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package less for openSUSE:Factory checked in at 2024-10-25 19:19:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/less (Old)
and /work/SRC/openSUSE:Factory/.less.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "less"
Fri Oct 25 19:19:07 2024 rev:76 rq:1218137 version:661
Changes:
--------
--- /work/SRC/openSUSE:Factory/less/less.changes 2024-07-19 15:25:57.987914787 +0200
+++ /work/SRC/openSUSE:Factory/.less.new.2020/less.changes 2024-10-25 19:19:50.391120126 +0200
@@ -1,0 +2,6 @@
+Mon Oct 21 14:48:40 UTC 2024 - Antonio Feijoo <antonio.feijoo(a)suse.com>
+
+- Change preprocessor dependencies from Requires to Recommends. It's disabled by
+ default and they are not necessary for less.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ less.spec ++++++
--- /var/tmp/diff_new_pack.txq6hC/_old 2024-10-25 19:19:51.399162185 +0200
+++ /var/tmp/diff_new_pack.txq6hC/_new 2024-10-25 19:19:51.403162352 +0200
@@ -41,9 +41,9 @@
BuildRequires: automake
BuildRequires: ncurses-devel
BuildRequires: pkgconfig
-Requires: file
-# lessopen.sh uses which
-Requires: /usr/bin/which
+# weak dependencies required only by preprocessor, which is disabled by default
+Recommends: file
+Recommends: /usr/bin/which
%description
less is a text file browser and pager similar to more. It allows
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package subversion for openSUSE:Factory checked in at 2024-10-25 19:19:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/subversion (Old)
and /work/SRC/openSUSE:Factory/.subversion.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "subversion"
Fri Oct 25 19:19:00 2024 rev:197 rq:1218108 version:1.14.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/subversion/subversion.changes 2024-10-23 21:08:01.737087953 +0200
+++ /work/SRC/openSUSE:Factory/.subversion.new.2020/subversion.changes 2024-10-25 19:19:34.086439850 +0200
@@ -1,0 +2,7 @@
+Thu Oct 24 15:20:32 UTC 2024 - Andreas Stieger <andreas.stieger(a)gmx.de>
+
+- Fix build with Swig 4.3.0 (boo#1231590)
+ * subversion-1.14.4-swig-4.3.0-swig-py.patch
+ * subversion-1.14.4-swig-4.3.0-swig-rb.patch
+
+-------------------------------------------------------------------
New:
----
subversion-1.14.4-swig-4.3.0-swig-py.patch
subversion-1.14.4-swig-4.3.0-swig-rb.patch
BETA DEBUG BEGIN:
New:- Fix build with Swig 4.3.0 (boo#1231590)
* subversion-1.14.4-swig-4.3.0-swig-py.patch
* subversion-1.14.4-swig-4.3.0-swig-rb.patch
New: * subversion-1.14.4-swig-4.3.0-swig-py.patch
* subversion-1.14.4-swig-4.3.0-swig-rb.patch
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ subversion.spec ++++++
--- /var/tmp/diff_new_pack.dUY1Ae/_old 2024-10-25 19:19:36.282531477 +0200
+++ /var/tmp/diff_new_pack.dUY1Ae/_new 2024-10-25 19:19:36.286531644 +0200
@@ -75,6 +75,8 @@
# PATCH-FIX-UPSTREAM danilo.spinella(a)suse.com bsc#1195486 bsc#1193778
# Fix testCrash_RequestChannel_nativeRead_AfterException test on aarch64 and ppc64le
Patch47: fix-javahl-test.patch
+Patch48: subversion-1.14.4-swig-4.3.0-swig-py.patch
+Patch49: subversion-1.14.4-swig-4.3.0-swig-rb.patch
BuildRequires: apache-rpm-macros
BuildRequires: apache2-devel >= 2.2.0
BuildRequires: apache2-prefork
++++++ subversion-1.14.4-swig-4.3.0-swig-py.patch ++++++
------------------------------------------------------------------------
r1921523 | jun66j5 | 2024-10-24 05:11:00 +0200 (Thu, 24 Oct 2024) | 3 lines
Changed paths:
M /subversion/branches/1.14.x-r1921505
M /subversion/branches/1.14.x-r1921505/subversion/bindings/swig/include/svn_types.swg
M /subversion/branches/1.14.x-r1921505/subversion/bindings/swig/python/tests/client.py
M /subversion/branches/1.14.x-r1921505/subversion/bindings/swig/python/tests/core.py
On the 1.14.x-r1921505 branch: Merge r1921505 from trunk without changes for
`%typemap() svn_error_t * SVN_ERR_WITH_ATTRS`.
------------------------------------------------------------------------
Index: 1.14.x-r1921505/subversion/bindings/swig/include/svn_types.swg
===================================================================
--- 1.14.x-r1921505/subversion/bindings/swig/include/svn_types.swg (revision 1921522)
+++ 1.14.x-r1921505/subversion/bindings/swig/include/svn_types.swg (revision 1921523)
@@ -435,9 +435,32 @@
svn_error_clear($1);
SWIG_fail;
}
- Py_INCREF(Py_None);
- $result = Py_None;
+ Py_XDECREF($result);
+ $result = PyList_New(0);
}
+
+%typemap(ret) svn_error_t * {
+ if ($result == NULL) {
+ $result = Py_None;
+ Py_INCREF($result);
+ }
+ else {
+ switch (PyList_Size($result)) {
+ case 0:
+ $result = Py_None;
+ Py_INCREF($result);
+ break;
+ case 1:
+ {
+ PyObject *tmp = $result;
+ $result = PyList_GetItem(tmp, 0);
+ Py_INCREF($result);
+ Py_DECREF(tmp);
+ }
+ break;
+ }
+ }
+}
#endif
#ifdef SWIGPERL
Index: 1.14.x-r1921505/subversion/bindings/swig/python/tests/client.py
===================================================================
--- 1.14.x-r1921505/subversion/bindings/swig/python/tests/client.py (revision 1921522)
+++ 1.14.x-r1921505/subversion/bindings/swig/python/tests/client.py (revision 1921523)
@@ -172,7 +172,9 @@
path = self.temper.alloc_empty_dir('-checkout')
- self.assertRaises(ValueError, client.checkout2,
+ # TypeError is raised since SWIG 4.3.0
+ self.assertRaises((ValueError, TypeError), r'Received a NULL pointer',
+ client.checkout2,
self.repos_uri, path, None, None, True, True,
self.client_ctx)
@@ -526,7 +528,9 @@
path = self.temper.alloc_empty_dir('-update')
- self.assertRaises(ValueError, client.checkout2,
+ # TypeError is raised since SWIG 4.3.0
+ self.assertRaises((ValueError, TypeError), r'Received a NULL pointer',
+ client.checkout2,
self.repos_uri, path, None, None, True, True,
self.client_ctx)
Index: 1.14.x-r1921505/subversion/bindings/swig/python/tests/core.py
===================================================================
--- 1.14.x-r1921505/subversion/bindings/swig/python/tests/core.py (revision 1921522)
+++ 1.14.x-r1921505/subversion/bindings/swig/python/tests/core.py (revision 1921523)
@@ -333,7 +333,35 @@
[b'', 1])
svn.core.svn_stream_close(stream)
+ def test_svn_rangelist_diff(self):
+ """
+ SWIG incorrectly handles return values when the first %append_output() is
+ invoked with a list instance. svn.core.svn_rangelist_diff() is in the case.
+ We test whether the workaround for it is working.
+ """
+ def from_args(start, end, inheritable):
+ instance = svn.core.svn_merge_range_t()
+ instance.start = start
+ instance.end = end
+ instance.inheritable = inheritable
+ return instance
+
+ def to_args(instance):
+ return [instance.start, instance.end, instance.inheritable]
+
+ def map_list(f, iterator):
+ return list(map(f, iterator))
+
+ from_ = [from_args(4, 5, True), from_args(9, 13, True)]
+ to = [from_args(7, 11, True)]
+ rv = svn.core.svn_rangelist_diff(from_, to, True)
+ self.assertIsInstance(rv, (list, tuple))
+ deleted, added = rv
+ self.assertEqual([[7, 9, True]], map_list(to_args, added))
+ self.assertEqual([[4, 5, True], [11, 13, True]],map_list(to_args, deleted))
+
+
def suite():
return unittest.defaultTestLoader.loadTestsFromTestCase(
SubversionCoreTestCase)
Index: 1.14.x-r1921505
===================================================================
--- 1.14.x-r1921505 (revision 1921522)
+++ 1.14.x-r1921505 (revision 1921523)
Property changes on: 1.14.x-r1921505
___________________________________________________________________
Modified: svn:mergeinfo
## -0,0 +0,1 ##
Merged /subversion/trunk:r1921505
++++++ subversion-1.14.4-swig-4.3.0-swig-rb.patch ++++++
------------------------------------------------------------------------
r1921506 | jun66j5 | 2024-10-23 12:44:41 +0200 (Wed, 23 Oct 2024) | 27 lines
Changed paths:
M /subversion/trunk/subversion/bindings/swig/include/svn_containers.swg
M /subversion/trunk/subversion/bindings/swig/include/svn_types.swg
M /subversion/trunk/subversion/bindings/swig/ruby/svn/core.rb
M /subversion/trunk/subversion/bindings/swig/svn_wc.i
Make swig-rb compatible with SWIG 4.3.0.
* subversion/bindings/swig/include/svn_containers.swg
(%typemap(out) apr_hash_t *PROPHASH,
%typemap(out) apr_hash_t *CHANGED_PATH_HASH,
%typemap(out) apr_array_header_t *PROP_LIST,
%typemap(out) apr_array_header_t *PROP_LIST_MAY_BE_NULL):
Set the return value to `$result` rather than using `%append_output` in
`%typemap(out)` for Ruby.
* subversion/bindings/swig/include/svn_types.swg
(%typemap(out) svn_error_t *):
Initialize `$result` with an empty array for the workaround to
`%append_output` incorrectly handling for nil and a list in Ruby.
(%typemap(ret) svn_error_t *):
Use first entry for `$result` when the size of the `$result` list is 1.
* subversion/bindings/swig/ruby/svn/core.rb
(Svn::Core::RangeList.diff):
Revised because multiple values are correctly retrieved from SWIG methods
now.
* subversion/bindings/swig/svn_wc.i
(%typemap(ret) svn_error_t *err):
Added because `%typemap(out) svn_error_t *err` is defined.
------------------------------------------------------------------------
Index: trunk/subversion/bindings/swig/include/svn_containers.swg
===================================================================
--- trunk/subversion/bindings/swig/include/svn_containers.swg (revision 1921505)
+++ trunk/subversion/bindings/swig/include/svn_containers.swg (revision 1921506)
@@ -310,7 +310,7 @@
%typemap(out) apr_hash_t *PROPHASH
{
- %append_output(svn_swig_rb_apr_hash_to_hash_svn_string($1));
+ $result = svn_swig_rb_apr_hash_to_hash_svn_string($1);
}
#endif
@@ -326,10 +326,8 @@
#ifdef SWIGRUBY
%typemap(out) apr_hash_t *CHANGED_PATH_HASH
{
- VALUE rb_changed_path_hash;
- rb_changed_path_hash =
+ $result =
svn_swig_rb_apr_hash_to_hash_swig_type($1, "svn_log_changed_path_t *");
- %append_output(rb_changed_path_hash);
}
%apply apr_hash_t *CHANGED_PATH_HASH {
@@ -760,7 +758,7 @@
%typemap(out) apr_array_header_t *PROP_LIST
{
- %append_output(svn_swig_rb_prop_apr_array_to_hash_prop($1));
+ $result = svn_swig_rb_prop_apr_array_to_hash_prop($1);
}
%typemap(in) apr_array_header_t *PROP_LIST_MAY_BE_NULL
@@ -778,7 +776,7 @@
%typemap(out) apr_array_header_t *PROP_LIST_MAY_BE_NULL
{
- %append_output($1 ? svn_swig_rb_prop_apr_array_to_hash_prop($1) : Qnil);
+ $result = $1 ? svn_swig_rb_prop_apr_array_to_hash_prop($1) : Qnil;
}
%apply apr_array_header_t *PROP_LIST {
Index: trunk/subversion/bindings/swig/include/svn_types.swg
===================================================================
--- trunk/subversion/bindings/swig/include/svn_types.swg (revision 1921505)
+++ trunk/subversion/bindings/swig/include/svn_types.swg (revision 1921506)
@@ -532,7 +532,7 @@
#endif
#ifdef SWIGRUBY
-%typemap(out) svn_error_t *
+%typemap(out) svn_error_t * (VALUE *svn_presult = NULL)
{
if ($1) {
svn_swig_rb_destroy_pool(_global_svn_swig_rb_pool);
@@ -539,8 +539,23 @@
svn_swig_rb_pop_pool(_global_svn_swig_rb_pool);
svn_swig_rb_handle_svn_error($1);
}
- $result = Qnil;
+ $result = rb_ary_new();
+ svn_presult = &$result;
}
+
+%typemap(ret) svn_error_t *
+{
+ if (TYPE(*svn_presult) == T_ARRAY) {
+ switch (rb_array_len(*svn_presult)) {
+ case 0:
+ *svn_presult = Qnil;
+ break;
+ case 1:
+ *svn_presult = rb_ary_entry(*svn_presult, 0);
+ break;
+ }
+ }
+}
#endif
/* -----------------------------------------------------------------------
Index: trunk/subversion/bindings/swig/ruby/svn/core.rb
===================================================================
--- trunk/subversion/bindings/swig/ruby/svn/core.rb (revision 1921505)
+++ trunk/subversion/bindings/swig/ruby/svn/core.rb (revision 1921506)
@@ -812,7 +812,7 @@
def diff(to, consider_inheritance=false)
result = Core.rangelist_diff(self, to, consider_inheritance)
deleted = result.pop
- added = result
+ added = result.pop
[added, deleted].collect do |result|
self.class.new(*result)
end
Index: trunk/subversion/bindings/swig/svn_wc.i
===================================================================
--- trunk/subversion/bindings/swig/svn_wc.i (revision 1921505)
+++ trunk/subversion/bindings/swig/svn_wc.i (revision 1921506)
@@ -242,6 +242,8 @@
{
$result = $1 ? svn_swig_rb_svn_error_to_rb_error($1) : Qnil;
}
+
+%typemap(ret) svn_error_t *err "";
#endif
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-autodocsumm for openSUSE:Factory checked in at 2024-10-25 19:18:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-autodocsumm (Old)
and /work/SRC/openSUSE:Factory/.python-autodocsumm.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-autodocsumm"
Fri Oct 25 19:18:59 2024 rev:16 rq:1218088 version:0.2.14
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-autodocsumm/python-autodocsumm.changes 2024-08-30 13:29:35.995437805 +0200
+++ /work/SRC/openSUSE:Factory/.python-autodocsumm.new.2020/python-autodocsumm.changes 2024-10-25 19:19:32.846388112 +0200
@@ -1,0 +2,9 @@
+Thu Oct 24 11:58:10 UTC 2024 - Nico Krapp <nico.krapp(a)suse.com>
+
+- Update to 0.2.14
+ * Fix ObjectMember related deprecation/removal by @theOehrly
+ * Type hint mixin base class, fix some more minor style and typing issues by @theOehrly
+ * Don't document class attributes that are an alias to another object by @theOehrly
+ * Autoexception support by @Chilipp
+
+-------------------------------------------------------------------
Old:
----
autodocsumm-0.2.13.tar.gz
New:
----
autodocsumm-0.2.14.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-autodocsumm.spec ++++++
--- /var/tmp/diff_new_pack.QccsSS/_old 2024-10-25 19:19:33.322407972 +0200
+++ /var/tmp/diff_new_pack.QccsSS/_new 2024-10-25 19:19:33.326408139 +0200
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-autodocsumm
-Version: 0.2.13
+Version: 0.2.14
Release: 0
Summary: Extended sphinx autodoc including automatic autosummaries
License: Apache-2.0
++++++ autodocsumm-0.2.13.tar.gz -> autodocsumm-0.2.14.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autodocsumm-0.2.13/.github/workflows/python-app.yml new/autodocsumm-0.2.14/.github/workflows/python-app.yml
--- old/autodocsumm-0.2.13/.github/workflows/python-app.yml 2024-08-05 14:07:09.000000000 +0200
+++ new/autodocsumm-0.2.14/.github/workflows/python-app.yml 2024-10-21 14:26:29.000000000 +0200
@@ -75,31 +75,3 @@
"sphinxcontrib-jsmath<1.0.1"
"sphinxcontrib-qthelp<1.0.7"
"sphinxcontrib-serializinghtml<1.1.10"'
-
-
- build-legacy-sphinx-30plus:
- name: Build
-
- strategy:
- fail-fast: false
- matrix:
- python-version: [ "3.7", "3.8", "3.9" ]
- sphinx-version: [
- "3.0.*", # possible range: 3.0.0 - 3.5.4
- ]
- include:
- - python-version: "3.7"
- sphinx-version: "3.5.*" # latest version that supports py3.7
- uses: ./.github/workflows/build.yml
- with:
- python-version: ${{ matrix.python-version }}
- extra-requirements: '\
- "sphinx==${{ matrix.sphinx-version }}"
- "jinja2<3.1"
- "alabaster<0.7.14"
- "sphinxcontrib-applehelp<1.0.8"
- "sphinxcontrib-devhelp<1.0.6"
- "sphinxcontrib-htmlhelp<2.0.5"
- "sphinxcontrib-jsmath<1.0.1"
- "sphinxcontrib-qthelp<1.0.7"
- "sphinxcontrib-serializinghtml<1.1.10"'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autodocsumm-0.2.13/autodocsumm/__init__.py new/autodocsumm-0.2.14/autodocsumm/__init__.py
--- old/autodocsumm-0.2.13/autodocsumm/__init__.py 2024-08-05 14:07:09.000000000 +0200
+++ new/autodocsumm-0.2.14/autodocsumm/__init__.py 2024-10-21 14:26:29.000000000 +0200
@@ -40,6 +40,7 @@
__status__ = "Production"
from itertools import chain
+from typing import TYPE_CHECKING
from sphinx.util import logging
import re
@@ -52,8 +53,8 @@
from sphinx.ext.autodoc import (
ClassDocumenter, ModuleDocumenter, ALL, PycodeError,
- ModuleAnalyzer, AttributeDocumenter, DataDocumenter, Options,
- prepare_docstring)
+ ModuleAnalyzer, AttributeDocumenter, DataDocumenter, Options, ExceptionDocumenter,
+ Documenter, prepare_docstring)
import sphinx.ext.autodoc as ad
signature = Signature = None
@@ -82,6 +83,12 @@
__version__ = _version.get_versions()['version']
+if TYPE_CHECKING: # pragma: no cover
+ DOCUMENTER_MIXIN_BASE = Documenter
+else:
+ DOCUMENTER_MIXIN_BASE = object
+
+
logger = logging.getLogger(__name__)
#: Options of the :class:`sphinx.ext.autodoc.ModuleDocumenter` that have an
@@ -125,7 +132,7 @@
return default
-class AutosummaryDocumenter(object):
+class AutosummaryDocumenter(DOCUMENTER_MIXIN_BASE):
"""Abstract class for for extending Documenter methods
This classed is used as a base class for Documenters in order to provide
@@ -137,6 +144,8 @@
#: Grouper functions
grouper_funcs = []
+ member_sections: dict
+
def __init__(self):
raise NotImplementedError
@@ -220,8 +229,16 @@
# remove members given by exclude-members
if self.options.exclude_members:
- members = [(membername, member) for (membername, member) in members
- if membername not in self.options.exclude_members]
+ try:
+ members = [
+ member for member in members
+ if member.__name__ not in self.options.exclude_members
+ ]
+ except AttributeError: # Sphinx<3.4.0
+ members = [
+ (membername, member) for (membername, member) in members
+ if membername not in self.options.exclude_members
+ ]
# document non-skipped members
memberdocumenters = []
@@ -279,7 +296,6 @@
else:
return documenters
-
def add_autosummary(self, relative_ref_paths=False):
"""Add the autosammary table of this documenter.
@@ -333,7 +349,7 @@
#: slightly higher priority than
#: :class:`sphinx.ext.autodoc.ModuleDocumenter`
- priority = ModuleDocumenter.priority + 0.1
+ priority = ModuleDocumenter.priority + 0.1 # type: ignore[assignment]
#: original option_spec from :class:`sphinx.ext.autodoc.ModuleDocumenter`
#: but with additional autosummary boolean option
@@ -383,7 +399,7 @@
#: slightly higher priority than
#: :class:`sphinx.ext.autodoc.ClassDocumenter`
- priority = ClassDocumenter.priority + 0.1
+ priority = ClassDocumenter.priority + 0.1 # type: ignore[assignment]
#: original option_spec from :class:`sphinx.ext.autodoc.ClassDocumenter`
#: but with additional autosummary boolean option
@@ -414,14 +430,71 @@
def add_content(self, *args, **kwargs):
super().add_content(*args, **kwargs)
- self.add_autosummary(relative_ref_paths=True)
+ # If the class is already documented under another name, Sphinx
+ # documents it as data/attribute. In this case, we do not want to
+ # generate an autosummary of the class for the attribute (see #69).
+ if not self.doc_as_attr:
+ self.add_autosummary(relative_ref_paths=True)
+
+
+class AutoSummExceptionDocumenter(ExceptionDocumenter, AutosummaryDocumenter):
+ """Exception Documenter with autosummary tables for its members.
+
+ This class has the same functionality as the base
+ :class:`sphinx.ext.autodoc.ExceptionDocumenter` class but with an
+ additional `autosummary` option to provide the ability to provide a summary
+ of all methods and attributes.
+ It's priority is slightly higher than the one of the ExceptionDocumenter
+ """
+
+ #: slightly higher priority than
+ #: :class:`sphinx.ext.autodoc.ExceptionDocumenter`
+ priority = ExceptionDocumenter.priority + 0.1 # type: ignore[assignment]
+
+ #: original option_spec from
+ #: :class:`sphinx.ext.autodoc.ExceptionDocumenter` but with additional
+ #: autosummary boolean option
+ option_spec = ExceptionDocumenter.option_spec.copy()
+ option_spec['autosummary'] = bool_option
+ option_spec['autosummary-no-nesting'] = bool_option
+ option_spec['autosummary-sections'] = list_option
+ option_spec['autosummary-no-titles'] = bool_option
+ option_spec['autosummary-force-inline'] = bool_option
+ option_spec['autosummary-nosignatures'] = bool_option
+
+ #: Add options for members for the autosummary
+ for _option in member_options.intersection(option_spec):
+ option_spec['autosummary-' + _option] = option_spec[_option]
+ del _option
+
+ member_sections = {
+ ad.ExceptionDocumenter.member_order: 'Classes',
+ ad.MethodDocumenter.member_order: 'Methods',
+ ad.AttributeDocumenter.member_order: 'Attributes',
+ }
+ """:class:`dict` that includes the autosummary sections
+
+ This dictionary defines the sections for the autosummmary option. The
+ values correspond to the :attr:`sphinx.ext.autodoc.Documenter.member_order`
+ attribute that shall be used for each section."""
+
+ def add_content(self, *args, **kwargs):
+ super().add_content(*args, **kwargs)
+
+ # If the class is already documented under another name, Sphinx
+ # documents it as data/attribute. In this case, we do not want to
+ # generate an autosummary of the class for the attribute (see #69).
+ if not self.doc_as_attr:
+ self.add_autosummary(relative_ref_paths=True)
class CallableDataDocumenter(DataDocumenter):
""":class:`sphinx.ext.autodoc.DataDocumenter` that uses the __call__ attr
"""
- priority = DataDocumenter.priority + 0.1
+ #: slightly higher priority than
+ #: :class:`sphinx.ext.autodoc.DataDocumenter`
+ priority = DataDocumenter.priority + 0.1 # type: ignore[assignment]
def format_args(self):
# for classes, the relevant signature is the __init__ method's
@@ -454,6 +527,8 @@
doc = []
for docstring in docstrings:
+ encoding = _get_arg("encoding", 0, None, *args, **kwargs)
+ ignore = _get_arg("ignore", 1, 1, *args, **kwargs)
if not isinstance(docstring, str):
docstring = force_decode(docstring, encoding)
doc.append(prepare_docstring(docstring, ignore))
@@ -466,7 +541,9 @@
attr
"""
- priority = AttributeDocumenter.priority + 0.1
+ #: slightly higher priority than
+ #: :class:`sphinx.ext.autodoc.AttributeDocumenter`
+ priority = AttributeDocumenter.priority + 0.1 # type: ignore[assignment]
def format_args(self):
# for classes, the relevant signature is the __init__ method's
@@ -545,7 +622,7 @@
"""DataDocumenter that prevents the displaying of large data"""
#: slightly higher priority as the one of the CallableDataDocumenter
- priority = CallableDataDocumenter.priority + 0.1
+ priority = CallableDataDocumenter.priority + 0.1 # type: ignore[assignment]
def __init__(self, *args, **kwargs):
super(NoDataDataDocumenter, self).__init__(*args, **kwargs)
@@ -560,7 +637,7 @@
"""AttributeDocumenter that prevents the displaying of large data"""
#: slightly higher priority as the one of the CallableAttributeDocumenter
- priority = CallableAttributeDocumenter.priority + 0.1
+ priority = CallableAttributeDocumenter.priority + 0.1 # type: ignore[assignment]
def __init__(self, *args, **kwargs):
super(NoDataAttributeDocumenter, self).__init__(*args, **kwargs)
@@ -576,13 +653,15 @@
Usage::
- .. autoclasssum:: <Class>
+ .. autoclasssumm:: <Class>
+
+ .. automodsumm:: <module>
- .. automodsum:: <module>
+ .. autoexceptionsumm:: <ExceptionClass>
- The directive additionally supports all options of the ``autoclass`` or
- ``automod`` directive respectively. Sections can be a list of section titles
- to be included. If ommitted, all sections are used.
+ The directive additionally supports all options of the ``autoclass``,
+ ``automod``, or ``autoexception`` directive respectively. Sections can be a
+ list of section titles to be included. If ommitted, all sections are used.
"""
has_content = False
@@ -596,9 +675,9 @@
reporter = self.state.document.reporter
try:
- source, lineno = reporter.get_source_and_line(self.lineno)
+ _, lineno = reporter.get_source_and_line(self.lineno)
except AttributeError:
- source, lineno = (None, None)
+ _, lineno = (None, None)
# look up target Documenter
objtype = self.name[4:-4] # strip prefix (auto-) and suffix (-summ).
@@ -639,6 +718,7 @@
app.setup_extension('sphinx.ext.autosummary')
app.setup_extension('sphinx.ext.autodoc')
app.add_directive('autoclasssumm', AutoDocSummDirective)
+ app.add_directive('autoexceptionsumm', AutoDocSummDirective)
app.add_directive('automodulesumm', AutoDocSummDirective)
AUTODOC_DEFAULT_OPTIONS.extend(
@@ -653,7 +733,7 @@
registry = app.registry.documenters
for cls in [AutoSummClassDocumenter, AutoSummModuleDocumenter,
CallableAttributeDocumenter, NoDataDataDocumenter,
- NoDataAttributeDocumenter]:
+ NoDataAttributeDocumenter, AutoSummExceptionDocumenter]:
if not issubclass(registry.get(cls.objtype), cls):
app.add_autodocumenter(cls, override=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autodocsumm-0.2.13/autodocsumm/_version.py new/autodocsumm-0.2.14/autodocsumm/_version.py
--- old/autodocsumm-0.2.13/autodocsumm/_version.py 2024-08-05 14:07:09.000000000 +0200
+++ new/autodocsumm-0.2.14/autodocsumm/_version.py 2024-10-21 14:26:29.000000000 +0200
@@ -26,9 +26,9 @@
# setup.py/versioneer.py will grep for the variable names, so they must
# each be defined on a line of their own. _version.py will just call
# get_keywords().
- git_refnames = " (HEAD -> master, tag: v0.2.13)"
- git_full = "354e67b443fe212401b1fc0f9e2f0d669c5852c4"
- git_date = "2024-08-05 14:07:09 +0200"
+ git_refnames = " (HEAD -> master, tag: v0.2.14)"
+ git_full = "f81147eff409d6de19564752c1e6182362b23e04"
+ git_date = "2024-10-21 14:26:29 +0200"
keywords = {"refnames": git_refnames, "full": git_full, "date": git_date}
return keywords
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autodocsumm-0.2.13/docs/conf_settings.rst new/autodocsumm-0.2.14/docs/conf_settings.rst
--- old/autodocsumm-0.2.13/docs/conf_settings.rst 2024-08-05 14:07:09.000000000 +0200
+++ new/autodocsumm-0.2.14/docs/conf_settings.rst 2024-10-21 14:26:29.000000000 +0200
@@ -78,6 +78,11 @@
By default, this directives also sets the `:members:` option unless you
specify `:no-members`.
+.. rst:directive:: autoexceptionsumm
+
+ The same as the ``autoclasssumm`` directive, just for an ``Exception``
+ subclass.
+
.. rst:directive:: automodulesumm
The same as the ``autoclasssumm`` directive, just for a module.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autodocsumm-0.2.13/docs/demo_exception.rst new/autodocsumm-0.2.14/docs/demo_exception.rst
--- old/autodocsumm-0.2.13/docs/demo_exception.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/autodocsumm-0.2.14/docs/demo_exception.rst 2024-10-21 14:26:29.000000000 +0200
@@ -0,0 +1,8 @@
+.. _demo_exception:
+
+Demo Exception
+==============
+
+.. autoexception:: dummy.MyException
+ :members:
+ :noindex:
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autodocsumm-0.2.13/docs/dummy.py new/autodocsumm-0.2.14/docs/dummy.py
--- old/autodocsumm-0.2.13/docs/dummy.py 2024-08-05 14:07:09.000000000 +0200
+++ new/autodocsumm-0.2.14/docs/dummy.py 2024-10-21 14:26:29.000000000 +0200
@@ -22,5 +22,18 @@
some_other_attr = None
+class MyException(object):
+ """Some Exception
+
+ With some description"""
+
+ def do_something_exceptional(self):
+ """Do something exceptional"""
+ pass
+
+ #: Any instance attribute
+ some_exception_attr = None
+
+
#: Some module data
large_data = 'Whatever'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autodocsumm-0.2.13/docs/examples.rst new/autodocsumm-0.2.14/docs/examples.rst
--- old/autodocsumm-0.2.13/docs/examples.rst 2024-08-05 14:07:09.000000000 +0200
+++ new/autodocsumm-0.2.14/docs/examples.rst 2024-10-21 14:26:29.000000000 +0200
@@ -8,6 +8,7 @@
Demo Module <demo_module>
Demo Class <demo_class>
+ Demo Exception <demo_exception>
Demo Grouper <demo_grouper>
Including a table of contents
@@ -24,11 +25,16 @@
produces :ref:`this <demo_module>`. And::
- .. autoclass:: dummy.SomeClass
+ .. autoclass:: dummy.MyClass
:members:
:autosummary:
-produces :ref:`this <demo_class>`.
+produces :ref:`this <demo_class>`, and for exceptions::
+
+ .. autoexception:: dummy.MyException
+ :members:
+ :autosummary:
+produces :ref:`this <demo_exception>`.
By default, module members are (mainly) grouped according into *Functions*,
*Classes* and *Data*, class members are grouped into *Methods* and
@@ -178,8 +184,8 @@
Multiple sections might be separated by `;;`, e.g.
``:autosummary-sections: Methods ;; Attributes``.
-This also works for the ``autoclasssumm`` and ``automodulesumm`` directives,
-e.g.::
+This also works for the ``autoclasssumm``, ``autoexceptionsumm`` and
+``automodulesumm`` directives, e.g.::
.. autoclasssumm:: dummy.SomeClass
:autosummary-sections: Methods
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autodocsumm-0.2.13/pyproject.toml new/autodocsumm-0.2.14/pyproject.toml
--- old/autodocsumm-0.2.13/pyproject.toml 2024-08-05 14:07:09.000000000 +0200
+++ new/autodocsumm-0.2.14/pyproject.toml 2024-10-21 14:26:29.000000000 +0200
@@ -33,7 +33,7 @@
requires-python = '>= 3.7'
dependencies = [
- 'Sphinx >= 2.2, < 9.0',
+ 'Sphinx >= 4.0, < 9.0',
]
[project.urls]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autodocsumm-0.2.13/tests/test-root/dummy.py new/autodocsumm-0.2.14/tests/test-root/dummy.py
--- old/autodocsumm-0.2.13/tests/test-root/dummy.py 2024-08-05 14:07:09.000000000 +0200
+++ new/autodocsumm-0.2.14/tests/test-root/dummy.py 2024-10-21 14:26:29.000000000 +0200
@@ -67,6 +67,18 @@
small_data = 'Should be skipped'
+class TestException(Exception):
+ """Exception test for autosummary"""
+
+ def __init__(self):
+ #: This is an exception attribute
+ self.exception_instance_attribute = 1
+
+ def test_exception_method(self):
+ """Test if the method is included"""
+ pass
+
+
class InheritedTestClass(TestClass):
"""Class test for inherited attributes"""
@@ -84,6 +96,14 @@
pass
+class TestClassWithRefToOtherClass:
+ """Class test for the autodocsummary when a class attribute is a reference
+ to another class. No autosummary of the class should be generated for
+ the attribute. See also issue #69"""
+
+ foo = TestClass
+
+
#: data to be skipped
large_data = 'Should also be skipped'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autodocsumm-0.2.13/tests/test-root/index.rst new/autodocsumm-0.2.14/tests/test-root/index.rst
--- old/autodocsumm-0.2.13/tests/test-root/index.rst 2024-08-05 14:07:09.000000000 +0200
+++ new/autodocsumm-0.2.14/tests/test-root/index.rst 2024-10-21 14:26:29.000000000 +0200
@@ -5,6 +5,7 @@
test_module
test_module_summary_only
+ test_module_exclude_members
test_class
test_class_order
test_class_summary_only
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autodocsumm-0.2.13/tests/test-root/test_autoexceptionsumm.rst new/autodocsumm-0.2.14/tests/test-root/test_autoexceptionsumm.rst
--- old/autodocsumm-0.2.13/tests/test-root/test_autoexceptionsumm.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/autodocsumm-0.2.14/tests/test-root/test_autoexceptionsumm.rst 2024-10-21 14:26:29.000000000 +0200
@@ -0,0 +1,4 @@
+Autoexceptionsumm of Dummy Exception
+====================================
+
+.. autoexceptionsumm:: dummy.TestException
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autodocsumm-0.2.13/tests/test-root/test_class_with_ref_to_other_class.rst new/autodocsumm-0.2.14/tests/test-root/test_class_with_ref_to_other_class.rst
--- old/autodocsumm-0.2.13/tests/test-root/test_class_with_ref_to_other_class.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/autodocsumm-0.2.14/tests/test-root/test_class_with_ref_to_other_class.rst 2024-10-21 14:26:29.000000000 +0200
@@ -0,0 +1,6 @@
+Autoclasssumm of Dummy Class
+============================
+
+.. autoclass:: dummy.TestClassWithRefToOtherClass
+ :members:
+ :autosummary:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autodocsumm-0.2.13/tests/test-root/test_exception.rst new/autodocsumm-0.2.14/tests/test-root/test_exception.rst
--- old/autodocsumm-0.2.13/tests/test-root/test_exception.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/autodocsumm-0.2.14/tests/test-root/test_exception.rst 2024-10-21 14:26:29.000000000 +0200
@@ -0,0 +1,4 @@
+Dummy Exception Doc
+===================
+
+.. autoexception:: dummy.TestException
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autodocsumm-0.2.13/tests/test-root/test_module_exclude_members.rst new/autodocsumm-0.2.14/tests/test-root/test_module_exclude_members.rst
--- old/autodocsumm-0.2.13/tests/test-root/test_module_exclude_members.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/autodocsumm-0.2.14/tests/test-root/test_module_exclude_members.rst 2024-10-21 14:26:29.000000000 +0200
@@ -0,0 +1,5 @@
+Docs of dummy test without some members
+=======================================
+
+.. automodule:: dummy
+ :autosummary-exclude-members: InheritedTestClass,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autodocsumm-0.2.13/tests/test_autodocsumm.py new/autodocsumm-0.2.14/tests/test_autodocsumm.py
--- old/autodocsumm-0.2.13/tests/test_autodocsumm.py 2024-08-05 14:07:09.000000000 +0200
+++ new/autodocsumm-0.2.14/tests/test_autodocsumm.py 2024-10-21 14:26:29.000000000 +0200
@@ -252,6 +252,17 @@
'DummySection'
)
+ def test_exception(self, app):
+ app.build()
+ html = get_html(app, 'test_exception.html')
+
+ if sphinx_version[:2] > [3, 1]:
+ assert in_autosummary("exception_instance_attribute", html)
+ elif sphinx_version[:2] < [3, 1]:
+ assert in_autosummary("TestException.exception_instance_attribute", html)
+
+ assert in_autosummary("test_exception_method", html)
+
@pytest.mark.skipif(
sphinx_version[:2] < [3, 1], reason="Only available for sphinx>=3"
)
@@ -322,6 +333,22 @@
assert '()' not in html
+ def test_class_no_summary_for_reference_to_class(self, app):
+ # see also: issue #69
+ app.build()
+
+ html = get_html(app, 'test_class_with_ref_to_other_class.html')
+
+ # assert that the class itself has an autosummary that contains its
+ # attributes
+ assert in_autosummary("foo", html)
+
+ # Assert that there is no autosummary of the attribute that is an alias
+ # of another class. This autosummary would contain attrs/methods/...
+ # of the referenced class.
+ assert not in_autosummary("test_method", html)
+ assert not in_autosummary("test_attr", html)
+
def test_inherited(self, app):
app.build()
html = get_html(app, 'test_inherited.html')
@@ -396,6 +423,19 @@
assert in_autosummary("test_method", html)
assert in_autosummary("test_attr", html)
+ def test_autoexceptionsumm(self, app):
+ """Test building the autosummary of a class."""
+ app.build()
+
+ html = get_html(app, 'test_autoexceptionsumm.html')
+
+ # the class docstring must not be in the html
+ assert "Class exception for autosummary" not in html
+
+ # test if the methods and attributes are there in a table
+ assert in_autosummary("test_exception_method", html)
+ assert in_autosummary("exception_instance_attribute", html)
+
def test_autoclasssumm_no_titles(self, app):
"""Test building the autosummary of a class."""
app.build()
@@ -484,6 +524,17 @@
assert '()' not in html
+ def test_automodulesumm_exclude_members(self, app):
+ """Test building the autosummary of a module with some members
+ excluded from the autosummary."""
+ app.build()
+
+ html = get_html(app, 'test_module_exclude_members.html')
+
+ assert in_autosummary("TestClass", html)
+ assert not in_autosummary("InheritedTestClass", html)
+
+
def test_empty(self, app):
app.build()
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package glfw for openSUSE:Factory checked in at 2024-10-25 19:18:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/glfw (Old)
and /work/SRC/openSUSE:Factory/.glfw.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "glfw"
Fri Oct 25 19:18:58 2024 rev:28 rq:1218087 version:3.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/glfw/glfw.changes 2024-10-18 15:49:58.296971272 +0200
+++ /work/SRC/openSUSE:Factory/.glfw.new.2020/glfw.changes 2024-10-25 19:19:31.818345219 +0200
@@ -1,0 +2,6 @@
+Thu Oct 24 15:30:16 UTC 2024 - Antonio Larrosa <alarrosa(a)suse.com>
+
+- Only use geany on TW. That way we reduce the dependencies in
+ SLFO/ALP.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ glfw.spec ++++++
--- /var/tmp/diff_new_pack.qz4OSH/_old 2024-10-25 19:19:32.402369586 +0200
+++ /var/tmp/diff_new_pack.qz4OSH/_new 2024-10-25 19:19:32.406369753 +0200
@@ -22,8 +22,8 @@
%else
%bcond_with html_docs
%endif
-# On TW and ALP, build with geany by default
-%if 0%{?suse_version} >= 1600
+# On TW, build with geany by default
+%if 0%{?suse_version} > 1600
%bcond_without geany
%else
%bcond_with geany
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-virtualenv for openSUSE:Factory checked in at 2024-10-25 19:18:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-virtualenv (Old)
and /work/SRC/openSUSE:Factory/.python-virtualenv.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-virtualenv"
Fri Oct 25 19:18:57 2024 rev:69 rq:1218086 version:20.26.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-virtualenv/python-virtualenv.changes 2024-10-16 23:36:12.394590400 +0200
+++ /work/SRC/openSUSE:Factory/.python-virtualenv.new.2020/python-virtualenv.changes 2024-10-25 19:19:29.534249920 +0200
@@ -1,0 +2,12 @@
+Thu Oct 17 15:15:49 UTC 2024 - Dirk Müller <dmueller(a)suse.com>
+
+- update to 20.26.6:
+ * Properly quote string placeholders in activation script
+ templates to mitigate potential command injection - by
+ @y5c4l3. (#2768, in the Python stdlib known as bsc#1232241,
+ CVE-2024-9287)
+ * Upgrade embedded wheels: setuptools to 75.1.0 from 74.1.2
+ * no longer create () output in console during activation of a
+ virtualenv by .bat file. (#2728)
+
+-------------------------------------------------------------------
Old:
----
virtualenv-20.26.3.tar.gz
New:
----
virtualenv-20.26.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-virtualenv.spec ++++++
--- /var/tmp/diff_new_pack.5ES3LP/_old 2024-10-25 19:19:31.142317013 +0200
+++ /var/tmp/diff_new_pack.5ES3LP/_new 2024-10-25 19:19:31.142317013 +0200
@@ -27,7 +27,7 @@
%{?sle15_python_module_pythons}
Name: python-virtualenv%{psuffix}
-Version: 20.26.3
+Version: 20.26.6
Release: 0
Summary: Virtual Python Environment builder
License: MIT
++++++ virtualenv-20.26.3.tar.gz -> virtualenv-20.26.6.tar.gz ++++++
/work/SRC/openSUSE:Factory/python-virtualenv/virtualenv-20.26.3.tar.gz /work/SRC/openSUSE:Factory/.python-virtualenv.new.2020/virtualenv-20.26.6.tar.gz differ: char 19, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package kernel-source-longterm for openSUSE:Factory checked in at 2024-10-25 19:18:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kernel-source-longterm (Old)
and /work/SRC/openSUSE:Factory/.kernel-source-longterm.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kernel-source-longterm"
Fri Oct 25 19:18:55 2024 rev:39 rq:1218067 version:6.6.58
Changes:
--------
--- /work/SRC/openSUSE:Factory/kernel-source-longterm/kernel-longterm.changes 2024-10-23 21:09:57.881909799 +0200
+++ /work/SRC/openSUSE:Factory/.kernel-source-longterm.new.2020/kernel-longterm.changes 2024-10-25 19:19:22.065938321 +0200
@@ -1,0 +2,224 @@
+Wed Oct 23 09:40:23 CEST 2024 - rfrohl(a)suse.com
+
+- Linux 6.6.58 (bsc#1218260).
+- ALSA: hda/conexant - Use cached pin control for Node 0x1d on
+ HP EliteOne 1000 G2 (bsc#1218260).
+- nilfs2: propagate directory read errors from nilfs_find_entry()
+ (bsc#1218260).
+- selftests: mptcp: remove duplicated variables (bsc#1218260).
+- selftests: mptcp: join: test for prohibited MPC to port-based
+ endp (bsc#1218260).
+- selftests: mptcp: join: change capture/checksum as bool
+ (bsc#1218260).
+- tcp: fix mptcp DSS corruption due to large pmtu xmit
+ (bsc#1218260).
+- serial: qcom-geni: fix receiver enable (bsc#1218260).
+- serial: qcom-geni: fix dma rx cancellation (bsc#1218260).
+- serial: qcom-geni: revert broken hibernation support
+ (bsc#1218260).
+- serial: qcom-geni: fix polled console initialisation
+ (bsc#1218260).
+- irqchip/sifive-plic: Unmask interrupt in plic_irq_enable()
+ (bsc#1218260).
+- irqchip/gic-v4: Don't allow a VMOVP on a dying VPE
+ (bsc#1218260).
+- pinctrl: apple: check devm_kasprintf() returned value
+ (bsc#1218260).
+- pinctrl: stm32: check devm_kasprintf() returned value
+ (bsc#1218260).
+- pinctrl: ocelot: fix system hang on level based interrupts
+ (bsc#1218260).
+- x86/bugs: Use code segment selector for VERW operand
+ (bsc#1218260).
+- tty: n_gsm: Fix use-after-free in gsm_cleanup_mux (bsc#1218260).
+- x86/entry_32: Clear CPU buffers after register restore in NMI
+ return (bsc#1218260).
+- x86/entry_32: Do not clobber user EFLAGS.ZF (bsc#1218260).
+- x86/CPU/AMD: Only apply Zenbleed fix for Zen2 during late
+ microcode load (bsc#1218260).
+- x86/apic: Always explicitly disarm TSC-deadline timer
+ (bsc#1218260).
+- x86/resctrl: Annotate get_mem_config() functions as __init
+ (bsc#1218260).
+- parport: Proper fix for array out-of-bounds access
+ (bsc#1218260).
+- serial: imx: Update mctrl old_status on RTSD interrupt
+ (bsc#1218260).
+- misc: microchip: pci1xxxx: add support for NVMEM_DEVID_AUTO
+ for OTP device (bsc#1218260).
+- misc: microchip: pci1xxxx: add support for NVMEM_DEVID_AUTO
+ for EEPROM device (bsc#1218260).
+- usb: dwc3: Wait for EndXfer completion before restoring
+ GUSB2PHYCFG (bsc#1218260).
+- usb: typec: qcom-pmic-typec: fix sink status being overwritten
+ with RP_DEF (bsc#1218260).
+- USB: serial: option: add Telit FN920C04 MBIM compositions
+ (bsc#1218260).
+- USB: serial: option: add support for Quectel EG916Q-GL
+ (bsc#1218260).
+- xhci: Mitigate failed set dequeue pointer commands
+ (bsc#1218260).
+- xhci: Fix incorrect stream context type macro (bsc#1218260).
+- xhci: tegra: fix checked USB2 port number (bsc#1218260).
+- vt: prevent kernel-infoleak in con_font_get() (bsc#1218260).
+- Bluetooth: btusb: Fix regression with fake CSR controllers
+ 0a12:0001 (bsc#1218260).
+- Bluetooth: ISO: Fix multiple init when debugfs is disabled
+ (bsc#1218260).
+- Bluetooth: Remove debugfs directory on module init failure
+ (bsc#1218260).
+- Bluetooth: Call iso_exit() on module unload (bsc#1218260).
+- iio: accel: kx022a: add missing select IIO_(TRIGGERED_)BUFFER
+ in Kconfig (bsc#1218260).
+- iio: adc: ti-ads124s08: add missing select
+ IIO_(TRIGGERED_)BUFFER in Kconfig (bsc#1218260).
+- iio: adc: ti-lmp92064: add missing select REGMAP_SPI in Kconfig
+ (bsc#1218260).
+- iio: dac: ad3552r: add missing select IIO_(TRIGGERED_)BUFFER
+ in Kconfig (bsc#1218260).
+- iio: proximity: mb1232: add missing select
+ IIO_(TRIGGERED_)BUFFER in Kconfig (bsc#1218260).
+- iio: dac: ad5766: add missing select IIO_(TRIGGERED_)BUFFER
+ in Kconfig (bsc#1218260).
+- iio: light: bu27008: add missing select IIO_(TRIGGERED_)BUFFER
+ in Kconfig (bsc#1218260).
+- iio: frequency: adf4377: add missing select REMAP_SPI in Kconfig
+ (bsc#1218260).
+- iio: amplifiers: ada4250: add missing select REGMAP_SPI in
+ Kconfig (bsc#1218260).
+- iio: light: opt3001: add missing full-scale range value
+ (bsc#1218260).
+- iio: light: veml6030: fix IIO device retrieval from embedded
+ device (bsc#1218260).
+- iio: light: veml6030: fix ALS sensor resolution (bsc#1218260).
+- iio: hid-sensors: Fix an error handling path in
+ _hid_sensor_set_report_latency() (bsc#1218260).
+- iio: adc: ti-ads8688: add missing select IIO_(TRIGGERED_)BUFFER
+ in Kconfig (bsc#1218260).
+- iio: dac: stm32-dac-core: add missing select REGMAP_MMIO in
+ Kconfig (bsc#1218260).
+- iio: dac: ltc1660: add missing select REGMAP_SPI in Kconfig
+ (bsc#1218260).
+- iio: dac: ad5770r: add missing select REGMAP_SPI in Kconfig
+ (bsc#1218260).
+- drm/amdgpu: prevent BO_HANDLES error from being overwritten
+ (bsc#1218260).
+- drm/amdgpu/swsmu: Only force workload setup on init
+ (bsc#1218260).
+- drm/vmwgfx: Handle surface check failure correctly
+ (bsc#1218260).
+- drm/radeon: Fix encoder->possible_clones (bsc#1218260).
+- scsi: ufs: core: Fix the issue of ICU failure (bsc#1218260).
+- scsi: ufs: core: Set SDEV_OFFLINE when UFS is shut down
+ (bsc#1218260).
+- Input: xpad - add support for MSI Claw A1M (bsc#1218260).
+- selftest: hid: add the missing tests directory (bsc#1218260).
+- ublk: don't allow user copy for unprivileged device
+ (bsc#1218260).
+- io_uring/sqpoll: close race on waiting for sqring entries
+ (bsc#1218260).
+- blk-rq-qos: fix crash on rq_qos_wait vs. rq_qos_wake_function
+ race (bsc#1218260).
+- x86/bugs: Do not use UNTRAIN_RET with IBPB on entry
+ (bsc#1218260).
+- x86/bugs: Skip RSB fill at VMEXIT (bsc#1218260).
+- x86/entry: Have entry_ibpb() invalidate return predictions
+ (bsc#1218260).
+- x86/cpufeatures: Add a IBPB_NO_RET BUG flag (bsc#1218260).
+- x86/cpufeatures: Define X86_FEATURE_AMD_IBPB_RET (bsc#1218260).
+- KVM: s390: Change virtual to physical address access in diag
+ 0x258 handler (bsc#1218260).
+- KVM: s390: gaccess: Check if guest address is in memslot
+ (bsc#1218260).
+- s390/sclp_vt220: Convert newlines to CRLF instead of LFCR
+ (bsc#1218260).
+- s390/sclp: Deactivate sclp after all its users (bsc#1218260).
+- iommu/vt-d: Fix incorrect pci_for_each_dma_alias() for non-PCI
+ devices (bsc#1218260).
+- mptcp: prevent MPC handshake on port-based signal endpoints
+ (bsc#1218260).
+- net: fec: Remove duplicated code (bsc#1218260).
+- net: fec: Move `fec_ptp_read()` to the top of the file
+ (bsc#1218260).
+- maple_tree: correct tree corruption on spanning store
+ (bsc#1218260).
+- xfs: restrict when we try to align cow fork delalloc to cowextsz
+ hints (bsc#1218260).
+- xfs: allow unlinked symlinks and dirs with zero size
+ (bsc#1218260).
+- xfs: fix freeing speculative preallocations for preallocated
+ files (bsc#1218260).
+- xfs: fix unlink vs cluster buffer instantiation race
+ (bsc#1218260).
+- xfs: make sure sb_fdblocks is non-negative (bsc#1218260).
+- xfs: allow symlinks with short remote targets (bsc#1218260).
+- xfs: convert delayed extents to unwritten when zeroing post
+ eof blocks (bsc#1218260).
+- xfs: make xfs_bmapi_convert_delalloc() to allocate the target
+ offset (bsc#1218260).
+- xfs: make the seq argument to xfs_bmapi_convert_delalloc()
+ optional (bsc#1218260).
+- xfs: match lock mode in xfs_buffered_write_iomap_begin()
+ (bsc#1218260).
+- xfs: use dontcache for grabbing inodes during scrub
+ (bsc#1218260).
+- xfs: revert commit 44af6c7e59b12 (bsc#1218260).
+- xfs: enforce one namespace per attribute (bsc#1218260).
+- xfs: validate recovered name buffers when recovering xattr items
+ (bsc#1218260).
+- xfs: check shortform attr entry flags specifically
+ (bsc#1218260).
+- xfs: fix missing check for invalid attr flags (bsc#1218260).
+- xfs: check opcode and iovec count match in
+ xlog_recover_attri_commit_pass2 (bsc#1218260).
+- xfs: require XFS_SB_FEAT_INCOMPAT_LOG_XATTRS for attr log
+ intent item recovery (bsc#1218260).
+- xfs: remove a racy if_bytes check in xfs_reflink_end_cow_extent
+ (bsc#1218260).
+- xfs: fix xfs_bmap_add_extent_delay_real for partial conversions
+ (bsc#1218260).
+- xfs: fix error returns from xfs_bmapi_write (bsc#1218260).
+- mm/swapfile: skip HugeTLB pages for unuse_vma (bsc#1218260).
+- mm/mglru: only clear kswapd_failures if reclaimable
+ (bsc#1218260).
+- mm/mremap: fix move_normal_pmd/retract_page_tables race
+ (bsc#1218260).
+- selftests/mm: fix deadlock for fork after pthread_create on ARM
+ (bsc#1218260).
+- selftests/mm: replace atomic_bool with pthread_barrier_t
+ (bsc#1218260).
+- fat: fix uninitialized variable (bsc#1218260).
+- irqchip/gic-v3-its: Fix VSYNC referencing an unmapped VPE on
+ GIC v4.1 (bsc#1218260).
+- net: microchip: vcap api: Fix memory leaks in
+ vcap_api_encode_rule_test() (bsc#1218260).
+- net: macb: Avoid 20s boot delay by skipping MDIO bus
+ registration for fixed-link PHY (bsc#1218260).
+- arm64: probes: Fix uprobes for big-endian kernels (bsc#1218260).
+- arm64: probes: Fix simulate_ldr*_literal() (bsc#1218260).
+- arm64: probes: Remove broken LDR (literal) uprobe support
+ (bsc#1218260).
+- posix-clock: Fix missing timespec64 check in pc_clock_settime()
+ (bsc#1218260).
+- net: enetc: add missing static descriptor and inline keyword
+ (bsc#1218260).
+- net: enetc: disable NAPI after all rings are disabled
+ (bsc#1218260).
+- net: enetc: disable Tx BD rings after they are empty
+ (bsc#1218260).
+- net: enetc: block concurrent XDP transmissions during ring
+ reconfiguration (bsc#1218260).
+- net: enetc: remove xdp_drops statistic from enetc_xdp_drop()
+ (bsc#1218260).
+- mptcp: pm: fix UaF read in mptcp_pm_nl_rm_addr_or_subflow
+ (bsc#1218260).
+- ALSA: hda/conexant - Fix audio routing for HP EliteOne 1000 G2
+ (bsc#1218260).
+- ksmbd: fix user-after-free from session log off (bsc#1218260).
+- btrfs: fix uninitialized pointer free on read_alloc_one_name()
+ error (bsc#1218260).
+- btrfs: fix uninitialized pointer free in add_inode_ref()
+ (bsc#1218260).
+- commit d47a324
+
+-------------------------------------------------------------------
kernel-source-longterm.changes: same change
kernel-syms-longterm.changes: same change
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kernel-longterm.spec ++++++
--- /var/tmp/diff_new_pack.lHwSjX/_old 2024-10-25 19:19:28.198194176 +0200
+++ /var/tmp/diff_new_pack.lHwSjX/_new 2024-10-25 19:19:28.202194343 +0200
@@ -18,8 +18,8 @@
%define srcversion 6.6
-%define patchversion 6.6.57
-%define git_commit a8ceeb3b3d936f6df83efc36ab1d2297436e5899
+%define patchversion 6.6.58
+%define git_commit d47a3241627d3cc555e27e7d0ed5560abd62bcd4
%define variant -longterm%{nil}
%define compress_modules zstd
%define compress_vmlinux xz
@@ -113,9 +113,9 @@
Summary: The Linux Kernel
License: GPL-2.0-only
Group: System/Kernel
-Version: 6.6.57
+Version: 6.6.58
%if 0%{?is_kotd}
-Release: <RELEASE>.ga8ceeb3
+Release: <RELEASE>.gd47a324
%else
Release: 0
%endif
++++++ kernel-source-longterm.spec ++++++
--- /var/tmp/diff_new_pack.lHwSjX/_old 2024-10-25 19:19:28.238195845 +0200
+++ /var/tmp/diff_new_pack.lHwSjX/_new 2024-10-25 19:19:28.242196012 +0200
@@ -17,8 +17,8 @@
%define srcversion 6.6
-%define patchversion 6.6.57
-%define git_commit a8ceeb3b3d936f6df83efc36ab1d2297436e5899
+%define patchversion 6.6.58
+%define git_commit d47a3241627d3cc555e27e7d0ed5560abd62bcd4
%define variant -longterm%{nil}
%include %_sourcedir/kernel-spec-macros
@@ -31,9 +31,9 @@
%endif
Name: kernel-source-longterm
-Version: 6.6.57
+Version: 6.6.58
%if 0%{?is_kotd}
-Release: <RELEASE>.ga8ceeb3
+Release: <RELEASE>.gd47a324
%else
Release: 0
%endif
++++++ kernel-syms-longterm.spec ++++++
--- /var/tmp/diff_new_pack.lHwSjX/_old 2024-10-25 19:19:28.278197514 +0200
+++ /var/tmp/diff_new_pack.lHwSjX/_new 2024-10-25 19:19:28.282197681 +0200
@@ -16,7 +16,7 @@
#
-%define git_commit a8ceeb3b3d936f6df83efc36ab1d2297436e5899
+%define git_commit d47a3241627d3cc555e27e7d0ed5560abd62bcd4
%define variant -longterm%{nil}
%include %_sourcedir/kernel-spec-macros
@@ -25,10 +25,10 @@
Summary: Kernel Symbol Versions (modversions)
License: GPL-2.0-only
Group: Development/Sources
-Version: 6.6.57
+Version: 6.6.58
%if %using_buildservice
%if 0%{?is_kotd}
-Release: <RELEASE>.ga8ceeb3
+Release: <RELEASE>.gd47a324
%else
Release: 0
%endif
++++++ patches.kernel.org.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/kernel-source-longterm/patches.kernel.org.tar.bz2 /work/SRC/openSUSE:Factory/.kernel-source-longterm.new.2020/patches.kernel.org.tar.bz2 differ: char 11, line 1
++++++ series.conf ++++++
--- /var/tmp/diff_new_pack.lHwSjX/_old 2024-10-25 19:19:29.138233397 +0200
+++ /var/tmp/diff_new_pack.lHwSjX/_new 2024-10-25 19:19:29.146233731 +0200
@@ -11809,6 +11809,131 @@
patches.kernel.org/6.6.57-210-e1000e-fix-force-smbus-during-suspend-flow.pa…
patches.kernel.org/6.6.57-211-scsi-Revert-scsi-sd-Do-not-repeat-the-startin…
patches.kernel.org/6.6.57-212-Linux-6.6.57.patch
+ patches.kernel.org/6.6.58-001-btrfs-fix-uninitialized-pointer-free-in-add_i…
+ patches.kernel.org/6.6.58-002-btrfs-fix-uninitialized-pointer-free-on-read_…
+ patches.kernel.org/6.6.58-003-ksmbd-fix-user-after-free-from-session-log-of…
+ patches.kernel.org/6.6.58-004-ALSA-hda-conexant-Fix-audio-routing-for-HP-El…
+ patches.kernel.org/6.6.58-005-mptcp-pm-fix-UaF-read-in-mptcp_pm_nl_rm_addr_…
+ patches.kernel.org/6.6.58-006-net-enetc-remove-xdp_drops-statistic-from-ene…
+ patches.kernel.org/6.6.58-007-net-enetc-block-concurrent-XDP-transmissions-…
+ patches.kernel.org/6.6.58-008-net-enetc-disable-Tx-BD-rings-after-they-are-…
+ patches.kernel.org/6.6.58-009-net-enetc-disable-NAPI-after-all-rings-are-di…
+ patches.kernel.org/6.6.58-010-net-enetc-add-missing-static-descriptor-and-i…
+ patches.kernel.org/6.6.58-011-posix-clock-Fix-missing-timespec64-check-in-p…
+ patches.kernel.org/6.6.58-012-arm64-probes-Remove-broken-LDR-literal-uprobe…
+ patches.kernel.org/6.6.58-013-arm64-probes-Fix-simulate_ldr-_literal.patch
+ patches.kernel.org/6.6.58-014-arm64-probes-Fix-uprobes-for-big-endian-kerne…
+ patches.kernel.org/6.6.58-015-net-macb-Avoid-20s-boot-delay-by-skipping-MDI…
+ patches.kernel.org/6.6.58-016-net-microchip-vcap-api-Fix-memory-leaks-in-vc…
+ patches.kernel.org/6.6.58-017-irqchip-gic-v3-its-Fix-VSYNC-referencing-an-u…
+ patches.kernel.org/6.6.58-018-fat-fix-uninitialized-variable.patch
+ patches.kernel.org/6.6.58-019-selftests-mm-replace-atomic_bool-with-pthread…
+ patches.kernel.org/6.6.58-020-selftests-mm-fix-deadlock-for-fork-after-pthr…
+ patches.kernel.org/6.6.58-021-mm-mremap-fix-move_normal_pmd-retract_page_ta…
+ patches.kernel.org/6.6.58-022-mm-mglru-only-clear-kswapd_failures-if-reclai…
+ patches.kernel.org/6.6.58-023-mm-swapfile-skip-HugeTLB-pages-for-unuse_vma.…
+ patches.kernel.org/6.6.58-024-xfs-fix-error-returns-from-xfs_bmapi_write.pa…
+ patches.kernel.org/6.6.58-025-xfs-fix-xfs_bmap_add_extent_delay_real-for-pa…
+ patches.kernel.org/6.6.58-026-xfs-remove-a-racy-if_bytes-check-in-xfs_refli…
+ patches.kernel.org/6.6.58-027-xfs-require-XFS_SB_FEAT_INCOMPAT_LOG_XATTRS-f…
+ patches.kernel.org/6.6.58-028-xfs-check-opcode-and-iovec-count-match-in-xlo…
+ patches.kernel.org/6.6.58-029-xfs-fix-missing-check-for-invalid-attr-flags.…
+ patches.kernel.org/6.6.58-030-xfs-check-shortform-attr-entry-flags-specific…
+ patches.kernel.org/6.6.58-031-xfs-validate-recovered-name-buffers-when-reco…
+ patches.kernel.org/6.6.58-032-xfs-enforce-one-namespace-per-attribute.patch
+ patches.kernel.org/6.6.58-033-xfs-revert-commit-44af6c7e59b12.patch
+ patches.kernel.org/6.6.58-034-xfs-use-dontcache-for-grabbing-inodes-during-…
+ patches.kernel.org/6.6.58-035-xfs-match-lock-mode-in-xfs_buffered_write_iom…
+ patches.kernel.org/6.6.58-036-xfs-make-the-seq-argument-to-xfs_bmapi_conver…
+ patches.kernel.org/6.6.58-037-xfs-make-xfs_bmapi_convert_delalloc-to-alloca…
+ patches.kernel.org/6.6.58-038-xfs-convert-delayed-extents-to-unwritten-when…
+ patches.kernel.org/6.6.58-039-xfs-allow-symlinks-with-short-remote-targets.…
+ patches.kernel.org/6.6.58-040-xfs-make-sure-sb_fdblocks-is-non-negative.pat…
+ patches.kernel.org/6.6.58-041-xfs-fix-unlink-vs-cluster-buffer-instantiatio…
+ patches.kernel.org/6.6.58-042-xfs-fix-freeing-speculative-preallocations-fo…
+ patches.kernel.org/6.6.58-043-xfs-allow-unlinked-symlinks-and-dirs-with-zer…
+ patches.kernel.org/6.6.58-044-xfs-restrict-when-we-try-to-align-cow-fork-de…
+ patches.kernel.org/6.6.58-045-maple_tree-correct-tree-corruption-on-spannin…
+ patches.kernel.org/6.6.58-046-net-fec-Move-fec_ptp_read-to-the-top-of-the-f…
+ patches.kernel.org/6.6.58-047-net-fec-Remove-duplicated-code.patch
+ patches.kernel.org/6.6.58-048-mptcp-prevent-MPC-handshake-on-port-based-sig…
+ patches.kernel.org/6.6.58-049-iommu-vt-d-Fix-incorrect-pci_for_each_dma_ali…
+ patches.kernel.org/6.6.58-050-s390-sclp-Deactivate-sclp-after-all-its-users…
+ patches.kernel.org/6.6.58-051-s390-sclp_vt220-Convert-newlines-to-CRLF-inst…
+ patches.kernel.org/6.6.58-052-KVM-s390-gaccess-Check-if-guest-address-is-in…
+ patches.kernel.org/6.6.58-053-KVM-s390-Change-virtual-to-physical-address-a…
+ patches.kernel.org/6.6.58-054-x86-cpufeatures-Define-X86_FEATURE_AMD_IBPB_R…
+ patches.kernel.org/6.6.58-055-x86-cpufeatures-Add-a-IBPB_NO_RET-BUG-flag.pa…
+ patches.kernel.org/6.6.58-056-x86-entry-Have-entry_ibpb-invalidate-return-p…
+ patches.kernel.org/6.6.58-057-x86-bugs-Skip-RSB-fill-at-VMEXIT.patch
+ patches.kernel.org/6.6.58-058-x86-bugs-Do-not-use-UNTRAIN_RET-with-IBPB-on-…
+ patches.kernel.org/6.6.58-059-blk-rq-qos-fix-crash-on-rq_qos_wait-vs.-rq_qo…
+ patches.kernel.org/6.6.58-060-io_uring-sqpoll-close-race-on-waiting-for-sqr…
+ patches.kernel.org/6.6.58-061-ublk-don-t-allow-user-copy-for-unprivileged-d…
+ patches.kernel.org/6.6.58-062-selftest-hid-add-the-missing-tests-directory.…
+ patches.kernel.org/6.6.58-063-Input-xpad-add-support-for-MSI-Claw-A1M.patch
+ patches.kernel.org/6.6.58-064-scsi-ufs-core-Set-SDEV_OFFLINE-when-UFS-is-sh…
+ patches.kernel.org/6.6.58-065-scsi-ufs-core-Fix-the-issue-of-ICU-failure.pa…
+ patches.kernel.org/6.6.58-066-drm-radeon-Fix-encoder-possible_clones.patch
+ patches.kernel.org/6.6.58-067-drm-vmwgfx-Handle-surface-check-failure-corre…
+ patches.kernel.org/6.6.58-068-drm-amdgpu-swsmu-Only-force-workload-setup-on…
+ patches.kernel.org/6.6.58-069-drm-amdgpu-prevent-BO_HANDLES-error-from-bein…
+ patches.kernel.org/6.6.58-070-iio-dac-ad5770r-add-missing-select-REGMAP_SPI…
+ patches.kernel.org/6.6.58-071-iio-dac-ltc1660-add-missing-select-REGMAP_SPI…
+ patches.kernel.org/6.6.58-072-iio-dac-stm32-dac-core-add-missing-select-REG…
+ patches.kernel.org/6.6.58-073-iio-adc-ti-ads8688-add-missing-select-IIO_-TR…
+ patches.kernel.org/6.6.58-074-iio-hid-sensors-Fix-an-error-handling-path-in…
+ patches.kernel.org/6.6.58-075-iio-light-veml6030-fix-ALS-sensor-resolution.…
+ patches.kernel.org/6.6.58-076-iio-light-veml6030-fix-IIO-device-retrieval-f…
+ patches.kernel.org/6.6.58-077-iio-light-opt3001-add-missing-full-scale-rang…
+ patches.kernel.org/6.6.58-078-iio-amplifiers-ada4250-add-missing-select-REG…
+ patches.kernel.org/6.6.58-079-iio-frequency-adf4377-add-missing-select-REMA…
+ patches.kernel.org/6.6.58-080-iio-light-bu27008-add-missing-select-IIO_-TRI…
+ patches.kernel.org/6.6.58-081-iio-dac-ad5766-add-missing-select-IIO_-TRIGGE…
+ patches.kernel.org/6.6.58-082-iio-proximity-mb1232-add-missing-select-IIO_-…
+ patches.kernel.org/6.6.58-083-iio-dac-ad3552r-add-missing-select-IIO_-TRIGG…
+ patches.kernel.org/6.6.58-084-iio-adc-ti-lmp92064-add-missing-select-REGMAP…
+ patches.kernel.org/6.6.58-085-iio-adc-ti-ads124s08-add-missing-select-IIO_-…
+ patches.kernel.org/6.6.58-086-iio-accel-kx022a-add-missing-select-IIO_-TRIG…
+ patches.kernel.org/6.6.58-087-Bluetooth-Call-iso_exit-on-module-unload.patch
+ patches.kernel.org/6.6.58-088-Bluetooth-Remove-debugfs-directory-on-module-…
+ patches.kernel.org/6.6.58-089-Bluetooth-ISO-Fix-multiple-init-when-debugfs-…
+ patches.kernel.org/6.6.58-090-Bluetooth-btusb-Fix-regression-with-fake-CSR-…
+ patches.kernel.org/6.6.58-091-vt-prevent-kernel-infoleak-in-con_font_get.pa…
+ patches.kernel.org/6.6.58-092-xhci-tegra-fix-checked-USB2-port-number.patch
+ patches.kernel.org/6.6.58-093-xhci-Fix-incorrect-stream-context-type-macro.…
+ patches.kernel.org/6.6.58-094-xhci-Mitigate-failed-set-dequeue-pointer-comm…
+ patches.kernel.org/6.6.58-095-USB-serial-option-add-support-for-Quectel-EG9…
+ patches.kernel.org/6.6.58-096-USB-serial-option-add-Telit-FN920C04-MBIM-com…
+ patches.kernel.org/6.6.58-097-usb-typec-qcom-pmic-typec-fix-sink-status-bei…
+ patches.kernel.org/6.6.58-098-usb-dwc3-Wait-for-EndXfer-completion-before-r…
+ patches.kernel.org/6.6.58-099-misc-microchip-pci1xxxx-add-support-for-NVMEM…
+ patches.kernel.org/6.6.58-100-misc-microchip-pci1xxxx-add-support-for-NVMEM…
+ patches.kernel.org/6.6.58-101-serial-imx-Update-mctrl-old_status-on-RTSD-in…
+ patches.kernel.org/6.6.58-102-parport-Proper-fix-for-array-out-of-bounds-ac…
+ patches.kernel.org/6.6.58-103-x86-resctrl-Annotate-get_mem_config-functions…
+ patches.kernel.org/6.6.58-104-x86-apic-Always-explicitly-disarm-TSC-deadlin…
+ patches.kernel.org/6.6.58-105-x86-CPU-AMD-Only-apply-Zenbleed-fix-for-Zen2-…
+ patches.kernel.org/6.6.58-106-x86-entry_32-Do-not-clobber-user-EFLAGS.ZF.pa…
+ patches.kernel.org/6.6.58-107-x86-entry_32-Clear-CPU-buffers-after-register…
+ patches.kernel.org/6.6.58-108-tty-n_gsm-Fix-use-after-free-in-gsm_cleanup_m…
+ patches.kernel.org/6.6.58-109-x86-bugs-Use-code-segment-selector-for-VERW-o…
+ patches.kernel.org/6.6.58-110-pinctrl-ocelot-fix-system-hang-on-level-based…
+ patches.kernel.org/6.6.58-111-pinctrl-stm32-check-devm_kasprintf-returned-v…
+ patches.kernel.org/6.6.58-112-pinctrl-apple-check-devm_kasprintf-returned-v…
+ patches.kernel.org/6.6.58-113-irqchip-gic-v4-Don-t-allow-a-VMOVP-on-a-dying…
+ patches.kernel.org/6.6.58-114-irqchip-sifive-plic-Unmask-interrupt-in-plic_…
+ patches.kernel.org/6.6.58-115-serial-qcom-geni-fix-polled-console-initialis…
+ patches.kernel.org/6.6.58-116-serial-qcom-geni-revert-broken-hibernation-su…
+ patches.kernel.org/6.6.58-117-serial-qcom-geni-fix-dma-rx-cancellation.patch
+ patches.kernel.org/6.6.58-118-serial-qcom-geni-fix-receiver-enable.patch
+ patches.kernel.org/6.6.58-119-tcp-fix-mptcp-DSS-corruption-due-to-large-pmt…
+ patches.kernel.org/6.6.58-120-selftests-mptcp-join-change-capture-checksum-…
+ patches.kernel.org/6.6.58-121-selftests-mptcp-join-test-for-prohibited-MPC-…
+ patches.kernel.org/6.6.58-122-selftests-mptcp-remove-duplicated-variables.p…
+ patches.kernel.org/6.6.58-123-nilfs2-propagate-directory-read-errors-from-n…
+ patches.kernel.org/6.6.58-124-ALSA-hda-conexant-Use-cached-pin-control-for-…
+ patches.kernel.org/6.6.58-125-Linux-6.6.58.patch
########################################################
# Build fixes that apply to the vanilla kernel too.
++++++ source-timestamp ++++++
--- /var/tmp/diff_new_pack.lHwSjX/_old 2024-10-25 19:19:29.170234732 +0200
+++ /var/tmp/diff_new_pack.lHwSjX/_new 2024-10-25 19:19:29.174234899 +0200
@@ -1,4 +1,4 @@
-2024-10-21 12:35:30 +0000
-GIT Revision: a8ceeb3b3d936f6df83efc36ab1d2297436e5899
+2024-10-23 07:41:56 +0000
+GIT Revision: d47a3241627d3cc555e27e7d0ed5560abd62bcd4
GIT Branch: slowroll
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package mailutils for openSUSE:Factory checked in at 2024-10-25 19:18:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mailutils (Old)
and /work/SRC/openSUSE:Factory/.mailutils.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mailutils"
Fri Oct 25 19:18:54 2024 rev:22 rq:1218057 version:3.17
Changes:
--------
--- /work/SRC/openSUSE:Factory/mailutils/mailutils.changes 2024-02-25 14:05:17.115089433 +0100
+++ /work/SRC/openSUSE:Factory/.mailutils.new.2020/mailutils.changes 2024-10-25 19:19:18.541791284 +0200
@@ -1,0 +2,29 @@
+Thu Oct 24 12:41:23 UTC 2024 - Dr. Werner Fink <werner(a)suse.de>
+
+- Add patch MALLOC_PERTURB_.patch
+ * Fix memory pool handling which otherwise cause failing
+ mimeview due missing mime types due set MALLOC_PERTURB_
+ environment variable
+
+-------------------------------------------------------------------
+Thu Oct 24 09:38:14 UTC 2024 - Dr. Werner Fink <werner(a)suse.de>
+
+- Update to mailutils 3.17:
+ * Use of TLS in pop3d and imap4d
+ If not explicitly specified, the TLS mode to use (ondemand, connect,
+ etc.) is derived from the configured port. E.g., for imap4d, port 143
+ implies ondemand mode, and port 993 implies connection mode.
+ The global tls-mode setting is used only when the mode cannot be
+ detemined otherwise, i.e. neither per-server tls-mode is given nor
+ the port gives any clues as to the TLS mode to use.
+ * Bugfixes
+ + movemail: fix handling of -P option.
+ + pop3d, imap4d: fix global timeout and transcript configuration statements
+ + pop3d, imap4d: global tls-mode is used only when the mode to use cannot
+ be determined otherwise.
+ + pop3d, imap4d: if not set explicitly, derive tls mode from the port used.
+ + Improve file safety checking routine.
+ + Fix compilation with new gcc versions.
+- There is no mu-mailx ... only a mailx from package mailx
+
+-------------------------------------------------------------------
Old:
----
mailutils-3.16.tar.xz
mailutils-3.16.tar.xz.sig
New:
----
MALLOC_PERTURB_.patch
mailutils-3.17.tar.xz
mailutils-3.17.tar.xz.sig
BETA DEBUG BEGIN:
New:
- Add patch MALLOC_PERTURB_.patch
* Fix memory pool handling which otherwise cause failing
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mailutils.spec ++++++
--- /var/tmp/diff_new_pack.OCHi57/_old 2024-10-25 19:19:20.521873898 +0200
+++ /var/tmp/diff_new_pack.OCHi57/_new 2024-10-25 19:19:20.521873898 +0200
@@ -1,7 +1,7 @@
#
# spec file for package mailutils
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -27,8 +27,9 @@
# Currently disabled suid/sgid program dotlock and maidag
%bcond_with set_user_identity
%bcond_with guile_22
+%bcond_with check
Name: mailutils
-Version: 3.16
+Version: 3.17
Release: 0
Summary: GNU Mailutils
License: GPL-3.0-or-later AND LGPL-3.0-or-later
@@ -42,11 +43,15 @@
Patch0: lisp-load-silent.patch
Patch2: silent-rpmlint-with_initgroups.patch
Patch3: mailutils-3.5-guile-2.0.patch
-BuildRequires: autoconf
+Patch4: MALLOC_PERTURB_.patch
+BuildRequires: autoconf > 2.71
BuildRequires: automake
BuildRequires: bison
BuildRequires: cpio
BuildRequires: cyrus-sasl-gssapi
+%if %{with check}
+BuildRequires: emacs-nox
+%endif
BuildRequires: fdupes
BuildRequires: flex
BuildRequires: gcc-c++
@@ -67,7 +72,7 @@
BuildRequires: pkgconfig(gnutls)
BuildRequires: pkgconfig(krb5-gssapi)
BuildRequires: pkgconfig(kyotocabinet)
-BuildRequires: pkgconfig(libgsasl)
+BuildRequires: pkgconfig(libgsasl) > 2
BuildRequires: pkgconfig(python3)
%if %{with libalternatives}
BuildRequires: alts
@@ -186,6 +191,7 @@
%setup -q
%patch -P 0
%patch -P 2
+%patch -P 4
set -- %(rpm -q --queryformat '%%{VERSION}' guile-devel | sed -r 's@\.@ @g')
(cat > guile.list)<<-EOF
%dir %{_datadir}/guile/site/$1.$2/
@@ -359,8 +365,8 @@
%endif
mkdir -p %{buildroot}%{_datadir}/libalternatives/Mail
cat > %{buildroot}%{_datadir}/libalternatives/Mail/10.conf <<EOF
-binary=%{_bindir}/mu-mailx
-man=mu-mail.1
+binary=%{_bindir}/mailx
+man=mailx.1
group=mail, Mail
EOF
ln -sf %{_bindir}/alts %{buildroot}%{_bindir}/mail
@@ -379,7 +385,14 @@
%find_lang %{name}
+%if %{with check}
+%check
+make check
+%endif
+
+%if ! %{with libalternatives} || %{with set_user_identity}
%post
+%endif
%if ! %{with libalternatives}
%{_sbindir}/update-alternatives --quiet --force \
--install %{_bindir}/mail mail %{_bindir}/mu-mail 10 \
++++++ MALLOC_PERTURB_.patch ++++++
---
libmailutils/base/opool.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- libmailutils/base/opool.c
+++ libmailutils/base/opool.c 2024-10-24 12:31:48.591157738 +0000
@@ -61,7 +61,7 @@ struct _mu_opool
static union mu_opool_bucket *
alloc_bucket (struct _mu_opool *opool, size_t size)
{
- union mu_opool_bucket *p = malloc (sizeof (*p) + size);
+ union mu_opool_bucket *p = calloc (1, sizeof (*p) + size);
if (!p)
{
if (opool->flags & MU_OPOOL_ENOMEMABRT)
@@ -114,7 +114,7 @@ copy_chars (mu_opool_t opool, const char
int
mu_opool_create (mu_opool_t *pret, int flags)
{
- struct _mu_opool *x = malloc (sizeof (x[0]));
+ struct _mu_opool *x = calloc (1, sizeof (x[0]));
if (!x)
{
if (flags & MU_OPOOL_ENOMEMABRT)
@@ -534,7 +534,7 @@ opitr_data_dup (void **ptr, void *owner)
{
struct opool_iterator *itr = owner;
- *ptr = malloc (sizeof (struct opool_iterator));
+ *ptr = calloc (1, sizeof (struct opool_iterator));
if (*ptr == NULL)
return ENOMEM;
memcpy (*ptr, owner, sizeof (struct opool_iterator));
++++++ mailutils-3.16.tar.xz -> mailutils-3.17.tar.xz ++++++
++++ 28645 lines of diff (skipped)
++++++ mailutils-3.5-guile-2.0.patch ++++++
--- /var/tmp/diff_new_pack.OCHi57/_old 2024-10-25 19:19:21.465913287 +0200
+++ /var/tmp/diff_new_pack.OCHi57/_new 2024-10-25 19:19:21.469913453 +0200
@@ -8,7 +8,7 @@
--- configure.ac
+++ configure.ac 2021-10-20 07:42:21.724689930 +0000
-@@ -1191,7 +1191,7 @@ AC_SUBST([GUILE_BINDIR])
+@@ -1175,7 +1175,7 @@ AC_SUBST([GUILE_BINDIR])
AC_SUBST([LIBMU_SCM])
AC_SUBST([LIBMU_SCM_DEPS])
AC_SUBST([MU_GUILE_SIEVE_MOD_DIR])
@@ -17,7 +17,7 @@
[useguile=yes
AC_DEFINE([WITH_GUILE],1,[Enable Guile support])
GUILE_BINDIR=`guile-config info bindir`
-@@ -1404,7 +1404,6 @@ MU_CONFIG_TESTSUITE(mh)
+@@ -1389,7 +1389,6 @@ MU_CONFIG_TESTSUITE(mh)
MU_CONFIG_TESTSUITE(comsat)
MU_CONFIG_TESTSUITE(imap4d)
MU_CONFIG_TESTSUITE(mimeview)
++++++ mailutils-rpmlintrc ++++++
--- /var/tmp/diff_new_pack.OCHi57/_old 2024-10-25 19:19:21.497914622 +0200
+++ /var/tmp/diff_new_pack.OCHi57/_new 2024-10-25 19:19:21.501914789 +0200
@@ -1,7 +1,5 @@
addFilter(".*E:.*subdir-in-bin.*/usr/bin/mu-mh/.*")
addFilter(".*W:.*name-repeated-in-summary.*Mailutils.*")
addFilter(".*W:.*files-duplicate.*mailutils-mh\.el.*mailutils-mh\.el.*")
-addFilter(".*W:.*binary-or-shlib-calls-gethostbyname.*lib.*\.so.*")
addFilter(".*W:.*bin-sh-syntax-error.*/usr/bin/guim.*")
-addFilter(".*W:.*binary-or-shlib-calls-gethostbyname.*/usr/sbin/imap4d.*")
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package pipewire for openSUSE:Factory checked in at 2024-10-25 19:18:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pipewire (Old)
and /work/SRC/openSUSE:Factory/.pipewire.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pipewire"
Fri Oct 25 19:18:52 2024 rev:126 rq:1218008 version:1.2.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/pipewire/pipewire.changes 2024-10-22 14:50:44.722448749 +0200
+++ /work/SRC/openSUSE:Factory/.pipewire.new.2020/pipewire.changes 2024-10-25 19:19:15.773675790 +0200
@@ -1,0 +2,43 @@
+Thu Oct 24 09:54:34 UTC 2024 - Antonio Larrosa <alarrosa(a)suse.com>
+
+- Update to version 1.2.6:
+ + Highlights
+ - The filter-chain param changes were not aggregated correctly,
+ causing some param changes to be ignored. (#4331)
+ - Clear the JACK io ports correctly when stopping to avoid
+ crashes. (#4337)
+ - Some more small fixes and improvements.
+ + PipeWire
+ - Stream states are now updated based on the underlying node
+ state.
+ - Exported nodes now have their state change done synchronously
+ so that the server can immediately start the driver and avoid
+ some initial xruns.
+ - Improve stream flush handling and improve the docs.
+ - Don't send mix_info to destroyed ports to avoid some errors
+ in the JACK clients.
+ + Modules
+ - The filter-chain param changes were not aggregated correctly,
+ causing some param changes to be ignored. (#4331)
+ - The filter-chain now correctly optimizes unlinked nodes in
+ all cases.
+ + SPA
+ - ALSA PCM node properties are now no longer overwritten with
+ card properties. (#4135)
+ - Increase the adapter retry count to avoid xruns in some
+ cases. (#4334)
+ - Fix potential crash in cleanup of ALSA nodes.
+ + Bluetooth
+ - Fix a crash with broadcast sinks.
+ - Improve compatibility with Phonak hearing aids.
+ - Don't exit when DBus goes down.
+ + JACK
+ - Clear the io ports correctly when stopping to avoid crashes.
+ (#4337)
+ + Docs
+ - Backport docs from master.
+- Drop patches already included in upstream:
+ * 0001-bluez5-fix-crash-with-broadcast-sinks.patch
+ * 0002-jack-actually-clear-the-mix-io.patch
+
+-------------------------------------------------------------------
Old:
----
0001-bluez5-fix-crash-with-broadcast-sinks.patch
0002-jack-actually-clear-the-mix-io.patch
pipewire-1.2.5.obscpio
New:
----
pipewire-1.2.6.obscpio
BETA DEBUG BEGIN:
Old:- Drop patches already included in upstream:
* 0001-bluez5-fix-crash-with-broadcast-sinks.patch
* 0002-jack-actually-clear-the-mix-io.patch
Old: * 0001-bluez5-fix-crash-with-broadcast-sinks.patch
* 0002-jack-actually-clear-the-mix-io.patch
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pipewire.spec ++++++
--- /var/tmp/diff_new_pack.D2w1Sn/_old 2024-10-25 19:19:17.993768419 +0200
+++ /var/tmp/diff_new_pack.D2w1Sn/_new 2024-10-25 19:19:18.005768919 +0200
@@ -68,7 +68,7 @@
%bcond_with aptx
Name: pipewire
-Version: 1.2.5
+Version: 1.2.6
Release: 0
Summary: A Multimedia Framework designed to be an audio and video server and more
License: MIT
@@ -78,8 +78,6 @@
Source99: baselibs.conf
# PATCH-FIX-OPENSUSE reduce-meson-dependency.patch
Patch0: reduce-meson-dependency.patch
-Patch1: 0001-bluez5-fix-crash-with-broadcast-sinks.patch
-Patch2: 0002-jack-actually-clear-the-mix-io.patch
BuildRequires: docutils
%if 0%{suse_version} > 1500
@@ -661,7 +659,7 @@
%{_mandir}/man5/pipewire-filter-chain.conf.5%{?ext_man}
%{_mandir}/man5/pipewire.conf.5%{?ext_man}
%{_mandir}/man5/pipewire-jack.conf.5%{?ext_man}
-%{_mandir}/man7/pipewire-devices.7%{?ext_man}
+%{_mandir}/man7/pipewire-props.7%{?ext_man}
%dir %{_datadir}/pipewire/
%{_datadir}/pipewire/pipewire.conf
++++++ _service ++++++
--- /var/tmp/diff_new_pack.D2w1Sn/_old 2024-10-25 19:19:18.225778099 +0200
+++ /var/tmp/diff_new_pack.D2w1Sn/_new 2024-10-25 19:19:18.229778266 +0200
@@ -3,7 +3,7 @@
<service name="obs_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://gitlab.freedesktop.org/pipewire/pipewire.git</param>
- <param name="revision">1.2.5</param>
+ <param name="revision">1.2.6</param>
<param name="versionformat">@PARENT_TAG@</param>
<!--
<param name="revision">60deeb25558a794e6e664bb832318b87958c18ea</param>
++++++ pipewire-1.2.5.obscpio -> pipewire-1.2.6.obscpio ++++++
/work/SRC/openSUSE:Factory/pipewire/pipewire-1.2.5.obscpio /work/SRC/openSUSE:Factory/.pipewire.new.2020/pipewire-1.2.6.obscpio differ: char 48, line 1
++++++ pipewire.obsinfo ++++++
--- /var/tmp/diff_new_pack.D2w1Sn/_old 2024-10-25 19:19:18.277780269 +0200
+++ /var/tmp/diff_new_pack.D2w1Sn/_new 2024-10-25 19:19:18.281780435 +0200
@@ -1,5 +1,5 @@
name: pipewire
-version: 1.2.5
-mtime: 1727431340
-commit: 71fac7fa818f21234da4c356de0b44e47e1a2ef2
+version: 1.2.6
+mtime: 1729669450
+commit: 79eebcb72490484e25208971ca15b9e0ea25bd95
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package patterns-microos for openSUSE:Factory checked in at 2024-10-25 19:18:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/patterns-microos (Old)
and /work/SRC/openSUSE:Factory/.patterns-microos.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "patterns-microos"
Fri Oct 25 19:18:50 2024 rev:93 rq:1218000 version:5.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/patterns-microos/patterns-microos.changes 2024-10-02 21:33:27.858580669 +0200
+++ /work/SRC/openSUSE:Factory/.patterns-microos.new.2020/patterns-microos.changes 2024-10-25 19:19:12.081521744 +0200
@@ -1,0 +2,6 @@
+Wed Oct 23 16:28:24 UTC 2024 - Thorsten Kukuk <kukuk(a)suse.com>
+
+- Remove outdated tftpboot-installation package
+- Remove wrong hint about cockpit-ws container
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ patterns-microos.spec ++++++
--- /var/tmp/diff_new_pack.TpOC8g/_old 2024-10-25 19:19:13.945599518 +0200
+++ /var/tmp/diff_new_pack.TpOC8g/_new 2024-10-25 19:19:13.953599852 +0200
@@ -280,7 +280,6 @@
%description cockpit
Packages required to run the Cockpit system management service.
-For the web service the cockpit-ws container is required.
%package sssd_ldap
Summary: LDAP client
@@ -744,7 +743,6 @@
# Needed for zRam swap support
Requires: systemd-zram-service
Requires: spice-vdagent
-Requires: tftpboot-installation-openSUSE-MicroOS-%{_target_cpu}
Requires: wpa_supplicant
Requires: xfsprogs
# Needed for TPM2.0 support (boo#1211835)
1
0