%global gem_name occi-server %global app_root %{_datadir}/%{name} %global semodule_name rocci_server %global commit aa036b71edcffd0e531a3ceba5b7113d40577977 %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: 2%{?dist} Summary: Ruby OCCI Server License: ASL 2.0 URL: https://github.com/EGI-FCTF/rOCCI-server Source0: https://github.com/EGI-FCTF/%{name}/archive/%{commit}/%{name}-%{commit}.tar.gz Source1: %{semodule_name}.te Source2: %{semodule_name}.fc Source3: %{name}.logrotate Source4: README.Fedora # kill the bundler # (not intended for upstream) Patch0: rocci-server-1.0.x-unbundle.diff BuildArch: noarch BuildRequires: policycoreutils-python BuildRequires: ruby(release) >= 1.9.3 BuildRequires: rubygems-devel BuildRequires: rubygem(rdoc) Requires(pre): shadow-utils Requires(post): policycoreutils-python Requires(preun): policycoreutils-python Requires(postun): policycoreutils Requires: logrotate Requires: memcached Requires: mod_passenger Requires: mod_ssl Requires: rubygem(dalli) Requires: rubygem(hashie) Requires: rubygem(ice_nine) Requires: rubygem(jbuilder) Requires: rubygem(kgio) Requires: rubygem(logstasher) Requires: rubygem(rails) >= 4.0.0 Requires: rubygem(rails) < 4.2 Requires: rubygem(rails-api) Requires: rubygem(occi-core) >= 4.2.15 Requires: rubygem(rack-cors) Requires: rubygem(warden) >= 1.2.3 Requires: rubygem(%{openssl_cms}) %if 0%{?fedora} && 0%{?fedora} <= 20 || 0%{?rhel} && 0%{?rhel} <= 7 Requires: ruby(release) Requires: ruby(rubygems) Provides: rubygem(%{gem_name}) = %{version} %endif %description OCCI (the Open Cloud Computing Interface) is a standard by the Open Grid Forum, specifying a protocol and API to perform various remote management tasks in clouds. The rOCCI-server extends cloud managers, which are not OCCI-compliant natively, with its own OCCI interface. It is based on the rOCCI (Ruby OCCI) Framework. %package doc Summary: Documentation for %{name} BuildArch: noarch Requires: %{name} = %{version}-%{release} %description doc Documentation for %{name}. %package tests Summary: Tests for %{name} BuildArch: noarch Requires: rubygem(bundler) #Requires: rubygem(guard-test) Requires: rubygem(rspec-rails) >= 2.14.0 Requires: rubygem(rspec-rails) < 3 Requires: rubygem(simplecov) Requires: %{name}-opennebula = %{version}-%{release} Requires: %{name} = %{version}-%{release} %description tests OCCI (the Open Cloud Computing Interface) is a standard by the Open Grid Forum, specifying a protocol and API to perform various remote management tasks in clouds. The rOCCI-server extends cloud managers, which are not OCCI-compliant natively, with its own OCCI interface. It is based on the rOCCI (Ruby OCCI) Framework. This package contains tests for OCCI server. See README.Fedora how to launch them. %package opennebula Summary: Opennebula backend for %{gem_name} BuildArch: noarch Requires: rubygem(erubis) Requires: rubygem(opennebula) >= 4.4.0 Requires: %{name} = %{version}-%{release} %description opennebula OCCI (the Open Cloud Computing Interface) is a standard by the Open Grid Forum, specifying a protocol and API to perform various remote management tasks in clouds. The rOCCI-server extends cloud managers, which are not OCCI-compliant natively, with its own OCCI interface. It is based on the rOCCI (Ruby OCCI) Framework. This package provides Opennebula backend for OCCI server. %prep %setup -q -n %{name}-%{commit} # kill bundler %patch0 -p1 # updates to keep bundler working (for tests) mv Gemfile.lock Gemfile.upstream.lock 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 # relax upstream requirements while read name ver file; do file=${file:-'Gemfile'} sed -i "s/^\(\s*gem ['\"]$name['\"]\).*/\1, '>= $ver'/" $file done << EOF jbuilder 1.5.0 rails 4.0.0 rails-api 0.1.0 rspec-rails 2.14.0 occi-core 4.2.15 opennebula 4.4.0 lib/backends/bundles/Gemfile.opennebula EOF # gems not needed for tests for p in sdoc capistrano rvm-capistrano debugger whenever passenger 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 # but move away the prepared Gemfile mv Gemfile Gemfile.tests # apache >= 2.4 syntax, applicaton prefix sed -i examples/etc/apache2/sites-available/occi-ssl \ -e 's/Allow from all/Require all granted/i' \ -e 's,/opt/rOCCI-server,%{app_root},g' # fix interpreter sed -i examples/usr/local/bin/check_occi_compute_create \ -e '1s,#!/opt/occi-cli/embedded/bin/ruby,#!/usr/bin/env ruby,' %build checkmodule -M -m -o %{semodule_name}.mod %{SOURCE1} semodule_package -o %{semodule_name}.pp -m %{semodule_name}.mod -f %{SOURCE2} %install mkdir -p %{buildroot}%{app_root} mkdir -p %{buildroot}%{_sysconfdir} cp -a . %{buildroot}%{app_root} # unused files rm -f %{buildroot}%{app_root}/.gitignore find %{buildroot}%{app_root} -name .keep -delete # configuration files mv %{buildroot}%{app_root}/etc %{buildroot}%{_sysconfdir}/rocci-server ln -s %{_sysconfdir}/rocci-server %{buildroot}%{app_root}/etc # logs mkdir -p %{buildroot}%{_localstatedir}/log/rocci-server mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d rm -rf %{buildroot}/%{app_root}/log ln -s %{_localstatedir}/log/rocci-server %{buildroot}/%{app_root}/log install -p -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/logrotate.d/%{name} 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}/rdoc/images/*.png %endif # Fedora README install -p -m 0644 %{SOURCE4} %{buildroot}%{_pkgdocdir} # SELinux mkdir -p %{buildroot}%{_datadir}/selinux/packages/%{name} install -m 0644 %{semodule_name}.pp %{buildroot}%{_datadir}/selinux/packages/%{name} rm -f %{buildroot}%{app_root}/%{semodule_name}.mod rm -f %{buildroot}%{app_root}/%{semodule_name}.pp # httpd configuration tweaks mkdir -p %{buildroot}%{_sysconfdir}/httpd/conf.d install -p -m 0644 examples/etc/apache2/sites-available/occi-ssl %{buildroot}%{_sysconfdir}/httpd/conf.d/occi-ssl.conf echo "Listen 11443" >> %{buildroot}%{_sysconfdir}/httpd/conf.d/occi-listen.conf install -p -m 0644 examples/etc/apache2/conf.d/security %{buildroot}%{_sysconfdir}/httpd/conf.d/occi-security.conf # Testsuite requires running server #%%check %pre getent group rocci >/dev/null || groupadd -r rocci getent passwd rocci >/dev/null || useradd -r -g rocci -d %{app_root} -c "rOCCI user" rocci %post if [ "$1" -le "1" ] ; then # First install semodule -i %{_datadir}/selinux/packages/%{name}/%{semodule_name}.pp 2>/dev/null || : restorecon -R %{app_root} %{_localstatedir}/log/rocci-server 2>/dev/null || : semanage port -a -t http_port_t -p tcp 11443 2>/dev/null || : fi %preun if [ "$1" -lt "1" ] ; then # Final removal semodule -r %{semodule_name} 2>/dev/null || : semanage port -d -t http_port_t -p tcp 11443 2>/dev/null || : fi %postun if [ "$1" -ge "1" ] ; then # Upgrade semodule -i %{_datadir}/selinux/packages/%{name}/%{semodule_name}.pp 2>/dev/null || : restorecon -R %{app_root} %{_localstatedir}/log/rocci-server 2>/dev/null || : fi %files %license %{app_root}/LICENSE %{_pkgdocdir}/README.Fedora %config(noreplace) %{_sysconfdir}/rocci-server/ %config(noreplace) %{_sysconfdir}/logrotate.d/%{name} %config(noreplace) %{_sysconfdir}/httpd/conf.d/occi-listen.conf %config(noreplace) %{_sysconfdir}/httpd/conf.d/occi-security.conf %config(noreplace) %{_sysconfdir}/httpd/conf.d/occi-ssl.conf %dir %{_datadir}/selinux/packages/%{name}/ %dir %{app_root}/ %dir %{app_root}/lib/ %dir %{app_root}/lib/backends/ %{app_root}/app/ %{app_root}/config/ %{app_root}/db/ %{app_root}/examples/ %{app_root}/lib/assets/ %{app_root}/lib/authentication_strategies %{app_root}/lib/backends/dummy/ %{app_root}/lib/backends/errors/ %{app_root}/lib/backends/helpers/ %{app_root}/lib/backends/dummy_backend.rb %{app_root}/lib/errors/ %{app_root}/lib/hooks/ %{app_root}/lib/request_parsers/ %{app_root}/lib/tasks %{app_root}/public/ %{app_root}/vendor/ %{app_root}/etc %{app_root}/log %{app_root}/config.ru %attr(-,rocci,rocci) %{_localstatedir}/log/rocci-server/ %{_datadir}/selinux/packages/%{name}/%{semodule_name}.pp %exclude %{app_root}/bin/ %exclude %{app_root}/.bundle/ %exclude %{app_root}/.rspec %exclude %{app_root}/.travis.yml %exclude %{app_root}/Guardfile %files doc %{_pkgdocdir}/rdoc/ %{app_root}/Capfile %{app_root}/README.md %{app_root}/Rakefile %files tests %{app_root}/lib/backends/bundles/ %{app_root}/spec/ %{app_root}/test/ %{app_root}/Gemfile* %files opennebula %{app_root}/lib/backends/opennebula/ %{app_root}/lib/backends/opennebula_backend.rb %changelog * Tue Dec 30 2014 František Dvořák - 1.0.5-2 - Tests into a subpackage - Relax occi-core dependency - License file only in %%{app_root} * Thu Oct 09 2014 František Dvořák - 1.0.5-1 - Initial package