Blame SPECS/passenger.spec

f8250e
%{?scl:%scl_package passenger}
f8250e
f8250e
%global bundled_boost_version 1.54.0
f8250e
%global passenger_libdir %{_datadir}/passenger/
f8250e
%global passenger_archdir %{_libdir}/passenger/
f8250e
%global passenger_agentsdir %{_libexecdir}/passenger/
f8250e
f8250e
%define ruby200dir %{_builddir}/ruby200-%{name}-%{version}-%{release}
f8250e
%define ruby22dir %{_builddir}/ruby22-%{name}-%{version}-%{release}
f8250e
%global passenger_ruby200_archdir %{_libdir}/passenger200/
f8250e
%global passenger_ruby22_archdir %{_libdir}/passenger22/
f8250e
%global passenger_ruby193_archdir %{_libdir}/passenger193/
f8250e
f8250e
%if 0%{?scl:1}
f8250e
%{!?_httpd24_apxs:       %{expand: %%global _httpd24_apxs       %%{_sbindir}/apxs}}
f8250e
%{!?_httpd24_mmn:        %{expand: %%global _httpd24_mmn        %%(cat %{_includedir}/httpd/.mmn 2>/dev/null || echo missing-httpd-devel)}}
f8250e
%{!?_httpd24_confdir:    %{expand: %%global _httpd24_confdir    %%{_sysconfdir}/httpd/conf.d}}
f8250e
# /etc/httpd/conf.d with httpd < 2.4 and defined as /etc/httpd/conf.modules.d with httpd >= 2.4
f8250e
%{!?_httpd24_modconfdir: %{expand: %%global _httpd24_modconfdir %%{_sysconfdir}/httpd/conf.d}}
f8250e
%{!?_httpd24_moddir:    %{expand: %%global _httpd24_moddir    %%{_libdir}/httpd/modules}}
f8250e
%else
f8250e
%{!?_httpd_apxs:       %{expand: %%global _httpd_apxs       %%{_sbindir}/apxs}}
f8250e
%{!?_httpd_mmn:        %{expand: %%global _httpd_mmn        %%(cat %{_includedir}/httpd/.mmn 2>/dev/null || echo missing-httpd-devel)}}
f8250e
%{!?_httpd_confdir:    %{expand: %%global _httpd_confdir    %%{_sysconfdir}/httpd/conf.d}}
f8250e
# /etc/httpd/conf.d with httpd < 2.4 and defined as /etc/httpd/conf.modules.d with httpd >= 2.4
f8250e
%{!?_httpd_modconfdir: %{expand: %%global _httpd_modconfdir %%{_sysconfdir}/httpd/conf.d}}
f8250e
%{!?_httpd_moddir:    %{expand: %%global _httpd_moddir    %%{_libdir}/httpd/modules}}
f8250e
%endif
f8250e
f8250e
Summary: Phusion Passenger application server
f8250e
Name: %{?scl:%scl_prefix}passenger
f8250e
Version: 4.0.50
f8250e
Release: 9%{?dist}
f8250e
Group: System Environment/Daemons
f8250e
# Passenger code uses MIT license.
f8250e
# Bundled(Boost) uses Boost Software License
f8250e
# BCrypt and Blowfish files use BSD license.
f8250e
# Documentation is CC-BY-SA
f8250e
# See: https://bugzilla.redhat.com/show_bug.cgi?id=470696#c146
f8250e
License: Boost and BSD and BSD with advertising and MIT and zlib
f8250e
URL: https://www.phusionpassenger.com
f8250e
f8250e
Source: http://s3.amazonaws.com/phusion-passenger/releases/passenger-%{version}.tar.gz
f8250e
Source1: passenger.logrotate
f8250e
Source2: rubygem-passenger.tmpfiles
f8250e
Source10: apache-passenger.conf.in
f8250e
Source12: config.json
f8250e
# These scripts are needed only before we update httpd24-httpd.service
f8250e
# in rhel7 to allow enabling extra SCLs.
f8250e
Source13: passenger-ruby193
f8250e
Source14: passenger-ruby200
f8250e
Source15: passenger-ruby22
f8250e
Source16: scl-register-helper.sh
f8250e
f8250e
# Load passenger_native_support.so from lib_dir
f8250e
Patch0:           rubygem-passenger-4.0.18_native_dir.patch
f8250e
# Use system libeio
f8250e
Patch1:         passenger-4.0.38-libeio.patch
f8250e
# ruby22 does not handle trap('KILL', 'DEFAULT')
f8250e
Patch2:         passenger-4.0.50-kill-trap.patch
f8250e
# Load daemon_controller using full path because of no other way how to
f8250e
# change GEM_PATH while keeping the rh-passenger40 SCL ruby-agnostic.
f8250e
Patch3:         passenger-4.0.50-standalone.patch
f8250e
# httpd on RHEL7 is using private /tmp. This break passenger status.
f8250e
# We workaround that by using "/var/run/passenger" instead of "/tmp".
f8250e
Patch4:         passenger-4.0.50-tmpdir.patch
f8250e
# Until rubygem-bluecloth is in Fedora, don't use it
f8250e
Patch201:       rubygem-passenger-4.0.18-correct_docs.patch
f8250e
f8250e
BuildRequires: %{?scl:httpd24-}httpd-devel
f8250e
BuildRequires: %{?scl:%scl_prefix}libev-devel >= 4.0.0
f8250e
BuildRequires: %{?scl:ruby193-}ruby
f8250e
BuildRequires: %{?scl:ruby193-}ruby-devel
f8250e
BuildRequires: %{?scl:ruby193-}rubygems
f8250e
BuildRequires: %{?scl:ruby193-}rubygems-devel
f8250e
BuildRequires: %{?scl:ruby193-}rubygem(rake) >= 0.8.1
f8250e
BuildRequires: %{?scl:ruby193-}rubygem(rack)
f8250e
BuildRequires: %{?scl:ruby193-}rubygem(rspec)
f8250e
BuildRequires: %{?scl:ruby193-}rubygem(mime-types)
f8250e
BuildRequires: %{?scl:ruby193-}rubygem(sqlite3)
f8250e
BuildRequires: %{?scl:%scl_prefix}rubygem(mizuho)
f8250e
f8250e
BuildRequires: %{?scl:ruby200-}ruby
f8250e
BuildRequires: %{?scl:ruby200-}ruby-devel
f8250e
BuildRequires: %{?scl:ruby200-}rubygems
f8250e
BuildRequires: %{?scl:ruby200-}rubygems-devel
f8250e
BuildRequires: %{?scl:ruby200-}rubygem(rake) >= 0.8.1
f8250e
BuildRequires: %{?scl:ror40-}runtime
f8250e
BuildRequires: %{?scl:ror40-}rubygem(rack)
f8250e
BuildRequires: %{?scl:ror40-}rubygem(rspec)
f8250e
BuildRequires: %{?scl:ror40-}rubygem(sqlite3)
f8250e
BuildRequires: %{?scl:ror40-}rubygem(mime-types)
f8250e
f8250e
BuildRequires: %{?scl:rh-ruby22-}ruby
f8250e
BuildRequires: %{?scl:rh-ruby22-}ruby-devel
f8250e
BuildRequires: %{?scl:rh-ruby22-}rubygems
f8250e
BuildRequires: %{?scl:rh-ruby22-}rubygems-devel
f8250e
BuildRequires: %{?scl:rh-ruby22-}rubygem(rake) >= 0.8.1
f8250e
BuildRequires: %{?scl:rh-ror41-}runtime
f8250e
BuildRequires: %{?scl:rh-ror41-}rubygem(rack)
f8250e
BuildRequires: %{?scl:rh-ror41-}rubygem(rspec)
f8250e
BuildRequires: %{?scl:rh-ror41-}rubygem(sqlite3)
f8250e
BuildRequires: %{?scl:rh-ror41-}rubygem(mime-types)
f8250e
f8250e
BuildRequires: libcurl-devel
f8250e
# BuildRequires: source-highlight
f8250e
BuildRequires: zlib-devel
f8250e
BuildRequires: pcre-devel
f8250e
BuildRequires: openssl-devel
f8250e
BuildRequires: %{?scl:%scl_prefix}libeio-devel
f8250e
%{?scl:Requires:%scl_runtime}
f8250e
Requires: %{?scl:%scl_prefix}rubygem-daemon_controller
f8250e
Requires(post): policycoreutils-python libselinux-utils
f8250e
f8250e
Provides: bundled(boost) = %{bundled_boost_version}
f8250e
f8250e
Conflicts: ruby193-rubygem-passenger40
f8250e
f8250e
# Suppress auto-provides for module DSO
f8250e
%if 0%{?scl:1}
f8250e
%{?filter_provides_in: %filter_provides_in %{_httpd24_moddir}/.*\.so$}
f8250e
%else
f8250e
%{?filter_provides_in: %filter_provides_in %{_httpd_moddir}/.*\.so$}
f8250e
%endif
f8250e
%{?filter_provides_in: %filter_provides_in %{passenger_ruby193_archdir}native/.*\.so$}
f8250e
%{?filter_provides_in: %filter_provides_in %{passenger_ruby200_archdir}native/.*\.so$}
f8250e
%{?filter_provides_in: %filter_provides_in %{passenger_ruby22_archdir}native/.*\.so$}
f8250e
%{?filter_setup}
f8250e
f8250e
%description
f8250e
Phusion Passenger® is a web server and application server, designed to be fast,
f8250e
robust and lightweight. It takes a lot of complexity out of deploying web apps,
f8250e
adds powerful enterprise-grade features that are useful in production,
f8250e
and makes administration much easier and less complex. It supports Ruby,
f8250e
Python, Node.js and Meteor.
f8250e
f8250e
%package -n %{scl_prefix}mod_passenger
f8250e
Summary: Apache Module for Phusion Passenger
f8250e
Group: System Environment/Daemons
f8250e
BuildRequires:  httpd-devel
f8250e
Requires: %{?scl:httpd24-}httpd-mmn = %{_httpd24_mmn}
f8250e
Requires: %{name}%{?_isa} = %{version}-%{release}
f8250e
Conflicts: ruby193-mod_passenger40
f8250e
License: Boost and BSD and BSD with advertising and MIT and zlib
f8250e
f8250e
%description -n %{scl_prefix}mod_passenger
f8250e
This package contains the pluggable Apache server module for Phusion Passenger®.
f8250e
f8250e
%package doc
f8250e
Summary: Phusion Passenger documentation
f8250e
Group: System Environment/Daemons
f8250e
Requires: %{name} = %{version}-%{release}
f8250e
BuildArch: noarch
f8250e
License: CC-BY-SA and MIT and (MIT or GPL+)
f8250e
f8250e
%description doc
f8250e
This package contains documentation files for Phusion Passenger®.
f8250e
f8250e
%package -n %{?scl:%scl_prefix}ruby193
f8250e
Summary:   Phusion Passenger application server for ruby193
f8250e
Requires: %{name}%{?_isa} = %{version}-%{release}
f8250e
Requires: ruby193-ruby
f8250e
f8250e
%description -n %{?scl:%scl_prefix}ruby193
f8250e
Phusion Passenger application server for ruby193.
f8250e
f8250e
%package -n %{?scl:%scl_prefix}ruby200
f8250e
Summary:   Phusion Passenger application server for ruby200
f8250e
Requires: %{name}%{?_isa} = %{version}-%{release}
f8250e
Requires: ruby200-ruby
f8250e
f8250e
%description -n %{?scl:%scl_prefix}ruby200
f8250e
Phusion Passenger application server for ruby200.
f8250e
f8250e
%package -n %{?scl:%scl_prefix}ruby22
f8250e
Summary:   Phusion Passenger application server for rh-ruby22
f8250e
Requires: %{name}%{?_isa} = %{version}-%{release}
f8250e
Requires: rh-ruby22-ruby
f8250e
f8250e
%description -n %{?scl:%scl_prefix}ruby22
f8250e
Phusion Passenger application server for rh-ruby22.
f8250e
f8250e
%prep
f8250e
%setup -q %{?scl:-n %{pkg_name}-%{version}}
f8250e
f8250e
%patch0 -p1 -b .libdir
f8250e
%patch1 -p1 -b .libeio
f8250e
%patch2 -p1 -b .kill
f8250e
%patch3 -p1 -b .standalone
f8250e
%patch4 -p1 -b .tmpdir
f8250e
f8250e
# Until bluecloth is in Fedora, don't use it
f8250e
%patch201 -p1 -b .docs
f8250e
f8250e
# Don't use bundled libev and libeio
f8250e
rm -rf ext/libev
f8250e
rm -rf ext/libeio
f8250e
f8250e
# Find files with a hash-bang that do not have executable permissions
f8250e
for script in `find . -type f ! -perm /a+x -name "*.rb"`; do
f8250e
    [ ! -z "`head -n 1 $script | grep \"^#!/\"`" ] && chmod -v 755 $script
