Skip to content
Browse files

Update the packaging guidelines.

  • Loading branch information...
1 parent ee79983 commit 33e08d3c6e5ac09617375d1b331e49a28ba38f24 @FooBarWidget FooBarWidget committed
Showing with 15 additions and 37 deletions.
  1. +1 −0 NEWS
  2. +14 −37 PACKAGING.TXT
@@ -15,6 +15,7 @@ Release 2.9.2
* PassengerDefaultGroup/passenger_default_group.
* #at_exit blocks are called during app shutdown.
* PassengerAppGroupName/passenger_app_group_name
+ * Packaging guidelines and revamped fakeroot task.
Release 2.9.1
@@ -2,42 +2,19 @@ Notes for packagers
By default Phusion Passenger locates all of its resource files under its
source root directory, however it also supports FHS-complaint packaging.
+When packaging Phusion Passenger, be sure to follow these guidelines:
-Resource files are located through constants defined in phusion_passenger.rb.
-This file automatically detects whether it's FHS-packaged or not by
-checking whether ../Rakefile exists (when packaged, "../Rakefile" evaluates
-to something like "/usr/lib/ruby/1.8/.." and so returns false).
+- You can generate a fakeroot with the command 'rake fakeroot'. This will
+ generate an FHS-compliant directory tree in pkg/fakeroot, which you can
+ directly package or with minor modifications.
-Packagers should pay attention to the following:
-- Documentation like "Users guide Apache.html" must be located
- in /usr/share/doc/phusion-passenger.
-- Phusion Passenger has a Ruby extension called
- This must be located in
- /usr/lib/phusion-passenger/native_support/<VERSION>/<SOME ARCH NAME>
- where "<VERSION>" is the Phusion Passenger version number, and
- "<SOME ARCH NAME>" can be obtained by running the following command
- from the Phusion Passenger source root:
- ruby -Ilib -rphusion_passenger/platform_info/binary_compatibility \
- -e 'include PhusionPassenger' \
- -e 'ids = PlatformInfo.ruby_extension_binary_compatibility_ids' \
- -e 'puts ids.join("-")'
-- There must be a full copy of the Phusion Passenger source tree located
- in /usr/lib/phusion-passenger/source. The reasons are as follows:
- * passenger-install-nginx-module and Phusion Passenger Lite must compile
- Nginx, and this process requires the Phusion Passenger source code to
- be available.
- * is strongly tied to the Ruby interpreter it was
- compiled for and may not work with a different Ruby interpreter. Since
- the user can change the active Ruby interpreter at will by changing the
- PassengerRuby Apache directive or the passenger_ruby Nginx directive,
- Phusion Passenger recompiles on-the-fly if it is run
- in a different Ruby interpreter.
- We urge packagers to specify gcc, g++ and make as dependencies. Without
- the source code and without a compiler toolchain, Phusion Passenger will
- still work, except for the aforementioned features.
+ If the default fakeroot structure is not sufficient, please consider
+ sending a patch.
+- Be sure to set Apache's PassengerRoot directive or Nginx's passenger_root
+ directive to /usr. This is a hint to Phusion Passenger that it's packaged
+ in an FHS-compliant way.
+- Inside the fakeroot you will encounter a directory
+ /usr/share/phusion-passenger/source, which contains the entire Phusion
+ Passenger source root. This is normal! It's to allow
+ passenger-install-nginx-module and Phusion Passenger Lite to work; they
+ both require the Phusion Passenger source code in order to compile Nginx.

0 comments on commit 33e08d3

Please sign in to comment.
Something went wrong with that request. Please try again.