passenger 3.0.0 → 3.0.1
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 +9 -6
- data/NEWS +50 -0
- data/Rakefile +2 -1
- data/bin/passenger-install-apache2-module +4 -4
- data/bin/passenger-install-nginx-module +1 -1
- data/bin/passenger-make-enterprisey +1 -1
- data/build/agents.rb +26 -19
- data/build/apache2.rb +49 -46
- data/build/basics.rb +37 -13
- data/build/common_library.rb +134 -64
- data/build/config.rb +18 -11
- data/build/cplusplus_support.rb +4 -0
- data/build/cxx_tests.rb +26 -12
- data/build/documentation.rb +18 -11
- data/build/integration_tests.rb +18 -11
- data/build/misc.rb +18 -11
- data/build/nginx.rb +27 -19
- data/build/oxt_tests.rb +18 -11
- data/build/packaging.rb +45 -37
- data/build/rpm.rb +98 -0
- data/build/ruby_extension.rb +19 -13
- data/build/ruby_tests.rb +19 -12
- data/build/test_basics.rb +23 -11
- data/debian/README.Debian +15 -0
- data/debian/changelog +185 -0
- data/debian/control +47 -19
- data/debian/copyright +20 -0
- data/debian/libapache2-mod-passenger.install +1 -0
- data/debian/libapache2-mod-passenger.postinst +36 -0
- data/debian/libapache2-mod-passenger.prerm +15 -0
- data/debian/passenger-common.install +4 -0
- data/debian/passenger.conf +4 -0
- data/debian/passenger.load +1 -0
- data/debian/rules +37 -0
- data/debian/watch +3 -0
- data/{misc → dev}/copy_boost_headers.rb +3 -0
- data/{misc → dev}/find_owner_pipe_leaks.rb +0 -0
- data/{misc → dev}/render_error_pages.rb +0 -0
- data/doc/Users guide Apache.html +39 -1
- data/doc/Users guide Apache.txt +40 -0
- data/doc/Users guide Nginx.html +1 -1
- data/doc/Users guide Standalone.html +1 -1
- data/doc/cxxapi/Constants_8h_source.html +1 -1
- data/doc/cxxapi/DirectoryMapper_8h_source.html +6 -22
- data/doc/cxxapi/EventedClient_8h_source.html +572 -468
- data/doc/cxxapi/Exceptions_8h_source.html +142 -129
- data/doc/cxxapi/FileDescriptor_8h_source.html +263 -199
- data/doc/cxxapi/MessageChannel_8h_source.html +686 -770
- data/doc/cxxapi/MessageServer_8h_source.html +1 -1
- data/doc/cxxapi/PoolOptions_8h_source.html +79 -78
- data/doc/cxxapi/ResourceLocator_8h_source.html +105 -55
- data/doc/cxxapi/SafeLibev_8h_source.html +180 -0
- data/doc/cxxapi/ServerInstanceDir_8h_source.html +114 -110
- data/doc/cxxapi/Session_8h_source.html +1 -1
- data/doc/cxxapi/SpawnManager_8h_source.html +208 -208
- data/doc/cxxapi/StaticString_8h_source.html +258 -183
- data/doc/cxxapi/Utils_8h_source.html +71 -54
- data/doc/cxxapi/annotated.html +3 -0
- data/doc/cxxapi/classAgentWatcher.html +2 -2
- data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +0 -1
- data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +0 -27
- data/doc/cxxapi/classPassenger_1_1EventedClient-members.html +5 -0
- data/doc/cxxapi/classPassenger_1_1EventedClient.html +102 -7
- data/doc/cxxapi/classPassenger_1_1FileDescriptor-members.html +2 -1
- data/doc/cxxapi/classPassenger_1_1FileDescriptor.html +34 -8
- data/doc/cxxapi/classPassenger_1_1FileDescriptorPair-members.html +36 -0
- data/doc/cxxapi/classPassenger_1_1FileDescriptorPair.html +52 -0
- data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +0 -3
- data/doc/cxxapi/classPassenger_1_1MessageChannel.html +0 -120
- data/doc/cxxapi/classPassenger_1_1SafeLibev-members.html +36 -0
- data/doc/cxxapi/classPassenger_1_1SafeLibev.html +51 -0
- data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +1 -0
- data/doc/cxxapi/classPassenger_1_1SpawnException.html +22 -0
- data/doc/cxxapi/classes.html +14 -14
- data/doc/cxxapi/files.html +2 -0
- data/doc/cxxapi/functions_0x63.html +6 -3
- data/doc/cxxapi/functions_0x64.html +9 -2
- data/doc/cxxapi/functions_0x67.html +6 -9
- data/doc/cxxapi/functions_0x69.html +3 -0
- data/doc/cxxapi/functions_0x77.html +8 -8
- data/doc/cxxapi/functions_eval.html +6 -0
- data/doc/cxxapi/functions_func.html +18 -17
- data/doc/cxxapi/functions_vars.html +8 -0
- data/doc/cxxapi/graph_legend.png +0 -0
- data/doc/cxxapi/group__Core.png +0 -0
- data/doc/cxxapi/group__Hooks.png +0 -0
- data/doc/cxxapi/hierarchy.html +3 -0
- data/doc/cxxapi/inherit__graph__14.map +1 -1
- 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 -3
- 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 +3 -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.map +1 -1
- data/doc/cxxapi/inherit__graph__17.md5 +1 -1
- data/doc/cxxapi/inherit__graph__17.png +0 -0
- data/doc/cxxapi/inherit__graph__18.map +1 -2
- data/doc/cxxapi/inherit__graph__18.md5 +1 -1
- data/doc/cxxapi/inherit__graph__18.png +0 -0
- data/doc/cxxapi/inherit__graph__19.map +2 -1
- data/doc/cxxapi/inherit__graph__19.md5 +1 -1
- data/doc/cxxapi/inherit__graph__19.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__22.map +1 -1
- data/doc/cxxapi/inherit__graph__22.md5 +1 -1
- data/doc/cxxapi/inherit__graph__22.png +0 -0
- data/doc/cxxapi/inherit__graph__23.map +1 -1
- data/doc/cxxapi/inherit__graph__23.md5 +1 -1
- data/doc/cxxapi/inherit__graph__23.png +0 -0
- data/doc/cxxapi/inherit__graph__24.map +1 -1
- data/doc/cxxapi/inherit__graph__24.md5 +1 -1
- data/doc/cxxapi/inherit__graph__24.png +0 -0
- data/doc/cxxapi/inherit__graph__25.map +1 -1
- data/doc/cxxapi/inherit__graph__25.md5 +1 -1
- data/doc/cxxapi/inherit__graph__25.png +0 -0
- data/doc/cxxapi/inherit__graph__26.map +1 -1
- data/doc/cxxapi/inherit__graph__26.md5 +1 -1
- data/doc/cxxapi/inherit__graph__26.png +0 -0
- data/doc/cxxapi/inherit__graph__27.map +1 -1
- data/doc/cxxapi/inherit__graph__27.md5 +1 -1
- data/doc/cxxapi/inherit__graph__27.png +0 -0
- data/doc/cxxapi/inherit__graph__28.map +1 -2
- data/doc/cxxapi/inherit__graph__28.md5 +1 -1
- data/doc/cxxapi/inherit__graph__28.png +0 -0
- data/doc/cxxapi/inherit__graph__29.map +1 -1
- data/doc/cxxapi/inherit__graph__29.md5 +1 -1
- data/doc/cxxapi/inherit__graph__29.png +0 -0
- data/doc/cxxapi/inherit__graph__30.map +1 -1
- data/doc/cxxapi/inherit__graph__30.md5 +1 -1
- data/doc/cxxapi/inherit__graph__30.png +0 -0
- data/doc/cxxapi/inherit__graph__31.map +2 -1
- data/doc/cxxapi/inherit__graph__31.md5 +1 -1
- data/doc/cxxapi/inherit__graph__31.png +0 -0
- data/doc/cxxapi/inherit__graph__32.map +1 -3
- data/doc/cxxapi/inherit__graph__32.md5 +1 -1
- data/doc/cxxapi/inherit__graph__32.png +0 -0
- data/doc/cxxapi/inherit__graph__33.map +1 -1
- data/doc/cxxapi/inherit__graph__33.md5 +1 -1
- data/doc/cxxapi/inherit__graph__33.png +0 -0
- data/doc/cxxapi/inherit__graph__34.map +1 -1
- data/doc/cxxapi/inherit__graph__34.md5 +1 -1
- data/doc/cxxapi/inherit__graph__34.png +0 -0
- data/doc/cxxapi/inherit__graph__35.map +3 -1
- data/doc/cxxapi/inherit__graph__35.md5 +1 -1
- data/doc/cxxapi/inherit__graph__35.png +0 -0
- data/doc/cxxapi/inherit__graph__36.map +1 -1
- data/doc/cxxapi/inherit__graph__36.md5 +1 -1
- data/doc/cxxapi/inherit__graph__36.png +0 -0
- data/doc/cxxapi/inherit__graph__37.map +1 -1
- data/doc/cxxapi/inherit__graph__37.md5 +1 -1
- data/doc/cxxapi/inherit__graph__37.png +0 -0
- data/doc/cxxapi/inherit__graph__38.map +3 -1
- data/doc/cxxapi/inherit__graph__38.md5 +1 -1
- data/doc/cxxapi/inherit__graph__38.png +0 -0
- data/doc/cxxapi/inherit__graph__39.map +3 -1
- data/doc/cxxapi/inherit__graph__39.md5 +1 -1
- data/doc/cxxapi/inherit__graph__39.png +0 -0
- data/doc/cxxapi/inherits.html +33 -24
- data/doc/cxxapi/namespacePassenger.html +52 -0
- data/doc/cxxapi/namespacemembers.html +6 -0
- data/doc/cxxapi/namespacemembers_func.html +6 -0
- data/doc/cxxapi/tree.html +8 -0
- data/ext/apache2/Configuration.cpp +30 -8
- data/ext/apache2/Configuration.hpp +15 -14
- data/ext/apache2/DirectoryMapper.h +0 -16
- data/ext/apache2/Hooks.cpp +30 -29
- data/ext/boost/algorithm/string/detail/case_conv.hpp +6 -6
- data/ext/boost/algorithm/string/detail/find_format.hpp +14 -4
- data/ext/boost/algorithm/string/detail/find_format_all.hpp +13 -3
- data/ext/boost/algorithm/string/detail/find_format_store.hpp +11 -0
- data/ext/boost/algorithm/string/erase.hpp +2 -2
- data/ext/boost/bind/placeholders.hpp +2 -2
- data/ext/boost/concept/detail/backward_compatibility.hpp +16 -0
- data/ext/boost/concept/detail/general.hpp +15 -6
- data/ext/boost/concept/detail/has_constraints.hpp +5 -3
- data/ext/boost/concept/usage.hpp +5 -4
- data/ext/boost/concept_check.hpp +10 -1
- data/ext/boost/config/abi/borland_prefix.hpp +1 -1
- data/ext/boost/config/auto_link.hpp +68 -21
- data/ext/boost/config/compiler/borland.hpp +11 -3
- data/ext/boost/config/compiler/clang.hpp +62 -0
- data/ext/boost/config/compiler/codegear.hpp +21 -7
- data/ext/boost/config/compiler/common_edg.hpp +4 -2
- data/ext/boost/config/compiler/digitalmars.hpp +1 -1
- data/ext/boost/config/compiler/gcc.hpp +46 -7
- data/ext/boost/config/compiler/gcc_xml.hpp +25 -0
- data/ext/boost/config/compiler/intel.hpp +23 -0
- data/ext/boost/config/compiler/kai.hpp +1 -1
- data/ext/boost/config/compiler/metrowerks.hpp +1 -1
- data/ext/boost/config/compiler/nvcc.hpp +86 -0
- data/ext/boost/config/compiler/pgi.hpp +18 -3
- data/ext/boost/config/compiler/sunpro_cc.hpp +19 -5
- data/ext/boost/config/compiler/vacpp.hpp +8 -0
- data/ext/boost/config/compiler/visualc.hpp +27 -11
- data/ext/boost/config/platform/cygwin.hpp +0 -3
- data/ext/boost/config/platform/symbian.hpp +94 -0
- data/ext/boost/config/platform/win32.hpp +8 -1
- data/ext/boost/config/select_compiler_config.hpp +10 -0
- data/ext/boost/config/select_platform_config.hpp +4 -0
- data/ext/boost/config/stdlib/dinkumware.hpp +11 -1
- data/ext/boost/config/stdlib/libcomo.hpp +1 -0
- data/ext/boost/config/stdlib/libstdcpp3.hpp +1 -0
- data/ext/boost/config/stdlib/modena.hpp +1 -0
- data/ext/boost/config/stdlib/msl.hpp +1 -0
- data/ext/boost/config/stdlib/roguewave.hpp +1 -0
- data/ext/boost/config/stdlib/sgi.hpp +1 -0
- data/ext/boost/config/stdlib/stlport.hpp +1 -0
- data/ext/boost/config/stdlib/vacpp.hpp +1 -0
- data/ext/boost/config/suffix.hpp +40 -2
- data/ext/boost/cstdint.hpp +36 -7
- data/ext/boost/date_time/gregorian/conversion.hpp +4 -2
- data/ext/boost/date_time/microsec_time_clock.hpp +7 -7
- data/ext/boost/date_time/posix_time/conversion.hpp +4 -2
- data/ext/boost/date_time/time_facet.hpp +43 -4
- data/ext/boost/detail/endian.hpp +5 -2
- data/ext/boost/detail/lcast_precision.hpp +2 -2
- data/ext/boost/detail/sp_typeinfo.hpp +1 -1
- data/ext/boost/detail/workaround.hpp +5 -0
- data/ext/boost/exception/detail/error_info_impl.hpp +3 -3
- data/ext/boost/exception/detail/exception_ptr.hpp +76 -135
- data/ext/boost/exception/detail/is_output_streamable.hpp +15 -2
- data/ext/boost/exception/detail/type_info.hpp +9 -5
- data/ext/boost/exception/diagnostic_information.hpp +5 -3
- data/ext/boost/exception/exception.hpp +60 -46
- data/ext/boost/exception/info.hpp +47 -14
- data/ext/boost/function/function_base.hpp +4 -4
- data/ext/boost/integer.hpp +4 -0
- data/ext/boost/integer_fwd.hpp +9 -3
- data/ext/boost/iterator/iterator_concepts.hpp +284 -0
- data/ext/boost/iterator/transform_iterator.hpp +0 -1
- data/ext/boost/make_shared.hpp +17 -0
- data/ext/boost/mpl/aux_/config/has_xxx.hpp +4 -3
- data/ext/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp +2 -6
- data/ext/boost/mpl/aux_/template_arity.hpp +4 -4
- data/ext/boost/mpl/eval_if.hpp +3 -3
- data/ext/boost/mpl/has_xxx.hpp +369 -3
- data/ext/boost/optional/optional.hpp +3 -1
- data/ext/boost/optional/optional_fwd.hpp +1 -1
- data/ext/boost/preprocessor/repetition/enum_trailing_params.hpp +38 -0
- data/ext/boost/range/algorithm/equal.hpp +188 -0
- data/ext/boost/range/as_literal.hpp +15 -15
- data/ext/boost/range/concepts.hpp +331 -0
- data/ext/boost/range/const_iterator.hpp +7 -4
- data/ext/boost/range/detail/extract_optional_type.hpp +52 -0
- data/ext/boost/range/detail/implementation_help.hpp +7 -7
- data/ext/boost/range/detail/misc_concept.hpp +33 -0
- data/ext/boost/range/iterator.hpp +32 -32
- data/ext/boost/range/iterator_range.hpp +8 -651
- data/ext/boost/range/iterator_range_core.hpp +542 -0
- data/ext/boost/range/iterator_range_io.hpp +93 -0
- data/ext/boost/range/mutable_iterator.hpp +7 -4
- data/ext/boost/range/size.hpp +1 -1
- data/ext/boost/range/size_type.hpp +2 -1
- data/ext/boost/shared_array.hpp +19 -0
- data/ext/boost/smart_ptr/detail/sp_convertible.hpp +2 -2
- data/ext/boost/smart_ptr/detail/yield_k.hpp +1 -1
- data/ext/boost/smart_ptr/make_shared.hpp +508 -0
- data/ext/boost/smart_ptr/shared_array.hpp +147 -0
- data/ext/boost/src/pthread/thread.cpp +16 -21
- data/ext/boost/src/pthread/timeconv.inl +7 -4
- data/ext/boost/thread/barrier.hpp +2 -1
- data/ext/boost/thread/detail/config.hpp +7 -1
- data/ext/boost/thread/detail/platform.hpp +1 -1
- data/ext/boost/thread/detail/thread.hpp +62 -18
- data/ext/boost/thread/detail/thread_group.hpp +5 -2
- data/ext/boost/thread/detail/tss_hooks.hpp +8 -25
- data/ext/boost/thread/future.hpp +45 -34
- data/ext/boost/thread/locks.hpp +184 -55
- data/ext/boost/thread/pthread/condition_variable.hpp +7 -7
- data/ext/boost/thread/pthread/condition_variable_fwd.hpp +4 -2
- data/ext/boost/thread/pthread/mutex.hpp +29 -17
- data/ext/boost/thread/pthread/once.hpp +5 -0
- data/ext/boost/thread/pthread/recursive_mutex.hpp +97 -18
- data/ext/boost/thread/pthread/shared_mutex.hpp +1 -1
- data/ext/boost/thread/pthread/thread_heap_alloc.hpp +1 -1
- data/ext/boost/thread/tss.hpp +2 -0
- data/ext/boost/throw_exception.hpp +21 -5
- data/ext/boost/token_functions.hpp +111 -91
- data/ext/boost/type_traits/add_reference.hpp +19 -1
- data/ext/boost/type_traits/function_traits.hpp +2 -2
- data/ext/boost/type_traits/is_const.hpp +24 -5
- data/ext/boost/type_traits/is_convertible.hpp +1 -1
- data/ext/boost/type_traits/is_function.hpp +3 -0
- data/ext/boost/type_traits/is_lvalue_reference.hpp +118 -0
- data/ext/boost/type_traits/is_reference.hpp +8 -81
- data/ext/boost/type_traits/is_rvalue_reference.hpp +29 -0
- data/ext/boost/type_traits/is_same.hpp +2 -2
- data/ext/boost/type_traits/is_volatile.hpp +26 -7
- data/ext/boost/type_traits/remove_const.hpp +12 -0
- data/ext/boost/type_traits/remove_cv.hpp +23 -1
- data/ext/boost/type_traits/remove_reference.hpp +21 -1
- data/ext/boost/type_traits/type_with_alignment.hpp +10 -10
- data/ext/boost/units/detail/utility.hpp +104 -0
- data/ext/boost/utility/compare_pointees.hpp +1 -1
- data/ext/common/AgentsStarter.hpp +151 -161
- data/ext/common/ApplicationPool/Pool.h +16 -4
- data/ext/common/Constants.h +1 -1
- data/ext/common/EventedClient.h +130 -26
- data/ext/common/Exceptions.h +15 -2
- data/ext/common/FileDescriptor.h +76 -12
- data/ext/common/IniFile.h +488 -0
- data/ext/common/LoggingAgent/LoggingServer.h +2 -2
- data/ext/common/LoggingAgent/RemoteSender.h +15 -6
- data/ext/common/MessageChannel.h +17 -101
- data/ext/common/PoolOptions.h +1 -0
- data/ext/common/ResourceLocator.h +78 -28
- data/ext/common/SafeLibev.h +149 -0
- data/ext/common/ServerInstanceDir.h +11 -7
- data/ext/common/Session.h +1 -1
- data/ext/common/SpawnManager.h +14 -14
- data/ext/common/StaticString.h +75 -0
- data/ext/common/Utils.cpp +304 -12
- data/ext/common/Utils.h +17 -0
- data/ext/common/Utils/BufferedIO.h +196 -0
- data/ext/common/Utils/IOUtils.cpp +159 -0
- data/ext/common/Utils/IOUtils.h +118 -1
- data/ext/common/Utils/ProcessMetricsCollector.h +184 -56
- data/ext/common/Utils/StrIntUtils.cpp +45 -11
- data/ext/common/Utils/StrIntUtils.h +8 -5
- data/ext/common/Utils/Timer.h +22 -0
- data/ext/common/Utils/utf8.h +35 -0
- data/ext/common/Utils/utf8/checked.h +324 -0
- data/ext/common/Utils/utf8/core.h +359 -0
- data/ext/common/Utils/utf8/unchecked.h +229 -0
- data/ext/common/Watchdog.cpp +52 -85
- data/ext/libev/config.h +122 -0
- data/ext/nginx/Configuration.c +7 -1
- data/ext/nginx/HelperAgent.cpp +16 -18
- data/ext/nginx/config +6 -4
- data/ext/oxt/system_calls.cpp +10 -0
- data/ext/oxt/system_calls.hpp +2 -0
- data/lib/phusion_passenger.rb +6 -11
- data/lib/phusion_passenger/dependencies.rb +2 -0
- data/lib/phusion_passenger/packaging.rb +5 -5
- data/lib/phusion_passenger/platform_info.rb +88 -0
- data/lib/phusion_passenger/platform_info/binary_compatibility.rb +3 -17
- data/lib/phusion_passenger/platform_info/compiler.rb +14 -32
- data/lib/phusion_passenger/platform_info/curl.rb +6 -1
- data/lib/phusion_passenger/platform_info/operating_system.rb +107 -0
- data/lib/phusion_passenger/public_api.rb +2 -2
- data/lib/phusion_passenger/rails3_extensions/init.rb +5 -2
- data/lib/phusion_passenger/standalone/command.rb +6 -2
- data/lib/phusion_passenger/standalone/package_runtime_command.rb +2 -2
- data/lib/phusion_passenger/standalone/runtime_installer.rb +17 -5
- data/lib/phusion_passenger/standalone/start_command.rb +12 -12
- data/lib/phusion_passenger/standalone/stop_command.rb +3 -3
- data/lib/phusion_passenger/standalone/utils.rb +6 -2
- data/lib/phusion_passenger/templates/standalone/config.erb +37 -5
- data/lib/phusion_passenger/utils.rb +4 -7
- data/resources/mime.types +73 -0
- data/{misc → resources}/union_station_gateway.crt +0 -0
- data/test/cxx/BufferedIOTest.cpp +364 -0
- data/test/cxx/EventedClientTest.cpp +150 -13
- data/test/cxx/IOUtilsTest.cpp +399 -1
- data/test/cxx/MessageChannelTest.cpp +5 -120
- data/test/cxx/ProcessMetricsCollectorTest.cpp +121 -0
- data/test/cxx/StaticStringTest.cpp +134 -0
- data/test/cxx/UtilsTest.cpp +16 -46
- data/test/stub/rails_apps/2.3/mycook/public/dispatch.cgi +2 -2
- data/test/stub/rails_apps/2.3/mycook/public/dispatch.fcgi +1 -1
- data/test/stub/rails_apps/2.3/mycook/public/dispatch.rb +1 -1
- data/test/stub/rails_apps/3.0/empty/Gemfile.lock +73 -0
- data/test/support/allocate_memory.c +14 -0
- data/test/support/test_helper.rb +3 -0
- metadata +57 -174
- data/bin/passenger-stress-test +0 -345
- data/debian/postinst +0 -24
- data/doc/rdoc/classes/ConditionVariable.html +0 -215
- data/doc/rdoc/classes/Exception.html +0 -120
- data/doc/rdoc/classes/GC.html +0 -113
- data/doc/rdoc/classes/IO.html +0 -221
- data/doc/rdoc/classes/PhusionPassenger.html +0 -397
- data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +0 -180
- data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +0 -647
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +0 -654
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/InvalidPassword.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerAlreadyStarted.html +0 -97
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerError.html +0 -96
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerNotStarted.html +0 -97
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/UnknownMessage.html +0 -96
- data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +0 -619
- data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +0 -142
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/MemoryStats.html +0 -368
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/MemoryStats/Process.html +0 -231
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance.html +0 -588
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/CorruptedDirectoryError.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/GenerationsAbsentError.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Group.html +0 -147
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Process.html +0 -279
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/RoleDeniedError.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/StaleDirectoryError.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Stats.html +0 -123
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/UnsupportedGenerationStructureVersionError.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger.html +0 -341
- data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger/Log.html +0 -294
- data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger/SharedData.html +0 -199
- data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +0 -155
- data/doc/rdoc/classes/PhusionPassenger/AppProcess.html +0 -367
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails.html +0 -95
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails/ApplicationSpawner.html +0 -351
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails/ApplicationSpawner/Error.html +0 -98
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails/CGIFixed.html +0 -200
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails/FrameworkSpawner.html +0 -410
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails/FrameworkSpawner/Error.html +0 -98
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails/RequestHandler.html +0 -156
- data/doc/rdoc/classes/PhusionPassenger/ClassicRailsExtensions.html +0 -115
- data/doc/rdoc/classes/PhusionPassenger/ClassicRailsExtensions/AnalyticsLogging.html +0 -202
- data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +0 -172
- data/doc/rdoc/classes/PhusionPassenger/DebugLogging.html +0 -273
- data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +0 -145
- data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +0 -162
- data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +0 -141
- data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +0 -673
- data/doc/rdoc/classes/PhusionPassenger/MessageChannel/InvalidHashError.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/MessageClient.html +0 -415
- data/doc/rdoc/classes/PhusionPassenger/NativeSupportLoader.html +0 -134
- data/doc/rdoc/classes/PhusionPassenger/Packaging.html +0 -129
- data/doc/rdoc/classes/PhusionPassenger/PlatformInfo.html +0 -1809
- data/doc/rdoc/classes/PhusionPassenger/Plugin.html +0 -237
- data/doc/rdoc/classes/PhusionPassenger/Rack.html +0 -91
- data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +0 -312
- data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner/Error.html +0 -98
- data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +0 -218
- data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions.html +0 -114
- data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging.html +0 -256
- data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ACExtension.html +0 -139
- data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ASBenchmarkableExtension.html +0 -118
- data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ExceptionLogger.html +0 -135
- data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +0 -378
- data/doc/rdoc/classes/PhusionPassenger/Standalone.html +0 -111
- data/doc/rdoc/classes/PhusionPassenger/Standalone/AppFinder.html +0 -252
- data/doc/rdoc/classes/PhusionPassenger/Standalone/Command.html +0 -161
- data/doc/rdoc/classes/PhusionPassenger/Standalone/ConfigFile.html +0 -368
- data/doc/rdoc/classes/PhusionPassenger/Standalone/ConfigFile/DisallowedContextError.html +0 -132
- data/doc/rdoc/classes/PhusionPassenger/Standalone/HelpCommand.html +0 -151
- data/doc/rdoc/classes/PhusionPassenger/Standalone/Main.html +0 -189
- data/doc/rdoc/classes/PhusionPassenger/Standalone/PackageRuntimeCommand.html +0 -177
- data/doc/rdoc/classes/PhusionPassenger/Standalone/RuntimeInstaller.html +0 -341
- data/doc/rdoc/classes/PhusionPassenger/Standalone/StartCommand.html +0 -203
- data/doc/rdoc/classes/PhusionPassenger/Standalone/StatusCommand.html +0 -156
- data/doc/rdoc/classes/PhusionPassenger/Standalone/StopCommand.html +0 -168
- data/doc/rdoc/classes/PhusionPassenger/Standalone/Utils.html +0 -86
- data/doc/rdoc/classes/PhusionPassenger/Standalone/VersionCommand.html +0 -135
- data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +0 -125
- data/doc/rdoc/classes/PhusionPassenger/Utils.html +0 -1550
- data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher.html +0 -204
- data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher/DirInfo.html +0 -171
- data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher/FileInfo.html +0 -140
- data/doc/rdoc/classes/PhusionPassenger/Utils/HostsFileParser.html +0 -260
- data/doc/rdoc/classes/PhusionPassenger/Utils/PseudoIO.html +0 -169
- data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput.html +0 -265
- data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput/Tempfile.html +0 -120
- data/doc/rdoc/classes/PhusionPassenger/Utils/UnseekableSocket.html +0 -561
- data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +0 -140
- data/doc/rdoc/classes/PhusionPassenger/WSGI.html +0 -89
- data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +0 -182
- data/doc/rdoc/classes/Process.html +0 -115
- data/doc/rdoc/classes/Signal.html +0 -139
- data/doc/rdoc/created.rid +0 -1
- data/doc/rdoc/files/DEVELOPERS_TXT.html +0 -276
- data/doc/rdoc/files/README.html +0 -157
- data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +0 -130
- data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +0 -135
- data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +0 -128
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools/memory_stats_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools/server_instance_rb.html +0 -132
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/analytics_logger_rb.html +0 -129
- data/doc/rdoc/files/lib/phusion_passenger/app_process_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/classic_rails/application_spawner_rb.html +0 -141
- data/doc/rdoc/files/lib/phusion_passenger/classic_rails/cgi_fixed_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/classic_rails/framework_spawner_rb.html +0 -146
- data/doc/rdoc/files/lib/phusion_passenger/classic_rails/request_handler_rb.html +0 -125
- data/doc/rdoc/files/lib/phusion_passenger/classic_rails_extensions/init_rb.html +0 -132
- data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/debug_logging_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +0 -147
- data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +0 -120
- data/doc/rdoc/files/lib/phusion_passenger/message_client_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/native_support_rb.html +0 -132
- data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/apache_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/binary_compatibility_rb.html +0 -129
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/compiler_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/curl_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/documentation_tools_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/linux_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/operating_system_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/ruby_rb.html +0 -128
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/zlib_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/plugin_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/public_api_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +0 -137
- data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +0 -125
- data/doc/rdoc/files/lib/phusion_passenger/rails3_extensions/init_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +0 -160
- data/doc/rdoc/files/lib/phusion_passenger/standalone/app_finder_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/standalone/command_rb.html +0 -135
- data/doc/rdoc/files/lib/phusion_passenger/standalone/config_file_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/standalone/help_command_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/standalone/main_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/standalone/package_runtime_command_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/standalone/runtime_installer_rb.html +0 -133
- data/doc/rdoc/files/lib/phusion_passenger/standalone/start_command_rb.html +0 -136
- data/doc/rdoc/files/lib/phusion_passenger/standalone/status_command_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/standalone/stop_command_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/standalone/utils_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/standalone/version_command_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/utils/file_system_watcher_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/utils/hosts_file_parser_rb.html +0 -120
- data/doc/rdoc/files/lib/phusion_passenger/utils/rewindable_input_rb.html +0 -100
- data/doc/rdoc/files/lib/phusion_passenger/utils/tmpdir_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/utils/unseekable_socket_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +0 -179
- data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +0 -132
- data/doc/rdoc/fr_class_index.html +0 -138
- data/doc/rdoc/fr_file_index.html +0 -108
- data/doc/rdoc/fr_method_index.html +0 -430
- data/doc/rdoc/index.html +0 -26
- data/doc/rdoc/rdoc-style.css +0 -187
- data/ext/apache2/LICENSE-CNRI.TXT +0 -79
- data/ext/common/Utils/BlockingScalar.h +0 -50
- data/ext/common/Utils/FileHandleGuard.h +0 -81
@@ -22,18 +22,11 @@
|
|
22
22
|
# THE SOFTWARE.
|
23
23
|
|
24
24
|
require 'phusion_passenger/platform_info'
|
25
|
+
require 'phusion_passenger/platform_info/operating_system'
|
25
26
|
|
26
27
|
module PhusionPassenger
|
27
28
|
|
28
29
|
module PlatformInfo
|
29
|
-
def self.cc
|
30
|
-
return ENV['CC'] || "gcc"
|
31
|
-
end
|
32
|
-
|
33
|
-
def self.cxx
|
34
|
-
return ENV['CXX'] || "g++"
|
35
|
-
end
|
36
|
-
|
37
30
|
def self.gnu_make
|
38
31
|
gmake = find_command('gmake')
|
39
32
|
if !gmake
|
@@ -78,6 +71,11 @@ module PlatformInfo
|
|
78
71
|
end
|
79
72
|
memoize :compiler_visibility_flag_generates_warnings?, true
|
80
73
|
|
74
|
+
def self.has_math_library?
|
75
|
+
return try_link(:c, "int main() { return 0; }\n", '-lmath')
|
76
|
+
end
|
77
|
+
memoize :has_math_library?, true
|
78
|
+
|
81
79
|
# Compiler flags that should be used for compiling every C/C++ program,
|
82
80
|
# for portability reasons. These flags should be specified as last
|
83
81
|
# when invoking the compiler.
|
@@ -139,6 +137,10 @@ module PlatformInfo
|
|
139
137
|
# http://groups.google.com/group/phusion-passenger/browse_thread/thread/aad4bd9d8d200561
|
140
138
|
flags << '-DBOOST_SP_USE_PTHREADS'
|
141
139
|
end
|
140
|
+
|
141
|
+
flags << '-DHAS_SFENCE' if supports_sfence_instruction?
|
142
|
+
flags << '-DHAS_LFENCE' if supports_lfence_instruction?
|
143
|
+
|
142
144
|
return flags.compact.join(" ").strip
|
143
145
|
end
|
144
146
|
memoize :portability_cflags, true
|
@@ -148,10 +150,12 @@ module PlatformInfo
|
|
148
150
|
# when invoking the linker.
|
149
151
|
def self.portability_ldflags
|
150
152
|
if RUBY_PLATFORM =~ /solaris/
|
151
|
-
|
153
|
+
result = '-lxnet -lrt -lsocket -lnsl -lpthread'
|
152
154
|
else
|
153
|
-
|
155
|
+
result = '-lpthread'
|
154
156
|
end
|
157
|
+
flags << ' -lmath' if has_math_library?
|
158
|
+
return result
|
155
159
|
end
|
156
160
|
memoize :portability_ldflags
|
157
161
|
|
@@ -174,28 +178,6 @@ module PlatformInfo
|
|
174
178
|
return nil
|
175
179
|
end
|
176
180
|
end
|
177
|
-
|
178
|
-
private
|
179
|
-
def self.try_compile(language, source, flags = nil)
|
180
|
-
if language == :c
|
181
|
-
compiler = cc
|
182
|
-
elsif language == :cxx
|
183
|
-
compiler = cxx
|
184
|
-
else
|
185
|
-
raise ArgumentError,"Unsupported language '#{language}'"
|
186
|
-
end
|
187
|
-
filename = File.join("/tmp/passenger-compile-check-#{Process.pid}.c")
|
188
|
-
File.open(filename, "w") do |f|
|
189
|
-
f.puts(source)
|
190
|
-
end
|
191
|
-
begin
|
192
|
-
return system("(#{compiler} #{flags} -c '#{filename}' -o '#{filename}.o') >/dev/null 2>/dev/null")
|
193
|
-
ensure
|
194
|
-
File.unlink(filename) rescue nil
|
195
|
-
File.unlink("#{filename}.o") rescue nil
|
196
|
-
end
|
197
|
-
end
|
198
|
-
private_class_method :try_compile
|
199
181
|
end
|
200
182
|
|
201
183
|
end # module PhusionPassenger
|
@@ -31,6 +31,11 @@ module PlatformInfo
|
|
31
31
|
if result.empty?
|
32
32
|
return nil
|
33
33
|
else
|
34
|
+
version = `curl-config --vernum`.strip
|
35
|
+
if version >= '070c01'
|
36
|
+
# Curl >= 7.12.1 supports curl_easy_reset()
|
37
|
+
result << " -DHAS_CURL_EASY_RESET"
|
38
|
+
end
|
34
39
|
return result
|
35
40
|
end
|
36
41
|
end
|
@@ -47,7 +52,7 @@ module PlatformInfo
|
|
47
52
|
memoize :curl_libs
|
48
53
|
|
49
54
|
def self.curl_supports_ssl?
|
50
|
-
features = `(curl-config --
|
55
|
+
features = `(curl-config --feature) 2>/dev/null`
|
51
56
|
return features =~ /SSL/
|
52
57
|
end
|
53
58
|
memoize :curl_supports_ssl?
|
@@ -46,6 +46,113 @@ module PlatformInfo
|
|
46
46
|
return "so"
|
47
47
|
end
|
48
48
|
end
|
49
|
+
|
50
|
+
# Returns a list of all CPU architecture names that the current machine CPU
|
51
|
+
# supports. If there are multiple such architectures then the first item in
|
52
|
+
# the result denotes that OS runtime's main/preferred architecture.
|
53
|
+
#
|
54
|
+
# This function normalizes some names. For example x86 is always reported
|
55
|
+
# as "x86" regardless of whether the OS reports it as "i386" or "i686".
|
56
|
+
# x86_64 is always reported as "x86_64" even if the OS reports it as "amd64".
|
57
|
+
#
|
58
|
+
# Please note that even if the CPU supports multiple architectures, the
|
59
|
+
# operating system might not. For example most x86 CPUs nowadays also
|
60
|
+
# support x86_64, but x86_64 Linux systems require various x86 compatibility
|
61
|
+
# libraries to be installed before x86 executables can be run. This function
|
62
|
+
# does not detect whether these compatibility libraries are installed.
|
63
|
+
# The only guarantee that you have is that the OS can run executables in
|
64
|
+
# the architecture denoted by the first item in the result.
|
65
|
+
#
|
66
|
+
# For example, on x86_64 Linux this function can return ["x86_64", "x86"].
|
67
|
+
# This indicates that the CPU supports both of these architectures, and that
|
68
|
+
# the OS's main/preferred architecture is x86_64. Most executables on the
|
69
|
+
# system are thus be x86_64. It is guaranteed that the OS can run x86_64
|
70
|
+
# executables, but not x86 executables per se.
|
71
|
+
#
|
72
|
+
# Another example: on MacOS X this function can return either
|
73
|
+
# ["x86_64", "x86"] or ["x86", "x86_64"]. The former result indicates
|
74
|
+
# OS X 10.6 (Snow Leopard) and beyond because starting from that version
|
75
|
+
# everything is 64-bit by default. The latter result indicates an OS X
|
76
|
+
# version older than 10.6.
|
77
|
+
def self.cpu_architectures
|
78
|
+
if os_name == "macosx"
|
79
|
+
arch = `uname -p`.strip
|
80
|
+
if arch == "i386"
|
81
|
+
# Macs have been x86 since around 2007. I think all of them come with
|
82
|
+
# a recent enough Intel CPU that supports both x86 and x86_64, and I
|
83
|
+
# think every OS X version has both the x86 and x86_64 runtime installed.
|
84
|
+
major, minor, *rest = `sw_vers -productVersion`.strip.split(".")
|
85
|
+
major = major.to_i
|
86
|
+
minor = minor.to_i
|
87
|
+
if major >= 10 || (major == 10 && minor >= 6)
|
88
|
+
# Since Snow Leopard x86_64 is the default.
|
89
|
+
["x86_64", "x86"]
|
90
|
+
else
|
91
|
+
# Before Snow Leopard x86 was the default.
|
92
|
+
["x86", "x86_64"]
|
93
|
+
end
|
94
|
+
else
|
95
|
+
arch
|
96
|
+
end
|
97
|
+
else
|
98
|
+
arch = `uname -p`.strip
|
99
|
+
# On some systems 'uname -p' returns something like
|
100
|
+
# 'Intel(R) Pentium(R) M processor 1400MHz'.
|
101
|
+
if arch == "unknown" || arch =~ / /
|
102
|
+
arch = `uname -m`.strip
|
103
|
+
end
|
104
|
+
if arch =~ /^i.86$/
|
105
|
+
arch = "x86"
|
106
|
+
elsif arch == "amd64"
|
107
|
+
arch = "x86_64"
|
108
|
+
end
|
109
|
+
|
110
|
+
if arch == "x86"
|
111
|
+
# Most x86 operating systems nowadays are probably running on
|
112
|
+
# a CPU that supports both x86 and x86_64, but we're not gonna
|
113
|
+
# go through the trouble of checking that. The main architecture
|
114
|
+
# is what we usually care about.
|
115
|
+
["x86"]
|
116
|
+
elsif arch == "x86_64"
|
117
|
+
# I don't think there's a single x86_64 CPU out there
|
118
|
+
# that doesn't support x86 as well.
|
119
|
+
["x86_64", "x86"]
|
120
|
+
else
|
121
|
+
[arch]
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
memoize :cpu_architectures, true
|
126
|
+
|
127
|
+
# Returns whether the OS's main CPU architecture supports the
|
128
|
+
# x86/x86_64 sfence instruction.
|
129
|
+
def self.supports_sfence_instruction?
|
130
|
+
arch = cpu_architectures[0]
|
131
|
+
return arch == "x86_64" || (arch == "x86" &&
|
132
|
+
try_compile_and_run(:c, %Q{
|
133
|
+
int
|
134
|
+
main() {
|
135
|
+
__asm__ __volatile__ ("sfence" ::: "memory");
|
136
|
+
return 0;
|
137
|
+
}
|
138
|
+
}))
|
139
|
+
end
|
140
|
+
memoize :supports_sfence_instruction?, true
|
141
|
+
|
142
|
+
# Returns whether the OS's main CPU architecture supports the
|
143
|
+
# x86/x86_64 lfence instruction.
|
144
|
+
def self.supports_lfence_instruction?
|
145
|
+
arch = cpu_architectures[0]
|
146
|
+
return arch == "x86_64" || (arch == "x86" &&
|
147
|
+
try_compile_and_run(:c, %Q{
|
148
|
+
int
|
149
|
+
main() {
|
150
|
+
__asm__ __volatile__ ("lfence" ::: "memory");
|
151
|
+
return 0;
|
152
|
+
}
|
153
|
+
}))
|
154
|
+
end
|
155
|
+
memoize :supports_lfence_instruction?, true
|
49
156
|
end
|
50
157
|
|
51
158
|
end # module PhusionPassenger
|
@@ -41,11 +41,11 @@ class << self
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
def install_framework_extensions!
|
44
|
+
def install_framework_extensions!(*args)
|
45
45
|
require 'rails/version' if defined?(::Rails) && !defined?(::Rails::VERSION)
|
46
46
|
if defined?(::Rails) && ::Rails::VERSION::MAJOR == 3
|
47
47
|
require 'phusion_passenger/rails3_extensions/init'
|
48
|
-
Rails3Extensions.init!(_spawn_options)
|
48
|
+
Rails3Extensions.init!(_spawn_options, *args)
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
@@ -55,7 +55,7 @@ class AnalyticsLogging < ActiveSupport::LogSubscriber
|
|
55
55
|
end
|
56
56
|
|
57
57
|
if defined?(ActionDispatch::ShowExceptions)
|
58
|
-
Rails
|
58
|
+
Rails.application.middleware.insert_after(
|
59
59
|
ActionDispatch::ShowExceptions,
|
60
60
|
ExceptionLogger, analytics_logger)
|
61
61
|
end
|
@@ -78,7 +78,10 @@ class AnalyticsLogging < ActiveSupport::LogSubscriber
|
|
78
78
|
|
79
79
|
def process_action(event)
|
80
80
|
log = Thread.current[PASSENGER_ANALYTICS_WEB_LOG]
|
81
|
-
|
81
|
+
if log
|
82
|
+
view_runtime = event.payload[:view_runtime]
|
83
|
+
log.message("View rendering time: #{(view_runtime * 1000).to_i}") if view_runtime
|
84
|
+
end
|
82
85
|
end
|
83
86
|
|
84
87
|
def sql(event)
|
@@ -171,6 +171,9 @@ private
|
|
171
171
|
end
|
172
172
|
|
173
173
|
def write_nginx_config_file
|
174
|
+
require 'phusion_passenger/platform_info/ruby'
|
175
|
+
ensure_directory_exists(@temp_dir)
|
176
|
+
|
174
177
|
File.open(@config_filename, 'w') do |f|
|
175
178
|
f.chmod(0644)
|
176
179
|
template_filename = File.join(TEMPLATES_DIR, "standalone", "config.erb")
|
@@ -195,7 +198,7 @@ private
|
|
195
198
|
else
|
196
199
|
nginx_bin = "#{nginx_dir}/sbin/nginx"
|
197
200
|
end
|
198
|
-
return "#{nginx_bin} -c '#{@config_filename}'"
|
201
|
+
return "#{nginx_bin} -c '#{@config_filename}' -p '#{@temp_dir}/'"
|
199
202
|
end
|
200
203
|
|
201
204
|
# Returns the port on which to ping Nginx.
|
@@ -218,7 +221,8 @@ private
|
|
218
221
|
|
219
222
|
def create_nginx_controller(extra_options = {})
|
220
223
|
require_daemon_controller
|
221
|
-
@
|
224
|
+
@temp_dir = "/tmp/passenger-standalone.#{$$}"
|
225
|
+
@config_filename = "#{@temp_dir}/config"
|
222
226
|
opts = {
|
223
227
|
:identifier => 'Nginx',
|
224
228
|
:before_start => method(:write_nginx_config_file),
|
@@ -33,8 +33,8 @@ class PackageRuntimeCommand < Command
|
|
33
33
|
def run
|
34
34
|
destdir = File.expand_path("passenger-standalone")
|
35
35
|
description =
|
36
|
-
"Package the Phusion Passenger Standalone runtime into the specified directory
|
37
|
-
"DIRECTORY is not given then #{destdir} will be used."
|
36
|
+
"Package the Phusion Passenger Standalone runtime into the specified directory.\n" <<
|
37
|
+
"If DIRECTORY is not given then #{destdir} will be used."
|
38
38
|
parse_options!("package [directory]", description) do |opts|
|
39
39
|
opts.on("--nginx-version VERSION", String,
|
40
40
|
wrap_desc("Nginx version to use as core (default: #{@options[:nginx_version]})")) do |value|
|
@@ -420,7 +420,7 @@ private
|
|
420
420
|
# Then compile it.
|
421
421
|
yield(0, 1, 2, "Preparing Phusion Passenger...")
|
422
422
|
Dir.chdir(@support_dir) do
|
423
|
-
run_rake_task!("nginx
|
423
|
+
run_rake_task!("nginx RELEASE=yes") do |progress, total|
|
424
424
|
yield(progress, total, 2, "Compiling Phusion Passenger...")
|
425
425
|
end
|
426
426
|
end
|
@@ -429,7 +429,16 @@ private
|
|
429
429
|
def install_nginx_from_source(source_dir)
|
430
430
|
require 'phusion_passenger/platform_info/compiler'
|
431
431
|
Dir.chdir(source_dir) do
|
432
|
-
|
432
|
+
# RPM thinks it's being smart by scanning binaries for
|
433
|
+
# paths and refusing to create package if it detects any
|
434
|
+
# hardcoded thats that point to /usr or other important
|
435
|
+
# locations. For Phusion Passenger Standalone we do not
|
436
|
+
# care at all what the Nginx configured prefix is because
|
437
|
+
# we pass it its resource locations during runtime, so
|
438
|
+
# work around the problem by configure Nginx with prefix
|
439
|
+
# /tmp.
|
440
|
+
command = "sh ./configure --prefix=/tmp " <<
|
441
|
+
"--without-pcre " <<
|
433
442
|
"--without-http_rewrite_module " <<
|
434
443
|
"--without-http_fastcgi_module " <<
|
435
444
|
"'--add-module=#{@support_dir}/ext/nginx'"
|
@@ -455,9 +464,12 @@ private
|
|
455
464
|
exit 1
|
456
465
|
end
|
457
466
|
|
458
|
-
|
459
|
-
|
460
|
-
|
467
|
+
yield(1, 1, 'Copying files...')
|
468
|
+
if !system("mkdir -p '#{@nginx_dir}/sbin'") ||
|
469
|
+
!system("cp -pR objs/nginx '#{@nginx_dir}/sbin/'")
|
470
|
+
STDERR.puts
|
471
|
+
STDERR.puts "*** ERROR: unable to copy Nginx binaries."
|
472
|
+
exit 1
|
461
473
|
end
|
462
474
|
end
|
463
475
|
end
|
@@ -98,8 +98,8 @@ class StartCommand < Command
|
|
98
98
|
stop_threads
|
99
99
|
end
|
100
100
|
ensure
|
101
|
-
if @
|
102
|
-
|
101
|
+
if @temp_dir
|
102
|
+
FileUtils.rm_rf(@temp_dir) rescue nil
|
103
103
|
end
|
104
104
|
@plugin.call_hook(:cleanup)
|
105
105
|
end
|
@@ -157,13 +157,17 @@ private
|
|
157
157
|
wrap_desc("The spawn method to use (default: #{@options[:spawn_method]})")) do |value|
|
158
158
|
@options[:spawn_method] = value
|
159
159
|
end
|
160
|
-
opts.on("--
|
161
|
-
wrap_desc("
|
162
|
-
|
160
|
+
opts.on("--union-station-gateway HOST:PORT", String,
|
161
|
+
wrap_desc("Specify Union Station Gateway host and port")) do |value|
|
162
|
+
host, port = value.split(":", 2)
|
163
|
+
port = port.to_i
|
164
|
+
port = 443 if port == 0
|
165
|
+
@options[:union_station_gateway_address] = host
|
166
|
+
@options[:union_station_gateway_port] = port.to_i
|
163
167
|
end
|
164
|
-
opts.on("--
|
165
|
-
wrap_desc("
|
166
|
-
@options[:
|
168
|
+
opts.on("--union-station-key KEY", String,
|
169
|
+
wrap_desc("Specify Union Station key")) do |value|
|
170
|
+
@options[:union_station_key] = value
|
167
171
|
end
|
168
172
|
|
169
173
|
opts.separator ""
|
@@ -320,10 +324,6 @@ private
|
|
320
324
|
end
|
321
325
|
end
|
322
326
|
end
|
323
|
-
|
324
|
-
nginx_version = @options[:nginx_version]
|
325
|
-
@temp_dir = "#{home}/#{LOCAL_DIR}/standalone/#{runtime_version_string}/nginx-#{nginx_version}/temp"
|
326
|
-
ensure_directory_exists(@temp_dir)
|
327
327
|
end
|
328
328
|
|
329
329
|
def ensure_directory_exists(dir)
|
@@ -58,9 +58,9 @@ class StopCommand < Command
|
|
58
58
|
STDERR.puts "If you know that Phusion Passenger Standalone *is* running then one of these"
|
59
59
|
STDERR.puts "might be the cause of this error:"
|
60
60
|
STDERR.puts
|
61
|
-
STDERR.puts " * The Phusion Passenger Standalone instance that you want to stop isn't running
|
62
|
-
STDERR.puts " port #{@options[:port]}, but on another port. If this is the case then you
|
63
|
-
STDERR.puts " specify the right port with --port."
|
61
|
+
STDERR.puts " * The Phusion Passenger Standalone instance that you want to stop isn't running"
|
62
|
+
STDERR.puts " on port #{@options[:port]}, but on another port. If this is the case then you"
|
63
|
+
STDERR.puts " should specify the right port with --port."
|
64
64
|
STDERR.puts " If the instance is listening on a Unix socket file instead of a TCP port,"
|
65
65
|
STDERR.puts " then please specify the PID file's filename with --pid-file."
|
66
66
|
STDERR.puts " * The instance that you want to stop has stored its PID file in a non-standard"
|
@@ -33,8 +33,12 @@ private
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def runtime_version_string
|
36
|
-
|
37
|
-
|
36
|
+
if PhusionPassenger.natively_packaged?
|
37
|
+
return "natively-packaged"
|
38
|
+
else
|
39
|
+
require_platform_info_binary_compatibility
|
40
|
+
return "#{VERSION_STRING}-#{PlatformInfo.passenger_binary_compatibility_id}"
|
41
|
+
end
|
38
42
|
end
|
39
43
|
end
|
40
44
|
|
@@ -1,3 +1,29 @@
|
|
1
|
+
#####################################################
|
2
|
+
#
|
3
|
+
# !!!!!!! WARNING, READ THIS !!!!!!!
|
4
|
+
#
|
5
|
+
#
|
6
|
+
# The fact that Phusion Passenger uses Nginx
|
7
|
+
# internally is considered to be an implementation
|
8
|
+
# detail that the user should not bother with.
|
9
|
+
# We may arbitrarily replace the Nginx core with
|
10
|
+
# something else in the future.
|
11
|
+
#
|
12
|
+
# As such, we do not support any kind of custom
|
13
|
+
# Nginx configuration in Phusion Passenger Standalone.
|
14
|
+
# If you need additional Nginx modules or if you need
|
15
|
+
# special Nginx configuration or whatever then you
|
16
|
+
# should use Phusion Passenger for Nginx, NOT
|
17
|
+
# Phusion Passenger Standalone.
|
18
|
+
#
|
19
|
+
# You are strongly discouraged from editing this file
|
20
|
+
# and treating Phusion Passenger Standalone as an easy
|
21
|
+
# way to start Nginx. We will not provide any support
|
22
|
+
# for this.
|
23
|
+
#
|
24
|
+
#####################################################
|
25
|
+
|
26
|
+
|
1
27
|
master_process on;
|
2
28
|
worker_processes 1;
|
3
29
|
daemon on;
|
@@ -10,9 +36,7 @@ events {
|
|
10
36
|
}
|
11
37
|
|
12
38
|
http {
|
13
|
-
include '<%=
|
14
|
-
client_body_temp_path '<%= @temp_dir %>/client';
|
15
|
-
proxy_temp_path '<%= @temp_dir %>/proxy';
|
39
|
+
include '<%= PhusionPassenger::RESOURCES_DIR %>/mime.types';
|
16
40
|
passenger_ruby <%= PlatformInfo.ruby_command %>;
|
17
41
|
passenger_root '<%= passenger_root %>';
|
18
42
|
passenger_abort_on_startup_error on;
|
@@ -21,6 +45,12 @@ http {
|
|
21
45
|
passenger_min_instances <%= @options[:min_instances] %>;
|
22
46
|
<% if @options[:user] %>passenger_default_user <%= @options[:user] %>;<% end %>
|
23
47
|
|
48
|
+
<% if @options[:union_station_gateway_address] %>
|
49
|
+
union_station_gateway_address <%= @options[:union_station_gateway_address] %>;
|
50
|
+
union_station_gateway_port <%= @options[:union_station_gateway_port] %>;
|
51
|
+
union_station_gateway_cert -;
|
52
|
+
<% end %>
|
53
|
+
|
24
54
|
default_type application/octet-stream;
|
25
55
|
client_max_body_size 50m;
|
26
56
|
access_log off;
|
@@ -55,8 +85,10 @@ http {
|
|
55
85
|
rails_env <%= app[:env] %>;
|
56
86
|
passenger_spawn_method <%= app[:spawn_method] %>;
|
57
87
|
<% if app[:min_instances] %>passenger_min_instances <%= app[:min_instances] %>;<% end %>
|
58
|
-
<% if app[:
|
59
|
-
|
88
|
+
<% if app[:union_station_key] %>
|
89
|
+
passenger_analytics on;
|
90
|
+
union_station_key <%= app[:union_station_key] %>;
|
91
|
+
<% end %>
|
60
92
|
}
|
61
93
|
<% end %>
|
62
94
|
}
|