%global gem_name bundler
%bcond_with tests

%global fileutils_version 0.7.2
%global molinillo_version 0.7.0
%global net_http_persistent_version 4.0.0
%global thor_version 1.1.0

Name: rubygem-%{gem_name}
Version: 2.2.33
Release: 1
Summary: Library and utilities to manage a Ruby application's gem dependencies
License: MIT
URL: http://bundler.io
Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem
Source1: https://github.com/rubygems/rubygems/archive/refs/tags/%{gem_name}-v%{version}.tar.gz
BuildArch: noarch
Requires: rubygem(io-console)
BuildRequires: ruby(release) rubygems-devel ruby
%if %{with tests}
BuildRequires: ruby-devel rubygem(rspec) >= 3.0 git %{_bindir}/ps
%endif
Provides: bundled(rubygem-fileutils) = %{fileutils_version}
Provides: bundled(rubygem-molinillo) = %{molinillo_version}
Provides: bundled(rubygem-net-http-persisntent) = %{net_http_persistent_version}
Provides: bundled(rubygem-thor) = %{thor_version}

%description
Bundler manages an application's dependencies through its entire life, across
many machines, systematically and repeatably.

%package help
Summary: %{name} documentation
Requires: %{name} = %{version}-%{release}
BuildArch: noarch
Provides: %{name}-doc = %{version}-%{release}
Obsoletes: %{name}-doc < %{version}-%{release}

%description help
This package provides help documents for %{name}.

%prep
%autosetup -c -T -n %{name}
%gem_install -n %{SOURCE0}

%build

%install
mkdir -p %{buildroot}%{gem_dir}
cp -a .%{gem_dir}/* %{buildroot}%{gem_dir}/
mkdir -p %{buildroot}%{_bindir}
cp -a .%{_bindir}/* %{buildroot}%{_bindir}/
find %{buildroot}%{gem_instdir}/exe -type f | xargs chmod a+x
chmod a-x %{buildroot}%{gem_libdir}/bundler/templates/Executable

for n in 5 1; do
  mkdir -p %{buildroot}%{_mandir}/man${n}
  for file in %{buildroot}%{gem_instdir}/lib/bundler/man/*.${n}; do
    base_name=$(basename "${file}")
    cp -a "${file}" "%{buildroot}%{_mandir}/man${n}/${base_name}"
  done
done

%check
pushd .%{gem_instdir}
[ `ls lib/bundler/vendor | wc -l` == 8 ]

ruby -e '
  module Bundler; end
  require "./lib/bundler/vendor/fileutils/lib/fileutils.rb"'

[ `ruby -e '
  module Bundler; end
  require "./lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata"
  puts Bundler::Molinillo::VERSION'` == '%{molinillo_version}' ]

[ `ruby -Ilib -e '
  module Bundler; module Persistent; module Net; module HTTP; end; end; end; end
  require "./lib/bundler/vendor/net-http-persistent/lib/net/http/persistent"
  puts Bundler::Persistent::Net::HTTP::Persistent::VERSION'` == '%{net_http_persistent_version}' ]

[ `ruby -e '
  module Bundler; end
  require "./lib/bundler/vendor/thor/lib/thor/version"
  puts Bundler::Thor::VERSION'` == '%{thor_version}' ]

%if %{with tests}
tar xzvf %{SOURCE1}
gem spec %{SOURCE0} -l --ruby > %{gem_name}.gemspec
sed -i '/^          context "with color" do$/,/^          end$/ s/^/#/' \
  spec/bundler/source_spec.rb

sed -i '/^      it "like a normally executed executable" do$/,/^      end$/ s/^/#/' \
  spec/commands/exec_spec.rb

sed -i '/^    context "given a default gem shippped in ruby" do$/,/^    end$/ s/^/#/' \
  spec/commands/info_spec.rb

mkdir -p %{_builddir}/rubygems/rubygems/defaults/
touch %{_builddir}/rubygems/rubygems/defaults/operating_system.rb

RUBYOPT=-I%{_builddir}/rubygems GEM_PATH=%{gem_dir} rspec -rspec_helper spec -f d
%endif

popd

%files
%dir %{gem_instdir}
%{_bindir}/bundle
%{_bindir}/bundler
%exclude %{gem_instdir}/.*
%exclude %{gem_libdir}/bundler/ssl_certs/index.rubygems.org
%exclude %{gem_libdir}/bundler/ssl_certs/rubygems.global.ssl.fastly.net
%exclude %{gem_libdir}/bundler/ssl_certs/rubygems.org
%exclude %{gem_libdir}/bundler/ssl_certs/.document
%license %{gem_instdir}/LICENSE.md
%exclude %{gem_instdir}/bundler.gemspec
%{gem_instdir}/exe
%{gem_libdir}
%exclude %{gem_instdir}/lib/bundler/man/*.ronn
%exclude %{gem_cache}
%{gem_spec}

%files help
%doc %{gem_instdir}/lib/bundler/man
%doc %{gem_docdir}
%doc %{gem_instdir}/CHANGELOG.md
%doc %{gem_instdir}/README.md
%doc %{_mandir}/man1/*
%doc %{_mandir}/man5/*

%changelog
* Wed Dec 29 2021 houyingchao <houyingchao@huawei.com> - 2.2.33-1
- Upgrade to 2.2.33
- Fix CVE-2021-43809

* Wed Jun 8 2021 zhaomengchao <zhaomengchao3@huawei.com> - 2.2.19-1
* Upgrade to 2.2.19

* Fri 06 Feb 2020 openEuler Buildteam <buildteam@openeuler.org> - 1.61.1-5
* Package init