f8250e
done
f8250e
f8250e
rm -rf %{ruby200dir}
f8250e
cp -a . %{ruby200dir}
f8250e
f8250e
rm -rf %{ruby22dir}
f8250e
cp -a . %{ruby22dir}
f8250e
f8250e
%build
f8250e
f8250e
# Build the complete Passenger and shared module against ruby193.
f8250e
f8250e
%{?scl:scl enable ruby193 httpd24 rh-passenger40 - << \EOF}
f8250e
export LD_LIBRARY_PATH=%{_libdir}:$LD_LIBRARY_PATH
f8250e
export USE_VENDORED_LIBEV=false
f8250e
export USE_VENDORED_LIBEIO=false
f8250e
export GEM_PATH=%{gem_dir}:${GEM_PATH:+${GEM_PATH}}${GEM_PATH:-`scl enable ruby193 -- ruby -e "print Gem.path.join(':')"`}
f8250e
CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ;
f8250e
CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ;
f8250e
EXTRA_CXX_LDFLAGS="-Wl,-rpath=%{_libdir},--enable-new-dtags "; export EXTRA_CXX_LDFLAGS;
f8250e
FFLAGS="${FFLAGS:-%optflags}" ; export FFLAGS ;
f8250e
f8250e
export LANG=en_US.UTF-8
f8250e
export LANGUAGE=en_US.UTF-8
f8250e
export LC_ALL=en_US.UTF-8
f8250e
f8250e
rake fakeroot \
f8250e
    NATIVE_PACKAGING_METHOD=rpm \
