%global shortcommit %(c=%{commit}; echo ${c:0:7})
%global date 20140918
+%if 0%{?fedora} && 0%{?fedora} <= 20 || 0%{?rhel} && 0%{?rhel} <= 7
+%global openssl_cms openssl_cms_2_0_0
+%else
+%global openssl_cms openssl_cms_2_1
+%endif
+
Name: rOCCI-server
Version: 1.0.5
Release: 1.%{date}git%{shortcommit}%{?dist}
BuildRequires: ruby(release) >= 1.9.3
BuildRequires: rubygems-devel
BuildRequires: rubygem(rdoc)
-# for tests (all runtimes also needed)
-# TODO: more dependencies (some guard-*, ...)
-#BuildRequires: rubygem(bunder)
-#BuildRequires: rubygem(rspec) < 3
-#BuildRequires: rubygem(rspec-rails) < 3
Requires(pre): shadow-utils
Requires(post): policycoreutils-python
Requires(preun): policycoreutils-python
Requires: rubygem(occi-core) < 4.3
Requires: rubygem(rack-cors)
Requires: rubygem(warden) >= 1.2.3
+Requires: %{openssl_cms}
%if 0%{?fedora} && 0%{?fedora} <= 20 || 0%{?rhel} && 0%{?rhel} <= 7
Requires: ruby(release)
Requires: ruby(rubygems)
-Requires: rubygem(openssl_cms_2_0_0)
Provides: rubygem(%{gem_name}) = %{version}
-%else
-Requires: rubygem(openssl_cms_2_1)
%endif
%description
# kill bundler
%patch0 -p1
-mv Gemfile Gemfile.unused
-mv Gemfile.lock Gemfile.lock.unused
+
+# updates to keep bundler working (for tests)
+mv Gemfile.lock Gemfile.lock.upstream
+cp -p Gemfile Gemfile.upstream
+cp -p lib/authentication_strategies/bundles/Gemfile.keystone Gemfile.keystone.upstream
+cp -p lib/backends/bundles/Gemfile.opennebula Gemfile.opennebula.upstream
+cp -p lib/backends/bundles/Gemfile.ec2 Gemfile.ec2.upstream
+# relax upstream requirements:
+# rails ~> 4.0.8
+# rails-api ~> 0.2.0
+# jbuilder ~> 2.1.0
+# passenger ~> 4.0.48
+# rspec-rails ~> 2.99.0
+# opennebula ~> 4.4.0
+# aws-sdk-core ~> 2.0.0.rc16
+while read name ver; do
+ echo "'$name' '$ver'"
+ sed -i "s/\(gem ['\"]$name['\"]\).*/\1, '>= $ver'/" Gemfile
+done << EOF
+rails 4.0.0
+rails-api 0.1.0
+jbuilder 1.5.0
+passenger 4.0.18
+rspec-rails 2.14.0
+EOF
+sed -i "s/\(gem ['\"]opennebula['\"]\).*/\1, '>= 4.4.0'/" lib/backends/bundles/Gemfile.opennebula
+sed -i "s/\(gem ['\"]aws-sdk-core['\"]\).*/\1, '>= 2.0.0'/" lib/backends/bundles/Gemfile.ec2
+# gems not needed for tests
+for p in sdoc capistrano rvm-capistrano debugger fuubar pry-rails pry-rescue pry-stack_explorer guard-bundler guard-rails rb-inotify libnotify yard redcarpet bond hirb; do
+ sed -i "s/^\(\s*gem ['\"]$p['\"].*\)/#disabled: \1/" Gemfile
+done
+# logstasher and openssl_cms not from git
+sed -i "s/, git:.*//" Gemfile
+echo 'gem "%{openssl_cms}' > lib/authentication_strategies/bundles/Gemfile.keystone
# apache >= 2.4 syntax, applicaton prefix
sed -i examples/etc/apache2/sites-available/occi-ssl \
ln -s %{_localstatedir}/log/rocci-server %{buildroot}/%{app_root}/log
install -p -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
-rdoc --op %{buildroot}%{_pkgdocdir} lib app *.md
+rdoc --op %{buildroot}%{_pkgdocdir}/rdoc lib app *.md
# fix permissions (but it conflicts with COPR buildsystem for F21+)
%if 0%{?fedora} && 0%{?fedora} <= 20 || 0%{?rhel} && 0%{?rhel} <= 7
-chmod -x %{buildroot}%{_pkgdocdir}/images/*.png
+chmod -x %{buildroot}%{_pkgdocdir}/rdoc/images/*.png
%endif
# Fedora README
install -p -m 0644 %{SOURCE4} %{buildroot}%{_pkgdocdir}
+ln -s %{app_root}/LICENSE %{buildroot}%{_pkgdocdir}
# SELinux
mkdir -p %{buildroot}%{_datadir}/selinux/packages/%{name}
install -p -m 0644 examples/etc/apache2/conf.d/security %{buildroot}%{_sysconfdir}/httpd/conf.d/occi-security.conf
+# Testsuite requires running server
#%%check
-## upstream: rails ~> 4.0.8
-## F20: 4.0.0, F21: 4.1.x
-#sed -i "s/\(gem 'rails'\).*/\1, >= 4.0.0/" Gemfile
-## upstream: rails-api ~> 0.2.0
-## F20: 0.1.0
-#sed -i "s/\(gem 'rails-api'\).*/\1, >= 0.1.0/" Gemfile
-## upstream: jbuilder ~> 2.1.0
-## F20: 1.5.0
-#sed -i "s/\(gem 'jbuilder'\).*/\1, >= 1.5.0/" Gemfile
-## upstream: ~> 4.0.48
-## F20: 4.0.18
-#sed -i "s/\(gem 'passenger'\).*/\1, >= 4.0.18/" Gemfile
-## not needed
-#for p in sdoc capistrano rvm-capistrano debugger fuubar; do
-# sed -i "s/^\(\s*gem '$p'.*\)/#disabled: \1/" Gemfile
-#done
-## local versions of gems
-#rm Gemfile.lock
-#bundle install --local
-#
-#bundle exec rspec -Ilib spec --require spec_helper
%pre
%files
-%doc %{_pkgdocdir}/README.Fedora
%doc %{app_root}/LICENSE
+%{_pkgdocdir}/LICENSE
+%{_pkgdocdir}/README.Fedora
%config(noreplace) %{_sysconfdir}/rocci-server/
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%config(noreplace) %{_sysconfdir}/httpd/conf.d/occi-listen.conf
%{app_root}/vendor/
%{app_root}/etc
%{app_root}/log
-%{app_root}/Capfile
%{app_root}/config.ru
%attr(-,rocci,rocci) %{_localstatedir}/log/rocci-server/
%{_datadir}/selinux/packages/%{name}/%{semodule_name}.pp
%exclude %{app_root}/.travis.yml
%exclude %{app_root}/.yardopts
%exclude %{app_root}/Guardfile
-%exclude %{_pkgdocdir}/
%files doc
-%{_pkgdocdir}/
+%{_pkgdocdir}/rdoc/
%{app_root}/lib/backends/bundles/
%{app_root}/spec/
%{app_root}/test/
-%{app_root}/Gemfile.unused
-%{app_root}/Gemfile.lock.unused
+%{app_root}/Capfile
+%{app_root}/Gemfile*
%{app_root}/README.md
%{app_root}/Rakefile