Skip to content

Instantly share code, notes, and snippets.

@bradfordcp
Forked from axisofentropy/ruby-enterprise.spec
Created June 9, 2011 21:26
Show Gist options
  • Save bradfordcp/1017793 to your computer and use it in GitHub Desktop.
Save bradfordcp/1017793 to your computer and use it in GitHub Desktop.
Ruby Enterprise Edition RPM SPEC file. Does not include fast threading or libtcmalloc.
# Package Maintainer: Increment phusion_release to match latest release available
%define phusion_release 2011.03
%define _prefix /opt/ruby-enterprise
Summary: Ruby Enterprise Edition (Release %{phusion_release})
Name: ruby-enterprise
Vendor: Phusion.nl <[email protected]>
Packager: Christopher Bradford <[email protected]>
Version: 1.8.7
Release: 7%{?dist}
License: Ruby or GPL v2
Group: Development/Languages
URL: http://www.rubyenterpriseedition.com/
Source: http://rubyenterpriseedition.googlecode.com/files/ruby-enterprise-%{version}-%{phusion_release}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{phusion_release}-root-%(%{__id_u} -n)
BuildRequires: make patch gcc-c++ glibc-devel
BuildRequires: openssl-devel readline-devel
BuildRequires: zlib-devel
Prefix: /opt/ruby-enterprise
%description
Ruby Enterprise Edition is a server-oriented friendly branch of Ruby which includes various enhancements:
* A copy-on-write friendly garbage collector. Phusion Passenger uses this, in combination with a technique called preforking, to reduce Ruby on Rails applications' memory usage by 33% on average.
* An improved memory allocator called tcmalloc, which improves performance quite a bit.
* The ability to tweak garbage collector settings for maximum server performance, and the ability to inspect the garbage collector's state. (RailsBench GC patch)
* The ability to dump stack traces for all running threads (caller_for_all_threads), making it easier for one to debug multithreaded Ruby web applications.
%prep
# Extract the source files
%setup -q -n ruby-enterprise-%{version}-%{phusion_release}
# Remove the fast threading patch
cd source
echo "Removing Fast Threading Patch"
patch -p1 -R < ../fast-threading.patch
cd ../..
%package rubygems
Summary: The Ruby standard for packaging ruby libraries
Version: 1.5.2
License: Ruby or GPL v2
Vendor: Jim Weirich, Chad Fowler, and Eric Hodel <[email protected]>
Group: Development/Libraries
Requires: ruby-enterprise >= 1.8
Provides: ruby-enterprise(rubygems) = %{version}
%description rubygems
RubyGems is the Ruby standard for publishing and managing third party
libraries. This rubygems package is for ruby-enterprise in /opt.
%build
cd source
./configure --prefix=%{_prefix} --enable-mbari-api CFLAGS='-g -O2'
sed -i 's/^LIBS = /LIBS = \$(PRELIBS) /g' Makefile
make PRELIBS="-W1,-rpath,%{_prefix}/lib -L${_prefix}/lib"
%install
echo "Building Ruby Enterprise Edition"
cd source
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}
echo "Installing Rubygems"
export RUBYLIB="%{buildroot}%{_prefix}/lib/ruby/1.8"
export RUBYLIB="${RUBYLIB}:%{buildroot}%{_prefix}/lib/ruby/1.8/%{_arch}-linux"
export RUBYLIB="${RUBYLIB}:%{buildroot}%{_prefix}/lib/ruby/1.8/site_ruby/1.8"
export RUBYLIB="${RUBYLIB}:%{buildroot}%{_prefix}/lib/ruby/1.8/site_ruby/1.8/%{_arch}-linux"
cd ../rubygems
#%{buildroot}%{_prefix}/bin/ruby setup.rb --prefix=%{_prefix} --destdir=%{buildroot}
%{buildroot}%{_prefix}/bin/ruby setup.rb
mkdir -p %{buildroot}%{_prefix}/lib/ruby/gems/1.8/gems
# Due to a bug in rubygems we have to manually update the shebang
echo 'Updating Ruby Shebang in gem binary'
sed -i '1 c\
#!%{_prefix}/bin/ruby' %{buildroot}%{_prefix}/bin/gem
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
%{_bindir}/*
%{_prefix}/lib/*
%{_prefix}/share/man/man1/ruby.1
%doc source/ChangeLog
%doc source/COPYING
%doc source/LEGAL
%doc source/LGPL
%doc source/NEWS
%doc source/README
%doc source/README.EXT
%doc source/ToDo
# rubygems
%exclude %{_prefix}/bin/gem
%exclude %{_prefix}/lib/ruby/gems
%exclude %{_prefix}/lib/ruby/site_ruby/1.8/rubygems*
%exclude %{_prefix}/lib/ruby/site_ruby/1.8/ubygems.rb
%exclude %{_prefix}/lib/ruby/site_ruby/1.8/rbconfig
%files rubygems
%{_bindir}/gem
%{_prefix}/lib/ruby/gems
%{_prefix}/lib/ruby/site_ruby/1.8/rubygems*
%{_prefix}/lib/ruby/site_ruby/1.8/ubygems.rb
%{_prefix}/lib/ruby/site_ruby/1.8/rbconfig
%doc rubygems/LICENSE.txt
%doc rubygems/README.rdoc
%doc rubygems/UPGRADING.rdoc
%doc rubygems/GPL.txt
%doc rubygems/Manifest.txt
%doc rubygems/History.txt
%doc rubygems/ChangeLog
%pre
# Do not install if %{_prefix}/bin/ruby exists and is not provided by an RPM
if ([ -e %{_bindir}/ruby ] && !(rpm -q --whatprovides %{_bindir}/ruby >/dev/null)); then
exit 1
else
exit 0
fi
%pre rubygems
# Do not install if %{_prefix}/bin/gem exists and is not provided by an RPM
if ([ -e %{_bindir}/gem ] && !(rpm -q --whatprovides %{_bindir}/gem >/dev/null)); then
exit 1
else
exit 0
fi
%changelog
* Fri Nov 11 2011 Christopher Bradford <[email protected]>
- Fixed bug where rubygems 'gem' binary was not created with the appropriate shebang.
* Thu Nov 10 2011 Christopher Bradford <[email protected]>
- Fixed rpmbuild issues on CentOS
* Fri Jun 10 2011 Christopher Bradford <[email protected]>
- Working on install issues on F14
* Wed Apr 20 2011 Adam Vollrath <[email protected]>
- Corrected Licenses
* Tue Apr 19 2011 Adam Vollrath <[email protected]>
- Updated for 2011.03 and rubygems 1.5.2
* Tue Aug 24 2010 Adam Vollrath <[email protected]>
- Updated package metadata
- Updated BuildRequires dependency lists after testing
- Run Ruby's unit tests during package building
* Wed Jun 30 2010 Adam Vollrath <[email protected]>
- Updated for release 2010.02
- Updated rubygems version to 1.3.7
- Generalized all paths
* Mon Apr 19 2010 End Point Corporation <[email protected]>
- Updated for release 2010.01
- Updated rubygems to 1.3.6
* Wed Dec 02 2009 Adam Vollrath <[email protected]>
- Updated for release 2009.10
* Wed Oct 07 2009 Adam Vollrath and Richard Templet <[email protected]>
- Updated for release 20090928
* Wed Jun 10 2009 Adam Vollrath <[email protected]>
- Updated for release 20090610
* Tue Jun 02 2009 Adam Vollrath <[email protected]>
- Added check for existing /usr/local/bin/gem
- Added LICENSE and other important document files
* Mon Jun 01 2009 Adam Vollrath <[email protected]>
- Refactored to use Phusion's installer instead of building from source
- Changed prefix to just /usr/local
- Added check for existing /usr/local/bin/ruby
- Split rubygems into a subpackage
* Sat May 30 2009 Adam Vollrath <[email protected]>
- Changed Release number convention
- Added tcmalloc support and `make test`
* Tue May 26 2009 Adam Vollrath <[email protected]>
- Updated for 1.8.6-20090520
- Several small improvements to spec file
* Fri Dec 13 2008 Tim C. Harper <[email protected]>
- first build of REE package
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment