From 039ae15f337f65ff9bebbf12f788c79307e1af20 Mon Sep 17 00:00:00 2001
From: Jakub Jirutka <jakub@jirutka.cz>
Date: Mon, 31 May 2021 01:43:05 +0200
Subject: [PATCH] community/ruby-nokogiri: upgrade to 1.11.6 and re-enable
 tests

Resolves #12703
Resolves #12359
---
 community/ruby-nokogiri/APKBUILD              | 45 +++++++------------
 .../ruby-nokogiri/gemspec-fix-deps.patch      | 15 +++++++
 .../ruby-nokogiri/remove-simplecov.patch      | 11 -----
 .../skip-tests-broken-on-musl.patch           | 10 -----
 .../test-helper-remove-unnecessary-deps.patch | 22 +++++++++
 5 files changed, 54 insertions(+), 49 deletions(-)
 create mode 100644 community/ruby-nokogiri/gemspec-fix-deps.patch
 delete mode 100644 community/ruby-nokogiri/remove-simplecov.patch
 delete mode 100644 community/ruby-nokogiri/skip-tests-broken-on-musl.patch
 create mode 100644 community/ruby-nokogiri/test-helper-remove-unnecessary-deps.patch

diff --git a/community/ruby-nokogiri/APKBUILD b/community/ruby-nokogiri/APKBUILD
index b34cfac04b7e..b4e84bd5b081 100644
--- a/community/ruby-nokogiri/APKBUILD
+++ b/community/ruby-nokogiri/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: Jakub Jirutka <jakub@jirutka.cz>
 pkgname=ruby-nokogiri
 _gemname=${pkgname#ruby-}
-pkgver=1.10.10
+pkgver=1.11.6
 pkgrel=0
 pkgdesc="An HTML, XML, SAX, and Reader parser"
 url="https://nokogiri.org/"
@@ -12,32 +12,17 @@ depends="ruby"
 makedepends="ruby-dev ruby-mini_portile2 libxml2-dev libxslt-dev"
 checkdepends="ruby-minitest ruby-test-unit"
 source="https://github.com/sparklemotion/$_gemname/archive/v$pkgver/$_gemname-$pkgver.tar.gz
-	https://rubygems.org/downloads/$_gemname-$pkgver.gem
-	remove-simplecov.patch
-	skip-tests-broken-on-musl.patch
+	gemspec-fix-deps.patch
+	test-helper-remove-unnecessary-deps.patch
 	"
 builddir="$srcdir/$_gemname-$pkgver"
-options="!check" # some tests check error messages generated by libxml2
 
 # secfixes:
+#   1.11.6-r0:
+#     - CVE-2020-26247
 #   1.10.4-r0:
 #     - CVE-2019-5477
 
-prepare() {
-	default_prepare
-
-	# Generate gemspec (there's no gemspec in the source).
-	gem specification -l --ruby "$srcdir"/$_gemname-$pkgver.gem \
-		> "$builddir"/$_gemname.gemspec
-
-	# Remove bundled external libraries etc.
-	sed -i \
-		-e 's|, "ports/archives/[^"][^"]*"||g' \
-		-e 's|, "ports/patches/[^"][^"]*"||g' \
-		-e '\@mini_portile@d' \
-		$_gemname.gemspec
-}
-
 build() {
 	gem build $_gemname.gemspec
 	gem install \
@@ -52,15 +37,18 @@ build() {
 	# Remove unnecessary files and rubbish...
 	find dist/extensions/ -name mkmf.log -delete
 	cd dist/gems/$_gemname-$pkgver/
-	rm -rf ext/ patches/ lib/nokogiri/*.so *.md *.yml
+	rm -rf ext/ patches/
+	rm *.md *.yml
+	rm lib/*.jar
+	rm lib/nokogiri/*.so
+	rm lib/nokogiri/css/*.rex lib/nokogiri/css/*.y
 }
 
 check() {
 	local extpath=$(dirname dist/extensions/*/*/$_gemname-$pkgver/gem_make.out)
 
-	# Note: This is copied from Fedora package.
-	export LANG=ja_JP.UTF-8
-	ruby -I.:test:dist/gems/$_gemname-$pkgver/lib:$extpath \
+	# Note: This is based on Fedora package.
+	LANG="C.UTF-8" RUBYLIB=".:dist/gems/$_gemname-$pkgver/lib:test:$extpath" ruby \
 		-e 'require "test/helper"' \
 		-e 'Dir.glob("test/**/test_*.rb") {|f| require f }'
 }
@@ -74,7 +62,8 @@ package() {
 	cp -r bin extensions gems specifications "$gemdir"/
 }
 
-sha512sums="2d0bf09af417f0f5e7b07b9f2c555ce04e22d69ce73b484906d8a35745f90d6467824d0d56d8dadc53f020c56a7806e7152cd6347e47596e79ddaaadea1ff65a  nokogiri-1.10.10.tar.gz
-b4628df47dbd8b9123a6f0625829e745a19d26539d54b2748c985d6fdda978072bdcd136df2f47535984186eae7fb318b67d59f1ea413777f1a146bc78e0dae2  nokogiri-1.10.10.gem
-b3346647e55ded3c20775458f35f85c81222a7147c8e4040db0e09f1161e999d824570e29f4fc5bd34b9808ea047b9d2308ea32718b46143cceb777ffa2e63a6  remove-simplecov.patch
-5f92d4cf87751c404a33dfbdc035dd5b54163eccdc46b4f515e6d6367a9573cf3fc4ef3c12c5b9e099b20f6c563d5a573acb1c2716890e492bfb26aa91f2cb5d  skip-tests-broken-on-musl.patch"
+sha512sums="
+a9d2977ba5a12cb252ee615cffbbf043227e78d746ecba4bfcd82fa825f5ef9fdb74feae27115b16cd65da6dd189e4ac88f1d605e776dfbc52aaf2e0e3044381  nokogiri-1.11.6.tar.gz
+87911f3fa1fa26f2bb5f2abc851fa29527aeab276da05ddb45d92be960a2d742361f388c91d836fad8d43550a7b05822e05806f1591868edd1c82f09f6f1e20e  gemspec-fix-deps.patch
+81c05ac93387a5f6f0b3e7389f7c14cc9398344f91061e2cf57682a53979cecbf5c0f05913d8f1b320887fa123fa18421fea8043bb757a9bcca692e4fec84448  test-helper-remove-unnecessary-deps.patch
+"
diff --git a/community/ruby-nokogiri/gemspec-fix-deps.patch b/community/ruby-nokogiri/gemspec-fix-deps.patch
new file mode 100644
index 000000000000..fb02733bc62d
--- /dev/null
+++ b/community/ruby-nokogiri/gemspec-fix-deps.patch
@@ -0,0 +1,15 @@
+racc and mini_portile2 are needed only to build native extension.
+
+--- a/nokogiri.gemspec
++++ b/nokogiri.gemspec
+@@ -262,8 +262,8 @@
+   spec.extra_rdoc_files += Dir.glob("README.md")
+   spec.rdoc_options = ["--main", "README.md"]
+ 
+-  spec.add_runtime_dependency("racc", "~> 1.4")
+-  spec.add_runtime_dependency("mini_portile2", "~> 2.5.0") unless java_p # keep version in sync with extconf.rb
++  spec.add_development_dependency("racc", "~> 1.4")
++  spec.add_development_dependency("mini_portile2", "~> 2.5.0") unless java_p # keep version in sync with extconf.rb
+ 
+   spec.add_development_dependency("bundler", "~> 2.2")
+   spec.add_development_dependency("concourse", "~> 0.41")
diff --git a/community/ruby-nokogiri/remove-simplecov.patch b/community/ruby-nokogiri/remove-simplecov.patch
deleted file mode 100644
index 14dea51496ec..000000000000
--- a/community/ruby-nokogiri/remove-simplecov.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/test/helper.rb
-+++ b/test/helper.rb
-@@ -1,8 +1,3 @@
--require 'simplecov'
--SimpleCov.start do
--  add_filter "/test/"
--end
--
- $VERBOSE = true
- require 'minitest/autorun'
- require 'minitest/pride'
diff --git a/community/ruby-nokogiri/skip-tests-broken-on-musl.patch b/community/ruby-nokogiri/skip-tests-broken-on-musl.patch
deleted file mode 100644
index f07717a98a43..000000000000
--- a/community/ruby-nokogiri/skip-tests-broken-on-musl.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/test/html/test_document_encoding.rb
-+++ b/test/html/test_document_encoding.rb
-@@ -19,6 +19,7 @@
-       end
- 
-       def test_encoding_without_charset
-+        skip 'Not supported on musl'
-         doc = Nokogiri::HTML File.open(SHIFT_JIS_NO_CHARSET, 'r:cp932:cp932').read
- 
-         hello = "こんにちは"
diff --git a/community/ruby-nokogiri/test-helper-remove-unnecessary-deps.patch b/community/ruby-nokogiri/test-helper-remove-unnecessary-deps.patch
new file mode 100644
index 000000000000..53d41eaaae1e
--- /dev/null
+++ b/community/ruby-nokogiri/test-helper-remove-unnecessary-deps.patch
@@ -0,0 +1,22 @@
+--- a/test/helper.rb
++++ b/test/helper.rb
+@@ -11,19 +11,12 @@
+ #   - "stress" - run tests with GC.stress set to true
+ # - NOKOGIRI_GC: read more in test/test_memory_leak.rb
+ #
+-require 'simplecov'
+-SimpleCov.start do
+-  add_filter "/test/"
+-end
+ 
+ $VERBOSE = true
+ 
+ require 'minitest/autorun'
+-require 'minitest/reporters'
+ NOKOGIRI_MINITEST_REPORTERS_OPTIONS = { color: true, slow_count: 10, detailed_skip: false }
+ NOKOGIRI_MINITEST_REPORTERS_OPTIONS[:fast_fail] = true if ENV["NOKOGIRI_TEST_FAIL_FAST"]
+-puts "Minitest::Reporters options: #{NOKOGIRI_MINITEST_REPORTERS_OPTIONS}"
+-Minitest::Reporters.use!(Minitest::Reporters::DefaultReporter.new(NOKOGIRI_MINITEST_REPORTERS_OPTIONS))
+ 
+ require 'fileutils'
+ require 'tempfile'
-- 
GitLab