diff --git a/nokogiri-1.14.5-pr2920-fix-argument-typechecking.patch b/nokogiri-1.14.5-pr2920-fix-argument-typechecking.patch new file mode 100644 index 0000000..be60447 --- /dev/null +++ b/nokogiri-1.14.5-pr2920-fix-argument-typechecking.patch @@ -0,0 +1,48 @@ +diff -urp '--exclude=*~' nokogiri-1.14.5.orig/ext/nokogiri/xml_cdata.c nokogiri-1.14.5/ext/nokogiri/xml_cdata.c +--- nokogiri-1.14.5.orig/ext/nokogiri/xml_cdata.c 2023-05-24 21:29:21.000000000 +0900 ++++ nokogiri-1.14.5/ext/nokogiri/xml_cdata.c 2023-07-06 17:08:18.578360070 +0900 +@@ -25,6 +25,12 @@ new (int argc, VALUE *argv, VALUE klass) + + rb_scan_args(argc, argv, "2*", &doc, &content, &rest); + ++ if (!rb_obj_is_kind_of(doc, cNokogiriXmlNode)) { ++ rb_raise(rb_eTypeError, ++ "expected first parameter to be a Nokogiri::XML::Document, received %"PRIsVALUE, ++ rb_obj_class(doc)); ++ } ++ + Noko_Node_Get_Struct(doc, xmlDoc, xml_doc); + + if (!NIL_P(content)) { +diff -urp '--exclude=*~' nokogiri-1.14.5.orig/ext/nokogiri/xml_schema.c nokogiri-1.14.5/ext/nokogiri/xml_schema.c +--- nokogiri-1.14.5.orig/ext/nokogiri/xml_schema.c 2023-05-24 21:29:21.000000000 +0900 ++++ nokogiri-1.14.5/ext/nokogiri/xml_schema.c 2023-07-06 17:06:57.466287513 +0900 +@@ -208,6 +208,12 @@ from_document(int argc, VALUE *argv, VAL + + scanned_args = rb_scan_args(argc, argv, "11", &document, &parse_options); + ++ if (!rb_obj_is_kind_of(document, cNokogiriXmlNode)) { ++ rb_raise(rb_eTypeError, ++ "expected parameter to be a Nokogiri::XML::Document, received %"PRIsVALUE, ++ rb_obj_class(document)); ++ } ++ + Noko_Node_Get_Struct(document, xmlDoc, doc); + doc = doc->doc; /* In case someone passes us a node. ugh. */ + +diff -urp '--exclude=*~' nokogiri-1.14.5.orig/ext/nokogiri/xml_text.c nokogiri-1.14.5/ext/nokogiri/xml_text.c +--- nokogiri-1.14.5.orig/ext/nokogiri/xml_text.c 2023-05-24 21:29:21.000000000 +0900 ++++ nokogiri-1.14.5/ext/nokogiri/xml_text.c 2023-07-06 17:08:46.028384621 +0900 +@@ -20,6 +20,12 @@ new (int argc, VALUE *argv, VALUE klass) + + rb_scan_args(argc, argv, "2*", &string, &document, &rest); + ++ if (!rb_obj_is_kind_of(document, cNokogiriXmlNode)) { ++ rb_raise(rb_eTypeError, ++ "expected second parameter to be a Nokogiri::XML::Document, received %"PRIsVALUE, ++ rb_obj_class(document)); ++ } ++ + Noko_Node_Get_Struct(document, xmlDoc, doc); + + node = xmlNewText((xmlChar *)StringValueCStr(string)); diff --git a/nokogiri-create-full-tarball.sh b/nokogiri-create-full-tarball.sh index 1cb4822..d6fbd01 100644 --- a/nokogiri-create-full-tarball.sh +++ b/nokogiri-create-full-tarball.sh @@ -1,17 +1,5 @@ #!/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 " @@ -29,14 +17,10 @@ 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 \ - "--exclude=nokogiri-$2/./.git" \ - $1-$2/./ +tar czf ${CURRDIR}/rubygem-$1-$2-full.tar.gz $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 6a34634..c1ed61c 100644 --- a/rubygem-nokogiri-1.11.0.rc4-shutdown-libxml2-warning.patch +++ b/rubygem-nokogiri-1.11.0.rc4-shutdown-libxml2-warning.patch @@ -1,13 +1,10 @@ ---- 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 +--- 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 def warnings -+ [] -+ end -+ -+ def warnings_original warnings = [] ++ return warnings if libxml2? + if compiled_libxml_version != loaded_libxml_version diff --git a/rubygem-nokogiri-1.18.10-minitest6.patch b/rubygem-nokogiri-1.18.10-minitest6.patch deleted file mode 100644 index f2e2b8f..0000000 --- a/rubygem-nokogiri-1.18.10-minitest6.patch +++ /dev/null @@ -1,11 +0,0 @@ -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.spec b/rubygem-nokogiri.spec index b28fa64..3f9ceae 100644 --- a/rubygem-nokogiri.spec +++ b/rubygem-nokogiri.spec @@ -1,4 +1,4 @@ -%global mainver 1.19.0 +%global mainver 1.14.5 #%%global prever .rc4 %global baserelease 2 @@ -29,17 +29,15 @@ Source1: rubygem-%{gem_name}-%{version}%{?prever}-full.tar.gz Source2: nokogiri-create-full-tarball.sh # Shut down libxml2 version unmatching warning Patch0: %{name}-1.11.0.rc4-shutdown-libxml2-warning.patch +# https://github.com/sparklemotion/nokogiri/pull/2920 +# Backport to 1.14.5 +Patch1: %{gem_name}-1.14.5-pr2920-fix-argument-typechecking.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) @@ -53,6 +51,7 @@ 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 @@ -80,23 +79,17 @@ 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 %patch -P0 -p1 +%patch -P1 -p1 # remove bundled external libraries sed -i \ -e 's|, "ports/archives/[^"][^"]*"||g' \ - -e 's|, "patches/[^"][^"]*"||g' \ + -e 's|, "ports/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 @@ -105,7 +98,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@^\([ \t]*append_cppflags\).*gumbo.*\$@\1(\"-I$(pwd)/gumbo-parser/src\")@" \ + -e "s@^\(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} @@ -176,7 +169,7 @@ do done # Copy document files from full source -cp -p [A-Z]* %{buildroot}%{gem_instdir}/ +cp -p %{gem_name}-%{version}/[A-Z]* %{buildroot}%{gem_instdir}/ # cleanups # Remove bundled gumbo parser @@ -192,9 +185,10 @@ rm -rf \ ports \ %{nil} pushd gumbo-parser -find . -type f | \ - grep -v CHANGES.md | \ - grep -v THANKS | \ +rm \ + Makefile \ + %{nil} +find src -type f | \ grep -v README.md | \ xargs rm -f @@ -210,12 +204,12 @@ export TZ="Asia/Tokyo" LANG=C.UTF-8 # Copy test files from full tarball -cp -a test/ ./%{gem_instdir} +cp -a %{gem_name}-%{version}/test/ ./%{gem_instdir} pushd ./%{gem_instdir} # Remove unneeded simplecov coverage test sed -i test/helper.rb \ - -e '\@^ require.*simplecov@,\@^ end$@s|^|#|' + -e '\@require.*simplecov@,\@^end$@s|^|#|' # Remove minitest-reporters. It does not provide any additional value while # it blows up the dependency chain. @@ -225,6 +219,11 @@ sed -i '/Minitest::Reporters/ s/^/#/' test/helper.rb # PPC64LE with ruby3.1 does not seem to support GC.compact %ifarch ppc64le export NOKOGIRI_TEST_GC_LEVEL=major +# F36 ruby has not implemented runtime GC compaction support yet +# c.f https://src.fedoraproject.org/rpms/ruby/pull-request/126 +%if 0%{?fedora} <= 36 +sed -i test/test_compaction.rb -e 's|skip unless GC.respond_to.*|skip|' +%endif %endif %ifarch s390x # With ruby 3.2 GC_LEVEL=compact seems to cause segfault: @@ -276,136 +275,11 @@ popd %doc %{gem_dir}/doc/%{gem_name}-%{mainver}%{?prever}/ %changelog -* Thu Jan 08 2026 Mamoru TASAKA - 1.19.0-2 -- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_4.0 +* Thu Jul 6 2023 Mamoru TASAKA - 1.14.5-2 +- Backport pr2920: Fix argument typechecking in Text.new and et al -* Tue Dec 30 2025 Mamoru TASAKA - 1.19.0-1 -- 1.19.0 - -* 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 +* Thu May 25 2023 Mamoru TASAKA - 1.14.5-1 +- 1.14.5 * Fri May 12 2023 Mamoru TASAKA - 1.14.4-1 - 1.14.4 diff --git a/sources b/sources index 52222fb..98e62c0 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (rubygem-nokogiri-1.19.0-full.tar.gz) = 29dd894b176857d55eb5e670f50e69762e74c0a13e6949030af17e3c84b65f9dfe0087210b84a7c77749d3d1a4a33292d62f7005003745e8f087d822ee64f4b1 -SHA512 (nokogiri-1.19.0.gem) = d9326a2e60b6ea3152c5f9d53df738610f18ca57cffcd3bf2f8b07a2b08b30085d0fce2ca8206279ad6a0f1a613e9e76821c09aef45cf5e5b2d00ff766734872 +SHA512 (nokogiri-1.14.5.gem) = 9621716da66fc715944ccf85145ddf34ada979e6469d668e4e80ad1d27a5e3d9eaf94b050a7fe24ef9f2ca5a96736c96f26598053980bbccfe9a3459c669fc5e +SHA512 (rubygem-nokogiri-1.14.5-full.tar.gz) = 974ade3cb66bab8f7d3abd1acbe07ad90113c1907b56eecc544825650d60e2d96aae6397c8a8f77e7a31d9a33cea7d7a698340234312c27dd816e2480dc6082a