Bug 470696

Summary: Review Request: rubygem-passenger - Passenger Ruby on Rails deployment system
Product: [Fedora] Fedora Reporter: Jeroen van Meeuwen <vanmeeuwen+fedora>
Component: Package ReviewAssignee: Orion Poplawski <orion>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: a.badger, air1npa, apevec, bkearney, bkoz, blentz, bobbypowers, brett.lentz, cpg, drjohnson1, fedora-package-review, fedora, gholms, gregory.lee.bartholomew, gregswift, hamzah, honglilai, ilyes.gouta, jmontleo, johan-fedora, john, kajtzu, ktdreyer, lutter, mastahnke, matt, mchappel, mkhusid, mmorsi, mtasaka, notting, orion, pasteur, relrod, rgs, rocketraman, smithj4, steve.traylen, stijn, sven, tcallawa, tdawson, vondruch, xavier
Target Milestone: ---Flags: mtasaka: fedora-review+
gwync: fedora-cvs+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-09-17 22:43:01 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 470694    
Bug Blocks: 658489, 844013    
Attachments:
Description Flags
mock build log for dist-f11
none
output on a compile with attached diff (1)
none
diff to Rakefile to compile against %{_libdir}/libboost_thread-mt.a
none
diff between boost in passenger/master and boost/tags/Version_1_35_0
none
passenger 3.0 specfile without nginx support
none
diff between attached 3.0 spec and original none

Description Jeroen van Meeuwen 2008-11-08 23:48:53 UTC
Spec URL: http://www.kanarip.com/custom/SPECS/rubygem-passenger.spec
SRPM URL: http://www.kanarip.com/custom/f9/SRPMS/rubygem-passenger-2.0.3-1.fc9.src.rpm
Description: Phusion Passenger is a deployment system for Ruby on Rails applications on Apache, i.e. a 'mod_rails'. Rails deployment becomes an "upload & done" process.

rpmlint output:

[jmeeuwen@ghandalf packages]$ rpmlint ~/rpmbuild/RPMS/x86_64/rubygem-passenger-* ~/rpmbuild/RPMS/x86_64/mod_passenger-2.0.3-1.fc9.x86_64.rpm 
rubygem-passenger.x86_64: W: devel-file-in-non-devel-package /usr/bin/passenger-config
rubygem-passenger-devel.x86_64: W: no-documentation
rubygem-passenger-doc.x86_64: W: no-documentation
mod_passenger.x86_64: W: no-documentation