f8250e
    FS_PREFIX=%{_prefix} \
f8250e
    FS_BINDIR=%{_bindir} \
f8250e
    FS_SBINDIR=%{_sbindir} \
f8250e
    FS_DATADIR=%{_datadir} \
f8250e
    FS_LIBDIR=%{_libdir} \
f8250e
    FS_DOCDIR=%{_docdir} \
f8250e
    RUBYLIBDIR=%{passenger_libdir} \
f8250e
    RUBYARCHDIR=%{passenger_archdir} \
f8250e
    APACHE2_MODULE_PATH=%{_httpd24_moddir}/mod_passenger.so 
f8250e
%{?scl:EOF}
f8250e
f8250e
# Build just the shared module against ruby200
f8250e
f8250e
pushd %{ruby200dir}
f8250e
%{?scl:scl enable ruby200 ror40 httpd24 rh-passenger40 - << \EOF}
f8250e
export LD_LIBRARY_PATH=%{_libdir}:/opt/rh/ruby200/root/usr/lib64:/opt/rh/ruby193/root/usr/lib64:$LD_LIBRARY_PATH
f8250e
export USE_VENDORED_LIBEV=false
f8250e
export USE_VENDORED_LIBEIO=false
f8250e
export GEM_PATH=%{gem_dir}:${GEM_PATH:+${GEM_PATH}}${GEM_PATH:-`scl enable ruby200 -- ruby -e "print Gem.path.join(':')"`}
f8250e
CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ;
f8250e
CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ;
f8250e
FFLAGS="${FFLAGS:-%optflags}" ; export FFLAGS ;
f8250e
f8250e
export LANG=en_US.UTF-8
f8250e
export LANGUAGE=en_US.UTF-8
f8250e
export LC_ALL=en_US.UTF-8
f8250e
f8250e
rake fakeroot \
f8250e
    NATIVE_PACKAGING_METHOD=rpm \
