%global gem_name activestorage
%bcond_without bootstrap
%bcond_with ffmpeg
Name:                rubygem-%{gem_name}
Version:             7.0.4
Release:             1
Summary:             Local and cloud file storage framework
License:             MIT
URL:                 http://rubyonrails.org
Source0:             https://rubygems.org/gems/%{gem_name}-%{version}.gem
# The gem doesn't ship with the test suite.
# You may check it out like so
# git clone https://github.com/rails/rails.git
# cd rails/activestorage && git archive -v -o activestorage-7.0.4-tests.txz v7.0.4 test/
Source1:             %{gem_name}-%{version}-tests.txz
# The tools are needed for the test suite, are however unpackaged in gem file.
# You may check it out like so
# git clone http://github.com/rails/rails.git --no-checkout
# cd rails && git archive -v -o rails-7.0.4-tools.txz v7.0.4 tools/
Source2:             rails-%{version}-tools.txz
BuildRequires:       ruby(release) rubygems-devel ruby
%if %{without bootstrap}
BuildRequires:       rubygem(actionpack) = %{version} rubygem(activerecord) = %{version}
BuildRequires:       rubygem(activejob) = %{version} rubygem(railties) = %{version}
BuildRequires:       rubygem(rails) = %{version} rubygem(sprockets-rails) rubygem(connection_pool)
BuildRequires:       rubygem(image_processing) rubygem(sqlite3)
%{?with_ffmpeg:BuildRequires: %{_bindir}/ffmpeg}
BuildRequires:       %{_bindir}/mutool %{_bindir}/pdftoppm
%endif
Suggests:            %{_bindir}/mutool
Suggests:            %{_bindir}/pdftoppm
Suggests:            %{_bindir}/ffmpeg
BuildArch:           noarch
%description
Attach cloud and local files in Rails applications.

%package doc
Summary:             Documentation for %{name}
Requires:            %{name} = %{version}-%{release}
BuildArch:           noarch
%description doc
Documentation for %{name}.

%prep
%setup -q -n %{gem_name}-%{version} -b1 -b2

%build
gem build ../%{gem_name}-%{version}.gemspec
%gem_install

%install
mkdir -p %{buildroot}%{gem_dir}
cp -a .%{gem_dir}/* \
        %{buildroot}%{gem_dir}/

%check
%if %{without bootstrap}
ln -s %{gem_dir}/specifications/rails-%{version}.gemspec .%{gem_dir}/gems/rails.gemspec
ln -s %{gem_dir}/gems/railties-%{version}/ .%{gem_dir}/gems/railties
ln -s %{gem_dir}/gems/activerecord-%{version}/ .%{gem_dir}/gems/activerecord
ln -s %{gem_dir}/gems/activejob-%{version}/ .%{gem_dir}/gems/activejob
ln -s %{gem_dir}/gems/actionpack-%{version}/ .%{gem_dir}/gems/actionpack
ln -s %{gem_dir}/gems/activesupport-%{version}/ .%{gem_dir}/gems/activesupport
ln -s ${PWD}%{gem_instdir} .%{gem_dir}/gems/%{gem_name}
pushd .%{gem_dir}/gems/%{gem_name}
ln -s %{_builddir}/tools ..
cp -a %{_builddir}/test .
touch Gemfile
echo 'gem "actionpack"' >> ../Gemfile
echo 'gem "activerecord"' >> ../Gemfile
echo 'gem "activejob"' >> ../Gemfile
echo 'gem "sprockets-rails"' >> ../Gemfile
echo 'gem "image_processing"' >> ../Gemfile
echo 'gem "rails"' >> ../Gemfile
echo 'gem "sqlite3"' >> ../Gemfile
%if %{without ffmpeg}
mv test/analyzer/video_analyzer_test.rb{,.disable}
mv test/analyzer/audio_analyzer_test.rb{,.disable}
mv test/previewer/video_previewer_test.rb{,.disable}
for f in \
  models/preview \
  models/representation \
  %{nil}
do
sed -i '/^  test ".* MP4 video.*" do$/,/^  end$/ s/^/#/g' \
  test/${f}_test.rb
done
%endif
# Blobs seem to be broken
# https://github.com/rails/rails/pull/40226
# https://github.com/rails/rails/issues/44395
sed -i -e '/test "optimized variation of GIF"/ a skip' \
    -e '/thumbnail variation of extensionless GIF/ a skip' \
    -e '/test "resized variation of PSD blob" do/ a skip' \
    -e '/test "resized variation of BMP blob" do/ a skip' \
    -e '/test "resized variation of ICO blob" do/ a skip' \
    -e '/test "resized variation of GIF blob" do/ a skip' \
    -e '/test "optimized variation of GIF blob" do/ a skip' \
  test/models/variant_test.rb
export RUBYOPT="-I${PWD}/../%{gem_name}/lib"
export PATH="${PWD}/../%{gem_name}/exe:$PATH"
export BUNDLE_GEMFILE=${PWD}/../Gemfile
ruby -Ilib:test -e 'Dir.glob "./test/**/*_test.rb", &method(:require)'
popd
%endif

%files
%dir %{gem_instdir}
%license %{gem_instdir}/MIT-LICENSE
%{gem_instdir}/app
%{gem_instdir}/config
%{gem_instdir}/db
%{gem_libdir}
%exclude %{gem_cache}
%{gem_spec}

%files doc
%doc %{gem_docdir}
%doc %{gem_instdir}/CHANGELOG.md
%doc %{gem_instdir}/README.md

%changelog
* Thu Jan 19 2023 wangkai <wangkai385@h-partners.com> - 7.0.4-1
- Upgrade to version 7.0.4

* Wed Mar 02 2022 jiangxinyu <jiangxinyu@kylinos.cn> - 6.1.4.1-1
- update to 6.1.4.1

* Mon Feb  8 2021 sunguoshuai<sunguoshuai@huawei.com>- 5.2.4.4-1
- Upgrade to 5.2.4.4

* Wed Aug 12 2020 chengzihan <chengzihan2@huawei.com> - 5.2.3-1
- Package init
