%global mainver 1.14.4 %global mainrel 1 %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: 1 License: MIT and Apache-2.0 URL: https://nokogiri.org Source0: https://rubygems.org/gems/%{gem_name}-%{mainver}%{?prever}.gem Source1: rubygem-%{gem_name}-%{version}%{?prever}-full.tar.gz BuildRequires: ruby(release) ruby(rubygems) rubygem(minitest) rubygems-devel rubygem(rubyzip) BuildRequires: rubygem(did_you_mean) Obsoletes: ruby-%{gem_name} <= 1.5.2-2 BuildRequires: gcc libxml2-devel libxslt-devel ruby-devel glibc-all-langpacks rubygem(racc) Requires: rubygem(racc) %description Nokogiri parses and searches XML/HTML very quickly, and also has 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} %description doc This package contains documentation for %{name}. %package -n ruby-%{gem_name} Summary: Non-Gem support package for %{gem_name} Requires: %{name} = %{version}-%{release} Provides: ruby(%{gem_name}) = %{version}-%{release} %description -n ruby-%{gem_name} This package provides non-Gem support for %{gem_name}. %global version %{mainver}%{?prever} %prep %setup -q -n %{gem_name}-%{version} -a 1 mv ../%{gem_name}-%{version}.gemspec . sed -i \ -e 's|, "ports/archives/[^"][^"]*"||g' \ -e 's|, "ports/patches/[^"][^"]*"||g' \ %{gem_name}-%{version}.gemspec 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 "\@libs.*gumbo@s@File\.join.*@\"$(pwd)/gumbo-parser/src/libgumbo.a\"@" \ -e "\@LIBPATH.*gumbo@s|^\(.*\)\$|# \1|" \ %{nil} sed -i \ gumbo-parser/src/char_ref.c \ -e '\@^#line [0-9]@s|^\(.*\)$|// \1|' sed -i \ gumbo-parser/src/Makefile \ -e 's|^\(CFLAGS.*=.*\)$|\1 -fPIC|' env LANG=C.UTF-8 gem build %{gem_name}-%{version}.gemspec #CVE-2022-40303 https://gitlab.gnome.org/GNOME/libxml2/-/commit/c846986 sed -i 's/assert_predicate(handler.errors, :empty?)/assert_match(\/CData section too big\/, handler.errors.first)/g' nokogiri-1.14.4/test/xml/sax/test_parser.rb %build export NOKOGIRI_USE_SYSTEM_LIBRARIES=yes %set_build_flags pushd gumbo-parser/src/ make libgumbo.a popd %gem_install chmod 0644 .%{gem_dir}/cache/%{gem_name}-%{mainver}%{?prever}.gem rm -f .%{gem_instdir}/lib/*.jar rm -rf .%{gem_instdir}/ext/java %install mkdir -p %{buildroot}%{gem_dir} cp -a ./%{gem_dir}/* %{buildroot}%{gem_dir} cp -a ./gumbo-parser %{buildroot}%{gem_instdir}/ find %{buildroot} -name \*.orig_\* | xargs rm -vf mkdir -p %{buildroot}%{gem_extdir_mri} cp -a ./%{gem_extdir_mri}/* %{buildroot}%{gem_extdir_mri}/ pushd %{buildroot} rm -f .%{gem_extdir_mri}/{gem_make.out,mkmf.log} popd mkdir -p %{buildroot}%{_bindir} cp -pa .%{_bindir}/* \ %{buildroot}%{_bindir}/ for f in $(find %{buildroot}%{gem_instdir} -name \*.rb) do sed -i -e '/^#!/d' $f chmod 0644 $f done cp -p %{gem_name}-%{version}/[A-Z]* %{buildroot}%{gem_instdir}/ pushd %{buildroot}%{gem_instdir} rm -rf \ Gemfile* \ dependencies.yml \ ext \ *gemspec \ patches \ ports \ %{nil} pushd gumbo-parser rm \ Makefile \ %{nil} find src -type f | \ grep -v README.md | \ xargs rm -f popd rm -f %{buildroot}%{gem_cache} %check export TZ="Asia/Tokyo" LANG=C.UTF-8 cp -a %{gem_name}-%{version}/test/ ./%{gem_instdir} pushd ./%{gem_instdir} sed -i test/helper.rb \ -e '\@require.*simplecov@,\@^end$@s|^|#|' sed -i '/require..minitest.reporters./ s/^/#/' test/helper.rb sed -i '/Minitest::Reporters/ s/^/#/' test/helper.rb env \ 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 mv $f.skip $f done popd %files %{_bindir}/%{gem_name} %{gem_extdir_mri}/ %dir %{gem_instdir}/ %doc %{gem_instdir}/[A-Z]* %{gem_instdir}/bin/ %{gem_instdir}/lib/ %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 %{gem_dir}/specifications/%{gem_name}-%{mainver}%{?prever}.gemspec %files doc %defattr(-,root,root,-) %{gem_dir}/doc/%{gem_name}-%{mainver}%{?prever}/ %changelog * Tue Aug 01 2023 jiangxinyu - 1.14.4-1 - Update to 1.14.4 * Fri Nov 11 2022 Ge Wang - 1.13.7-2 - fix build failure due to libxml fixed CVE * Thu Jul 14 2022 Ge Wang - 1.13.7-1 - update to 1.13.7 * Sun Apr 24 2022 wangkai - 1.13.1-2 - Fix CVE-2022-24836 * Tue Mar 29 2022 liyanan - 1.13.1-1 - update to 1.13.1 * Tue Oct 12 2021 yaoxin - 1.10.5-3 - fix CVE-2021-41098 * Wed Mar 17 2021 zhanghua - 1.10.5-2 - fix CVE-2020-26247 * Wed Aug 19 2020 luoshengwei - 1.10.5-1 - package init