%global gem_name unicorn # EPEL6 lacks rubygems-devel package that provides these macros %if %{?el6}0 %global gem_dir %(ruby -rubygems -e 'puts Gem::dir' 2>/dev/null) %global gem_instdir %{gem_dir}/gems/%{gem_name}-%{version} %global gem_docdir %{gem_dir}/doc/%{gem_name}-%{version} %global gem_libdir %{gem_instdir}/lib %global gem_cache %{gem_dir}/cache/%{gem_name}-%{version}.gem %global gem_spec %{gem_dir}/specifications/%{gem_name}-%{version}.gemspec %endif %if %{?el6}0 || %{?fc16}0 %global rubyabi 1.8 %else %global rubyabi 1.9.1 %endif Summary: Rack HTTP server for fast clients and Unix Name: rubygem-%{gem_name} Version: 4.5.0 Release: 2%{?dist} Group: Development/Languages License: GPLv2 or GPLv3 or Ruby URL: http://unicorn.bogomips.org/ Source0: http://rubygems.org/downloads/%{gem_name}-%{version}.gem Patch0: unicorn-4.5.0-teeinput-namespace-conflict.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Requires: ruby(abi) = %{rubyabi} Requires: ruby(rubygems) Requires: rubygem(raindrops) Requires: rubygem(kgio) BuildRequires: ruby(abi) = %{rubyabi} BuildRequires: ruby-devel BuildRequires: rubygems-devel BuildRequires: rubygem(rack) BuildRequires: rubygem(kgio) BuildRequires: rubygem(raindrops) BuildRequires: rubygem(minitest) Provides: rubygem(%{gem_name}) = %{version} ExcludeArch: ppc ppc64 %description Unicorn is an HTTP server for Rack applications designed to only serve fast clients on low-latency, high-bandwidth connections and take advantage of features in Unix/Unix-like kernels. Slow clients should only be served by placing a reverse proxy capable of fully buffering both the the request and response in between Unicorn and slow clients. %package doc Summary: Documentation files, rdoc, ri, examples and tests Group: Documentation Requires: %{name} = %{version}-%{release} %description doc Documentation for %{name} %prep %setup -q -c -T %build mkdir -p .%{gem_dir} export CONFIGURE_ARGS="--with-cflags='%{optflags}'" gem install --local --install-dir .%{gem_dir} \ -V \ --force %{SOURCE0} pushd .%{gem_instdir} patch -p1 < %{PATCH0} popd # Fix wrong shebang sed -i -e '/^#!\//, 1d' .%{gem_instdir}/bin/unicorn sed -i -e '/^#!\//, 1d' .%{gem_instdir}/bin/unicorn_rails sed -i -e '1i#!/usr/bin/ruby' .%{gem_instdir}/bin/unicorn sed -i -e '1i#!/usr/bin/ruby' .%{gem_instdir}/bin/unicorn_rails # Fixing test-suite files sed -i '2 i\ require "rubygems"' .%{gem_instdir}/test/unit/test_configurator.rb sed -i '2 i\ require "rubygems"' .%{gem_instdir}/test/unit/test_http_parser_ng.rb sed -i '2 i\ require "rubygems"' .%{gem_instdir}/test/unit/test_http_parser_xftrust.rb sed -i '2 i\ require "rubygems"' .%{gem_instdir}/test/unit/test_response.rb sed -i '2 i\ require "rubygems"' .%{gem_instdir}/test/unit/test_signals.rb sed -i '2 i\ require "rubygems"' .%{gem_instdir}/test/unit/test_stream_input.rb sed -i '2 i\ require "rubygems"' .%{gem_instdir}/test/unit/test_upload.rb sed -i '2 i\ require "rubygems"' .%{gem_instdir}/test/unit/test_droplet.rb sed -i '2 i\ require "rubygems"' .%{gem_instdir}/test/unit/test_http_parser.rb sed -i '2 i\ require "rubygems"' .%{gem_instdir}/test/unit/test_request.rb sed -i '2 i\ require "rubygems"' .%{gem_instdir}/test/unit/test_server.rb sed -i '2 i\ require "rubygems"' .%{gem_instdir}/test/unit/test_socket_helper.rb sed -i '2 i\ require "rubygems"' .%{gem_instdir}/test/unit/test_tee_input.rb sed -i '2 i\ require "rubygems"' .%{gem_instdir}/test/unit/test_util.rb sed -i '2 i\ require "rubygems"' .%{gem_instdir}/test/unit/test_sni_hostnames.rb %install rm -rf %{buildroot} mkdir -p %{buildroot}%{gem_dir} cp -a .%{gem_dir}/* \ %{buildroot}%{gem_dir}/ mkdir -p %{buildroot}%{_bindir} cp -a .%{gem_dir}/bin/unicorn %{buildroot}%{_bindir}/ cp -a .%{gem_dir}/bin/unicorn_rails %{buildroot}%{_bindir}/ # Remove leftovers rm %{buildroot}/%{gem_instdir}/.CHANGELOG.old rm %{buildroot}/%{gem_instdir}/.document rm %{buildroot}/%{gem_instdir}/.gitignore rm %{buildroot}/%{gem_instdir}/.mailmap rm %{buildroot}/%{gem_instdir}/.manifest rm %{buildroot}/%{gem_instdir}/GIT-VERSION-FILE rm %{buildroot}/%{gem_instdir}/GIT-VERSION-GEN rm %{buildroot}/%{gem_instdir}/GNUmakefile rm %{buildroot}/%{gem_instdir}/setup.rb rm %{buildroot}/%{gem_instdir}/.wrongdoc.yml rm -rf %{buildroot}%{gem_instdir}/ext find %{buildroot} -name .gitignore -exec rm {} + find %{buildroot} -name .gitkeep -exec rm {} + rm %{buildroot}/%{gem_instdir}/%{gem_name}.gemspec # In case you have yard installed rm -rf %{buildroot}%{gem_instdir}/.yardoc # Ajustar permisos, non readable 0600L chmod a+r %{buildroot}%{gem_instdir}/NEWS chmod a+r %{buildroot}%{gem_instdir}/ChangeLog mkdir -p %{buildroot}%{_mandir} mv %{buildroot}/%{gem_instdir}/man/* %{buildroot}%{_mandir}/ mkdir -p %{buildroot}%{gem_extdir}/lib mv %{buildroot}%{gem_libdir}/unicorn_http.so %{buildroot}%{gem_extdir}/lib/ %check pushd %{buildroot}%{gem_dir}/gems/%{gem_name}-%{version} # Tests don't work if run as a suite. Must run individually. # XXX still to patch test_tree for i in test/exec/*.rb test/unit/*.rb ; do testrb -Ilib -I%{buildroot}%{gem_extdir}/lib -I. $i; done popd %clean rm -rf %{buildroot} %files %defattr(-, root, root, -) %{gem_extdir}/lib/unicorn_http.so %dir %{gem_instdir} %{gem_cache} %{gem_spec} %{gem_instdir}/lib %{gem_dir}/bin/unicorn %{gem_dir}/bin/unicorn_rails %{_bindir}/unicorn %{_bindir}/unicorn_rails %{gem_instdir}/bin/unicorn %{gem_instdir}/bin/unicorn_rails %doc %{_mandir}/man1/unicorn.1.gz %doc %{_mandir}/man1/unicorn_rails.1.gz %doc %{gem_instdir}/LICENSE %doc %{gem_instdir}/COPYING %doc %{gem_instdir}/CONTRIBUTORS %doc %{gem_instdir}/README %doc %{gem_instdir}/Application_Timeouts %doc %{gem_instdir}/LATEST %doc %{gem_instdir}/Links %files doc %defattr(-, root, root, -) %doc %{gem_instdir}/ChangeLog %doc %{gem_instdir}/FAQ %doc %{gem_instdir}/DESIGN %doc %{gem_instdir}/HACKING %doc %{gem_instdir}/ISSUES %doc %{gem_instdir}/KNOWN_ISSUES %doc %{gem_instdir}/NEWS %doc %{gem_instdir}/PHILOSOPHY %doc %{gem_instdir}/SIGNALS %doc %{gem_instdir}/Sandbox %doc %{gem_instdir}/TODO %doc %{gem_instdir}/TUNING %doc %{gem_instdir}/local.mk.sample %doc %{gem_dir}/doc/%{gem_name}-%{version} %doc %{gem_instdir}/test %doc %{gem_instdir}/t %doc %{gem_instdir}/Documentation %doc %{gem_instdir}/examples %{gem_instdir}/Rakefile %{gem_instdir}/script %changelog * Sat Nov 19 2011 Guillermo Gómez - 4.2.0-1 - Initial package with version 4.2.0