Blob Blame History Raw
%global bundled_boost_version 1.60.0
%global passenger_libdir %{_datadir}/passenger/
%global passenger_archdir %{_libdir}/passenger/

%{!?_httpd_mmn: %{expand: %%global _httpd_mmn %%(cat %{_includedir}/httpd/.mmn 2>/dev/null || echo 0-0)}}
%{!?_httpd_confdir:    %{expand: %%global _httpd_confdir    %%{_sysconfdir}/httpd/conf.d}}
# /etc/httpd/conf.d with httpd < 2.4 and defined as /etc/httpd/conf.modules.d with httpd >= 2.4
%{!?_httpd_modconfdir: %{expand: %%global _httpd_modconfdir %%{_sysconfdir}/httpd/conf.d}}
%{!?_httpd_moddir:    %{expand: %%global _httpd_moddir    %%{_libdir}/httpd/modules}}

Summary: Phusion Passenger application server
Name: passenger
Version: 5.0.30
Release: 11%{?dist}
Group: System Environment/Daemons
# Passenger code uses MIT license.
# Bundled(Boost) uses Boost Software License
# BCrypt and Blowfish files use BSD license.
# Documentation is CC-BY-SA
# See: https://bugzilla.redhat.com/show_bug.cgi?id=470696#c146
License: Boost and BSD and BSD with advertising and MIT and zlib
URL: https://www.phusionpassenger.com

Source: http://s3.amazonaws.com/phusion-passenger/releases/passenger-%{version}.tar.gz
Source1: passenger.logrotate
Source2: rubygem-passenger.tmpfiles
Source10: apache-passenger.conf.in
Source12: config.json

# Load passenger_native_support.so from lib_dir
Patch0:         passenger-5.0.30-load_from_lib_dir.patch
# Unbundle jsoncpp, update to work with libjsoncpp.so.11
Patch1:         passenger-5.0.30-json.patch
# Do not use calls from bundled libev - they are using only
# for debug.
Patch2:         passenger-5.0.30-libev.patch

Requires: rubygems
# XXX: Needed to run passenger standalone
Requires: rubygem(daemon_controller) >= 1.1.0
Requires: rubygem(rack)
Requires: rubygem(rake)
Requires: ruby(release)

BuildRequires: libcurl-devel
BuildRequires: httpd-devel
BuildRequires: libev-devel >= 4.0.0
BuildRequires: ruby
BuildRequires: ruby-devel
BuildRequires: rubygems
BuildRequires: rubygems-devel
BuildRequires: rubygem(rake) >= 0.8.1
BuildRequires: rubygem(rack)
BuildRequires: rubygem(rspec)
BuildRequires: rubygem(mime-types)
BuildRequires: rubygem(mizuho)
BuildRequires: source-highlight
BuildRequires: zlib-devel
BuildRequires: pcre-devel
BuildRequires: openssl-devel
BuildRequires: libuv-devel
BuildRequires: valgrind-devel
BuildRequires: jsoncpp-devel

Provides: bundled(boost) = %{bundled_boost_version}

Obsoletes: rubygem-passenger < %{version}-%{release}
Provides:  rubygem-passenger = %{version}-%{release}
Obsoletes: rubygem-passenger%{?_isa} < %{version}-%{release}
Provides:  rubygem-passenger%{?_isa} = %{version}-%{release}

Obsoletes: rubygem-passenger-native < %{version}-%{release}
Provides:  rubygem-passenger-native = %{version}-%{release}
Obsoletes: rubygem-passenger-native%{?_isa} < %{version}-%{release}
Provides:  rubygem-passenger-native%{?_isa} = %{version}-%{release}

Obsoletes: rubygem-passenger-native-libs < %{version}-%{release}
Provides:  rubygem-passenger-native-libs = %{version}-%{release}
Obsoletes: rubygem-passenger-native-libs%{?_isa} < %{version}-%{release}
Provides:  rubygem-passenger-native-libs%{?_isa} = %{version}-%{release}

# We are not providing -devel package anymore, so use just "Obsoletes"
Obsoletes: rubygem-passenger-devel < %{version}-%{release}
Obsoletes: rubygem-passenger-devel%{?_isa} < %{version}-%{release}