f8250e
    FS_PREFIX=%{_prefix} \
f8250e
    FS_BINDIR=%{_bindir} \
f8250e
    FS_SBINDIR=%{_sbindir} \
f8250e
    FS_DATADIR=%{_datadir} \
f8250e
    FS_LIBDIR=%{_libdir} \
f8250e
    FS_DOCDIR=%{_docdir} \
f8250e
    RUBYLIBDIR=%{passenger_libdir} \
f8250e
    RUBYARCHDIR=%{passenger_ruby200_archdir} \
f8250e
    APACHE2_MODULE_PATH=%{_httpd24_moddir}/mod_passenger.so 
f8250e
    ONLY_RUBY=1
f8250e
%{?scl:EOF}
f8250e
popd
f8250e
f8250e
# Build just the shared module against ruby22
f8250e
f8250e
pushd %{ruby22dir}
f8250e
%{?scl:scl enable rh-ruby22 rh-ror41 httpd24 rh-passenger40 - << \EOF}
f8250e
export LD_LIBRARY_PATH=%{_libdir}:/opt/rh/rh-ruby22/root/usr/lib64:/opt/rh/ruby193/root/usr/lib64:$LD_LIBRARY_PATH
f8250e
export USE_VENDORED_LIBEV=false
f8250e
export USE_VENDORED_LIBEIO=false
f8250e
export GEM_PATH=%{gem_dir}:${GEM_PATH:+${GEM_PATH}}${GEM_PATH:-`scl enable rh-ruby22 -- ruby -e "print Gem.path.join(':')"`}
f8250e
CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ;
f8250e
CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ;
f8250e
FFLAGS="${FFLAGS:-%optflags}" ; export FFLAGS ;
f8250e
f8250e
export LANG=en_US.UTF-8
f8250e
export LANGUAGE=en_US.UTF-8
f8250e
export LC_ALL=en_US.UTF-8
f8250e
f8250e
rake fakeroot \
f8250e
    NATIVE_PACKAGING_METHOD=rpm \
f8250e
    FS_PREFIX=%{_prefix} \
f8250e
    FS_BINDIR=%{_bindir} \
f8250e
    FS_SBINDIR=%{_sbindir} \
f8250e
    FS_DATADIR=%{_datadir} \
f8250e
    FS_LIBDIR=%{_libdir} \
f8250e
    FS_DOCDIR=%{_docdir} \
f8250e
    RUBYLIBDIR=%{passenger_libdir} \
f8250e
    RUBYARCHDIR=%{passenger_ruby22_archdir} \
f8250e
    APACHE2_MODULE_PATH=%{_httpd24_moddir}/mod_passenger.so 
f8250e
    ONLY_RUBY=1