koji scratch builds fail atm. because of a required rubygem-fastthread update/upgrade (built and pushed already) and a missing required package rubygem-rack (See #470694)

Comment 1 Jeroen van Meeuwen 2008-11-09 13:25:12 UTC
Updated the SPEC and SRPM for better placement of the mod_passenger.so file (in %{_libdir}/httpd/modules instead of %{ruby_sitearch}/apache2/mod_passenger.so) so that the configuration file %{_sysconfdir}/httpd/conf.d/mod_passenger.so can actually load it independent of the architecture.

New SPEC: http://www.kanarip.com/custom/SPECS/rubygem-passenger.spec
New SRPM: http://www.kanarip.com/custom/f9/SRPMS/rubygem-passenger-2.0.3-2.fc9.src.rpm

Comment 2 Mamoru TASAKA 2008-11-09 15:40:14 UTC
Umm...
spot, would you answer my question below?

! First of all please unpack passenger-2.0.3.gem in the srpm by below:
  $ mkdir TMP ; cd TMP
  $ tar xf ../*gem (gem can be unpacked by tar)
  $ mkdir TMP ; cd TMP
  $ tar xzf ../data.tar.gz
  Then:
First of all, the overall license this package is GPLv2 (not GPLv2+)
Then ext/apache2/LICENSE-CNRI.TXT says:
/////////////////////////////////////////////////////////////////////////
A few functions in ext/apache2/Hooks.cpp are based on the source code of
mod_scgi version 1.9. Its license is included in this file.
Please note that these licensing terms *only* encompass those few
functions, and not Passenger as a whole.
------------------------------------------------------------------------
CNRI OPEN SOURCE LICENSE AGREEMENT

(CNRI = Python 1.6 i.e. GPL incompatible license follows)
/////////////////////////////////////////////////////////////////////////

What I am in trouble is that
- What functions in ext/apache2/Hooks.cpp are actually based on mod_scgi codes
- And I don't know for now how these functions are used in the other parts
  of passenger source codes
- So I am not sure if the code in Hooks.cpp under CNRI license won't conflict
  with GPL.

spot, how do you think about this. For me the current status seems very obscure.

Comment 3 Mamoru TASAKA 2008-11-09 16:17:39 UTC
By the way some pre-remarks

* BuildRequires
  - This package won't build without "BR: rubygem(fastthread)".
  - "BR: gcc-c++ findutils" are redundant.

* Requires
  - Please check if all needed Requires are correctly added.
    It seems that at least "Requires: rubygem(rack)
    rubygem(fastthread)" are needed.

* boost dependency
  - Well, when I try below to make build log more verbose
    (please consider this)
-------------------------------------------------------
%prep
%setup -q -c -T

mkdir BINDIR
cat > BINDIR/rake <<EOF
#!/bin/bash
%{_bindir}/rake -v \$@
EOF
chmod 0755 BINDIR/rake

%build
export CONFIGURE_ARGS="--with-cflags='%{optflags}'"
export PATH=$(pwd)/BINDIR:$PATH
gem install \
......
-------------------------------------------------------
      build log shows (attached)
-------------------------------------------------------
  1525  DEBUG: cd /builddir/build/BUILD/rubygem-passenger-2.0.3/usr/lib/ruby/gems/1.8/gems/passenger-2.0.3
  1526  DEBUG: rake clean apache2
  1527  DEBUG: rm -rf Utils.o Bucket.o Logging.o System.o Configuration.o Hooks.o mod_passenger.o mod_passenger.so ApplicationPoolSe
rverExecutable
  1528  DEBUG: (in /builddir/build/BUILD/rubygem-passenger-2.0.3/usr/lib/ruby/gems/1.8/gems/passenger-2.0.3)
  1529  DEBUG: ### In ext/apache2:
  1530  DEBUG: rm -r pkg
  1531  DEBUG: make clean
  1532  DEBUG: ### In ext/passenger:
  1533  DEBUG: rm -f Makefile
  1534  DEBUG: rm -f libboost_thread.a *.o
  1535  DEBUG: ### In ext/boost/src:
  1536  DEBUG: rm -f Apache2ModuleTests *.o
  1537  DEBUG: ### In test:
  1538  DEBUG: rm -f DummyRequestHandler ApplicationPool
  1539  DEBUG: ### In benchmark:
  1540  DEBUG: g++ -g -DPASSENGER_DEBUG -fPIC -I../.. -D_REENTRANT -DNDEBUG  -c *.cpp
  1541  DEBUG: ### In ext/boost/src:
  1542  DEBUG: g++ -g -DPASSENGER_DEBUG -fPIC -I../.. -D_REENTRANT -DNDEBUG  -c pthread/exceptions.cpp
  1543  DEBUG: g++ -g -DPASSENGER_DEBUG -fPIC -I../.. -D_REENTRANT -DNDEBUG  -c pthread/once.cpp
  1544  DEBUG: g++ -g -DPASSENGER_DEBUG -fPIC -I../.. -D_REENTRANT -DNDEBUG  -c pthread/thread.cpp
  1545  DEBUG: ar cru libboost_thread.a *.o
  1546  DEBUG: ranlib libboost_thread.a
-------------------------------------------------------
     Here
     - This package seem to be using internal libboost_thread library.
       This should be changed so that mod_passenger.so uses external (system-
       widely provided) libboost_thread-mt.so library
     - Anyway Fedora specific compilation flags are not correctly honored.

* Redundant output
  - I guess the "-v" option of "chmod -v 644 $script" is not needed...
    (Actually you are not using -v option for chmod on the below lines)
  - Also I guess rm -r"v"f is redundant...

* Document files
  - You don't have to write %doc attribute for files under %_mandir
    (as these are automatically regarded as %doc)

* Directory ownership issue
  - Please own %{ruby_sitearch}/passenger/
  - Please also check the directory ownership issues between subpackages.
    ! For example
      - The directory %{geminstdir}/doc is owned by -doc subpackage
      - -devel subpackage has %{geminstdir}/doc/definitions.h
      - -devel subpackage does not have "Requires: -doc"
      - So when -devel subpackage is installed with_out_ -doc subpackage
        installed, %{geminstdir}/doc is not owned by any packages

* %defattr
  - is missing on mod_passenger subpackage.

Comment 4 Mamoru TASAKA 2008-11-09 16:22:39 UTC
Created attachment 323017 [details]
mock build log for dist-f11

Forgot to attach mock build log...

Comment 5 Jeroen van Meeuwen 2008-11-09 20:29:23 UTC
(In reply to comment #2)
> First of all, the overall license this package is GPLv2 (not GPLv2+)

The license tag actually says GPLv2, not GPLv2+

(In reply to comment #3)
> By the way some pre-remarks
> 
> * BuildRequires
>   - This package won't build without "BR: rubygem(fastthread)".

Added BuildRequires: rubygem(fastthread) >= 1.0.1

>   - "BR: gcc-c++ findutils" are redundant.
> 

Removed these.

> * Requires
>   - Please check if all needed Requires are correctly added.
>     It seems that at least "Requires: rubygem(rack)
>     rubygem(fastthread)" are needed.
> 

Added these requires

> * boost dependency
>   - Well, when I try below to make build log more verbose
>     (please consider this)
(...snip...)
> -------------------------------------------------------
>      Here
>      - This package seem to be using internal libboost_thread library.
>        This should be changed so that mod_passenger.so uses external (system-
>        widely provided) libboost_thread-mt.so library
>      - Anyway Fedora specific compilation flags are not correctly honored.
> 

I seem unable to do this. Logfile attached

> * Redundant output
>   - I guess the "-v" option of "chmod -v 644 $script" is not needed...
>     (Actually you are not using -v option for chmod on the below lines)
>   - Also I guess rm -r"v"f is redundant...
> 

It's redundant, but it shows which files are chmod'ed or rm'ed; since it's a find with a couple of parameters I'd like to be able to track down what happens.

> * Document files
>   - You don't have to write %doc attribute for files under %_mandir
>     (as these are automatically regarded as %doc)
> 

Fixed.

> * Directory ownership issue
>   - Please own %{ruby_sitearch}/passenger/
>   - Please also check the directory ownership issues between subpackages.
>     ! For example
>       - The directory %{geminstdir}/doc is owned by -doc subpackage
>       - -devel subpackage has %{geminstdir}/doc/definitions.h
>       - -devel subpackage does not have "Requires: -doc"
>       - So when -devel subpackage is installed with_out_ -doc subpackage
>         installed, %{geminstdir}/doc is not owned by any packages
> 

Made %{geminstdir} shared between -devel and -doc package.

> * %defattr
>   - is missing on mod_passenger subpackage.

Fixed.

New SPEC: http://www.kanarip.com/custom/SPECS/rubygem-passenger.spec
New SRPM: http://www.kanarip.com/custom/f9/SRPMS/rubygem-passenger-2.0.3-3.fc9.src.rpm

Comment 6 Mamoru TASAKA 2008-11-10 03:33:00 UTC
(In reply to comment #5)

> > * boost dependency
> >   - Well, when I try below to make build log more verbose
> >     (please consider this)
> (...snip...)
> > -------------------------------------------------------
> >      Here
> >      - This package seem to be using internal libboost_thread library.
> >        This should be changed so that mod_passenger.so uses external (system-
> >        widely provided) libboost_thread-mt.so library
> >      - Anyway Fedora specific compilation flags are not correctly honored.
> > 
> 
> I seem unable to do this. Logfile attached

Well, would you attach the log?

Comment 7 Tom "spot" Callaway 2008-11-10 16:43:29 UTC
(In reply to comment #2)

> What I am in trouble is that
> - What functions in ext/apache2/Hooks.cpp are actually based on mod_scgi codes
> - And I don't know for now how these functions are used in the other parts
>   of passenger source codes
> - So I am not sure if the code in Hooks.cpp under CNRI license won't conflict
>   with GPL.
> 
> spot, how do you think about this. For me the current status seems very
> obscure.

Problem 1: 
The functions which are copied are not marked, thus, the code is being reused without proper attribution. This means that the upstream for rubygem-passenger is in violation of the terms of the CNRI License:

"3. In the event Licensee prepares a derivative work that is based on
   or incorporates scgi-1.9 or any part thereof, and wants to make
   the derivative work available to others as provided herein, then
   Licensee hereby agrees to include in any such work a brief
   summary of the changes made to scgi-1.9."

No such summary exists.

Problem 2: 
You cannot copy code which is under a GPLv2-incompatible license into a source file which is marked as GPLv2, then compile it into a larger GPLv2 program. So, even if we knew which functions were copied, it almost certainly wouldn't matter. This code is non-distributable.

Unfortunately, there seems to be no easy way to fix Problem 2 (Problem 1 is easy enough to fix by the rubygem-passenger upstream). All releases of the mod_scgi code are under the CNRI license (although, changes made after 1.10 are under MIT). Some methods of fixing this issue would be:

1. Removing all of the copied code from mod_scgi 1.09, then replacing it either with clean-room written code (aka, code written by someone who has never looked at mod_scgi) or restructuring the rubygem-passenger code so that it is not necessary. 

2. Getting permission from CNRI to use that code under different (GPLv2 compatible) terms. They seem to use MIT for changes to that codebase these days, perhaps they would give permission for the copied code to be used under those terms?

However, until this issue is resolved, this one can't go any farther, sorry.

Comment 8 Jeroen van Meeuwen 2008-11-10 23:50:25 UTC
(In reply to comment #7)
> (In reply to comment #2)
>
> (...snip...)
>
> Unfortunately, there seems to be no easy way to fix Problem 2 (Problem 1 is
> easy enough to fix by the rubygem-passenger upstream). All releases of the
> mod_scgi code are under the CNRI license (although, changes made after 1.10 are
> under MIT). Some methods of fixing this issue would be:
> 
> 1. Removing all of the copied code from mod_scgi 1.09, then replacing it either
> with clean-room written code (aka, code written by someone who has never looked
> at mod_scgi) or restructuring the rubygem-passenger code so that it is not
> necessary. 
> 
> 2. Getting permission from CNRI to use that code under different (GPLv2
> compatible) terms. They seem to use MIT for changes to that codebase these
> days, perhaps they would give permission for the copied code to be used under
> those terms?
> 
> However, until this issue is resolved, this one can't go any farther, sorry.

Would another solution be to use mod_scgi >= 1.10?

Comment 9 Jeroen van Meeuwen 2008-11-10 23:55:20 UTC
Created attachment 323134 [details]
output on a compile with attached diff (1)

Attach output from a rake -v when compiling against the system-wide provided boost-static libraries

Comment 10 Jeroen van Meeuwen 2008-11-10 23:57:27 UTC
Created attachment 323135 [details]
diff to Rakefile to compile against %{_libdir}/libboost_thread-mt.a

Attach diff for Rakefile

Comment 11 Mamoru TASAKA 2008-11-11 08:30:18 UTC
(In reply to comment #9)
> Created an attachment (id=323134) [details]
> output on a compile with attached diff (1)
> 
> Attach output from a rake -v when compiling against the system-wide provided
> boost-static libraries

You should link against libboost_thread-mt.so, not against static
archive libboost_thread-mt.a.
But anyway linkage fails by other reasons like
-----------------------------------------------------------------
ApplicationPoolServerExecutable.cpp:86: undefined reference to `boost::this_thread::interruption_requested()'
-----------------------------------------------------------------
(and many errors). It seems that this is because Fedora ships boot 1.34
while these symbols are introduced on 1.36+.
So until Fedora upgrades boost we have to use internal boost.
In this case Fedora compilation flags must be treated correctly.
The following seems to fix this issue:
------------------------------------------------------------------
--- Rakefile.orig       2008-11-11 16:23:45.000000000 +0900
+++ Rakefile    2008-11-11 17:23:32.000000000 +0900
@@ -88,7 +88,7 @@
 
 subdir 'ext/boost/src' do
        file 'libboost_thread.a' => Dir['*.cpp'] + Dir['pthread/*.cpp'] do
-               flags = "#{OPTIMIZATION_FLAGS} -fPIC -I../.. #{THREADING_FLAGS} -DNDEBUG #{MULTI_ARCH_FLAGS}"
+               flags = "#{OPTIMIZATION_FLAGS} #{APACHE2::CXXFLAGS} -fPIC -I../.. #{THREADING_FLAGS} -DNDEBUG #{MULTI_ARCH_FLAGS}"
                compile_cxx "*.cpp", flags
                # NOTE: 'compile_cxx "pthread/*.cpp", flags' doesn't work on some systems,
                # so we do this instead.
-------------------------------------------------------------------

Comment 12 Mamoru TASAKA 2008-11-11 08:38:59 UTC
(In reply to comment #8)
> (In reply to comment #7)
> > (In reply to comment #2)
> >
> > (...snip...)
> >
> > Unfortunately, there seems to be no easy way to fix Problem 2 (Problem 1 is
> > easy enough to fix by the rubygem-passenger upstream). All releases of the
> > mod_scgi code are under the CNRI license (although, changes made after 1.10 are
> > under MIT). Some methods of fixing this issue would be:
> > 
> > 1. Removing all of the copied code from mod_scgi 1.09, then replacing it either
> > with clean-room written code (aka, code written by someone who has never looked
> > at mod_scgi) or restructuring the rubygem-passenger code so that it is not
> > necessary. 
> > 
> Would another solution be to use mod_scgi >= 1.10?

Current mod_scgi seems 1.13.
http://python.ca/scgi/releases/scgi-1.13.tar.gz

However LICENSE.txt of mod_scgi 1.13 contains
--------------------------------------------------------------------
This version of the SCGI package is derived from scgi 1.10, released by
CNRI.  See doc/LICENSE_110.txt for the licensing terms of that release.
Changes made since that release are summarized in the CHANGES.txt file
along with a list of authors. Those changes are made available under the
following terms (commonly known as the MIT/X license).
--------------------------------------------------------------------
This reads that the codes derived from scgi 1.10 codes are still under
CNRI license, and only what is changed compared to 1.10 are under
MIT. So I don't think using latest mod_scgi will solve this issue.

Comment 13 Mamoru TASAKA 2008-12-07 16:09:10 UTC
Any news from upstream?

Comment 14 Jeroen van Meeuwen 2008-12-08 12:39:15 UTC
(In reply to comment #13)
> Any news from upstream?

I'm not sure what I can ask them to do?

Comment 15 Tom "spot" Callaway 2008-12-08 15:25:58 UTC
Talk to upstream and CNRI about getting permission to use the mod_scgi derived code under different (GPL compatible terms), perhaps MIT?

Comment 16 Jeroen van Meeuwen 2008-12-12 00:13:08 UTC
I've contacted both upstream for CNRI as well as Phusion Passenger;

= CNRI =

I've requested taking into consideration re-licensing the original mod_scgi code-base to a GPLv2-compatible license, and they promised me to have their CEO look into it. Should they choose to do so, I think that would kill both birds with one stone, wouldn't it?

= Phusion Passenger =

They are considering re-licensing Phusion Passenger (thus rubygem-passenger) to the MIT license. Would that solve the incompatibility issue? And, would that make the package's license acceptable for inclusion in Fedora/EPEL?

Comment 17 Tom "spot" Callaway 2008-12-12 14:24:34 UTC
So, if CNRI gives permission for rubygem-passenger to use mod_scgi 1.10 under GPLv2, that would resolve the licensing issue. Note that I said 1.10. If they only relicense their latest version, that won't do the trick.

If rubygem-passenger is relicensed to MIT, they're no longer incompatible with the mod_scgi 1.10 licensing, but they're _still_ in violation of the mod_scgi 1.10 licensing terms, which state:

"3. In the event Licensee prepares a derivative work that is based on
   or incorporates scgi-1.9 or any part thereof, and wants to make
   the derivative work available to others as provided herein, then
   Licensee hereby agrees to include in any such work a brief
   summary of the changes made to scgi-1.9."

They need to add a summary of the changes made to the mod_scgi code used, and then they'd be in the clear.

Comment 18 Jeroen van Meeuwen 2008-12-12 14:39:57 UTC
(In reply to comment #17)
> So, if CNRI gives permission for rubygem-passenger to use mod_scgi 1.10 under
> GPLv2, that would resolve the licensing issue. Note that I said 1.10. If they
> only relicense their latest version, that won't do the trick.
> 

I've asked for re-licensing of mod_scgi-1.09 and later versions (including mod_scgi-1.10)

> If rubygem-passenger is relicensed to MIT, they're no longer incompatible with
> the mod_scgi 1.10 licensing, but they're _still_ in violation of the mod_scgi
> 1.10 licensing terms, which state:
> 
> "3. In the event Licensee prepares a derivative work that is based on
>    or incorporates scgi-1.9 or any part thereof, and wants to make
>    the derivative work available to others as provided herein, then
>    Licensee hereby agrees to include in any such work a brief
>    summary of the changes made to scgi-1.9."
> 
> They need to add a summary of the changes made to the mod_scgi code used, and
> then they'd be in the clear.

Phusion Passenger's upstream told me they would list the changes anyway.

Comment 19 Mamoru TASAKA 2009-01-17 13:25:07 UTC
Please let me know if there is any news from the upstream.

Comment 20 Johan Kok 2009-03-03 11:41:54 UTC
(In reply to comment #18)
>
> Phusion Passenger's upstream told me they would list the changes anyway.

Jeroen, do you have any news on licensing and/or listing changes from upstream? 

After a quick look at the Phusion Passenger 2.1.1 (beta, released this week), I can't find a new license and/or a listing of those changes to the mod_scgi code in there.

Comment 21 Jeroen van Meeuwen 2009-03-04 22:47:09 UTC
phusion.nl, the upstream for mod_passenger promised me they would include a list of changes.

The CEO of CNRI (owner of the license and original mod_scgi code) has not responded to my inquiries but some of their employees have; long story short, no result from that angle either.

Comment 22 Jeroen van Meeuwen 2009-03-15 22:28:36 UTC
Would it be allowed to drop mod_passenger from the package (and thus not use the CNRI licensed code in the package for Fedora)?

Could we then continue the review just for rubygem-passenger?

Comment 23 Mamoru TASAKA 2009-03-16 18:11:16 UTC
(In reply to comment #22)
> Would it be allowed to drop mod_passenger from the package (and thus not use
> the CNRI licensed code in the package for Fedora)?
> 
> Could we then continue the review just for rubygem-passenger?  

If this package is still useful even if mod_passenger part
is dropped, you can just do it.

Comment 24 Jeroen van Meeuwen 2009-03-17 13:33:28 UTC
I'll explain my plan a little further because it may be a little controversial.

Since this package is a little hard to package (with or without mod_passenger), I was thinking I could ship rubygem-passenger, and out-comment all the parts that have to do with mod_passenger (and thus not ship, compile or include mod_passenger itself, just the .spec semantics, out-commented). That way, downstream users that want mod_passenger can derive from the .spec and .srpm already in Fedora.

However, my primary concern is that we would be shipping an intolerable SRPM (since the conflicting licenses prevent the sources from being shipped together as one).

Could you let me know what you think? Thanks!

Comment 25 Mamoru TASAKA 2009-03-26 14:22:33 UTC
Sorry for late reply.

(In reply to comment #24)
> I'll explain my plan a little further because it may be a little controversial.
> 
> Since this package is a little hard to package (with or without mod_passenger),
> I was thinking I could ship rubygem-passenger, and out-comment all the parts
> that have to do with mod_passenger (and thus not ship, compile or include
> mod_passenger itself, just the .spec semantics, out-commented). That way,
> downstream users that want mod_passenger can derive from the .spec and .srpm
> already in Fedora.
> 
> However, my primary concern is that we would be shipping an intolerable SRPM
> (since the conflicting licenses prevent the sources from being shipped together
> as one).
> 
> Could you let me know what you think? Thanks!  

I don't think we can provide srpm which cannot build within Fedora's
policy and which needs fixing to compile.

Comment 26 Mamoru TASAKA 2009-04-22 13:04:43 UTC
*** Bug 496941 has been marked as a duplicate of this bug. ***

Comment 27 Matthew Kent 2009-05-05 04:07:44 UTC
Looking at the 2.2.2 release it looks like they've gone to to the MIT license and carry attribution for the functions.

Comment 28 Tom "spot" Callaway 2009-05-05 12:34:46 UTC
When I see a 2.2.2 SRPM, I'll audit it to make sure everything looks okay from a licensing perspective.

Comment 30 Tom "spot" Callaway 2009-05-05 14:57:33 UTC
The source looks clean of licensing issues. You should really use:

License: MIT and CNRI

Lifting FE-Legal.

Comment 31 Mamoru TASAKA 2009-05-05 18:28:38 UTC
ell, for 2.2.2-1:

* %define -> %global
  - Please use %global instead of %define:
    https://fedoraproject.org/wiki/Packaging/Guidelines#.25global_preferred_over_.25define

* Gem guidelines
  - First of all, this does not follow RubyGem packaging
    guidelines
    A This srpm is not created from original gem file
    B And actually the binary "rubygem-passenger"
      rpm does not work as gem.
      For example, "$ gem list passenger returns nothing.
      This is because specification .gemspec file is missing.
      Also, cached gem file is not installed.

    Well, for A:
    - When using gem as source, applying patches may be difficult.
      However if you want gem file can be expanded as tar archive.
      Also, usually I guess rake file supports "rake gem" to create
      modified gem file
    The issue B is more critical than A.

* Functionality
  - Note that some of (maybe all) scripts under %_bindir don't
    work. For example:
----------------------------------------------------------------
$ passenger-config --version
/usr/bin/passenger-config:27:in `require': no such file to load -- phusion_passenger/constants (LoadError)
	from /usr/bin/passenger-config:27
----------------------------------------------------------------


* Issues from build.log
----------------------------------------------------------------
    92  mkdir -p ext/nginx/libboost_oxt/boost
    93  g++ -Iext  -D_REENTRANT -I/usr/local/include -Wall -g -DPASSENGER_DEBUG -DBOOST_DISABLE_ASSERTS -o ext/nginx/libboost_oxt/boost/exceptions.o -c ext/boost/src/pthread/exceptions.cpp
    94  g++ -Iext  -D_REENTRANT -I/usr/local/include -Wall -g -DPASSENGER_DEBUG -DBOOST_DISABLE_ASSERTS -o ext/nginx/libboost_oxt/boost/once.o -c ext/boost/src/pthread/once.cpp
----------------------------------------------------------------
  - This still uses internal boost library. Please try to
    use system-wide boost library.
    Note that F-11/12 boost is 1.37.

   And:
----------------------------------------------------------------
   106  g++ -Iext -Iext/common  -D_REENTRANT -I/usr/local/include -Wall -g -DPASSENGER_DEBUG -DBOOST_DISABLE_ASSERTS -o ext/nginx/libpassenger_common/Utils.o -c ext/common/Utils.cpp
   107  g++ -Iext -Iext/common  -D_REENTRANT -I/usr/local/include -Wall -g -DPASSENGER_DEBUG -DBOOST_DISABLE_ASSERTS -o ext/nginx/libpassenger_common/Logging.o -c ext/common/Logging.cpp
----------------------------------------------------------------
  - Fedora specific compilation flags are not correctly honored.

* Misc cleanups
  ! Note:
    Before fixing below, please change to use gem file as
    source first.
----------------------------------------------------------------
mkdir -p %{buildroot}/%{geminstdir}
mkdir -p %{buildroot}/%{geminstdir} %{buildroot}/%{geminstdir}/lib/ext/
cp -a * %{buildroot}/%{geminstdir}
----------------------------------------------------------------
    - The middle line is not needed.

    - What is the following line for?
----------------------------------------------------------------
cp -a ext/phusion_passenger/native_support.so %{buildroot}/%{geminstdir}/lib/ext/.
----------------------------------------------------------------

* Directory ownership issue
  - The following directories should be owned by main package,
    not by -devel subpackage:
----------------------------------------------------------------
%{geminstdir}/ext/
%{geminstdir}/ext/apache2/
%{geminstdir}/ext/boost/
----------------------------------------------------------------

  - The ownership of the following directories is unclear:
----------------------------------------------------------------
%{geminstdir}/test/
%{geminstdir}/test/support/
----------------------------------------------------------------

Comment 32 Mamoru TASAKA 2009-05-21 14:35:00 UTC
ping?

Comment 33 Mamoru TASAKA 2009-06-06 16:17:45 UTC
ping again?

Comment 34 Hongli Lai 2009-06-07 11:12:47 UTC
Hi Mamoru. I am one of the authors of Phusion Passenger, and I want to comment on several issues here:

== Vendoring Boost

We actually use a modified version of Boost, so Phusion Passenger will not compile against a stock Boost. I understand your concerns with regard to security, but please rest assured because we fully understand the security implications of vendoring a library. We will take full responsibilities for any security problems; that is, we will either backport security fixes or upgrade our vendored Boost to a newer version.

I hope this addresses any concerns that you might have with regard to vendoring Boost. If not then I'm eager to hear your thoughts on it.

== native_support.so

I don't think the cp command there is correct. Phusion Passenger loads native_support.so by calling "require 'phusion_passenger/native_support'", so the file must be inside a 'phusion_passenger' directory.

== -devel subpackage

Phusion Passenger should not be split into a regular and a -devel subpackage. We do not provide developer headers or libraries.

The source files in the ext subdirectory are not used during runtime, so they can be safely omitted from the RPMs. The lib subdirectory however must be present.

== test subdirectory

The test subdirectory contains unit tests and integration tests, and are only useful for Phusion Passenger developers, not for Phusion Passenger users. You can safely omit this subdirectory in the RPMs.

Comment 35 Hongli Lai 2009-06-07 11:13:59 UTC
Also, could you wait for the 2.2.3 release, which is scheduled for next week? *A lot* of bugs have been fixed in this release.

Comment 36 Mamoru TASAKA 2009-06-07 15:03:33 UTC
(In reply to comment #34)
> == Vendoring Boost
> 
> We actually use a modified version of Boost, so Phusion Passenger will not
> compile against a stock Boost. I understand your concerns with regard to
> security, but please rest assured because we fully understand the security
> implications of vendoring a library. We will take full responsibilities for any
> security problems; that is, we will either backport security fixes or upgrade
> our vendored Boost to a newer version.
> 
> I hope this addresses any concerns that you might have with regard to vendoring
> Boost. If not then I'm eager to hear your thoughts on it.


CC-ing to Toshio. Would you comment on this issue?

Comment 37 Toshio Kuratomi 2009-06-07 20:08:02 UTC
Short answer: vendoring or bundling of libraries is not allowed.

Long answer: you can request an exception from FESCo but it's not likely to be granted with just the reasons you've given here.  When you bundle a library and, on top of that, modify it so it no longer matches upstream, you are starting the process of forking the library.  This may not seem like much of an issue to a developer.  (Hey, I just have one or two forked libraries, no problem for me to track security issues.)  But it makes life much more difficult for distributions.  There are places that this shows up.

* Security.  You touched on the fact that you've heard the security arguments but I'll go ahead on specify them here since there's many different places that this touches:
  - When a security flaw is discovered in a library and bundling is not allowed, The library can be fixed in a single package, that package rebuilt, and when users download it, all the applications that use it are immediately protected.  When bundling is allowed, the distribution has to find all the packages that the library occurs in by auditing source code or running a special tool over all elf files in all packages, then all of those packages have to be fixed, all of those packages have to be built, and users have to download and update each of the ones that they are using on their system before they are protected.  There is much more work involved when bundled libraries are involved.
  - With security issues, people want to remove as much lag as they can between announcement of a problem and the fix being available for users.  When libraries are unbundled, tools like vendor-sec can be used to alert distributions of problems that need patching in their packages before the announcement is made and then they can fix them with zero days of vulnerability.  If bundling of libraries occurs, then the problem becomes how to get fixes out to all affected packages.  If the distribution patches those packages, they must be careful to not leak the fact that there is a security vulnerability before they are allowed (which means they need to be careful who they share the information and what information they share with others).  OTOH, if they do not patch the packages bundling libraries, then those packages are not protected on zero day, but only afterwards.
  - When a security flaw appears, the program has to either update to a non-affected version of the library or backport a fix.  This can be problematic when the code of the library has undergone many API and code changes since the version that is being bundled and the security fixing patch is very widespread.  Many conflicts can arise that need time to fix when trying to backport the fixes but porting the application code to the new API version can also take a lot of time.
  - We cannot implicitly trust an upstream application to be on top of security issues that are released in the packages that they care about.  What happens if you are not following boost development and don't know that a security release has been made?  What happens if the developer that is responsible for watching boost development goes on vacation or quits your project?  What happens if your application ceases active development?  What happens if boost stops active development and security fixes start originating with distro patches?
* Forking is occurring.  Once an application starts bundling libraries, it's easy for the project to include local patches to the library to add features that upstream doesn't have or fix bugs that upstream hasn't addressed.  This has several negative effects.
  - When a security issue appears, it becomes harder to fix the application bundling the library.  If you attempt to upgrade to a newer version, you have to make sure your important local modifications get ported to the new version.  If you attempt to backport, you have to merge the upstream fix to your own code-base which may have conflicts with the local modifications.
  - When working with the library that comes from upstream, there is a community of people who are interested in that library to fall back on for help.  When working on your own private copy that community may not be interested in helping you work on your modified sources since they don't have control or knowledge of what your modified sources do.
  - Forking dilutes one of the strengths of open-source development.  Instead of a project getting stronger with more people supplying patches to help drive the project and build a bigger community, the community of people interested in it are splintering, developing more and more divergent code-bases, solving the same problem over and over in different ways in different private copies of the library.  Instead of everyone benefiting, everyone has to pay.
* Bugfixes.  Are usually of lesser importance from security issues but share the same issues arise.
* Old versions of code linger on.  If the application can bundle its own version of a library, the incentive to port to newer versions of the library are reduced.  This exacerbates the problems of security and bugfix issues.  Instead of progressively porting to newer versions of a library as time goes on, porting to newer versions becomes a chore that has to be performed at the same time as addressing a security flaw.  This puts time pressure on the project when the work could have been spread out over a longer period if only the porting had been done all along.
* Licensing.  Although licensing issues can crop up in any project, projects which bundle code from different sources together are a special source of concern.  They make auditing for license issues a larger project.

One last note related more to what you wrote than to the reasons that bundling is not allowed in Fedora.  You write that you are willing to:

"take full responsibilities for any security problems; that is, we will either backport security fixes or upgrade our vendored Boost to a newer version."

However, I wonder what that means to you.  Are you guaranteeing that you will be able to produce zero day updates of your packages that include the fixes to your bundled boost at the same time as boost itself is updated?  Are you saying that you will always be around to handle the problems that can arise?  What happens if your responses are not timely enough to meet the needs of our users?  Are you making a monetary guarantee?  I think that attempting to say that you take full responsibility in this context should be approached with caution on your part as what it entails could be interpreted in many different ways.

Comment 38 Hongli Lai 2009-06-07 20:57:35 UTC
Toshio, I totally understand your points. We are well aware of all of those disadvantages of bundling/forking that you mentioned, but given our circumstances we decided that bundling/forking Boost is the best solution, despite all the aforementioned disadvantages. We made this decision a year ago, and to date we still think that it's the right decision.

Regarding responsibility: what I meant is that we take security very seriously, and that we will do our best to address any security problems, including those in Boost, as opposed to neglecting Boost security issues and happily keeping on vendoring the old, insecure version. We treat any problems in Boost as if they are problems in our own code. Is this explanation sufficient for you? If not, what are your concerns?

Comment 39 Jeroen van Meeuwen 2009-06-09 22:37:51 UTC
(In reply to comment #35)
> Also, could you wait for the 2.2.3 release, which is scheduled for next week?
> *A lot* of bugs have been fixed in this release.  

This is a package review for admitting the package in Fedora, not a bug-tracker ;-)

Comment 40 Jeroen van Meeuwen 2009-06-09 23:12:10 UTC
(In reply to comment #38)
> Toshio, I totally understand your points. We are well aware of all of those
> disadvantages of bundling/forking that you mentioned, but given our
> circumstances we decided that bundling/forking Boost is the best solution,
> despite all the aforementioned disadvantages. We made this decision a year ago,
> and to date we still think that it's the right decision.
> 

Note that what we're saying is that forking (and forming another upstream) actually is better then bundling (whether forked or not).

Also, we'd like to see an effort made to have the changes applied to boost be sent and accepted upstream even though that would include more work (*NIX -> win32 compat). Upstream would then at least stand a chance in whether they want to make stuff win32 compat. or whether to ignore/reject the patch at all. If you decide to do so, please keep me in the loop.

Comment 41 Toshio Ernie Kuratomi 2009-06-09 23:55:39 UTC
(In reply to comment #38)
> Toshio, I totally understand your points. We are well aware of all of those
> disadvantages of bundling/forking that you mentioned, but given our
> circumstances we decided that bundling/forking Boost is the best solution,
> despite all the aforementioned disadvantages. We made this decision a year ago,
> and to date we still think that it's the right decision.
> 
Bundling may be the right decision for an upstream development shop.  However,
it is definitely not the right decision for software that is shipped in many
distributions or for the conscientious system administrators.  Bundling shifts
the cost of forking so that developers bear less up front costs but
distributions and system administrators bear more costs later on.  In the case
of embargoed security fixes the cost is paid when there is time pressure to get
a fix created before a certain deadline is reached. In the case of bug-fixes
and enhancements (features, performance), the cost penalty is less urgent but
still occurs in the form of duplicate bugs, analysis, and debugging against the
bundled version of the library when that work has already gone into the system
library and resolved there via a patch or upgrade.

Not only is the cost shifted around but the benefits are decreased when the
forked library is bundled instead of released separately.  If the changes that
prompt you to bundle the library are useful for you, why won't they be useful
for others as well?  If they're useful for others, then bundling the library
forces them to reinvent the same types of changes you've made instead of
working with you to get their make a better product overall.

Comment 42 Mamoru TASAKA 2009-07-15 17:51:18 UTC
What is the status of this bug?

Comment 43 Hongli Lai 2009-07-16 06:45:06 UTC
Toshio, Mamoru, as a startup company with finite resources we cannot afford to spend lots of resources on getting our changes accepted into Boost. If this means that Phusion Passenger will not be packaged by Fedora, then so be it; our users will find us and will use our software regardless.

Of course, if Red Hat can provide man power to get the changes accepted into Boost for us, or if Red Hat can hire us to get it done, then it would be a different story.

Comment 44 Toshio Ernie Kuratomi 2009-07-16 14:27:03 UTC
(In reply to comment #43)
> Toshio, Mamoru, as a startup company with finite resources we cannot afford to
> spend lots of resources on getting our changes accepted into Boost. If this
> means that Phusion Passenger will not be packaged by Fedora, then so be it; our
> users will find us and will use our software regardless.
> 
> Of course, if Red Hat can provide man power to get the changes accepted into
> Boost for us, or if Red Hat can hire us to get it done, then it would be a
> different story.  

You're so close to understanding the power of open source software, you just need to take a few more steps! :-)  Here's how I would have phrased it as an open source developer trying to leverage his community:

"""
I can see how bundling libraries can be a problem for distributions.  We just went through similar issues with Debian as well.  Unfortunately, that's not the market that we're actively pursuing at the moment so we're spending our time working on other areas of the code rather than trying to get our changes integrated into boost.  If you want to get those changes integrated into boost, the current code is here: URL_TO_GIT_REPO.  The current code is based on boost BOOST_VERSION.  The diff between the two will show you that we're basically doing: OVERVIEW_OF_CHANGES.  This is essential because WHY_IS_THIS_AN_ESSENTIAL_BUGFIX,_FEATURE,_ETC.  This has to touch MANY_FILES/FEW_FILES/INVASIVE_CHANGE/UNOBTRUSIVE_CHANGE.  The changes OTHER_NOTES_THAT_WILL_HELP_US_UNDERSTAND_THE_CODE_WELL_ENOUGH_TO_EXPLAIN_IT_TO_BOOST_UPSTREAM.

We've tried to get this into upstream boost before.  Here's a link to the mailing list discussion of that where boost upstream outlines the issues they had with our present code: URL_TO_PREVIOUS_DISCUSSION_WITH_BOOST.

If you can get this into boost's upstream we'd be happy to TAKE_PATCHES/MAKE_OUR_OWN_CHANGES to phusion passenger to UNBUNDLE/ONLY_BUNDLE_IF_SYSTEM_BOOST_IS_UNAVAILABLE boost.

Hope that helps!
"""

In open source, people help write code because they have an itch to scratch.  Red Hat doesn't ship phusion passenger so you need to address the people who actually have an itch instead.  Jeroen and a number of people CC'd to this bug fit that bill as they want to see phusion passenger shipped on Fedora and understand that bundling libraries is a drawback for their deployments.  Since they didn't write the modifications to boost, be sure to give them the tools and knowledge they need to successfully discuss the changes with boost upstream so that there's a chance of getting the changes integrated.  Whether phusion passenger gets into Fedora will depend on whether you get one of them to pick up the task and get the changes merged upstream.

Also remember that getting changes integrated upstream is often like a negotiating session. Since you're trying to get someone else to do your negotiating for you, be sure they understand what your requirements are before sending them off to work.  Maybe boost will give you the feature you want but it can't use the API you wrote.  Maybe the feature is unacceptable but boost will make changes so you can write the feature into your application layer instead.  It's important for the person who takes up this task to know what things are negotiable and which are not.

Comment 45 Hongli Lai 2009-07-16 14:53:14 UTC
Toshio, you are absolutely right. I apologize for the short reply that I sent; I hadn't given it a lot of time and thought because my hands are full with client work right now. Lately I'm not even able keep up with providing community support for Phusion Passenger, let alone going through the negotiation process of getting changes or similar features accepted into Boost.

It is possible for me to provide an overview of changes and rationale for the changes, but that takes time as well, and I cannot spare any. Even my weekends and evenings are fully scheduled. I estimate to have more time by October so if you can wait until then then perhaps we can work something out.

Comment 46 Jeroen van Meeuwen 2009-07-16 17:54:02 UTC
Look, I perfectly understand your challenges, and I myself as undoubtedly many other people as well are in quite the same situation.

Like Toshio suggested, I'm doing this because I have an itch to scratch. Even though of particular benefit to myself (I don't have time to run in circles supporting weird versions of boost), it could result in huge benefit to you as well as your customers.

So, if you could please take the time to press "Print" on the documentation, I can come and pick it up next week in Apeldoorn.

Comment 47 Hongli Lai 2009-07-16 22:27:18 UTC
Thanks for the offer, but there is no documentation at this time that describes what the Boost changes are and why they were made, except for the Git commit logs. Writing one will take some time and the earliest date at which I can do that is probably October.

Comment 48 Jeroen van Meeuwen 2009-07-17 06:33:39 UTC
Is there any other way I can help you, besides going renegade and attempting to fix this by working on the code myself, without help?

Comment 49 Jeroen van Meeuwen 2009-07-26 09:49:10 UTC
Created attachment 355185 [details]
diff between boost in passenger/master and boost/tags/Version_1_35_0

Attached a diff between ext/boost in the master branch of passenger and the boost/ directory in boost's tags/Version_1_35_0

Comment 50 Hongli Lai 2009-07-26 10:54:31 UTC
Sorry, I haven't had the time to post a proper reply.

Please feel free to go renegade if you can't wait until October.

Comment 51 Jeroen van Meeuwen 2009-07-26 11:57:33 UTC
I can wait until October, but I do want to understand in full what changes we're talking about so that we may actually get some work done in October ;-)

Comment 52 Hongli Lai 2009-07-26 14:09:27 UTC
I'll give a few quick hints then.
- You see I modified the boost::thread class. The modifications are necessary in order to implement oxt::thread.
- Some exception classes like thread_resource_error are modified to inherit from oxt::tracable_exception.

oxt::thread and oxt::tracable_exception and their purposes are documented in their respective header files.

Comment 53 Michael Stahnke 2009-11-04 04:37:36 UTC
So, October is over, and there still a ruby community eager to have passenger on Fedora/RHEL.  Are we any closer to reaching an end to this?

Comment 54 Jeroen van Meeuwen 2009-11-04 08:05:05 UTC
My status is I'm slowly growing some more C coding skills to fold oxt/boost/passenger back onto what is available outside of the passenger realm ;-)

Comment 55 Hongli Lai 2009-11-04 09:17:30 UTC
Sorry, still too busy.

Comment 56 Michael Stahnke 2010-04-16 21:37:06 UTC
And now?

Comment 57 Hongli Lai 2010-04-16 22:40:30 UTC
Right now I'm working on a client project with a tight deadline.

Now, since this issue has been opened for about a year now I'll just be honest with you. As part of a bootstrapping company I find it very hard to invest time in getting my changes merged upstream. You mentioned that by submitting changes upstream it'll alleviate myself of having to maintain the changes. This is correct, but the flip side of the coin is that I'll have to get the changes accepted in the first place. Some of the changes we made to Boost are quite intrusive and change source and binary compatibility (we've modified some basic classes to derive from classes in our own library, for example) and getting all changes accepted into Boost will be a long, hard process. So what's easier, maintaining the changes ourselves or going through the trouble of submitting the changes upstream? I still think the former is easier.

Debian is already packaging Phusion Passenger and they know about our usage of Boost. We already have contacts with people who are willing to maintain third party yum repositories. Unlike the official Fedora repository, these third party repositories can collaborate closely with us and won't lag behind official releases for weeks or months.

So all in all I do not see any benefits in getting the Boost changes submitted upstream; in fact, I only see drawbacks. If you want to do it I won't stop you, but without some sort of financial compensation for my time I won't do it. I have to work to pay for my food after all.

Comment 58 Jason Smith 2010-08-21 19:20:16 UTC
Is there any chance that this will ever get packaged into an rpm?  It is disappointing that there are packages for Ubuntu but not for RedHat.

Comment 59 Jeroen van Meeuwen 2010-08-22 19:22:54 UTC
You can only be as disappointed as much as you're willing to sink your teeth into solving the actual problems stated above.

That said, before such aforementioned work is actually done, chances are this package will not be included in the regular Fedora distribution or EPEL add-on repository.

That said, there are packages;

http://mirror.nl.ergo-project.org/repositories/

Comment 60 Jason Smith 2010-08-22 20:39:05 UTC
(In reply to comment #59)
> You can only be as disappointed as much as you're willing to sink your teeth
> into solving the actual problems stated above.

That would be very difficult since I know absolutely nothing about ruby.  My only interest is in setting up a scalable puppet system and as a sysadmin, for obvious reasons, I would prefer to use the native OS package manager, rather than a package management system built-in to and only useful for one specific software tool.

> That said, before such aforementioned work is actually done, chances are this
> package will not be included in the regular Fedora distribution or EPEL add-on
> repository.

Why does this have no chance of being included in a RedHat distribution?  Is it a licensing issue or something else?

> That said, there are packages;
> 
> http://mirror.nl.ergo-project.org/repositories/

Thanks, I will take a look at this next week.

Comment 61 Jeroen van Meeuwen 2010-08-25 14:33:41 UTC
(In reply to comment #60)
> (In reply to comment #59)
> > You can only be as disappointed as much as you're willing to sink your teeth
> > into solving the actual problems stated above.
> 
> That would be very difficult since I know absolutely nothing about ruby.  My
> only interest is in setting up a scalable puppet system and as a sysadmin, for
> obvious reasons, I would prefer to use the native OS package manager, rather
> than a package management system built-in to and only useful for one specific
> software tool.
> 

Then maybe reconsider declaring yourself disappointed -others do in fact (attempt to) sink their teeth into solving the actual problem, so that you can sleep at night without having to worry whether there is a new problem on the horizon.

> > That said, before such aforementioned work is actually done, chances are this
> > package will not be included in the regular Fedora distribution or EPEL add-on
> > repository.
> 
> Why does this have no chance of being included in a RedHat distribution?  Is it
> a licensing issue or something else?
> 

I said Fedora distribution and EPEL add-on repository, and I did not say Red Hat distribution. These are completely different. The Fedora Project will not accept it as part of it's Fedora distribution or EPEL add-on repository, and Red Hat can do as it wishes -however it is still very much unlikely they'll ship it as it is.

As to the reason this package is not / can not / will not be included; Please read the comments in this bug/review request. Long story short, Passenger ships a forked version of the C++ Boost libraries -and lags behind a dozen versions or so.

Comment 62 Mo Morsi 2010-09-13 21:33:56 UTC
I just spent a little while going through this and trying to figure out what exactly would need to be done to get passenger working with the stock boost in Fedora. The following are issues we may run into:


Issues which shouldn't post a problem:
* Additional 'defined' checks simply check for netbsd or solaris, neither of which is applicable here

* elif BOOST_PP_INTERATION_DEPTH changes, made for gcc 4.4 compatibility. Since boost is already working against gcc in Fedora, this change isn't needed (correct me if I'm wrong) 

* whitespace changes in non_type.hpp, which I'm guessing shouldn't be there as nothing else is different



Issues which might pose a problem:
* the vendorized boost is at version 1.35 while in Fedora 14 we are going to be at 1.44. I believe this just about summarizes the issue Fedora has with vendorized libs, and I'm not sure if the thread library between these two versions are compatible.

* the condition_varaible and mutex destructors and the condition_variable::wait method try to repeat the necessary pthread destruction code until it is successful, as opposed to attempting it once and verifying the result with BOOST_VERIFY. As of right now I'm not sure why it does this, it seems to me that if the pthread destruction call fails once, it'll fail everytime, and if this is necessary on Linux. It may not be, this change maybe only for solaris or something; some additional clarification would be great. If it is required this is going to be very hard if not impossible to remove as if assertions in boost are enabled, BOOST_VERIFY will terminate a running program (if the condition being verified is false) and there isn't much we can do about it.

* changes to the exception hierarchy and additional exception information has been added to thread_exception, thread_resource_error, and thread_interrupted, to add backtrace and system_error_code support. Unless I'm mistaken these are purely informational only (for debugging) and thus this shouldn't pose an issue (once again correct me if I'm wrong). The apache hooks may have to be modified though to remove the TRACE_POINTs (or perhaps not, still needs more exploration)

* the thread constructor and start_thread method take an optional stack size. From my current understanding this is platform specific, and since boost is already working on Fedora Linux x86 and x86_64 as is, this is unneeded.



That about covers it, I am going to attempt to see if I can passenger working against boost in Fedora, but might not be able to for the aforementioned reasons. If anyone knows any fault in my analysis above, or some other reason why I won't be able to, please correct me, so that I don't invest a ton of time into this. Also if I am successful, it may come at the price of a heavily modified passenger source, but we'll tackle that if/when we get to that point.


P.S. would creating a separate upstream project resolve this issue without any of this? Obviously someone would have to maintain this, but would something like a passenger-boost project work?

Comment 63 Hongli Lai 2010-09-14 08:08:55 UTC
Passenger 3's Boost is actually based on 1.42.0. A lot of API breakages have happened between Boost 1.35 and 1.42. I believe it's impossible to support multiple Boost versions without making our code a mess with #ifdefs everywhere. We only support one specific version of Boost for the time being: the one we use during development.

The condition_variable and mutex error checks do not retry on all errors: they only retry on EINTR. BOOST_VERIFY aborts even on EINTR but EINTR is usually not fatal, it just means you need to try later. This issue bit us on one of our customers' production systems.

Exception hierarchy change: yes they're informational. If a thread fails to spawn (i.e. thread_resource_error is thrown) then we'll want to show a backtrace. This is not possible without patching Boost and changing the ABI.
Please do not remove TRACE_POINTs. They're an essential part of our system inspection features. Right now it's possible to query the backtrace of all threads in Phusion Passenger during runtime thanks to the TRACE_POINTs. If you get rid of that then our users will lose their ability to see what's going on and will introduce a lot of headaches when things go wrong.

Thread constructor: it is not unnecessary, we do this intentionally to reduce the VM size. We create a lot of threads. The default thread stack size on Linux is 8 MB, so unless we reduce the stack sizes we can't create many threads and the VM size will grow very large, giving users the impression that we're memory hungry.

Comment 64 Mo Morsi 2010-09-14 16:53:29 UTC
(In reply to comment #63)
> Passenger 3's Boost is actually based on 1.42.0. A lot of API breakages have
> happened between Boost 1.35 and 1.42. I believe it's impossible to support
> multiple Boost versions without making our code a mess with #ifdefs everywhere.
> We only support one specific version of Boost for the time being: the one we
> use during development.

Can you please elaborate on this. Looking at the passenger repository, it seems boost is still marked as being on version 1.35

http://github.com/FooBarWidget/passenger/blob/master/ext/boost/VERSION.TXT

and the last commit I see relating to 'updating boost' is the update to 1.35

http://github.com/FooBarWidget/passenger/commits/master/ext/boost

At what point did you update to 1.42? In any case for this submission, boost is still at 1.35 which I hope isn't so incompatible with 1.44 (shipping on F14) that it won't compile against it.


> 
> The condition_variable and mutex error checks do not retry on all errors: they
> only retry on EINTR. BOOST_VERIFY aborts even on EINTR but EINTR is usually not
> fatal, it just means you need to try later. This issue bit us on one of our
> customers' production systems.

This is good to know that this was to solve an edge case on a production system. Which OS was this customer running btw? If it something other than Linux (and maybe even if it's another distro) we might not run into this onto Fedora and thus this can be omitted.


> 
> Exception hierarchy change: yes they're informational. If a thread fails to
> spawn (i.e. thread_resource_error is thrown) then we'll want to show a
> backtrace. This is not possible without patching Boost and changing the ABI.
> Please do not remove TRACE_POINTs. They're an essential part of our system
> inspection features. Right now it's possible to query the backtrace of all
> threads in Phusion Passenger during runtime thanks to the TRACE_POINTs. If you
> get rid of that then our users will lose their ability to see what's going on
> and will introduce a lot of headaches when things go wrong.

I would like to include this (and everything else), but it looks like there is no way to include passenger in Fedora without this being removed (eg passenger needs to work against the stock boost). So its either remove this debugging stuff or not ship passenger at all. Like you said in a previous comment, if anyone wants any of these features I'm removing they can simply get passenger via gem.


> 
> Thread constructor: it is not unnecessary, we do this intentionally to reduce
> the VM size. We create a lot of threads. The default thread stack size on Linux
> is 8 MB, so unless we reduce the stack sizes we can't create many threads and
> the VM size will grow very large, giving users the impression that we're memory
> hungry.

Have you guys ever considered using thread pools? Launching many threads indiscriminately is often considered bad practice, and you may get a performance boost by making use of a pool. Regardless its good to know that this is simply to make the memory footprint smaller, and it should work without this. Just curious is there any way to reduce the default thread stack size, systemwide lets say, without modifying/recompiling every program?


I'm starting to hack at this to see if I can get it working. Based on your response the only thing that makes me not sure if this will work is the discrepancy between boost versions, but we'll just see if that poses and issue.

Comment 65 Hongli Lai 2010-09-14 17:37:24 UTC
> Can you please elaborate on this. Looking at the passenger repository, it seems
> boost is still marked as being on version 1.35

Passenger 3 will be based on 1.42. Passenger 3 isn't out yet but will soon be.


> Which OS was this customer running btw?

Debian. But even if it was a different OS, the checks should remain. Returning EINTR is POSIX compliant behavior I believe, so apps should take care of it properly.


> I would like to include this (and everything else), but it looks like there is
no way to include passenger in Fedora without this being removed (eg passenger
> needs to work against the stock boost). So its either remove this debugging
stuff or not ship passenger at all.

In that case I prefer to decline packaging. We cannot agree on having an important feature like that removed. We want every user who uses Phusion Passenger to experience the same quality, and we will find it unacceptable if quality differs among different OS packages.


> Have you guys ever considered using thread pools?

Yes. Thread pools will not do. We really need all those threads, they're used for I/O concurrency so limiting them will not solve the problem.

The default stack size can be changed through ulimit. However I disagree with the notion that the default stack size should be respected. There's a reason why pthread_attr_setstacksize() exists, and we use it for a good reason.


It is certainly possible to patch Phusion Passenger to work with normal Boost. However doing so degrades the user experience in such a way that we cannot approve of such changes. Please note that Phusion Passenger is a registered trademark in the European Union and a pending trademark in the United States. If you want to ship a patched version of Phusion Passenger with changes that we do not approve of, we have to ask you to rename it something else.

Comment 66 David Lutterkort 2010-09-14 22:46:10 UTC
I am putting Benjamin Kosnick on cc since he maintains the boost package in Fedora, and hopefully can shed some light on some of the points that seem to be shortcomings in the boost API (not being able to set stack size for threads, handling of EINTR after waiting)

Benjamin can you weigh in on the discussion starting with comment #62 ? I suspect that some of these things would be welcome enhancements to boost.

Comment 67 Mamoru TASAKA 2010-09-15 06:46:16 UTC
(In reply to comment #65)
> Please note that Phusion Passenger is a registered
> trademark in the European Union and a pending trademark in the United States.
> If you want to ship a patched version of Phusion Passenger with changes that we
> do not approve of, we have to ask you to rename it something else.

???
Then would you clarify the license?
If Phusion Passenger upstream has such policy, I guess we will anyway
has to rename such software on Fedora
- Note that Debian does not accept "firefox" or so due to the same reason.
  And there are so many discussion also on Fedora about whether we should
  rename "firefox" to something else.

And if we decide the license is "not free", we won't accept such software
anyway.

Comment 68 Hongli Lai 2010-09-15 17:19:24 UTC
The license is just MIT license. It has got nothing to do with any trademark rights. I find it interesting that you see this as an issue. Red Hat does the same thing: one cannot modify RHEL and call it Red Hat, which is why Fedora and CentOS are named Fedora and CentOS and not "Red Hat Community Edition" or whatever.

It is fine if you do not accept it. We will work with third party packagers instead.

Comment 69 Tom "spot" Callaway 2010-09-15 17:40:32 UTC
Hongli, I believe he is asking if you have a separate license for use of the "Phusion Passenger" trademark. For example, Fedora's trademark guidelines are here:

https://fedoraproject.org/wiki/Legal:Trademark_guidelines

Also, here is Mozilla's trademark policy:

http://www.mozilla.org/foundation/trademarks/policy.html

It would clarify things for us significantly if you could put into writing the terms under which use of your trademark is permitted.

Comment 70 Hongli Lai 2010-09-15 18:03:55 UTC
I believe we have a fundamental disagreement in packaging policies. I believe it's easier for both of us if you close this issue and that we work with third party packagers instead.

Comment 71 Benjamin Kosnik 2010-09-15 18:10:28 UTC
In regards to #62, from my analysis of the modified boost diff, the major sticking point is the hack to boost::thread_exception.

I suggest a different error handling design. Instead of making thread_exception into what phusion passenger wants, derive

oxt::traceable_thread_exception from the un-molested boost::thread_exception and your custom tracing bits add your changes there. This will cleanly separate out the client code (phusion passenger) from the library code (boost), remove the need to deal with upstream boost, help with packaging your software by removing your need to ship a custom boost,  and allow you to use C++0x threads in the future. Win, win, win. Please consider it.

Comment 72 Hongli Lai 2010-09-15 18:34:23 UTC
The point of the modification was to have Boost.Thread itself throw exceptions that are derived from thread_exception. Making a seperate tracable_thread_exception won't solve that problem. But, as I've stated earlier, there are fundamental packaging policy disagreements between us and I believe it's easier to maintain the status quo.

Comment 73 Jason Smith 2010-09-15 20:18:54 UTC
Wow, this is amazing how this has degenerated.  Ruby has to be one of the only popular languages without a standard apache module.  Do the Phusion people not see the value in getting their software packaged into a major distribution like RedHat?  And getting it into Fedora would be the first step towards that happening.  Do they not realize the wide acceptance and popularity they would get (at least in the US and maybe worldwide) by being bundled with a large vendor's OS out of the box?  Instead they want their customers to jump through hoops to install their software.

Why do software tools have to reinvent packaging systems outside of the OS package management system anyway, like Ruby's Gems, Perl's CPAN & Python's Eggs.  From a sysadmin perspective, this is horrible and should be avoided at all costs.

Anyway, since my main objective was to install a scalable puppet server, and since puppet recently released 2.6.1 which supports JRuby, I guess I will now be forced to look into that as an alternative, with tomcat.

I'm sorry I reopened this can of worms.

Comment 74 Mo Morsi 2010-09-15 20:33:58 UTC
(In reply to comment #72)
> The point of the modification was to have Boost.Thread itself throw exceptions
> that are derived from thread_exception. Making a seperate
> tracable_thread_exception won't solve that problem. But, as I've stated
> earlier, there are fundamental packaging policy disagreements between us and I
> believe it's easier to maintain the status quo.

Can't you simply catch the Boost Thread exceptions, and in the error handler
throw your own custom exceptions? You can interpret the thread errors in your
catch blocks and add as much debugging information as you need there. I'm
actually surprised that hacking boost took less time than doing it this way. I
suppose if you don't know all the boost thread exceptions, you'd want the
backtraces all the way though boost, but this doesn't seem like the best
practice.

Also what environments are you passenger on. It may be more than Linux/g++ but
if it isn't doesn't gcc have some non-standard means of obtaining backtrace
information for c++ exceptions?

I think everyone loses out with the status quo. There are Linux users who
_must_ use rpm / yum to install software on their systems, and using gem is not
an option. Thus you lose potential users of your software and we lose another
supported / tested deployment scenario. It would be great if we can all work
together to find and develop and acceptable solution that works for everyone. I
understand that time is very tight nowadays, but this is why we're volunteering
to help come up with and develop a solution.

(btw no flamewars here please, everyone is right for their own reasons, just need to come up with the right solution)

Comment 75 Nathan Anderson 2010-11-17 20:57:03 UTC
I'm one of those users who *must* use yum/rpm to install software.  Custom compiled software, be they gems, perl modules, c programs, etc, are forbidden.  I'd love to see this included in Fedora, because then I could request it for the RHEL 6 EPEL repo.  Are there still these two issues outstanding?

1.  Vendored boost library
2.  License incompatibility with scgi functions

Thanks,
Nathan

Comment 76 Hongli Lai 2010-11-17 23:13:53 UTC
Nathan, Jason: yes, the license incompatibility has been solved. As for RPM/YUM packages, we are working on setting up a third party YUM repository as we speak, and we expect packages to be available in the near future. Please keep an eye on our blog for updates.

Comment 77 Jeroen van Meeuwen 2010-11-21 16:29:47 UTC
I'm working on getting the necessary people to understand this package needs an exception in order to get Real Life Problems fixed.

Comment 78 Hongli Lai 2011-01-04 09:56:54 UTC
We are pleased to announce third party RPMs for Phusion Passenger: http://blog.phusion.nl/2011/01/04/phusion-passenger-native-packages-for-redhatfedoracentos/

Comment 79 Bernie Innocenti 2011-01-19 23:41:24 UTC
Can someone please clarify why this review is stuck?

Does the packager need to take action?
Or does the reviewer need to analyze again the package after the licencing issue has been resolved?

Thanks,

Comment 80 Toshio Ernie Kuratomi 2011-01-19 23:57:06 UTC
The package contains a bundled library and upstream is unwilling to have it unbundled and still use the passenger trademark.  No one has put in a request to the FPC to grant an exception for this package to bundle libraries so that's still a possibility to resolve the bundled library issue but there doesn't seem to be any good exception material here so I'm unsure that it would pass.  Another option would be to fork the code and unbundle using a non-trademarked name.

Comment 81 cpg 2011-01-20 00:22:16 UTC
Who has the technology to "put in a request to the FPC to grant an exception for this package to bundle libraries" ?

Can I do it, if so can someone explain how?

Things are getting to the point that Fedora is going down the drain ... we cannot even purchase VPS servers with Fedora on them due to the lack of long term support, fast cycles and lack of proper support for things like RoR, in most part due to this very issue with passenger. Thanks the unwise people upstream that are dragging their feet.

Comment 82 Jason Tibbitts 2011-01-20 00:27:28 UTC
The instructions are at 
http://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries
Please be sure you answer all of the questions presented there.  It is wise to avoid hyperbole such as "Fedora is going down the drain".

Comment 83 Hongli Lai 2011-01-20 08:12:03 UTC
cpg, we now provide third party packages so I believe it's no longer necessary for Fedora to ship Phusion Passenger. Our packages are updated very quickly against official releases too.
http://blog.phusion.nl/2011/01/04/phusion-passenger-native-packages-for-redhatfedoracentos/

Comment 84 Greg Swift 2011-01-20 16:31:40 UTC
Hongli,

those of us that need this for clean RoR installations in our RH based environment will take those and suffer through, but at the end of the day I'm sure many of us would rather the packages were actually capable of being provided by Fedora/CentOS/EPEL.  The points behind the No Bundled Libraries restriction are very valid, and speaking from experience I can say we've been burned over the long run by vendors with good intentions and poor follow through on staying up with changes.

Comment 85 Hongli Lai 2011-01-20 16:53:43 UTC
Greg, if you look at our reputation we have a very strong follow through of staying up with security updates. Organizations like New York Times, Wikipedia, Pixar etc don't use our stuff for no reason.
On top of that, trying seeing our use of Boost in perspective. We pretty much only use the threading and smart pointer stuff. The former is a thin wrapper around the OS APIs. Neither of them are responsible for processing user or network input. I would be very surprised if they even make vulnerabilities possible, ever.

Comment 86 Bernie Innocenti 2011-01-28 20:29:28 UTC
(In reply to comment #83)
> cpg, we now provide third party packages so I believe it's no longer necessary
> for Fedora to ship Phusion Passenger. Our packages are updated very quickly
> against official releases too.
> http://blog.phusion.nl/2011/01/04/phusion-passenger-native-packages-for-redhatfedoracentos/

Thanks for maintaining these packages externally, but I think Fedora users would be served better if passenger were distributed along with the rest of the OS.

Maintaining a system using multiple disparate repositories is a PITA, especially with yum.

Comment 87 Vít Ondruch 2011-02-17 14:45:48 UTC
What about keep Passanger as it is and provide boost-passenger for fedora, i.e. fork of boost? It may be even just subset of boost required by passenger? Of course I expcet that this boost fork would be maintained by Phussion, since they have to do it anyway IMO.

Don't take me wrong, I know it is workarond. However forking of project is very natural in opensource, nobody will say "Oh, we cannot have LibreOffice in Fedora, because it is fork of OpenOffice.org". The same would apply for boost-passenger.

Comment 88 Bobby Powers 2011-03-15 17:02:13 UTC
another reason to get it in Fedora, Hongli, is that your rpms are broken (bad signature).  This was reported on your blog entry about the repos in January and still happens for me as of last week.

Well, passenger 3 is out and none of the srpm or spec files listed above, so I modified the latest srpm release to get something close to what we want I think.  Since this original packaging request, it looks like the passenger available through phusion's repos also bundles a version of nginx.  My changes to the spec file basically are to remove that (as a consequence, it only builds the apache plugin, not the nginx one as well).  The srpm is available at
http://dev.laptop.org/~bobbyp/passenger/rubygem-passenger-3.0.4-2.fc14.src.rpm
I'll attach the modified specfile (and a diff between the original and it) to this bug.

It still has the vendored boost, but I'm hoping we can apply to get an exemption as api and functionality has changed.  The biggest problem I see is this note on [1]: 'If no attempt has been made to push the changes upstream, we shouldn't be supporting people forking out of laziness'.

And if phusion won't allow us to use passenger, we can probably rename the library to 'straphanger' or some such fairly easily.

Regards.


1 - http://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries

Comment 89 Bobby Powers 2011-03-15 17:03:04 UTC
Created attachment 485557 [details]
passenger 3.0 specfile without nginx support

Comment 90 Bobby Powers 2011-03-15 17:03:39 UTC
Created attachment 485558 [details]
diff between attached 3.0 spec and original

Comment 91 Bobby Powers 2011-03-15 17:06:35 UTC
one last thing, there are 2 deps for passenger 3.0 that are not in Fedora (14, at least). rubygem-file-tail and rubygem-spruz.  I used the versions from Phusion's repos, but these would need to be accepted into the fedora repos too

Comment 92 Hongli Lai 2011-03-15 17:48:49 UTC
Our Boost changes are highly Unix-specific. Phusion Passenger makes no attempt to support Windows. However Boost must support Windows. I do not want to waste my time on writing Windows support for our patches.

Furthermore we're getting rid of the file-tail (and, indirectly, spurz) dependency for the next release.

Comment 93 Greg Swift 2011-04-21 20:23:22 UTC
Is it just me or does the RPM lay down source files and expect the resulting system to compile the module?  I've had this happen on 3 systems now.  I would think this would not be expected behavior for an RPM.

Comment 94 Brett Lentz 2011-09-22 18:18:50 UTC
Hongli -

Like many others, I'd like to see Passenger be accepted into Fedora (and EPEL). I am willing to put some time and effort into making it happen.

In comment #43, it seems that you are/were amicable to your modifications being pushed upstream. I'd be happy to take on the task of working with the Boost community to get your changes merged. So, let me ask you directly: If I can get your modifications upstream, will you be willing to drop your bundled version of Boost? 

I will caveat this somewhat by saying that, after having read over your changes, the Boost folks may want to recommend some changes to your implementation. I will do my best to make sure your code gets upstreamed with as few changes as possible, but I think it's reasonable to expect that it won't be perfect. 

I'd like to have you be involved in that dialogue as much as possible. I realize you're a busy person and can't really dedicate much time to something that doesn't provide you with immediate benefits. However, if you're willing to exchange a few e-mails with me through this process, it will help me work through any issues that come up that much more quickly.

Comment 95 Brett Lentz 2011-09-28 17:23:56 UTC
I have started discussion on the boost mailing list about upstreaming the two biggest portions of passenger's boost fork:  the optional stack_size argument in thread::start_thread and the additional stack tracing and exception handling.

Initial response to these potential features is very positive. The thread is archived here, among other places: http://marc.info/?t=131722868200003&r=1&w=2 

The patches will require some clean-up and adjustments to support Boot's requirement for cross-platform compatibility. However, I don't think that's a show stopper.

Comment 96 Bobby Powers 2011-09-28 17:33:22 UTC
very encouraging!  Thanks for getting this rolling again Brett.

Comment 97 Hongli Lai 2011-09-28 18:03:16 UTC
Hi Brett. If you can get the changes bundled in Boost then what we can do is adding an option to disable compiling against the bundled Boost, and instead compile against the system Boost. We'll still want to continue bundling Boost for the sake of platforms on which installing Boost is a hassle (e.g. OS X), but I believe adding such a compile option should solve your issue as well.

I do not mind it if the API that the Boost folks develop is slightly different than ours.

It should be noted that our backtrace support is not automatic. It relies on the user manually specifying backtrace points with TRACE_POINT() macros. It's documented here: https://github.com/FooBarWidget/passenger/blob/master/ext/oxt/backtrace.hpp
The backtrace system is built in such a way that it can be integrated with oxt::thread. oxt::thread is like boost::thread but also registers each thread on a global thread list, each of which has its own thread-local backtrace list. This way, one can obtain the backtraces of all threads during runtime.

Comment 98 Brett Lentz 2011-09-28 22:33:23 UTC
Hongli - A disable option works for me. Do you need me to report a bug/feature
request, or can I just look for it in an upcoming release?

Thanks for the heads-up about the macros. I know being able to opt-in is a
concern for the Boost folks, so I'll make sure to highlight that.

Lastly, if you have the time to follow the conversation on the boost-list,
please let me know if there are any proposals that you have any objection to or
will have difficulty working with. Also, if I misrepresent your code at all,
don't hesitate to ping me either here or directly at blentz.

Comment 99 Hongli Lai 2011-09-29 06:22:41 UTC
You can just look for it.

Thanks for the effort.

Comment 100 Brett Lentz 2011-12-01 14:12:15 UTC
I've got a couple patches that I'm pushing the Boost folks to merge. I'm still unravelling the stack trace exception patch into something workable. 

Discussion on EINTR patch:
http://marc.info/?t=132269010900002&r=1&w=2\

Discussion on configurable stack size patch:
http://marc.info/?t=132266986500004&r=1&w=2

Hongli - If you have a moment to take a look at the discussion around your EINTR modifications. According to the Boost folks, POSIX specifically forbids pthreads from returning EINTR. You already mentioned that this happened on a customer's system in production, do you recall what OS it was?

It might make that particular patch a bit more palatable if we can couch it in some ifdefs, so that it's only necessary on the broken platform. 

Additionally, it might allow us to file a bug with the upstream OS if the behavior still exists.

Comment 101 Hongli Lai 2011-12-01 17:39:38 UTC
If I remember correctly it was Debian. It's very important to me that lock() handles EINTR. I don't think couching it with #ifdefs is a good idea though because compiling a whitelist or blacklist is just too much work. Even in the same OS, some versions of the threading library may be broken while some versions may not, and later versions may introduce regressions. It's just easier to always check for EINTR.

While it is technically correct that returning EINTR indicates a bug in the OS, relying on the OS vendor to fix the bug is not a good practical solution.
- Different vendors fix bugs at different paces. Fixing the bug can take months or years but the user wants the software to work yesterday. He does not care which party is to blame.
- Some users use old versions of an OS by choice.
- Some users are part of an organization whose IT department does not allow OS upgrades, for whatever reason.
- Upgrading Phusion Passenger is far easier than upgrading the entire OS and is less risky.

Comment 102 Brett Lentz 2011-12-01 18:50:38 UTC
Ah, it was some flavor of Linux, not OS X or some other non-Linux OS?

Among other things, I am trying to anticipate next steps if the Boost folks decide to not accept that portion of your fork. Being that it's a violation of POSIX, it's totally fair for them to say that it's not within the scope of their library to workaround a broken threading library. The "correct" fix would be to fix the threading library itself. (I don't like this possibility, but I must acknowledge that it exists.)

However, I completely agree with you about all of the implications of what a decision like that means.

For now, I'm hopeful that they'll still accept it because it makes the whole library's threading support more robust. 

In the meantime, if you saw this behavior on Linux, I will look into whether this issue has already been reported and fixed in pthread. That information would be good to know, regardless.

Comment 103 Brett Lentz 2011-12-02 15:35:03 UTC
Update on the stack size patch:

It looks like the Boost folks are going with a more general solution, which is detailed in this ticket:
https://svn.boost.org/trac/boost/ticket/2741

Comment 104 Brett Lentz 2011-12-08 00:39:22 UTC
I'm pleased to report that Boost has accepted the EINTR patch in its entirety.

https://svn.boost.org/trac/boost/ticket/6200


This just leaves the stack trace bits as the last major portion to be upstreamed, AFAIK.

Comment 105 Hongli Lai 2011-12-08 05:25:26 UTC
Glad to hear.

Comment 106 Stijn Hoop 2012-01-20 15:40:08 UTC
Just FYI, the stack trace bits appear to have been commited to be part of boost 1.49.0 (at least the more generic version as mentioned by Brett Lentz):

https://svn.boost.org/trac/boost/ticket/2741#comment:9

Comment 107 John Florian 2012-01-20 16:14:47 UTC
I'm glad to hear progress is being made here on this as I'm really hoping Passenger will make my puppet server scale to bigger loads better.

Can someone here that is more familiar with all the gory details of getting Passenger into Fedora give me some kind of estimate of how close we are now?  Are these recent gains that have been announced just a few of many more that will have to be gained or do they represent some of the final bits falling into place?  Are we 25%, 50%, 75% or 99.8% the way there?

Comment 108 Brett Lentz 2012-01-20 17:55:46 UTC
John -

I believe there are three modifications that Passenger has done to the base Boost libraries. Two of these three have been upstreamed, and we're actively working on getting the third modification ready for upstreaming.

However, one of the two upstreamed changes was addressed with a more generic patch, and will require modifications to how Passenger handles that particular detail.

I can't provide any specific estimates on when Passenger will land in Fedora. However, I can say that we're actively working on it.

Comment 109 John Florian 2012-01-20 20:52:33 UTC
Brett,

Thanks for that update and I really appreciate all the hours you and others are putting in to make this happen.  I'm anxious to see how it will improve things .... but not so anxious that I have a need to wander outside of yum repos to find out.

It sounds as though Boost is the big challenge ATM, although I also recall reading somewhere that there was a whole slew of other packages that would need to be brought into Fedora as well; hopefully those are all moving along well too.

Comment 110 Brett Lentz 2012-04-12 23:51:56 UTC
Okay, so...  

After the Boost community has raised some valid concerns about certain portions of the changes in Passenger's fork, I've applied for a bundling exception with the FPC. 

The bundling exception was GRANTED, conditional that I would be the package's maintainer. (See: https://fedorahosted.org/fpc/ticket/160 )

With that, it appears that we're finally clear to resume the package review.

I will be posting a new spec and srpm sometime in the next few days.

Comment 111 Hongli Lai 2012-04-13 06:55:18 UTC
Good to hear that things have been solved.

Comment 112 Jeroen van Meeuwen 2012-04-14 11:50:44 UTC
I'll update these to the later version and the new Ruby ABI requirements for rawhide/f17 later today:

New SPEC: http://git.kolabsys.com/rpm/rubygem-passenger/plain/rubygem-passenger.spec
New SRPM: http://mirror.kolabsys.com/pub/redhat/kolab-2.4/el6/development/SRPMS/rubygem-passenger-2.2.15-1.el6.kolab_2.4.src.rpm

Comment 113 Jeroen van Meeuwen 2012-04-14 15:57:09 UTC
Still a work in progress, and only shipping the gem and apache module.

Builds using mock for el5, el6, f16, f17 and rawhide.

New SPEC: http://kanarip.fedorapeople.org/rubygem-passenger.spec
New SRPM: http://kanarip.fedorapeople.org/rubygem-passenger-3.0.12-1.fc16.src.rpm

Comment 114 Brett Lentz 2012-04-14 17:11:19 UTC
Jeroen -

Thanks for posting your specs. I'll look them over and incorporate them into my final version on Monday. I've got a few things I want to do a bit differently.

Comment 115 Jeroen van Meeuwen 2012-04-14 19:10:22 UTC
Now including nginx-passenger as well:

New SPEC: http://kanarip.fedorapeople.org/rubygem-passenger.spec
New SRPM: http://kanarip.fedorapeople.org/rubygem-passenger-3.0.12-1.fc16.src.rpm

Comment 116 Vít Ondruch 2012-04-16 08:37:48 UTC
Guys,

could you please update the spec according to the new Ruby packaging guidelines, i.e. use rubygems-devel, there is no need for declaration of 

gemdir
geminstdir
ruby_sitearch
ruby_sitelib

and more over the ruby_vendorarch and ruby_vendorlib should be used instead of their "site" equivalents.

Thank you.

Comment 117 Hongli Lai 2012-04-16 08:51:19 UTC
I submitted some bug fixes upstream which hadn't been submitted before: https://svn.boost.org/trac/boost/ticket/6796

Comment 118 Brett Lentz 2012-04-16 19:16:34 UTC
Here's the spec I've been working on, with several portions of Jeroen's spec incorporated. This should comply with the current Ruby packaging guidelines. 

SRPM: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger-3.0.12-1.src.rpm
SPEC: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger.spec

There's a few things in the built package that rpmlint isn't too happy about, including a few false warnings about misspellings. None of the warnings rpmlint throws appear to be critical.

I'm currently not including the nginx bits, as there doesn't appear to be any way to ship a module for nginx in the same way we ship apache modules, and shipping a statically compiled version of nginx in the passenger package isn't really acceptable.

Comment 119 Vít Ondruch 2012-04-16 19:41:03 UTC
I have few notes again:

* rubygem-fastthread was deprecated and removed from F17. The functionality was integrated into Ruby

* I'd like to see removed the "Requires: rubygem(rake)". It is typically not required for runtime. However, I am not passenger specialist, so it might be needed at the end.

Comment 120 Brett Lentz 2012-04-16 21:04:36 UTC
Updated my spec and SRPM to fix the Requires. URLs are unchanged.

Comment 121 Vít Ondruch 2012-04-17 08:44:07 UTC
(In reply to comment #120)
> Updated my spec and SRPM to fix the Requires. URLs are unchanged.

Hi Bret, the condition for fastthread should be "%if 0%{?rhel} <= 6 && 0%{?fedora} <= 16". Thank you.

Comment 122 Brett Lentz 2012-04-17 12:31:23 UTC
Updated my spec and SRPM to fix the fastthread logic. URLs are unchanged.

Comment 123 Mamoru TASAKA 2012-04-19 14:48:50 UTC
- First of all, please use gem as source and use current
  ruby gems based packaging guidelines revised recently.
- Please don't use Epoch.
- Please use %{?dist}
- Please remove unneeded stuff, unless you intend to ship this into
  EPEL below.
- By the way, is this issue cleared?
(In reply to comment #67)
> (In reply to comment #65)
> > Please note that Phusion Passenger is a registered
> > trademark in the European Union and a pending trademark in the United States.
> > If you want to ship a patched version of Phusion Passenger with changes that we
> > do not approve of, we have to ask you to rename it something else.
> 
> ???
> Then would you clarify the license?
> If Phusion Passenger upstream has such policy, I guess we will anyway
> has to rename such software on Fedora
> - Note that Debian does not accept "firefox" or so due to the same reason.
>   And there are so many discussion also on Fedora about whether we should
>   rename "firefox" to something else.
> 
> And if we decide the license is "not free", we won't accept such software
> anyway.
  This affects not only bundled boost issue but other things.

Comment 124 Mamoru TASAKA 2012-04-19 14:50:24 UTC
(In reply to comment #122)
> Updated my spec and SRPM to fix the fastthread logic. URLs are unchanged.

Please change release number every time you modify your spec file
to avoid confusion, even during review request process.

Comment 125 Mamoru TASAKA 2012-04-19 14:51:33 UTC
(In reply to comment #123)
> - Please remove unneeded stuff, unless you intend to ship this into
>   EPEL below.

This is "EPEL 5 and below".

Comment 126 Brett Lentz 2012-04-19 15:17:40 UTC
On the trademark issue stuff... 

The issue, as I read it, was *if* we were attempting to distribute a package without the bundled boost, that would have been unacceptable because it was deemed an inferior and/or substantially different product. We're not attempting that, so I don't believe there's an issue with using the "Phusion Passenger" name to describe the contents of the package.

On the request to use the gem source...

That's not possible. There hasn't been a gem posted to rubyforge since version 2.2.11. The current 3.0.x series is only published as a tar.gz. See: http://rubyforge.org/frs/?group_id=5873&release_id=46694

My plan is to target EPEL 5 and 6, and F16+, so the conditional statements are valid. The only potentially unnecessary stuff is the commented-out nginx bits, which I talked about in Comment #118.

Here's a SPEC and SRPM with the epoch and dist issues corrected:

SPEC: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger.spec
SRPM: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger-3.0.12-2.fc16.src.rpm

Comment 127 Hongli Lai 2012-04-19 15:34:43 UTC
Brett's interpretation is correct.

As for the gem, we 'gem push' the gem to rubygems.org these days. It's there, it's just not on RubyForge.

Comment 128 Hongli Lai 2012-04-19 15:35:37 UTC
And in any case, the gem and tar.gz content are the exact same. There is no advantage in using the gem as the source.

Comment 129 Toshio Ernie Kuratomi 2012-04-19 15:49:18 UTC
Brett, reading over the old comments, it appears that the trademark issue is still a problem.  Hongli Lai says that Phusion Passenger is trademarked and that patches need to be approved: https://bugzilla.redhat.com/show_bug.cgi?id=470696#c65

spot asks for the trademark license so we can evaluate how to handle it: https://bugzilla.redhat.com/show_bug.cgi?id=470696#c69

No reply pointing to the responsibilities we would have in order to use the trademark was subsequently given.  Note that once we know what the terms for using the trademark are, whether to use the trademark might have to pass through FESCo or another body.  The mozilla trademarks sound similar to what Hongli is describing and those were discussed in FESCo (I believe twice -- once in regards to closing the package to provenpackager and once wrt getting rid of bundled libraries).

Comment 130 Toshio Ernie Kuratomi 2012-04-30 16:35:48 UTC
There was a message about trademarks regarding another package recently so I've opened a ticket for FPC https://fedorahosted.org/fpc/ticket/170 to look at Trademark Guidelines.  There's a good possibility that the decision on policy will have to be made by someone else (Fedora Legal or FESCo) but this should get the ball rolling.

A written trademark license agreement would likely be of help in seeing where upstream wants things to end up and whether that can be accommodated or not.

Comment 131 Brett Lentz 2012-04-30 17:05:55 UTC
Thanks Toshio!  I've also got an e-mail out to Hongli to see if he'd like to put together any specific terms. 

I think I understand why the naming issue was brought up in this case, but I also think it'd be better for everyone if we had some clear guidelines for what situations Phusion will allow the use of their trademarks, if any, to label the package in Fedora.

I'm committed to ensuring that Fedora's package doesn't deviate significantly from what Phusion is shipping, but I'd like some clear guidance on whether the patching of a package is acceptable and, if it is, how extensively a package can be patched before it needs to be called something else. I'm also curious if the normal work flow of "ship a patched package while pushing the patch upstream" work flow is acceptable in this case.

Comment 132 Tom "spot" Callaway 2012-05-09 15:57:34 UTC
We're still waiting to hear back from Hongli Lai (or someone else at Phusion) as to what the trademark usage terms are for the Phusion/Passenger marks. As far as I can tell, this is the only blocker holding up this package.

Comment 133 Sven Lankes 2012-06-07 13:30:30 UTC
Passenger doesn't work without the -devel package installed as 

passenger_native_support.so

(which seems to be required to run) is shipped in the -devel rpm.

Comment 134 Brett Lentz 2012-06-07 16:45:24 UTC
Sven - Yep. That's been fixed in my local spec file.

Unfortunately, it's been more than a month and my inquiries to the Phusion folks about obtaining a license for Fedora to use their trademarks for purposes of including Passenger in Fedora have gone unanswered.

Until that issue is resolved, Fedora can't ship Passenger in its current form. 

In the near future, I'll be investigating if we have other options here.

Comment 135 Gregory Lee Bartholomew 2012-07-13 21:53:46 UTC
To any knowledable devs:

My build keeps failing at:

+ rm -rf selinux
+ mkdir selinux
+ cd selinux
+ cp /root/rpmbuild/SOURCES/rubygem-passenger.fc .
cp: cannot stat `/root/rpmbuild/SOURCES/rubygem-passenger.fc': No such file or directory

when I run:

rpmbuild -bb rubygem-passenger.spec

what am I doing wrong?

Any hints would be greatly appreciated.

Thanks,
gb

P.S.:

yum-builddep rubygem-passenger-3.0.12-2.fc16.src.rpm

faild with

Getting requirements for rubygem-passenger-3.0.12-2.fc16.src
 --> Already installed : libcurl-devel-7.24.0-4.fc17.x86_64
Error: No Package found for rubygem(fastthread) >= 1.0.1

so I just installed the deps that were listed by rpmbuild the first time I ran it against the tweaked spec file that was provided in comment #126 of this thread.  I cannot seem to generate a new .src file with "rpmbuild -bs rubygem-passenger.spec" as that too returns:

error: Bad file: /root/rpmbuild/SOURCES/rubygem-passenger.te: No such file or directory
error: Bad file: /root/rpmbuild/SOURCES/rubygem-passenger.if: No such file or directory
error: Bad file: /root/rpmbuild/SOURCES/rubygem-passenger.fc: No such file or directory


RPM build errors:
    Bad file: /root/rpmbuild/SOURCES/rubygem-passenger.te: No such file or directory
    Bad file: /root/rpmbuild/SOURCES/rubygem-passenger.if: No such file or directory
    Bad file: /root/rpmbuild/SOURCES/rubygem-passenger.fc: No such file or directory

What am I missing?  I've tried "rpmbuild ... --without selinux" and I've tried enabling and disabling selinux and installing selinux-policy-devel.

Comment 136 Brett Lentz 2012-07-13 22:23:09 UTC
Gregory - 

Right now, my fedorapeople space has a mismatch between the srpm and spec file that's up there. 

I'll see about fixing that so that the srpms I've published will build successfully.

That said, this particular bug is not the appropriate place to receive support for building your own packages. Please try on the relevant mailing lists or IRC channels.

Comment 137 Tom "spot" Callaway 2012-07-27 14:26:41 UTC
I am very tired of this game. Unless Hongli Lai (or someone else at Phusion) confirms within the next two weeks (August 10, 2012) that there are specific (and public) trademark usage terms that all users/developers/distributors must obey for the Phusion/Passenger marks, we will move forward on the assumptions that there are no special usage rules, lift the FE-Legal block here, and treat this package identically to the rest of Fedora (which is to say, in compliance with US Trademark Law).

Comment 138 Tom "spot" Callaway 2012-08-13 13:00:45 UTC
Lifting FE-Legal.

Comment 139 Brett Lentz 2012-08-13 13:38:08 UTC
Now that the FE-Legal block is lifted, here's my current spec and srpm for review.

SPEC: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger.spec
SRPM: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger-3.0.14-1.fc17.src.rpm


Here's what rpmlint tells me. All of its complaints are wrong in passenger's case.


$ rpmlint /home/blentz/rpmbuild/RPMS/x86_64/rubygem-passenger-3.0.14-1.fc17.x86_64.rpm 
rubygem-passenger.x86_64: W: spelling-error %description -l en_US Phusion -> Fusion
rubygem-passenger.x86_64: E: no-binary
rubygem-passenger.x86_64: W: devel-file-in-non-devel-package /usr/bin/passenger-config
rubygem-passenger.x86_64: W: no-manual-page-for-binary passenger
rubygem-passenger.x86_64: W: no-manual-page-for-binary passenger-install-apache2-module
rubygem-passenger.x86_64: W: no-manual-page-for-binary passenger-install-nginx-module
1 packages and 0 specfiles checked; 1 errors, 5 warnings.

$ rpmlint /home/blentz/rpmbuild/RPMS/x86_64/mod_passenger-3.0.14-1.fc17.x86_64.rpm 
mod_passenger.x86_64: W: spelling-error %description -l en_US Phusion -> Fusion
mod_passenger.x86_64: W: spelling-error %description -l en_US pluggable -> plug gable, plug-gable, plugged
1 packages and 0 specfiles checked; 0 errors, 2 warnings.

$ rpmlint /home/blentz/rpmbuild/SRPMS/rubygem-passenger-3.0.14-1.fc17.src.rpmrubygem-passenger.src: W: spelling-error %description -l en_US Phusion -> Fusion
1 packages and 0 specfiles checked; 0 errors, 1 warnings.

Comment 140 Ken Dreyer 2012-08-13 20:09:27 UTC
Thanks Brett! Here's an error I'm getting while mocking on F17:

 make: /usr/share/selinux/devel/Makefile: No such file or directory

When I manully install selinux-policy-devel into the mock chroot, it works. I'm not sure why the dist tag conditional isn't matching Fedora 17 there.

I've done some light testing with Gitorious on F17, and your mod_passenger package is working well.

Comment 141 Brett Lentz 2012-08-13 20:55:50 UTC
Ken - That's really odd. Do you have fedora-release installed in your chroot?

The only way I can see that failing is if /etc/rpm/macros.dist doesn't exist in your chroot.

Comment 142 Ken Dreyer 2012-08-13 21:28:34 UTC
Yeah, same error here: http://koji.fedoraproject.org/koji/taskinfo?taskID=4386689

I then tried some different invocations of that conditional and I still couldn't get it. (On the other hand, you can drop the Fedora 15 stuff since that's EOL now :)

Comment 144 Mamoru TASAKA 2012-08-14 13:35:09 UTC
(In reply to comment #143)
> SPEC:
> http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger.spec
> SRPM:
> http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger-3.0.14-
> 2.fc17.src.rpm

Build fails at least on F-18:
http://koji.fedoraproject.org/koji/taskinfo?taskID=4388592

Also it seems that Fedora specific compilation flags are not correctly passed.
build log says:
/usr/include/features.h:330:4: warning: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Wcpp]

Comment 145 Mamoru TASAKA 2012-08-14 14:26:16 UTC
Some questions first:

* doc/images/icons/README says the image files under doc/images/icons/ was taken from http://jimmac.musichall.cz/ikony.php3 but currently I could not find any license notice on this site. Would you clarify the license of these icon files?

* Not limited to boost, there are some other softwares bundled with this software under ext. Especially libev and nginx seems available on Fedora. Would you explain why these files (under ext/ directory) cannot be removed? Also see:

https://fedoraproject.org/wiki/Packaging/Guidelines#Bundling_of_multiple_projects
https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries

Comment 146 Mamoru TASAKA 2012-08-14 14:28:01 UTC
BTW current license analysis:

Overall: MIT

GPLv2
Rakefile
build/rpm.rb

MIT or GPL+
doc/Architectural\ overview.html
doc/Security\ of\ user\ switching\ support.html
doc/Users\ guide\ Apache.html
doc/Users\ guide\ Nginx.html
doc/Users\ guide\ Standalone.html

CC-BY-SA
doc/users_guide_snippets/appendix_a_about.txt

BSD
ext/google/
ext/libev/
ext/nginx/

Boost 1.0
ext/boost/
ext/common/Utils/utf8.h
ext/common/Utils/utf8/

MIT
ext/boost/detail/limits.hpp

BSD with advertising
ext/common/BCrypt.cpp
ext/common/BCrypt.h
ext/common/Blowfish.c
ext/common/Blowfish.h

zlib
ext/common/Utils/Base64.cpp
ext/common/Utils/Base64.h
ext/common/Utils/MD5.cpp
ext/common/Utils/MD5.h
test/support/valgrind.h

??? (perhaps not license text)
lib/phusion_passenger/templates/standalone/config.erb

MIT-style?? -> MIT
test/stub/rails_apps/2.3/mycook/public/javascripts/dragdrop.js
test/stub/rails_apps/2.3/mycook/public/javascripts/effects.js
test/stub/rails_apps/2.3/mycook/public/javascripts/prototype.js

???
doc/images/icons/README:
mentions http://jimmac.musichall.cz/ikony.php3

Comment 147 Brett Lentz 2012-08-14 15:21:19 UTC
LibEV is not used. In the %prep step, is this line:

# Don't use bundled libev
%{__rm} -rf ext/libev

The ext/nginx directory contains no bundled libraries. The software in that directory is the nginx passenger module and a couple of headers require for compiling the module, not the full nginx package.

Also of note, the nginx module is not currently compiled or shipped with this package due to the duplication and bundling issues you've observed. So, while present in the srpm, we don't do anything with it.

So... if it's necessary to remove the unused code from the tarball (and srpm), we can do that. Please let me know if that's what you're looking for, or if it's acceptable to carry this code in the srpm, but not shipped in the built rpms.

Some investigation on the icons reveals that this particular set is in a wide variety of places in the same form as Passenger, with the same level of attribution (and lack of explicit license). It appears that the source of this icon set originates in Asciidoc 6.0.0, which is licensed under GPLv2+. (See: https://code.google.com/p/asciidoc/source/browse/CHANGELOG.txt )

The text in lib/phusion_passenger/templates/standalone/config.erb is not license text, but a developer's comment about how the code is used.

I'm now working on getting the srpm to compile on f18. It does currently compile on f17. Please let me know if this is a blocker for the package review.

Comment 148 Hongli Lai 2012-08-14 15:40:38 UTC
libev is vendored for ease of compilation. You can force linking to a system libev by setting USE_VENDORED_LIBEV=false. Phusion Passenger 3.0 requires libev 3.9. Phusion Passenger 4.0 requires libev 4.0.

libev is used by the logging agent.

doc/images/icons are indeed taken from Asciidoc.

Documentation is CC-BY-SA. See appendix A in the manual. The stuff in doc/users_guide_snippets are compiled into the final manual.

lib/phusion_passenger/templates/standalone/config.erb - it's just a config file. Is it even meaningful to license them? If so consider it the same license as Phusion Passenger.

ext/nginx does not contain Nginx. It contains the Phusion Passenger module for Nginx.

It's acceptable to remove unused code if you make sure nothing breaks.

Comment 149 Toshio Kuratomi 2012-08-14 15:45:56 UTC
bundled libraries do not need to be removed prior to srpm creation as long as there are no licensing or patent concerns.  rm -rf'ing the bundled code in %prep is sufficient.  http://fedoraproject.org/wiki/Packaging:Treatment_Of_Bundled_Libraries#Packages_with_Bundled_Libraries

Might want to ask spot what the license tag for this package should be.  icons are not code so I don't know how that affects things.

Comment 150 Mamoru TASAKA 2012-08-15 08:43:58 UTC
(In reply to comment #147)
> LibEV is not used. In the %prep step, is this line:
> 
> # Don't use bundled libev
> %{__rm} -rf ext/libev

Okay.

> 
> The ext/nginx directory contains no bundled libraries. The software in that
> directory is the nginx passenger module and a couple of headers require for
> compiling the module, not the full nginx package.

Okay.

> 
> Also of note, the nginx module is not currently compiled or shipped with
> this package due to the duplication and bundling issues you've observed. So,
> while present in the srpm, we don't do anything with it.
> 
> So... if it's necessary to remove the unused code from the tarball (and
> srpm), we can do that. Please let me know if that's what you're looking for,
> or if it's acceptable to carry this code in the srpm, but not shipped in the
> built rpms.

As Toshio said, removing these files are not needed.

> Some investigation on the icons reveals that this particular set is in a
> wide variety of places in the same form as Passenger, with the same level of
> attribution (and lack of explicit license). It appears that the source of
> this icon set originates in Asciidoc 6.0.0, which is licensed under GPLv2+.
> (See: https://code.google.com/p/asciidoc/source/browse/CHANGELOG.txt )

Okay.

> The text in lib/phusion_passenger/templates/standalone/config.erb is not
> license text, but a developer's comment about how the code is used.

Well, what I worried here was about the words "You are strongly discouraged from editing this file", however I don't think this is some license restriction (for now).

> I'm now working on getting the srpm to compile on f18. It does currently
> compile on f17. Please let me know if this is a blocker for the package
> review.

The package has to build successfully first on rawhide, next on F-18 (currently). So first please fix build issue on rawhide (currently rawhide equals F-18).

Comment 151 Mamoru TASAKA 2012-08-15 08:46:01 UTC
(In reply to comment #148)
> libev is vendored for ease of compilation. You can force linking to a system
> libev by setting USE_VENDORED_LIBEV=false. Phusion Passenger 3.0 requires
> libev 3.9. Phusion Passenger 4.0 requires libev 4.0.
> 
> libev is used by the logging agent.
> 
> doc/images/icons are indeed taken from Asciidoc.
> 
> Documentation is CC-BY-SA. See appendix A in the manual. The stuff in
> doc/users_guide_snippets are compiled into the final manual.

Thank you for explanation.

> lib/phusion_passenger/templates/standalone/config.erb - it's just a config
> file. Is it even meaningful to license them? If so consider it the same
> license as Phusion Passenger.

As explained above I was a bit worried about the words "You are strongly discouraged from editing this file", although now I don't think this as a blocker.

> 
> ext/nginx does not contain Nginx. It contains the Phusion Passenger module
> for Nginx.

Okay.

> 
> It's acceptable to remove unused code if you make sure nothing breaks.

Comment 152 Hongli Lai 2012-08-15 10:03:41 UTC
> Well, what I worried here was about the words "You are strongly discouraged from editing this file", however I don't think this is some license restriction (for now).

That is not a license restriction. It's a warning to users, for usability reasons.

Comment 153 Mamoru TASAKA 2012-08-15 13:58:21 UTC
BTW about F-19 and F-18 build failure:

see this:
https://svn.boost.org/trac/boost/ticket/6940

Comment 154 Brett Lentz 2012-08-15 16:43:46 UTC
> see this: https://svn.boost.org/trac/boost/ticket/6940

This helped a ton! Thanks!


I now have a successful F18/F19 build:

SPEC: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger.spec
SRPM: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger-3.0.14-3.fc19.src.rpm
RPMS: http://wakko666.fedorapeople.org/rubygem-passenger/


Hongli - I've got a patch for passenger that fixes this issue until you're ready to update your vendored Boost to 1.50+. I'll be sending you a pull request on Github with the patch.

Comment 155 Orion Poplawski 2012-08-15 20:21:24 UTC
I can't build on F17:

ext/common/ApplicationPool/Pool.h:721:21: error: 'TIME_UTC' was not declared in this scope

Comment 156 Brett Lentz 2012-08-15 21:04:36 UTC
Orion - Thanks for the report. I've fixed it by making the TIME_UTC patch conditional on only being needed for F18+.

New SPEC: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger.spec
SRPM: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger-3.0.14-4.fc19.src.rpm

Comment 157 Orion Poplawski 2012-08-15 21:48:19 UTC
Thanks, that compiles for me now.  Going to test it out now...

Comment 158 Mamoru TASAKA 2012-08-16 00:49:32 UTC
Some notes:
(the below notes are just from your spec file and the results
 of rpm -qlp or rpmlint (binary rpm), and I am not yet checked
 other issues. Also I have not installed the rebuilt rpms yet)

For 3.0.14-4.fc19:

* isa specific requirement
  - Please make dependency between arch-dependent subpackages
    isa specific:
    https://fedoraproject.org/wiki/Packaging/Guidelines#Requiring_Base_Package

* Dependency between subpackages
  - Usually dependency between subpackages and main package is
    full EVR (epoch-version-release) specific (i.e. not just
    Requires: rubygem(%{gem_name}) = %{version}) (and also see
    the above "isa specific requirement"):
    https://fedoraproject.org/wiki/Packaging/Guidelines#Requiring_Base_Package

  - Would you explain why -native subpackage does not require
    -native-libs but the opposite? (i.e. -native-libs require
    -native subpackage currently). Usually -libs package is requireD
    by other packages.

* Unneeded Provides
  - Provides: rubygem-passenger-native-libs = %{version} is unneeded,
    as this is automatically provided (i.e. foo-%version-%release
    provides not only foo = %version-%release but also foo = %version,
    and of course also foo). Also see the message
    " E: useless-provides rubygem-passenger-native-libs" from rpmlint.

* Directory ownership issue
  https://fedoraproject.org/wiki/Packaging/Guidelines#File_and_Directory_Ownership
  https://fedoraproject.org/wiki/Packaging:UnownedDirectories
  - Please make it sure that all directories created during the
    installation of these packages are correctly owned by some
    rpms.
    - At least please check which package should own the following
      directories (themselves):
      %{gem_instdir}/ext/
      %{gem_instdir}/agents/

* Redundant repeated summary
  - Why do you repeatedly write "Phusion Passenger™ is..." messages
    on each subpackages' Summary? When a subpackage requires main
    package, it is sufficient to write such summary only on main
    package.

* Binary files location
  - .so files must be under %_libdir and must not under %_datadir.
  - Also check the message "E: arch-dependent-file-in-usr-share"
    from rpmlint. rpmlint says some files under {gem_instdir}/agents/
    are also arch-dependent binaries:
    https://fedoraproject.org/wiki/Packaging/Guidelines#Filesystem_Layout
    http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSHAREARCHITECTUREINDEPENDENTDATA
    https://fedoraproject.org/wiki/Packaging/Ruby#Macros

* Build-time generated unneeded files
  - Please remove unneeded files which are generated on build time
    - At least please remove .o files
    - I don't think Makefile is needed, either.
    - mkmf.log is perhaps also unneeded.

* Possibly unneeded files
  - Rakefile or INSTALL files are usually needed for people who tries
    to build a software by him/herself and not needed for people who
    installs a package by rpm.

* scriptlets
  - Well, still I am not familiar with selinux, but is the following
    scriptlet correct?
--------------------------------------------------------
   283  %preun native
   285  semodule -r rubygem_%{gem_name} 2>/dev/null || :
--------------------------------------------------------
    (note: not rubygem-%{gem_name} but rubygem_%{gem_name}:
     underscore is used)

* rpmlint issues
  - Additionally, at least please take care of the below rpmlint
    messages:
--------------------------------------------------------
rubygem-passenger-native.i686: W: log-files-without-logrotate /var/log/passenger-analytics
--------------------------------------------------------

Comment 159 Orion Poplawski 2012-08-16 16:35:16 UTC
I just did a test install of "mod_passenger", which brought in rubygem-passenger.  But this fails to initialize in apache due to missing PassengerWatchdog from rubygem-passenger-native, so there seems to be a missing dep there.

[Thu Aug 16 10:24:48 2012] [error] *** Passenger could not be initialized because of this error: Unable to start the Phusion Passenger watchdog because its executable (/usr/share/gems/gems/passenger-3.0.14/agents/PassengerWatchdog) does not exist. This probably means that your Phusion Passenger installation is broken or incomplete, or that your 'PassengerRoot' directive is set to the wrong value. Please reinstall Phusion Passenger or fix your 'PassengerRoot' directive, whichever is applicable.

FWIW - the stealthmonkey mod_passenger had a dep on rubygem-passenger-native-libs, which depended on rubygem-passenger-native, which depended on rubygem-passenger.  I haven't analyzed it myself to see what makes the most sense.

Comment 160 Orion Poplawski 2012-08-16 16:37:55 UTC
Without rubygem-passenger-native-libs installed I get:

*** Phusion Passenger: no passenger_native_support.so found for the current Ruby interpreter. Compiling one...
*** Phusion Passenger: no passenger_native_support.so found for the current Ruby interpreter. Compiling one...
# mkdir -p /usr/share/gems/gems/passenger-3.0.14/ext/ruby/native
# mkdir -p /usr/share/gems/gems/passenger-3.0.14/ext/ruby/native
Encountered permission error, trying a different directory...
-------------------------------
# mkdir -p /root/.passenger/native_support/3.0.14/native
Encountered permission error, trying a different directory...
-------------------------------
# mkdir -p /root/.passenger/native_support/3.0.14/native
*** Phusion Passenger: no passenger_native_support.so found for the current Ruby interpreter. Compiling one...
# mkdir -p /usr/share/gems/gems/passenger-3.0.14/ext/ruby/native
Encountered permission error, trying a different directory...
-------------------------------
# mkdir -p /root/.passenger/native_support/3.0.14/native
*** Phusion Passenger: no passenger_native_support.so found for the current Ruby interpreter. Compiling one...
/usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/native_support.rb:133:in `initialize': Permission denied - /root/.passenger/native_support/3.0.14/native/.permission_test (Errno::EACCES)
        from /usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/native_support.rb:133:in `open'
        from /usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/native_support.rb:133:in `block in compile'
        from /usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/native_support.rb:130:in `each'
        from /usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/native_support.rb:130:in `each_with_index'
        from /usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/native_support.rb:130:in `compile'
# mkdir -p /usr/share/gems/gems/passenger-3.0.14/ext/ruby/native        from /usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/native_support.rb:108:in `compile_and_load'

        from /usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/native_support.rb:36:in `start'
        from /usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/native_support.rb:163:in `<top (required)>'
        from /usr/share/rubygems/rubygems/custom_require.rb:36:in `require'
        from /usr/share/rubygems/rubygems/custom_require.rb:36:in `require'
        from /usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/utils.rb:37:in `<top (required)>'
        from /usr/share/rubygems/rubygems/custom_require.rb:36:in `require'
        from /usr/share/rubygems/rubygems/custom_require.rb:36:in `require'
        from /usr/share/gems/gems/passenger-3.0.14/helper-scripts/passenger-spawn-server:105:in `rescue in <main>'
        from /usr/share/gems/gems/passenger-3.0.14/helper-scripts/passenger-spawn-server:30:in `<main>'
Encountered permission error, trying a different directory...
-------------------------------
# mkdir -p /root/.passenger/native_support/3.0.14/native
/usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/native_support.rb:133:in `initialize': Permission denied - /root/.passenger/native_support/3.0.14/native/.permission_test (Errno::EACCES)
        from /usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/native_support.rb:133:in `open'
        from /usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/native_support.rb:133:in `block in compile'
        from /usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/native_support.rb:130:in `each'
        from /usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/native_support.rb:130:in `each_with_index'
        from /usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/native_support.rb:130:in `compile'
        from /usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/native_support.rb:108:in `compile_and_load'
        from /usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/native_support.rb:36:in `start'
        from /usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/native_support.rb:163:in `<top (required)>'
        from /usr/share/rubygems/rubygems/custom_require.rb:36:in `require'
        from /usr/share/rubygems/rubygems/custom_require.rb:36:in `require'
        from /usr/share/gems/gems/passenger-3.0.14/lib/phusion_passenger/utils.rb:37:in `<top (required)>'
        from /usr/share/rubygems/rubygems/custom_require.rb:36:in `require'
        from /usr/share/rubygems/rubygems/custom_require.rb:36:in `require'
        from /usr/share/gems/gems/passenger-3.0.14/helper-scripts/passenger-spawn-server:105:in `rescue in <main>'
        from /usr/share/gems/gems/passenger-3.0.14/helper-scripts/passenger-spawn-server:30:in `<main>'

Comment 161 Brett Lentz 2012-08-16 16:41:59 UTC
Orion - Good catch. I've got an updated spec and srpm that I'll be posting in a few minutes.

Comment 162 Brett Lentz 2012-08-16 17:17:49 UTC
* isa specific requirement
- Fixed. isa deps added.

* Dependency between subpackages
- Fixed. Added release to deps. We're not using epoch, so that was left out intentionally.

* Unneeded Provides
- Fixed. Requires removed.

* Directory ownership issue
- Fixed. Reworked %files section.

* Redundant repeated summary
- Fixed. Removed repeated summary from sub-packages.

* Binary files location
- Fixed. Moved passenger_native_support.so to %_libdir/%name

* Build-time generated unneeded files
- Fixed. No longer shipping *.o files, Makefile, or mkmf.log.

* Possibly unneeded files
- Fixed. Moved Rakefile, INSTALL, and PACKAGING files to devel sub-package. They're only needed by developers/packagers.

* scriptlets
- Fixed. Scriptlet was technically correct, but it was due to misnaming the selinux module. Module name and scriptlet have been corrected.

* rpmlint issues
- Fixed. Logrotate config now included in native package.

SPEC: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger.spec
SRPM: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger-3.0.14-5.fc19.src.rpm

Comment 163 Orion Poplawski 2012-08-16 21:14:41 UTC
%package native
Requires: policycoreutils, initscripts

is not right.  I'm not sure initscripts is needed at all, and policycoreutils is needed for %post so it needs to be:

Requires(post): policycoreutils

Also, moving passenger_native_support.so to %{_libdir}/%{name} broke loading the library:

*** Phusion Passenger: no passenger_native_support.so found for the current Ruby interpreter. Compiling one...

I'm not sure where else ruby will look for libraries.  Doesn't like %{_libdir} either, so it's not using the standard loader.

FYI - I'm having SELinux issues running a puppet master server under passenger.  This is related (especially since this package ships a SELinux module), but somewhat tangential since it involves running another application.  I've filed bug 848939 against selinux-policy to work through those issues.

Comment 164 Orion Poplawski 2012-08-16 21:17:07 UTC
Looks like %{_libdir}/gems/exts may be the place.  I would check the ruby guidelines.

Comment 165 Brett Lentz 2012-08-17 19:12:16 UTC
Orion - many thanks for the additional testing you're doing.

I've fixed the deps for %post.

I've also moved the native libs to %ruby_vendorarchdir, as the ruby packaging guidelines instruct. I've also included some sed magic to ensure that passenger is searching the correct path for its native libs. This appears to work in my local f17 vm.

SPEC: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger.spec
SRPM: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger-3.0.14-6.fc19.src.rpm

Comment 166 Orion Poplawski 2012-08-22 21:14:35 UTC
From what I've got back from Miroslav in bug 848939, you don't want to be shipping the selinux module at all.  It just interferes with what is in the base policy.

I'll see what I can do about completing the review.

Comment 167 Orion Poplawski 2012-08-22 21:19:42 UTC
FWIW -  Looks like 3.0.15 has been released.

Comment 168 Orion Poplawski 2012-08-22 22:15:21 UTC
Package Review
==============

Key:
- = N/A
x = Pass
! = Fail
? = Not evaluated



==== C/C++ ====
[x]: MUST Package does not contain any libtool archives (.la)
[x]: MUST Package does not contain kernel modules.
[x]: MUST Package contains no static executables.
[x]: MUST Rpath absent or only used for internal libs.


==== Generic ====
[!]: EXTRA Rpmlint is run on all installed packages.
  - See below
[x]: EXTRA Spec file according to URL is the same as in SRPM.
[!]: MUST Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: MUST Package successfully compiles and builds into binary rpms on at
     least one supported primary architecture.
     Note: Using prebuilt rpms
[!]: MUST %build honors applicable compiler flags or justifies otherwise.
 -  Looks like RPM_OPT_FLAGS no passed to boost?
[x]: MUST All build dependencies are listed in BuildRequires, except for any
     that are listed in the exceptions section of Packaging Guidelines.
[!]: MUST Package contains no bundled libraries.]
 - Exception granted for boost
 - Need to evaluate ext/{apache2, boost, common, google, nginx, oxt, ruby}

[x]: MUST Changelog in prescribed format.
[x]: MUST Sources contain only permissible code or content.
[x]: MUST %config files are marked noreplace or the reason is justified.
[!]: MUST Each %files section contains %defattr if rpm < 4.4
     Note: defattr(....) present in %files -n mod_passenger section. This is
     OK if packaging for EPEL5. Otherwise not needed
[x]: MUST Macros in Summary, %description expandable at SRPM build time.
[.]: MUST Package contains desktop file if it is a GUI application.
[.]: MUST Development files must be in a -devel package
[x]: MUST Package requires other packages for directories it uses.
[x]: MUST Package uses nothing in %doc for runtime.
[x]: MUST Package is not known to require ExcludeArch.
[x]: MUST Permissions on files are set properly.
[x]: MUST Package does not contain duplicates in %files.
[x]: MUST Fully versioned dependency in subpackages, if present.
[x]: MUST Package complies to the Packaging Guidelines
[x]: MUST Spec file lacks Packager, Vendor, PreReq tags.
[!]: MUST Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
     Note: rm -rf is only needed if supporting EPEL5
[x]: MUST Large documentation files are in a -doc subpackage, if required.
[x]: MUST If (and only if) the source package includes the text of the
     license(s) in its own file, then that file, containing the text of the
     license(s) for the package is included in %doc.
[!]: MUST License field in the package spec file matches the actual license.
     Note: Checking original sources for licenses Licenses found:
     "zlib/libpng", "BSD (2 clause)", "BSL (v1.0)", "BSD (3 clause)", "BSD (4
     clause)", "GPL (v2)", "MIT/X11 (BSD like)" For detailed output of
     licensecheck see file: /export/home/orion/redhat/rubygem-passenger-3.0.14
     /rubygem-passenger/licensecheck.txt

 - Need to explore further.

[x]: MUST License file installed when any subpackage combination is installed.
[x]: MUST Package consistently uses macro is (instead of hard-coded directory
     names).
[x]: MUST Package is named using only allowed ascii characters.
[x]: MUST Package is named according to the Package Naming Guidelines.
[x]: MUST No %config files under /usr.
[x]: MUST Package does not generate any conflict.
     Note: Package contains no Conflicts: tag(s)
[x]: MUST Package obeys FHS, except libexecdir and /usr/target.
[.]: MUST If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[ ]: MUST Package must own all directories that it creates.
[x]: MUST Package does not own files or directories owned by other packages.
[x]: MUST Package installs properly.
[x]: MUST Package is not relocatable.
[x]: MUST Requires correct, justified where necessary.
[x]: MUST Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: MUST Sources used to build the package match the upstream source, as
     provided in the spec URL.
[x]: MUST Spec file is legible and written in American English.
[x]: MUST Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[.]: MUST Package contains systemd file(s) if in need.
[x]: MUST File names are valid UTF-8.
[x]: SHOULD Reviewer should test that the package builds in mock.
[!]: SHOULD Buildroot is not present
     Note: Buildroot is not needed unless packager plans to package for EPEL5
[!]: SHOULD Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
     Note: Clean is needed only if supporting EPEL5
[.]: SHOULD If the source package does not include license text(s) as a
     separate file from upstream, the packager SHOULD query upstream to
     include it.
[x]: SHOULD Dist tag is present.
[x]: SHOULD No file requires outside of /etc, /bin, /sbin, /usr/bin,
     /usr/sbin.
[x]: SHOULD Final provides and requires are sane (rpm -q --provides and rpm -q
     --requires).
[x]: SHOULD Package functions as described.
[!]: SHOULD Latest version is packaged.
  3.0.15 is out, not a blocker
[x]: SHOULD Package does not include license text files separate from
     upstream.
[!]: SHOULD Patches link to upstream bugs/comments/lists or are otherwise
     justified.
 - No comments on patches
[!]: SHOULD Scriptlets must be sane, if used.
 - Really need to drop - selinux policy not needed
[x]: SHOULD SourceX tarball generation or download is documented.
[.]: SHOULD SourceX / PatchY prefixed with %{name}.
     Note: Source10 (apache-passenger.conf.in) Patch101
     (passenger_boost_xtime.patch) Patch100
     (passenger_apache_fix_autofoo.patch) Source0 (passenger-3.0.14.tar.gz)
     Source1 (passenger.logrotate)
  I don't agree with this, messes with cut/paste.
[x]: SHOULD SourceX is a working URL.
[.]: SHOULD Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: SHOULD Package should compile and build into binary rpms on all supported
     architectures.
[!]: SHOULD %check is present and all tests pass.
  - tests don't pass.  Can this be fixed?
[x]: SHOULD Packages should try to preserve timestamps of original installed
     files.
[x]: SHOULD Spec use %global instead of %define.


==== Language ====
[x]: MUST Gem package must not define a non-gem subpackage
[x]: MUST Gem package must exclude cached Gem.
[!]: MUST Platform dependent files must all go under %{gem_extdir}, platform
     independent under %{gem_dir}.
  Looks like native should use %{gem_extdir} ?
[x]: MUST Gem package is named rubygem-%{gem_name}
[x]: MUST Package contains BuildRequires: rubygems-devel.
[x]: MUST Gem package must define %{gem_name} macro.
[!]: MUST Pure Ruby package must be built as noarch
  Can everything but the native packages be noarch?
[!]: MUST Package contains Requires: ruby(abi).
[!]: SHOULD Specfile should utilize macros from rubygem-devel package.
     Note: The specfile doesn't use these macros: %exclude %{gem_cache},
     %{gem_libdir}
[!]: SHOULD Test suite should not be run by rake.
  ?  
[x]: SHOULD Test suite of the library should be run.

Issues:
[!]: MUST Each %files section contains %defattr if rpm < 4.4
     Note: defattr(....) present in %files -n mod_passenger section. This is
     OK if packaging for EPEL5. Otherwise not needed
See: http://fedoraproject.org/wiki/Packaging/Guidelines#FilePermissions
[!]: MUST Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
     Note: rm -rf is only needed if supporting EPEL5
See: None
[!]: MUST Pure Ruby package must be built as noarch
See: https://fedoraproject.org/wiki/Packaging:Guidelines#Architecture_Support
[!]: MUST Package contains Requires: ruby(abi).
See: http://fedoraproject.org/wiki/Packaging:Ruby#Ruby_ABI



rpmlint:
mod_passenger.i686: W: spelling-error %description -l en_US pluggable -> plug gable, plug-gable, plugged
 - bah

rubygem-passenger-debuginfo.i686: W: spurious-executable-perm /usr/src/debug/passenger-3.0.14/ext/common/Utils/utf8/core.h
rubygem-passenger-debuginfo.i686: W: spurious-executable-perm /usr/src/debug/passenger-3.0.14/ext/common/Utils/utf8/checked.h

rubygem-passenger-devel.i686: W: install-file-in-docs /usr/share/gems/gems/passenger-3.0.14/INSTALL
- Generally don't put these in unless they are useful for configuring.

rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/Utils/UnseekableSocket/sync%3d-i.ri %3d
- Lots of these.  Strange characters?

rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AbstractRequestHandler/processed_requests-i.ri

rubygem-passenger-doc.i686: W: file-not-utf8 /usr/share/gems/doc/passenger-3.0.14/ri/cache.ri
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AbstractRequestHandler/soft_termination_linger_time-i.ri
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AbstractRequestHandler/iterations-i.ri
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/InitializationError/child_exception-i.ri
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AppProcess/app_root-i.ri
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/DebugLogging/log_file%3d-c.ri %3d
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AdminTools/MemoryStats/platform_provides_private_dirty_rss_information%3f-i.ri %3f
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AbstractServer/next_cleaning_time-i.ri
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AnalyticsLogger/Log/null%3f-i.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/PlatformInfo/compiler_supports_no_tls_direct_seg_refs_option%3f-c.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/PlatformInfo/compiler_supports_visibility_flag%3f-c.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/Utils/local_socket_address%3f-i.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/ConditionVariable/timed_wait%21-i.ri %21
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/PlatformInfo/ruby_supports_fork%3f-c.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/PlatformInfo/supports_sfence_instruction%3f-c.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/PlatformInfo/compiler_visibility_flag_generates_warnings%3f-c.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/install_framework_extensions%21-c.ri %21
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AbstractServerCollection/check_idle_servers%21-i.ri %21
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/_spawn_options-c.ri
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/PlatformInfo/compiler_supports_wno_missing_field_initializers_flag%3f-c.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/Standalone/Main/run%21-c.ri %21
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/PlatformInfo/curl_supports_ssl%3f-c.ri %3f
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AppProcess/pid-i.ri
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/Utils/PseudoIO/respond_to%3f-i.ri %3f
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AppProcess/owner_pipe-i.ri
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/Utils/process_is_alive%3f-c.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/IO/close_on_exec%21-i.ri %21
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/Standalone/RuntimeInstaller/install%21-i.ri %21
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AdminTools/MemoryStats/should_show_private_dirty_rss%3f-i.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AbstractServerCollection/empty%3f-i.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/DebugLogging/stderr_evaluator%3d-c.ri %3d
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/ClassicRails/ApplicationSpawner/app_root-i.ri
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/Utils/UnseekableSocket/source_of_exception%3f-i.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/Utils/FileSystemWatcher/FileInfo/changed%3f-i.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/Utils/PseudoIO/done%21-i.ri %21
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/PlatformInfo/env_defined%3f-c.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AdminTools/process_is_alive%3f-c.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/PlatformInfo/in_rvm%3f-c.ri %3f
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AppInitError/stderr-i.ri
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/Rails3Extensions/init%21-c.ri %21
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/ClassicRailsExtensions/AnalyticsLogging/install%21-c.ri %21
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/MessageChannel/closed%3f-i.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/PlatformInfo/apr_config_needed_for_building_apache_modules%3f-c.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/Utils/FileSystemWatcher/DirInfo/changed%3f-i.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AbstractServerCollection/has_key%3f-i.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AdminTools/MemoryStats/root_privileges_required_for_private_dirty_rss%3f-i.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/PlatformInfo/compiler_supports_wno_attributes_flag%3f-c.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/GC/copy_on_write_friendly%3f-c.ri %3f
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AppInitError/app_type-i.ri
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/PlatformInfo/has_math_library%3f-c.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/PlatformInfo/supports_lfence_instruction%3f-c.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/DebugLogging/log_level%3d-c.ri %3d
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/MessageChannel/io-i.ri
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/NativeSupportLoader/supported%3f-i.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/Utils/passenger_tmpdir%3d-c.ri %3d
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AdminTools/ServerInstance/Process/has_metrics%3f-i.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/ConsoleTextTemplate/%5b%5d%3d-i.ri %5b
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/ConsoleTextTemplate/%5b%5d%3d-i.ri %5d
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/ConsoleTextTemplate/%5b%5d%3d-i.ri %3d
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AbstractServer/max_idle_time-i.ri
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AnalyticsLogger/Connection/connected%3f-i.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/Utils/opens_files%3f-c.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/PlatformInfo/has_alloca_h%3f-c.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/Utils/HostsFileParser/resolves_to_localhost%3f-i.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AnalyticsLogger/Log/closed%3f-i.ri %3f
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/Rails3Extensions/AnalyticsLogging/install%21-c.ri %21
rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/Standalone/Main/run%21-i.ri %21
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AbstractRequestHandler/connect_password-i.ri
rubygem-passenger.i686: W: spelling-error %description -l en_US Phusion -> Fusion
rubygem-passenger.i686: E: no-binary
rubygem-passenger.i686: W: devel-file-in-non-devel-package /usr/bin/passenger-config
 - What is this for?  Also:

# passenger-config
/usr/share/rubygems/rubygems/dependency.rb:247:in `to_specs': Could not find rake (>= 0.8.1) amongst [bigdecimal-1.1.0, file-tail-1.0.5, io-console-0.3, json-1.6.5, passenger-3.0.14, rack-1.4.0, rdoc-3.12, spruz-0.2.5] (Gem::LoadError)
        from /usr/share/rubygems/rubygems/specification.rb:777:in `block in activate_dependencies'
        from /usr/share/rubygems/rubygems/specification.rb:766:in `each'
        from /usr/share/rubygems/rubygems/specification.rb:766:in `activate_dependencies'
        from /usr/share/rubygems/rubygems/specification.rb:750:in `activate'
        from /usr/share/rubygems/rubygems.rb:212:in `rescue in try_activate'
        from /usr/share/rubygems/rubygems.rb:209:in `try_activate'
        from /usr/share/rubygems/rubygems/custom_require.rb:59:in `rescue in require'
        from /usr/share/rubygems/rubygems/custom_require.rb:35:in `require'
        from /bin/passenger-config:27:in `<main>'

rubygem-passenger.i686: W: no-manual-page-for-binary passenger
rubygem-passenger-native.i686: W: spelling-error Summary(en_US) Phusion -> Fusion 
 - Fine

rubygem-passenger-native.i686: E: arch-dependent-file-in-usr-share /usr/share/gems/gems/passenger-3.0.14/agents/PassengerWatchdog
rubygem-passenger-native.i686: E: arch-dependent-file-in-usr-share /usr/share/gems/gems/passenger-3.0.14/agents/PassengerLoggingAgent
rubygem-passenger-native.i686: E: arch-dependent-file-in-usr-share /usr/share/gems/gems/passenger-3.0.14/agents/apache2/PassengerHelperAgent
 - Hmm  Not sure about this, and need to coordinate with selinux-policy.

rubygem-passenger-native.i686: W: no-documentation
rubygem-passenger-native.i686: E: non-standard-executable-perm /usr/share/gems/gems/passenger-3.0.14/agents/PassengerWatchdog 0775L
rubygem-passenger-native.i686: E: non-standard-executable-perm /usr/share/gems/gems/passenger-3.0.14/agents/PassengerLoggingAgent 0775L
rubygem-passenger-native.i686: E: non-standard-executable-perm /usr/share/gems/gems/passenger-3.0.14/agents/apache2/PassengerHelperAgent 0775L
rubygem-passenger-native.i686: E: incoherent-logrotate-file /etc/logrotate.d/passenger
rubygem-passenger-native.i686: W: non-conffile-in-etc /etc/logrotate.d/passenger
rubygem-passenger-native-libs.i686: W: spelling-error Summary(en_US) Phusion -> Fusion
rubygem-passenger-native-libs.i686: W: no-documentation
rubygem-passenger-native-libs.i686: E: non-standard-executable-perm /usr/lib/ruby/vendor_ruby/passenger_native_support.so 0775L
7 packages and 0 specfiles checked; 9 errors, 96 warnings.

Comment 169 Brett Lentz 2012-08-22 23:17:21 UTC
[!]: MUST Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.

--- This has been resolved in the comments above.

[!]: MUST %build honors applicable compiler flags or justifies otherwise.
 -  Looks like RPM_OPT_FLAGS no passed to boost?

--- This is addressed in Patch100

[!]: MUST Package contains no bundled libraries.]
 - Exception granted for boost
 - Need to evaluate ext/{apache2, boost, common, google, nginx, oxt, ruby}

--- Addressed in Comment 147

[!]: MUST License field in the package spec file matches the actual license.
     Note: Checking original sources for licenses Licenses found:
     "zlib/libpng", "BSD (2 clause)", "BSL (v1.0)", "BSD (3 clause)", "BSD (4
     clause)", "GPL (v2)", "MIT/X11 (BSD like)" For detailed output of
     licensecheck see file: /export/home/orion/redhat/rubygem-passenger-3.0.14
     /rubygem-passenger/licensecheck.txt

 - Need to explore further.

--- I believe the automated check is wrong here. However, the list is primarily
all BSD and BSD-like licenses which, afaik, are compatible with one another.
The License tag is marked as 'BSD' which, I believe, is accurate.

Also, previous comments have dealt with this issue.

[!]: SHOULD Patches link to upstream bugs/comments/lists or are otherwise
     justified.
 - No comments on patches

--- This is a SHOULD, not a MUST. I'd like to postpone fixing this until post-review, if you're agreeable to that.

[!]: SHOULD Scriptlets must be sane, if used.
 - Really need to drop - selinux policy not needed

--- Fixed in rev. 7, srpm and spec posted below.

[!]: SHOULD %check is present and all tests pass.
  - tests don't pass.  Can this be fixed?

--- As noted in the comments in the specfile, these test failures are expected
and need to be fixed upstream.

[!]: MUST Platform dependent files must all go under %{gem_extdir}, platform
     independent under %{gem_dir}.
  Looks like native should use %{gem_extdir} ?

--- I believe vendorarchdir is being used correctly in this case.

See: http://fedoraproject.org/wiki/Packaging:Ruby#Build_Architecture_and_File_Placement

For packages with binary content, e.g., database drivers or any other Ruby bindings to C libraries, the package MUST be architecture specific.

The binary files in a Ruby package with binary content MUST be placed into %{ruby_vendorarchdir} (or its proper subdirectory). The Ruby files in such a package SHOULD be placed into %{ruby_vendorlibdir}. The specfile MUST use these macros.

[!]: MUST Each %files section contains %defattr if rpm < 4.4

--- defattrs removed in rev 7. srpm and spec posted below.

[!]: MUST Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.

--- removed in rev 7. srpm and spec posted below.

[!]: MUST Pure Ruby package must be built as noarch

--- Invalid. This is not a pure ruby package.

[!]: MUST Package contains Requires: ruby(abi).

--- added in rev 7. srpm and spec posted below.


rubygem-passenger-devel.i686: W: install-file-in-docs /usr/share/gems/gems/passenger-3.0.14/INSTALL
- Generally don't put these in unless they are useful for configuring.

--- It's in the -devel package because it has some useful info for developers.

rubygem-passenger-doc.i686: W: unexpanded-macro /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/Utils/UnseekableSocket/sync%3d-i.ri %3d
- Lots of these.  Strange characters?

--- Rpmlint has a hard time with the RI doc template format. These can be ignored.

rubygem-passenger.i686: W: devel-file-in-non-devel-package /usr/bin/passenger-config
 - What is this for?

--- Rpmlint is wrong. passenger-config isn't a devel file. It's a
configuration helper script. I've added a requires for Rake in rev 7.

For an example use see: http://www.modrails.com/documentation/Users%20guide%20Apache.html#_the_apache_error_log_says_that_the_spawn_manager_script_does_not_exist_or_that_it_does_not_have_permission_to_execute_it


rubygem-passenger-native.i686: E: non-standard-executable-perm /usr/share/gems/gems/passenger-3.0.14/agents/apache2/PassengerHelperAgent 0775L

--- fixed in rev 7. srpm and spec posted below.

rubygem-passenger-native.i686: E: incoherent-logrotate-file /etc/logrotate.d/passenger
rubygem-passenger-native.i686: W: non-conffile-in-etc /etc/logrotate.d/passenger

--- Rpmlint is wrong. The logrotate file is correct and logrotate files don't end in conf.





SPEC: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger.spec
SRPM: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger-3.0.14-7.fc19.src.rpm

Comment 170 Orion Poplawski 2012-08-23 03:49:26 UTC
(In reply to comment #169)
> [!]: MUST Package is licensed with an open-source compatible license and
> meets
>      other legal requirements as defined in the legal section of Packaging
>      Guidelines.
> 
> --- This has been resolved in the comments above.

I'll take a closer look, but I'm coming in late to a very long and complicated review of a package that has had license changes and many version changes.  It's going to take me a while and I don't have a lot of time.  Toshio - if you have anything to weigh in here, that would be helpful.

> [!]: MUST %build honors applicable compiler flags or justifies otherwise.
>  -  Looks like RPM_OPT_FLAGS no passed to boost?
> 
> --- This is addressed in Patch100

Okay, looks like it isn't boost.  But:

grep -E 'g(cc|\+\+) ' build.log | grep -vF FORTIFY_SOURCE

finds a few lines like:

g++ -I../../ext -I../support -DTESTING_APPLICATION_POOL -D_REENTRANT -I/usr/local/include -DHASH_NAMESPACE="__gnu_cxx" -DHASH_NAMESPACE="__gnu_cxx" -DHASH_FUN_H="<hash_fun.h>" -DHAS_ALLOCA_H -DHAS_SFENCE -DHAS_LFENCE -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-long-long -Wno-missing-field-initializers -g -DPASSENGER_DEBUG -DBOOST_DISABLE_ASSERTS -c oxt_test_main.cpp

But a closer looks shows that these all appear to be test code, so that should be fine.

> [!]: MUST Package contains no bundled libraries.]
>  - Exception granted for boost
>  - Need to evaluate ext/{apache2, boost, common, google, nginx, oxt, ruby}
> 
> --- Addressed in Comment 147

Addressed nginx and libev.  I suspect the others are similar, but haven't had time to take a closer look.

> 
> [!]: MUST License field in the package spec file matches the actual license.
>      Note: Checking original sources for licenses Licenses found:
>      "zlib/libpng", "BSD (2 clause)", "BSL (v1.0)", "BSD (3 clause)", "BSD (4
>      clause)", "GPL (v2)", "MIT/X11 (BSD like)" For detailed output of
>      licensecheck see file:
> /export/home/orion/redhat/rubygem-passenger-3.0.14
>      /rubygem-passenger/licensecheck.txt
> 
>  - Need to explore further.
> 
> --- I believe the automated check is wrong here. However, the list is
> primarily
> all BSD and BSD-like licenses which, afaik, are compatible with one another.
> The License tag is marked as 'BSD' which, I believe, is accurate.
> 
> Also, previous comments have dealt with this issue.
> 
> [!]: SHOULD Patches link to upstream bugs/comments/lists or are otherwise
>      justified.
>  - No comments on patches
> 
> --- This is a SHOULD, not a MUST. I'd like to postpone fixing this until
> post-review, if you're agreeable to that.

Sure.

> [!]: SHOULD Scriptlets must be sane, if used.
>  - Really need to drop - selinux policy not needed
> 
> --- Fixed in rev. 7, srpm and spec posted below.

Great.  Need to also remove:

Requires(post): policycoreutils

> [!]: SHOULD %check is present and all tests pass.
>   - tests don't pass.  Can this be fixed?
> 
> --- As noted in the comments in the specfile, these test failures are
> expected
> and need to be fixed upstream.
> 
> [!]: MUST Platform dependent files must all go under %{gem_extdir}, platform
>      independent under %{gem_dir}.
>   Looks like native should use %{gem_extdir} ?
> 
> --- I believe vendorarchdir is being used correctly in this case.
> 
> See:
> http://fedoraproject.org/wiki/Packaging:
> Ruby#Build_Architecture_and_File_Placement
> 
> For packages with binary content, e.g., database drivers or any other Ruby
> bindings to C libraries, the package MUST be architecture specific.
> 
> The binary files in a Ruby package with binary content MUST be placed into
> %{ruby_vendorarchdir} (or its proper subdirectory). The Ruby files in such a
> package SHOULD be placed into %{ruby_vendorlibdir}. The specfile MUST use
> these macros.

But this is a gem and that section of the guidelines says to use %{gem_extdir}

> [!]: MUST Pure Ruby package must be built as noarch
> 
> --- Invalid. This is not a pure ruby package.

Yeah, looks like this is all set.

> rubygem-passenger-native.i686: E: incoherent-logrotate-file
> /etc/logrotate.d/passenger
> rubygem-passenger-native.i686: W: non-conffile-in-etc
> /etc/logrotate.d/passenger
> 
> --- Rpmlint is wrong. The logrotate file is correct and logrotate files
> don't end in conf.

It's complaining that it isn't named "/etc/logrotate.d/rubygem-passenger", which is fine.  It also is complaining that it isn't marked %conf in the %files section.  I'm fine either way.

I'm still concerned about the arch binaries in /usr/share.  More tomorrow.

Comment 171 Brett Lentz 2012-08-23 05:19:13 UTC
I've also asked spot to weigh in on the licensing.

> Addressed nginx and libev.  I suspect the others are similar, but haven't had 
> time to take a closer look.

Ok. I'll let you confirm.

> Great.  Need to also remove:
> Requires(post): policycoreutils

Fixed in rev 8, below.

> But this is a gem and that section of the guidelines says to use %{gem_extdir}

Sure. I'm reading it differently, but I don't see much point in wasting a bunch of time arguing. 

Fixed in rev 8, below.

> It's complaining that it isn't named "/etc/logrotate.d/rubygem-passenger", 
> which is fine.  It also is complaining that it isn't marked %conf in the 
> %files section.  I'm fine either way.

Ok. Let's skip it.



SPEC: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger.spec
SRPM: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger-3.0.14-8.fc19.src.rpm

Comment 172 Tom "spot" Callaway 2012-08-23 14:48:38 UTC
License: BSD is the correct license here.

Comment 173 Toshio Ernie Kuratomi 2012-08-23 14:56:59 UTC
(In reply to comment #170)
> (In reply to comment #169)
> > [!]: MUST Package is licensed with an open-source compatible license and
> > meets
> >      other legal requirements as defined in the legal section of Packaging
> >      Guidelines.
> > 
> > --- This has been resolved in the comments above.
> 
> I'll take a closer look, but I'm coming in late to a very long and
> complicated review of a package that has had license changes and many
> version changes.  It's going to take me a while and I don't have a lot of
> time.  Toshio - if you have anything to weigh in here, that would be helpful.
> 
The two pieces that I looked at in this package were the bundling of boost and the assertion that Passenger was trademarked and the owner wanted to restrict what we could do with the code and still use the trademark.

* The bundling of boost received an exception with from FPC provided that wakk0666 was maintainer (due to his being able to do work on the bundled boost code) https://fedorahosted.org/fpc/ticket/160

* After waiting for the appearance of a trademark license with no response, spot finally declared that we would treat this package as not having trademark usage restrictions until and unless someone from phusion notified us differently. https://bugzilla.redhat.com/show_bug.cgi?id=470696#c137

So both of those are resolved for now.

(In reply to comment #171)

> > But this is a gem and that section of the guidelines says to use %{gem_extdir}

> Sure. I'm reading it differently[...]

If you can think of a way to clarify that.... Orion's interpretation is correct.  Gems have their own location for architecture specific files.  The Ruby#Build_Architecture_and_File_Placement section is only for non-gem ruby packages.

Comment 174 Vít Ondruch 2012-08-24 12:37:33 UTC
Brett,

* Drop the "Relocate the bin files to the proper location" section
  - The files are already in correct place and should stay there. You should add
    appropriate "%{gem_instdir}/bin" into the %files section.

* Drop the "fix up paths for locating native support libs."
  - Instead, you should place the libraries into correct directories, i.e. do
    
    %{__cp} -a ext/ruby/ruby*linux/passenger_native_support.so \
      %{buildroot}%{gem_extdir}/lib/

    In this case, the library will be correctly picked up by the
    PhusionPassenger::NativeSupportLoader#load_from_load_path instead of
    PhusionPassenger::NativeSupportLoader#load_from_source_dir

* You should own %{gem_extdir}
  - You own just the file, which is wrong.

* Test suite
  - It fails fairly early.
  - You even did not get to the point where the RSpec test suite is executed.
  - I have tried to execute the test suite adding the following lines:

    # This will make the test failure non-critical, but it should be examined
    # anyway.
    sed -i 's|sh "cd test && \./cxx/CxxTestMain"|& rescue true|' \
      build/cxx_tests.rb
    # Fedora has RSpec 2 while the test suite seems to require RSpec 1.
    sed -i \
      "s|return locate_ruby_tool('spec')|return locate_ruby_tool('rspec')|" \
      lib/phusion_passenger/platform_info/ruby.rb

    Hopefully, you can continue from here.
  - Some tests seems to be unstable, e.g. the LoggingTest. It sometimes passes
    and the other time fails.

Comment 176 Vít Ondruch 2012-08-27 07:07:05 UTC
Brett,

When I said "hopefully you can continue from here", I expected that you would take a look why the test suite does not work and what needs to be fixed etc. Unfortunately, you even did not add the Require: rubygem(rspec), what would be the first step. Could you please explore the test failures?

Comment 177 Orion Poplawski 2012-08-27 17:43:12 UTC
(In reply to comment #175)
> SPEC:
> http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger.spec
> SRPM:
> http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger-3.0.14-
> 9.fc19.src.rpm

I get Forbidden and Not Found respectively for these.  Found -10 srpm and using that.

# /usr/share/gems/gems/passenger-3.0.14/bin/passenger-config
/usr/share/rubygems/rubygems/dependency.rb:247:in `to_specs': Could not find fastthread (>= 1.0.1) amongst [bigdecimal-1.1.0, file-tail-1.0.5, io-console-0.3, json-1.6.5, passenger-3.0.14, rack-1.4.0, rake-0.9.2.2, rdoc-3.12, spruz-0.2.5] (Gem::LoadError)
        from /usr/share/rubygems/rubygems/specification.rb:777:in `block in activate_dependencies'
        from /usr/share/rubygems/rubygems/specification.rb:766:in `each'
        from /usr/share/rubygems/rubygems/specification.rb:766:in `activate_dependencies'
        from /usr/share/rubygems/rubygems/specification.rb:750:in `activate'
        from /usr/share/rubygems/rubygems.rb:1232:in `gem'
        from /usr/share/gems/gems/passenger-3.0.14/bin/passenger-config:22:in `<main>'

Looks like there are still some missing deps here.

Also, it looks like the agents perhaps aren't getting installed because of:

-               AGENTS_DIR         = NATIVELY_PACKAGED_AGENTS_DIR

in rubygem-passenger-3.0.12-force-native.patch.

Also, it changes:

-                               agentsDir           = "/usr/lib/phusion-passenger/agents";

+                               agentsDir           = "%%GEM_INSTALL_DIR%%/agents";

Which isn't correct.  Probably should be %{_libdir}/phusion-passenger/agents.

Comment 178 Brett Lentz 2012-08-27 18:04:15 UTC
Orion - Looks like you caught me mid-update. I had uploaded a new version (and cleaned up the old files), then noticed some other issues. So, I was holding off on updating the bug to point at the new srpm and spec until those issues were corrected.

I'll fold your comments into the work I'm doing and update the bug when revision 10 is ready.

Comment 179 Vít Ondruch 2012-08-28 05:22:21 UTC
(In reply to comment #177)
> # /usr/share/gems/gems/passenger-3.0.14/bin/passenger-config
> /usr/share/rubygems/rubygems/dependency.rb:247:in `to_specs': Could not find
> fastthread (>= 1.0.1) amongst [bigdecimal-1.1.0, file-tail-1.0.5,
> io-console-0.3, json-1.6.5, passenger-3.0.14, rack-1.4.0, rake-0.9.2.2,
> rdoc-3.12, spruz-0.2.5] (Gem::LoadError)
>         from /usr/share/rubygems/rubygems/specification.rb:777:in `block in
> activate_dependencies'
>         from /usr/share/rubygems/rubygems/specification.rb:766:in `each'
>         from /usr/share/rubygems/rubygems/specification.rb:766:in
> `activate_dependencies'
>         from /usr/share/rubygems/rubygems/specification.rb:750:in `activate'
>         from /usr/share/rubygems/rubygems.rb:1232:in `gem'
>         from
> /usr/share/gems/gems/passenger-3.0.14/bin/passenger-config:22:in `<main>'
> 
> Looks like there are still some missing deps here.

fastthread was deprecated for F17+, since it is not needed for Ruby 1.9.3 any more. This dependency should be removed IMO.

Comment 180 Hongli Lai 2012-08-28 09:59:13 UTC
It is safe to require fastthread. In 2009 I submitted a patch to fastthread to make it a no-op no newer Ruby versions. This way we can support older Ruby versions as well as newer Ruby versions, from a single unmodified source.

Comment 181 Brett Lentz 2012-08-28 17:18:56 UTC
SPEC: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger.spec
SRPM: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger-3.0.14-10.fc19.src.rpm

Okay, revision 10 is ready for a look. 

I've added the dependency for ruby(fastthread) for the time being. Once the review is done, I'll revisit this and see if I can come up with a more suitable solution. I agree that we don't need both the package manager *and* the application doing (potentially conflicting) dependency checking and enforcement.

I've moved the agents into %gem_extdir/agents, because they're arch-specific binaries.

I've added a few patches to get further along in the test process, but due to differences between rspec 1 and rspec 2, the tests still don't complete and will require significant effort getting much further. However, the packaging guidelines state that tests merely SHOULD be run and SHOULD run successfully, so this isn't something that needs to block approval of the package.

I will ask that, for the sake of meeting the F18 release schedule, that all reviewers focus on items that are MUST requirements. Anything that's a SHOULD, I am happy to address after the package review is complete.

Comment 182 Hongli Lai 2012-08-28 17:35:10 UTC
3.0.17 has just been released: http://blog.phusion.nl/2012/08/28/phusion-passenger-3-0-17-released/

Comment 183 Toshio Ernie Kuratomi 2012-08-28 19:32:54 UTC
(In reply to comment #181)
> 
> I will ask that, for the sake of meeting the F18 release schedule, that all
> reviewers focus on items that are MUST requirements. Anything that's a
> SHOULD, I am happy to address after the package review is complete.

Just a note about interpretation of guidelines... SHOULD guidelines are basically left to the reviewer's discretion.  The reviewer can decide that failing that guideline is something that will prevent them from approving the package in good conscience.  The reviewer is also free to be more lenient and pass the package even though it fails that step.

For unittests, my personal feeling when I review is that unittesting is an aid to this Should guidelines: "SHOULD: The reviewer should test that the package functions as described. A package should not segfault instead of running, for example.".  If I'm familiar with running the software being reviewed and am reasonably confident that it can function successfully in a reasonably fault-tolerant fashion despite unittest failures, I work on disabling just the failing tests.  If I'm unfamiliar with the software... unittests may be the only indication of how good a reflection on Fedora's integration of the package the software is so it weighs more heavily on whether the package is ready for approval.

A different note about the release schedule -- it's getting late in the F18 cycle to still be reviewing packages for a F18 Feature.  If there are features depending on this package, it might be time to consider slipping until F19 for that feature.  However, the rubygem-passenger package itself could enter Fedora 18 even if F18 has been released already (via updates)... it would only be the dependent features that would need to slip to the next release.

Comment 184 Brett Lentz 2012-08-28 20:23:17 UTC
Toshio - We're in agreement. :)

Passenger is critical to the Openshift Origin feature. 

I would like to avoid being forced to slip a whole feature simply because Passenger's unit tests fail due to not having been ported to rspec2 yet, despite the software itself being fully functional.

My comment was exactly as stated; asking for a particular interpretation of the guidelines to help speed the review process along. I believe that we're close enough that there are few (if any) egregious problems with the package.

If anyone reviewing the package disagrees, that's fine. I understand the importance of ensuring that packages meet a certain standard before being accepted. I'm committed to getting this review finished, regardless of which release it lands.

Comment 185 Orion Poplawski 2012-08-28 21:22:06 UTC
I don't understand the fastthread situation, especially on F17 which is where I'm testing at the moment.  There is nothing that provides "rubygem(fastthread)" on F17, but passenger-config still fails looking for it with ruby-1.9.3.194-15.fc17 (comment 177).  So what is the proper fix here?  At the very least is seems we need:

%if 0%{?rhel} <= 6 && 0%{?fedora} <= 16
Requires: rubygem(fastthread) >= 1.0.1
%endif

Maybe fixed in 3.0.17 :)

Comment 186 Orion Poplawski 2012-08-28 23:21:39 UTC
rpmlint issues that still should be dealt with:

rubygem-passenger-debuginfo.i686: W: spurious-executable-perm /usr/src/debug/passenger-3.0.14/ext/common/Utils/utf8/core.h
rubygem-passenger-debuginfo.i686: W: spurious-executable-perm /usr/src/debug/passenger-3.0.14/ext/common/Utils/utf8/checked.h

rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AbstractRequestHandler/processed_requests-i.ri
rubygem-passenger-doc.i686: W: file-not-utf8 /usr/share/gems/doc/passenger-3.0.14/ri/cache.ri
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AbstractRequestHandler/soft_termination_linger_time-i.ri
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AbstractRequestHandler/iterations-i.ri
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/InitializationError/child_exception-i.ri
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AppProcess/app_root-i.ri
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AbstractServer/next_cleaning_time-i.ri
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/_spawn_options-c.ri
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AppProcess/pid-i.ri
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AppProcess/owner_pipe-i.ri
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/ClassicRails/ApplicationSpawner/app_root-i.ri
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AppInitError/stderr-i.ri
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AppInitError/app_type-i.ri
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/MessageChannel/io-i.ri
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AbstractServer/max_idle_time-i.ri
rubygem-passenger-doc.i686: W: wrong-file-end-of-line-encoding /usr/share/gems/doc/passenger-3.0.14/ri/PhusionPassenger/AbstractRequestHandler/connect_password-i.ri

rubygem-passenger-native.i686: E: non-standard-executable-perm /usr/lib/gems/exts/passenger-3.0.14/agents/agents/apache2/PassengerHelperAgent 0775L
rubygem-passenger-native-libs.i686: E: non-standard-executable-perm /usr/lib/gems/exts/passenger-3.0.14/lib/passenger_native_support.so 0775L
rubygem-passenger-native-libs.i686: E: non-standard-executable-perm /usr/lib/gems/exts/passenger-3.0.14/agents/agents/apache2/PassengerHelperAgent 0775L


Also, I think you should make the -doc sub-package noarch.

The new ruby packaging draft suggests:

%exclude %{gem_cache}

I don't know the status of the draft though.  Can anyone else help here?


I'm fine with the licensing now.  

Just need to test that the new package works tomorrow and we'll be set I hope.

Comment 187 Troy Dawson 2012-08-29 12:11:28 UTC
As for rubygem(fastthread) it can compile and be installed in F17+.  The difference is that it doesn't create a compiled library like it does for F16-.  I've tested it and it does make passenger run.
I didn't put it in as a review request because I wasn't aware that anything needed it, until I tested it with passenger.
Want me to put it in for F17+ or should we wait to see if 3.0.17 fixes that.  (I'm expecting that it doesn't fix it.)

Comment 188 Brett Lentz 2012-08-29 12:17:22 UTC
Troy - Please submit the package review for fastthread, then.

Comment 189 Brett Lentz 2012-08-29 14:55:30 UTC
Orion -

I've fixed all of the cases of strange perms.
I've fixed the incorrect EOL encoding issues.
The doc sub-package is now noarch.
I've added  %exclude %{gem_cache} to the files section.

SPEC: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger.spec
SRPM: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger-3.0.14-11.fc19.src.rpm


Now, there's one outstanding issue that I need additional guidance on:

I've got a patch that fixes the fastthread issue, but it uncovers another dependency on rubygem(daemon_controller) >= 1.0.0.

The last version of daemon_controller built in Fedora is 0.2.6. Until that's fixed, the passenger-config command won't work correctly. However, daemon_controller is only needed for running a standalone passenger instance (afaik). The mod_passenger bits work just fine without it.

As I see it, there's a few options. 

1. I can remove the passenger-config command from the package until daemon_controller is updated. mod_passenger will continue to work, but running passenger standalone will be unsupported in Fedora until daemon_controller gets updated.

2. I can ship with a 'Requires: rubygem(daemon_controller) >= 1.0.0' and work with the owner of that package to get it updated in rawhide.

3. We can wait until daemon_controller is updated before finishing the review.

Comment 190 Troy Dawson 2012-08-29 15:04:32 UTC
Brett, I don't think I'm going to be able to build a fastthread rpm that will pass review.
 - it doesn't build the binary library, so there are no binaries.
 - fastthread.rb ends up being an empty file.  So, there is no other code to run.

I went back and checked my other rubygem-fastthread rpm that I built, which fixed the ruby 1.9 passenger problem I had before, and sure enough, it was an empty fastthread.rb file.  But it did fix the passenger problem.
That was running an older 3.0.12 version of passenger.

Comment 191 Orion Poplawski 2012-08-29 15:07:00 UTC
I recommend option 1.  That way we can get a working mod_passenger into F17.  I suspect you'll have to pull everything in /usr/share/gems/gems/passenger-3.0.14/bin/.

Comment 192 Orion Poplawski 2012-08-29 16:10:01 UTC
There's a little problem in -11:

[Wed Aug 29 10:07:32 2012] [error] *** Passenger could not be initialized because of this error: Unable to start the Phusion Passenger watchdog because its executable (/usr/lib64/gems/exts/passenger-3.0.14/agents/PassengerWatchdog) does not exist. This probably means that your Phusion Passenger installation is broken or incomplete, or that your 'PassengerRoot' directive is set to the wrong value. Please reinstall Phusion Passenger or fix your 'PassengerRoot' directive, whichever is applicable.

Looks like it got installed a little off:

/usr/lib64/gems/exts/passenger-3.0.14/agents/agents/PassengerWatchdog
/usr/lib64/gems/exts/passenger-3.0.14/agents/agents/PassengerWatchdog
/usr/lib64/gems/exts/passenger-3.0.14/agents/agents/apache2
/usr/lib64/gems/exts/passenger-3.0.14/agents/agents/apache2/PassengerHelperAgent

Double "agents"

Comment 193 Brett Lentz 2012-08-29 19:37:06 UTC
Orion - I caught that problem around the same time you did. :)

Fixed in -12:

SRPM: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger-3.0.14-12.fc19.src.rpm
SPEC: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger.spec

Comment 194 Orion Poplawski 2012-08-29 20:26:24 UTC
Meant to ask this earlier - any reason you are not packaging 3.0.17?

Comment 195 Orion Poplawski 2012-08-29 21:10:31 UTC
You now have native-libs owning %{gem_extdir}/agents as well as native.

Should be:

%files native
%dir %{gem_extdir}
%{gem_extdir}/agents
..

%files native-libs
%{gem_extdir}/lib

Comment 196 Orion Poplawski 2012-08-29 21:18:22 UTC
Looks like the ruby abi requires a version according to the guidelines:

Requires: ruby(abi) = 1.9.1

Comment 197 Brett Lentz 2012-08-29 22:39:51 UTC
I mentioned it above, but I'll reiterate here. I'm sticking with 3.0.14 until this package review is complete to minimize the number of things changing during the review. I'll bump up to 3.0.17 sometime after the review is done.

Directory ownership issues and ABI declaration fixed:

SPEC: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger.spec
SRPM: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger-3.0.14-13.fc19.src.rpm

Comment 198 Mamoru TASAKA 2012-09-04 07:31:55 UTC
Well, sorry for delay.

* License tag
  - Please fix License tag.
    - At least the tag "BSD" only is inappropriate.
      The "LICENSE" file is clearly MIT, not BSD.
      Also see comment 68.
    - And some documents are under CC-BY-SA, not
      under BSD (see comment 148)
    - Please recheck my license analysis on
      comment 146 and write proper license tag per
      https://fedoraproject.org/wiki/Packaging/LicensingGuidelines
      You need to check which files are included
      in which subpackages carefully.

* Removing 0-size files
  - Please check if removing 0-size files is really safe
    (because we already have some examples on rubygem
    related packages where removing 0-size files like this
    really caused some problems). If unsure, I recommend
    _not_ to remove these files.

* Directory ownership issue
  - Please make it sure that all directories created by
    installing a package is all owned properly.
    https://fedoraproject.org/wiki/Packaging/Guidelines#File_and_Directory_Ownership
    - For example:
------------------------------------------------------------------------
# LANG=C rpm -qa | grep passenger | sort
rubygem-passenger-3.0.14-13.fc17.i686
rubygem-passenger-native-libs-3.0.14-13.fc17.i686
# rpm -ql rubygem-passenger-native-libs
/usr/lib/gems/exts/passenger-3.0.14/lib
/usr/lib/gems/exts/passenger-3.0.14/lib/native
/usr/lib/gems/exts/passenger-3.0.14/lib/native/passenger_native_support.so
# LANG=C ls -ald /usr/lib/gems/exts/passenger-3.0.14
drwxr-xr-x. 3 root root 4096  Sep  4 16:18 /usr/lib/gems/exts/passenger-3.0.14
# LANG=C rpm -qf /usr/lib/gems/exts/passenger-3.0.14
file /usr/lib/gems/exts/passenger-3.0.14 is not owned by any package
------------------------------------------------------------------------
      This must be fixed. Note that this directory is owned by
      -native package, however -native package depends on
      -native-libs, and -native-libs can be installed without
      -native subpackge.

I believe that Orion has already done functionality
check very carefully, so I will only mention packaging
issue.

Comment 199 Tom "spot" Callaway 2012-09-04 14:22:12 UTC
Revisiting the license tag, the correct license tag for the main binary package is:

Boost 1.0 and BSD and BSD with advertising and MIT and zlib

The -doc package is: CC-BY-SA and MIT and (MIT or GPL+)

The -devel package is: Boost 1.0 and BSD and BSD with advertising and GPL+ and MIT and zlib

The mod-passenger, native, and native-libs packages are: Boost 1.0 and BSD and BSD with advertising and MIT and zlib

Comment 200 Brett Lentz 2012-09-04 15:19:57 UTC
* License tag

- Fixed using Spot's clarifications.

I've included comments in the spec to document what license covers what portions of the package, along with a direct link to comment 148.

* Removing 0-size files

- This has so far proven to be safe. I'll keep an eye out for issues, though.

* Directory ownership issue

- native-libs now owns %gem_extdir. I considered having both -native and -native-libs own the directory, but with the dependency between native and native-libs that seemed unnecessary.

I didn't see any other directory ownership issues.

SPEC: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger.spec
SRPM: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger-3.0.14-14.fc19.src.rpm

Comment 201 Mamoru TASAKA 2012-09-05 04:02:20 UTC
Checked -14 srpm. I think if Orion says this srpm "works" (wrt
functionality check) this can be approved.

One left packaging issue
* tmpfiles.d files
  - I've completely missed this one... I happened to execute
    "rpm -Va" (after reboot) and noticed below:
------------------------------------------------------------
missing     /var/run/rubygem-passenger
------------------------------------------------------------
   This is because files under /var/run are removed after reboot.
   Please follow
   https://fedoraproject.org/wiki/Packaging/Guidelines#Tmpfiles.d
   https://fedoraproject.org/wiki/Packaging:Tmpfiles.d
   and add needed files or so.

Comment 202 Brett Lentz 2012-09-05 15:18:56 UTC
Another day, another revision...  ;-)

Tmpfiles.d support added in -15.

SPEC: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger.spec
SRPM: http://wakko666.fedorapeople.org/rubygem-passenger/rubygem-passenger-3.0.14-15.fc19.src.rpm

Comment 203 Orion Poplawski 2012-09-05 16:47:29 UTC
Well, seeing that we've reached more than 200 comments, I think it is time to approve this package!   Thanks everyone.  Still needs to run in permissive mode, but hopefully will get that shaken out soon in the main selinux-policy package.

One little note though -  Spot, the valid license short name seems to be "Boost", not "Boost 1.0" according to <http://fedoraproject.org/wiki/Licensing#Good_Licenses>.  Can you verify?

Comment 204 Mamoru TASAKA 2012-09-06 00:13:19 UTC
wrt packaging issue, currently I see no issue on -15.

Comment 205 Mamoru TASAKA 2012-09-06 00:18:10 UTC
(In reply to comment #204)
> wrt packaging issue, currently I see no issue on -15.

By the way, if you want to wrap lines to install tmpfiles.d files
with "%if 0%{?fedora} > 15 .... %endif", it is better that you
also wrap the "%{_prefix}/lib/tmpfiles.d/%{name}.conf" entry in
%file with "%if 0%{?fedora} > 15 .... %endif".

Comment 206 Brett Lentz 2012-09-06 00:20:37 UTC
It looks like Orion set the fedora-review flag to +, but after today's Bugzilla outage, it's now looking for Mamoru's to set the fedora-review flag.

If this package is approved, can both of you guys make sure your respective fedora-review flags are set?

Comment 207 Mamoru TASAKA 2012-09-06 00:29:27 UTC
Approved by both Orion and me.

Comment 208 Tom "spot" Callaway 2012-09-06 00:30:54 UTC
I confirm that "Boost" is correct, not "Boost 1.0". (Sorry for all the confusion here, feel free to correct this issue when you commit the spec to git.)

Comment 209 Brett Lentz 2012-09-06 18:01:48 UTC
New Package SCM Request
=======================
Package Name: rubygem-passenger
Short Description: Phusion Passenger™ is an application server for Ruby on Rails
Owners: wakko666 kanarip
Branches: f17 f18 el5 el6
InitialCC:

Comment 210 Gwyn Ciesla 2012-09-06 18:27:31 UTC
Git done (by process-git-requests).

Comment 211 Fedora Update System 2012-09-10 13:46:00 UTC
rubygem-passenger-3.0.17-2.fc18 has been submitted as an update for Fedora 18.
https://admin.fedoraproject.org/updates/rubygem-passenger-3.0.17-2.fc18

Comment 212 Fedora Update System 2012-09-10 16:08:06 UTC
rubygem-passenger-3.0.17-2.fc18 has been pushed to the Fedora 18 testing repository.

Comment 213 Fedora Update System 2012-09-17 22:43:01 UTC
rubygem-passenger-3.0.17-2.fc18 has been pushed to the Fedora 18 stable repository.