%description
Phusion Passenger® is a web server and application server, designed to be fast,
robust and lightweight. It takes a lot of complexity out of deploying web apps,
adds powerful enterprise-grade features that are useful in production,
and makes administration much easier and less complex. It supports Ruby,
Python, Node.js and Meteor.


%package -n mod_passenger
Summary: Apache Module for Phusion Passenger
Group: System Environment/Daemons
BuildRequires:  httpd-devel
Requires: httpd-mmn = %{_httpd_mmn}
Requires: %{name}%{?_isa} = %{version}-%{release}
License: Boost and BSD and BSD with advertising and MIT and zlib

%description -n mod_passenger
This package contains the pluggable Apache server module for Phusion Passenger®.


%package doc
Summary: Phusion Passenger documentation
Group: System Environment/Daemons
Requires: %{name} = %{version}-%{release}
BuildArch: noarch
Obsoletes: rubygem-passenger-doc < %{version}-%{release}
Provides:  rubygem-passenger-doc = %{version}-%{release}
License: CC-BY-SA and MIT and (MIT or GPL+)

%description doc
This package contains documentation files for Phusion Passenger®.


%prep
%setup -q

%patch0 -p1 -b .libdir
%patch1 -p1 -b .libev
%patch2 -p1 -b .json

# Don't use bundled libev and libuv
rm -rf src/cxx_supportlib/vendor-copy/libuv
rm -rf src/cxx_supportlib/vendor-modified/libev
rm -rf src/cxx_supportlib/vendor-modified/jsoncpp

# Fix the path to json.h
find . -type f -print0 | xargs -0 sed -i -e 's|<jsoncpp/json.h>|<json/json.h>|'

# Find files with a hash-bang that do not have executable permissions
grep -Rl '^#!/' . | xargs chmod -c 0755


%build
%configure || :
export EXTRA_CFLAGS="${CFLAGS}"
export EXTRA_CXXFLAGS="${CXXFLAGS}"
export EXTRA_LDFLAGS="${LDFLAGS}"

export USE_VENDORED_LIBEV=false
export USE_VENDORED_LIBEIO=false
export USE_VENDORED_LIBUV=false

export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

rake fakeroot \
    NATIVE_PACKAGING_METHOD=rpm \
    FS_PREFIX=%{_prefix} \
    FS_BINDIR=%{_bindir} \
    FS_SBINDIR=%{_sbindir} \
    FS_DATADIR=%{_datadir} \
    FS_LIBDIR=%{_libdir} \
    FS_DOCDIR=%{_docdir} \
    RUBYLIBDIR=%{passenger_libdir} \
    RUBYARCHDIR=%{passenger_archdir} \
    APACHE2_MODULE_PATH=%{_httpd_moddir}/mod_passenger.so


%install
export USE_VENDORED_LIBEV=false
export USE_VENDORED_LIBEIO=false
export USE_VENDORED_LIBUV=false

export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