f8250e
%{?scl:EOF}
f8250e
popd
f8250e
f8250e
%install
f8250e
%{?scl:scl enable ruby193 httpd24 rh-passenger40 - << \EOF}
f8250e
#include helper script for creating register stuff
f8250e
source %{SOURCE16}
f8250e
f8250e
# configure variables for the helper function scl_reggen
f8250e
export _SR_BUILDROOT=%{buildroot}
f8250e
export _SR_SCL_SCRIPTS=%{?_scl_scripts}
f8250e
f8250e
export USE_VENDORED_LIBEV=false
f8250e
export USE_VENDORED_LIBEIO=false
f8250e
f8250e
export LANG=en_US.UTF-8
f8250e
export LANGUAGE=en_US.UTF-8
f8250e
export LC_ALL=en_US.UTF-8
f8250e
f8250e
cp -a pkg/fakeroot/* %{buildroot}/
f8250e
f8250e
# Install bootstrapping code into the executables and the Nginx config script.
f8250e
./dev/install_scripts_bootstrap_code.rb --ruby %{passenger_libdir} %{buildroot}%{_bindir}/* %{buildroot}%{_sbindir}/*
f8250e
f8250e
# Install Apache module.
f8250e
mkdir -p %{buildroot}/%{_httpd24_moddir}
f8250e
install -pm 0755 buildout/apache2/mod_passenger.so %{buildroot}/%{_httpd24_moddir}
f8250e
f8250e
# Install Apache config.
f8250e
mkdir -p %{buildroot}%{_httpd24_confdir} %{buildroot}%{_httpd24_modconfdir}
f8250e
sed -e 's|@PASSENGERROOT@|%{passenger_libdir}/phusion_passenger/locations.ini|g' %{SOURCE10} > passenger.conf
f8250e
sed -i 's|@PASSENGERRUBY@|%{_libexecdir}/passenger-ruby193|g' passenger.conf
f8250e
f8250e
%if "%{_httpd24_modconfdir}" != "%{_httpd24_confdir}"
f8250e
    sed -n /^LoadModule/p passenger.conf > 10-passenger.conf
f8250e
    sed -i /^LoadModule/d passenger.conf
f8250e
    touch -r %{SOURCE10} 10-passenger.conf
f8250e
    install -pm 0644 10-passenger.conf %{buildroot}%{_httpd24_modconfdir}/passenger.conf
f8250e
%endif
f8250e
touch -r %{SOURCE10} passenger.conf
f8250e
install -pm 0644 passenger.conf %{buildroot}%{_httpd24_confdir}/passenger.conf
f8250e
f8250e
# Install wrappers to allow using multiple Ruby versions in single httpd
f8250e
# instance.
f8250e
%{__mkdir_p} %{buildroot}%{_libexecdir}/
f8250e
install -pm 0755 %{SOURCE13} %{buildroot}%{_libexecdir}/passenger-ruby193
f8250e
install -pm 0755 %{SOURCE14} %{buildroot}%{_libexecdir}/passenger-ruby200
f8250e
install -pm 0755 %{SOURCE15} %{buildroot}%{_libexecdir}/passenger-ruby22
f8250e
f8250e
# Move agents to libexec
f8250e
mkdir -p %{buildroot}/%{passenger_agentsdir}
f8250e
mv %{buildroot}/%{passenger_archdir}/agents/* %{buildroot}/%{passenger_agentsdir}
f8250e
rm -d %{buildroot}/%{passenger_archdir}/agents/
f8250e
sed -i 's|%{passenger_archdir}agents|%{passenger_agentsdir}|g' \
f8250e
    %{buildroot}%{passenger_libdir}/phusion_passenger/locations.ini
f8250e
f8250e
# Make our ghost log and run directories...
f8250e
# mkdir -p %{buildroot}%{_root_localstatedir}/log/passenger-analytics
f8250e
f8250e
# logrotate
f8250e
# mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d
f8250e
# install -pm 0644 %{SOURCE1} %{buildroot}%{_sysconfdir}/logrotate.d/passenger
f8250e
f8250e
# tmpfiles.d
f8250e
%if 0%{?rhel} > 6
f8250e
    mkdir -p %{buildroot}%{_root_localstatedir}/run
f8250e
    mkdir -p %{buildroot}%{_root_prefix}/lib/tmpfiles.d
f8250e
    install -m 0644 %{SOURCE2} %{buildroot}%{_root_prefix}/lib/tmpfiles.d/rh-passenger40.conf
f8250e
    install -d -m 0755 %{buildroot}%{_root_localstatedir}/run/rh-passenger40
f8250e
f8250e
    scl_reggen %{name} --mkdir %{_root_localstatedir}/run/rh-passenger40
f8250e
    scl_reggen %{name} --chmod %{_root_localstatedir}/run/rh-passenger40 0755
f8250e
    scl_reggen %{name} --cpfile %{_root_prefix}/lib/tmpfiles.d/rh-passenger40.conf
f8250e
%else
f8250e
    mkdir -p %{buildroot}%{_root_localstatedir}/run/rh-passenger40
f8250e
    scl_reggen %{name} --mkdir %{_root_localstatedir}/run/rh-passenger40
f8250e
%endif
f8250e
f8250e
# Install man pages into the proper location.
f8250e
mkdir -p %{buildroot}%{_mandir}/man1
f8250e
mkdir -p %{buildroot}%{_mandir}/man8
f8250e
cp man/*.1 %{buildroot}%{_mandir}/man1
f8250e
cp man/*.8 %{buildroot}%{_mandir}/man8
f8250e
f8250e
# Fix Python scripts with shebang which are not executable
f8250e
chmod +x %{buildroot}%{_datadir}/passenger/helper-scripts/wsgi-loader.py
f8250e
f8250e
# Remove empty release.txt file
f8250e
rm -f %{buildroot}%{_datadir}/passenger/release.txt
f8250e
f8250e
# Remove object files and source files. They are needed to compile nginx
f8250e
# using "passenger-install-nginx-module", but it's not according to
f8250e
# guidelines. Debian does not provide these files too, so we stay consistent.
f8250e
# In the long term, it would be better to allow Fedora nginx to support
f8250e
# Passenger.
f8250e
rm -rf %{buildroot}%{passenger_libdir}/ngx_http_passenger_module
f8250e
rm -rf %{buildroot}%{passenger_libdir}/ruby_extension_source
f8250e
rm -rf %{buildroot}%{passenger_libdir}/include
f8250e
rm -rf %{buildroot}%{_libdir}/passenger/common
f8250e
rm -rf %{buildroot}%{_bindir}/passenger-install-*-module
f8250e
f8250e
# Fix shebang
f8250e
sed -i 's|/opt/rh/rh-passenger40/root/usr/bin/ruby|/usr/bin/env ruby|g' \
f8250e
    %{buildroot}%{_sbindir}/passenger-status
f8250e
sed -i 's|/opt/rh/rh-passenger40/root/usr/bin/ruby|/usr/bin/env ruby|g' \
f8250e
    %{buildroot}%{_sbindir}/passenger-memory-stats
f8250e
f8250e
# Install ruby193 shared module
f8250e
mkdir -p %{buildroot}/%{passenger_ruby193_archdir}/native
f8250e
mv %{buildroot}/%{passenger_archdir}/*.so %{buildroot}/%{passenger_ruby193_archdir}/native
f8250e
rm -rf %{buildroot}/%{passenger_archdir}
f8250e
f8250e
# Install ruby200 shared module
f8250e
pushd %{ruby200dir}
f8250e
mkdir -p %{buildroot}/%{passenger_ruby200_archdir}/native
f8250e
cp -a buildout/ruby/*/passenger_native_support.so %{buildroot}/%{passenger_ruby200_archdir}/native
f8250e
popd
f8250e
f8250e
# Install ruby22 shared module
f8250e
pushd %{ruby22dir}
f8250e
mkdir -p %{buildroot}/%{passenger_ruby22_archdir}/native
f8250e
cp -a buildout/ruby/*/passenger_native_support.so %{buildroot}/%{passenger_ruby22_archdir}/native
f8250e
popd
f8250e
f8250e
# Link PassengerWebHelper to nginx16 SCL
f8250e
ln -s /opt/rh/nginx16/root/usr/sbin/nginx %{buildroot}%{passenger_agentsdir}PassengerWebHelper
f8250e
f8250e
%{?scl:EOF}
f8250e
f8250e
%post
f8250e
semanage fcontext -a -t passenger_exec_t "%{_root_libexecdir}/passenger/PassengerHelperAgent"
f8250e
semanage fcontext -a -t passenger_exec_t "%{_root_libexecdir}/passenger/PassengerLoggingAgent"
f8250e
semanage fcontext -a -t passenger_exec_t "%{_root_libexecdir}/passenger/PassengerWatchdog"
f8250e
semanage fcontext -a -t passenger_exec_t "%{_root_libexecdir}/passenger/SpawnPreparer"
f8250e
semanage fcontext -a -t passenger_exec_t "%{_root_libexecdir}/passenger/TempDirToucher"
f8250e
restorecon -R %{_scl_root} >/dev/null 2>&1 || :
f8250e
f8250e
%check
f8250e
%{?scl:scl enable ruby193 httpd24 rh-passenger40 - << \EOF}
f8250e
export USE_VENDORED_LIBEV=false
f8250e
export USE_VENDORED_LIBEIO=false
f8250e
f8250e
# Running the full test suite is not only slow, but also impossible
f8250e
# because not all requirements are packaged by Fedora. It's also not
f8250e
# too useful because Phusion Passenger is automatically tested by a CI
f8250e
# server on every commit. The C++ tests are the most likely to catch
f8250e
# any platform-specific bugs (e.g. bugs caused by wrong compiler options)
f8250e
# so we only run those. Note that the C++ tests are highly timing
f8250e
# sensitive, so sometimes they may fail even though nothing is really
f8250e
# wrong. We therefore do not make failures fatal, although the result
f8250e
# should still be checked.
f8250e
# Currently the tests fail quite often on ARM because of the slower machines.
f8250e
cp %{SOURCE12} test/config.json
f8250e
rake test:cxx || true
f8250e
%{?scl:EOF}
f8250e
f8250e
%files
f8250e
%doc LICENSE CONTRIBUTORS CHANGELOG
f8250e
%{_bindir}/passenger*
f8250e
%if 0%{?rhel} > 6
f8250e
%{_root_prefix}/lib/tmpfiles.d/rh-passenger40.conf
f8250e
%{?scl: %{_scl_scripts}/register.content/*}
f8250e
%endif
f8250e
%dir %{_root_localstatedir}/run/rh-passenger40
f8250e
# %dir %{_localstatedir}/log/passenger-analytics
f8250e
# %config(noreplace) %{_sysconfdir}/logrotate.d/passenger
f8250e
%{passenger_libdir}
f8250e
%{passenger_agentsdir}
f8250e
%{_sbindir}/*
f8250e
%{_mandir}/man1/*
f8250e
%{_mandir}/man8/*
f8250e
%{?scl: %{_scl_scripts}/register.d/*}
f8250e
%{?scl: %{_scl_scripts}/deregister.d/*}
f8250e
f8250e
%files -n %{?scl:%scl_prefix}ruby193
f8250e
%doc LICENSE CONTRIBUTORS CHANGELOG
f8250e
%{passenger_ruby193_archdir}
f8250e
%{_libexecdir}/passenger-ruby193
f8250e
f8250e
%files -n %{?scl:%scl_prefix}ruby200
f8250e
%doc LICENSE CONTRIBUTORS CHANGELOG
f8250e
%{passenger_ruby200_archdir}
f8250e
%{_libexecdir}/passenger-ruby200
f8250e
f8250e
%files -n %{?scl:%scl_prefix}ruby22
f8250e
%doc LICENSE CONTRIBUTORS CHANGELOG
f8250e
%{passenger_ruby22_archdir}
f8250e
%{_libexecdir}/passenger-ruby22
f8250e
f8250e
%files doc
f8250e
%doc %{_docdir}/passenger
f8250e
f8250e
%files -n %{scl_prefix}mod_passenger
f8250e
%config(noreplace) %{_httpd24_modconfdir}/*.conf
f8250e
%if "%{_httpd24_modconfdir}" != "%{_httpd24_confdir}"
f8250e
%config(noreplace) %{_httpd24_confdir}/*.conf
f8250e
%endif
f8250e
%doc doc/Users?guide?Apache.txt
f8250e
%{_httpd24_moddir}/mod_passenger.so
f8250e
f8250e
f8250e
%changelog
f8250e
* Fri Mar 13 2015 Jan Kaluza <jkaluza@redhat.com> - 4.0.50-9
f8250e
- filter out private libraries from Provides (#1201501)
f8250e
f8250e
* Wed Jan 28 2015 Jan Kaluza <jkaluza@redhat.com> - 4.0.50-8
f8250e
- add conflicts with ruby193-rubygem-passenger40 packages (#1186723)
f8250e
f8250e
* Thu Jan 22 2015 Jan Kaluza <jkaluza@redhat.com> - 4.0.50-7
f8250e
- set proper selinux context to agents
f8250e
- add support for "scl register"
f8250e
f8250e
* Thu Jan 22 2015 Jan Kaluza <jkaluza@redhat.com> - 4.0.50-6
f8250e
- rebuild against new libev and libeio
f8250e
f8250e
* Wed Jan 21 2015 Jan Kaluza <jkaluza@redhat.com> - 4.0.50-5
f8250e
- use /var/run/passenger instead of /tmp for temporary directory
f8250e
- use rpath to find libev and libev-eio
f8250e
f8250e
* Tue Jan 20 2015 Jan Kaluza <jkaluza@redhat.com> - 4.0.50-4
f8250e
- rename httpd24-ruby* wrappers to passenger-ruby*
f8250e
- support "passenger start" with nginx16 SCL
f8250e
f8250e
* Mon Jan 19 2015 Jan Kaluza <jkaluza@redhat.com> - 4.0.50-3
f8250e
- add support for rh-ruby22
f8250e
f8250e
* Thu Jan 08 2015 Jan Kaluza <jkaluza@redhat.com> - 4.0.50-2
f8250e
- allow enabling additional SCLs using service-environment
f8250e
f8250e
* Tue Sep 09 2014 Jan Kaluza <jkaluza@redhat.com> - 4.0.50-1
f8250e
- update to new upstream version 4.0.50
f8250e
f8250e
* Tue Sep 09 2014 Jan Kaluza <jkaluza@redhat.com> - 4.0.41-2
f8250e
- add support for rhel7
f8250e
f8250e
* Tue May 27 2014 Jan Kaluza <jkaluza@redhat.com> - 4.0.41-1
f8250e
- update to version 4.0.41
f8250e
f8250e
* Tue May 13 2014 Jan Kaluza <jkaluza@redhat.com> - 4.0.38-1
f8250e
- renamed from rubygem-passenger to passenger
f8250e
- changed the packaging structure to be closer to upstream
f8250e
- update to 4.0.38 (#1060106)
f8250e
- fix for CVE-2014-1831 and CVE-2014-1832
f8250e
- use real commands without macros
f8250e
- do not bundle libeio
f8250e
f8250e
* Thu Jan 23 2014 Joe Orton <jorton@redhat.com> - 4.0.18-5
f8250e
- fix _httpd_mmn expansion in absence of httpd-devel
f8250e
f8250e
* Thu Nov 14 2013 Jan Kaluza <jkaluza@redhat.com> - 4.0.18-4
f8250e
- load native library from proper path
f8250e
f8250e
* Thu Oct 31 2013 Jan Kaluza <jkaluza@redhat.com> - 4.0.18-3
f8250e
- fix #1021940 - add locations.ini with proper Fedora locations
f8250e
f8250e
* Wed Sep 25 2013 Troy Dawson <tdawson@redhat.com> - 4.0.18-2
f8250e
- Cleanup spec file
f8250e
- Fix for bz#987879
f8250e
f8250e
* Tue Sep 24 2013 Troy Dawson <tdawson@redhat.com> - 4.0.18-1
f8250e
- Update to 4.0.18
f8250e
- Remove patches no longer needed
f8250e
- Update patches that need updating
f8250e
f8250e
* Mon Sep 23 2013 Brett Lentz <blentz@redhat.com> - 3.0.21-9
f8250e
- finish fixing bz#999384
f8250e
f8250e
* Fri Sep 20 2013 Joe Orton <jorton@redhat.com> - 3.0.21-8
f8250e
- update packaging for httpd 2.4.x
f8250e
f8250e
* Thu Sep 19 2013 Troy Dawson <tdawson@redhat.com> - 3.0.21-7
f8250e
- Fix for F20 FTBFS (#993310)
f8250e
f8250e
* Thu Aug 22 2013 Brett Lentz <blentz@redhat.com> - 3.0.21-6
f8250e
- bz#999384
f8250e
f8250e
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.21-5
f8250e
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
f8250e
f8250e
* Thu Jul 18 2013 Troy Dawson <tdawson@redhat.com> - 3.0.21-4
f8250e
- Fix for CVE-2013-4136 (#985634)
f8250e
f8250e
* Fri Jun 21 2013 Troy Dawson <tdawson@redhat.com> - 3.0.21-3
f8250e
- Putting the agents back to where they originally were
f8250e
f8250e
* Fri Jun 21 2013 Troy Dawson <tdawson@redhat.com> - 3.0.21-2
f8250e
- Remove Rakefile (only used for building) (#976843)
f8250e
f8250e
* Thu May 30 2013 Troy Dawson <tdawson@redhat.com> - 3.0.21-1
f8250e
- Update to version 3.0.21
f8250e
- Fix for CVE-2013-2119
f8250e
f8250e
* Thu May 16 2013 Troy Dawson <tdawson@redhat.com> - 3.0.19-4
f8250e
- Fix to make agents work on F19+
f8250e
f8250e
* Wed Mar 13 2013 Troy Dawson <tdawson@redhat.com> - 3.0.19-3
f8250e
- Fix to make it build/install on F19+
f8250e
- Added patch105
f8250e
f8250e
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.19-2
f8250e
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
f8250e
f8250e
* Sun Jan 20 2013 Orion Poplawski <orion@cora.nwra.com> - 3.0.19-1
f8250e
- Update to 3.0.19
f8250e
f8250e
* Wed Sep 19 2012 Orion Poplawski <orion@cora.nwra.com> - 3.0.17-3
f8250e
- Drop dependency on rubygem(file-tail), no longer needed
f8250e
f8250e
* Fri Sep 7 2012 Brett Lentz <blentz@redhat.com> - 3.0.17-2
f8250e
- Fix License
f8250e
f8250e
* Thu Sep 6 2012 Brett Lentz <blentz@redhat.com> - 3.0.17-1
f8250e
- update to 3.0.17
f8250e
f8250e
* Wed Sep 5 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-15
f8250e
- add support for tmpfiles.d
f8250e
f8250e
* Tue Sep 4 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-14
f8250e
- Fix License tag
f8250e
- Fix gem_extdir ownership issue
f8250e
f8250e
* Wed Aug 29 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-13
f8250e
- fix pathing issues
f8250e
- fix ruby abi requires
f8250e
f8250e
* Wed Aug 29 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-12
f8250e
- remove capability for running passenger standalone until daemon_controller is updated
f8250e
f8250e
* Tue Aug 28 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-11
f8250e
- fix issues with fastthread
f8250e
f8250e
* Mon Aug 27 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-10
f8250e
- get test suite sort of working
f8250e
- move agents to gem_extdir
f8250e
f8250e
* Fri Aug 24 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-9
f8250e
- stop using _bindir
f8250e
- fix native libs path
f8250e
- fix ownership on extdir
f8250e
- improve test output
f8250e
f8250e
* Wed Aug 22 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-8
f8250e
- removed policycoreutils requirement
f8250e
- moved native libs to gem_extdir
f8250e
f8250e
* Wed Aug 22 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-7
f8250e
- remove selinux policy module. it's in the base policy now.
f8250e
f8250e
* Fri Aug 17 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-6
f8250e
- put native-libs into ruby_vendorarchdir.
f8250e
f8250e
* Thu Aug 16 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-5
f8250e
- clean up packaging and file placement.
f8250e
- add logrotate file for /var/log/passenger-analytics
f8250e
f8250e
* Wed Aug 15 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-4
f8250e
- backported fix only needed on f18+
f8250e
f8250e
* Wed Aug 15 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-3
f8250e
- backport fix from https://svn.boost.org/trac/boost/ticket/6940
f8250e
f8250e
* Mon Aug 13 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-2
f8250e
- remove F15 conditional. F15 is EOL.
f8250e
f8250e
* Fri Jul 27 2012 Troy Dawson <tdawson@redhat.com> - 3.0.14-1
f8250e
- Updated to version 3.0.14
f8250e
f8250e
* Fri Jul 27 2012 Troy Dawson <tdawson@redhat.com> - 3.0.12-6
f8250e
- Added patch20, spawn-ip
f8250e
- Changed selinux files to be more dynamic
f8250e
f8250e
* Tue Jun 05 2012 Troy Dawson <tdawson@redhat.com> - 3.0.12-5
f8250e
- Add all the selinux files
f8250e
f8250e
* Tue Jun 05 2012 Troy Dawson <tdawson@redhat.com> - 3.0.12-4
f8250e
- Added selinux configurations
f8250e
f8250e
* Tue Jun 05 2012 Troy Dawson <tdawson@redhat.com> - 3.0.12-3
f8250e
- Added native and native-libs rpms.
f8250e
f8250e
* Mon Apr 16 2012 Brett Lentz <blentz@redhat.com> - 3.0.12-2
f8250e
- Add dist to release.
f8250e
- Shuffle around deprecated buildrequires and requires.
f8250e
f8250e
* Mon Apr 16 2012 Brett Lentz <blentz@redhat.com> - 3.0.12-1
f8250e
- Update to 3.0.12
f8250e
- Incorporate specfile changes from kanarip's version
f8250e
f8250e
* Wed Apr 11 2012 Brett Lentz <blentz@redhat.com> - 3.0.11-1
f8250e
- Initial spec file