passenger 2.0.6 → 2.1.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of passenger might be problematic. Click here for more details.
- data/DEVELOPERS.TXT +10 -4
- data/LICENSE +1 -1
- data/NEWS +0 -0
- data/Rakefile +183 -117
- data/benchmark/dispatcher.rb +5 -9
- data/bin/passenger-install-apache2-module +52 -18
- data/bin/passenger-memory-stats +67 -13
- data/bin/passenger-spawn-server +8 -4
- data/bin/passenger-status +21 -46
- data/bin/passenger-stress-test +5 -5
- data/debian/postinst +1 -1
- data/doc/ApplicationPool algorithm.txt +180 -128
- data/doc/Architectural overview.html +1 -778
- data/doc/Security of user switching support.html +1 -643
- data/doc/Users guide Apache.html +3127 -0
- data/doc/Users guide Nginx.html +1458 -0
- data/doc/Users guide.html +1404 -467
- data/doc/Users guide.txt +843 -105
- data/doc/cxxapi/ApplicationPoolServer_8h-source.html +751 -641
- data/doc/cxxapi/ApplicationPool_8h-source.html +168 -171
- data/doc/cxxapi/Application_8h-source.html +494 -394
- data/doc/cxxapi/Bucket_8h-source.html +21 -15
- data/doc/cxxapi/CachedFileStat_8h-source.html +191 -0
- data/doc/cxxapi/Configuration_8h-source.html +311 -149
- data/doc/cxxapi/DirectoryMapper_8h-source.html +309 -0
- data/doc/cxxapi/DummySpawnManager_8h-source.html +3 -4
- data/doc/cxxapi/Exceptions_8h-source.html +182 -165
- data/doc/cxxapi/FileChecker_8h-source.html +130 -0
- data/doc/cxxapi/Hooks_8h-source.html +2 -3
- data/doc/cxxapi/Logging_8h-source.html +92 -89
- data/doc/cxxapi/MessageChannel_8h-source.html +585 -477
- data/doc/cxxapi/PoolOptions_8h-source.html +305 -0
- data/doc/cxxapi/SpawnManager_8h-source.html +515 -540
- data/doc/cxxapi/StandardApplicationPool_8h-source.html +779 -679
- data/doc/cxxapi/SystemTime_8h-source.html +104 -0
- data/doc/cxxapi/Utils_8h-source.html +331 -227
- data/doc/cxxapi/annotated.html +6 -7
- data/doc/cxxapi/classClient-members.html +1 -2
- data/doc/cxxapi/classClient.html +1 -2
- data/doc/cxxapi/classHooks-members.html +5 -2
- data/doc/cxxapi/classHooks.html +112 -2
- data/doc/cxxapi/classPassenger_1_1Application-members.html +2 -3
- data/doc/cxxapi/classPassenger_1_1Application.html +8 -9
- data/doc/cxxapi/classPassenger_1_1ApplicationPool-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1ApplicationPool.html +42 -81
- data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer.html +3 -4
- data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1Application_1_1Session-members.html +3 -2
- data/doc/cxxapi/classPassenger_1_1Application_1_1Session.html +74 -3
- data/doc/cxxapi/classPassenger_1_1BusyException-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1BusyException.html +2 -3
- data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +2 -3
- data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +38 -0
- data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +256 -0
- data/doc/cxxapi/classPassenger_1_1DummySpawnManager-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1DummySpawnManager.html +2 -3
- data/doc/cxxapi/{classPassenger_1_1Thread-members.html → classPassenger_1_1FileChecker-members.html} +4 -5
- data/doc/cxxapi/classPassenger_1_1FileChecker.html +121 -0
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +2 -3
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +2 -3
- data/doc/cxxapi/classPassenger_1_1FileSystemException.html +2 -3
- data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1IOException-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1IOException.html +2 -3
- data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +5 -2
- data/doc/cxxapi/classPassenger_1_1MessageChannel.html +155 -5
- data/doc/cxxapi/{classboost_1_1this__thread_1_1enable__syscall__interruption-members.html → classPassenger_1_1RuntimeException-members.html} +2 -3
- data/doc/cxxapi/{classboost_1_1this__thread_1_1enable__syscall__interruption.html → classPassenger_1_1RuntimeException.html} +10 -8
- data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1SpawnException.html +2 -3
- data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +2 -3
- data/doc/cxxapi/classPassenger_1_1SpawnManager.html +15 -56
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool-members.html +5 -4
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool.html +20 -81
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1SystemException-members.html +2 -3
- data/doc/cxxapi/classPassenger_1_1SystemException.html +9 -10
- data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.png +0 -0
- data/doc/cxxapi/{classboost_1_1this__thread_1_1disable__syscall__interruption-members.html → classPassenger_1_1SystemTime-members.html} +5 -3
- data/doc/cxxapi/classPassenger_1_1SystemTime.html +86 -0
- data/doc/cxxapi/classPassenger_1_1TempFile-members.html +2 -3
- data/doc/cxxapi/classPassenger_1_1TempFile.html +17 -9
- data/doc/cxxapi/definitions_8h-source.html +1 -2
- data/doc/cxxapi/files.html +6 -3
- data/doc/cxxapi/functions.html +98 -35
- data/doc/cxxapi/functions_func.html +60 -32
- data/doc/cxxapi/functions_type.html +1 -2
- data/doc/cxxapi/functions_vars.html +27 -2
- data/doc/cxxapi/graph_legend.html +1 -2
- data/doc/cxxapi/graph_legend.png +0 -0
- data/doc/cxxapi/group__Configuration.html +3 -4
- data/doc/cxxapi/group__Configuration.png +0 -0
- data/doc/cxxapi/group__Core.html +3 -4
- data/doc/cxxapi/group__Core.png +0 -0
- data/doc/cxxapi/group__Exceptions.html +4 -2
- data/doc/cxxapi/group__Hooks.html +1 -6
- data/doc/cxxapi/group__Hooks.png +0 -0
- data/doc/cxxapi/group__Support.html +259 -36
- data/doc/cxxapi/hierarchy.html +6 -7
- data/doc/cxxapi/inherit__graph__0.map +1 -1
- data/doc/cxxapi/inherit__graph__0.md5 +1 -1
- data/doc/cxxapi/inherit__graph__0.png +0 -0
- data/doc/cxxapi/inherit__graph__1.map +1 -1
- data/doc/cxxapi/inherit__graph__1.md5 +1 -1
- data/doc/cxxapi/inherit__graph__1.png +0 -0
- data/doc/cxxapi/inherit__graph__10.map +1 -1
- data/doc/cxxapi/inherit__graph__10.md5 +1 -1
- data/doc/cxxapi/inherit__graph__10.png +0 -0
- data/doc/cxxapi/inherit__graph__11.map +1 -1
- data/doc/cxxapi/inherit__graph__11.md5 +1 -1
- data/doc/cxxapi/inherit__graph__11.png +0 -0
- data/doc/cxxapi/inherit__graph__12.map +2 -1
- data/doc/cxxapi/inherit__graph__12.md5 +1 -1
- data/doc/cxxapi/inherit__graph__12.png +0 -0
- data/doc/cxxapi/inherit__graph__13.map +1 -1
- data/doc/cxxapi/inherit__graph__13.md5 +1 -1
- data/doc/cxxapi/inherit__graph__13.png +0 -0
- data/doc/cxxapi/inherit__graph__14.map +1 -2
- data/doc/cxxapi/inherit__graph__14.md5 +1 -1
- data/doc/cxxapi/inherit__graph__14.png +0 -0
- data/doc/cxxapi/inherit__graph__15.map +1 -1
- data/doc/cxxapi/inherit__graph__15.md5 +1 -1
- data/doc/cxxapi/inherit__graph__15.png +0 -0
- data/doc/cxxapi/inherit__graph__16.map +1 -1
- data/doc/cxxapi/inherit__graph__16.md5 +1 -1
- data/doc/cxxapi/inherit__graph__16.png +0 -0
- data/doc/cxxapi/inherit__graph__17.png +0 -0
- data/doc/cxxapi/inherit__graph__18.png +0 -0
- data/doc/cxxapi/inherit__graph__19.png +0 -0
- data/doc/cxxapi/inherit__graph__2.map +1 -1
- data/doc/cxxapi/inherit__graph__2.md5 +1 -1
- data/doc/cxxapi/inherit__graph__2.png +0 -0
- data/doc/cxxapi/inherit__graph__20.map +1 -1
- data/doc/cxxapi/inherit__graph__20.md5 +1 -1
- data/doc/cxxapi/inherit__graph__20.png +0 -0
- data/doc/cxxapi/inherit__graph__21.map +1 -1
- data/doc/cxxapi/inherit__graph__21.md5 +1 -1
- data/doc/cxxapi/inherit__graph__21.png +0 -0
- data/doc/cxxapi/inherit__graph__3.map +1 -1
- data/doc/cxxapi/inherit__graph__3.md5 +1 -1
- data/doc/cxxapi/inherit__graph__3.png +0 -0
- data/doc/cxxapi/inherit__graph__4.map +1 -1
- data/doc/cxxapi/inherit__graph__4.md5 +1 -1
- data/doc/cxxapi/inherit__graph__4.png +0 -0
- data/doc/cxxapi/inherit__graph__5.map +2 -1
- data/doc/cxxapi/inherit__graph__5.md5 +1 -1
- data/doc/cxxapi/inherit__graph__5.png +0 -0
- data/doc/cxxapi/inherit__graph__6.map +1 -1
- data/doc/cxxapi/inherit__graph__6.md5 +1 -1
- data/doc/cxxapi/inherit__graph__6.png +0 -0
- data/doc/cxxapi/inherit__graph__7.map +1 -1
- data/doc/cxxapi/inherit__graph__7.md5 +1 -1
- data/doc/cxxapi/inherit__graph__7.png +0 -0
- data/doc/cxxapi/inherit__graph__8.map +1 -1
- data/doc/cxxapi/inherit__graph__8.md5 +1 -1
- data/doc/cxxapi/inherit__graph__8.png +0 -0
- data/doc/cxxapi/inherit__graph__9.map +1 -2
- data/doc/cxxapi/inherit__graph__9.md5 +1 -1
- data/doc/cxxapi/inherit__graph__9.png +0 -0
- data/doc/cxxapi/inherits.html +30 -31
- data/doc/cxxapi/main.html +1 -2
- data/doc/cxxapi/modules.html +1 -2
- data/doc/cxxapi/structPassenger_1_1AnythingToString-members.html +1 -2
- data/doc/cxxapi/structPassenger_1_1AnythingToString.html +2 -3
- data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4-members.html +1 -2
- data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html +2 -3
- data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +49 -0
- data/doc/cxxapi/structPassenger_1_1PoolOptions.html +404 -0
- data/doc/cxxapi/tree.html +18 -20
- data/doc/images/conservative_spawning.png +0 -0
- data/doc/images/conservative_spawning.svg +248 -0
- data/doc/images/smart-lv2.png +0 -0
- data/doc/images/smart-lv2.svg +320 -0
- data/doc/rdoc/classes/ConditionVariable.html +68 -34
- data/doc/rdoc/classes/Exception.html +16 -16
- data/doc/rdoc/classes/GC.html +9 -9
- data/doc/rdoc/classes/IO.html +36 -17
- data/doc/rdoc/classes/PhusionPassenger.html +183 -0
- data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +511 -0
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer.html +285 -242
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/ServerAlreadyStarted.html +3 -3
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/ServerError.html +3 -3
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/ServerNotStarted.html +3 -3
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/UnknownMessage.html +3 -3
- data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +598 -0
- data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +140 -0
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess.html +247 -0
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess/Instance.html +138 -0
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AppInitError.html +36 -19
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/Application.html +81 -96
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/ConsoleTextTemplate.html +18 -18
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/FrameworkInitError.html +20 -18
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/HTMLTemplate.html +18 -18
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/InitializationError.html +9 -9
- data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +92 -0
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/MessageChannel.html +93 -92
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/NativeSupport.html +55 -25
- data/doc/rdoc/classes/PhusionPassenger/Rack.html +91 -0
- data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +185 -0
- data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +182 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz.html +95 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +424 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner/Error.html +98 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz/CGIFixed.html +200 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +444 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner/Error.html +98 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +154 -0
- data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +408 -0
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/UnknownError.html +13 -13
- data/doc/rdoc/classes/PhusionPassenger/Utils.html +687 -0
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/VersionNotFound.html +8 -8
- data/doc/rdoc/classes/PhusionPassenger/WSGI.html +89 -0
- data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +188 -0
- data/doc/rdoc/classes/PlatformInfo.html +663 -159
- data/doc/rdoc/classes/RakeExtensions.html +4 -4
- data/doc/rdoc/classes/Signal.html +134 -0
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/DEVELOPERS_TXT.html +15 -10
- data/doc/rdoc/files/README.html +5 -7
- data/doc/rdoc/files/ext/{passenger → phusion_passenger}/native_support_c.html +2 -2
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/abstract_request_handler_rb.html +7 -9
- data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +120 -0
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/abstract_server_rb.html +7 -10
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +99 -0
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +92 -0
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/application_rb.html +6 -8
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/console_text_template_rb.html +5 -7
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/constants_rb.html +4 -5
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/dependencies_rb.html +6 -8
- data/doc/rdoc/files/lib/phusion_passenger/events_rb.html +116 -0
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/exceptions_rb.html +5 -7
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/html_template_rb.html +5 -7
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/message_channel_rb.html +5 -7
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/platform_info_rb.html +6 -7
- data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +123 -0
- data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +117 -0
- data/doc/rdoc/files/lib/{passenger/utils_rb.html → phusion_passenger/railz/application_spawner_rb.html} +24 -17
- data/doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html +126 -0
- data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +139 -0
- data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +118 -0
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/simple_benchmarking_rb.html +5 -7
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/spawn_manager_rb.html +40 -24
- data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +169 -0
- data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +120 -0
- data/doc/rdoc/files/lib/rake/extensions_rb.html +3 -4
- data/doc/rdoc/fr_class_index.html +37 -19
- data/doc/rdoc/fr_file_index.html +25 -14
- data/doc/rdoc/fr_method_index.html +145 -74
- data/ext/apache2/Application.h +145 -44
- data/ext/apache2/ApplicationPool.h +27 -29
- data/ext/apache2/ApplicationPoolServer.h +183 -72
- data/ext/apache2/ApplicationPoolServerExecutable.cpp +249 -42
- data/ext/apache2/Bucket.cpp +61 -9
- data/ext/apache2/Bucket.h +15 -8
- data/ext/apache2/CachedFileStat.cpp +114 -0
- data/ext/apache2/CachedFileStat.h +169 -0
- data/ext/apache2/Configuration.cpp +213 -22
- data/ext/apache2/Configuration.h +176 -13
- data/ext/apache2/DirectoryMapper.h +287 -0
- data/ext/apache2/Exceptions.h +30 -12
- data/ext/apache2/FileChecker.h +108 -0
- data/ext/apache2/Hooks.cpp +709 -493
- data/ext/apache2/LICENSE-CNRI.TXT +15 -0
- data/ext/apache2/Logging.h +26 -22
- data/ext/apache2/MessageChannel.h +124 -15
- data/ext/apache2/PoolOptions.h +283 -0
- data/ext/apache2/SpawnManager.h +75 -99
- data/ext/apache2/StandardApplicationPool.h +296 -195
- data/ext/apache2/SystemTime.cpp +28 -0
- data/ext/apache2/SystemTime.h +82 -0
- data/ext/apache2/Utils.cpp +172 -18
- data/ext/apache2/Utils.h +124 -19
- data/ext/boost/cstdint.hpp +4 -2
- data/ext/boost/current_function.hpp +67 -0
- data/ext/boost/detail/sp_counted_base.hpp +4 -4
- data/ext/boost/thread/exceptions.hpp +2 -1
- data/ext/boost/thread/pthread/thread.hpp +11 -3
- data/ext/boost/thread/pthread/thread_data.hpp +2 -1
- data/ext/oxt/backtrace.cpp +172 -0
- data/ext/oxt/backtrace.hpp +135 -0
- data/ext/oxt/detail/backtrace_disabled.hpp +39 -0
- data/ext/oxt/detail/backtrace_enabled.hpp +155 -0
- data/ext/oxt/detail/spin_lock_gcc_x86.hpp +82 -0
- data/ext/oxt/detail/spin_lock_portable.hpp +38 -0
- data/ext/oxt/detail/spin_lock_pthreads.hpp +97 -0
- data/ext/oxt/detail/tracable_exception_disabled.hpp +46 -0
- data/ext/oxt/detail/tracable_exception_enabled.hpp +48 -0
- data/ext/oxt/macros.hpp +58 -0
- data/ext/oxt/spin_lock.hpp +55 -0
- data/ext/{apache2/System.cpp → oxt/system_calls.cpp} +87 -52
- data/ext/oxt/system_calls.hpp +234 -0
- data/ext/oxt/thread.cpp +32 -0
- data/ext/oxt/thread.hpp +223 -0
- data/ext/oxt/tracable_exception.cpp +87 -0
- data/ext/oxt/tracable_exception.hpp +35 -0
- data/{lib/passenger/constants.rb → ext/phusion_passenger/extconf.rb} +14 -9
- data/ext/{passenger → phusion_passenger}/native_support.c +33 -6
- data/lib/{passenger → phusion_passenger}/abstract_request_handler.rb +209 -93
- data/lib/{passenger → phusion_passenger}/abstract_server.rb +23 -8
- data/lib/phusion_passenger/abstract_server_collection.rb +301 -0
- data/lib/phusion_passenger/admin_tools.rb +25 -0
- data/lib/phusion_passenger/admin_tools/control_process.rb +107 -0
- data/lib/{passenger → phusion_passenger}/application.rb +13 -16
- data/lib/{passenger → phusion_passenger}/console_text_template.rb +2 -2
- data/{ext/passenger/extconf.rb → lib/phusion_passenger/constants.rb} +5 -5
- data/lib/{passenger → phusion_passenger}/dependencies.rb +38 -32
- data/lib/phusion_passenger/events.rb +45 -0
- data/lib/{passenger → phusion_passenger}/exceptions.rb +12 -5
- data/lib/{passenger → phusion_passenger}/html_template.rb +2 -2
- data/lib/{passenger → phusion_passenger}/message_channel.rb +3 -2
- data/lib/phusion_passenger/platform_info.rb +500 -0
- data/lib/{passenger → phusion_passenger}/rack/application_spawner.rb +29 -22
- data/lib/{passenger → phusion_passenger}/rack/request_handler.rb +14 -9
- data/lib/{passenger → phusion_passenger}/railz/application_spawner.rb +94 -74
- data/lib/{passenger → phusion_passenger}/railz/cgi_fixed.rb +2 -2
- data/lib/{passenger → phusion_passenger}/railz/framework_spawner.rb +86 -98
- data/lib/{passenger → phusion_passenger}/railz/request_handler.rb +6 -6
- data/lib/{passenger → phusion_passenger}/simple_benchmarking.rb +0 -0
- data/lib/{passenger → phusion_passenger}/spawn_manager.rb +136 -128
- data/lib/{passenger → phusion_passenger}/templates/apache2_config_snippets.txt.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/apache_must_be_compiled_with_compatible_mpm.txt.erb +0 -0
- data/lib/phusion_passenger/templates/app_exited_during_initialization.html.erb +38 -0
- data/lib/{passenger → phusion_passenger}/templates/app_init_error.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/database_error.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/deployment_example.txt.erb +1 -1
- data/lib/{passenger → phusion_passenger}/templates/error_layout.css +0 -0
- data/lib/{passenger → phusion_passenger}/templates/error_layout.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/framework_init_error.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/general_error.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/invalid_app_root.html.erb +1 -1
- data/lib/{passenger → phusion_passenger}/templates/load_error.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/no_write_permission_to_passenger_root.txt.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/possible_solutions_for_compilation_and_installation_problems.txt.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/run_installer_as_root.txt.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/version_not_found.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/welcome.txt.erb +0 -0
- data/lib/{passenger → phusion_passenger}/utils.rb +210 -44
- data/lib/{passenger → phusion_passenger}/wsgi/application_spawner.rb +18 -15
- data/lib/{passenger → phusion_passenger}/wsgi/request_handler.py +7 -1
- data/man/passenger-memory-stats.8 +1 -1
- data/misc/render_error_pages.rb +1 -1
- data/test/ApplicationPoolServerTest.cpp +0 -28
- data/test/ApplicationPoolServer_ApplicationPoolTest.cpp +4 -0
- data/test/ApplicationPoolTest.cpp +307 -69
- data/test/CachedFileStatTest.cpp +262 -0
- data/test/FileCheckerTest.cpp +79 -0
- data/test/MessageChannelTest.cpp +3 -3
- data/test/PoolOptionsTest.cpp +37 -0
- data/test/SpawnManagerTest.cpp +4 -4
- data/test/StandardApplicationPoolTest.cpp +4 -0
- data/test/SystemTimeTest.cpp +37 -0
- data/test/UtilsTest.cpp +137 -0
- data/test/integration_tests.rb +270 -23
- data/test/oxt/backtrace_test.cpp +128 -0
- data/test/oxt/oxt_test_main.cpp +25 -0
- data/test/oxt/syscall_interruption_test.cpp +50 -0
- data/test/ruby/abstract_request_handler_spec.rb +83 -0
- data/test/ruby/abstract_server_collection_spec.rb +246 -0
- data/test/ruby/application_spec.rb +3 -3
- data/test/ruby/message_channel_spec.rb +2 -2
- data/test/ruby/rack/application_spawner_spec.rb +3 -5
- data/test/ruby/rails/application_spawner_spec.rb +54 -15
- data/test/ruby/rails/framework_spawner_spec.rb +6 -8
- data/test/ruby/rails/minimal_spawner_spec.rb +29 -0
- data/test/ruby/rails/spawner_error_handling_spec.rb +1 -1
- data/test/ruby/rails/spawner_privilege_lowering_spec.rb +3 -3
- data/test/ruby/spawn_manager_spec.rb +23 -12
- data/test/ruby/utils_spec.rb +36 -2
- data/test/ruby/wsgi/application_spawner_spec.rb +47 -0
- data/test/stub/apache2/httpd.conf.erb +3 -5
- data/test/stub/message_channel.rb +2 -2
- data/test/stub/message_channel_2.rb +2 -2
- data/test/stub/message_channel_3.rb +3 -3
- data/test/stub/minimal-railsapp/README +0 -0
- data/test/stub/minimal-railsapp/config/application.rb +0 -0
- data/test/stub/minimal-railsapp/config/environment.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/actionmailer/lib/action_mailer.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_controller.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_pack.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_view.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/activerecord/lib/active_record.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/activeresource/lib/active_resource.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/activesupport/lib/active_support.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/activesupport/lib/active_support/whiny_nil.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/railties/lib/dispatcher.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/railties/lib/initializer.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/railties/lib/ruby_version_check.rb +0 -0
- data/test/stub/rails_apps/foobar/app/controllers/foo_controller.rb +8 -0
- data/test/stub/rails_apps/foobar/config/environments/development.rb +1 -2
- data/test/stub/rails_apps/mycook/app/controllers/welcome_controller.rb +21 -1
- data/test/stub/rails_apps/mycook/sites/some.site/public/uploads.html +26 -0
- data/test/stub/rails_apps/mycook/sites/some.site/public/welcome/cached.html +26 -0
- data/test/stub/railsapp/app/controllers/application.rb +0 -0
- data/test/stub/railsapp/app/controllers/bar_controller_1.rb +0 -0
- data/test/stub/railsapp/app/controllers/bar_controller_2.rb +1 -1
- data/test/stub/railsapp/app/controllers/foo_controller.rb +4 -0
- data/test/stub/railsapp/app/helpers/application_helper.rb +0 -0
- data/test/stub/railsapp/config/boot.rb +0 -0
- data/test/stub/railsapp/config/database.yml +0 -0
- data/test/stub/railsapp/config/environment.rb +0 -0
- data/test/stub/railsapp/config/environments/development.rb +0 -0
- data/test/stub/railsapp/config/environments/production.rb +0 -0
- data/test/stub/railsapp/config/initializers/inflections.rb +0 -0
- data/test/stub/railsapp/config/initializers/mime_types.rb +0 -0
- data/test/stub/railsapp/config/routes.rb +0 -0
- data/test/stub/railsapp/public/useless.txt +0 -0
- data/test/stub/spawn_server.rb +3 -4
- data/test/stub/wsgi/passenger_wsgi.pyc +0 -0
- data/test/support/apache2_controller.rb +57 -7
- data/test/support/tut.h +15 -0
- data/vendor/README +12 -0
- data/vendor/README_FOR_PACKAGERS +1 -0
- data/vendor/rack-0.9.1/AUTHORS +8 -0
- data/vendor/rack-0.9.1/COPYING +18 -0
- data/vendor/rack-0.9.1/ChangeLog +1423 -0
- data/vendor/rack-0.9.1/KNOWN-ISSUES +18 -0
- data/vendor/rack-0.9.1/README +306 -0
- data/vendor/rack-0.9.1/Rakefile +188 -0
- data/vendor/rack-0.9.1/SPEC +129 -0
- data/vendor/rack-0.9.1/lib/rack.rb +86 -0
- data/vendor/rack-0.9.1/lib/rack/adapter/camping.rb +22 -0
- data/vendor/rack-0.9.1/lib/rack/auth/abstract/handler.rb +28 -0
- data/vendor/rack-0.9.1/lib/rack/auth/abstract/request.rb +37 -0
- data/vendor/rack-0.9.1/lib/rack/auth/basic.rb +58 -0
- data/vendor/rack-0.9.1/lib/rack/auth/digest/md5.rb +124 -0
- data/vendor/rack-0.9.1/lib/rack/auth/digest/nonce.rb +51 -0
- data/vendor/rack-0.9.1/lib/rack/auth/digest/params.rb +55 -0
- data/vendor/rack-0.9.1/lib/rack/auth/digest/request.rb +40 -0
- data/vendor/rack-0.9.1/lib/rack/auth/openid.rb +438 -0
- data/vendor/rack-0.9.1/lib/rack/builder.rb +67 -0
- data/vendor/rack-0.9.1/lib/rack/cascade.rb +36 -0
- data/vendor/rack-0.9.1/lib/rack/commonlogger.rb +61 -0
- data/vendor/rack-0.9.1/lib/rack/conditionalget.rb +43 -0
- data/vendor/rack-0.9.1/lib/rack/content_length.rb +25 -0
- data/vendor/rack-0.9.1/lib/rack/deflater.rb +87 -0
- data/vendor/rack-0.9.1/lib/rack/directory.rb +150 -0
- data/vendor/rack-0.9.1/lib/rack/file.rb +85 -0
- data/vendor/rack-0.9.1/lib/rack/handler.rb +48 -0
- data/vendor/rack-0.9.1/lib/rack/handler/cgi.rb +57 -0
- data/vendor/rack-0.9.1/lib/rack/handler/evented_mongrel.rb +8 -0
- data/vendor/rack-0.9.1/lib/rack/handler/fastcgi.rb +86 -0
- data/vendor/rack-0.9.1/lib/rack/handler/lsws.rb +52 -0
- data/vendor/rack-0.9.1/lib/rack/handler/mongrel.rb +82 -0
- data/vendor/rack-0.9.1/lib/rack/handler/scgi.rb +57 -0
- data/vendor/rack-0.9.1/lib/rack/handler/swiftiplied_mongrel.rb +8 -0
- data/vendor/rack-0.9.1/lib/rack/handler/thin.rb +15 -0
- data/vendor/rack-0.9.1/lib/rack/handler/webrick.rb +61 -0
- data/vendor/rack-0.9.1/lib/rack/head.rb +19 -0
- data/vendor/rack-0.9.1/lib/rack/lint.rb +465 -0
- data/vendor/rack-0.9.1/lib/rack/lobster.rb +65 -0
- data/vendor/rack-0.9.1/lib/rack/methodoverride.rb +27 -0
- data/vendor/rack-0.9.1/lib/rack/mime.rb +204 -0
- data/vendor/rack-0.9.1/lib/rack/mock.rb +160 -0
- data/vendor/rack-0.9.1/lib/rack/recursive.rb +57 -0
- data/vendor/rack-0.9.1/lib/rack/reloader.rb +64 -0
- data/vendor/rack-0.9.1/lib/rack/request.rb +218 -0
- data/vendor/rack-0.9.1/lib/rack/response.rb +171 -0
- data/vendor/rack-0.9.1/lib/rack/session/abstract/id.rb +153 -0
- data/vendor/rack-0.9.1/lib/rack/session/cookie.rb +89 -0
- data/vendor/rack-0.9.1/lib/rack/session/memcache.rb +97 -0
- data/vendor/rack-0.9.1/lib/rack/session/pool.rb +73 -0
- data/vendor/rack-0.9.1/lib/rack/showexceptions.rb +348 -0
- data/vendor/rack-0.9.1/lib/rack/showstatus.rb +106 -0
- data/vendor/rack-0.9.1/lib/rack/static.rb +38 -0
- data/vendor/rack-0.9.1/lib/rack/urlmap.rb +48 -0
- data/vendor/rack-0.9.1/lib/rack/utils.rb +347 -0
- metadata +1197 -1055
- data/doc/cxxapi/System_8h-source.html +0 -251
- data/doc/cxxapi/classDirectoryMapper-members.html +0 -38
- data/doc/cxxapi/classDirectoryMapper.html +0 -203
- data/doc/cxxapi/classPassenger_1_1Thread.html +0 -100
- data/doc/cxxapi/classboost_1_1this__thread_1_1disable__syscall__interruption.html +0 -46
- data/doc/cxxapi/classboost_1_1this__thread_1_1restore__syscall__interruption-members.html +0 -33
- data/doc/cxxapi/classboost_1_1this__thread_1_1restore__syscall__interruption.html +0 -44
- data/doc/cxxapi/namespacePassenger.html +0 -208
- data/doc/cxxapi/namespacePassenger_1_1InterruptableCalls.html +0 -43
- data/doc/cxxapi/namespacemembers.html +0 -70
- data/doc/cxxapi/namespacemembers_func.html +0 -66
- data/doc/cxxapi/namespacemembers_type.html +0 -46
- data/doc/cxxapi/namespaces.html +0 -35
- data/doc/rdoc/classes/Passenger.html +0 -136
- data/doc/rdoc/classes/Passenger/AbstractRequestHandler.html +0 -402
- data/doc/rdoc/classes/Passenger/SpawnManager.html +0 -379
- data/doc/rdoc/classes/Passenger/Utils.html +0 -578
- data/ext/apache2/System.h +0 -228
- data/lib/passenger/platform_info.rb +0 -302
- data/lib/passenger/templates/app_exited_during_initialization.html.erb +0 -19
- data/test/stub/apache2/httpd.conf +0 -75
- data/test/stub/rails_apps/foobar/config/environments/test.rb +0 -22
- data/test/stub/rails_apps/mycook/config/environments/test.rb +0 -22
- data/test/stub/railsapp/config/environments/test.rb +0 -22
- data/test/stub/railsapp2/config/environments/test.rb +0 -22
data/DEVELOPERS.TXT
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
The tests need the following software installed:
|
6
6
|
|
7
7
|
* All the usual Phusion Passenger dependencies.
|
8
|
-
* Ruby on Rails
|
8
|
+
* Ruby on Rails 2.0.1 (*exactly* 2.0.1)
|
9
9
|
* rspec >= 1.1.2
|
10
10
|
* mime-types >= 1.15
|
11
11
|
|
@@ -27,9 +27,9 @@ Run the following command to compile everything:
|
|
27
27
|
== Directory structure
|
28
28
|
|
29
29
|
The most important directories are:
|
30
|
-
[ lib/
|
30
|
+
[ lib/phusion_passenger ]
|
31
31
|
The source code for the spawn server, which is written in Ruby.
|
32
|
-
[ ext/
|
32
|
+
[ ext/phusion_passenger ]
|
33
33
|
Native extensions for Ruby, used by the spawn server.
|
34
34
|
[ ext/apache2 ]
|
35
35
|
The Phusion Passenger Apache 2 module (mod_passenger).
|
@@ -48,7 +48,13 @@ Less important directories:
|
|
48
48
|
[ lib/rake ]
|
49
49
|
Rake tasks.
|
50
50
|
[ ext/boost ]
|
51
|
-
A
|
51
|
+
A stripped-down and customized version of the Boost C++ library
|
52
|
+
(www.boost.org).
|
53
|
+
[ ext/oxt ]
|
54
|
+
The "OS eXtensions for boosT" library, which provides various important
|
55
|
+
functionality necessary for writing robust server software. It provides
|
56
|
+
things like support for interruptable system calls and portable backtraces
|
57
|
+
for C++. Boost was modified to make use of the functionality provided by OXT.
|
52
58
|
[ benchmark ]
|
53
59
|
Benchmark tools.
|
54
60
|
[ misc ]
|
data/LICENSE
CHANGED
@@ -2,7 +2,7 @@ Phusion Passenger is licensed under the GNU General Public License (GPL)
|
|
2
2
|
version 2, and *only* version 2 (i.e. not version 3 or any later versions).
|
3
3
|
|
4
4
|
In addition to the GNU General Public License v2 licensing terms, we explicitly
|
5
|
-
|
5
|
+
grant you the permission to run any application on top of Phusion Passenger,
|
6
6
|
regardless of the application's own licensing terms. The application will not
|
7
7
|
be bound to the terms of the GPL in any way. That is, the GPL only applies to
|
8
8
|
Phusion Passenger itself, and not to applications that are run through Phusion
|
data/NEWS
ADDED
File without changes
|
data/Rakefile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# kate: syntax ruby
|
2
2
|
|
3
3
|
# Phusion Passenger - http://www.modrails.com/
|
4
|
-
# Copyright (C) 2008 Phusion
|
4
|
+
# Copyright (C) 2008, 2009 Phusion
|
5
5
|
#
|
6
6
|
# This program is free software; you can redistribute it and/or modify
|
7
7
|
# it under the terms of the GNU General Public License as published by
|
@@ -22,33 +22,30 @@ require 'rake/rdoctask'
|
|
22
22
|
require 'rake/gempackagetask'
|
23
23
|
require 'rake/extensions'
|
24
24
|
require 'rake/cplusplus'
|
25
|
-
require '
|
25
|
+
require 'phusion_passenger/platform_info'
|
26
26
|
|
27
27
|
verbose true
|
28
28
|
|
29
29
|
##### Configuration
|
30
30
|
|
31
31
|
# Don't forget to edit Configuration.h too
|
32
|
-
PACKAGE_VERSION = "2.
|
32
|
+
PACKAGE_VERSION = "2.1.2"
|
33
33
|
OPTIMIZE = ["yes", "on", "true"].include?(ENV['OPTIMIZE'])
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
HTTPD.nil? and raise "Could not find the Apache web server binary."
|
39
|
-
APR_FLAGS.nil? and raise "Could not find Apache Portable Runtime (APR)."
|
40
|
-
APU_FLAGS.nil? and raise "Could not find Apache Portable Runtime Utility (APU)."
|
35
|
+
PlatformInfo.apxs2.nil? and raise "Could not find 'apxs' or 'apxs2'."
|
36
|
+
PlatformInfo.apache2ctl.nil? and raise "Could not find 'apachectl' or 'apache2ctl'."
|
37
|
+
PlatformInfo.httpd.nil? and raise "Could not find the Apache web server binary."
|
41
38
|
|
42
39
|
CXX = "g++"
|
43
|
-
|
40
|
+
LIBEXT = PlatformInfo.library_extension
|
41
|
+
# _GLIBCPP__PTHREADS is for fixing Boost compilation on OpenBSD.
|
44
42
|
if OPTIMIZE
|
45
|
-
OPTIMIZATION_FLAGS = "-O2 -
|
43
|
+
OPTIMIZATION_FLAGS = "#{PlatformInfo.debugging_cflags} -O2 -DBOOST_DISABLE_ASSERTS"
|
46
44
|
else
|
47
|
-
OPTIMIZATION_FLAGS = "-
|
45
|
+
OPTIMIZATION_FLAGS = "#{PlatformInfo.debugging_cflags} -DPASSENGER_DEBUG -DBOOST_DISABLE_ASSERTS"
|
48
46
|
end
|
49
|
-
CXXFLAGS = "
|
50
|
-
|
51
|
-
|
47
|
+
CXXFLAGS = "-Wall #{OPTIMIZATION_FLAGS}"
|
48
|
+
EXTRA_LDFLAGS = ""
|
52
49
|
|
53
50
|
#### Default tasks
|
54
51
|
|
@@ -56,6 +53,7 @@ desc "Build everything"
|
|
56
53
|
task :default => [
|
57
54
|
:native_support,
|
58
55
|
:apache2,
|
56
|
+
'test/oxt/oxt_test_main',
|
59
57
|
'test/Apache2ModuleTests',
|
60
58
|
'benchmark/DummyRequestHandler'
|
61
59
|
]
|
@@ -69,7 +67,7 @@ task :clobber
|
|
69
67
|
|
70
68
|
##### Ruby C extension
|
71
69
|
|
72
|
-
subdir 'ext/
|
70
|
+
subdir 'ext/phusion_passenger' do
|
73
71
|
task :native_support => ["native_support.#{LIBEXT}"]
|
74
72
|
|
75
73
|
file 'Makefile' => 'extconf.rb' do
|
@@ -87,40 +85,53 @@ subdir 'ext/passenger' do
|
|
87
85
|
end
|
88
86
|
|
89
87
|
|
90
|
-
##### boost::thread static library
|
88
|
+
##### boost::thread and OXT static library
|
91
89
|
|
92
|
-
|
93
|
-
|
94
|
-
|
90
|
+
file 'ext/libboost_oxt.a' =>
|
91
|
+
Dir['ext/boost/src/*.cpp'] +
|
92
|
+
Dir['ext/boost/src/pthread/*.cpp'] +
|
93
|
+
Dir['ext/oxt/*.cpp'] +
|
94
|
+
Dir['ext/oxt/*.hpp'] +
|
95
|
+
Dir['ext/oxt/detail/*.hpp'] do
|
96
|
+
Dir.chdir('ext/boost/src') do
|
97
|
+
puts "### In ext/boost/src:"
|
98
|
+
flags = "-I../.. #{CXXFLAGS} #{PlatformInfo.apache2_module_cflags}"
|
95
99
|
compile_cxx "*.cpp", flags
|
96
100
|
# NOTE: 'compile_cxx "pthread/*.cpp", flags' doesn't work on some systems,
|
97
101
|
# so we do this instead.
|
98
102
|
Dir['pthread/*.cpp'].each do |file|
|
99
103
|
compile_cxx file, flags
|
100
104
|
end
|
101
|
-
create_static_library "libboost_thread.a", "*.o"
|
102
105
|
end
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
+
Dir.chdir('ext/oxt') do
|
107
|
+
puts "### In ext/oxt:"
|
108
|
+
Dir['*.cpp'].each do |file|
|
109
|
+
compile_cxx file, "-I.. #{CXXFLAGS} #{PlatformInfo.apache2_module_cflags}"
|
110
|
+
end
|
106
111
|
end
|
112
|
+
create_static_library "ext/libboost_oxt.a", "ext/boost/src/*.o ext/oxt/*.o"
|
113
|
+
end
|
114
|
+
|
115
|
+
task :clean do
|
116
|
+
sh "rm -f ext/libboost_oxt.a ext/boost/src/*.o ext/oxt/*.o"
|
107
117
|
end
|
108
118
|
|
109
119
|
|
110
120
|
##### Apache module
|
111
121
|
|
112
122
|
class APACHE2
|
113
|
-
CXXFLAGS = "-I..
|
123
|
+
CXXFLAGS = "-I.. #{CXXFLAGS} #{PlatformInfo.apache2_module_cflags}"
|
114
124
|
OBJECTS = {
|
115
125
|
'Configuration.o' => %w(Configuration.cpp Configuration.h),
|
116
126
|
'Bucket.o' => %w(Bucket.cpp Bucket.h),
|
117
127
|
'Hooks.o' => %w(Hooks.cpp Hooks.h
|
118
128
|
Configuration.h ApplicationPool.h ApplicationPoolServer.h
|
119
129
|
SpawnManager.h Exceptions.h Application.h MessageChannel.h
|
120
|
-
|
121
|
-
'System.o' => %w(System.cpp System.h),
|
130
|
+
PoolOptions.h Utils.h DirectoryMapper.h FileChecker.h),
|
122
131
|
'Utils.o' => %w(Utils.cpp Utils.h),
|
123
|
-
'Logging.o' => %w(Logging.cpp Logging.h)
|
132
|
+
'Logging.o' => %w(Logging.cpp Logging.h),
|
133
|
+
'SystemTime.o' => %w(SystemTime.cpp SystemTime.h),
|
134
|
+
'CachedFileStat.o' => %w(CachedFileStat.cpp CachedFileStat.h)
|
124
135
|
}
|
125
136
|
end
|
126
137
|
|
@@ -131,7 +142,7 @@ subdir 'ext/apache2' do
|
|
131
142
|
task :apache2 => ['mod_passenger.so', 'ApplicationPoolServerExecutable', :native_support]
|
132
143
|
|
133
144
|
file 'mod_passenger.so' => [
|
134
|
-
'../
|
145
|
+
'../libboost_oxt.a',
|
135
146
|
'mod_passenger.o'
|
136
147
|
] + APACHE2::OBJECTS.keys do
|
137
148
|
# apxs totally sucks. We couldn't get it working correctly
|
@@ -140,27 +151,35 @@ subdir 'ext/apache2' do
|
|
140
151
|
# Apache module ourselves.
|
141
152
|
#
|
142
153
|
# Oh, and libtool sucks too. Do we even need it anymore in 2008?
|
143
|
-
linkflags = "
|
144
|
-
linkflags << "
|
154
|
+
linkflags = "../libboost_oxt.a "
|
155
|
+
linkflags << "#{PlatformInfo.apache2_module_cflags} "
|
156
|
+
linkflags << "#{PlatformInfo.apache2_module_ldflags} #{EXTRA_LDFLAGS} -lstdc++"
|
145
157
|
create_shared_library 'mod_passenger.so',
|
146
158
|
APACHE2::OBJECTS.keys.join(' ') << ' mod_passenger.o',
|
147
159
|
linkflags
|
148
160
|
end
|
149
161
|
|
150
162
|
file 'ApplicationPoolServerExecutable' => [
|
151
|
-
'../
|
163
|
+
'../libboost_oxt.a',
|
152
164
|
'ApplicationPoolServerExecutable.cpp',
|
153
165
|
'ApplicationPool.h',
|
166
|
+
'Application.h',
|
154
167
|
'StandardApplicationPool.h',
|
168
|
+
'FileChecker.h',
|
155
169
|
'MessageChannel.h',
|
156
170
|
'SpawnManager.h',
|
157
|
-
'
|
171
|
+
'PoolOptions.h',
|
158
172
|
'Utils.o',
|
159
|
-
'Logging.o'
|
173
|
+
'Logging.o',
|
174
|
+
'SystemTime.o',
|
175
|
+
'CachedFileStat.o'
|
160
176
|
] do
|
161
177
|
create_executable "ApplicationPoolServerExecutable",
|
162
|
-
'ApplicationPoolServerExecutable.cpp
|
163
|
-
|
178
|
+
'ApplicationPoolServerExecutable.cpp Utils.o Logging.o ' <<
|
179
|
+
'SystemTime.o CachedFileStat.o',
|
180
|
+
"-I.. #{CXXFLAGS} #{PlatformInfo.portability_cflags} " <<
|
181
|
+
"../libboost_oxt.a " <<
|
182
|
+
"#{PlatformInfo.portability_ldflags} #{EXTRA_LDFLAGS}"
|
164
183
|
end
|
165
184
|
|
166
185
|
file 'mod_passenger.o' => ['mod_passenger.c'] do
|
@@ -187,44 +206,65 @@ end
|
|
187
206
|
##### Unit tests
|
188
207
|
|
189
208
|
class TEST
|
190
|
-
CXXFLAGS = "#{::CXXFLAGS} -
|
191
|
-
|
192
|
-
|
209
|
+
CXXFLAGS = "#{::CXXFLAGS} -DTESTING_SPAWN_MANAGER -DTESTING_APPLICATION_POOL #{PlatformInfo.portability_cflags}"
|
210
|
+
|
211
|
+
AP2_FLAGS = "-I../ext/apache2 -I../ext -Isupport #{PlatformInfo.apr_flags} #{PlatformInfo.apu_flags}"
|
193
212
|
AP2_OBJECTS = {
|
194
213
|
'CxxTestMain.o' => %w(CxxTestMain.cpp),
|
195
214
|
'MessageChannelTest.o' => %w(MessageChannelTest.cpp
|
196
|
-
../ext/apache2/MessageChannel.h
|
197
|
-
../ext/apache2/System.h),
|
215
|
+
../ext/apache2/MessageChannel.h),
|
198
216
|
'SpawnManagerTest.o' => %w(SpawnManagerTest.cpp
|
199
217
|
../ext/apache2/SpawnManager.h
|
218
|
+
../ext/apache2/PoolOptions.h
|
200
219
|
../ext/apache2/Application.h
|
201
|
-
../ext/apache2/MessageChannel.h
|
202
|
-
../ext/apache2/System.h),
|
220
|
+
../ext/apache2/MessageChannel.h),
|
203
221
|
'ApplicationPoolServerTest.o' => %w(ApplicationPoolServerTest.cpp
|
204
222
|
../ext/apache2/ApplicationPoolServer.h
|
205
|
-
../ext/apache2/
|
206
|
-
../ext/apache2/
|
223
|
+
../ext/apache2/PoolOptions.h
|
224
|
+
../ext/apache2/MessageChannel.h),
|
207
225
|
'ApplicationPoolServer_ApplicationPoolTest.o' => %w(ApplicationPoolServer_ApplicationPoolTest.cpp
|
208
226
|
ApplicationPoolTest.cpp
|
209
227
|
../ext/apache2/ApplicationPoolServer.h
|
210
228
|
../ext/apache2/ApplicationPool.h
|
211
229
|
../ext/apache2/SpawnManager.h
|
230
|
+
../ext/apache2/PoolOptions.h
|
212
231
|
../ext/apache2/Application.h
|
213
|
-
../ext/apache2/MessageChannel.h
|
214
|
-
../ext/apache2/System.h),
|
232
|
+
../ext/apache2/MessageChannel.h),
|
215
233
|
'StandardApplicationPoolTest.o' => %w(StandardApplicationPoolTest.cpp
|
216
234
|
ApplicationPoolTest.cpp
|
217
235
|
../ext/apache2/ApplicationPool.h
|
218
236
|
../ext/apache2/StandardApplicationPool.h
|
219
237
|
../ext/apache2/SpawnManager.h
|
220
|
-
../ext/apache2/
|
238
|
+
../ext/apache2/PoolOptions.h
|
239
|
+
../ext/apache2/Application.h
|
240
|
+
../ext/apache2/FileChecker.h),
|
241
|
+
'PoolOptionsTest.o' => %w(PoolOptionsTest.cpp ../ext/apache2/PoolOptions.h),
|
242
|
+
'FileCheckerTest.o' => %w(FileCheckerTest.cpp ../ext/apache2/FileChecker.h),
|
243
|
+
'SystemTimeTest.o' => %w(SystemTimeTest.cpp
|
244
|
+
../ext/apache2/SystemTime.h
|
245
|
+
../ext/apache2/SystemTime.cpp),
|
246
|
+
'CachedFileStatTest.o' => %w(CachedFileStatTest.cpp
|
247
|
+
../ext/apache2/CachedFileStat.h
|
248
|
+
../ext/apache2/CachedFileStat.cpp),
|
221
249
|
'UtilsTest.o' => %w(UtilsTest.cpp ../ext/apache2/Utils.h)
|
222
250
|
}
|
251
|
+
|
252
|
+
OXT_FLAGS = "-I../../ext -I../support"
|
253
|
+
OXT_OBJECTS = {
|
254
|
+
'oxt_test_main.o' => %w(oxt_test_main.cpp),
|
255
|
+
'backtrace_test.o' => %w(backtrace_test.cpp),
|
256
|
+
'syscall_interruption_test.o' => %w(syscall_interruption_test.cpp)
|
257
|
+
}
|
223
258
|
end
|
224
259
|
|
225
260
|
subdir 'test' do
|
226
261
|
desc "Run all unit tests (but not integration tests)"
|
227
|
-
task :test => [:'test:apache2', :'test:ruby', :'test:integration']
|
262
|
+
task :test => [:'test:oxt', :'test:apache2', :'test:ruby', :'test:integration']
|
263
|
+
|
264
|
+
desc "Run unit tests for the OXT library"
|
265
|
+
task 'test:oxt' => 'oxt/oxt_test_main' do
|
266
|
+
sh "./oxt/oxt_test_main"
|
267
|
+
end
|
228
268
|
|
229
269
|
desc "Run unit tests for the Apache 2 module"
|
230
270
|
task 'test:apache2' => [
|
@@ -246,34 +286,67 @@ subdir 'test' do
|
|
246
286
|
|
247
287
|
desc "Run unit tests for the Ruby libraries"
|
248
288
|
task 'test:ruby' => [:native_support] do
|
249
|
-
|
289
|
+
if PlatformInfo.rspec.nil?
|
290
|
+
abort "RSpec is not installed for Ruby interpreter '#{PlatformInfo::RUBY}'. Please install it."
|
291
|
+
else
|
292
|
+
ruby "#{PlatformInfo.rspec} -c -f s ruby/*.rb ruby/*/*.rb"
|
293
|
+
end
|
250
294
|
end
|
251
295
|
|
252
296
|
task 'test:rcov' => [:native_support] do
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
297
|
+
if PlatformInfo.rspec.nil?
|
298
|
+
abort "RSpec is not installed for Ruby interpreter '#{PlatformInfo::RUBY}'. Please install it."
|
299
|
+
else
|
300
|
+
sh "rcov", "--exclude",
|
301
|
+
"lib\/spec,\/spec$,_spec\.rb$,support\/,platform_info,integration_tests",
|
302
|
+
PlatformInfo.rspec, "--", "-c", "-f", "s",
|
303
|
+
*Dir["ruby/*.rb", "ruby/*/*.rb", "integration_tests.rb"]
|
304
|
+
end
|
258
305
|
end
|
259
306
|
|
260
307
|
desc "Run integration tests"
|
261
308
|
task 'test:integration' => [:apache2, :native_support] do
|
262
|
-
|
309
|
+
if PlatformInfo.rspec.nil?
|
310
|
+
abort "RSpec is not installed for Ruby interpreter '#{PlatformInfo::RUBY}'. Please install it."
|
311
|
+
else
|
312
|
+
ruby "#{PlatformInfo.rspec} -c -f s integration_tests.rb"
|
313
|
+
end
|
314
|
+
end
|
315
|
+
|
316
|
+
file 'oxt/oxt_test_main' => TEST::OXT_OBJECTS.keys.map{ |x| "oxt/#{x}" } +
|
317
|
+
['../ext/libboost_oxt.a'] do
|
318
|
+
Dir.chdir('oxt') do
|
319
|
+
objects = TEST::OXT_OBJECTS.keys.join(' ')
|
320
|
+
create_executable "oxt_test_main", objects,
|
321
|
+
"../../ext/libboost_oxt.a " <<
|
322
|
+
"#{PlatformInfo.portability_ldflags} #{EXTRA_LDFLAGS}"
|
323
|
+
end
|
324
|
+
end
|
325
|
+
|
326
|
+
TEST::OXT_OBJECTS.each_pair do |target, sources|
|
327
|
+
file "oxt/#{target}" => sources.map{ |x| "oxt/#{x}" } do
|
328
|
+
Dir.chdir('oxt') do
|
329
|
+
puts "### In test/oxt:"
|
330
|
+
compile_cxx sources[0], "#{TEST::OXT_FLAGS} #{TEST::CXXFLAGS}"
|
331
|
+
end
|
332
|
+
end
|
263
333
|
end
|
264
334
|
|
265
335
|
file 'Apache2ModuleTests' => TEST::AP2_OBJECTS.keys +
|
266
|
-
['../ext/
|
267
|
-
'../ext/apache2/System.o',
|
336
|
+
['../ext/libboost_oxt.a',
|
268
337
|
'../ext/apache2/Utils.o',
|
269
|
-
'../ext/apache2/Logging.o'
|
338
|
+
'../ext/apache2/Logging.o',
|
339
|
+
'../ext/apache2/SystemTime.o',
|
340
|
+
'../ext/apache2/CachedFileStat.o'] do
|
270
341
|
objects = TEST::AP2_OBJECTS.keys.join(' ') <<
|
271
|
-
" ../ext/apache2/System.o" <<
|
272
342
|
" ../ext/apache2/Utils.o" <<
|
273
|
-
" ../ext/apache2/Logging.o"
|
343
|
+
" ../ext/apache2/Logging.o" <<
|
344
|
+
" ../ext/apache2/SystemTime.o " <<
|
345
|
+
" ../ext/apache2/CachedFileStat.o"
|
274
346
|
create_executable "Apache2ModuleTests", objects,
|
275
|
-
"#{
|
276
|
-
"../ext/
|
347
|
+
"#{PlatformInfo.apache2_module_ldflags} #{EXTRA_LDFLAGS} " <<
|
348
|
+
"../ext/libboost_oxt.a " <<
|
349
|
+
"-lpthread"
|
277
350
|
end
|
278
351
|
|
279
352
|
TEST::AP2_OBJECTS.each_pair do |target, sources|
|
@@ -295,41 +368,7 @@ subdir 'test' do
|
|
295
368
|
end
|
296
369
|
|
297
370
|
task :clean do
|
298
|
-
sh "rm -f Apache2ModuleTests *.o"
|
299
|
-
end
|
300
|
-
end
|
301
|
-
|
302
|
-
|
303
|
-
##### Benchmarks
|
304
|
-
|
305
|
-
subdir 'benchmark' do
|
306
|
-
file 'DummyRequestHandler' => ['DummyRequestHandler.cpp',
|
307
|
-
'../ext/apache2/MessageChannel.h',
|
308
|
-
'../ext/apache2/System.o',
|
309
|
-
'../ext/boost/src/libboost_thread.a'] do
|
310
|
-
create_executable "DummyRequestHandler", "DummyRequestHandler.cpp",
|
311
|
-
"-I../ext -I../ext/apache2 #{CXXFLAGS} #{LDFLAGS} " <<
|
312
|
-
"../ext/apache2/System.o " <<
|
313
|
-
"../ext/boost/src/libboost_thread.a -lpthread"
|
314
|
-
end
|
315
|
-
|
316
|
-
file 'ApplicationPool' => ['ApplicationPool.cpp',
|
317
|
-
'../ext/apache2/StandardApplicationPool.h',
|
318
|
-
'../ext/apache2/ApplicationPoolServerExecutable',
|
319
|
-
'../ext/apache2/System.o',
|
320
|
-
'../ext/apache2/Logging.o',
|
321
|
-
'../ext/apache2/Utils.o',
|
322
|
-
'../ext/boost/src/libboost_thread.a',
|
323
|
-
:native_support] do
|
324
|
-
create_executable "ApplicationPool", "ApplicationPool.cpp",
|
325
|
-
"-I../ext -I../ext/apache2 #{CXXFLAGS} #{LDFLAGS} " <<
|
326
|
-
"../ext/apache2/System.o ../ext/apache2/Logging.o " <<
|
327
|
-
"../ext/apache2/Utils.o " <<
|
328
|
-
"../ext/boost/src/libboost_thread.a -lpthread"
|
329
|
-
end
|
330
|
-
|
331
|
-
task :clean do
|
332
|
-
sh "rm -f DummyRequestHandler ApplicationPool"
|
371
|
+
sh "rm -f oxt/oxt_test_main oxt/*.o Apache2ModuleTests *.o"
|
333
372
|
end
|
334
373
|
end
|
335
374
|
|
@@ -337,16 +376,29 @@ end
|
|
337
376
|
##### Documentation
|
338
377
|
|
339
378
|
subdir 'doc' do
|
340
|
-
ASCIIDOC =
|
379
|
+
ASCIIDOC = 'asciidoc'
|
380
|
+
ASCIIDOC_FLAGS = "-a toc -a numbered -a toclevels=3 -a icons"
|
341
381
|
ASCII_DOCS = ['Security of user switching support', 'Users guide',
|
342
382
|
'Architectural overview']
|
343
383
|
|
384
|
+
DOXYGEN = 'doxygen'
|
385
|
+
|
344
386
|
desc "Generate all documentation"
|
345
|
-
task :doc => [:rdoc
|
387
|
+
task :doc => [:rdoc]
|
346
388
|
|
389
|
+
if PlatformInfo.find_command(DOXYGEN)
|
390
|
+
task :doc => :doxygen
|
391
|
+
end
|
392
|
+
|
393
|
+
task :doc => ASCII_DOCS.map{ |x| "#{x}.html" }
|
394
|
+
|
347
395
|
ASCII_DOCS.each do |name|
|
348
396
|
file "#{name}.html" => ["#{name}.txt"] do
|
349
|
-
|
397
|
+
if PlatformInfo.find_command(ASCIIDOC)
|
398
|
+
sh "#{ASCIIDOC} #{ASCIIDOC_FLAGS} '#{name}.txt'"
|
399
|
+
else
|
400
|
+
sh "echo 'asciidoc required to build docs' > '#{name}.html'"
|
401
|
+
end
|
350
402
|
end
|
351
403
|
end
|
352
404
|
|
@@ -375,7 +427,10 @@ Rake::RDocTask.new(:clobber_rdoc => "rdoc:clobber", :rerdoc => "rdoc:force") do
|
|
375
427
|
rd.main = "README"
|
376
428
|
rd.rdoc_dir = "doc/rdoc"
|
377
429
|
rd.rdoc_files.include("README", "DEVELOPERS.TXT",
|
378
|
-
"lib/
|
430
|
+
"lib/phusion_passenger/*.rb",
|
431
|
+
"lib/phusion_passenger/*/*.rb",
|
432
|
+
"lib/rake/extensions.rb",
|
433
|
+
"ext/phusion_passenger/*.c")
|
379
434
|
rd.template = "./doc/template/horo"
|
380
435
|
rd.title = "Passenger Ruby API"
|
381
436
|
rd.options << "-S" << "-N" << "-p" << "-H"
|
@@ -394,20 +449,20 @@ spec = Gem::Specification.new do |s|
|
|
394
449
|
s.author = "Phusion - http://www.phusion.nl/"
|
395
450
|
s.email = "info@phusion.nl"
|
396
451
|
s.requirements << "fastthread" << "Apache 2 with development headers"
|
397
|
-
s.
|
452
|
+
s.require_paths = ["lib", "ext"]
|
398
453
|
s.add_dependency 'rake', '>= 0.8.1'
|
399
454
|
s.add_dependency 'fastthread', '>= 1.0.1'
|
400
|
-
s.
|
401
|
-
s.extensions << 'ext/passenger/extconf.rb'
|
455
|
+
s.extensions << 'ext/phusion_passenger/extconf.rb'
|
402
456
|
s.files = FileList[
|
403
457
|
'Rakefile',
|
404
458
|
'README',
|
405
459
|
'DEVELOPERS.TXT',
|
406
460
|
'LICENSE',
|
407
461
|
'INSTALL',
|
462
|
+
'NEWS',
|
408
463
|
'lib/**/*.rb',
|
409
464
|
'lib/**/*.py',
|
410
|
-
'lib/
|
465
|
+
'lib/phusion_passenger/templates/*',
|
411
466
|
'bin/*',
|
412
467
|
'doc/*',
|
413
468
|
|
@@ -427,11 +482,16 @@ spec = Gem::Specification.new do |s|
|
|
427
482
|
'ext/apache2/*.{cpp,h,c,TXT}',
|
428
483
|
'ext/boost/*.{hpp,TXT}',
|
429
484
|
'ext/boost/**/*.{hpp,cpp,pl,inl,ipp}',
|
430
|
-
'ext/
|
485
|
+
'ext/oxt/*.hpp',
|
486
|
+
'ext/oxt/*.cpp',
|
487
|
+
'ext/oxt/detail/*.hpp',
|
488
|
+
'ext/phusion_passenger/*.{c,rb}',
|
431
489
|
'benchmark/*.{cpp,rb}',
|
432
490
|
'misc/*',
|
491
|
+
'vendor/**/*',
|
433
492
|
'test/*.{rb,cpp,example}',
|
434
493
|
'test/support/*',
|
494
|
+
'test/oxt/*.cpp',
|
435
495
|
'test/ruby/*',
|
436
496
|
'test/ruby/*/*',
|
437
497
|
'test/stub/*',
|
@@ -488,20 +548,20 @@ task :fakeroot => [:apache2, :native_support, :doc] do
|
|
488
548
|
libdir = "#{fakeroot}/usr/lib/ruby/#{CONFIG['ruby_version']}"
|
489
549
|
extdir = "#{libdir}/#{CONFIG['arch']}"
|
490
550
|
bindir = "#{fakeroot}/usr/bin"
|
491
|
-
docdir = "#{fakeroot}/usr/share/doc/
|
492
|
-
libexecdir = "#{fakeroot}/usr/lib/
|
551
|
+
docdir = "#{fakeroot}/usr/share/doc/phusion_passenger"
|
552
|
+
libexecdir = "#{fakeroot}/usr/lib/phusion_passenger"
|
493
553
|
|
494
554
|
sh "rm -rf #{fakeroot}"
|
495
555
|
sh "mkdir -p #{fakeroot}"
|
496
556
|
|
497
557
|
sh "mkdir -p #{libdir}"
|
498
|
-
sh "cp -R lib/
|
558
|
+
sh "cp -R lib/phusion_passenger #{libdir}/"
|
499
559
|
|
500
560
|
sh "mkdir -p #{fakeroot}/etc"
|
501
561
|
sh "echo -n '#{PACKAGE_VERSION}' > #{fakeroot}/etc/passenger_version.txt"
|
502
562
|
|
503
|
-
sh "mkdir -p #{extdir}/
|
504
|
-
sh "cp -R ext/
|
563
|
+
sh "mkdir -p #{extdir}/phusion_passenger"
|
564
|
+
sh "cp -R ext/phusion_passenger/*.#{LIBEXT} #{extdir}/phusion_passenger/"
|
505
565
|
|
506
566
|
sh "mkdir -p #{bindir}"
|
507
567
|
sh "cp bin/* #{bindir}/"
|
@@ -526,9 +586,14 @@ task 'package:debian' => :fakeroot do
|
|
526
586
|
end
|
527
587
|
|
528
588
|
fakeroot = "pkg/fakeroot"
|
529
|
-
|
530
|
-
|
531
|
-
|
589
|
+
raw_arch = `uname -m`.strip
|
590
|
+
arch = case raw_arch
|
591
|
+
when /^i.86$/
|
592
|
+
"i386"
|
593
|
+
when /^x86_64/
|
594
|
+
"amd64"
|
595
|
+
else
|
596
|
+
raw_arch
|
532
597
|
end
|
533
598
|
|
534
599
|
sh "sed -i 's/Version: .*/Version: #{PACKAGE_VERSION}/' debian/control"
|
@@ -556,10 +621,11 @@ task :sloccount do
|
|
556
621
|
end
|
557
622
|
sh "sloccount", *Dir[
|
558
623
|
"#{tmpdir}/*",
|
559
|
-
"lib/
|
624
|
+
"lib/phusion_passenger/*",
|
560
625
|
"lib/rake/{cplusplus,extensions}.rb",
|
561
626
|
"ext/apache2",
|
562
|
-
"ext/
|
627
|
+
"ext/oxt",
|
628
|
+
"ext/phusion_passenger/*.c",
|
563
629
|
"test/*.{cpp,rb}",
|
564
630
|
"test/support/*.rb",
|
565
631
|
"test/stub/*.rb",
|