# Contributor: Fabian Affolter <fabian@affolter-engineering.ch>
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
#
# TODO: Unbundle gombo-parser.
pkgname=ruby-nokogiri
_gemname=${pkgname#ruby-}
pkgver=1.18.8
pkgrel=0
pkgdesc="An HTML, XML, SAX, and Reader parser"
url="https://nokogiri.org/"
arch="all"
license="MIT"
depends="
	ruby
	ruby-racc"
makedepends="
	libxml2-dev
	libxslt-dev
	ruby-dev
	ruby-mini_portile2
	"
checkdepends="ruby-minitest ruby-test-unit"
source="https://github.com/sparklemotion/$_gemname/archive/v$pkgver/$_gemname-$pkgver.tar.gz
	gemspec-fix-deps.patch
	shutdown-libxml2-warning.patch
	test-skip-zip.patch
	"
builddir="$srcdir/$_gemname-$pkgver"

# secfixes:
#   1.13.10-r0:
#     - CVE-2022-23476
#   1.13.6-r0:
#     - CVE-2022-29181
#   1.13.4-r0:
#     - CVE-2022-24836
#   1.11.6-r0:
#     - CVE-2020-26247
#   1.10.4-r0:
#     - CVE-2019-5477

prepare() {
	default_prepare

	case "$CARCH" in
		# NotImplementedError: Compaction isn't available on this platform.
		ppc64le) rm test/test_compaction.rb ;;
	esac
}

build() {
	gem build $_gemname.gemspec
	gem install \
		--local \
		--install-dir dist \
		--ignore-dependencies \
		--no-document \
		--verbose \
		$_gemname-$pkgver.gem -- \
			--use-system-libraries

	# Remove unnecessary files and rubbish...
	find dist/extensions/ -name mkmf.log -delete
	cd dist/gems/$_gemname-$pkgver/
	rm -rf ext/ gumbo-parser/ patches/
	rm ./*.md ./*.yml
	rm -rf lib/nokogiri/jruby/  # TODO: move into subpackage?
	rm lib/nokogiri/*.so
	rm lib/nokogiri/css/*.rex lib/nokogiri/css/*.y
}

check() {
	case "$CARCH" in
		# Fix NotImplementedError: Compaction isn't available on this platform.
		ppc64le) export NOKOGIRI_TEST_GC_LEVEL=major;;
	esac

	LANG="C.UTF-8" GEM_PATH="dist" \
	ruby -I lib -I test -r helper \
		-e "Dir.glob('./test/**/test_*.rb', &method(:require))" -- --verbose
}

package() {
	local gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')"

	cd "$builddir"/dist

	mkdir -p "$gemdir"
	cp -r bin extensions gems specifications "$gemdir"/
}

sha512sums="
cefec463825c7664dc81b8668d8bf18a9fa4b659dbece0d1251c913eeccac1c762fb30fdd183e8fdd4a3da89e8cfa1bf828a1d9b11809c6f8c61fd4efa990306  nokogiri-1.18.8.tar.gz
55c73affd7dc63071b910bdfe6ec144c1675b1aa1a3e37142e3b77c16287e350aee5a996a1f5846bb90b3ffa0497f3f6476819a4f32b7f27772e875cbfbc2b7d  gemspec-fix-deps.patch
55f8bf6dde84cc4d82fecff672b46230fc3fc5c2cf51959baec98ea8e6c09a053a54a5ef994d6cb1bb45dda6a3999f561aa092b7e957051f5562e09ad447c028  shutdown-libxml2-warning.patch
0d9ed7bdcf1cd6212fee1f27da82a1ebf55fa5420e2436be4e0cc984868ca9441154917c93777c2d7d1fff8851fa7ba0c32f6a01517879e0da157b8960941bc3  test-skip-zip.patch
"
