diff --git a/.gitignore b/.gitignore index 2223f93..bb5c82c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,80 +1,2 @@ -nokogiri-1.4.2.gem -nokogiri-1.4.3.1.gem -/nokogiri-1.5.0.beta.2.gem -/nokogiri-1.5.0.beta.3.gem -/nokogiri-1.5.0.beta.4.gem -/nokogiri-1.5.0.gem -/nokogiri-1.5.2.gem -/nokogiri-1.5.5.gem -/nokogiri-1.5.6.gem -/nokogiri-1.5.9.gem -/nokogiri-1.6.0.gem -/nokogiri-1.6.1.gem -/nokogiri-1.6.2.1.gem -/nokogiri-1.6.3.1.gem -/nokogiri-1.6.4.1.gem -/nokogiri-1.6.5.gem -/nokogiri-1.6.6.1.gem -/nokogiri-1.6.6.2.gem -/nokogiri-1.6.7.rc3.gem -/nokogiri-1.6.7.2.gem -/nokogiri-1.6.8.gem -/nokogiri-1.6.8.1.gem -/nokogiri-1.7.0.gem -/nokogiri-1.7.0.1.gem -/nokogiri-1.7.1.gem -/nokogiri-1.7.2.gem -/nokogiri-1.8.0.gem -/nokogiri-1.8.1.gem -/nokogiri-1.8.2.gem -/nokogiri-1.8.3.gem -/nokogiri-1.8.4.gem -/nokogiri-1.8.5.gem -/nokogiri-1.9.1.gem -/rubygem-nokogiri-1.9.1-full.tar.gz -/nokogiri-1.10.0.gem -/rubygem-nokogiri-1.10.0-full.tar.gz -/nokogiri-1.10.1.gem -/rubygem-nokogiri-1.10.1-full.tar.gz -/nokogiri-1.10.2.gem -/rubygem-nokogiri-1.10.2-full.tar.gz -/nokogiri-1.10.3.gem -/rubygem-nokogiri-1.10.3-full.tar.gz -/nokogiri-1.10.4.gem -/rubygem-nokogiri-1.10.4-full.tar.gz -/rubygem-nokogiri-1.10.5-full.tar.gz -/nokogiri-1.10.5.gem -/nokogiri-1.10.7.gem -/rubygem-nokogiri-1.10.7-full.tar.gz -/nokogiri-1.10.8.gem -/rubygem-nokogiri-1.10.8-full.tar.gz -/nokogiri-1.10.9.gem -/rubygem-nokogiri-1.10.9-full.tar.gz -/nokogiri-1.10.10.gem -/rubygem-nokogiri-1.10.10-full.tar.gz -/nokogiri-1.11.0.rc4.gem -/rubygem-nokogiri-1.11.0.rc4-full.tar.gz -/rubygem-nokogiri-1.11.0-full.tar.gz -/nokogiri-1.11.0.gem -/rubygem-nokogiri-1.11.1-full.tar.gz -/nokogiri-1.11.1.gem -/nokogiri-1.11.2.gem -/rubygem-nokogiri-1.11.2-full.tar.gz -/nokogiri-1.11.3.gem -/rubygem-nokogiri-1.11.3-full.tar.gz -/nokogiri-1.11.4.gem -/rubygem-nokogiri-1.11.4-full.tar.gz -/nokogiri-1.11.7.gem -/rubygem-nokogiri-1.11.7-full.tar.gz -/nokogiri-1.12.2.gem -/rubygem-nokogiri-1.12.2-full.tar.gz -/nokogiri-1.12.3.gem -/rubygem-nokogiri-1.12.3-full.tar.gz -/nokogiri-1.12.4.gem -/rubygem-nokogiri-1.12.4-full.tar.gz -/nokogiri-1.12.5.gem -/rubygem-nokogiri-1.12.5-full.tar.gz -/nokogiri-1.13.0.gem -/rubygem-nokogiri-1.13.0-full.tar.gz -/nokogiri-1.13.1.gem -/rubygem-nokogiri-1.13.1-full.tar.gz +/nokogiri-*.gem +/rubygem-nokogiri-*-full.tar.gz diff --git a/nokogiri-create-full-tarball.sh b/nokogiri-create-full-tarball.sh index d6fbd01..1cb4822 100644 --- a/nokogiri-create-full-tarball.sh +++ b/nokogiri-create-full-tarball.sh @@ -1,5 +1,17 @@ #!/bin/bash +git_restore_timestamp() +{ + set +x + echo "Restore timestamps" + git ls-tree -r --name-only HEAD | while read f + do + unixtime=$(git log -n 1 --pretty='%ct' -- $f) + touch -d "@${unixtime}" $f + done + set -x +} + if [ $# -lt 2 ] then echo "$0 " @@ -17,10 +29,14 @@ pushd $TMPDIRPATH git clone https://github.com/sparklemotion/$1.git pushd $1 git reset --hard v$2 +git_restore_timestamp popd ln -sf $1 $1-$2 -tar czf ${CURRDIR}/rubygem-$1-$2-full.tar.gz $1-$2/./ +tar czf \ + ${CURRDIR}/rubygem-$1-$2-full.tar.gz \ + "--exclude=nokogiri-$2/./.git" \ + $1-$2/./ popd diff --git a/rubygem-nokogiri-1.11.0.rc4-shutdown-libxml2-warning.patch b/rubygem-nokogiri-1.11.0.rc4-shutdown-libxml2-warning.patch index c1ed61c..6a34634 100644 --- a/rubygem-nokogiri-1.11.0.rc4-shutdown-libxml2-warning.patch +++ b/rubygem-nokogiri-1.11.0.rc4-shutdown-libxml2-warning.patch @@ -1,10 +1,13 @@ ---- nokogiri-1.11.0.rc4/lib/nokogiri/version/info.rb.warn 2020-12-31 16:56:11.533949657 +0900 -+++ nokogiri-1.11.0.rc4/lib/nokogiri/version/info.rb 2020-12-31 16:59:38.576697147 +0900 -@@ -58,6 +58,7 @@ module Nokogiri +--- nokogiri-1.18.5/lib/nokogiri/version/info.rb.warn 2023-11-29 01:25:54.000000000 +0900 ++++ nokogiri-1.18.5/lib/nokogiri/version/info.rb 2025-03-26 15:51:51.468291434 +0900 +@@ -70,6 +70,10 @@ module Nokogiri + end def warnings ++ [] ++ end ++ ++ def warnings_original warnings = [] -+ return warnings if libxml2? - if compiled_libxml_version != loaded_libxml_version diff --git a/rubygem-nokogiri-1.13.3-CVE-2022-24836.patch b/rubygem-nokogiri-1.13.3-CVE-2022-24836.patch deleted file mode 100644 index ea6b775..0000000 --- a/rubygem-nokogiri-1.13.3-CVE-2022-24836.patch +++ /dev/null @@ -1,42 +0,0 @@ -commit e444525ef1634b675cd1cf52d39f4320ef0aecfd -Author: Mike Dalessio -Date: Sun Apr 10 14:42:04 2022 -0400 - - fix(perf): HTML4::EncodingReader detection - -diff --git a/lib/nokogiri/html4/document.rb b/lib/nokogiri/html4/document.rb -index 177efc04..fbc22d20 100644 ---- a/lib/nokogiri/html4/document.rb -+++ b/lib/nokogiri/html4/document.rb -@@ -268,7 +268,7 @@ module Nokogiri - end - - def self.detect_encoding(chunk) -- (m = chunk.match(/\A(<\?xml[ \t\r\n]+[^>]*>)/)) && -+ (m = chunk.match(/\A(<\?xml[ \t\r\n][^>]*>)/)) && - (return Nokogiri.XML(m[1]).encoding) - - if Nokogiri.jruby? -diff --git a/test/html4/test_document_encoding.rb b/test/html4/test_document_encoding.rb -index 61153017..ecb4aa9a 100644 ---- a/test/html4/test_document_encoding.rb -+++ b/test/html4/test_document_encoding.rb -@@ -155,6 +155,18 @@ class TestNokogiriHtmlDocument < Nokogiri::TestCase - end - end - end -+ -+ it "does not start backtracking during detection of XHTML encoding" do -+ # this test is a quick and dirty version -+ # of the more complete perf test that is on main. -+ n = 40_000 -+ redos_string = " -Date: Fri, 6 May 2022 21:57:41 -0400 -Subject: [PATCH] fix: {HTML4,XML}::SAX::{Parser,ParserContext} check arg types - -Previously, arguments of the wrong type might cause segfault on CRuby. ---- - CHANGELOG.md | 3 ++- - ext/java/nokogiri/Html4SaxParserContext.java | 11 +++++++++++ - ext/java/nokogiri/XmlSaxParserContext.java | 7 +++++-- - ext/java/nokogiri/internals/ParserContext.java | 8 +++++++- - ext/nokogiri/html4_sax_parser_context.c | 5 ++--- - ext/nokogiri/xml_sax_parser_context.c | 13 ++++++++++--- - lib/nokogiri/html4/sax/parser.rb | 2 +- - test/html4/sax/test_parser.rb | 8 +++++++- - test/html4/sax/test_parser_context.rb | 9 +++++++++ - test/xml/sax/test_parser.rb | 8 +++++++- - test/xml/sax/test_parser_context.rb | 7 +++++++ - 11 files changed, 68 insertions(+), 13 deletions(-) - -diff --git a/ext/nokogiri/html4_sax_parser_context.c b/ext/nokogiri/html4_sax_parser_context.c -index dec0d88fe..54adca4cb 100644 ---- a/ext/nokogiri/html4_sax_parser_context.c -+++ b/ext/nokogiri/html4_sax_parser_context.c -@@ -19,9 +19,8 @@ parse_memory(VALUE klass, VALUE data, VALUE encoding) - { - htmlParserCtxtPtr ctxt; - -- if (NIL_P(data)) { -- rb_raise(rb_eArgError, "data cannot be nil"); -- } -+ Check_Type(data, T_STRING); -+ - if (!(int)RSTRING_LEN(data)) { - rb_raise(rb_eRuntimeError, "data cannot be empty"); - } -diff --git a/ext/nokogiri/xml_sax_parser_context.c b/ext/nokogiri/xml_sax_parser_context.c -index 60449347a..60c491984 100644 ---- a/ext/nokogiri/xml_sax_parser_context.c -+++ b/ext/nokogiri/xml_sax_parser_context.c -@@ -2,6 +2,8 @@ - - VALUE cNokogiriXmlSaxParserContext ; - -+static ID id_read; -+ - static void - deallocate(xmlParserCtxtPtr ctxt) - { -@@ -26,6 +28,10 @@ parse_io(VALUE klass, VALUE io, VALUE encoding) - xmlParserCtxtPtr ctxt; - xmlCharEncoding enc = (xmlCharEncoding)NUM2INT(encoding); - -+ if (!rb_respond_to(io, id_read)) { -+ rb_raise(rb_eTypeError, "argument expected to respond to :read"); -+ } -+ - ctxt = xmlCreateIOParserCtxt(NULL, NULL, - (xmlInputReadCallback)noko_io_read, - (xmlInputCloseCallback)noko_io_close, -@@ -62,9 +68,8 @@ parse_memory(VALUE klass, VALUE data) - { - xmlParserCtxtPtr ctxt; - -- if (NIL_P(data)) { -- rb_raise(rb_eArgError, "data cannot be nil"); -- } -+ Check_Type(data, T_STRING); -+ - if (!(int)RSTRING_LEN(data)) { - rb_raise(rb_eRuntimeError, "data cannot be empty"); - } -@@ -278,4 +283,6 @@ noko_init_xml_sax_parser_context() - rb_define_method(cNokogiriXmlSaxParserContext, "recovery", get_recovery, 0); - rb_define_method(cNokogiriXmlSaxParserContext, "line", line, 0); - rb_define_method(cNokogiriXmlSaxParserContext, "column", column, 0); -+ -+ id_read = rb_intern("read"); - } -diff --git a/lib/nokogiri/html4/sax/parser.rb b/lib/nokogiri/html4/sax/parser.rb -index 2a074b6b9..1f8c03af6 100644 ---- a/lib/nokogiri/html4/sax/parser.rb -+++ b/lib/nokogiri/html4/sax/parser.rb -@@ -28,7 +28,7 @@ class Parser < Nokogiri::XML::SAX::Parser - ### - # Parse html stored in +data+ using +encoding+ - def parse_memory(data, encoding = "UTF-8") -- raise ArgumentError unless data -+ raise TypeError unless String === data - return if data.empty? - ctx = ParserContext.memory(data, encoding) - yield ctx if block_given? -diff --git a/test/html4/sax/test_parser.rb b/test/html4/sax/test_parser.rb -index 3917dce2e..4dc6ac61f 100644 ---- a/test/html4/sax/test_parser.rb -+++ b/test/html4/sax/test_parser.rb -@@ -54,7 +54,7 @@ def test_parse_file_with_dir - end - - def test_parse_memory_nil -- assert_raises(ArgumentError) do -+ assert_raises(TypeError) do - @parser.parse_memory(nil) - end - end -@@ -161,6 +161,12 @@ def test_parsing_dom_error_from_io - def test_empty_processing_instruction - @parser.parse_memory("this will segfault") - end -+ -+ it "handles invalid types gracefully" do -+ assert_raises(TypeError) { Nokogiri::HTML::SAX::Parser.new.parse(0xcafecafe) } -+ assert_raises(TypeError) { Nokogiri::HTML::SAX::Parser.new.parse_memory(0xcafecafe) } -+ assert_raises(TypeError) { Nokogiri::HTML::SAX::Parser.new.parse_io(0xcafecafe) } -+ end - end - end - end -diff --git a/test/html4/sax/test_parser_context.rb b/test/html4/sax/test_parser_context.rb -index 0a0eda64c..594a3ac82 100644 ---- a/test/html4/sax/test_parser_context.rb -+++ b/test/html4/sax/test_parser_context.rb -@@ -40,6 +40,15 @@ def test_from_file - ctx.parse_with(parser) - # end - end -+ -+ def test_graceful_handling_of_invalid_types -+ assert_raises(TypeError) { ParserContext.new(0xcafecafe) } -+ assert_raises(TypeError) { ParserContext.memory(0xcafecafe, "UTF-8") } -+ assert_raises(TypeError) { ParserContext.io(0xcafecafe, 1) } -+ assert_raises(TypeError) { ParserContext.io(StringIO.new("asdf"), "should be an index into ENCODINGS") } -+ assert_raises(TypeError) { ParserContext.file(0xcafecafe, "UTF-8") } -+ assert_raises(TypeError) { ParserContext.file("path/to/file", 0xcafecafe) } -+ end - end - end - end -diff --git a/test/xml/sax/test_parser.rb b/test/xml/sax/test_parser.rb -index 6c0f1fc88..ac7d4ead0 100644 ---- a/test/xml/sax/test_parser.rb -+++ b/test/xml/sax/test_parser.rb -@@ -73,6 +73,12 @@ class TestCase - end - end - -+ it "handles invalid types gracefully" do -+ assert_raises(TypeError) { Nokogiri::XML::SAX::Parser.new.parse(0xcafecafe) } -+ assert_raises(TypeError) { Nokogiri::XML::SAX::Parser.new.parse_memory(0xcafecafe) } -+ assert_raises(TypeError) { Nokogiri::XML::SAX::Parser.new.parse_io(0xcafecafe) } -+ end -+ - it :test_namespace_declaration_order_is_saved do - parser.parse(<<~EOF) - -@@ -263,7 +269,7 @@ def call_parse_io_with_encoding(encoding) - end - - it :test_render_parse_nil_param do -- assert_raises(ArgumentError) { parser.parse_memory(nil) } -+ assert_raises(TypeError) { parser.parse_memory(nil) } - end - - it :test_bad_encoding_args do -diff --git a/test/xml/sax/test_parser_context.rb b/test/xml/sax/test_parser_context.rb -index e38efd271..ba9857943 100644 ---- a/test/xml/sax/test_parser_context.rb -+++ b/test/xml/sax/test_parser_context.rb -@@ -80,6 +80,13 @@ def test_recovery - assert(pc.recovery) - end - -+ def test_graceful_handling_of_invalid_types -+ assert_raises(TypeError) { ParserContext.new(0xcafecafe) } -+ assert_raises(TypeError) { ParserContext.memory(0xcafecafe) } -+ assert_raises(TypeError) { ParserContext.io(0xcafecafe, 1) } -+ assert_raises(TypeError) { ParserContext.io(StringIO.new("asdf"), "should be an index into ENCODINGS") } -+ end -+ - def test_from_io - ctx = ParserContext.new(StringIO.new("fo"), "UTF-8") - assert(ctx) diff --git a/rubygem-nokogiri-1.13.x-testsuite-libxml2-2-9-14.patch b/rubygem-nokogiri-1.13.x-testsuite-libxml2-2-9-14.patch deleted file mode 100644 index 467186a..0000000 --- a/rubygem-nokogiri-1.13.x-testsuite-libxml2-2-9-14.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 520f4e7d64eab9b862b7fe9c683d348be9f4eb0a Mon Sep 17 00:00:00 2001 -From: Mike Dalessio -Date: Mon, 2 May 2022 18:04:39 -0400 -Subject: [PATCH] dep: update libxml2 to v2.9.14 - -from v2.9.13 - -https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.9.14 ---- - dependencies.yml | 6 +-- - ...t-approach-to-fix-quadratic-behavior.patch | 45 ------------------- - test/html4/test_comments.rb | 25 ++++++++++- - test/html4/test_document.rb | 25 +++++++---- - 4 files changed, 43 insertions(+), 58 deletions(-) - delete mode 100644 patches/libxml2/0010-Revert-Different-approach-to-fix-quadratic-behavior.patch - -diff --git a/test/html4/test_comments.rb b/test/html4/test_comments.rb -index 32d7a8785..56fd50682 100644 ---- a/test/html4/test_comments.rb -+++ b/test/html4/test_comments.rb -@@ -173,7 +173,7 @@ class TestComment < Nokogiri::TestCase - let(:body) { doc.at_css("body") } - let(:subject) { doc.at_css("div#under-test") } - -- if Nokogiri.uses_libxml? -+ if Nokogiri.uses_libxml?("<=2.9.13") - it "ignores up to the next '>'" do # NON-COMPLIANT - assert_equal 2, body.children.length - assert_equal body.children[0], subject -@@ -183,10 +183,33 @@ class TestComment < Nokogiri::TestCase - assert body.children[1].text? - assert_equal "-->hello", body.children[1].content - end -+ elsif Nokogiri.uses_libxml? -+ it "parses as pcdata" do # NON-COMPLIANT -+ assert_equal 1, body.children.length -+ assert_equal subject, body.children.first -+ -+ assert_equal 3, subject.children.length -+ subject.children[0].tap do |child| -+ assert_predicate(child, :text?) -+ assert_equal("hello", child.content) -+ end -+ end - end - - if Nokogiri.jruby? - it "ignores up to the next '-->'" do # NON-COMPLIANT -+ assert_equal 1, body.children.length -+ assert_equal subject, body.children.first -+ - assert_equal 1, subject.children.length - assert subject.children[0].text? - assert_equal "hello", subject.children[0].content diff --git a/rubygem-nokogiri-1.18.10-minitest6.patch b/rubygem-nokogiri-1.18.10-minitest6.patch new file mode 100644 index 0000000..f2e2b8f --- /dev/null +++ b/rubygem-nokogiri-1.18.10-minitest6.patch @@ -0,0 +1,11 @@ +diff -urp '--exclude=*~' nokogiri-1.18.10.orig/test/helper.rb nokogiri-1.18.10/test/helper.rb +--- nokogiri-1.18.10.orig/test/helper.rb 2025-12-24 12:29:06.569389292 +0900 ++++ nokogiri-1.18.10/test/helper.rb 2025-12-24 12:39:48.443826371 +0900 +@@ -41,6 +41,7 @@ warn + + require "minitest/autorun" + require "minitest/benchmark" ++require "minitest/mock" + + if !Nokogiri.jruby? && ENV["NCPU"].to_i > 1 + require "minitest/parallel_fork" diff --git a/rubygem-nokogiri-1.5.0-allow-non-crosscompile.patch b/rubygem-nokogiri-1.5.0-allow-non-crosscompile.patch deleted file mode 100644 index f45734b..0000000 --- a/rubygem-nokogiri-1.5.0-allow-non-crosscompile.patch +++ /dev/null @@ -1,26 +0,0 @@ ---- nokogiri-1.5.0/Rakefile.debug 2012-01-18 16:23:02.472224272 +0900 -+++ nokogiri-1.5.0/Rakefile 2012-01-18 16:23:29.935430496 +0900 -@@ -83,14 +83,21 @@ - HOE.spec.files += ['lib/nokogiri/nokogiri.jar'] - end - else -- require 'tasks/cross_compile' -+ do_cross_compile = true -+ begin -+ require 'tasks/cross_compile' -+ rescue RuntimeError => e -+ warn "WARNING: Could not perform some cross-compiling: #{e}" -+ do_cross_compile = false -+ end - require "rake/extensiontask" - -- HOE.spec.files.reject! { |f| f =~ %r{^ext/java|\.jar$} } -+ HOE.spec.files.reject! { |f| f =~ %r{^ext/java|\.jar$} } if do_cross_compile - - Rake::ExtensionTask.new("nokogiri", HOE.spec) do |ext| - ext.lib_dir = File.join(*['lib', 'nokogiri', ENV['FAT_DIR']].compact) - ext.config_options << ENV['EXTOPTS'] -+ next unless do_cross_compile - ext.cross_compile = true - ext.cross_platform = ["x86-mswin32-60", "x86-mingw32"] - ext.cross_config_options << "--with-xml2-include=#{File.join($recipes[:libxml2].path, 'include', 'libxml2')}" diff --git a/rubygem-nokogiri.spec b/rubygem-nokogiri.spec index 70ffab1..b28fa64 100644 --- a/rubygem-nokogiri.spec +++ b/rubygem-nokogiri.spec @@ -1,25 +1,25 @@ -%global mainver 1.13.1 +%global mainver 1.19.0 #%%global prever .rc4 -%global mainrel 4 +%global baserelease 2 %global prerpmver %(echo "%{?prever}" | sed -e 's|\\.||g') %global gem_name nokogiri %undefine __brp_mangle_shebangs -%undefine _changelog_trimtime Summary: An HTML, XML, SAX, and Reader parser Name: rubygem-%{gem_name} Version: %{mainver} -Release: %{?prever:0.}%{mainrel}%{?prever:.%{prerpmver}}%{?dist} +Release: %{?prever:0.}%{baserelease}%{?prever:.%{prerpmver}}%{?dist} +# SPDX confirmed # MIT: see LICENSE.md -# ASL 2.0 +# Apache-2.0 # 1.12.0 bundles forked and modified gumbo - # see gumbo-parser/src/attribute.c and ext/nokogiri/gumbo.c # also lib/nokogiri/html5 is licensed under ASL 2.0 -License: MIT and ASL 2.0 +License: MIT AND Apache-2.0 Provides: bundled(gumbo-parser) = 0.10.1 URL: https://nokogiri.org @@ -27,25 +27,19 @@ Source0: https://rubygems.org/gems/%{gem_name}-%{mainver}%{?prever}.gem # %%{SOURCE2} %%{name} %%{version} Source1: rubygem-%{gem_name}-%{version}%{?prever}-full.tar.gz Source2: nokogiri-create-full-tarball.sh -# ./test/html/test_element_description.rb:62 fails, as usual...... -# Patch0: rubygem-nokogiri-1.5.0.beta3-test-failure.patch -#Patch0: rubygem-nokogiri-1.5.0-allow-non-crosscompile.patch # Shut down libxml2 version unmatching warning Patch0: %{name}-1.11.0.rc4-shutdown-libxml2-warning.patch -# https://github.com/sparklemotion/nokogiri/commit/e444525ef1634b675cd1cf52d39f4320ef0aecfd -# Fix for CVE-2022-24836 -Patch1: %{name}-1.13.3-CVE-2022-24836.patch -# https://github.com/sparklemotion/nokogiri/commit/db05ba9a1bd4b90aa6c76742cf6102a7c7297267 -# Fix for CVE-2022-24836, backported -Patch2: %{name}-1.13.5-6-CVE-2022-29181-backport.patch -# Test suite for libxml2 2.9.14 -# https://github.com/sparklemotion/nokogiri/commit/520f4e7d64eab9b862b7fe9c683d348be9f4eb0a -Patch3: %{name}-1.13.x-testsuite-libxml2-2-9-14.patch BuildRequires: ruby(release) BuildRequires: ruby(rubygems) ## ## For %%check BuildRequires: rubygem(minitest) +BuildRequires: rubygem(minitest-mock) +%if !0%{?rhel} +# For test/xml/test_document_encoding.rb +# Drop rubygem(rubyzip) build dependency in RHEL +BuildRequires: rubygem(rubyzip) +%endif BuildRequires: rubygems-devel Obsoletes: ruby-%{gem_name} <= 1.5.2-2 #BuildRequires: ruby(racc) @@ -59,7 +53,6 @@ BuildRequires: libxslt-devel BuildRequires: ruby-devel # ruby27 needs this explicitly BuildRequires: rubygem(racc) -Requires: rubygem(racc) %description Nokogiri parses and searches XML/HTML very quickly, and also has @@ -68,16 +61,6 @@ correctly implemented CSS3 selector support as well as XPath support. Nokogiri also features an Hpricot compatibility layer to help ease the change to using correct CSS and XPath. -%if 0 -%package jruby -Summary: JRuby support for %{name} -Requires: %{name} = %{version}-%{release} - -%description jruby -This package contains JRuby support for %{name}. -%endif - - %package doc Summary: Documentation for %{name} Requires: %{name} = %{version}-%{release} @@ -97,24 +80,23 @@ This package provides non-Gem support for %{gem_name}. %prep %setup -q -n %{gem_name}-%{version} -a 1 +cp -a %{gem_name}-%{version}/{.,*} . mv ../%{gem_name}-%{version}.gemspec . # patches -( -cd %{gem_name}-%{version}/ -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -cd .. -cp -a %{gem_name}-%{version}/{lib,ext} . -) +%patch -P0 -p1 # remove bundled external libraries sed -i \ -e 's|, "ports/archives/[^"][^"]*"||g' \ - -e 's|, "ports/patches/[^"][^"]*"||g' \ + -e 's|, "patches/[^"][^"]*"||g' \ %{gem_name}-%{version}.gemspec +# Make sure gem build will complain later if the previous regex is not enough. +rm -rf \ + ports \ + patches \ + %{nil} + # Actually not needed when using system libraries sed -i -e '\@mini_portile@d' %{gem_name}-%{version}.gemspec @@ -123,7 +105,7 @@ sed -i -e '\@mini_portile@d' %{gem_name}-%{version}.gemspec sed -i \ ext/nokogiri/extconf.rb \ -e "s@^\(def process_recipe.*\)\$@\1 ; return true@" \ - -e "s@^\(append_cppflags\).*gumbo.*\$@\1(\"-I$(pwd)/gumbo-parser/src\")@" \ + -e "s@^\([ \t]*append_cppflags\).*gumbo.*\$@\1(\"-I$(pwd)/gumbo-parser/src\")@" \ -e "\@libs.*gumbo@s@File\.join.*@\"$(pwd)/gumbo-parser/src/libgumbo.a\"@" \ -e "\@LIBPATH.*gumbo@s|^\(.*\)\$|# \1|" \ %{nil} @@ -138,10 +120,10 @@ sed -i \ gumbo-parser/src/Makefile \ -e 's|^\(CFLAGS.*=.*\)$|\1 -fPIC|' +%build # Ummm... env LANG=C.UTF-8 gem build %{gem_name}-%{version}.gemspec -%build # 1.6.0 needs this export NOKOGIRI_USE_SYSTEM_LIBRARIES=yes @@ -157,7 +139,7 @@ popd chmod 0644 .%{gem_dir}/cache/%{gem_name}-%{mainver}%{?prever}.gem # Remove precompiled Java .jar file -rm -f .%{gem_instdir}/lib/*.jar +find .%{gem_instdir}/lib/ -name '*.jar' -delete # For now remove JRuby support rm -rf .%{gem_instdir}/ext/java @@ -194,13 +176,15 @@ do done # Copy document files from full source -cp -p %{gem_name}-%{version}/[A-Z]* %{buildroot}%{gem_instdir}/ +cp -p [A-Z]* %{buildroot}%{gem_instdir}/ # cleanups # Remove bundled gumbo parser pushd %{buildroot}%{gem_instdir} rm -rf \ Gemfile* \ + Rakefile \ + Vagrantfile \ dependencies.yml \ ext \ *gemspec \ @@ -208,10 +192,9 @@ rm -rf \ ports \ %{nil} pushd gumbo-parser -rm \ - Makefile \ - %{nil} -find src -type f | \ +find . -type f | \ + grep -v CHANGES.md | \ + grep -v THANKS | \ grep -v README.md | \ xargs rm -f @@ -227,12 +210,12 @@ export TZ="Asia/Tokyo" LANG=C.UTF-8 # Copy test files from full tarball -cp -a %{gem_name}-%{version}/test/ ./%{gem_instdir} +cp -a test/ ./%{gem_instdir} pushd ./%{gem_instdir} # Remove unneeded simplecov coverage test sed -i test/helper.rb \ - -e '\@require.*simplecov@,\@^end$@d' + -e '\@^ require.*simplecov@,\@^ end$@s|^|#|' # Remove minitest-reporters. It does not provide any additional value while # it blows up the dependency chain. @@ -240,19 +223,23 @@ sed -i '/require..minitest.reporters./ s/^/#/' test/helper.rb sed -i '/Minitest::Reporters/ s/^/#/' test/helper.rb # PPC64LE with ruby3.1 does not seem to support GC.compact -# (On Fedora, the above is backported to 3.0 branch) %ifarch ppc64le export NOKOGIRI_TEST_GC_LEVEL=major %endif +%ifarch s390x +# With ruby 3.2 GC_LEVEL=compact seems to cause segfault: +# change to major for now +if pkg-config --atleast-version 3.2 ruby ; then +export NOKOGIRI_TEST_GC_LEVEL=major +fi +%endif -# Need investigation. For now anyway build env \ - RUBYLIB=".:lib:test:ext" \ + RUBYLIB=".:lib:test:%{buildroot}%{gem_extdir_mri}" \ ruby \ -e \ "require 'test/helper' ; Dir.glob('test/**/test_*.rb'){|f| require f}" || \ exit 1 - echo "Please investigate this" for f in $SKIPTEST do @@ -266,7 +253,9 @@ popd %{gem_extdir_mri}/ %dir %{gem_instdir}/ -%doc %{gem_instdir}/[A-Z]* +%license %{gem_instdir}/LICENSE*.md +%doc %{gem_instdir}/CHANGELOG.md +%doc %{gem_instdir}/README.md %{gem_instdir}/bin/ %{gem_instdir}/lib/ @@ -274,23 +263,223 @@ popd %dir %{gem_instdir}/gumbo-parser %dir %{gem_instdir}/gumbo-parser/src %doc %{gem_instdir}/gumbo-parser/[A-Z]* -%doc %{gem_instdir}/gumbo-parser/src/README.md +%license %{gem_instdir}/gumbo-parser/src/README.md %{gem_dir}/specifications/%{gem_name}-%{mainver}%{?prever}.gemspec %files doc %defattr(-,root,root,-) -%{gem_dir}/doc/%{gem_name}-%{mainver}%{?prever}/ +%doc %{gem_instdir}/CODE_OF_CONDUCT.md +%doc %{gem_instdir}/CONTRIBUTING.md +%doc %{gem_instdir}/ROADMAP.md +%doc %{gem_instdir}/SECURITY.md +%doc %{gem_dir}/doc/%{gem_name}-%{mainver}%{?prever}/ %changelog -* Fri Jun 3 2022 Mamoru TASAKA - 1.13.1-4 -- Make test suite pass with libxml2 2.9.14 +* Thu Jan 08 2026 Mamoru TASAKA - 1.19.0-2 +- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_4.0 -* Tue May 10 2022 Mamoru TASAKA - 1.13.1-3 -- Backport CVE-2022-29181 from between 1.13.5 and 1.13.6 +* Tue Dec 30 2025 Mamoru TASAKA - 1.19.0-1 +- 1.19.0 -* Thu Apr 14 2022 Mamoru TASAKA - 1.13.1-2 -- Backport CVE-2022-24836 from between 1.13.3 and 1.13.4 +* Wed Dec 24 2025 Mamoru TASAKA - 1.18.10-2 +- Handle minitest 6 compatibility + +* Mon Sep 15 2025 Mamoru TASAKA - 1.18.10-1 +- 1.18.10 + +* Fri Jul 25 2025 Fedora Release Engineering - 1.18.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Mon Jul 21 2025 Mamoru TASAKA - 1.18.9-1 +- 1.18.9 + +* Wed Apr 23 2025 Mamoru TASAKA - 1.18.8-1 +- 1.18.8 + +* Mon Apr 07 2025 Mamoru TASAKA - 1.18.7-1 +- 1.18.7 + +* Sat Mar 29 2025 Mamoru TASAKA - 1.18.6-1 +- 1.18.6 + +* Wed Mar 26 2025 Mamoru TASAKA - 1.18.5-2 +- Suppress warnings from Nokogiri::VERSION_INFO (bug 2354787) + +* Thu Mar 20 2025 Mamoru TASAKA - 1.18.5-1 +- 1.18.5 + +* Sun Mar 16 2025 Mamoru TASAKA - 1.18.4-1 +- 1.18.4 + +* Wed Feb 19 2025 Mamoru TASAKA - 1.18.3-1 +- 1.18.3 + +* Mon Jan 20 2025 Mamoru TASAKA - 1.18.2-1 +- 1.18.2 + +* Sat Jan 18 2025 Fedora Release Engineering - 1.18.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Tue Jan 07 2025 Mamoru TASAKA - 1.18.1-2 +- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.4 + +* Mon Dec 30 2024 Mamoru TASAKA - 1.18.1-1 +- 1.18.1 + +* Sat Dec 28 2024 Mamoru TASAKA - 1.18.0-1 +- 1.18.0 + +* Fri Dec 13 2024 Mamoru TASAKA - 1.17.2-1 +- 1.17.2 + +* Wed Dec 11 2024 Mamoru TASAKA - 1.17.1-1 +- 1.17.1 + +* Mon Dec 09 2024 Mamoru TASAKA - 1.17.0-1 +- 1.17.0 + +* Thu Dec 05 2024 Mamoru TASAKA - 1.16.8-1 +- 1.16.8 + +* Wed Jul 31 2024 Mamoru TASAKA - 1.16.7-1 +- 1.16.7 + +* Fri Jul 19 2024 Fedora Release Engineering - 1.16.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Sun Jun 16 2024 Mamoru TASAKA - 1.16.6-1 +- 1.16.6 + +* Tue May 14 2024 Mamoru TASAKA - 1.16.5-1 +- 1.16.5 + +* Thu Apr 25 2024 Mamoru TASAKA - 1.16.4-2 +- Make rubygem-minizip testsuite dependency optional, drop on RHEL + (Patch by Jun Aruga ) + +* Thu Apr 11 2024 Mamoru TASAKA - 1.16.4-1 +- 1.16.4 + +* Sun Mar 17 2024 Mamoru TASAKA - 1.16.3-1 +- 1.16.3 + +* Mon Feb 05 2024 Mamoru TASAKA - 1.16.2-1 +- 1.16.2 + +* Sun Feb 04 2024 Mamoru TASAKA - 1.16.1-1 +- 1.16.1 + +* Fri Jan 26 2024 Fedora Release Engineering - 1.16.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Jan 03 2024 Mamoru TASAKA - 1.16.0-2 +- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.3 + +* Fri Dec 29 2023 Mamoru TASAKA - 1.16.0-1 +- 1.16.0 + +* Sat Nov 18 2023 Mamoru TASAKA - 1.15.5-1 +- 1.15.5 +- Backport upstream patch for libxml2 2.12.0 error handling change + +* Sat Aug 12 2023 Mamoru TASAKA - 1.15.4-1 +- 1.15.4 + +* Sun Aug 6 2023 Mamoru TASAKA - 1.15.3-4 +- Prefer upstream patch for the previous change + +* Fri Aug 4 2023 Mamoru TASAKA - 1.15.3-3 +- Support MiniTest 5.19+ + +* Fri Jul 21 2023 Fedora Release Engineering - 1.15.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Jul 6 2023 Mamoru TASAKA - 1.15.3-1 +- 1.15.3 + +* Thu May 25 2023 Mamoru TASAKA - 1.15.2-1 +- 1.15.2 + +* Sun May 21 2023 Mamoru TASAKA - 1.15.1-1 +- 1.15.1 + +* Tue May 16 2023 Mamoru TASAKA - 1.15.0-1 +- 1.15.0 + +* Fri May 12 2023 Mamoru TASAKA - 1.14.4-1 +- 1.14.4 +- Note that CVE-2022-34169 is for vendored xalan-j, not affecting Fedora + nokogiri + +* Wed Apr 12 2023 Mamoru TASAKA - 1.14.3-1 +- 1.14.3 +- SPDX confirmed + +* Tue Feb 14 2023 Mamoru TASAKA - 1.14.2-1 +- 1.14.2 + +* Tue Jan 31 2023 Mamoru TASAKA - 1.14.1-1 +- 1.14.1 + +* Fri Jan 20 2023 Fedora Release Engineering - 1.14.0-1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sun Jan 15 2023 Mamoru TASAKA - 1.14.0-1 +- 1.14.0 + +* Tue Jan 03 2023 Mamoru TASAKA - 1.13.10-2.1 +- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.2 + +* Sun Dec 25 2022 Mamoru TASAKA - 1.13.10-2 +- Use %%gem_extdir_mri instead of ext for %%check due to ruby3.2 change + for ext cleanup during build + +* Fri Dec 9 2022 Mamoru TASAKA - 1.13.10-1 +- 1.13.10 +- Address CVE-2022-23476 + +* Thu Oct 20 2022 Mamoru TASAKA - 1.13.9-2 +- s390x: change GC_LEVEL to major on ruby3.2 for now + +* Thu Oct 20 2022 Mamoru TASAKA - 1.13.9-1 +- 1.13.9 + +* Wed Jul 27 2022 Mamoru TASAKA - 1.13.8-1 +- 1.13.8 + +* Sat Jul 23 2022 Fedora Release Engineering - 1.13.7-2.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Wed Jul 13 2022 Mamoru TASAKA - 1.13.7-2 +- Bump release + +* Wed Jul 13 2022 Mamoru TASAKA - 1.13.7-1 +- 1.13.7 + +* Tue May 10 2022 Mamoru TASAKA - 1.13.6-1 +- 1.13.6 +- Addresses CVE-2022-29181 + +* Thu May 5 2022 Mamoru TASAKA - 1.13.5-1 +- 1.13.5 + +* Thu Apr 14 2022 Mamoru TASAKA - 1.13.4-1 +- 1.13.4 +- Addresses CVE-2022-24836 + +* Tue Feb 22 2022 Mamoru TASAKA - 1.13.3-1 +- 1.13.3 + +* Wed Jan 26 2022 Mamoru TASAKA - 1.13.1-2 +- Set NOKOGIRI_TEST_GC_LEVEL to major on ppc64le as + ruby31 does not seem to support GC.compat on the platform + +* Wed Jan 26 2022 Mamoru TASAKA - 1.13.1-1.2 +- F-36: rebuild against ruby31 + +* Fri Jan 21 2022 Fedora Release Engineering - 1.13.1-1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild * Fri Jan 14 2022 Mamoru TASAKA - 1.13.1-1 - 1.13.1 diff --git a/sources b/sources index 1d5eb77..52222fb 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (nokogiri-1.13.1.gem) = 0ed89f53cdb6097c435856ddfa55eeef972a1e33d4e6db2fb8fc66f48827e2f863155b9468fc7cd1c17a7d1a5e2ce8adb91299e4425123034e823b74190cff26 -SHA512 (rubygem-nokogiri-1.13.1-full.tar.gz) = 6beb9a840baf40488245c58088d692e6df7d936b0866ddd4db8575855175b984992cad692d1b7e451dc0a4cbc5dbc9e7f0d6f3936da15a86a0d9abb5e28ef577 +SHA512 (rubygem-nokogiri-1.19.0-full.tar.gz) = 29dd894b176857d55eb5e670f50e69762e74c0a13e6949030af17e3c84b65f9dfe0087210b84a7c77749d3d1a4a33292d62f7005003745e8f087d822ee64f4b1 +SHA512 (nokogiri-1.19.0.gem) = d9326a2e60b6ea3152c5f9d53df738610f18ca57cffcd3bf2f8b07a2b08b30085d0fce2ca8206279ad6a0f1a613e9e76821c09aef45cf5e5b2d00ff766734872