cp -a pkg/fakeroot/* %{buildroot}/

# Install bootstrapping code into the executables and the Nginx config script.
./dev/install_scripts_bootstrap_code.rb --ruby %{passenger_libdir} %{buildroot}%{_bindir}/* %{buildroot}%{_sbindir}/*

# Install Apache module.
mkdir -p %{buildroot}/%{_httpd_moddir}
install -pm 0755 buildout/apache2/mod_passenger.so %{buildroot}/%{_httpd_moddir}

# Install Apache config.
mkdir -p %{buildroot}%{_httpd_confdir} %{buildroot}%{_httpd_modconfdir}
sed -e 's|@PASSENGERROOT@|%{passenger_libdir}/phusion_passenger/locations.ini|g' %{SOURCE10} > passenger.conf

%if "%{_httpd_modconfdir}" != "%{_httpd_confdir}"
    sed -n /^LoadModule/p passenger.conf > 10-passenger.conf
    sed -i /^LoadModule/d passenger.conf
    touch -r %{SOURCE10} 10-passenger.conf
    install -pm 0644 10-passenger.conf %{buildroot}%{_httpd_modconfdir}/passenger.conf
%endif
touch -r %{SOURCE10} passenger.conf
install -pm 0644 passenger.conf %{buildroot}%{_httpd_confdir}/passenger.conf

# Make our ghost log and run directories...
mkdir -p %{buildroot}%{_localstatedir}/log/passenger-analytics

# logrotate
mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d
install -pm 0644 %{SOURCE1} %{buildroot}%{_sysconfdir}/logrotate.d/passenger

# tmpfiles.d
mkdir -p %{buildroot}/run
mkdir -p %{buildroot}%{_prefix}/lib/tmpfiles.d
install -m 0644 %{SOURCE2} %{buildroot}%{_prefix}/lib/tmpfiles.d/%{name}.conf
install -d -m 0755 %{buildroot}/run/%{name}

# Install man pages into the proper location.
mkdir -p %{buildroot}%{_mandir}/man1
mkdir -p %{buildroot}%{_mandir}/man8
cp man/*.1 %{buildroot}%{_mandir}/man1
cp man/*.8 %{buildroot}%{_mandir}/man8

# Fix Python scripts with shebang which are not executable
chmod +x %{buildroot}%{_datadir}/passenger/helper-scripts/wsgi-loader.py

# Remove empty release.txt file
rm -f %{buildroot}%{_datadir}/%{name}/release.txt

# Remove object files and source files. They are needed to compile nginx
# using "passenger-install-nginx-module", but it's not according to
# guidelines. Debian does not provide these files too, so we stay consistent.
# In the long term, it would be better to allow Fedora nginx to support
# Passenger.
rm -rf %{buildroot}%{passenger_libdir}/ngx_http_passenger_module
rm -rf %{buildroot}%{passenger_libdir}/ruby_extension_source
rm -rf %{buildroot}%{passenger_libdir}/include
rm -rf %{buildroot}%{_libdir}/%{name}/common
rm -rf %{buildroot}%{_bindir}/passenger-install-*-module

# nginx support if use compiles nginx himself with Passenger support.
ln -s %{_sbindir}/nginx %{buildroot}%{passenger_archdir}/PassengerWebHelper


%check
export USE_VENDORED_LIBEV=false
export USE_VENDORED_LIBEIO=false
export USE_VENDORED_LIBUV=false

# Running the full test suite is not only slow, but also impossible
# because not all requirements are packaged by Fedora. It's also not
# too useful because Phusion Passenger is automatically tested by a CI
# server on every commit. The C++ tests are the most likely to catch
# any platform-specific bugs (e.g. bugs caused by wrong compiler options)
# so we only run those. Note that the C++ tests are highly timing
# sensitive, so sometimes they may fail even though nothing is really
# wrong. We therefore do not make failures fatal, although the result
# should still be checked.
# Currently the tests fail quite often on ARM because of the slower machines.
# Test are not included in the tarballs now :'(
# cp %{SOURCE12} test/config.json
# rake test:cxx || true


%files
%doc LICENSE CONTRIBUTORS CHANGELOG
%{_bindir}/%{name}*
%{_prefix}/lib/tmpfiles.d/%{name}.conf
%dir /run/%{name}
%{passenger_libdir}
%{passenger_archdir}
%{_sbindir}/*
%dir %{_localstatedir}/log/passenger-analytics
%config(noreplace) %{_sysconfdir}/logrotate.d/passenger
%{_mandir}/man1/*
%{_mandir}/man8/*

%files doc
%doc %{_docdir}/%{name}

%files -n mod_passenger
%config(noreplace) %{_httpd_modconfdir}/*.conf
%if "%{_httpd_modconfdir}" != "%{_httpd_confdir}"
%config(noreplace) %{_httpd_confdir}/*.conf
%endif
%doc doc/Users?guide?Apache.txt
%{_httpd_moddir}/mod_passenger.so


%changelog
* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 5.0.30-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild

* Sat Jan 20 2018 Björn Esser <besser82@fedoraproject.org> - 5.0.30-10
- Rebuilt for switch to libxcrypt

* Fri Jan 05 2018 Mamoru TASAKA <mtasaka@fedoraproject.org> - 5.0.30-9
- F-28: rebuild for ruby25

* Tue Dec 26 2017 Björn Esser <besser82@fedoraproject.org> - 5.0.30-8
- Rebuilt for jsoncpp.so.20

* Fri Sep 01 2017 Björn Esser <besser82@fedoraproject.org> - 5.0.30-7
- Rebuilt for jsoncpp-1.8.3

* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 5.0.30-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild

* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 5.0.30-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild

* Mon May 15 2017 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 5.0.30-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild

* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 5.0.30-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild

* Thu Jan 12 2017 Vít Ondruch <vondruch@redhat.com> - 5.0.30-2
- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_2.4

* Mon Oct 17 2016 Björn Esser <fedora@besser82.io> - 5.0.30-1
- update to 5.0.30
- update load_from_lib_dir.patch
- update json.patch
- update libev.patch
- properly apply compiler-flags

* Mon Oct 17 2016 Björn Esser <fedora@besser82.io> - 5.0.26-3
- Rebuilt for libjsoncpp.so.11

* Tue Mar 29 2016 Björn Esser <fedora@besser82.io> - 5.0.26-2
- Rebuilt for libjsoncpp.so.1

* Wed Mar 02 2016 Jan Kaluza <jkaluza@redhat.com> - 5.0.26-1
- update to 5.0.26

* Fri Feb 19 2016 Fedora Release Engineering <releng@fedoraproject.org> - 5.0.25-1
- update to 5.0.25

* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 5.0.23-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild

* Tue Jan 12 2016 Vít Ondruch <vondruch@redhat.com> - 5.0.23-2
- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_2.3

* Mon Jan 04 2016 Jan Kaluza <jkaluza@redhat.com> - 5.0.23-1
- update to 5.0.23

* Fri Oct 30 2015 Jan Kaluza <jkaluza@redhat.com> - 5.0.21-1
- update to 5.0.21
- fix compatibility with httpd-2.4.17

* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.0.59-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild

* Wed Apr 22 2015 Orion Poplawski <orion@cora.nwra.com> - 4.0.59-1
- Update to 4.0.59

* Wed Mar 11 2015 Orion Poplawski <orion@cora.nwra.com> - 4.0.53-4
- Do not use bundled valgrind.h (bug #1141583)

* Sun Jan 18 2015 Mamoru TASAKA <mtasaka@fedoraproject.org> - 4.0.53-3
- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_2.2

* Thu Nov 20 2014 Jan Kaluza <jkaluza@redhat.com> - 4.0.53-2
- get agents_dir from locations.ini

* Fri Oct 03 2014 Jan Kaluza <jkaluza@redhat.com> - 4.0.53-1
- update to version 4.0.53

* Wed Sep 24 2014 Jan Kaluza <jkaluza@redhat.com> - 4.0.50-2
- remove old BuildRequires and tmpfiles.d conditions

* Mon Sep 15 2014 Jan Kaluza <jkaluza@redhat.com> - 4.0.50-1
- update to new version 4.0.50

* Tue May 13 2014 Jan Kaluza <jkaluza@redhat.com> - 4.0.38-1
- renamed from rubygem-passenger to passenger
- changed the packaging structure to be closer to upstream
- update to 4.0.38 (#1060106)
- fix for CVE-2014-1831 and CVE-2014-1832
- use real commands without macros
- do not bundle libeio

* Thu Jan 23 2014 Joe Orton <jorton@redhat.com> - 4.0.18-5
- fix _httpd_mmn expansion in absence of httpd-devel

* Thu Nov 14 2013 Jan Kaluza <jkaluza@redhat.com> - 4.0.18-4
- load native library from proper path

* Thu Oct 31 2013 Jan Kaluza <jkaluza@redhat.com> - 4.0.18-3
- fix #1021940 - add locations.ini with proper Fedora locations

* Wed Sep 25 2013 Troy Dawson <tdawson@redhat.com> - 4.0.18-2
- Cleanup spec file
- Fix for bz#987879

* Tue Sep 24 2013 Troy Dawson <tdawson@redhat.com> - 4.0.18-1
- Update to 4.0.18
- Remove patches no longer needed
- Update patches that need updating

* Mon Sep 23 2013 Brett Lentz <blentz@redhat.com> - 3.0.21-9
- finish fixing bz#999384

* Fri Sep 20 2013 Joe Orton <jorton@redhat.com> - 3.0.21-8
- update packaging for httpd 2.4.x

* Thu Sep 19 2013 Troy Dawson <tdawson@redhat.com> - 3.0.21-7
- Fix for F20 FTBFS (#993310)

* Thu Aug 22 2013 Brett Lentz <blentz@redhat.com> - 3.0.21-6
- bz#999384

* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.21-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild

* Thu Jul 18 2013 Troy Dawson <tdawson@redhat.com> - 3.0.21-4
- Fix for CVE-2013-4136 (#985634)

* Fri Jun 21 2013 Troy Dawson <tdawson@redhat.com> - 3.0.21-3
- Putting the agents back to where they originally were

* Fri Jun 21 2013 Troy Dawson <tdawson@redhat.com> - 3.0.21-2
- Remove Rakefile (only used for building) (#976843)

* Thu May 30 2013 Troy Dawson <tdawson@redhat.com> - 3.0.21-1
- Update to version 3.0.21
- Fix for CVE-2013-2119

* Thu May 16 2013 Troy Dawson <tdawson@redhat.com> - 3.0.19-4
- Fix to make agents work on F19+

* Wed Mar 13 2013 Troy Dawson <tdawson@redhat.com> - 3.0.19-3
- Fix to make it build/install on F19+
- Added patch105

* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.19-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild

* Sun Jan 20 2013 Orion Poplawski <orion@cora.nwra.com> - 3.0.19-1
- Update to 3.0.19

* Wed Sep 19 2012 Orion Poplawski <orion@cora.nwra.com> - 3.0.17-3
- Drop dependency on rubygem(file-tail), no longer needed

* Fri Sep 7 2012 Brett Lentz <blentz@redhat.com> - 3.0.17-2
- Fix License

* Thu Sep 6 2012 Brett Lentz <blentz@redhat.com> - 3.0.17-1
- update to 3.0.17

* Wed Sep 5 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-15
- add support for tmpfiles.d

* Tue Sep 4 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-14
- Fix License tag
- Fix gem_extdir ownership issue

* Wed Aug 29 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-13
- fix pathing issues
- fix ruby abi requires

* Wed Aug 29 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-12
- remove capability for running passenger standalone until daemon_controller is updated

* Tue Aug 28 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-11
- fix issues with fastthread

* Mon Aug 27 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-10
- get test suite sort of working
- move agents to gem_extdir

* Fri Aug 24 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-9
- stop using _bindir
- fix native libs path
- fix ownership on extdir
- improve test output

* Wed Aug 22 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-8
- removed policycoreutils requirement
- moved native libs to gem_extdir

* Wed Aug 22 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-7
- remove selinux policy module. it's in the base policy now.

* Fri Aug 17 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-6
- put native-libs into ruby_vendorarchdir.

* Thu Aug 16 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-5
- clean up packaging and file placement.
- add logrotate file for /var/log/passenger-analytics

* Wed Aug 15 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-4
- backported fix only needed on f18+

* Wed Aug 15 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-3
- backport fix from https://svn.boost.org/trac/boost/ticket/6940

* Mon Aug 13 2012 Brett Lentz <blentz@redhat.com> - 3.0.14-2
- remove F15 conditional. F15 is EOL.

* Fri Jul 27 2012 Troy Dawson <tdawson@redhat.com> - 3.0.14-1
- Updated to version 3.0.14

* Fri Jul 27 2012 Troy Dawson <tdawson@redhat.com> - 3.0.12-6
- Added patch20, spawn-ip
- Changed selinux files to be more dynamic

* Tue Jun 05 2012 Troy Dawson <tdawson@redhat.com> - 3.0.12-5
- Add all the selinux files

* Tue Jun 05 2012 Troy Dawson <tdawson@redhat.com> - 3.0.12-4
- Added selinux configurations

* Tue Jun 05 2012 Troy Dawson <tdawson@redhat.com> - 3.0.12-3
- Added native and native-libs rpms.

* Mon Apr 16 2012 Brett Lentz <blentz@redhat.com> - 3.0.12-2
- Add dist to release.
- Shuffle around deprecated buildrequires and requires.

* Mon Apr 16 2012 Brett Lentz <blentz@redhat.com> - 3.0.12-1
- Update to 3.0.12
- Incorporate specfile changes from kanarip's version

* Wed Apr 11 2012 Brett Lentz <blentz@redhat.com> - 3.0.11-1
- Initial spec file