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
July 2024
- 1 participants
- 1521 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package rrdtool for openSUSE:Factory checked in at 2024-07-30 11:53:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rrdtool (Old)
and /work/SRC/openSUSE:Factory/.rrdtool.new.1882 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rrdtool"
Tue Jul 30 11:53:39 2024 rev:78 rq:1190169 version:1.8.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/rrdtool/rrdtool.changes 2023-12-26 18:27:11.493231750 +0100
+++ /work/SRC/openSUSE:Factory/.rrdtool.new.1882/rrdtool.changes 2024-07-30 11:53:55.624222430 +0200
@@ -1,0 +2,20 @@
+Mon Jul 29 07:19:23 UTC 2024 - Martin Pluskal <mpluskal(a)suse.com>
+
+- Remove disabled patch rrdtool-tclsegfault.patch
+- Small spec file modernisation
+
+-------------------------------------------------------------------
+Fri Jul 12 15:12:22 UTC 2024 - Martin Jambor <mjambor(a)suse.com>
+
+- Added rrdtool-fix_extra_reference.patch to fix pointer type
+ incompatibility and allow the package to be built with GCC 14
+ without explicitely demoting errors to warnings. [boo#1225919]
+
+-------------------------------------------------------------------
+Fri Jul 5 20:30:43 UTC 2024 - Friedrich Haubensak <hsk17(a)mail.de>
+
+- add rrdtool-1.8.0-gcc14.patch from upstream to fix build with
+ gcc-14
+- disable rrdtool-tclsegfault.patch, does not apply and seems
+ unneccessary
+-------------------------------------------------------------------
Old:
----
rrdtool-tclsegfault.patch
New:
----
rrdtool-1.8.0-gcc14.patch
rrdtool-fix_extra_reference.patch
BETA DEBUG BEGIN:
Old:
- Remove disabled patch rrdtool-tclsegfault.patch
- Small spec file modernisation
BETA DEBUG END:
BETA DEBUG BEGIN:
New:
- add rrdtool-1.8.0-gcc14.patch from upstream to fix build with
gcc-14
New:
- Added rrdtool-fix_extra_reference.patch to fix pointer type
incompatibility and allow the package to be built with GCC 14
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rrdtool.spec ++++++
--- /var/tmp/diff_new_pack.2wmbZI/_old 2024-07-30 11:53:56.292249382 +0200
+++ /var/tmp/diff_new_pack.2wmbZI/_new 2024-07-30 11:53:56.292249382 +0200
@@ -1,7 +1,7 @@
#
# spec file for package rrdtool
#
-# 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
@@ -46,11 +46,16 @@
# PATCH-FIX-UPSTREAM -- Fix BUILD_DATE in rrdtool help output (fix segfault)
# https://github.com/oetiker/rrdtool-1.x/commit/e59f703bbcc0af949ee365206426b…
Patch1: e59f703bbcc0af949ee365206426b6394c340c6f.patch
-# PATCH-FIX-UPSTREAM -- Prevent possible segfault
-Patch3: rrdtool-tclsegfault.patch
+## PATCH-FIX-UPTREAM -- https://github.com/oetiker/rrdtool-1.x/pull/1242
+Patch2: rrdtool-1.8.0-gcc14.patch
+# PATCH-FIX-UPTREAM -- Prevent possible segfault
+## this patch against rrdtool-1.4.5 dates from 2011, seems unneccessary today,
+## never appeared upstream, and it does no longer apply
+##Patch3: rrdtool-tclsegfault.patch
# PATCH-FIX-UPSTREAM -- bnc#793636
Patch12: rrdtool-zero_vs_nothing.patch
Patch14: harden_rrdcached.service.patch
+Patch15: rrdtool-fix_extra_reference.patch
# Needed for tests
BuildRequires: bc
BuildRequires: cairo-devel >= 1.2
@@ -267,7 +272,7 @@
--with-gnu-ld \
--with-systemdsystemunitdir=%{_unitdir}
-make %{?_smp_mflags}
+%make_build
%install
make \
@@ -315,7 +320,7 @@
%check
# Follow upstream, disable the following, failing tests: rpn1
# https://github.com/oetiker/rrdtool-1.x/blob/master/.travis.yml#L30
-make %{?_smp_mflags} check TESTS="modify1 modify2 modify3 modify4 modify5 rpn2 xport1 \
+%make_build check TESTS="modify1 modify2 modify3 modify4 modify5 rpn2 xport1 \
tune1 tune2 graph1 rrdcreate dump-restore create-with-source-1 create-with-source-2 \
create-with-source-3 create-with-source-4 create-with-source-and-mapping-1 \
create-from-template-1 dcounter1 vformatter1 list1 pdp-calc1"
++++++ rrdtool-1.8.0-gcc14.patch ++++++
++++ 1587 lines (skipped)
++++++ rrdtool-fix_extra_reference.patch ++++++
From: Martin Jambor <mjambor(a)suse.cz>
Date: Fri, 12 Jul 2024 17:02:04 +0200
Subject: [PATCH] Fix extra reference of parameters of rrd_fetch_dbi_{long,double}
Upstream: https://github.com/oetiker/rrdtool-1.x/pull/1255
Refrences: boo#1225919
Functions rrd_fetch_dbi_long and rrd_fetch_dbi_double currently take
the first parameter of type "bi_result result *" even though that is
already a pointer and the use of that parameter suggests the extra
indirection is not wanted. What is more, the caller passes just
"bi_result result" to the corresponding actual arguments which results
in compile errors with GCC 14 because it now does not accept
incompatible pointer types by default.
---
src/rrd_fetch_libdbi.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/rrd_fetch_libdbi.c b/src/rrd_fetch_libdbi.c
index fe02b0d8..e4eccaa5 100644
--- a/src/rrd_fetch_libdbi.c
+++ b/src/rrd_fetch_libdbi.c
@@ -26,13 +26,13 @@ static char* _find_next_separator(char* start,char separator);
static char* _find_next_separator_twice(char*start,char separator);
static char _hexcharhelper(char c);
static int _inline_unescape (char* string);
-static double rrd_fetch_dbi_double(dbi_result *result,int idx);
-static long rrd_fetch_dbi_long(dbi_result *result,int idx);
+static double rrd_fetch_dbi_double(dbi_result result,int idx);
+static long rrd_fetch_dbi_long(dbi_result result,int idx);
/* the real code */
/* helpers to get correctly converted values from DB*/
-static long rrd_fetch_dbi_long(dbi_result *result,int idx) {
+static long rrd_fetch_dbi_long(dbi_result result,int idx) {
char *ptmp="";
long value=DNAN;
/* get the attributes for this filed */
@@ -89,7 +89,7 @@ static long rrd_fetch_dbi_long(dbi_result *result,int idx) {
return value;
}
-static double rrd_fetch_dbi_double(dbi_result *result,int idx) {
+static double rrd_fetch_dbi_double(dbi_result result,int idx) {
char *ptmp="";
double value=DNAN;
/* get the attributes for this filed */
--
2.45.2
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package fwupd for openSUSE:Factory checked in at 2024-07-30 11:53:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fwupd (Old)
and /work/SRC/openSUSE:Factory/.fwupd.new.1882 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fwupd"
Tue Jul 30 11:53:36 2024 rev:83 rq:1190157 version:1.9.22
Changes:
--------
--- /work/SRC/openSUSE:Factory/fwupd/fwupd.changes 2024-06-17 19:27:53.150722743 +0200
+++ /work/SRC/openSUSE:Factory/.fwupd.new.1882/fwupd.changes 2024-07-30 11:53:53.572139672 +0200
@@ -1,0 +2,34 @@
+Mon Jul 29 06:17:20 UTC 2024 - Dominique Leuenberger <dimstar(a)opensuse.org>
+
+- Update to version 1.9.22:
+ + This release fixes the following bugs:
+ - Add a PCB tag in the usi-dock GUID to distinguish different
+ revisions.
+ - Add explicit hidraw permission to fwupd.service to fix
+ several devices.
+ - Always load the flashrom plugin when using coreboot.
+ - Be explicit with the rts54hub detach retry delay to fix the
+ Acer D501.
+ - Be more careful when setting thelio-io version strings.
+ - Fix a critical warning if a device returns unexpected data
+ from DFU upload.
+ - Fix a critical warning if the DMI manufacturer is an empty
+ string.
+ - Fix several reported integer overflows from Coverity.
+ - Fix the Blackbird and Talos II baseboard details.
+ - Fix transient version number issue after flashing wacom-usb
+ devices.
+ - Increase the cros_ec acquiesce delay to manage additional
+ reboots.
+ - Only accept valid ASCII cabinet filenames.
+ - Only require udevdir when gudev support is enabled.
+ - Only show one PixArt receiver device per physical device.
+ - Set the rts54hub version in more cases.
+ - Speed up the daemon self tests by ~60%.
+ - Use the bootloader build-timestamp as the fallback HWID BIOS
+ version.
+ + This release adds support for the following hardware:
+ - Framework SD
+ - Raspberry Pi 5 (unofficial)
+
+-------------------------------------------------------------------
Old:
----
fwupd-1.9.21.obscpio
New:
----
fwupd-1.9.22.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ fwupd.spec ++++++
--- /var/tmp/diff_new_pack.Uiiz1u/_old 2024-07-30 11:53:54.756187408 +0200
+++ /var/tmp/diff_new_pack.Uiiz1u/_new 2024-07-30 11:53:54.760187569 +0200
@@ -40,7 +40,7 @@
%define docs 0
Name: fwupd
-Version: 1.9.21
+Version: 1.9.22
Release: 0
Summary: Device firmware updater daemon
License: GPL-2.0-or-later AND LGPL-2.1-or-later
++++++ _service ++++++
--- /var/tmp/diff_new_pack.Uiiz1u/_old 2024-07-30 11:53:54.788188699 +0200
+++ /var/tmp/diff_new_pack.Uiiz1u/_new 2024-07-30 11:53:54.792188861 +0200
@@ -4,7 +4,7 @@
<param name="url">https://github.com/fwupd/fwupd.git</param>
<param name="scm">git</param>
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
- <param name="revision">1.9.21</param>
+ <param name="revision">1.9.22</param>
<param name="versionrewrite-pattern">(.*)\+0</param>
<param name="versionrewrite-replacement">\1</param>
</service>
++++++ fwupd-1.9.21.obscpio -> fwupd-1.9.22.obscpio ++++++
/work/SRC/openSUSE:Factory/fwupd/fwupd-1.9.21.obscpio /work/SRC/openSUSE:Factory/.fwupd.new.1882/fwupd-1.9.22.obscpio differ: char 49, line 1
++++++ fwupd.obsinfo ++++++
--- /var/tmp/diff_new_pack.Uiiz1u/_old 2024-07-30 11:53:54.836190636 +0200
+++ /var/tmp/diff_new_pack.Uiiz1u/_new 2024-07-30 11:53:54.840190797 +0200
@@ -1,5 +1,5 @@
name: fwupd
-version: 1.9.21
-mtime: 1718296630
-commit: 930b0ed9110c4e36994aded9cfc520729c16234c
+version: 1.9.22
+mtime: 1722009350
+commit: 0a27c666268ca8b4b290f01842a4757447822ff2
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-scikit-learn for openSUSE:Factory checked in at 2024-07-30 11:53:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-scikit-learn (Old)
and /work/SRC/openSUSE:Factory/.python-scikit-learn.new.1882 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-scikit-learn"
Tue Jul 30 11:53:32 2024 rev:32 rq:1190078 version:1.5.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-scikit-learn/python-scikit-learn.changes 2024-06-12 15:37:52.197132122 +0200
+++ /work/SRC/openSUSE:Factory/.python-scikit-learn.new.1882/python-scikit-learn.changes 2024-07-30 11:53:50.232005048 +0200
@@ -1,0 +2,6 @@
+Mon Jul 29 05:03:23 UTC 2024 - Steve Kowalik <steven.kowalik(a)suse.com>
+
+- Add patch support-pytest-8.3.patch:
+ * Fix property wrapping, uncovered by Pytest 8.3 changes.
+
+-------------------------------------------------------------------
New:
----
support-pytest-8.3.patch
BETA DEBUG BEGIN:
New:
- Add patch support-pytest-8.3.patch:
* Fix property wrapping, uncovered by Pytest 8.3 changes.
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-scikit-learn.spec ++++++
--- /var/tmp/diff_new_pack.1FxuUT/_old 2024-07-30 11:53:50.896031812 +0200
+++ /var/tmp/diff_new_pack.1FxuUT/_new 2024-07-30 11:53:50.900031973 +0200
@@ -51,6 +51,8 @@
License: BSD-3-Clause
URL: https://scikit-learn.org/
Source0: https://files.pythonhosted.org/packages/source/s/scikit-learn/scikit_learn-…
+# PATCH-FIX-UPSTREAM One commit from gh#scikit-learn/scikit-learn#29486
+Patch0: support-pytest-8.3.patch
BuildRequires: %{python_module Cython >= 3.0.10}
BuildRequires: %{python_module devel >= 3.8}
BuildRequires: %{python_module joblib >= 1.2.0}
++++++ support-pytest-8.3.patch ++++++
From 4650e75e543718b2c0d9cf7c56aa9dda3c670c11 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= <loic.esteve(a)ymail.com>
Date: Tue, 23 Jul 2024 05:36:37 +0200
Subject: [PATCH 4/4] [azure parallel] fix wrapping for pytest 8.3.1
---
sklearn/utils/deprecation.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sklearn/utils/deprecation.py b/sklearn/utils/deprecation.py
index a3225597701c7..f72f8b8124f28 100644
--- a/sklearn/utils/deprecation.py
+++ b/sklearn/utils/deprecation.py
@@ -97,7 +97,7 @@ def _decorate_property(self, prop):
msg = self.extra
@property
- @functools.wraps(prop)
+ @functools.wraps(prop.fget)
def wrapped(*args, **kwargs):
warnings.warn(msg, category=FutureWarning)
return prop.fget(*args, **kwargs)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-pygments-pytest for openSUSE:Factory checked in at 2024-07-30 11:53:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pygments-pytest (Old)
and /work/SRC/openSUSE:Factory/.python-pygments-pytest.new.1882 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pygments-pytest"
Tue Jul 30 11:53:29 2024 rev:12 rq:1190075 version:2.4.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pygments-pytest/python-pygments-pytest.changes 2024-01-08 23:44:33.224766279 +0100
+++ /work/SRC/openSUSE:Factory/.python-pygments-pytest.new.1882/python-pygments-pytest.changes 2024-07-30 11:53:48.811947812 +0200
@@ -1,0 +2,6 @@
+Mon Jul 29 04:21:50 UTC 2024 - Steve Kowalik <steven.kowalik(a)suse.com>
+
+- Switch to pyproject macros.
+- Skip a test that fails with Pytest 8.3.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pygments-pytest.spec ++++++
--- /var/tmp/diff_new_pack.Sq4zh6/_old 2024-07-30 11:53:49.319968288 +0200
+++ /var/tmp/diff_new_pack.Sq4zh6/_new 2024-07-30 11:53:49.323968450 +0200
@@ -24,10 +24,12 @@
License: MIT
URL: https://github.com/asottile/pygments-pytest
Source: https://github.com/asottile/pygments-pytest/archive/v%{version}.tar.gz
+BuildRequires: %{python_module pip}
BuildRequires: %{python_module pygments-ansi-color >= 0.0.3}
BuildRequires: %{python_module pygments}
BuildRequires: %{python_module pytest >= 4.0.1}
BuildRequires: %{python_module setuptools}
+BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-pygments
@@ -42,19 +44,20 @@
%setup -q -n pygments-pytest-%{version}
%build
-%python_build
+%pyproject_wheel
%install
-%python_install
+%pyproject_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
-%pytest
+# https://github.com/pytest-dev/pygments-pytest/issues/135
+%pytest -k 'not test_warnings'
%files %{python_files}
%doc README.md
%license LICENSE
%pycache_only %{python_sitelib}/__pycache__/*.pyc
%{python_sitelib}/pygments_pytest.py
-%{python_sitelib}/pygments_pytest-%{version}*-info
+%{python_sitelib}/pygments_pytest-%{version}.dist-info
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package rubygem-nokogiri for openSUSE:Factory checked in at 2024-07-30 11:53:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-nokogiri (Old)
and /work/SRC/openSUSE:Factory/.rubygem-nokogiri.new.1882 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-nokogiri"
Tue Jul 30 11:53:26 2024 rev:69 rq:1190054 version:1.16.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-nokogiri/rubygem-nokogiri.changes 2023-11-29 21:18:40.200614358 +0100
+++ /work/SRC/openSUSE:Factory/.rubygem-nokogiri.new.1882/rubygem-nokogiri.changes 2024-07-30 11:53:46.799866715 +0200
@@ -1,0 +2,96 @@
+Sat Jul 27 18:46:12 UTC 2024 - Marcus Rueckert <mrueckert(a)suse.de>
+
+- 1.16.6:
+ - update intree libxml2 copy (unused in our build)
+ - update intree zlib copy (unused in our build)
+ - [CRuby] `XML::Reader` sets the `@encoding` instance variable
+ during reading if it is not passed into the initializer.
+ Previously, it would remain `nil`. The behavior of
+ `Reader#encoding` has not changed. This works around changes to
+ how libxml2 reports the encoding used in v2.12.6.
+ - [CRuby] `XML::Reader` defaults the encoding to UTF-8 if it's
+ not specified in either the document or as a method parameter.
+ Previously non-ASCII characters were serialized as NCRs in this
+ case. [#2891] (@flavorjones)
+ - [CRuby] Restored support for compilation by GCC versions
+ earlier than 4.6, which was broken in v1.15.0 (540e9aee).
+ [#3090] (@adfoster-r7)
+ - [CRuby] Patched upstream libxml2 to allow parsing HTML5 in the
+ context of a namespaced node (e.g., foreign content like
+ MathML). [#3112, #3116] (@flavorjones)
+ - [CRuby] Fixed a small memory leak in libgumbo (HTML5 parser)
+ when the maximum tree depth limit is hit. [#3098, #3100]
+ (@stevecheckoway)
+- Drop gcc14-allow-incompatible-pointer-types-for-now.patch
+
+-------------------------------------------------------------------
+Fri Jul 26 12:49:30 UTC 2024 - Marcus Rueckert <mrueckert(a)suse.de>
+
+- Added gcc14-allow-incompatible-pointer-types-for-now.patch:
+ gcc 14 errors out on incompatible pointer types
+
+ Allow those until https://github.com/sparklemotion/nokogiri/issues/3295
+ is fixed
+
+-------------------------------------------------------------------
+Tue Jul 9 14:34:25 UTC 2024 - Marcus Rueckert <mrueckert(a)suse.de>
+
+- Added only-complain-about-version-diff-if-it-is-older.patch
+ boo#1202053 boo#1213999 boo#1203728
+
+-------------------------------------------------------------------
+Thu Jan 18 16:00:05 UTC 2024 - Marcus Rueckert <mrueckert(a)suse.de>
+
+- limit ruby versions to 3.x
+
+-------------------------------------------------------------------
+Thu Jan 18 15:56:29 UTC 2024 - Marcus Rueckert <mrueckert(a)suse.de>
+
+- 1.16.0:
+ This release introduces native gem support for Ruby 3.3.
+
+ This release ends support for Ruby 2.7, for which
+ [upstream support ended 2023-03-31](https://www.ruby-lang.org/en/downloads/branches/).
+
+
+ #### Pattern matching
+
+ This version marks _official support_ for the pattern matching
+ API in `XML::Attr`, `XML::Document`, `XML::DocumentFragment`,
+ `XML::Namespace`, `XML::Node`, and `XML::NodeSet` (and their
+ subclasses), originally introduced as an experimental feature in
+ v1.14.0. (@flavorjones)
+
+ Documentation on what can be matched:
+
+ * [`XML::Attr#deconstruct_keys`](https://nokogiri.org/rdoc/Nokogiri/XML/Attr.html?h=deconstruct#method-i-deconstruct_keys)
+ * [`XML::Document#deconstruct_keys`](https://nokogiri.org/rdoc/Nokogiri/XML/Document.html?h=deconstruct#method-i-deconstruct_keys)
+ * [`XML::Namespace#deconstruct_keys`](https://nokogiri.org/rdoc/Nokogiri/XML/Namespace.html?h=deconstruct+namespace#method-i-deconstruct_keys)
+ * [`XML::Node#deconstruct_keys`](https://nokogiri.org/rdoc/Nokogiri/XML/Node.html?h=deconstruct#method-i-deconstruct_keys)
+ * [`XML::DocumentFragment#deconstruct`](https://nokogiri.org/rdoc/Nokogiri/XML/DocumentFragment.html?h=deconstruct#method-i-deconstruct)
+ * [`XML::NodeSet#deconstruct`](https://nokogiri.org/rdoc/Nokogiri/XML/NodeSet.html?h=deconstruct#method-i-deconstruct)
+
+
+ ### Dependencies
+
+ * [CRuby] Vendored libxml2 is updated to v2.12.3 from v2.11.6. (@flavorjones)
+ * https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.12.0
+ * https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.12.1
+ * https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.12.2
+ * https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.12.3
+
+
+ ### Fixed
+
+ * CSS `nth` pseudo-classes now handle spaces, e.g. `"2n + 1"`. [#3018] (@fusion2004)
+ * [CRuby] `libgumbo` no longer leaks memory when an incomplete tag is abandoned by the HTML5 parser. [#3036] (@flavorjones)
+
+
+ ### Removed
+
+ * Removed `Nokogiri::HTML5.get` which was deprecated in v1.12.0. [#2278] (@flavorjones)
+ * Removed the CSS-to-XPath utility modules `XPathVisitorAlwaysUseBuiltins` and `XPathVisitorOptimallyUseBuiltins`, which were deprecated in v1.13.0 in favor of `XPathVisitor` constructor args. [#2403] (@flavorjones)
+ * Removed `XML::Reader#attribute_nodes` which was deprecated in v1.13.8 in favor of `#attribute_hash`. [#2598, #2599] (@flavorjones)
+ * [CRuby] Removed the `libxml/libxml2_path` key from `VersionInfo`, used in the past for third-party library integration, in favor of the `nokogiri/cppflags` and `nokogiri/ldflags` keys. Please note that third-party library integration is not fully supported and may be deprecated soon, see #2746 for more context. [#2143] (@flavorjones)
+
+-------------------------------------------------------------------
@@ -664 +760 @@
-Fri Oct 28 05:01:51 UTC 2022 - Stephan Kulow <coolo(a)suse.com>
+Sat Aug 26 04:32:35 UTC 2023 - Marcus Rueckert <mrueckert(a)suse.de>
@@ -666 +762 @@
-updated to version 1.13.9
+- updated to version 1.15.4
@@ -668,0 +765,5 @@
+-------------------------------------------------------------------
+Thu Jun 22 00:08:39 UTC 2023 - Marcus Rueckert <mrueckert(a)suse.de>
+
+- updated to version 1.15.2
+ see installed CHANGES.md
@@ -671 +772,24 @@
-Thu Aug 4 13:20:37 UTC 2022 - Stephan Kulow <coolo(a)suse.com>
+Sun May 14 01:31:08 UTC 2023 - Marcus Rueckert <mrueckert(a)suse.de>
+
+- cleanup ruby version restrictions
+
+-------------------------------------------------------------------
+Fri Apr 21 13:29:16 UTC 2023 - Marcus Rueckert <mrueckert(a)suse.de>
+
+- updated to version 1.14.3
+ see installed CHANGES.md
+
+-------------------------------------------------------------------
+Thu Feb 23 19:12:16 UTC 2023 - Marcus Rueckert <mrueckert(a)suse.de>
+
+- updated to version 1.14.2
+ see installed CHANGES.md
+
+-------------------------------------------------------------------
+Thu Dec 22 10:46:21 UTC 2022 - Marcus Rueckert <mrueckert(a)suse.de>
+
+- updated to version 1.13.9
+ see installed CHANGES.md
+
+-------------------------------------------------------------------
+Fri Oct 28 05:01:51 UTC 2022 - Stephan Kulow <coolo(a)suse.com>
@@ -673 +797 @@
-updated to version 1.13.8
+- updated to version 1.13.9
@@ -675,0 +800,5 @@
+-------------------------------------------------------------------
+Thu Aug 4 13:20:37 UTC 2022 - Stephan Kulow <coolo(a)suse.com>
+
+- updated to version 1.13.8
+ see installed CHANGES.md
Old:
----
nokogiri-1.15.5.gem
New:
----
nokogiri-1.16.6.gem
only-complain-about-version-diff-if-it-is-older.patch
BETA DEBUG BEGIN:
New:
- Added only-complain-about-version-diff-if-it-is-older.patch
boo#1202053 boo#1213999 boo#1203728
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rubygem-nokogiri.spec ++++++
--- /var/tmp/diff_new_pack.Y96nEF/_old 2024-07-30 11:53:47.375889932 +0200
+++ /var/tmp/diff_new_pack.Y96nEF/_new 2024-07-30 11:53:47.379890093 +0200
@@ -1,7 +1,7 @@
#
# spec file for package rubygem-nokogiri
#
-# 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
@@ -24,23 +24,21 @@
#
Name: rubygem-nokogiri
-Version: 1.15.5
+Version: 1.16.6
Release: 0
%define mod_name nokogiri
%define mod_full_name %{mod_name}-%{version}
# MANUAL
-%if 0%{?suse_version} == 1500
-%define rb_build_versions ruby31 ruby27
-%define rb_build_ruby_abis ruby:3.1.0 ruby:2.7.0
-%endif
-BuildRequires: %{rubygem mini_portile2 >= 2.8}
+%define rb_build_versions ruby33
+%define rb_build_ruby_abis ruby:3.3.0
+BuildRequires: %{rubygem mini_portile2 >= 2.8.2}
BuildRequires: %{rubygem openssl}
BuildRequires: %{rubygem pkg-config}
BuildRequires: libxml2-devel >= 2.6.21
BuildRequires: libxslt-devel
# /MANUAL
BuildRequires: ruby-macros >= 5
-BuildRequires: %{rubydevel >= 2.7.0}
+BuildRequires: %{rubydevel >= 3.0.0}
BuildRequires: %{rubygem gem2rpm}
BuildRequires: %{rubygem rdoc > 3.10}
BuildRequires: update-alternatives
@@ -48,6 +46,9 @@
Source: https://rubygems.org/gems/%{mod_full_name}.gem
Source1: rubygem-nokogiri-rpmlintrc
Source2: gem2rpm.yml
+# MANUAL
+Patch0: only-complain-about-version-diff-if-it-is-older.patch
+# /MANUAL
Summary: Nokogiri (鋸) makes it easy and painless to work with XML and HTML
License: MIT
PreReq: update-alternatives
@@ -61,6 +62,10 @@
libgumbo, or xerces.
%prep
+%gem_unpack
+%patch -P 0 -p1
+find -type f -print0 | xargs -0 touch -r %{S:0}
+%gem_build
%build
++++++ gem2rpm.yml ++++++
--- /var/tmp/diff_new_pack.Y96nEF/_old 2024-07-30 11:53:47.411891383 +0200
+++ /var/tmp/diff_new_pack.Y96nEF/_new 2024-07-30 11:53:47.415891544 +0200
@@ -16,11 +16,9 @@
# :disable_automatic_rdoc_dep: true
# ## used by gem2rpm
:preamble: |-
- %if 0%{?suse_version} == 1500
- %define rb_build_versions ruby31 ruby27
- %define rb_build_ruby_abis ruby:3.1.0 ruby:2.7.0
- %endif
- BuildRequires: %{rubygem mini_portile2 >= 2.8}
+ %define rb_build_versions ruby33
+ %define rb_build_ruby_abis ruby:3.3.0
+ BuildRequires: %{rubygem mini_portile2 >= 2.8.2}
BuildRequires: %{rubygem openssl}
BuildRequires: %{rubygem pkg-config}
BuildRequires: libxml2-devel >= 2.6.21
@@ -30,6 +28,8 @@
# ## used by gem2rpm
# :patches:
# no-more-mini_portile.patch: -p0
+:patches:
+ only-complain-about-version-diff-if-it-is-older.patch: -p1
:sources:
- rubygem-nokogiri-rpmlintrc
# - foo.desktop
++++++ nokogiri-1.15.5.gem -> nokogiri-1.16.6.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gemfile new/Gemfile
--- old/Gemfile 2023-11-17 16:30:28.000000000 +0100
+++ new/Gemfile 2024-06-13 15:30:08.000000000 +0200
@@ -5,35 +5,38 @@
gemspec
group :development do
+ # ruby 3.4.0-dev removed some gems from the default set
+ #
+ # TODO: we should be able to remove these as our gem dependencies sort it out and we pull them in
+ # transitively.
+ gem "mutex_m"
+
# bootstrapping
gem "bundler", "~> 2.3"
- gem "rake", "= 13.0.6"
+ gem "rake", "13.1.0"
# building extensions
- gem "rake-compiler", "= 1.2.1"
- gem "rake-compiler-dock", "= 1.3.0"
-
- # documentation
- gem "hoe-markdown", "= 1.4.0"
+ gem "rake-compiler", "1.2.6"
+ gem "rake-compiler-dock", "1.4.0"
# parser generator
gem "rexical", "= 1.0.7"
# tests
- gem "minitest", "5.18.0"
- gem "minitest-reporters", "1.6.0"
- gem "ruby_memcheck", "1.3.2"
+ gem "minitest", "5.21.2"
+ gem "minitest-parallel_fork", "2.0.0"
+ gem "ruby_memcheck", "2.3.0"
gem "rubyzip", "~> 2.3.2"
gem "simplecov", "= 0.21.2"
# rubocop
if Gem::Requirement.new("~> 3.0").satisfied_by?(Gem::Version.new(RUBY_VERSION))
- gem "rubocop", "1.51.0"
- gem "rubocop-minitest", "0.31.0"
+ gem "rubocop", "1.60.2"
+ gem "rubocop-minitest", "0.34.5"
gem "rubocop-packaging", "0.5.2"
- gem "rubocop-performance", "1.18.0"
+ gem "rubocop-performance", "1.20.2"
gem "rubocop-rake", "= 0.6.0"
- gem "rubocop-shopify", "2.13.0"
+ gem "rubocop-shopify", "2.14.0"
end
end
@@ -41,5 +44,5 @@
# `bundle config set --local without rdoc`
# Then re-run `bundle install`.
group :rdoc do
- gem "rdoc", "6.5.0"
+ gem "rdoc", "6.6.2"
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/README.md new/README.md
--- old/README.md 2023-11-17 16:30:28.000000000 +0100
+++ new/README.md 2024-06-13 15:30:08.000000000 +0200
@@ -55,6 +55,7 @@
- The Nokogiri mailing list is active at https://groups.google.com/group/nokogiri-talk
- Open an issue using the "Help Request" template at https://github.com/sparklemotion/nokogiri/issues
+- Open a discussion at https://github.com/sparklemotion/nokogiri/discussions
Please do not mail the maintainers at their personal addresses.
@@ -90,6 +91,8 @@
- Updating packaged libraries for non-security-related reasons.
- Dropping support for EOLed Ruby versions. [Some folks find this objectionable](https://github.com/sparklemotion/nokogiri/issues/1568), but [SemVer says this is OK if the public API hasn't changed](https://semver.org/#what-should-i-do-if-i-update-my-own-dependenci….
- Backwards-incompatible changes to internal or private methods and constants. These are detailed in the "Changes" section of each changelog entry.
+- Removal of deprecated methods or parameters, after a generous transition period; usually when those methods or parameters are rarely-used or dangerous to the user. Essentially, removals that do not justify a major version bump.
+
`Patch`:
@@ -111,7 +114,7 @@
Requirements:
-- Ruby >= 2.7
+- Ruby >= 3.0
- JRuby >= 9.4.0.0
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dependencies.yml new/dependencies.yml
--- old/dependencies.yml 2023-11-17 16:30:28.000000000 +0100
+++ new/dependencies.yml 2024-06-13 15:30:08.000000000 +0200
@@ -1,8 +1,8 @@
-
+---
libxml2:
- version: "2.11.6"
- sha256: "c90eee7506764abbe07bb616b82da452529609815aefef423d66ef080eb0c300"
- # sha-256 hash provided in https://download.gnome.org/sources/libxml2/2.11/libxml2-2.11.6.sha256sum
+ version: "2.12.8"
+ sha256: "43ad877b018bc63deb2468d71f95219c2fac196876ef36d1bee51d226173ec93"
+ # sha-256 hash provided in https://download.gnome.org/sources/libxml2/2.12/libxml2-2.12.8.sha256sum
libxslt:
version: "1.1.39"
@@ -10,8 +10,8 @@
# sha-256 hash provided in https://download.gnome.org/sources/libxslt/1.1/libxslt-1.1.39.sha256sum
zlib:
- version: "1.2.13"
- sha256: "b3a24de97a8fdbc835b9833169501030b8977031bcb54b3b3ac13740f846ab30"
+ version: "1.3.1"
+ sha256: "9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23"
# SHA-256 hash provided on http://zlib.net/
libiconv:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nokogiri/extconf.rb new/ext/nokogiri/extconf.rb
--- old/ext/nokogiri/extconf.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/ext/nokogiri/extconf.rb 2024-06-13 15:30:08.000000000 +0200
@@ -443,7 +443,7 @@
# We use 'host' to set compiler prefix for cross-compiling. Prefer host_alias over host. And
# prefer i686 (what external dev tools use) to i386 (what ruby's configure.ac emits).
recipe.host = RbConfig::CONFIG["host_alias"].empty? ? RbConfig::CONFIG["host"] : RbConfig::CONFIG["host_alias"]
- recipe.host = recipe.host.gsub(/i386/, "i686")
+ recipe.host = recipe.host.gsub("i386", "i686")
recipe.target = File.join(PACKAGE_ROOT_DIR, "ports") if cacheable_p
recipe.configure_options << "--libdir=#{File.join(recipe.path, "lib")}"
@@ -651,8 +651,7 @@
append_ldflags(ENV["LDFLAGS"].split) unless ENV["LDFLAGS"].nil?
$LIBS = concat_flags($LIBS, ENV["LIBS"])
-# nokogumbo code uses C90/C99 features, let's make sure older compilers won't give
-# errors/warnings. see #2302
+# libgumbo uses C90/C99 features, see #2302
append_cflags(["-std=c99", "-Wno-declaration-after-statement"])
# gumbo html5 serialization is slower with O3, let's make sure we use O2
@@ -919,6 +918,7 @@
"--with-c14n",
"--with-debug",
"--with-threads",
+ "--without-tls", # see https://github.com/sparklemotion/nokogiri/issues/3031
"CPPFLAGS=#{cppflags}",
"CFLAGS=#{cflags}",
]
@@ -1087,7 +1087,6 @@
have_func("xmlRelaxNGSetValidStructuredErrors") # introduced in libxml 2.6.21
have_func("xmlSchemaSetValidStructuredErrors") # introduced in libxml 2.6.23
have_func("xmlSchemaSetParserStructuredErrors") # introduced in libxml 2.6.23
-have_func("rb_gc_location") # introduced in Ruby 2.7
have_func("rb_category_warning") # introduced in Ruby 3.0
other_library_versions_string = OTHER_LIBRARY_VERSIONS.map { |k, v| [k, v].join(":") }.join(",")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nokogiri/html4_sax_push_parser.c new/ext/nokogiri/html4_sax_push_parser.c
--- old/ext/nokogiri/html4_sax_push_parser.c 2023-11-17 16:30:28.000000000 +0100
+++ new/ext/nokogiri/html4_sax_push_parser.c 2024-06-13 15:30:08.000000000 +0200
@@ -32,7 +32,7 @@
if ((status != 0) && !(ctx->options & XML_PARSE_RECOVER)) {
// TODO: there appear to be no tests for this block
- xmlErrorPtr e = xmlCtxtGetLastError(ctx);
+ xmlErrorConstPtr e = xmlCtxtGetLastError(ctx);
Nokogiri_error_raise(NULL, e);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nokogiri/nokogiri.h new/ext/nokogiri/nokogiri.h
--- old/ext/nokogiri/nokogiri.h 2023-11-17 16:30:28.000000000 +0100
+++ new/ext/nokogiri/nokogiri.h 2024-06-13 15:30:08.000000000 +0200
@@ -66,6 +66,13 @@
#define XMLNS_PREFIX "xmlns"
#define XMLNS_PREFIX_LEN 6 /* including either colon or \0 */
+#ifndef xmlErrorConstPtr
+# if LIBXML_VERSION >= 21200
+# define xmlErrorConstPtr const xmlError *
+# else
+# define xmlErrorConstPtr xmlError *
+# endif
+#endif
#include <ruby.h>
#include <ruby/st.h>
@@ -227,9 +234,9 @@
void Nokogiri_structured_error_func_save_and_set(libxmlStructuredErrorHandlerState *handler_state, void *user_data,
xmlStructuredErrorFunc handler);
void Nokogiri_structured_error_func_restore(libxmlStructuredErrorHandlerState *handler_state);
-VALUE Nokogiri_wrap_xml_syntax_error(xmlErrorPtr error);
-void Nokogiri_error_array_pusher(void *ctx, xmlErrorPtr error);
-NORETURN_DECL void Nokogiri_error_raise(void *ctx, xmlErrorPtr error);
+VALUE Nokogiri_wrap_xml_syntax_error(xmlErrorConstPtr error);
+void Nokogiri_error_array_pusher(void *ctx, xmlErrorConstPtr error);
+NORETURN_DECL void Nokogiri_error_raise(void *ctx, xmlErrorConstPtr error);
void Nokogiri_marshal_xpath_funcall_and_return_values(xmlXPathParserContextPtr ctx, int nargs, VALUE handler,
const char *function_name) ;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nokogiri/test_global_handlers.c new/ext/nokogiri/test_global_handlers.c
--- old/ext/nokogiri/test_global_handlers.c 2023-11-17 16:30:28.000000000 +0100
+++ new/ext/nokogiri/test_global_handlers.c 2024-06-13 15:30:08.000000000 +0200
@@ -3,7 +3,7 @@
static VALUE foreign_error_handler_block = Qnil;
static void
-foreign_error_handler(void *user_data, xmlErrorPtr c_error)
+foreign_error_handler(void *user_data, xmlErrorConstPtr c_error)
{
rb_funcall(foreign_error_handler_block, rb_intern("call"), 0);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nokogiri/xml_cdata.c new/ext/nokogiri/xml_cdata.c
--- old/ext/nokogiri/xml_cdata.c 2023-11-17 16:30:28.000000000 +0100
+++ new/ext/nokogiri/xml_cdata.c 2024-06-13 15:30:08.000000000 +0200
@@ -33,8 +33,7 @@
if (!rb_obj_is_kind_of(rb_document, cNokogiriXmlDocument)) {
xmlNodePtr deprecated_node_type_arg;
- // TODO: deprecate allowing Node
- NOKO_WARN_DEPRECATION("Passing a Node as the first parameter to CDATA.new is deprecated. Please pass a Document instead. This will become an error in a future release of Nokogiri.");
+ NOKO_WARN_DEPRECATION("Passing a Node as the first parameter to CDATA.new is deprecated. Please pass a Document instead. This will become an error in Nokogiri v1.17.0."); // TODO: deprecated in v1.15.3, remove in v1.17.0
Noko_Node_Get_Struct(rb_document, xmlNode, deprecated_node_type_arg);
c_document = deprecated_node_type_arg->doc;
} else {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nokogiri/xml_document.c new/ext/nokogiri/xml_document.c
--- old/ext/nokogiri/xml_document.c 2023-11-17 16:30:28.000000000 +0100
+++ new/ext/nokogiri/xml_document.c 2024-06-13 15:30:08.000000000 +0200
@@ -74,8 +74,10 @@
ruby_xfree(doc->_private);
+#if defined(__GNUC__) && __GNUC__ >= 5
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations" // xmlDeregisterNodeDefault is deprecated as of libxml2 2.11.0
+#endif
/*
* libxml-ruby < 3.0.0 uses xmlDeregisterNodeDefault. If the user is using one of those older
* versions, the registered callback from libxml-ruby will access the _private pointers set by
@@ -90,7 +92,9 @@
if (xmlDeregisterNodeDefaultValue) {
remove_private((xmlNodePtr)doc);
}
+#if defined(__GNUC__) && __GNUC__ >= 5
#pragma GCC diagnostic pop
+#endif
xmlFreeDoc(doc);
}
@@ -337,7 +341,7 @@
xmlSetStructuredErrorFunc(NULL, NULL);
if (doc == NULL) {
- xmlErrorPtr error;
+ xmlErrorConstPtr error;
xmlFreeDoc(doc);
@@ -383,7 +387,7 @@
xmlSetStructuredErrorFunc(NULL, NULL);
if (doc == NULL) {
- xmlErrorPtr error;
+ xmlErrorConstPtr error;
xmlFreeDoc(doc);
@@ -537,7 +541,7 @@
);
if (NULL == ptr) {
- xmlErrorPtr error = xmlGetLastError();
+ xmlErrorConstPtr error = xmlGetLastError();
if (error) {
rb_exc_raise(Nokogiri_wrap_xml_syntax_error(error));
} else {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nokogiri/xml_namespace.c new/ext/nokogiri/xml_namespace.c
--- old/ext/nokogiri/xml_namespace.c 2023-11-17 16:30:28.000000000 +0100
+++ new/ext/nokogiri/xml_namespace.c 2024-06-13 15:30:08.000000000 +0200
@@ -42,7 +42,6 @@
xmlFree(ns);
}
-#ifdef HAVE_RB_GC_LOCATION
static void
_xml_namespace_update_references(void *ptr)
{
@@ -51,9 +50,6 @@
ns->_private = (void *)rb_gc_location((VALUE)ns->_private);
}
}
-#else
-# define _xml_namespace_update_references 0
-#endif
static const rb_data_type_t nokogiri_xml_namespace_type_with_dealloc = {
.wrap_struct_name = "Nokogiri::XML::Namespace#with_dealloc",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nokogiri/xml_node.c new/ext/nokogiri/xml_node.c
--- old/ext/nokogiri/xml_node.c 2023-11-17 16:30:28.000000000 +0100
+++ new/ext/nokogiri/xml_node.c 2024-06-13 15:30:08.000000000 +0200
@@ -28,7 +28,6 @@
}
}
-#ifdef HAVE_RB_GC_LOCATION
static void
_xml_node_update_references(void *ptr)
{
@@ -38,9 +37,6 @@
node->_private = (void *)rb_gc_location((VALUE)node->_private);
}
}
-#else
-# define _xml_node_update_references 0
-#endif
static const rb_data_type_t nokogiri_node_type = {
.wrap_struct_name = "Nokogiri::XML::Node",
@@ -961,7 +957,7 @@
* - +new_parent_doc+
* The new node's parent Document. Defaults to the this node's document.
*
- * [Returns] The new Nokgiri::XML::Node
+ * [Returns] The new Nokogiri::XML::Node
*/
static VALUE
duplicate_node(int argc, VALUE *argv, VALUE self)
@@ -2058,8 +2054,7 @@
rb_raise(rb_eArgError, "document must be a Nokogiri::XML::Node");
}
if (!rb_obj_is_kind_of(rb_document_node, cNokogiriXmlDocument)) {
- // TODO: deprecate allowing Node
- NOKO_WARN_DEPRECATION("Passing a Node as the second parameter to Node.new is deprecated. Please pass a Document instead, or prefer an alternative constructor like Node#add_child. This will become an error in a future release of Nokogiri.");
+ NOKO_WARN_DEPRECATION("Passing a Node as the second parameter to Node.new is deprecated. Please pass a Document instead, or prefer an alternative constructor like Node#add_child. This will become an error in Nokogiri v1.17.0."); // TODO: deprecated in v1.13.0, remove in v1.17.0
}
Noko_Node_Get_Struct(rb_document_node, xmlNode, c_document_node);
@@ -2138,7 +2133,7 @@
xmlSetStructuredErrorFunc(NULL, NULL);
if (rcode < 0) {
- xmlErrorPtr error;
+ xmlErrorConstPtr error;
error = xmlGetLastError();
if (error) {
@@ -2174,6 +2169,8 @@
/* Twiddle global variable because of a bug in libxml2.
* http://git.gnome.org/browse/libxml2/commit/?id=e20fb5a72c83cbfc8e4a8aa3943c…
+ *
+ * TODO: this is fixed, and HTML_PARSE_NOIMPLIED is defined, in libxml2 2.7.7
*/
#ifndef HTML_PARSE_NOIMPLIED
htmlHandleOmittedElem(0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nokogiri/xml_reader.c new/ext/nokogiri/xml_reader.c
--- old/ext/nokogiri/xml_reader.c 2023-11-17 16:30:28.000000000 +0100
+++ new/ext/nokogiri/xml_reader.c 2024-06-13 15:30:08.000000000 +0200
@@ -5,8 +5,14 @@
static void
xml_reader_deallocate(void *data)
{
+ // free the document separately because we _may_ have triggered preservation by calling
+ // xmlTextReaderCurrentDoc during a read_more.
xmlTextReaderPtr reader = data;
+ xmlDocPtr doc = xmlTextReaderCurrentDoc(reader);
xmlFreeTextReader(reader);
+ if (doc) {
+ xmlFreeDoc(doc);
+ }
}
static const rb_data_type_t xml_reader_type = {
@@ -167,48 +173,6 @@
}
/*
- :call-seq: attribute_nodes() → Array<Nokogiri::XML::Attr>
-
- Get the attributes of the current node as an Array of XML:Attr
-
- ⚠ This method is deprecated and unsafe to use. It will be removed in a future version of Nokogiri.
-
- See related: #attribute_hash, #attributes
- */
-static VALUE
-rb_xml_reader_attribute_nodes(VALUE rb_reader)
-{
- xmlTextReaderPtr c_reader;
- xmlNodePtr c_node;
- VALUE attr_nodes;
- int j;
-
- // TODO: deprecated, remove in Nokogiri v1.15, see https://github.com/sparklemotion/nokogiri/issues/2598
- // After removal, we can also remove all the "node_has_a_document" special handling from xml_node.c
- NOKO_WARN_DEPRECATION("Reader#attribute_nodes is deprecated and will be removed in a future version of Nokogiri. Please use Reader#attribute_hash instead.");
-
- TypedData_Get_Struct(rb_reader, xmlTextReader, &xml_reader_type, c_reader);
-
- if (! has_attributes(c_reader)) {
- return rb_ary_new() ;
- }
-
- c_node = xmlTextReaderExpand(c_reader);
- if (c_node == NULL) {
- return Qnil;
- }
-
- attr_nodes = noko_xml_node_attrs(c_node);
-
- /* ensure that the Reader won't be GCed as long as a node is referenced */
- for (j = 0 ; j < RARRAY_LEN(attr_nodes) ; j++) {
- rb_iv_set(rb_ary_entry(attr_nodes, j), "@reader", rb_reader);
- }
-
- return attr_nodes;
-}
-
-/*
:call-seq: attribute_hash() → Hash<String ⇒ String>
Get the attributes of the current node as a Hash of names and values.
@@ -554,9 +518,10 @@
read_more(VALUE self)
{
xmlTextReaderPtr reader;
- xmlErrorPtr error;
+ xmlErrorConstPtr error;
VALUE error_list;
int ret;
+ xmlDocPtr c_document;
TypedData_Get_Struct(self, xmlTextReader, &xml_reader_type, reader);
@@ -566,6 +531,17 @@
ret = xmlTextReaderRead(reader);
xmlSetStructuredErrorFunc(NULL, NULL);
+ c_document = xmlTextReaderCurrentDoc(reader);
+ if (c_document && c_document->encoding == NULL) {
+ VALUE constructor_encoding = rb_iv_get(self, "@encoding");
+ if (RTEST(constructor_encoding)) {
+ c_document->encoding = xmlStrdup(BAD_CAST StringValueCStr(constructor_encoding));
+ } else {
+ rb_iv_set(self, "@encoding", NOKOGIRI_STR_NEW2("UTF-8"));
+ c_document->encoding = xmlStrdup(BAD_CAST "UTF-8");
+ }
+ }
+
if (ret == 1) { return self; }
if (ret == 0) { return Qnil; }
@@ -749,15 +725,18 @@
const char *parser_encoding;
VALUE constructor_encoding;
+ TypedData_Get_Struct(rb_reader, xmlTextReader, &xml_reader_type, c_reader);
+ parser_encoding = (const char *)xmlTextReaderConstEncoding(c_reader);
+ if (parser_encoding) {
+ return NOKOGIRI_STR_NEW2(parser_encoding);
+ }
+
constructor_encoding = rb_iv_get(rb_reader, "@encoding");
if (RTEST(constructor_encoding)) {
return constructor_encoding;
}
- TypedData_Get_Struct(rb_reader, xmlTextReader, &xml_reader_type, c_reader);
- parser_encoding = (const char *)xmlTextReaderConstEncoding(c_reader);
- if (parser_encoding == NULL) { return Qnil; }
- return NOKOGIRI_STR_NEW2(parser_encoding);
+ return Qnil;
}
void
@@ -778,7 +757,6 @@
rb_define_method(cNokogiriXmlReader, "attribute", reader_attribute, 1);
rb_define_method(cNokogiriXmlReader, "attribute_at", attribute_at, 1);
rb_define_method(cNokogiriXmlReader, "attribute_count", attribute_count, 0);
- rb_define_method(cNokogiriXmlReader, "attribute_nodes", rb_xml_reader_attribute_nodes, 0);
rb_define_method(cNokogiriXmlReader, "attribute_hash", rb_xml_reader_attribute_hash, 0);
rb_define_method(cNokogiriXmlReader, "attributes?", attributes_eh, 0);
rb_define_method(cNokogiriXmlReader, "base_uri", rb_xml_reader_base_uri, 0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nokogiri/xml_relax_ng.c new/ext/nokogiri/xml_relax_ng.c
--- old/ext/nokogiri/xml_relax_ng.c 2023-11-17 16:30:28.000000000 +0100
+++ new/ext/nokogiri/xml_relax_ng.c 2024-06-13 15:30:08.000000000 +0200
@@ -93,7 +93,7 @@
xmlRelaxNGFreeParserCtxt(c_parser_context);
if (NULL == c_schema) {
- xmlErrorPtr error = xmlGetLastError();
+ xmlErrorConstPtr error = xmlGetLastError();
if (error) {
Nokogiri_error_raise(NULL, error);
} else {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nokogiri/xml_sax_parser_context.c new/ext/nokogiri/xml_sax_parser_context.c
--- old/ext/nokogiri/xml_sax_parser_context.c 2023-11-17 16:30:28.000000000 +0100
+++ new/ext/nokogiri/xml_sax_parser_context.c 2024-06-13 15:30:08.000000000 +0200
@@ -59,6 +59,10 @@
(xmlInputReadCallback)noko_io_read,
(xmlInputCloseCallback)noko_io_close,
(void *)io, enc);
+ if (!ctxt) {
+ rb_raise(rb_eRuntimeError, "failed to create xml sax parser context");
+ }
+
if (ctxt->sax) {
xmlFree(ctxt->sax);
ctxt->sax = NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nokogiri/xml_sax_push_parser.c new/ext/nokogiri/xml_sax_push_parser.c
--- old/ext/nokogiri/xml_sax_push_parser.c 2023-11-17 16:30:28.000000000 +0100
+++ new/ext/nokogiri/xml_sax_push_parser.c 2024-06-13 15:30:08.000000000 +0200
@@ -59,7 +59,7 @@
if (xmlParseChunk(ctx, chunk, size, Qtrue == _last_chunk ? 1 : 0)) {
if (!(ctx->options & XML_PARSE_RECOVER)) {
- xmlErrorPtr e = xmlCtxtGetLastError(ctx);
+ xmlErrorConstPtr e = xmlCtxtGetLastError(ctx);
Nokogiri_error_raise(NULL, e);
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nokogiri/xml_schema.c new/ext/nokogiri/xml_schema.c
--- old/ext/nokogiri/xml_schema.c 2023-11-17 16:30:28.000000000 +0100
+++ new/ext/nokogiri/xml_schema.c 2024-06-13 15:30:08.000000000 +0200
@@ -146,7 +146,7 @@
xmlSchemaFreeParserCtxt(c_parser_context);
if (NULL == c_schema) {
- xmlErrorPtr error = xmlGetLastError();
+ xmlErrorConstPtr error = xmlGetLastError();
if (error) {
Nokogiri_error_raise(NULL, error);
} else {
@@ -222,8 +222,7 @@
if (!rb_obj_is_kind_of(rb_document, cNokogiriXmlDocument)) {
xmlNodePtr deprecated_node_type_arg;
- // TODO: deprecate allowing Node
- NOKO_WARN_DEPRECATION("Passing a Node as the first parameter to Schema.from_document is deprecated. Please pass a Document instead. This will become an error in a future release of Nokogiri.");
+ NOKO_WARN_DEPRECATION("Passing a Node as the first parameter to Schema.from_document is deprecated. Please pass a Document instead. This will become an error in Nokogiri v1.17.0."); // TODO: deprecated in v1.15.3, remove in v1.17.0
Noko_Node_Get_Struct(rb_document, xmlNode, deprecated_node_type_arg);
c_document = deprecated_node_type_arg->doc;
} else {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nokogiri/xml_syntax_error.c new/ext/nokogiri/xml_syntax_error.c
--- old/ext/nokogiri/xml_syntax_error.c 2023-11-17 16:30:28.000000000 +0100
+++ new/ext/nokogiri/xml_syntax_error.c 2024-06-13 15:30:08.000000000 +0200
@@ -26,7 +26,7 @@
}
void
-Nokogiri_error_array_pusher(void *ctx, xmlErrorPtr error)
+Nokogiri_error_array_pusher(void *ctx, xmlErrorConstPtr error)
{
VALUE list = (VALUE)ctx;
Check_Type(list, T_ARRAY);
@@ -34,13 +34,13 @@
}
void
-Nokogiri_error_raise(void *ctx, xmlErrorPtr error)
+Nokogiri_error_raise(void *ctx, xmlErrorConstPtr error)
{
rb_exc_raise(Nokogiri_wrap_xml_syntax_error(error));
}
VALUE
-Nokogiri_wrap_xml_syntax_error(xmlErrorPtr error)
+Nokogiri_wrap_xml_syntax_error(xmlErrorConstPtr error)
{
VALUE msg, e, klass;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nokogiri/xml_text.c new/ext/nokogiri/xml_text.c
--- old/ext/nokogiri/xml_text.c 2023-11-17 16:30:28.000000000 +0100
+++ new/ext/nokogiri/xml_text.c 2024-06-13 15:30:08.000000000 +0200
@@ -28,8 +28,7 @@
if (!rb_obj_is_kind_of(rb_document, cNokogiriXmlDocument)) {
xmlNodePtr deprecated_node_type_arg;
- // TODO: deprecate allowing Node
- NOKO_WARN_DEPRECATION("Passing a Node as the second parameter to Text.new is deprecated. Please pass a Document instead. This will become an error in a future release of Nokogiri.");
+ NOKO_WARN_DEPRECATION("Passing a Node as the second parameter to Text.new is deprecated. Please pass a Document instead. This will become an error in Nokogiri v1.17.0."); // TODO: deprecated in v1.15.3, remove in v1.17.0
Noko_Node_Get_Struct(rb_document, xmlNode, deprecated_node_type_arg);
c_document = deprecated_node_type_arg->doc;
} else {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nokogiri/xml_xpath_context.c new/ext/nokogiri/xml_xpath_context.c
--- old/ext/nokogiri/xml_xpath_context.c 2023-11-17 16:30:28.000000000 +0100
+++ new/ext/nokogiri/xml_xpath_context.c 2024-06-13 15:30:08.000000000 +0200
@@ -321,11 +321,8 @@
VALUE rb_handler = (VALUE)data;
if (rb_respond_to(rb_handler, rb_intern((const char *)c_name))) {
if (c_ns_uri == NULL) {
- NOKO_WARN_DEPRECATION(
- "A custom XPath or CSS handler function named '%s' is being invoked without a namespace."
- " Please update your query to reference this function as 'nokogiri:%s'."
- " Invoking custom handler functions without a namespace is deprecated and support will be removed in a future release of Nokogiri.",
- c_name, c_name);
+ NOKO_WARN_DEPRECATION("A custom XPath or CSS handler function named '%s' is being invoked without a namespace. Please update your query to reference this function as 'nokogiri:%s'. Invoking custom handler functions without a namespace is deprecated and will become an error in Nokogiri v1.17.0.",
+ c_name, c_name); // deprecated in v1.15.0, remove in v1.17.0
}
return method_caller;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ext/nokogiri/xslt_stylesheet.c new/ext/nokogiri/xslt_stylesheet.c
--- old/ext/nokogiri/xslt_stylesheet.c 2023-11-17 16:30:28.000000000 +0100
+++ new/ext/nokogiri/xslt_stylesheet.c 2024-06-13 15:30:08.000000000 +0200
@@ -71,7 +71,12 @@
* call-seq:
* parse_stylesheet_doc(document)
*
- * Parse a stylesheet from +document+.
+ * Parse an XSLT::Stylesheet from +document+.
+ *
+ * [Parameters]
+ * - +document+ (Nokogiri::XML::Document) the document to be parsed.
+ *
+ * [Returns] Nokogiri::XSLT::Stylesheet
*/
static VALUE
parse_stylesheet_doc(VALUE klass, VALUE xmldocobj)
@@ -104,7 +109,7 @@
* call-seq:
* serialize(document)
*
- * Serialize +document+ to an xml string.
+ * Serialize +document+ to an xml string, as specified by the +method+ parameter in the Stylesheet.
*/
static VALUE
rb_xslt_stylesheet_serialize(VALUE self, VALUE xmlobj)
@@ -133,7 +138,7 @@
* transform(document)
* transform(document, params = {})
*
- * Apply an XSLT stylesheet to an XML::Document.
+ * Transform an XML::Document as defined by an XSLT::Stylesheet.
*
* [Parameters]
* - +document+ (Nokogiri::XML::Document) the document to be transformed.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gumbo-parser/Makefile new/gumbo-parser/Makefile
--- old/gumbo-parser/Makefile 2023-11-17 16:30:28.000000000 +0100
+++ new/gumbo-parser/Makefile 2024-06-13 15:30:08.000000000 +0200
@@ -13,6 +13,23 @@
all: check
+oss-fuzz:
+ ./fuzzer/build-ossfuzz.sh
+
+fuzzers: fuzzer-normal fuzzer-asan fuzzer-ubsan fuzzer-msan
+
+fuzzer-normal:
+ ./fuzzer/build.sh
+
+fuzzer-asan:
+ SANITIZER=asan ./fuzzer/build.sh
+
+fuzzer-ubsan:
+ SANITIZER=ubsan ./fuzzer/build.sh
+
+fuzzer-msan:
+ SANITIZER=msan ./fuzzer/build.sh
+
# don't try to regenerate ragel or gperf files in CI, that should be a development-only action and
# the generated files should be committed to SCM
ifneq ($(CI),true)
@@ -81,6 +98,7 @@
clean:
$(RM) -r build
+ $(RM) -r fuzzer/build fuzzer/src-* fuzzer/gumbo_corpus
build/src/flags: | build/src
@echo 'old_CC := $(CC)' > $@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gumbo-parser/src/parser.c new/gumbo-parser/src/parser.c
--- old/gumbo-parser/src/parser.c 2023-11-17 16:30:28.000000000 +0100
+++ new/gumbo-parser/src/parser.c 2024-06-13 15:30:08.000000000 +0200
@@ -4826,14 +4826,17 @@
// to a token.
if (token.type == GUMBO_TOKEN_END_TAG &&
token.v.end_tag.tag == GUMBO_TAG_UNKNOWN)
+ {
gumbo_free(token.v.end_tag.name);
+ token.v.end_tag.name = NULL;
+ }
+ if (unlikely(state->_open_elements.length > max_tree_depth)) {
+ parser._output->status = GUMBO_STATUS_TREE_TOO_DEEP;
+ gumbo_debug("Tree depth limit exceeded.\n");
+ break;
+ }
}
- if (unlikely(state->_open_elements.length > max_tree_depth)) {
- parser._output->status = GUMBO_STATUS_TREE_TOO_DEEP;
- gumbo_debug("Tree depth limit exceeded.\n");
- break;
- }
++loop_count;
assert(loop_count < 1000000000UL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gumbo-parser/src/tokenizer.c new/gumbo-parser/src/tokenizer.c
--- old/gumbo-parser/src/tokenizer.c 2023-11-17 16:30:28.000000000 +0100
+++ new/gumbo-parser/src/tokenizer.c 2024-06-13 15:30:08.000000000 +0200
@@ -506,6 +506,7 @@
for (unsigned int i = 0; i < tag_state->_attributes.length; ++i) {
gumbo_destroy_attribute(tag_state->_attributes.data[i]);
}
+ gumbo_free(tag_state->_name);
gumbo_free(tag_state->_attributes.data);
mark_tag_state_as_empty(tag_state);
gumbo_string_buffer_destroy(&tag_state->_buffer);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/css/parser_extras.rb new/lib/nokogiri/css/parser_extras.rb
--- old/lib/nokogiri/css/parser_extras.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/css/parser_extras.rb 2024-06-13 15:30:08.000000000 +0200
@@ -23,7 +23,7 @@
# Get the css selector in +string+ from the cache
def [](string)
- return nil unless cache_on?
+ return unless cache_on?
@mutex.synchronize { @cache[string] }
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/css/xpath_visitor.rb new/lib/nokogiri/css/xpath_visitor.rb
--- old/lib/nokogiri/css/xpath_visitor.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/css/xpath_visitor.rb 2024-06-13 15:30:08.000000000 +0200
@@ -302,7 +302,7 @@
end
def read_a_and_positive_b(values)
- op = values[2]
+ op = values[2].strip
if op == "+"
a = values[0].to_i
b = values[3].to_i
@@ -335,25 +335,5 @@
end
end
end
-
- module XPathVisitorAlwaysUseBuiltins # :nodoc:
- def self.new
- warn(
- "Nokogiri::CSS::XPathVisitorAlwaysUseBuiltins is deprecated and will be removed in a future version of Nokogiri",
- { uplevel: 1 },
- )
- XPathVisitor.new(builtins: :always)
- end
- end
-
- module XPathVisitorOptimallyUseBuiltins # :nodoc:
- def self.new
- warn(
- "Nokogiri::CSS::XPathVisitorOptimallyUseBuiltins is deprecated and will be removed in a future version of Nokogiri",
- { uplevel: 1 },
- )
- XPathVisitor.new(builtins: :optimal)
- end
- end
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/html4/document.rb new/lib/nokogiri/html4/document.rb
--- old/lib/nokogiri/html4/document.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/html4/document.rb 2024-06-13 15:30:08.000000000 +0200
@@ -92,7 +92,7 @@
title = XML::Node.new("title", self) << tnode
if (head = at_xpath("//head"))
head << title
- elsif (meta = (at_xpath("//meta[@charset]") || meta_content_type))
+ elsif (meta = at_xpath("//meta[@charset]") || meta_content_type)
# better put after charset declaration
meta.add_next_sibling(title)
else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/html4/encoding_reader.rb new/lib/nokogiri/html4/encoding_reader.rb
--- old/lib/nokogiri/html4/encoding_reader.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/html4/encoding_reader.rb 2024-06-13 15:30:08.000000000 +0200
@@ -94,7 +94,7 @@
# no support for a call without len
unless @firstchunk
- (@firstchunk = @io.read(len)) || (return nil)
+ (@firstchunk = @io.read(len)) || return
# This implementation expects that the first call from
# htmlReadIO() is made with a length long enough (~1KB) to
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/html5.rb new/lib/nokogiri/html5.rb
--- old/lib/nokogiri/html5.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/html5.rb 2024-06-13 15:30:08.000000000 +0200
@@ -239,23 +239,6 @@
DocumentFragment.parse(string, encoding, options)
end
- # Fetch and parse a HTML document from the web, following redirects,
- # handling https, and determining the character encoding using HTML5
- # rules. +uri+ may be a +String+ or a +URI+. +options+ contains
- # http headers and special options. Everything which is not a
- # special option is considered a header. Special options include:
- # * :follow_limit => number of redirects which are followed
- # * :basic_auth => [username, password]
- def get(uri, options = {})
- # TODO: deprecate
- warn(
- "Nokogiri::HTML5.get is deprecated and will be removed in a future version of Nokogiri.",
- uplevel: 1,
- category: :deprecated,
- )
- get_impl(uri, options)
- end
-
# :nodoc:
def read_and_encode(string, encoding)
# Read the string with the given encoding.
@@ -283,55 +266,6 @@
private
- def get_impl(uri, options = {})
- headers = options.clone
- headers = { follow_limit: headers } if Numeric === headers # deprecated
- limit = headers[:follow_limit] ? headers.delete(:follow_limit).to_i : 10
-
- require "net/http"
- uri = URI(uri) unless URI === uri
-
- http = Net::HTTP.new(uri.host, uri.port)
-
- # TLS / SSL support
- http.use_ssl = true if uri.scheme == "https"
-
- # Pass through Net::HTTP override values, which currently include:
- # :ca_file, :ca_path, :cert, :cert_store, :ciphers,
- # :close_on_empty_response, :continue_timeout, :key, :open_timeout,
- # :read_timeout, :ssl_timeout, :ssl_version, :use_ssl,
- # :verify_callback, :verify_depth, :verify_mode
- options.each do |key, _value|
- http.send("#{key}=", headers.delete(key)) if http.respond_to?("#{key}=")
- end
-
- request = Net::HTTP::Get.new(uri.request_uri)
-
- # basic authentication
- auth = headers.delete(:basic_auth)
- auth ||= [uri.user, uri.password] if uri.user && uri.password
- request.basic_auth(auth.first, auth.last) if auth
-
- # remaining options are treated as headers
- headers.each { |key, value| request[key.to_s] = value.to_s }
-
- response = http.request(request)
-
- case response
- when Net::HTTPSuccess
- doc = parse(reencode(response.body, response["content-type"]), options)
- doc.instance_variable_set(:@response, response)
- doc.class.send(:attr_reader, :response)
- doc
- when Net::HTTPRedirection
- response.value if limit <= 1
- location = URI.join(uri, response["location"])
- get_impl(location, options.merge(follow_limit: limit - 1))
- else
- response.value
- end
- end
-
# Charset sniffing is a complex and controversial topic that understandably isn't done _by
# default_ by the Ruby Net::HTTP library. This being said, it is a very real problem for
# consumers of HTML as the default for HTML is iso-8859-1, most "good" producers use utf-8, and
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/version/constant.rb new/lib/nokogiri/version/constant.rb
--- old/lib/nokogiri/version/constant.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/version/constant.rb 2024-06-13 15:30:08.000000000 +0200
@@ -2,5 +2,5 @@
module Nokogiri
# The version of Nokogiri you are using
- VERSION = "1.15.5"
+ VERSION = "1.16.6"
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/version/info.rb new/lib/nokogiri/version/info.rb
--- old/lib/nokogiri/version/info.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/version/info.rb 2024-06-13 15:30:08.000000000 +0200
@@ -94,11 +94,14 @@
nokogiri["version"] = Nokogiri::VERSION
unless jruby?
- # enable gems like nokogumbo to build with the following in their extconf.rb:
+ # enable gems to build against Nokogiri with the following in their extconf.rb:
#
# append_cflags(Nokogiri::VERSION_INFO["nokogiri"]["cppflags"])
# append_ldflags(Nokogiri::VERSION_INFO["nokogiri"]["ldflags"])
#
+ # though, this won't work on all platform and versions of Ruby, and won't be supported
+ # forever, see https://github.com/sparklemotion/nokogiri/discussions/2746 for context.
+ #
cppflags = ["-I#{header_directory.shellescape}"]
ldflags = []
@@ -108,7 +111,8 @@
end
if windows?
- # on windows, nokogumbo needs to link against nokogiri.so to resolve symbols. see #2167
+ # on windows, third party libraries that wish to link against nokogiri
+ # should link against nokogiri.so to resolve symbols. see #2167
lib_directory = File.expand_path(File.join(File.dirname(__FILE__), "../#{ruby_minor}"))
unless File.exist?(lib_directory)
lib_directory = File.expand_path(File.join(File.dirname(__FILE__), ".."))
@@ -136,9 +140,6 @@
libxml["source"] = "packaged"
libxml["precompiled"] = libxml2_precompiled?
libxml["patches"] = Nokogiri::LIBXML2_PATCHES
-
- # this is for nokogumbo and shouldn't be forever
- libxml["libxml2_path"] = header_directory
else
libxml["source"] = "system"
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/xml/attr.rb new/lib/nokogiri/xml/attr.rb
--- old/lib/nokogiri/xml/attr.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/xml/attr.rb 2024-06-13 15:30:08.000000000 +0200
@@ -18,8 +18,6 @@
# - +value+ → (String) The value of the attribute.
# - +namespace+ → (Namespace, nil) The Namespace of the attribute, or +nil+ if there is no namespace.
#
- # ⚡ This is an experimental feature, available since v1.14.0
- #
# *Example*
#
# doc = Nokogiri::XML.parse(<<~XML)
@@ -52,6 +50,8 @@
# # href = "http://nokogiri.org/ns/noko"
# # })}
#
+ # Since v1.14.0
+ #
def deconstruct_keys(keys)
{ name: name, value: value, namespace: namespace }
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/xml/document.rb new/lib/nokogiri/xml/document.rb
--- old/lib/nokogiri/xml/document.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/xml/document.rb 2024-06-13 15:30:08.000000000 +0200
@@ -329,7 +329,7 @@
# Validate this Document against it's DTD. Returns a list of errors on
# the document or +nil+ when there is no DTD.
def validate
- return nil unless internal_subset
+ return unless internal_subset
internal_subset.validate(self)
end
@@ -426,8 +426,6 @@
# instructions. If you have a use case and would like this functionality, please let us know
# by opening an issue or a discussion on the github project.
#
- # ⚡ This is an experimental feature, available since v1.14.0
- #
# *Example*
#
# doc = Nokogiri::XML.parse(<<~XML)
@@ -454,6 +452,8 @@
# doc.deconstruct_keys([:root])
# # => {:root=>nil}
#
+ # Since v1.14.0
+ #
def deconstruct_keys(keys)
{ root: root }
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/xml/document_fragment.rb new/lib/nokogiri/xml/document_fragment.rb
--- old/lib/nokogiri/xml/document_fragment.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/xml/document_fragment.rb 2024-06-13 15:30:08.000000000 +0200
@@ -154,8 +154,6 @@
# root elements, you should deconstruct the array returned by
# <tt>DocumentFragment#elements</tt>.
#
- # ⚡ This is an experimental feature, available since v1.14.0
- #
# *Example*
#
# frag = Nokogiri::HTML5.fragment(<<~HTML)
@@ -187,6 +185,8 @@
# # }),
# # #(Element:0x398 { name = "div", children = [ #(Text "End")] })]
#
+ # Since v1.14.0
+ #
def deconstruct
children.to_a
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/xml/namespace.rb new/lib/nokogiri/xml/namespace.rb
--- old/lib/nokogiri/xml/namespace.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/xml/namespace.rb 2024-06-13 15:30:08.000000000 +0200
@@ -16,8 +16,6 @@
# - +prefix+ → (String, nil) The namespace's prefix, or +nil+ if there is no prefix (e.g., default namespace).
# - +href+ → (String) The namespace's URI
#
- # ⚡ This is an experimental feature, available since v1.14.0
- #
# *Example*
#
# doc = Nokogiri::XML.parse(<<~XML)
@@ -43,6 +41,7 @@
# doc.root.elements.last.namespace.deconstruct_keys([:prefix, :href])
# # => {:prefix=>"noko", :href=>"http://nokogiri.org/ns/noko"}
#
+ # Since v1.14.0
#
def deconstruct_keys(keys)
{ prefix: prefix, href: href }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/xml/node.rb new/lib/nokogiri/xml/node.rb
--- old/lib/nokogiri/xml/node.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/xml/node.rb 2024-06-13 15:30:08.000000000 +0200
@@ -1049,29 +1049,35 @@
return Nokogiri::XML::NodeSet.new(document) if contents.empty?
- # libxml2 does not obey the +recover+ option after encountering errors during +in_context+
- # parsing, and so this horrible hack is here to try to emulate recovery behavior.
- #
- # Unfortunately, this means we're no longer parsing "in context" and so namespaces that
- # would have been inherited from the context node won't be handled correctly. This hack was
- # written in 2010, and I regret it, because it's silently degrading functionality in a way
- # that's not easily prevented (or even detected).
- #
- # I think preferable behavior would be to either:
- #
- # a. add an error noting that we "fell back" and pointing the user to turning off the +recover+ option
- # b. don't recover, but raise a sensible exception
- #
- # For context and background: https://github.com/sparklemotion/nokogiri/issues/313
- # FIXME bug report: https://github.com/sparklemotion/nokogiri/issues/2092
error_count = document.errors.length
node_set = in_context(contents, options.to_i)
- if node_set.empty? && (document.errors.length > error_count)
- if options.recover?
+ if document.errors.length > error_count
+ raise document.errors[error_count] unless options.recover?
+
+ if node_set.empty?
+ # libxml2 < 2.13 does not obey the +recover+ option after encountering errors during
+ # +in_context+ parsing, and so this horrible hack is here to try to emulate recovery
+ # behavior.
+ #
+ # (Note that HTML4 fragment parsing seems to have been fixed in abd74186, and XML
+ # fragment parsing is fixed in 1c106edf. Both are in 2.13.)
+ #
+ # Unfortunately, this means we're no longer parsing "in context" and so namespaces that
+ # would have been inherited from the context node won't be handled correctly. This hack
+ # was written in 2010, and I regret it, because it's silently degrading functionality in
+ # a way that's not easily prevented (or even detected).
+ #
+ # I think preferable behavior would be to either:
+ #
+ # a. add an error noting that we "fell back" and pointing the user to turning off the
+ # +recover+ option
+ # b. don't recover, but raise a sensible exception
+ #
+ # For context and background:
+ # - https://github.com/sparklemotion/nokogiri/issues/313
+ # - https://github.com/sparklemotion/nokogiri/issues/2092
fragment = document.related_class("DocumentFragment").parse(contents)
node_set = fragment.children
- else
- raise document.errors[error_count]
end
end
node_set
@@ -1165,7 +1171,7 @@
# Fetch the Nokogiri::HTML4::ElementDescription for this node. Returns
# nil on XML documents and on unknown tags.
def description
- return nil if document.xml?
+ return if document.xml?
Nokogiri::HTML4::ElementDescription[name]
end
@@ -1254,8 +1260,8 @@
# Compare two Node objects with respect to their Document. Nodes from
# different documents cannot be compared.
def <=>(other)
- return nil unless other.is_a?(Nokogiri::XML::Node)
- return nil unless document == other.document
+ return unless other.is_a?(Nokogiri::XML::Node)
+ return unless document == other.document
compare(other)
end
@@ -1278,6 +1284,7 @@
# end
#
def serialize(*args, &block)
+ # TODO: deprecate non-hash options, see 46c68ed 2009-06-20 for context
options = if args.first.is_a?(Hash)
args.shift
else
@@ -1429,8 +1436,6 @@
# - +content+ → (String) The contents of all the text nodes in this node's subtree. See #content.
# - +inner_html+ → (String) The inner markup for the children of this node. See #inner_html.
#
- # ⚡ This is an experimental feature, available since v1.14.0
- #
# *Example*
#
# doc = Nokogiri::XML.parse(<<~XML)
@@ -1465,6 +1470,8 @@
# # value = "def"
# # })]}
#
+ # Since v1.14.0
+ #
def deconstruct_keys(keys)
requested_keys = DECONSTRUCT_KEYS & keys
{}.tap do |values|
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/xml/node_set.rb new/lib/nokogiri/xml/node_set.rb
--- old/lib/nokogiri/xml/node_set.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/xml/node_set.rb 2024-06-13 15:30:08.000000000 +0200
@@ -372,7 +372,7 @@
# Removes the last element from set and returns it, or +nil+ if
# the set is empty
def pop
- return nil if length == 0
+ return if length == 0
delete(last)
end
@@ -381,7 +381,7 @@
# Returns the first element of the NodeSet and removes it. Returns
# +nil+ if the set is empty.
def shift
- return nil if length == 0
+ return if length == 0
delete(first)
end
@@ -435,7 +435,7 @@
#
# Returns the members of this NodeSet as an array, to use in pattern matching.
#
- # ⚡ This is an experimental feature, available since v1.14.0
+ # Since v1.14.0
#
def deconstruct
to_a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/xml/reader.rb new/lib/nokogiri/xml/reader.rb
--- old/lib/nokogiri/xml/reader.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/xml/reader.rb 2024-06-13 15:30:08.000000000 +0200
@@ -3,9 +3,11 @@
module Nokogiri
module XML
###
- # Nokogiri::XML::Reader parses an XML document similar to the way a cursor
- # would move. The Reader is given an XML document, and yields nodes
- # to an each block.
+ # Nokogiri::XML::Reader parses an XML document similar to the way a cursor would move. The
+ # Reader is given an XML document, and yields nodes to an each block.
+ #
+ # The Reader parser might be good for when you need the speed and low memory usage of the SAX
+ # parser, but do not want to write a Document handler.
#
# Here is an example of usage:
#
@@ -22,13 +24,12 @@
#
# end
#
- # Note that Nokogiri::XML::Reader#each can only be called once!! Once
- # the cursor moves through the entire document, you must parse the
- # document again. So make sure that you capture any information you
- # need during the first iteration.
+ # ⚠ Nokogiri::XML::Reader#each can only be called once! Once the cursor moves through the entire
+ # document, you must parse the document again. It may be better to capture all information you
+ # need during a single iteration.
#
- # The Reader parser is good for when you need the speed of a SAX parser,
- # but do not want to write a Document handler.
+ # ⚠ libxml2 does not support error recovery in the Reader parser. The `RECOVER` ParseOption is
+ # ignored. If a syntax error is encountered during parsing, an exception will be raised.
class Reader
include Enumerable
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/xml/searchable.rb new/lib/nokogiri/xml/searchable.rb
--- old/lib/nokogiri/xml/searchable.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/xml/searchable.rb 2024-06-13 15:30:08.000000000 +0200
@@ -199,7 +199,7 @@
#
# Search this node's immediate children using CSS selector +selector+
def >(selector) # rubocop:disable Naming/BinaryOperatorParameterName
- ns = (document.root&.namespaces || {})
+ ns = document.root&.namespaces || {}
xpath(CSS.xpath_for(selector, prefix: "./", ns: ns).first)
end
@@ -229,7 +229,7 @@
def xpath_impl(node, path, handler, ns, binds)
ctx = XPathContext.new(node)
ctx.register_namespaces(ns)
- path = path.gsub(/xmlns:/, " :") unless Nokogiri.uses_libxml?
+ path = path.gsub("xmlns:", " :") unless Nokogiri.uses_libxml?
binds&.each do |key, value|
ctx.register_variable(key.to_s, value)
@@ -269,7 +269,7 @@
end
ns, binds = hashes.reverse
- ns ||= (document.root&.namespaces || {})
+ ns ||= document.root&.namespaces || {}
[params, handler, ns, binds]
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/xml/syntax_error.rb new/lib/nokogiri/xml/syntax_error.rb
--- old/lib/nokogiri/xml/syntax_error.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/xml/syntax_error.rb 2024-06-13 15:30:08.000000000 +0200
@@ -63,7 +63,7 @@
end
def location_to_s
- return nil if nil_or_zero?(line) && nil_or_zero?(column)
+ return if nil_or_zero?(line) && nil_or_zero?(column)
"#{line}:#{column}"
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/xml.rb new/lib/nokogiri/xml.rb
--- old/lib/nokogiri/xml.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/xml.rb 2024-06-13 15:30:08.000000000 +0200
@@ -11,7 +11,7 @@
module XML
# Original C14N 1.0 spec canonicalization
- XML_C14N_1_0 = 0
+ XML_C14N_1_0 = 0
# Exclusive C14N 1.0 spec canonicalization
XML_C14N_EXCLUSIVE_1_0 = 1
# C14N 1.1 spec canonicalization
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/xslt/stylesheet.rb new/lib/nokogiri/xslt/stylesheet.rb
--- old/lib/nokogiri/xslt/stylesheet.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/xslt/stylesheet.rb 2024-06-13 15:30:08.000000000 +0200
@@ -10,15 +10,37 @@
# doc = Nokogiri::XML(File.read('some_file.xml'))
# xslt = Nokogiri::XSLT(File.read('some_transformer.xslt'))
#
- # puts xslt.transform(doc)
+ # xslt.transform(doc) # => Nokogiri::XML::Document
#
- # See Nokogiri::XSLT::Stylesheet#transform for more transformation
- # information.
+ # Many XSLT transformations include serialization behavior to emit a non-XML document. For these
+ # cases, please take care to invoke the #serialize method on the result of the transformation:
+ #
+ # doc = Nokogiri::XML(File.read('some_file.xml'))
+ # xslt = Nokogiri::XSLT(File.read('some_transformer.xslt'))
+ # xslt.serialize(xslt.transform(doc)) # => String
+ #
+ # or use the #apply_to method, which is a shortcut for `serialize(transform(document))`:
+ #
+ # doc = Nokogiri::XML(File.read('some_file.xml'))
+ # xslt = Nokogiri::XSLT(File.read('some_transformer.xslt'))
+ # xslt.apply_to(doc) # => String
+ #
+ # See Nokogiri::XSLT::Stylesheet#transform for more information and examples.
class Stylesheet
- ###
- # Apply an XSLT stylesheet to an XML::Document.
- # +params+ is an array of strings used as XSLT parameters.
- # returns serialized document
+ # :call-seq:
+ # apply_to(document, params = []) -> String
+ #
+ # Apply an XSLT stylesheet to an XML::Document and serialize it properly. This method is
+ # equivalent to calling #serialize on the result of #transform.
+ #
+ # [Parameters]
+ # - +document+ is an instance of XML::Document to transform
+ # - +params+ is an array of strings used as XSLT parameters, passed into #transform
+ #
+ # [Returns]
+ # A string containing the serialized result of the transformation.
+ #
+ # See Nokogiri::XSLT::Stylesheet#transform for more information and examples.
def apply_to(document, params = [])
serialize(transform(document, params))
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri/xslt.rb new/lib/nokogiri/xslt.rb
--- old/lib/nokogiri/xslt.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri/xslt.rb 2024-06-13 15:30:08.000000000 +0200
@@ -101,7 +101,7 @@
params.flatten.each_slice(2).with_object([]) do |kv, quoted_params|
key, value = kv.map(&:to_s)
value = if value.include?("'")
- "concat('#{value.gsub(/'/, %q{', "'", '})}')"
+ "concat('#{value.gsub("'", %q{', "'", '})}')"
else
"'#{value}'"
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/nokogiri.rb new/lib/nokogiri.rb
--- old/lib/nokogiri.rb 2023-11-17 16:30:28.000000000 +0100
+++ new/lib/nokogiri.rb 2024-06-13 15:30:08.000000000 +0200
@@ -94,7 +94,7 @@
# :nodoc:
def install_default_aliases
- warn("Nokogiri.install_default_aliases is deprecated and will be removed in a future version of Nokogiri. Please call Nokogiri::EncodingHandler.install_default_aliases instead.")
+ warn("Nokogiri.install_default_aliases is deprecated. Please call Nokogiri::EncodingHandler.install_default_aliases instead. This will become an error in Nokogiri v1.17.0.", uplevel: 1, category: :deprecated) # deprecated in v1.14.0, remove in v1.17.0
Nokogiri::EncodingHandler.install_default_aliases
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata
--- old/metadata 2023-11-17 16:30:28.000000000 +0100
+++ new/metadata 2024-06-13 15:30:08.000000000 +0200
@@ -1,7 +1,7 @@
--- !ruby/object:Gem::Specification
name: nokogiri
version: !ruby/object:Gem::Version
- version: 1.15.5
+ version: 1.16.6
platform: ruby
authors:
- Mike Dalessio
@@ -17,10 +17,10 @@
- Sergio Arbeo
- Timothy Elliott
- Nobuyoshi Nakada
-autorequire:
+autorequire:
bindir: bin
cert_chain: []
-date: 2023-11-17 00:00:00.000000000 Z
+date: 2024-06-13 00:00:00.000000000 Z
dependencies:
- !ruby/object:Gem::Dependency
name: mini_portile2
@@ -272,7 +272,7 @@
- patches/libxml2/0010-update-config.guess-and-config.sub-for-libxml2.patch
- patches/libxml2/0011-rip-out-libxml2-s-libc_single_threaded-support.patch
- patches/libxslt/0001-update-config.guess-and-config.sub-for-libxslt.patch
-- ports/archives/libxml2-2.11.6.tar.xz
+- ports/archives/libxml2-2.12.8.tar.xz
- ports/archives/libxslt-1.1.39.tar.xz
homepage: https://nokogiri.org
licenses:
@@ -284,7 +284,7 @@
changelog_uri: https://nokogiri.org/CHANGELOG.html
source_code_uri: https://github.com/sparklemotion/nokogiri
rubygems_mfa_required: 'true'
-post_install_message:
+post_install_message:
rdoc_options:
- "--main"
- README.md
@@ -294,15 +294,15 @@
requirements:
- - ">="
- !ruby/object:Gem::Version
- version: 2.7.0
+ version: 3.0.0
required_rubygems_version: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
requirements: []
-rubygems_version: 3.4.19
-signing_key:
+rubygems_version: 3.5.11
+signing_key:
specification_version: 4
summary: Nokogiri (鋸) makes it easy and painless to work with XML and HTML from Ruby.
test_files: []
Binary files old/ports/archives/libxml2-2.11.6.tar.xz and new/ports/archives/libxml2-2.11.6.tar.xz differ
Binary files old/ports/archives/libxml2-2.12.8.tar.xz and new/ports/archives/libxml2-2.12.8.tar.xz differ
++++++ only-complain-about-version-diff-if-it-is-older.patch ++++++
diff --git a/lib/nokogiri/version/info.rb b/lib/nokogiri/version/info.rb
index 95f29e56..427b79ad 100644
--- a/lib/nokogiri/version/info.rb
+++ b/lib/nokogiri/version/info.rb
@@ -2,6 +2,7 @@
require "singleton"
require "shellwords"
+require "rubygems"
module Nokogiri
class VersionInfo # :nodoc:
@@ -73,11 +74,11 @@ module Nokogiri
warnings = []
if libxml2?
- if compiled_libxml_version != loaded_libxml_version
+ if Gem::Version.new(compiled_libxml_version) > Gem::Version.new(loaded_libxml_version)
warnings << "Nokogiri was built against libxml version #{compiled_libxml_version}, but has dynamically loaded #{loaded_libxml_version}"
end
- if compiled_libxslt_version != loaded_libxslt_version
+ if Gem::Version.new(compiled_libxslt_version) > Gem::Version.new(loaded_libxslt_version)
warnings << "Nokogiri was built against libxslt version #{compiled_libxslt_version}, but has dynamically loaded #{loaded_libxslt_version}"
end
end
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ffmpeg-6 for openSUSE:Factory checked in at 2024-07-30 11:53:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ffmpeg-6 (Old)
and /work/SRC/openSUSE:Factory/.ffmpeg-6.new.1882 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ffmpeg-6"
Tue Jul 30 11:53:19 2024 rev:12 rq:1189878 version:6.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ffmpeg-6/ffmpeg-6.changes 2024-04-26 23:26:12.034602408 +0200
+++ /work/SRC/openSUSE:Factory/.ffmpeg-6.new.1882/ffmpeg-6.changes 2024-07-30 11:53:36.595455426 +0200
@@ -1,0 +2,45 @@
+Fri Jul 26 14:28:59 UTC 2024 - Filip Kastl <filip.kastl(a)suse.com>
+
+- Add ffmpeg-c99.patch so that the package conforms to the C99
+ standard and builds on i586 with GCC 14.
+
+-------------------------------------------------------------------
+Tue Jul 2 12:26:28 UTC 2024 - Cliff Zhao <qzhao(a)suse.com>
+
+- Add ffmpeg-6-CVE-2024-32230.patch:
+ Backporting 96449cfe from upstream, Fix 1 line and one column images.
+ (CVE-2024-32230 bsc#1227296)
+
+-------------------------------------------------------------------
+Tue Jul 2 11:57:01 UTC 2024 - Cliff Zhao <qzhao(a)suse.com>
+
+- Add ffmpeg-6-CVE-2024-32228.patch:
+ Backporting 45964876 from upstream, Fix segfault on invalid film
+ grain metadata.
+ (CVE-2024-32228, bsc#1227277)
+
+-------------------------------------------------------------------
+Tue Jul 2 11:56:01 UTC 2024 - Cliff Zhao <qzhao(a)suse.com>
+
+- Add ffmpeg-6-CVE-2024-32228-shim-5d7f234e.patch:
+ Backporting 5d7f234e from upstream, document that there can be multiple
+ complex filtergraphs to prepare dependence code for CVE-2024-32228.
+ (CVE-2024-32228, bsc#1227277)
+
+-------------------------------------------------------------------
+Tue Jul 2 11:55:01 UTC 2024 - Cliff Zhao <qzhao(a)suse.com>
+
+- Add ffmpeg-6-CVE-2024-32228-shim-f50382cb.patch:
+ Backporting f50382cb from upstream, implement AFGS1 parsing.
+ to prepare dependence code for CVE-2024-32228.
+ (CVE-2024-32228, bsc#1227277)
+
+-------------------------------------------------------------------
+Tue Jul 2 11:54:01 UTC 2024 - Cliff Zhao <qzhao(a)suse.com>
+
+- Add ffmpeg-6-CVE-2024-32228-shim-1535d338.patch:
+ Backporting 1535d338 from upstream, add AOM film grain synthesis,
+ to prepare dependence code for CVE-2024-32228.
+ (CVE-2024-32228, bsc#1227277)
+
+-------------------------------------------------------------------
New:
----
ffmpeg-6-CVE-2024-32228-shim-1535d338.patch
ffmpeg-6-CVE-2024-32228-shim-5d7f234e.patch
ffmpeg-6-CVE-2024-32228-shim-f50382cb.patch
ffmpeg-6-CVE-2024-32228.patch
ffmpeg-6-CVE-2024-32230.patch
ffmpeg-c99.patch
BETA DEBUG BEGIN:
New:
- Add ffmpeg-6-CVE-2024-32228-shim-1535d338.patch:
Backporting 1535d338 from upstream, add AOM film grain synthesis,
New:
- Add ffmpeg-6-CVE-2024-32228-shim-5d7f234e.patch:
Backporting 5d7f234e from upstream, document that there can be multiple
New:
- Add ffmpeg-6-CVE-2024-32228-shim-f50382cb.patch:
Backporting f50382cb from upstream, implement AFGS1 parsing.
New:
- Add ffmpeg-6-CVE-2024-32228.patch:
Backporting 45964876 from upstream, Fix segfault on invalid film
New:
- Add ffmpeg-6-CVE-2024-32230.patch:
Backporting 96449cfe from upstream, Fix 1 line and one column images.
New:
- Add ffmpeg-c99.patch so that the package conforms to the C99
standard and builds on i586 with GCC 14.
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ffmpeg-6.spec ++++++
--- /var/tmp/diff_new_pack.zhzs7u/_old 2024-07-30 11:53:38.123517015 +0200
+++ /var/tmp/diff_new_pack.zhzs7u/_new 2024-07-30 11:53:38.127517176 +0200
@@ -17,9 +17,6 @@
%define flavor @BUILD_FLAVOR@%nil
-#
-# preamble is present twice, watch out
-#
%if "%flavor" != "ffmpeg-6-mini"
# Create proper conflicts to make sure we require all from one version
@@ -122,6 +119,15 @@
Patch91: ffmpeg-dlopen-openh264.patch
Patch92: ffmpeg-CVE-2023-50007.patch
Patch93: ffmpeg-CVE-2023-50008.patch
+Patch94: ffmpeg-6-CVE-2024-32228-shim-1535d338.patch
+Patch95: ffmpeg-6-CVE-2024-32228-shim-f50382cb.patch
+Patch96: ffmpeg-6-CVE-2024-32228-shim-5d7f234e.patch
+Patch97: ffmpeg-6-CVE-2024-32228.patch
+Patch98: ffmpeg-6-CVE-2024-32230.patch
+Patch99: ffmpeg-c99.patch
+#
+# preamble is present twice, watch out
+#
BuildRequires: ladspa-devel
BuildRequires: libgsm-devel
BuildRequires: libmp3lame-devel >= 3.98.3
@@ -844,6 +850,12 @@
Patch91: ffmpeg-dlopen-openh264.patch
Patch92: ffmpeg-CVE-2023-50007.patch
Patch93: ffmpeg-CVE-2023-50008.patch
+Patch94: ffmpeg-6-CVE-2024-32228-shim-1535d338.patch
+Patch95: ffmpeg-6-CVE-2024-32228-shim-f50382cb.patch
+Patch96: ffmpeg-6-CVE-2024-32228-shim-5d7f234e.patch
+Patch97: ffmpeg-6-CVE-2024-32228.patch
+Patch98: ffmpeg-6-CVE-2024-32230.patch
+Patch99: ffmpeg-c99.patch
BuildRequires: c_compiler
Requires: this-is-only-for-build-envs
++++++ ffmpeg-6-CVE-2024-32228-shim-1535d338.patch ++++++
++++ 971 lines (skipped)
++++++ ffmpeg-6-CVE-2024-32228-shim-5d7f234e.patch ++++++
From 5d7f234e7ec45ccc385dca8c5fbe3b887af1c2c6 Mon Sep 17 00:00:00 2001
Author: Niklas Haas <git(a)haasn.dev>
Date: Wed, 4 Oct 2023 14:05:24 +0200
Subject: [PATCH] avcodec/hevcdec: apply AOM film grain synthesis
References: CVE-2024-32228
References: bsc#1227277
Upstream: Backport from upstream
Following the usual logic for H.274 film grain.
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 824845276a..7ef2e03ca6 10064
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -432,7 +432,7 @@ OBJS-$(CONFIG_HDR_ENCODER) += hdrenc.o
OBJS-$(CONFIG_HEVC_DECODER) += hevcdec.o hevc_mvs.o \
hevc_cabac.o hevc_refs.o hevcpred.o \
hevcdsp.o hevc_filter.o hevc_data.o \
- h274.o
+ h274.o aom_film_grain.o
OBJS-$(CONFIG_HEVC_AMF_ENCODER) += amfenc_hevc.o
OBJS-$(CONFIG_HEVC_CUVID_DECODER) += cuviddec.o
OBJS-$(CONFIG_HEVC_MEDIACODEC_DECODER) += mediacodecdec.o
diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c
index 76aa6b4588..575836e340 100644
--- a/libavcodec/hevcdec.c
+++ b/libavcodec/hevcdec.c
@@ -35,6 +35,7 @@
#include "libavutil/pixdesc.h"
#include "libavutil/timecode.h"
+#include "aom_film_grain.h"
#include "bswapdsp.h"
#include "cabac_functions.h"
#include "codec_internal.h"
@@ -388,7 +389,8 @@ static int export_stream_params_from_sei(HEVCContext *s)
avctx->color_trc = s->sei.common.alternative_transfer.preferred_transfer_characteristics;
}
- if (s->sei.common.film_grain_characteristics.present)
+ if (s->sei.common.film_grain_characteristics.present ||
+ s->sei.common.aom_film_grain.enable)
avctx->properties |= FF_CODEC_PROPERTY_FILM_GRAIN;
return 0;
@@ -2885,11 +2887,13 @@ static int hevc_frame_start(HEVCContext *s)
else
s->ref->frame->flags &= ~AV_FRAME_FLAG_KEY;
- s->ref->needs_fg = s->sei.common.film_grain_characteristics.present &&
+ s->ref->needs_fg = (s->sei.common.film_grain_characteristics.present ||
+ s->sei.common.aom_film_grain.enable) &&
!(s->avctx->export_side_data & AV_CODEC_EXPORT_DATA_FILM_GRAIN) &&
!s->avctx->hwaccel;
if (s->ref->needs_fg &&
+ s->sei.common.film_grain_characteristics.present &&
!ff_h274_film_grain_params_supported(s->sei.common.film_grain_characteristics.model_id,
s->ref->frame->format)) {
av_log_once(s->avctx, AV_LOG_WARNING, AV_LOG_DEBUG, &s->film_grain_warning_shown,
@@ -2934,14 +2938,24 @@ fail:
static int hevc_frame_end(HEVCContext *s)
{
HEVCFrame *out = s->ref;
- const AVFrameSideData *sd;
+ const AVFilmGrainParams *fgp;
av_unused int ret;
if (out->needs_fg) {
- sd = av_frame_get_side_data(out->frame, AV_FRAME_DATA_FILM_GRAIN_PARAMS);
- av_assert0(out->frame_grain->buf[0] && sd);
- ret = ff_h274_apply_film_grain(out->frame_grain, out->frame, &s->h274db,
- (AVFilmGrainParams *) sd->data);
+ av_assert0(out->frame_grain->buf[0]);
+ fgp = av_film_grain_params_select(out->frame);
+ switch (fgp->type) {
+ case AV_FILM_GRAIN_PARAMS_NONE:
+ av_assert0(0);
+ return AVERROR_BUG;
+ case AV_FILM_GRAIN_PARAMS_H274:
+ ret = ff_h274_apply_film_grain(out->frame_grain, out->frame,
+ &s->h274db, fgp);
+ break;
+ case AV_FILM_GRAIN_PARAMS_AV1:
+ ret = ff_aom_apply_film_grain(out->frame_grain, out->frame, fgp);
+ break;
+ }
av_assert1(ret >= 0);
}
@@ -3596,6 +3610,7 @@ static int hevc_update_thread_context(AVCodecContext *dst,
s->sei.common.alternative_transfer = s0->sei.common.alternative_transfer;
s->sei.common.mastering_display = s0->sei.common.mastering_display;
s->sei.common.content_light = s0->sei.common.content_light;
+ s->sei.common.aom_film_grain = s0->sei.common.aom_film_grain;
ret = export_stream_params_from_sei(s);
if (ret < 0)
--
2.41.0
++++++ ffmpeg-6-CVE-2024-32228-shim-f50382cb.patch ++++++
From f50382cba60d106440f1ad83396ff7bed586a5ac Mon Sep 17 00:00:00 2001
Author: Niklas Haas <git(a)haasn.dev>
Date: Mon, 26 Feb 2024 14:12:53 +0100
Subject: [PATCH] avcodec/aom_film_grain: implement AFGS1 parsing
References: CVE-2024-32228
References: bsc#1227277
Upstream: Backport from upstream
Based on the AOMedia Film Grain Synthesis 1 (AFGS1) spec:
https://aomediacodec.github.io/afgs1-spec/
The parsing has been changed substantially relative to the AV1 film
grain OBU. In particular:
1. There is the possibility of maintaining multiple independent film
grain parameter sets, and decoders/players are recommended to pick
the one most appropriate for the intended display resolution. This
could also be used to e.g. switch between different grain profiles
without having to re-signal the appropriate coefficients.
2. Supporting this, it's possible to *predict* the grain coefficients
from previously signalled parameter sets, transmitting only the
residual.
3. When not predicting, the parameter sets are now stored as a series of
increments, rather than being directly transmitted.
4. There are several new AFGS1-exclusive fields.
I placed this parser in its own file, rather than h2645_sei.c, since
nothing in the generic AFGS1 film grain payload is specific to T.35, and
to compartmentalize the code base.
diff --git a/libavcodec/aom_film_grain.c b/libavcodec/aom_film_grain.c
index ffcd71b584..e302567ba5 100644
--- a/libavcodec/aom_film_grain.c
+++ b/libavcodec/aom_film_grain.c
@@ -29,6 +29,7 @@
#include "libavutil/imgutils.h"
#include "aom_film_grain.h"
+#include "get_bits.h"
// Common/shared helpers (not dependent on BIT_DEPTH)
static inline int get_random_number(const int bits, unsigned *const state) {
@@ -118,6 +119,243 @@ int ff_aom_apply_film_grain(AVFrame *out, const AVFrame *in,
return AVERROR_INVALIDDATA;
}
+int ff_aom_parse_film_grain_sets(AVFilmGrainAFGS1Params *s,
+ const uint8_t *payload, int payload_size)
+{
+ GetBitContext gbc, *gb = &gbc;
+ AVFilmGrainAOMParams *aom;
+ AVFilmGrainParams *fgp, *ref = NULL;
+ int ret, num_sets, n, i, uv, num_y_coeffs, update_grain, luma_only;
+
+ ret = init_get_bits8(gb, payload, payload_size);
+ if (ret < 0)
+ return ret;
+
+ s->enable = get_bits1(gb);
+ if (!s->enable)
+ return 0;
+
+ skip_bits(gb, 4); // reserved
+ num_sets = get_bits(gb, 3) + 1;
+ for (n = 0; n < num_sets; n++) {
+ int payload_4byte, payload_size, set_idx, apply_units_log2, vsc_flag;
+ int predict_scaling, predict_y_scaling, predict_uv_scaling[2];
+ int payload_bits, start_position;
+
+ start_position = get_bits_count(gb);
+ payload_4byte = get_bits1(gb);
+ payload_size = get_bits(gb, payload_4byte ? 2 : 8);
+ set_idx = get_bits(gb, 3);
+ fgp = &s->sets[set_idx];
+ aom = &fgp->codec.aom;
+
+ fgp->type = get_bits1(gb) ? AV_FILM_GRAIN_PARAMS_AV1 : AV_FILM_GRAIN_PARAMS_NONE;
+ if (!fgp->type)
+ continue;
+
+ fgp->seed = get_bits(gb, 16);
+ update_grain = get_bits1(gb);
+ if (!update_grain)
+ continue;
+
+ apply_units_log2 = get_bits(gb, 4);
+ fgp->width = get_bits(gb, 12) << apply_units_log2;
+ fgp->height = get_bits(gb, 12) << apply_units_log2;
+ luma_only = get_bits1(gb);
+ if (luma_only) {
+ fgp->subsampling_x = fgp->subsampling_y = 0;
+ } else {
+ fgp->subsampling_x = get_bits1(gb);
+ fgp->subsampling_y = get_bits1(gb);
+ }
+
+ fgp->bit_depth_luma = fgp->bit_depth_chroma = 0;
+ fgp->color_primaries = AVCOL_PRI_UNSPECIFIED;
+ fgp->color_trc = AVCOL_TRC_UNSPECIFIED;
+ fgp->color_space = AVCOL_SPC_UNSPECIFIED;
+ fgp->color_range = AVCOL_RANGE_UNSPECIFIED;
+
+ vsc_flag = get_bits1(gb); // video_signal_characteristics_flag
+ if (vsc_flag) {
+ int cicp_flag;
+ fgp->bit_depth_luma = get_bits(gb, 3) + 8;
+ if (!luma_only)
+ fgp->bit_depth_chroma = fgp->bit_depth_luma;
+ cicp_flag = get_bits1(gb);
+ if (cicp_flag) {
+ fgp->color_primaries = get_bits(gb, 8);
+ fgp->color_trc = get_bits(gb, 8);
+ fgp->color_space = get_bits(gb, 8);
+ fgp->color_range = get_bits1(gb) ? AVCOL_RANGE_JPEG : AVCOL_RANGE_MPEG;
+ if (fgp->color_primaries > AVCOL_PRI_NB ||
+ fgp->color_primaries == AVCOL_PRI_RESERVED ||
+ fgp->color_primaries == AVCOL_PRI_RESERVED0 ||
+ fgp->color_trc > AVCOL_TRC_NB ||
+ fgp->color_trc == AVCOL_TRC_RESERVED ||
+ fgp->color_trc == AVCOL_TRC_RESERVED0 ||
+ fgp->color_space > AVCOL_SPC_NB ||
+ fgp->color_space == AVCOL_SPC_RESERVED)
+ goto error;
+ }
+ }
+
+ predict_scaling = get_bits1(gb);
+ if (predict_scaling && (!ref || ref == fgp))
+ goto error; // prediction must be from valid, different set
+
+ predict_y_scaling = predict_scaling ? get_bits1(gb) : 0;
+ if (predict_y_scaling) {
+ int y_scale, y_offset, bits_res;
+ y_scale = get_bits(gb, 9) - 256;
+ y_offset = get_bits(gb, 9) - 256;
+ bits_res = get_bits(gb, 3);
+ if (bits_res) {
+ int res[14], pred, granularity;
+ aom->num_y_points = ref->codec.aom.num_y_points;
+ for (i = 0; i < aom->num_y_points; i++)
+ res[i] = get_bits(gb, bits_res);
+ granularity = get_bits(gb, 3);
+ for (i = 0; i < aom->num_y_points; i++) {
+ pred = ref->codec.aom.y_points[i][1];
+ pred = ((pred * y_scale + 8) >> 4) + y_offset;
+ pred += (res[i] - (1 << (bits_res - 1))) * granularity;
+ aom->y_points[i][0] = ref->codec.aom.y_points[i][0];
+ aom->y_points[i][1] = av_clip_uint8(pred);
+ }
+ }
+ } else {
+ aom->num_y_points = get_bits(gb, 4);
+ if (aom->num_y_points > 14) {
+ goto error;
+ } else if (aom->num_y_points) {
+ int bits_inc, bits_scaling;
+ int y_value = 0;
+ bits_inc = get_bits(gb, 3) + 1;
+ bits_scaling = get_bits(gb, 2) + 5;
+ for (i = 0; i < aom->num_y_points; i++) {
+ y_value += get_bits(gb, bits_inc);
+ if (y_value > UINT8_MAX)
+ goto error;
+ aom->y_points[i][0] = y_value;
+ aom->y_points[i][1] = get_bits(gb, bits_scaling);
+ }
+ }
+ }
+
+ if (luma_only) {
+ aom->chroma_scaling_from_luma = 0;
+ aom->num_uv_points[0] = aom->num_uv_points[1] = 0;
+ } else {
+ aom->chroma_scaling_from_luma = get_bits1(gb);
+ if (aom->chroma_scaling_from_luma) {
+ aom->num_uv_points[0] = aom->num_uv_points[1] = 0;
+ } else {
+ for (uv = 0; uv < 2; uv++) {
+ predict_uv_scaling[uv] = predict_scaling ? get_bits1(gb) : 0;
+ if (predict_uv_scaling[uv]) {
+ int uv_scale, uv_offset, bits_res;
+ uv_scale = get_bits(gb, 9) - 256;
+ uv_offset = get_bits(gb, 9) - 256;
+ bits_res = get_bits(gb, 3);
+ aom->uv_mult[uv] = ref->codec.aom.uv_mult[uv];
+ aom->uv_mult_luma[uv] = ref->codec.aom.uv_mult_luma[uv];
+ aom->uv_offset[uv] = ref->codec.aom.uv_offset[uv];
+ if (bits_res) {
+ int res[10], pred, granularity;
+ aom->num_uv_points[uv] = ref->codec.aom.num_uv_points[uv];
+ for (i = 0; i < aom->num_uv_points[uv]; i++)
+ res[i] = get_bits(gb, bits_res);
+ granularity = get_bits(gb, 3);
+ for (i = 0; i < aom->num_uv_points[uv]; i++) {
+ pred = ref->codec.aom.uv_points[uv][i][1];
+ pred = ((pred * uv_scale + 8) >> 4) + uv_offset;
+ pred += (res[i] - (1 << (bits_res - 1))) * granularity;
+ aom->uv_points[uv][i][0] = ref->codec.aom.uv_points[uv][i][0];
+ aom->uv_points[uv][i][1] = av_clip_uint8(pred);
+ }
+ }
+ } else {
+ int bits_inc, bits_scaling, uv_offset;
+ int uv_value = 0;
+ aom->num_uv_points[uv] = get_bits(gb, 4);
+ if (aom->num_uv_points[uv] > 10)
+ goto error;
+ bits_inc = get_bits(gb, 3) + 1;
+ bits_scaling = get_bits(gb, 2) + 5;
+ uv_offset = get_bits(gb, 8);
+ for (i = 0; i < aom->num_uv_points[uv]; i++) {
+ uv_value += get_bits(gb, bits_inc);
+ if (uv_value > UINT8_MAX)
+ goto error;
+ aom->uv_points[uv][i][0] = uv_value;
+ aom->uv_points[uv][i][1] = get_bits(gb, bits_scaling) + uv_offset;
+ }
+ }
+ }
+ }
+ }
+
+ aom->scaling_shift = get_bits(gb, 2) + 8;
+ aom->ar_coeff_lag = get_bits(gb, 2);
+ num_y_coeffs = 2 * aom->ar_coeff_lag * (aom->ar_coeff_lag + 1);
+ if (aom->num_y_points) {
+ int ar_bits = get_bits(gb, 2) + 5;
+ for (i = 0; i < num_y_coeffs; i++)
+ aom->ar_coeffs_y[i] = get_bits(gb, ar_bits) - (1 << (ar_bits - 1));
+ }
+ for (uv = 0; uv < 2; uv++) {
+ if (aom->chroma_scaling_from_luma || aom->num_uv_points[uv]) {
+ int ar_bits = get_bits(gb, 2) + 5;
+ for (i = 0; i < num_y_coeffs + !!aom->num_y_points; i++)
+ aom->ar_coeffs_uv[uv][i] = get_bits(gb, ar_bits) - (1 << (ar_bits - 1));
+ }
+ }
+ aom->ar_coeff_shift = get_bits(gb, 2) + 6;
+ aom->grain_scale_shift = get_bits(gb, 2);
+ for (uv = 0; uv < 2; uv++) {
+ if (aom->num_uv_points[uv] && !predict_uv_scaling[uv]) {
+ aom->uv_mult[uv] = get_bits(gb, 8) - 128;
+ aom->uv_mult_luma[uv] = get_bits(gb, 8) - 128;
+ aom->uv_offset[uv] = get_bits(gb, 9) - 256;
+ }
+ }
+ aom->overlap_flag = get_bits1(gb);
+ aom->limit_output_range = get_bits1(gb);
+
+ // use first set as reference only if it was fully transmitted
+ if (n == 0)
+ ref = fgp;
+
+ payload_bits = get_bits_count(gb) - start_position;
+ if (payload_bits > payload_size * 8)
+ goto error;
+ skip_bits(gb, payload_size * 8 - payload_bits);
+ }
+ return 0;
+
+error:
+ memset(s, 0, sizeof(*s));
+ return AVERROR_INVALIDDATA;
+}
+
+int ff_aom_attach_film_grain_sets(const AVFilmGrainAFGS1Params *s, AVFrame *frame)
+{
+ AVFilmGrainParams *fgp;
+ if (!s->enable)
+ return 0;
+
+ for (int i = 0; i < FF_ARRAY_ELEMS(s->sets); i++) {
+ if (s->sets[i].type != AV_FILM_GRAIN_PARAMS_AV1)
+ continue;
+ fgp = av_film_grain_params_create_side_data(frame);
+ if (!fgp)
+ return AVERROR(ENOMEM);
+ memcpy(fgp, &s->sets[i], sizeof(*fgp));
+ }
+
+ return 0;
+}
+
// Taken from the AV1 spec. Range is [-2048, 2047], mean is 0 and stddev is 512
static const int16_t gaussian_sequence[2048] = {
56, 568, -180, 172, 124, -84, 172, -64, -900, 24, 820,
diff --git a/libavcodec/aom_film_grain.h b/libavcodec/aom_film_grain.h
index 5d772bd7d1..1f8c78f657 100644
--- a/libavcodec/aom_film_grain.h
+++ b/libavcodec/aom_film_grain.h
@@ -30,9 +30,22 @@
#include "libavutil/film_grain_params.h"
+typedef struct AVFilmGrainAFGS1Params {
+ int enable;
+ AVFilmGrainParams sets[8];
+} AVFilmGrainAFGS1Params;
+
// Synthesizes film grain on top of `in` and stores the result to `out`. `out`
// must already have been allocated and set to the same size and format as `in`.
int ff_aom_apply_film_grain(AVFrame *out, const AVFrame *in,
const AVFilmGrainParams *params);
+// Parse AFGS1 parameter sets from an ITU-T T.35 payload. Returns 0 on success,
+// or a negative error code.
+int ff_aom_parse_film_grain_sets(AVFilmGrainAFGS1Params *s,
+ const uint8_t *payload, int payload_size);
+
+// Attach all valid film grain param sets to `frame`.
+int ff_aom_attach_film_grain_sets(const AVFilmGrainAFGS1Params *s, AVFrame *frame);
+
#endif /* AVCODEC_AOM_FILM_GRAIN_H */
--
2.41.0
++++++ ffmpeg-6-CVE-2024-32228.patch ++++++
From 459648761f5412acdc3317d5bac982ceaa257584 Mon Sep 17 00:00:00 2001
Author: Niklas Haas <git(a)haasn.dev>
Date: Sat Apr 6 13:11:09 2024 +0200
Subject: avcodec/hevcdec: fix segfault on invalid film grain metadata
References: CVE-2024-32228
References: bsc#1227277
Upstream: Backport from upstream
Invalid input files may contain film grain metadata which survives
ff_h274_film_grain_params_supported() but does not pass
av_film_grain_params_select(), leading to a SIGSEGV on hevc_frame_end().
Fix this by duplicating the av_film_grain_params_select() check at frame
init time.
An alternative solution here would be to defer the incompatibility check
to hevc_frame_end(), but this has the downside of allocating a film
grain buffer even when we already know we can't apply film grain.
Fixes: https://trac.ffmpeg.org/ticket/10951
diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c
index 727b02f0f4..d3b668af00 100644
--- a/libavcodec/hevcdec.c
+++ b/libavcodec/hevcdec.c
@@ -2893,10 +2893,15 @@ static int hevc_frame_start(HEVCContext *s)
!(s->avctx->export_side_data & AV_CODEC_EXPORT_DATA_FILM_GRAIN) &&
!s->avctx->hwaccel;
+ ret = set_side_data(s);
+ if (ret < 0)
+ goto fail;
+
if (s->ref->needs_fg &&
- s->sei.common.film_grain_characteristics.present &&
- !ff_h274_film_grain_params_supported(s->sei.common.film_grain_characteristics.model_id,
- s->ref->frame->format)) {
+ ( s->sei.common.film_grain_characteristics.present &&
+ !ff_h274_film_grain_params_supported(s->sei.common.film_grain_characteristics.model_id,
+ s->ref->frame->format))
+ || !av_film_grain_params_select(s->ref->frame)) {
av_log_once(s->avctx, AV_LOG_WARNING, AV_LOG_DEBUG, &s->film_grain_warning_shown,
"Unsupported film grain parameters. Ignoring film grain.\n");
s->ref->needs_fg = 0;
@@ -2910,10 +2915,6 @@ static int hevc_frame_start(HEVCContext *s)
goto fail;
}
- ret = set_side_data(s);
- if (ret < 0)
- goto fail;
-
s->frame->pict_type = 3 - s->sh.slice_type;
if (!IS_IRAP(s))
--
2.41.0
++++++ ffmpeg-6-CVE-2024-32230.patch ++++++
From 96449cfeaeb95fcfd7a2b8d9ccf7719e97471ed1
Author: Michael Niedermayer <michael(a)niedermayer.cc>
Date: Mon Apr 8 18:38:42 2024 +0200
Subject: avcodec/mpegvideo_enc: Fix 1 line and one column images
References: CVE-2024-32230
References: bsc#1227296
Upstream: Backport from upstream
Fixes: Ticket10952
Fixes: poc21ffmpeg
Signed-off-by: Michael Niedermayer <michael(a)niedermayer.cc>
--- ffmpeg-6.1.1/libavcodec/mpegvideo_enc.c 2023-12-31 08:07:26.000000000 +0800
+++ ffmpeg-6.1.1_new/libavcodec/mpegvideo_enc.c 2024-07-05 18:08:49.827035281 +0800
@@ -1198,8 +1198,8 @@
int dst_stride = i ? s->uvlinesize : s->linesize;
int h_shift = i ? s->chroma_x_shift : 0;
int v_shift = i ? s->chroma_y_shift : 0;
- int w = s->width >> h_shift;
- int h = s->height >> v_shift;
+ int w = AV_CEIL_RSHIFT(s->width , h_shift);
+ int h = AV_CEIL_RSHIFT(s->height, v_shift);
const uint8_t *src = pic_arg->data[i];
uint8_t *dst = pic->f->data[i];
int vpad = 16;
++++++ ffmpeg-c99.patch ++++++
From: Filip Kastl <fkastl(a)opensuse.org>
Date: Fri, 26 Jul 2024 14:39:42 +0000
I based the package patch on this bug report (there's a patch in
the comments)
https://bugs.gentoo.org/936433
and on these patches
https://ffmpeg.org/pipermail/ffmpeg-devel/2023-December/318685.html
http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=5860a966d2fffbbda1af00…
Index: ffmpeg-6.1.1/libavfilter/vsrc_testsrc_vulkan.c
===================================================================
--- ffmpeg-6.1.1.orig/libavfilter/vsrc_testsrc_vulkan.c
+++ ffmpeg-6.1.1/libavfilter/vsrc_testsrc_vulkan.c
@@ -231,7 +231,7 @@ static int testsrc_vulkan_activate(AVFil
return AVERROR(ENOMEM);
err = ff_vk_filter_process_simple(&s->vkctx, &s->e, &s->pl, s->picref, NULL,
- NULL, &s->opts, sizeof(s->opts));
+ VK_NULL_HANDLE, &s->opts, sizeof(s->opts));
if (err < 0)
return err;
}
@@ -250,7 +250,7 @@ static int testsrc_vulkan_activate(AVFil
frame->sample_aspect_ratio = s->sar;
if (!s->draw_once) {
err = ff_vk_filter_process_simple(&s->vkctx, &s->e, &s->pl, frame, NULL,
- NULL, &s->opts, sizeof(s->opts));
+ VK_NULL_HANDLE, &s->opts, sizeof(s->opts));
if (err < 0) {
av_frame_free(&frame);
return err;
Index: ffmpeg-6.1.1/libavutil/hwcontext_vaapi.c
===================================================================
--- ffmpeg-6.1.1.orig/libavutil/hwcontext_vaapi.c
+++ ffmpeg-6.1.1/libavutil/hwcontext_vaapi.c
@@ -1086,7 +1086,7 @@ static int vaapi_map_from_drm(AVHWFrames
int err, i, j;
#if !VA_CHECK_VERSION(1, 1, 0)
- unsigned long buffer_handle;
+ uintptr_t buffer_handle;
VASurfaceAttribExternalBuffers buffer_desc;
VASurfaceAttrib attrs[2] = {
{
@@ -1203,7 +1203,7 @@ static int vaapi_map_from_drm(AVHWFrames
if (!use_prime2 || vas != VA_STATUS_SUCCESS) {
int k;
- unsigned long buffer_handle;
+ uintptr_t buffer_handle;
VASurfaceAttribExternalBuffers buffer_desc;
VASurfaceAttrib buffer_attrs[2] = {
{
Index: ffmpeg-6.1.1/libavcodec/vulkan_av1.c
===================================================================
--- ffmpeg-6.1.1.orig/libavcodec/vulkan_av1.c
+++ ffmpeg-6.1.1/libavcodec/vulkan_av1.c
@@ -180,7 +180,7 @@ static int vk_av1_create_params(AVCodecC
.sType = VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR,
.pNext = &av1_params,
.videoSession = ctx->common.session,
- .videoSessionParametersTemplate = NULL,
+ .videoSessionParametersTemplate = VK_NULL_HANDLE,
};
err = ff_vk_decode_create_params(buf, avctx, ctx, &session_params_create);
Index: ffmpeg-6.1.1/libavcodec/vulkan_decode.c
===================================================================
--- ffmpeg-6.1.1.orig/libavcodec/vulkan_decode.c
+++ ffmpeg-6.1.1/libavcodec/vulkan_decode.c
@@ -187,10 +187,10 @@ int ff_vk_decode_prepare_frame(FFVulkanD
if (vkpic->img_view_ref)
return 0;
- vkpic->dpb_frame = NULL;
- vkpic->img_view_ref = NULL;
- vkpic->img_view_out = NULL;
- vkpic->img_view_dest = NULL;
+ vkpic->dpb_frame = VK_NULL_HANDLE;
+ vkpic->img_view_ref = VK_NULL_HANDLE;
+ vkpic->img_view_out = VK_NULL_HANDLE;
+ vkpic->img_view_dest = VK_NULL_HANDLE;
vkpic->destroy_image_view = vk->DestroyImageView;
vkpic->wait_semaphores = vk->WaitSemaphores;
Index: ffmpeg-6.1.1/libavcodec/vulkan_h264.c
===================================================================
--- ffmpeg-6.1.1.orig/libavcodec/vulkan_h264.c
+++ ffmpeg-6.1.1/libavcodec/vulkan_h264.c
@@ -315,7 +315,7 @@ static int vk_h264_create_params(AVCodec
.sType = VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR,
.pNext = &h264_params,
.videoSession = ctx->common.session,
- .videoSessionParametersTemplate = NULL,
+ .videoSessionParametersTemplate = VK_NULL_HANDLE,
};
/* SPS list */
Index: ffmpeg-6.1.1/libavcodec/vulkan_hevc.c
===================================================================
--- ffmpeg-6.1.1.orig/libavcodec/vulkan_hevc.c
+++ ffmpeg-6.1.1/libavcodec/vulkan_hevc.c
@@ -653,7 +653,7 @@ static int vk_hevc_create_params(AVCodec
.sType = VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR,
.pNext = &h265_params,
.videoSession = ctx->common.session,
- .videoSessionParametersTemplate = NULL,
+ .videoSessionParametersTemplate = VK_NULL_HANDLE,
};
HEVCHeaderSet *hdr;
Index: ffmpeg-6.1.1/libavcodec/vulkan_video.c
===================================================================
--- ffmpeg-6.1.1.orig/libavcodec/vulkan_video.c
+++ ffmpeg-6.1.1/libavcodec/vulkan_video.c
@@ -287,7 +287,7 @@ av_cold void ff_vk_video_common_uninit(F
if (common->session) {
vk->DestroyVideoSessionKHR(s->hwctx->act_dev, common->session,
s->hwctx->alloc);
- common->session = NULL;
+ common->session = VK_NULL_HANDLE;
}
if (common->nb_mem && common->mem)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ffmpeg-4 for openSUSE:Factory checked in at 2024-07-30 11:53:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ffmpeg-4 (Old)
and /work/SRC/openSUSE:Factory/.ffmpeg-4.new.1882 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ffmpeg-4"
Tue Jul 30 11:53:18 2024 rev:68 rq:1189862 version:4.4.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/ffmpeg-4/ffmpeg-4.changes 2024-05-09 12:07:34.585227530 +0200
+++ /work/SRC/openSUSE:Factory/.ffmpeg-4.new.1882/ffmpeg-4.changes 2024-07-30 11:53:32.563292910 +0200
@@ -1,0 +2,6 @@
+Fri Jul 26 13:19:42 UTC 2024 - Filip Kastl <filip.kastl(a)suse.com>
+
+- Add ffmpeg-c99.patch so that the package conforms to the C99
+ standard and builds on i586 with GCC 14.
+
+-------------------------------------------------------------------
New:
----
_scmsync.obsinfo
build.specials.obscpio
ffmpeg-c99.patch
BETA DEBUG BEGIN:
New:
- Add ffmpeg-c99.patch so that the package conforms to the C99
standard and builds on i586 with GCC 14.
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ffmpeg-4.spec ++++++
--- /var/tmp/diff_new_pack.G2FJ7x/_old 2024-07-30 11:53:34.239360463 +0200
+++ /var/tmp/diff_new_pack.G2FJ7x/_new 2024-07-30 11:53:34.243360625 +0200
@@ -131,6 +131,7 @@
Patch18: ffmpeg-CVE-2023-51793.patch
Patch19: 0001-avfilter-af_stereowiden-Check-length.patch
Patch20: ffmpeg-CVE-2023-50010.patch
+Patch21: ffmpeg-c99.patch
BuildRequires: ladspa-devel
BuildRequires: libgsm-devel
BuildRequires: libmp3lame-devel
++++++ _scmsync.obsinfo ++++++
mtime: 1722057554
commit: d4a851e48e2ef17c1f3c81416ee204973636088059021e1c36a028ddbb7991c7
url: https://src.opensuse.org/jengelh/ffmpeg-4
revision: master
++++++ ffmpeg-c99.patch ++++++
From: Filip Kastl <fkastl(a)opensuse.org>
Date: Fri, 26 Jul 2024 14:39:42 +0000
I based the package patch on this bug report (there's a patch in
the comments)
https://bugs.gentoo.org/936433
and on these patches
https://ffmpeg.org/pipermail/ffmpeg-devel/2023-December/318685.html
http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=5860a966d2fffbbda1af00…
Index: ffmpeg-4.4.4/libavutil/hwcontext_vaapi.c
===================================================================
--- ffmpeg-4.4.4.orig/libavutil/hwcontext_vaapi.c
+++ ffmpeg-4.4.4/libavutil/hwcontext_vaapi.c
@@ -1032,7 +1032,7 @@ static int vaapi_map_from_drm(AVHWFrames
uint32_t va_fourcc;
int err, i, j, k;
- unsigned long buffer_handle;
+ uintptr_t buffer_handle;
VASurfaceAttribExternalBuffers buffer_desc;
VASurfaceAttrib attrs[2] = {
{
Index: ffmpeg-4.4.4/libavutil/hwcontext_vulkan.c
===================================================================
--- ffmpeg-4.4.4.orig/libavutil/hwcontext_vulkan.c
+++ ffmpeg-4.4.4/libavutil/hwcontext_vulkan.c
@@ -862,7 +862,7 @@ static void free_exec_ctx(AVHWFramesCont
av_freep(&cmd->queues);
av_freep(&cmd->bufs);
- cmd->pool = NULL;
+ cmd->pool = VK_NULL_HANDLE;
}
static VkCommandBuffer get_buf_exec_ctx(AVHWFramesContext *hwfc, VulkanExecCtx *cmd)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package selinux-policy for openSUSE:Factory checked in at 2024-07-30 11:53:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/selinux-policy (Old)
and /work/SRC/openSUSE:Factory/.selinux-policy.new.1882 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "selinux-policy"
Tue Jul 30 11:53:15 2024 rev:66 rq:1189796 version:20240726
Changes:
--------
--- /work/SRC/openSUSE:Factory/selinux-policy/selinux-policy.changes 2024-07-15 19:46:36.473792324 +0200
+++ /work/SRC/openSUSE:Factory/.selinux-policy.new.1882/selinux-policy.changes 2024-07-30 11:53:21.542848730 +0200
@@ -1,0 +2,20 @@
+Fri Jul 26 13:38:26 UTC 2024 - cathy.hu(a)suse.com
+
+- Update to version 20240726:
+ * Allow snapper grub plugin to manage unlabeled_t and read link files
+
+-------------------------------------------------------------------
+Thu Jul 25 07:43:52 UTC 2024 - cathy.hu(a)suse.com
+
+- Update to version 20240725:
+ * Initial policy for grub2 snapper plugin (bsc#1228205)
+
+-------------------------------------------------------------------
+Tue Jul 16 10:57:07 UTC 2024 - cathy.hu(a)suse.com
+
+- Update to version 20240716:
+ * Set microos autorelabel script to systemd_autorelabel_generator_t
+ * Allow systemd_generator to write kmsg
+ * Initial policy for systemd growpart-generator (bsc#1226824)
+
+-------------------------------------------------------------------
Old:
----
selinux-policy-20240715.tar.xz
New:
----
selinux-policy-20240726.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ selinux-policy.spec ++++++
--- /var/tmp/diff_new_pack.XxjC1L/_old 2024-07-30 11:53:25.290999799 +0200
+++ /var/tmp/diff_new_pack.XxjC1L/_new 2024-07-30 11:53:25.315000767 +0200
@@ -33,7 +33,7 @@
License: GPL-2.0-or-later
Group: System/Management
Name: selinux-policy
-Version: 20240715
+Version: 20240726
Release: 0
Source0: %{name}-%{version}.tar.xz
Source1: container.fc
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.XxjC1L/_old 2024-07-30 11:53:25.763018824 +0200
+++ /var/tmp/diff_new_pack.XxjC1L/_new 2024-07-30 11:53:25.775019308 +0200
@@ -1,7 +1,7 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://gitlab.suse.de/selinux/selinux-policy.git</param>
- <param name="changesrevision">a43a23eeaaacb1d90707bb00384efb94dc268b9e</param></service><service name="tar_scm">
+ <param name="changesrevision">00a1eee94f80469b4b233f87194d42b3ea5de181</param></service><service name="tar_scm">
<param name="url">https://github.com/containers/container-selinux.git</param>
<param name="changesrevision">07b3034f6d9625ab84508a2f46515d8ff79b4204</param></service><service name="tar_scm">
<param name="url">https://gitlab.suse.de/jsegitz/selinux-policy.git</param>
++++++ selinux-policy-20240715.tar.xz -> selinux-policy-20240726.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-policy-20240715/policy/modules/contrib/snapper.fc new/selinux-policy-20240726/policy/modules/contrib/snapper.fc
--- old/selinux-policy-20240715/policy/modules/contrib/snapper.fc 2024-07-15 13:55:08.000000000 +0200
+++ new/selinux-policy-20240726/policy/modules/contrib/snapper.fc 2024-07-26 15:34:21.000000000 +0200
@@ -1,6 +1,7 @@
/usr/bin/snapperd -- gen_context(system_u:object_r:snapperd_exec_t,s0)
/usr/lib/snapper/systemd-helper -- gen_context(system_u:object_r:snapperd_exec_t,s0)
+/usr/lib/snapper/plugins/grub -- gen_context(system_u:object_r:snapper_grub_plugin_exec_t,s0)
/etc/snapper(/.*)? gen_context(system_u:object_r:snapperd_conf_t,s0)
/etc/sysconfig/snapper -- gen_context(system_u:object_r:snapperd_conf_t,s0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-policy-20240715/policy/modules/contrib/snapper.if new/selinux-policy-20240726/policy/modules/contrib/snapper.if
--- old/selinux-policy-20240715/policy/modules/contrib/snapper.if 2024-07-15 13:55:08.000000000 +0200
+++ new/selinux-policy-20240726/policy/modules/contrib/snapper.if 2024-07-26 15:34:21.000000000 +0200
@@ -97,3 +97,30 @@
files_mountpoint_filetrans($1, snapperd_data_t, dir, ".snapshots")
')
+########################################
+## <summary>
+## Create a set of derived types for various
+## snapper plugins
+## </summary>
+## <param name="prefix">
+## <summary>
+## The name to be used for deriving type names.
+## </summary>
+## </param>
+#
+template(`snapper_plugin_template',`
+ gen_require(`
+ attribute snapper_plugin;
+ type snapperd_t;
+ ')
+
+ type snapper_$1_plugin_t, snapper_plugin;
+ type snapper_$1_plugin_exec_t;
+ domain_type(snapper_$1_plugin_t)
+ domain_entry_file(snapper_$1_plugin_t, snapper_$1_plugin_exec_t)
+
+ role system_r types snapper_$1_plugin_t;
+ domtrans_pattern(snapperd_t, snapper_$1_plugin_exec_t, snapper_$1_plugin_t)
+ dontaudit snapperd_t snapper_$1_plugin_t:process { noatsecure rlimitinh siginh };
+')
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-policy-20240715/policy/modules/contrib/snapper.te new/selinux-policy-20240726/policy/modules/contrib/snapper.te
--- old/selinux-policy-20240715/policy/modules/contrib/snapper.te 2024-07-15 13:55:08.000000000 +0200
+++ new/selinux-policy-20240726/policy/modules/contrib/snapper.te 2024-07-26 15:34:21.000000000 +0200
@@ -111,3 +111,28 @@
optional_policy(`
snapper_relabel_snapshots(snapperd_t)
')
+
+########################################
+#
+# snapper plugins policy
+#
+
+attribute snapper_plugin;
+
+snapper_plugin_template(grub);
+
+### snapper grub plugin
+bootloader_exec(snapper_grub_plugin_t)
+corecmd_exec_bin(snapper_grub_plugin_t)
+files_manage_isid_type_dirs(snapper_grub_plugin_t)
+files_manage_isid_type_files(snapper_grub_plugin_t)
+snapper_filetrans_named_content(snapper_grub_plugin_t)
+kernel_read_unlabeled_lnk_files(snapper_grub_plugin_t)
+
+allow snapper_grub_plugin_t snapperd_data_t:dir manage_dir_perms;
+allow snapper_grub_plugin_t snapperd_data_t:file manage_file_perms;
+dontaudit snapper_grub_plugin_t self:capability { sys_admin };
+
+optional_policy(`
+ auth_dontaudit_read_passwd_file(snapper_grub_plugin_t)
+')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-policy-20240715/policy/modules/system/selinuxutil.fc new/selinux-policy-20240726/policy/modules/system/selinuxutil.fc
--- old/selinux-policy-20240715/policy/modules/system/selinuxutil.fc 2024-07-15 13:55:08.000000000 +0200
+++ new/selinux-policy-20240726/policy/modules/system/selinuxutil.fc 2024-07-26 15:34:21.000000000 +0200
@@ -29,7 +29,7 @@
/usr/lib/selinux(/.*)? gen_context(system_u:object_r:policy_src_t,s0)
-/usr/lib/systemd/system-generators/selinux-autorelabel-generator\.sh -- gen_context(system_u:object_r:selinux_autorelabel_generator_exec_t,s0)
+/usr/lib/systemd/system-generators/selinux-autorelabel-generator(\.sh)? -- gen_context(system_u:object_r:selinux_autorelabel_generator_exec_t,s0)
/usr/libexec/selinux/selinux-autorelabel -- gen_context(system_u:object_r:semanage_exec_t,s0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-policy-20240715/policy/modules/system/selinuxutil.te new/selinux-policy-20240726/policy/modules/system/selinuxutil.te
--- old/selinux-policy-20240715/policy/modules/system/selinuxutil.te 2024-07-15 13:55:08.000000000 +0200
+++ new/selinux-policy-20240726/policy/modules/system/selinuxutil.te 2024-07-26 15:34:21.000000000 +0200
@@ -854,6 +854,9 @@
# src:mkdir -p "$earlydir/selinux-autorelabel.service.d"
systemd_unit_file_filetrans(selinux_autorelabel_generator_t, selinux_autorelabel_generator_unit_file_t, dir)
+ # (opensuse microos only) filetrans unit files: /run/systemd/generator/.*-relabel.service
+ systemd_unit_file_filetrans(selinux_autorelabel_generator_t, selinux_autorelabel_generator_unit_file_t, file)
+
# src:ln -sf "$unitdir/selinux-autorelabel.target" "$earlydir/default.target"
systemd_manage_unit_symlinks(selinux_autorelabel_generator_t)
systemd_getattr_generic_unit_files(selinux_autorelabel_generator_t)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-policy-20240715/policy/modules/system/systemd.fc new/selinux-policy-20240726/policy/modules/system/systemd.fc
--- old/selinux-policy-20240715/policy/modules/system/systemd.fc 2024-07-15 13:55:08.000000000 +0200
+++ new/selinux-policy-20240726/policy/modules/system/systemd.fc 2024-07-26 15:34:21.000000000 +0200
@@ -76,6 +76,7 @@
/usr/lib/systemd/systemd-modules-load -- gen_context(system_u:object_r:systemd_modules_load_exec_t,s0)
/usr/lib/systemd/systemd-network-generator -- gen_context(system_u:object_r:systemd_network_generator_exec_t,s0)
+/usr/lib/systemd/system-generators/growpart-generator.sh -- gen_context(system_u:object_r:systemd_growpart_generator_exec_t,s0)
/usr/lib/systemd/system-generators/systemd-bless-boot-generator -- gen_context(system_u:object_r:systemd_bless_boot_generator_exec_t,s0)
/usr/lib/systemd/system-generators/systemd-cryptsetup-generator -- gen_context(system_u:object_r:systemd_cryptsetup_generator_exec_t,s0)
/usr/lib/systemd/system-generators/systemd-debug-generator -- gen_context(system_u:object_r:systemd_debug_generator_exec_t,s0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-policy-20240715/policy/modules/system/systemd.te new/selinux-policy-20240726/policy/modules/system/systemd.te
--- old/selinux-policy-20240715/policy/modules/system/systemd.te 2024-07-15 13:55:08.000000000 +0200
+++ new/selinux-policy-20240726/policy/modules/system/systemd.te 2024-07-26 15:34:21.000000000 +0200
@@ -205,6 +205,8 @@
systemd_generator_template(systemd_getty_generator)
# gpt-generator
systemd_generator_template(systemd_gpt_generator)
+# growpart-generator
+systemd_generator_template(systemd_growpart_generator)
# rc-local-generator
systemd_generator_template(systemd_rc_local_generator)
# ssh-generator
@@ -1283,6 +1285,7 @@
fs_getattr_cgroup(systemd_generator)
fs_search_cgroup_dirs(systemd_generator)
kernel_read_proc_files(systemd_generator)
+dev_write_kmsg(systemd_generator)
### Rules for individual systemd generator domains
@@ -1297,7 +1300,6 @@
create_lnk_files_pattern(systemd_fstab_generator_t, systemd_unit_file_type, systemd_unit_file_type)
-dev_write_kmsg(systemd_fstab_generator_t)
dev_write_sysfs_dirs(systemd_fstab_generator_t)
files_getattr_all_dirs(systemd_fstab_generator_t)
@@ -1322,7 +1324,6 @@
allow systemd_gpt_generator_t self:netlink_kobject_uevent_socket create_socket_perms;
dev_read_sysfs(systemd_gpt_generator_t)
-dev_write_kmsg(systemd_gpt_generator_t)
dev_read_rand(systemd_gpt_generator_t)
files_list_boot(systemd_gpt_generator_t)
@@ -1352,6 +1353,23 @@
udev_read_pid_files(systemd_gpt_generator_t)
')
+### growpart generator
+
+# needed for cat, ln
+corecmd_exec_bin(systemd_growpart_generator_t)
+
+# needed for lsblk
+dev_list_sysfs(systemd_growpart_generator_t)
+dev_read_sysfs(systemd_growpart_generator_t)
+storage_getattr_fixed_disk_dev(systemd_growpart_generator_t)
+
+optional_policy(`
+ # ignore #!/bin/bash reading passwd file
+ auth_dontaudit_read_passwd_file(systemd_growpart_generator_t)
+')
+
+permissive systemd_growpart_generator_t;
+
### systemd rc_local generator
init_exec_script_files(systemd_rc_local_generator_t)
@@ -1380,7 +1398,6 @@
dev_create_sysfs_files(systemd_zram_generator_t)
dev_rw_sysfs(systemd_zram_generator_t)
-dev_write_kmsg(systemd_zram_generator_t)
# for systemd-detect-virt - needs to be confined
corecmd_exec_bin(systemd_zram_generator_t)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package cmake for openSUSE:Factory checked in at 2024-07-30 11:53:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cmake (Old)
and /work/SRC/openSUSE:Factory/.cmake.new.1882 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cmake"
Tue Jul 30 11:53:11 2024 rev:255 rq:1189971 version:3.30.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/cmake/cmake.changes 2024-07-25 11:47:21.853848368 +0200
+++ /work/SRC/openSUSE:Factory/.cmake.new.1882/cmake.changes 2024-07-30 11:53:14.998584963 +0200
@@ -1,0 +2,6 @@
+Sat Jul 27 05:49:03 UTC 2024 - Christoph G <foss(a)grueninger.de>
+
+- Add curl-8.9.0-output.patch to fix test for different output
+ with cURL 8.9.0. Part of upstream and will be part of 3.31.0.
+
+-------------------------------------------------------------------
New:
----
curl-8.9.0-output.patch
BETA DEBUG BEGIN:
New:
- Add curl-8.9.0-output.patch to fix test for different output
with cURL 8.9.0. Part of upstream and will be part of 3.31.0.
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cmake.spec ++++++
--- /var/tmp/diff_new_pack.S3fbDR/_old 2024-07-30 11:53:15.962623819 +0200
+++ /var/tmp/diff_new_pack.S3fbDR/_new 2024-07-30 11:53:15.962623819 +0200
@@ -70,6 +70,8 @@
# Search for python interpreters from newest to oldest rather then picking up /usr/bin/python as first choice
Patch1: feature-suse-python-interp-search-order.patch
Patch2: cmake-zerojvm.patch
+# upstream, adjust test to process output from cURL 8.9.0
+Patch3: curl-8.9.0-output.patch
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: pkgconfig
++++++ curl-8.9.0-output.patch ++++++
From 7bfe120c07f9fb571ed3e6e30db99d01da52bf60 Mon Sep 17 00:00:00 2001
From: Brad King <brad.king(a)kitware.com>
Date: Thu, 25 Jul 2024 11:00:36 -0400
Subject: Tests/RunCMake/file-DOWNLOAD: Update bad host name
message for curl 8.9
---
Tests/RunCMake/file-DOWNLOAD/bad-hostname-stdout.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Tests/RunCMake/file-DOWNLOAD/bad-hostname-stdout.txt b/Tests/RunCMake/file-DOWNLOAD/bad-hostname-stdout.txt
index 12278e0fb4..4aa7e93a9c 100644
--- a/Tests/RunCMake/file-DOWNLOAD/bad-hostname-stdout.txt
+++ b/Tests/RunCMake/file-DOWNLOAD/bad-hostname-stdout.txt
@@ -1 +1 @@
--- status='6;"Couldn't resolve host name"'
+-- status='6;"(Could not resolve hostname|Couldn't resolve host name)"'
--
2.45.2
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package curl for openSUSE:Factory checked in at 2024-07-30 11:53:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/curl (Old)
and /work/SRC/openSUSE:Factory/.curl.new.1882 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "curl"
Tue Jul 30 11:53:10 2024 rev:200 rq:1189336 version:8.9.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/curl/curl.changes 2024-06-22 13:23:27.154730915 +0200
+++ /work/SRC/openSUSE:Factory/.curl.new.1882/curl.changes 2024-07-30 11:53:12.322477102 +0200
@@ -1,0 +2,70 @@
+Wed Jul 24 07:07:57 UTC 2024 - Pedro Monreal <pmonreal(a)suse.com>
+
+- Update to 8.9.0:
+ * Security fixes:
+ - [bsc#1227888, CVE-2024-6197] curl: freeing stack buffer
+ in utf8asn1str
+ - [bsc#1228260, CVE-2024-6874] idn: tweak buffer use when
+ converting with macidn
+ * Changes:
+ - curl: add --ip-tos (IP Type of Service / Traffic Class)
+ - curl: add --mptcp
+ - curl: add --vlan-priority
+ - curl: add -w '%{num_retries}
+ - gnutls: support CA caching
+ - mbedtls: support CURLOPT_CERTINFO
+ - noproxy: patterns need to be comma separated
+ - socket: support binding to interface *AND* IP
+ - tcpkeepalive: add CURLOPT_TCP_KEEPCNT and --keepalive-cnt
+ - urlapi: add CURLU_NO_GUESS_SCHEME
+ - wolfssl: support CA caching
+ * Bugfixes:
+ - connection: shutdown TLS (for FTP) better
+ - curl-config: revert to backticks to support old target envs
+ - curl: allow etag and content-disposition for 3xx reply
+ - curl: bsearch the --write-out variable name
+ - curl: check for --disable case *sensitively*
+ - doh: fix leak and zero-length HTTPS RR crash
+ - file: separate fake headers and body with a stand-alone CRLF
+ - ftp: remove redundant null pointer check in loop condition
+ - gnutls: improve TLS shutdown
+ - gnutls: pass in SNI name, not hostname when checking cert
+ - hostip: skip error check for infallible function call
+ - http/3: add shutdown support
+ - http/3: resume upload on ack if we have more data to send
+ - lib: add a few DEBUGASSERT(data) to aid code analyzers
+ - lib: add failure reason on bind errors
+ - lib: graceful connection shutdown
+ - lib: xfer_setup and non-blocking shutdown
+ - multi: add multi->proto_hash, a key-value store for protocol data
+ - multi: do a final progress update on connect failure
+ - multi: fix multi_wait() timeout handling
+ - multi: fix pollset during RESOLVING phase
+ - ngtcp2+quictls: fix cert-status use
+ - noproxy: test bad ipv6 net size first
+ - openssl/gnutls: rectify the TLS version checks for QUIC
+ - openssl: fix hostname handling when using ECH
+ - openssl: stop duplicate ssl key logging for legacy OpenSSL
+ - quic: enable UDP GRO
+ - quic: openssl quic, cmake and doc version update to 3.3.0
+ - quic: require at least OpenSSL 3.3 for QUIC
+ - quic: update to quiche 0.22.0
+ - smtp: for starttls, do full upgrade
+ - tool_operate: avoid explicitly setting verifypeer to 1
+ - tool_writeout: get certinfo only when needing it
+ - transfer: avoid polling socket every transfer loop
+ - transfer: conn close on paused upload
+ - transfer: do not use EXPIRE_NOW while blocked
+ - transfer: remove curl_upload_refill_watermark, no longer used
+ - transfer: set CSELECT_IN if there is data pending
+ - url: allow DoH transfers to override max connection limit
+ - x509asn1: add some common ECDSA OIDs
+ - x509asn1: ASN1tostr() should fail when 'constructed' is set
+ - x509asn1: fallback to dotted OID representation
+ - x509asn1: prevent NULL dereference
+ - x509asn1: remove superfluous free()
+ - x509asn1: remove two static variables
+ * Rebase libcurl-ocloexec.patch
+ * Remove curl-make-install-curl-config.patch upstream
+
+-------------------------------------------------------------------
Old:
----
curl-8.8.0.tar.xz
curl-8.8.0.tar.xz.asc
curl-make-install-curl-config.patch
New:
----
curl-8.9.0.tar.xz
curl-8.9.0.tar.xz.asc
BETA DEBUG BEGIN:
Old: * Rebase libcurl-ocloexec.patch
* Remove curl-make-install-curl-config.patch upstream
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ curl.spec ++++++
--- /var/tmp/diff_new_pack.ughqjC/_old 2024-07-30 11:53:13.466523214 +0200
+++ /var/tmp/diff_new_pack.ughqjC/_new 2024-07-30 11:53:13.470523375 +0200
@@ -29,7 +29,7 @@
%endif
Name: curl%{?psuffix}
-Version: 8.8.0
+Version: 8.9.0
Release: 0
Summary: A Tool for Transferring Data from URLs
License: curl
@@ -43,8 +43,6 @@
Patch2: curl-secure-getenv.patch
#PATCH-FIX-OPENSUSE bsc#1076446 protocol redirection not supported or disabled
Patch3: curl-disabled-redirect-protocol-message.patch
-#PATCH-FIX-UPSTREAM Fix make install for curl-config.1 github.com/curl/curl/pull/13741
-Patch4: curl-make-install-curl-config.patch
BuildRequires: groff
BuildRequires: libtool
BuildRequires: pkgconfig
++++++ curl-8.8.0.tar.xz -> curl-8.9.0.tar.xz ++++++
++++ 109000 lines of diff (skipped)
++++++ libcurl-ocloexec.patch ++++++
--- /var/tmp/diff_new_pack.ughqjC/_old 2024-07-30 11:53:14.562567390 +0200
+++ /var/tmp/diff_new_pack.ughqjC/_new 2024-07-30 11:53:14.566567551 +0200
@@ -7,11 +7,11 @@
compile time is not enough.
-Index: curl-8.4.0/lib/file.c
+Index: curl-8.9.0/lib/file.c
===================================================================
---- curl-8.4.0.orig/lib/file.c
-+++ curl-8.4.0/lib/file.c
-@@ -232,7 +232,7 @@ static CURLcode file_connect(struct Curl
+--- curl-8.9.0.orig/lib/file.c
++++ curl-8.9.0/lib/file.c
+@@ -242,7 +242,7 @@ static CURLcode file_connect(struct Curl
}
}
#else
@@ -20,19 +20,19 @@
file->path = real_path;
#endif
#endif
-@@ -318,7 +318,7 @@ static CURLcode file_upload(struct Curl_
+@@ -329,7 +329,7 @@ static CURLcode file_upload(struct Curl_
else
mode = MODE_DEFAULT|O_TRUNC;
- fd = open(file->path, mode, data->set.new_file_perms);
+ fd = open(file->path, mode|O_CLOEXEC, data->set.new_file_perms);
if(fd < 0) {
- failf(data, "Can't open %s for writing", file->path);
+ failf(data, "cannot open %s for writing", file->path);
return CURLE_WRITE_ERROR;
-Index: curl-8.4.0/lib/if2ip.c
+Index: curl-8.9.0/lib/if2ip.c
===================================================================
---- curl-8.4.0.orig/lib/if2ip.c
-+++ curl-8.4.0/lib/if2ip.c
+--- curl-8.9.0.orig/lib/if2ip.c
++++ curl-8.9.0/lib/if2ip.c
@@ -208,7 +208,7 @@ if2ip_result_t Curl_if2ip(int af,
if(len >= sizeof(req.ifr_name))
return IF2IP_NOT_FOUND;
@@ -42,11 +42,11 @@
if(CURL_SOCKET_BAD == dummy)
return IF2IP_NOT_FOUND;
-Index: curl-8.4.0/configure.ac
+Index: curl-8.9.0/configure.ac
===================================================================
---- curl-8.4.0.orig/configure.ac
-+++ curl-8.4.0/configure.ac
-@@ -428,6 +428,8 @@ AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-m
+--- curl-8.9.0.orig/configure.ac
++++ curl-8.9.0/configure.ac
+@@ -441,6 +441,8 @@ AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-m
# Silence warning: ar: 'u' modifier ignored since 'D' is the default
AC_SUBST(AR_FLAGS, [cr])
@@ -55,10 +55,10 @@
dnl This defines _ALL_SOURCE for AIX
CURL_CHECK_AIX_ALL_SOURCE
-Index: curl-8.4.0/lib/hostip.c
+Index: curl-8.9.0/lib/hostip.c
===================================================================
---- curl-8.4.0.orig/lib/hostip.c
-+++ curl-8.4.0/lib/hostip.c
+--- curl-8.9.0.orig/lib/hostip.c
++++ curl-8.9.0/lib/hostip.c
@@ -44,6 +44,7 @@
#include <setjmp.h>
#include <signal.h>
@@ -67,20 +67,20 @@
#include "urldata.h"
#include "sendf.h"
#include "hostip.h"
-@@ -609,7 +610,7 @@ bool Curl_ipv6works(struct Curl_easy *da
+@@ -616,7 +617,7 @@ bool Curl_ipv6works(struct Curl_easy *da
else {
int ipv6_works = -1;
/* probe to see if we have a working IPv6 stack */
- curl_socket_t s = socket(PF_INET6, SOCK_DGRAM, 0);
+ curl_socket_t s = socket(PF_INET6, SOCK_DGRAM|SOCK_CLOEXEC, 0);
if(s == CURL_SOCKET_BAD)
- /* an IPv6 address was requested but we can't get/use one */
+ /* an IPv6 address was requested but we cannot get/use one */
ipv6_works = 0;
-Index: curl-8.4.0/lib/cf-socket.c
+Index: curl-8.9.0/lib/cf-socket.c
===================================================================
---- curl-8.4.0.orig/lib/cf-socket.c
-+++ curl-8.4.0/lib/cf-socket.c
-@@ -274,7 +274,9 @@ static CURLcode socket_open(struct Curl_
+--- curl-8.9.0.orig/lib/cf-socket.c
++++ curl-8.9.0/lib/cf-socket.c
+@@ -360,7 +360,9 @@ static CURLcode socket_open(struct Curl_
}
else {
/* opensocket callback not set, so simply create the socket now */
1
0