passenger 4.0.20 → 4.0.21

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.

Files changed (496) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/.gitignore +1 -0
  5. data/.travis.yml +1 -1
  6. data/NEWS +15 -0
  7. data/README.md +5 -3
  8. data/Rakefile +1 -0
  9. data/bin/passenger-config +1 -5
  10. data/bin/passenger-install-apache2-module +53 -5
  11. data/bin/passenger-install-nginx-module +19 -6
  12. data/bin/passenger-memory-stats +3 -3
  13. data/build/agents.rb +11 -8
  14. data/build/apache2.rb +9 -5
  15. data/build/basics.rb +15 -21
  16. data/build/common_library.rb +16 -6
  17. data/build/cplusplus_support.rb +5 -5
  18. data/build/cxx_tests.rb +3 -3
  19. data/build/documentation.rb +1 -1
  20. data/build/misc.rb +4 -37
  21. data/build/node_tests.rb +29 -0
  22. data/build/oxt_tests.rb +1 -1
  23. data/build/packaging.rb +29 -10
  24. data/build/preprocessor.rb +2 -1
  25. data/build/test_basics.rb +15 -6
  26. data/debian.template/locations.ini.template +1 -0
  27. data/debian.template/passenger.install.template +1 -0
  28. data/dev/copy_boost_headers.rb +7 -3
  29. data/dev/run_travis.sh +32 -16
  30. data/doc/Users guide Apache.idmap.txt +22 -34
  31. data/doc/Users guide Apache.txt +20 -234
  32. data/doc/Users guide Nginx.idmap.txt +84 -66
  33. data/doc/Users guide Nginx.txt +50 -1
  34. data/doc/Users guide Standalone.idmap.txt +74 -0
  35. data/doc/Users guide Standalone.txt +22 -9
  36. data/doc/Users guide.txt +51 -0
  37. data/doc/users_guide_snippets/environment_variables.txt +0 -3
  38. data/doc/users_guide_snippets/installation.txt +337 -380
  39. data/doc/users_guide_snippets/installation/run_installer.txt +58 -0
  40. data/doc/users_guide_snippets/installation/verify_running_epilogue.txt +6 -0
  41. data/doc/users_guide_snippets/support_information.txt +2 -9
  42. data/doc/users_guide_snippets/troubleshooting/default.txt +112 -0
  43. data/doc/users_guide_snippets/troubleshooting/rails.txt +56 -0
  44. data/doc/users_guide_snippets/where_to_get_support.txt +9 -0
  45. data/ext/apache2/Bucket.h +1 -1
  46. data/ext/apache2/Configuration.hpp +0 -44
  47. data/ext/apache2/CreateDirConfig.cpp +1 -1
  48. data/ext/apache2/CreateDirConfig.cpp.erb +1 -1
  49. data/ext/apache2/Hooks.cpp +28 -21
  50. data/ext/apache2/MergeDirConfig.cpp +1 -0
  51. data/ext/apache2/MergeDirConfig.cpp.erb +1 -1
  52. data/ext/apache2/SetHeaders.cpp +73 -0
  53. data/ext/apache2/SetHeaders.cpp.erb +88 -0
  54. data/ext/boost/algorithm/string/detail/find_format.hpp +5 -5
  55. data/ext/boost/algorithm/string/detail/find_format_all.hpp +5 -5
  56. data/ext/boost/algorithm/string/detail/finder.hpp +1 -1
  57. data/ext/boost/algorithm/string/formatter.hpp +2 -2
  58. data/ext/boost/assert.hpp +6 -1
  59. data/ext/boost/atomic.hpp +18 -0
  60. data/ext/boost/atomic/atomic.hpp +241 -0
  61. data/ext/boost/atomic/detail/base.hpp +585 -0
  62. data/ext/boost/atomic/detail/cas32strong.hpp +885 -0
  63. data/ext/boost/atomic/detail/cas32weak.hpp +947 -0
  64. data/ext/boost/atomic/detail/cas64strong.hpp +443 -0
  65. data/ext/boost/atomic/detail/config.hpp +54 -0
  66. data/ext/boost/atomic/detail/gcc-alpha.hpp +368 -0
  67. data/ext/boost/atomic/detail/gcc-armv6plus.hpp +252 -0
  68. data/ext/boost/atomic/detail/gcc-cas.hpp +157 -0
  69. data/ext/boost/atomic/detail/gcc-ppc.hpp +2850 -0
  70. data/ext/boost/atomic/detail/gcc-sparcv9.hpp +1259 -0
  71. data/ext/boost/atomic/detail/gcc-x86.hpp +1766 -0
  72. data/ext/boost/atomic/detail/generic-cas.hpp +206 -0
  73. data/ext/boost/atomic/detail/interlocked.hpp +200 -0
  74. data/ext/boost/atomic/detail/linux-arm.hpp +189 -0
  75. data/ext/boost/atomic/detail/lockpool.hpp +97 -0
  76. data/ext/boost/atomic/detail/platform.hpp +62 -0
  77. data/ext/boost/atomic/detail/type-classification.hpp +45 -0
  78. data/ext/boost/chrono/config.hpp +8 -3
  79. data/ext/boost/chrono/duration.hpp +9 -10
  80. data/ext/boost/chrono/system_clocks.hpp +1 -1
  81. data/ext/boost/chrono/time_point.hpp +4 -3
  82. data/ext/boost/config/auto_link.hpp +53 -52
  83. data/ext/boost/config/compiler/borland.hpp +1 -0
  84. data/ext/boost/config/compiler/clang.hpp +24 -1
  85. data/ext/boost/config/compiler/codegear.hpp +1 -0
  86. data/ext/boost/config/compiler/common_edg.hpp +1 -0
  87. data/ext/boost/config/compiler/cray.hpp +1 -0
  88. data/ext/boost/config/compiler/digitalmars.hpp +1 -0
  89. data/ext/boost/config/compiler/gcc.hpp +29 -3
  90. data/ext/boost/config/compiler/gcc_xml.hpp +2 -1
  91. data/ext/boost/config/compiler/hp_acc.hpp +1 -0
  92. data/ext/boost/config/compiler/intel.hpp +1 -1
  93. data/ext/boost/config/compiler/metrowerks.hpp +1 -0
  94. data/ext/boost/config/compiler/mpw.hpp +1 -0
  95. data/ext/boost/config/compiler/pathscale.hpp +1 -0
  96. data/ext/boost/config/compiler/pgi.hpp +1 -0
  97. data/ext/boost/config/compiler/sunpro_cc.hpp +1 -0
  98. data/ext/boost/config/compiler/vacpp.hpp +3 -2
  99. data/ext/boost/config/compiler/visualc.hpp +25 -11
  100. data/ext/boost/config/platform/vxworks.hpp +353 -15
  101. data/ext/boost/config/select_compiler_config.hpp +4 -4
  102. data/ext/boost/config/stdlib/dinkumware.hpp +10 -3
  103. data/ext/boost/config/stdlib/libstdcpp3.hpp +2 -1
  104. data/ext/boost/config/suffix.hpp +45 -19
  105. data/ext/boost/date_time/format_date_parser.hpp +1 -11
  106. data/ext/boost/date_time/strings_from_facet.hpp +5 -3
  107. data/ext/boost/detail/atomic_redef_macros.hpp +19 -0
  108. data/ext/boost/detail/atomic_undef_macros.hpp +39 -0
  109. data/ext/boost/detail/endian.hpp +52 -4
  110. data/ext/boost/detail/scoped_enum_emulation.hpp +10 -10
  111. data/ext/boost/detail/select_type.hpp +36 -0
  112. data/ext/boost/exception/current_exception_cast.hpp +1 -1
  113. data/ext/boost/exception/detail/error_info_impl.hpp +3 -5
  114. data/ext/boost/exception/detail/exception_ptr.hpp +3 -3
  115. data/ext/boost/exception/detail/is_output_streamable.hpp +1 -1
  116. data/ext/boost/exception/detail/object_hex_dump.hpp +1 -1
  117. data/ext/boost/exception/detail/type_info.hpp +1 -1
  118. data/ext/boost/exception/diagnostic_information.hpp +15 -14
  119. data/ext/boost/exception/exception.hpp +1 -1
  120. data/ext/boost/exception/get_error_info.hpp +1 -1
  121. data/ext/boost/exception/info.hpp +12 -13
  122. data/ext/boost/exception/to_string.hpp +6 -1
  123. data/ext/boost/exception/to_string_stub.hpp +9 -1
  124. data/ext/boost/foreach.hpp +5 -5
  125. data/ext/boost/function/function_template.hpp +6 -6
  126. data/ext/boost/functional/hash/detail/float_functions.hpp +90 -0
  127. data/ext/boost/functional/hash/detail/hash_float.hpp +11 -2
  128. data/ext/boost/functional/hash/extensions.hpp +14 -2
  129. data/ext/boost/functional/hash/hash.hpp +26 -5
  130. data/ext/boost/get_pointer.hpp +17 -2
  131. data/ext/boost/integer_traits.hpp +1 -1
  132. data/ext/boost/lexical_cast.hpp +615 -395
  133. data/ext/boost/libs/atomic/lockpool.cpp +24 -0
  134. data/ext/boost/libs/system/src/error_code.cpp +25 -18
  135. data/ext/boost/libs/thread/src/future.cpp +7 -5
  136. data/ext/boost/libs/thread/src/pthread/once.cpp +9 -3
  137. data/ext/boost/libs/thread/src/pthread/once_atomic.cpp +90 -0
  138. data/ext/boost/libs/thread/src/pthread/thread.cpp +129 -95
  139. data/ext/boost/libs/thread/src/pthread/timeconv.inl +20 -1
  140. data/ext/boost/limits.hpp +1 -1
  141. data/ext/boost/math/policies/policy.hpp +10 -0
  142. data/ext/boost/math/special_functions/detail/round_fwd.hpp +17 -4
  143. data/ext/boost/math/special_functions/fpclassify.hpp +114 -45
  144. data/ext/boost/math/special_functions/math_fwd.hpp +195 -83
  145. data/ext/boost/math/special_functions/sign.hpp +13 -8
  146. data/ext/boost/math/tools/config.hpp +38 -16
  147. data/ext/boost/move/algorithm.hpp +275 -0
  148. data/ext/boost/move/core.hpp +332 -0
  149. data/ext/boost/move/detail/config_begin.hpp +23 -0
  150. data/ext/boost/move/detail/config_end.hpp +20 -0
  151. data/ext/boost/move/detail/meta_utils.hpp +158 -0
  152. data/ext/boost/move/iterator.hpp +298 -0
  153. data/ext/boost/move/move.hpp +10 -1256
  154. data/ext/boost/move/traits.hpp +142 -0
  155. data/ext/boost/move/utility.hpp +194 -0
  156. data/ext/boost/mpl/assert.hpp +72 -4
  157. data/ext/boost/noncopyable.hpp +15 -3
  158. data/ext/boost/pointer_to_other.hpp +55 -0
  159. data/ext/boost/range/concepts.hpp +4 -4
  160. data/ext/boost/range/detail/extract_optional_type.hpp +1 -1
  161. data/ext/boost/range/empty.hpp +1 -1
  162. data/ext/boost/range/iterator_range_core.hpp +4 -1
  163. data/ext/boost/range/iterator_range_io.hpp +2 -2
  164. data/ext/boost/ratio/config.hpp +6 -0
  165. data/ext/boost/ratio/detail/overflow_helpers.hpp +2 -2
  166. data/ext/boost/smart_ptr/allocate_shared_array.hpp +250 -0
  167. data/ext/boost/smart_ptr/detail/allocate_array_helper.hpp +169 -0
  168. data/ext/boost/smart_ptr/detail/array_deleter.hpp +124 -0
  169. data/ext/boost/smart_ptr/detail/array_traits.hpp +53 -0
  170. data/ext/boost/smart_ptr/detail/array_utility.hpp +178 -0
  171. data/ext/boost/smart_ptr/detail/make_array_helper.hpp +157 -0
  172. data/ext/boost/smart_ptr/detail/operator_bool.hpp +16 -9
  173. data/ext/boost/smart_ptr/detail/shared_count.hpp +78 -7
  174. data/ext/boost/smart_ptr/detail/sp_convertible.hpp +15 -0
  175. data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +12 -6
  176. data/ext/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +1 -0
  177. data/ext/boost/smart_ptr/detail/sp_counted_base_aix.hpp +1 -0
  178. data/ext/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +1 -0
  179. data/ext/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +1 -0
  180. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +1 -0
  181. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +1 -0
  182. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +1 -0
  183. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +1 -0
  184. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +1 -0
  185. data/ext/boost/smart_ptr/detail/sp_counted_base_nt.hpp +1 -0
  186. data/ext/boost/smart_ptr/detail/sp_counted_base_pt.hpp +1 -0
  187. data/ext/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +162 -0
  188. data/ext/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +1 -0
  189. data/ext/boost/smart_ptr/detail/sp_counted_base_spin.hpp +1 -0
  190. data/ext/boost/smart_ptr/detail/sp_counted_base_sync.hpp +1 -0
  191. data/ext/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +1 -0
  192. data/ext/boost/smart_ptr/detail/sp_counted_impl.hpp +15 -0
  193. data/ext/boost/smart_ptr/detail/sp_forward.hpp +39 -0
  194. data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +19 -3
  195. data/ext/boost/smart_ptr/detail/sp_if_array.hpp +31 -0
  196. data/ext/boost/smart_ptr/detail/sp_nullptr_t.hpp +45 -0
  197. data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +5 -12
  198. data/ext/boost/smart_ptr/enable_shared_from_this.hpp +4 -4
  199. data/ext/boost/smart_ptr/make_shared.hpp +5 -1060
  200. data/ext/boost/smart_ptr/make_shared_array.hpp +247 -0
  201. data/ext/boost/smart_ptr/make_shared_object.hpp +1128 -0
  202. data/ext/boost/smart_ptr/scoped_array.hpp +32 -7
  203. data/ext/boost/smart_ptr/scoped_ptr.hpp +31 -5
  204. data/ext/boost/smart_ptr/shared_array.hpp +135 -20
  205. data/ext/boost/smart_ptr/shared_ptr.hpp +444 -126
  206. data/ext/boost/smart_ptr/weak_ptr.hpp +39 -28
  207. data/ext/boost/static_assert.hpp +74 -17
  208. data/ext/boost/system/error_code.hpp +76 -68
  209. data/ext/boost/system/system_error.hpp +5 -1
  210. data/ext/boost/thread/barrier.hpp +6 -2
  211. data/ext/boost/thread/completion_latch.hpp +233 -0
  212. data/ext/boost/thread/condition.hpp +6 -1
  213. data/ext/boost/thread/detail/async_func.hpp +571 -0
  214. data/ext/boost/thread/detail/config.hpp +248 -40
  215. data/ext/boost/thread/detail/counter.hpp +93 -0
  216. data/ext/boost/thread/detail/delete.hpp +12 -0
  217. data/ext/boost/thread/detail/invoke.hpp +1351 -0
  218. data/ext/boost/thread/detail/is_convertible.hpp +48 -0
  219. data/ext/boost/thread/detail/lockable_wrapper.hpp +45 -0
  220. data/ext/boost/thread/detail/log.hpp +83 -0
  221. data/ext/boost/thread/detail/make_tuple_indices.hpp +224 -0
  222. data/ext/boost/thread/detail/move.hpp +32 -16
  223. data/ext/boost/thread/detail/thread.hpp +236 -41
  224. data/ext/boost/thread/detail/thread_group.hpp +55 -9
  225. data/ext/boost/thread/detail/thread_interruption.hpp +4 -1
  226. data/ext/boost/thread/exceptions.hpp +2 -0
  227. data/ext/boost/thread/externally_locked.hpp +351 -0
  228. data/ext/boost/thread/externally_locked_stream.hpp +170 -0
  229. data/ext/boost/thread/future.hpp +2517 -455
  230. data/ext/boost/thread/future_error_code.hpp +61 -0
  231. data/ext/boost/thread/is_locked_by_this_thread.hpp +39 -0
  232. data/ext/boost/thread/latch.hpp +142 -0
  233. data/ext/boost/thread/lock_algorithms.hpp +468 -0
  234. data/ext/boost/thread/lock_concepts.hpp +197 -0
  235. data/ext/boost/thread/lock_factories.hpp +78 -0
  236. data/ext/boost/thread/lock_guard.hpp +88 -0
  237. data/ext/boost/thread/lock_options.hpp +31 -0
  238. data/ext/boost/thread/lock_traits.hpp +45 -0
  239. data/ext/boost/thread/lock_types.hpp +1226 -0
  240. data/ext/boost/thread/lockable_adapter.hpp +226 -0
  241. data/ext/boost/thread/lockable_concepts.hpp +157 -0
  242. data/ext/boost/thread/lockable_traits.hpp +207 -0
  243. data/ext/boost/thread/locks.hpp +5 -1816
  244. data/ext/boost/thread/mutex.hpp +33 -1
  245. data/ext/boost/thread/null_mutex.hpp +243 -0
  246. data/ext/boost/thread/once.hpp +10 -1
  247. data/ext/boost/thread/poly_lockable.hpp +68 -0
  248. data/ext/boost/thread/poly_lockable_adapter.hpp +89 -0
  249. data/ext/boost/thread/poly_shared_lockable.hpp +135 -0
  250. data/ext/boost/thread/poly_shared_lockable_adapter.hpp +170 -0
  251. data/ext/boost/thread/pthread/condition_variable.hpp +74 -26
  252. data/ext/boost/thread/pthread/condition_variable_fwd.hpp +54 -27
  253. data/ext/boost/thread/pthread/mutex.hpp +101 -38
  254. data/ext/boost/thread/pthread/once.hpp +459 -44
  255. data/ext/boost/thread/pthread/once_atomic.hpp +313 -0
  256. data/ext/boost/thread/pthread/recursive_mutex.hpp +19 -10
  257. data/ext/boost/thread/pthread/shared_mutex.hpp +226 -61
  258. data/ext/boost/thread/pthread/shared_mutex_assert.hpp +724 -0
  259. data/ext/boost/thread/pthread/thread_data.hpp +53 -50
  260. data/ext/boost/thread/pthread/timespec.hpp +96 -12
  261. data/ext/boost/thread/recursive_mutex.hpp +44 -1
  262. data/ext/boost/thread/reverse_lock.hpp +3 -2
  263. data/ext/boost/thread/scoped_thread.hpp +285 -0
  264. data/ext/boost/thread/shared_lock_guard.hpp +2 -1
  265. data/ext/boost/thread/shared_mutex.hpp +23 -0
  266. data/ext/boost/thread/strict_lock.hpp +235 -0
  267. data/ext/boost/thread/sync_bounded_queue.hpp +594 -0
  268. data/ext/boost/thread/sync_queue.hpp +516 -0
  269. data/ext/boost/thread/synchronized_value.hpp +1001 -0
  270. data/ext/boost/thread/testable_mutex.hpp +148 -0
  271. data/ext/boost/thread/thread.hpp +1 -13
  272. data/ext/boost/thread/thread_functors.hpp +57 -0
  273. data/ext/boost/thread/thread_guard.hpp +46 -0
  274. data/ext/boost/thread/thread_only.hpp +29 -0
  275. data/ext/boost/thread/v2/shared_mutex.hpp +1062 -0
  276. data/ext/boost/thread/v2/thread.hpp +37 -10
  277. data/ext/boost/thread/xtime.hpp +2 -1
  278. data/ext/boost/token_functions.hpp +16 -16
  279. data/ext/boost/type_traits/add_lvalue_reference.hpp +26 -0
  280. data/ext/boost/type_traits/add_reference.hpp +1 -1
  281. data/ext/boost/type_traits/add_rvalue_reference.hpp +4 -4
  282. data/ext/boost/type_traits/aligned_storage.hpp +13 -0
  283. data/ext/boost/type_traits/common_type.hpp +11 -12
  284. data/ext/boost/type_traits/config.hpp +1 -1
  285. data/ext/boost/type_traits/detail/common_type_imp.hpp +1 -1
  286. data/ext/boost/type_traits/detail/has_binary_operator.hpp +1 -1
  287. data/ext/boost/type_traits/detail/is_function_ptr_tester.hpp +1 -1
  288. data/ext/boost/type_traits/has_left_shift.hpp +49 -0
  289. data/ext/boost/type_traits/has_right_shift.hpp +49 -0
  290. data/ext/boost/type_traits/has_trivial_move_assign.hpp +57 -0
  291. data/ext/boost/type_traits/has_trivial_move_constructor.hpp +57 -0
  292. data/ext/boost/type_traits/intrinsics.hpp +18 -2
  293. data/ext/boost/type_traits/is_abstract.hpp +1 -1
  294. data/ext/boost/type_traits/is_array.hpp +1 -1
  295. data/ext/boost/type_traits/is_const.hpp +1 -1
  296. data/ext/boost/type_traits/is_convertible.hpp +78 -17
  297. data/ext/boost/type_traits/is_function.hpp +6 -1
  298. data/ext/boost/type_traits/is_integral.hpp +6 -1
  299. data/ext/boost/type_traits/is_nothrow_move_assignable.hpp +84 -0
  300. data/ext/boost/type_traits/is_nothrow_move_constructible.hpp +84 -0
  301. data/ext/boost/type_traits/is_pod.hpp +3 -1
  302. data/ext/boost/type_traits/is_rvalue_reference.hpp +1 -1
  303. data/ext/boost/type_traits/is_volatile.hpp +1 -1
  304. data/ext/boost/type_traits/make_signed.hpp +153 -0
  305. data/ext/boost/type_traits/make_unsigned.hpp +16 -0
  306. data/ext/boost/type_traits/remove_const.hpp +1 -1
  307. data/ext/boost/type_traits/remove_cv.hpp +1 -1
  308. data/ext/boost/type_traits/remove_reference.hpp +1 -1
  309. data/ext/boost/type_traits/remove_volatile.hpp +1 -1
  310. data/ext/boost/unordered/detail/allocate.hpp +1120 -0
  311. data/ext/boost/unordered/detail/buckets.hpp +876 -0
  312. data/ext/boost/unordered/detail/equivalent.hpp +680 -0
  313. data/ext/boost/unordered/detail/extract_key.hpp +183 -0
  314. data/ext/boost/unordered/detail/fwd.hpp +23 -0
  315. data/ext/boost/unordered/detail/table.hpp +861 -0
  316. data/ext/boost/unordered/detail/unique.hpp +622 -0
  317. data/ext/boost/unordered/detail/util.hpp +260 -0
  318. data/ext/boost/unordered/unordered_map.hpp +1652 -0
  319. data/ext/boost/unordered/unordered_map_fwd.hpp +65 -0
  320. data/ext/boost/unordered/unordered_set.hpp +1549 -0
  321. data/ext/boost/unordered/unordered_set_fwd.hpp +63 -0
  322. data/ext/boost/unordered_map.hpp +18 -0
  323. data/ext/boost/unordered_set.hpp +18 -0
  324. data/ext/boost/utility/addressof.hpp +2 -2
  325. data/ext/boost/utility/result_of.hpp +8 -1
  326. data/ext/boost/version.hpp +2 -2
  327. data/ext/common/Account.h +1 -1
  328. data/ext/common/AccountsDatabase.h +1 -1
  329. data/ext/common/AgentsStarter.cpp +3 -1
  330. data/ext/common/AgentsStarter.h +2 -2
  331. data/ext/common/ApplicationPool2/AppTypes.cpp +24 -6
  332. data/ext/common/ApplicationPool2/AppTypes.h +17 -8
  333. data/ext/common/ApplicationPool2/Common.h +12 -12
  334. data/ext/common/ApplicationPool2/DirectSpawner.h +2 -2
  335. data/ext/common/ApplicationPool2/DummySpawner.h +3 -3
  336. data/ext/common/ApplicationPool2/Group.h +6 -6
  337. data/ext/common/ApplicationPool2/Implementation.cpp +19 -19
  338. data/ext/common/ApplicationPool2/PipeWatcher.h +5 -5
  339. data/ext/common/ApplicationPool2/Pool.h +21 -21
  340. data/ext/common/ApplicationPool2/Process.h +6 -6
  341. data/ext/common/ApplicationPool2/Session.h +1 -1
  342. data/ext/common/ApplicationPool2/SmartSpawner.h +24 -12
  343. data/ext/common/ApplicationPool2/Socket.h +2 -2
  344. data/ext/common/ApplicationPool2/Spawner.h +64 -14
  345. data/ext/common/ApplicationPool2/SpawnerFactory.h +7 -7
  346. data/ext/common/ApplicationPool2/SuperGroup.h +5 -5
  347. data/ext/common/BackgroundEventLoop.cpp +4 -4
  348. data/ext/common/BackgroundEventLoop.h +1 -1
  349. data/ext/common/Constants.h +13 -1
  350. data/ext/common/EventedBufferedInput.h +8 -8
  351. data/ext/common/Exceptions.cpp +71 -0
  352. data/ext/common/Exceptions.h +60 -7
  353. data/ext/common/FileDescriptor.h +4 -4
  354. data/ext/common/MessageClient.h +1 -1
  355. data/ext/common/MessageServer.h +5 -5
  356. data/ext/common/MultiLibeio.cpp +3 -3
  357. data/ext/common/MultiLibeio.h +2 -2
  358. data/ext/common/RandomGenerator.h +11 -11
  359. data/ext/common/ResourceLocator.h +8 -1
  360. data/ext/common/SafeLibev.h +12 -12
  361. data/ext/common/ServerInstanceDir.h +11 -3
  362. data/ext/common/UnionStation.h +10 -10
  363. data/ext/common/Utils.cpp +11 -13
  364. data/ext/common/Utils.h +9 -9
  365. data/ext/common/Utils/BlockingQueue.h +10 -10
  366. data/ext/common/Utils/BufferedIO.h +1 -1
  367. data/ext/common/Utils/CachedFileStat.hpp +2 -2
  368. data/ext/common/Utils/FileChangeChecker.h +1 -1
  369. data/ext/common/Utils/HashMap.h +13 -4
  370. data/ext/common/Utils/IOUtils.cpp +33 -10
  371. data/ext/common/Utils/IniFile.h +3 -3
  372. data/ext/common/Utils/Lock.h +2 -2
  373. data/ext/common/Utils/MessagePassing.h +10 -10
  374. data/ext/common/Utils/ProcessMetricsCollector.h +24 -6
  375. data/ext/common/Utils/ScopeGuard.h +5 -5
  376. data/ext/common/Utils/jsoncpp.cpp +2 -0
  377. data/ext/common/agents/HelperAgent/FileBackedPipe.h +26 -26
  378. data/ext/common/agents/HelperAgent/Main.cpp +18 -18
  379. data/ext/common/agents/HelperAgent/RequestHandler.cpp +4 -4
  380. data/ext/common/agents/HelperAgent/RequestHandler.h +30 -21
  381. data/ext/common/agents/LoggingAgent/AdminController.h +1 -1
  382. data/ext/common/agents/LoggingAgent/FilterSupport.h +13 -11
  383. data/ext/common/agents/LoggingAgent/LoggingServer.h +11 -11
  384. data/ext/common/agents/LoggingAgent/Main.cpp +9 -9
  385. data/ext/common/agents/LoggingAgent/RemoteSender.h +3 -3
  386. data/ext/common/agents/SpawnPreparer.cpp +1 -0
  387. data/ext/common/agents/Watchdog/AgentWatcher.cpp +8 -7
  388. data/ext/common/agents/Watchdog/Main.cpp +81 -73
  389. data/ext/common/agents/Watchdog/ServerInstanceDirToucher.cpp +1 -1
  390. data/ext/libev/Changes +57 -0
  391. data/ext/libev/LICENSE +2 -1
  392. data/ext/libev/Makefile.in +110 -50
  393. data/ext/libev/README +8 -8
  394. data/ext/libev/aclocal.m4 +1503 -861
  395. data/ext/libev/config.guess +290 -304
  396. data/ext/libev/config.sub +77 -198
  397. data/ext/libev/configure +1735 -890
  398. data/ext/libev/configure.ac +3 -2
  399. data/ext/libev/ev++.h +6 -6
  400. data/ext/libev/ev.c +541 -214
  401. data/ext/libev/ev.h +106 -100
  402. data/ext/libev/ev_epoll.c +1 -1
  403. data/ext/libev/ev_kqueue.c +20 -4
  404. data/ext/libev/ev_vars.h +15 -16
  405. data/ext/libev/ev_win32.c +12 -2
  406. data/ext/libev/ev_wrap.h +162 -160
  407. data/ext/libev/event.c +29 -6
  408. data/ext/libev/event.h +9 -2
  409. data/ext/libev/ltmain.sh +2632 -1384
  410. data/ext/nginx/ConfigurationCommands.c +1 -1
  411. data/ext/nginx/ConfigurationCommands.c.erb +3 -1
  412. data/ext/nginx/ContentHandler.c +25 -2
  413. data/ext/nginx/CreateLocationConfig.c +1 -0
  414. data/ext/nginx/CreateLocationConfig.c.erb +1 -1
  415. data/ext/nginx/MergeLocationConfig.c +1 -0
  416. data/ext/nginx/MergeLocationConfig.c.erb +1 -1
  417. data/ext/nginx/config +12 -0
  418. data/ext/oxt/dynamic_thread_group.hpp +7 -4
  419. data/ext/oxt/system_calls.cpp +5 -1
  420. data/ext/oxt/system_calls.hpp +3 -0
  421. data/helper-scripts/node-loader.js +117 -249
  422. data/lib/phusion_passenger.rb +27 -5
  423. data/lib/phusion_passenger/abstract_installer.rb +104 -9
  424. data/lib/phusion_passenger/admin_tools/memory_stats.rb +10 -9
  425. data/lib/phusion_passenger/apache2/config_options.rb +6 -3
  426. data/lib/phusion_passenger/common_library.rb +7 -1
  427. data/lib/phusion_passenger/constants.rb +6 -0
  428. data/lib/phusion_passenger/loader_shared_helpers.rb +7 -4
  429. data/lib/phusion_passenger/nginx/config_options.rb +2 -1
  430. data/lib/phusion_passenger/packaging.rb +3 -0
  431. data/lib/phusion_passenger/platform_info/apache.rb +43 -6
  432. data/lib/phusion_passenger/platform_info/apache_detector.rb +15 -5
  433. data/lib/phusion_passenger/platform_info/compiler.rb +167 -32
  434. data/lib/phusion_passenger/platform_info/cxx_portability.rb +133 -77
  435. data/lib/phusion_passenger/platform_info/depcheck.rb +17 -7
  436. data/lib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +3 -3
  437. data/lib/phusion_passenger/platform_info/depcheck_specs/compiler_toolchain.rb +4 -4
  438. data/lib/phusion_passenger/platform_info/depcheck_specs/ruby.rb +5 -6
  439. data/lib/phusion_passenger/platform_info/linux.rb +2 -1
  440. data/lib/phusion_passenger/platform_info/operating_system.rb +1 -1
  441. data/lib/phusion_passenger/platform_info/ruby.rb +18 -3
  442. data/lib/phusion_passenger/standalone/runtime_installer.rb +6 -2
  443. data/lib/phusion_passenger/standalone/start_command.rb +8 -2
  444. data/lib/phusion_passenger/utils/ansi_colors.rb +9 -0
  445. data/lib/phusion_passenger/utils/hosts_file_parser.rb +4 -2
  446. data/node_lib/phusion_passenger/httplib_emulation.js +141 -0
  447. data/node_lib/phusion_passenger/line_reader.js +154 -0
  448. data/node_lib/phusion_passenger/request_handler.js +65 -0
  449. data/node_lib/phusion_passenger/session_protocol_parser.js +113 -0
  450. data/resources/templates/apache2/deployment_example.txt.erb +2 -1
  451. data/resources/templates/apache2/installing_against_a_different_apache.txt.erb +14 -0
  452. data/resources/templates/apache2/multiple_apache_installations_detected.txt.erb +15 -0
  453. data/resources/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +4 -5
  454. data/resources/templates/general_error_with_html.html.template +1 -1
  455. data/resources/templates/installer_common/gem_install_permission_problems.txt.erb +17 -0
  456. data/resources/templates/installer_common/low_amount_of_memory_warning.txt.erb +6 -4
  457. data/resources/templates/installer_common/world_inaccessible_directories.txt.erb +16 -0
  458. data/resources/templates/nginx/deployment_example.txt.erb +2 -1
  459. data/resources/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +4 -5
  460. data/resources/templates/standalone/config.erb +1 -0
  461. data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +3 -3
  462. data/test/cxx/ApplicationPool2/PoolTest.cpp +4 -4
  463. data/test/cxx/ApplicationPool2/ProcessTest.cpp +5 -5
  464. data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +5 -5
  465. data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +1 -1
  466. data/test/cxx/EventedBufferedInputTest.cpp +6 -6
  467. data/test/cxx/FileBackedPipeTest.cpp +1 -1
  468. data/test/cxx/MessagePassingTest.cpp +1 -1
  469. data/test/cxx/MessageServerTest.cpp +4 -4
  470. data/test/cxx/RequestHandlerTest.cpp +7 -7
  471. data/test/cxx/UnionStationTest.cpp +2 -2
  472. data/test/node/line_reader_spec.js +338 -0
  473. data/test/node/spec_helper.js +27 -0
  474. data/test/ruby/standalone/runtime_installer_spec.rb +2 -1
  475. metadata +131 -22
  476. metadata.gz.asc +7 -7
  477. data/ext/boost/functional/hash/detail/container_fwd_0x.hpp +0 -29
  478. data/ext/boost/lambda/core.hpp +0 -79
  479. data/ext/boost/lambda/detail/actions.hpp +0 -174
  480. data/ext/boost/lambda/detail/arity_code.hpp +0 -110
  481. data/ext/boost/lambda/detail/function_adaptors.hpp +0 -789
  482. data/ext/boost/lambda/detail/is_instance_of.hpp +0 -104
  483. data/ext/boost/lambda/detail/lambda_config.hpp +0 -48
  484. data/ext/boost/lambda/detail/lambda_functor_base.hpp +0 -615
  485. data/ext/boost/lambda/detail/lambda_functors.hpp +0 -324
  486. data/ext/boost/lambda/detail/lambda_fwd.hpp +0 -74
  487. data/ext/boost/lambda/detail/lambda_traits.hpp +0 -578
  488. data/ext/boost/lambda/detail/member_ptr.hpp +0 -737
  489. data/ext/boost/lambda/detail/operator_actions.hpp +0 -139
  490. data/ext/boost/lambda/detail/operator_lambda_func_base.hpp +0 -271
  491. data/ext/boost/lambda/detail/operator_return_type_traits.hpp +0 -917
  492. data/ext/boost/lambda/detail/operators.hpp +0 -370
  493. data/ext/boost/lambda/detail/ret.hpp +0 -325
  494. data/ext/boost/lambda/detail/return_type_traits.hpp +0 -282
  495. data/ext/boost/lambda/detail/select_functions.hpp +0 -74
  496. data/ext/boost/lambda/lambda.hpp +0 -34
@@ -34,7 +34,7 @@ require 'phusion_passenger/common_library'
34
34
  # Defines tasks for compiling a static library containing Boost and OXT.
35
35
  def define_libboost_oxt_task(namespace, output_dir, extra_compiler_flags = nil)
36
36
  output_file = "#{output_dir}.a"
37
- flags = "-Iext #{extra_compiler_flags} #{PlatformInfo.portability_cflags} #{EXTRA_CXXFLAGS}"
37
+ flags = "-Iext #{extra_compiler_flags} #{EXTRA_CXXFLAGS}"
38
38
 
39
39
  if false && boolean_option('RELEASE')
40
40
  # Disable RELEASE support. Passenger Standalone wants to link to the
@@ -125,11 +125,16 @@ if USE_VENDORED_LIBEV
125
125
  "ext/libev/Makefile.am"
126
126
  ]
127
127
  file LIBEV_OUTPUT_DIR + "Makefile" => dependencies do
128
+ cc = PlatformInfo.cc
129
+ cxx = PlatformInfo.cxx
128
130
  # Disable all warnings: http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#COMPILER_WARNINGS
129
- cflags = "#{EXTRA_CXXFLAGS} -w"
131
+ cflags = "#{EXTRA_CFLAGS} -w"
130
132
  sh "mkdir -p #{LIBEV_OUTPUT_DIR}" if !File.directory?(LIBEV_OUTPUT_DIR)
131
133
  sh "cd #{LIBEV_OUTPUT_DIR} && sh #{LIBEV_SOURCE_DIR}configure " +
132
- "--disable-shared --enable-static CFLAGS='#{cflags}' orig_CFLAGS=1"
134
+ "--disable-shared --enable-static " +
135
+ # libev's configure script may select a different default compiler than we
136
+ # do, so we force our compiler choice.
137
+ "CC='#{cc}' CXX='#{cxx}' CFLAGS='#{cflags}' orig_CFLAGS=1"
133
138
  end
134
139
 
135
140
  libev_sources = Dir["ext/libev/{*.c,*.h}"]
@@ -172,12 +177,17 @@ if USE_VENDORED_LIBEIO
172
177
  "ext/libeio/Makefile.am"
173
178
  ]
174
179
  file LIBEIO_OUTPUT_DIR + "Makefile" => dependencies do
180
+ cc = PlatformInfo.cc
181
+ cxx = PlatformInfo.cxx
175
182
  # Disable all warnings. The author has a clear standpoint on that:
176
183
  # http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#COMPILER_WARNINGS
177
- cflags = "#{EXTRA_CXXFLAGS} -w"
184
+ cflags = "#{EXTRA_CFLAGS} -w"
178
185
  sh "mkdir -p #{LIBEIO_OUTPUT_DIR}" if !File.directory?(LIBEIO_OUTPUT_DIR)
179
186
  sh "cd #{LIBEIO_OUTPUT_DIR} && sh #{LIBEIO_SOURCE_DIR}configure " +
180
- "--disable-shared --enable-static CFLAGS='#{cflags}'"
187
+ "--disable-shared --enable-static " +
188
+ # libeio's configure script may select a different default compiler than we
189
+ # do, so we force our compiler choice.
190
+ "CC='#{cc}' CXX='#{cxx}' CFLAGS='#{cflags}'"
181
191
  end
182
192
 
183
193
  libeio_sources = Dir["ext/libeio/{*.c,*.h}"]
@@ -219,7 +229,7 @@ end
219
229
 
220
230
 
221
231
  libboost_oxt_cflags = ""
222
- libboost_oxt_cflags << " -faddress-sanitizer" if USE_ASAN
232
+ libboost_oxt_cflags << " #{PlatformInfo.adress_sanitizer_flag}" if USE_ASAN
223
233
  libboost_oxt_cflags.strip!
224
234
  LIBBOOST_OXT = define_libboost_oxt_task("common", COMMON_OUTPUT_DIR + "libboost_oxt", libboost_oxt_cflags)
225
235
  COMMON_LIBRARY.define_tasks(libboost_oxt_cflags)
@@ -53,11 +53,11 @@ def run_compiler(*command)
53
53
  end
54
54
  end
55
55
 
56
- def compile_c(source, flags = "#{EXTRA_PRE_CFLAGS} #{PlatformInfo.portability_cflags} #{EXTRA_CXXFLAGS}")
56
+ def compile_c(source, flags = "#{EXTRA_PRE_CFLAGS} #{EXTRA_CFLAGS}")
57
57
  run_compiler "#{CC} #{flags} -c #{source}"
58
58
  end
59
59
 
60
- def compile_cxx(source, flags = "#{EXTRA_PRE_CXXFLAGS} #{PlatformInfo.portability_cflags} #{EXTRA_CXXFLAGS}")
60
+ def compile_cxx(source, flags = "#{EXTRA_PRE_CXXFLAGS} #{EXTRA_CXXFLAGS}")
61
61
  run_compiler "#{CXX} #{flags} -c #{source}"
62
62
  end
63
63
 
@@ -73,15 +73,15 @@ def create_static_library(target, sources)
73
73
  sh "ranlib #{target}"
74
74
  end
75
75
 
76
- def create_executable(target, sources, linkflags = "#{EXTRA_PRE_CXXFLAGS} #{EXTRA_PRE_LDFLAGS} #{PlatformInfo.portability_cflags} #{EXTRA_CXXFLAGS} #{PlatformInfo.portability_ldflags} #{EXTRA_LDFLAGS}")
76
+ def create_executable(target, sources, linkflags = "#{EXTRA_PRE_CXXFLAGS} #{EXTRA_PRE_LDFLAGS} #{EXTRA_CXXFLAGS} #{PlatformInfo.portability_ldflags} #{EXTRA_LDFLAGS} #{EXTRA_CXX_LDFLAGS}")
77
77
  run_compiler "#{CXX} #{sources} -o #{target} #{linkflags}"
78
78
  end
79
79
 
80
- def create_c_executable(target, sources, linkflags = "#{EXTRA_PRE_CFLAGS} #{EXTRA_PRE_LDFLAGS} #{PlatformInfo.portability_cflags} #{EXTRA_CXXFLAGS} #{PlatformInfo.portability_ldflags} #{EXTRA_LDFLAGS}")
80
+ def create_c_executable(target, sources, linkflags = "#{EXTRA_PRE_CFLAGS} #{EXTRA_PRE_LDFLAGS}#{EXTRA_CFLAGS} #{PlatformInfo.portability_ldflags} #{EXTRA_LDFLAGS} #{EXTRA_C_LDFLAGS}")
81
81
  run_compiler "#{CC} #{sources} -o #{target} #{linkflags}"
82
82
  end
83
83
 
84
- def create_shared_library(target, sources, flags = "#{EXTRA_PRE_CXXFLAGS} #{EXTRA_PRE_LDFLAGS} #{PlatformInfo.portability_cflags} #{EXTRA_CXXFLAGS} #{PlatformInfo.portability_ldflags} #{EXTRA_LDFLAGS}")
84
+ def create_shared_library(target, sources, flags = "#{EXTRA_PRE_CXXFLAGS} #{EXTRA_PRE_LDFLAGS} #{EXTRA_CXXFLAGS} #{PlatformInfo.portability_ldflags} #{EXTRA_LDFLAGS} #{EXTRA_CXX_LDFLAGS}")
85
85
  if PlatformInfo.os_name == "macosx"
86
86
  shlib_flag = "-flat_namespace -bundle -undefined dynamic_lookup"
87
87
  else
@@ -26,15 +26,15 @@
26
26
  TEST_CXX_CFLAGS = "-Iext -Iext/common " <<
27
27
  "#{LIBEV_CFLAGS} #{LIBEIO_CFLAGS} #{PlatformInfo.curl_flags} -Itest/cxx -Itest/support " <<
28
28
  "#{TEST_COMMON_CFLAGS}"
29
- TEST_CXX_CFLAGS << " -faddress-sanitizer" if USE_ASAN
29
+ TEST_CXX_CFLAGS << " #{PlatformInfo.adress_sanitizer_flag}" if USE_ASAN
30
30
  TEST_CXX_LDFLAGS = "#{TEST_COMMON_LIBRARY.link_objects_as_string} " <<
31
31
  "#{TEST_BOOST_OXT_LIBRARY} #{LIBEV_LIBS} #{LIBEIO_LIBS} " <<
32
32
  "#{PlatformInfo.curl_libs} " <<
33
33
  "#{PlatformInfo.zlib_libs} " <<
34
34
  "#{PlatformInfo.portability_ldflags}"
35
35
  TEST_CXX_LDFLAGS << " #{PlatformInfo.dmalloc_ldflags}" if USE_DMALLOC
36
- TEST_CXX_LDFLAGS << " -faddress-sanitizer" if USE_ASAN
37
- TEST_CXX_LDFLAGS << " #{EXTRA_LDFLAGS}"
36
+ TEST_CXX_LDFLAGS << " #{PlatformInfo.adress_sanitizer_flag}" if USE_ASAN
37
+ TEST_CXX_LDFLAGS << " #{EXTRA_LDFLAGS} #{EXTRA_CXX_LDFLAGS}"
38
38
  TEST_CXX_LDFLAGS.strip!
39
39
  TEST_CXX_OBJECTS = {
40
40
  'test/cxx/CxxTestMain.o' => %w(
@@ -35,7 +35,7 @@ Packaging::ASCII_DOCS.each do |target|
35
35
  type = "nginx"
36
36
  juvia_site_key = "q0ptarhn8o9xanwomq8zkgewbtwffyz"
37
37
  elsif target =~ /standalone/i
38
- type = nil
38
+ type = "standalone"
39
39
  juvia_site_key = "amggdy0k65hb4hbjg3dh7pnb9zd8dwy"
40
40
  else
41
41
  type = nil
@@ -84,23 +84,8 @@ task :news_as_html do
84
84
  require 'cgi'
85
85
  contents, items = extract_latest_news_contents_and_items
86
86
 
87
- puts "<dl>"
87
+ puts "<ul>"
88
88
  items.each do |item|
89
- item.strip!
90
-
91
- # Does this item have a header? It does if it consists of multiple lines, and
92
- # the next line is capitalized.
93
- lines = item.split("\n")
94
- if lines.size > 1 && lines[1].strip[0..0] == lines[1].strip[0..0].upcase
95
- puts "<dt>#{lines[0]}</dt>"
96
- lines.shift
97
- item = lines.join("\n")
98
- item.strip!
99
- end
100
-
101
- # Split into paragraphs. Empty lines are paragraph dividers.
102
- paragraphs = item.split(/^ *$/m)
103
-
104
89
  def format_paragraph(text)
105
90
  # Get rid of newlines: convert them into spaces.
106
91
  text.gsub!("\n", ' ')
@@ -121,27 +106,10 @@ task :news_as_html do
121
106
  end
122
107
  text
123
108
  end
124
-
125
- if paragraphs.size > 1
126
- STDOUT.write("<dd>")
127
- paragraphs.each do |paragraph|
128
- paragraph.gsub!(/\A\n+/, '')
129
- paragraph.gsub!(/\n+\Z/, '')
130
-
131
- if (paragraph =~ /\A /)
132
- # Looks like a code block.
133
- paragraph.gsub!(/^ /m, '')
134
- puts "<pre lang=\"ruby\">#{CGI.escapeHTML(paragraph)}</pre>"
135
- else
136
- puts "<p>#{format_paragraph(paragraph)}</p>"
137
- end
138
- end
139
- STDOUT.write("</dd>\n")
140
- else
141
- puts "<dd>#{format_paragraph(item)}</dd>"
142
- end
109
+
110
+ puts "<li>" + format_paragraph(item.strip) + "</li>"
143
111
  end
144
- puts "</dl>"
112
+ puts "</ul>"
145
113
  end
146
114
 
147
115
  desc "Convert the NEWS items for the latest release to Markdown"
@@ -200,7 +168,6 @@ task :compile_app => dependencies do
200
168
  create_executable(exe, source,
201
169
  "-DSTANDALONE " <<
202
170
  "-Iext -Iext/common #{LIBEV_CFLAGS} #{LIBEIO_CFLAGS} " <<
203
- "#{PlatformInfo.portability_cflags} " <<
204
171
  "#{EXTRA_CXXFLAGS} " <<
205
172
  "#{COMMON_LIBRARY.link_objects_as_string} " <<
206
173
  "#{LIBBOOST_OXT} " <<
@@ -0,0 +1,29 @@
1
+ # Phusion Passenger - https://www.phusionpassenger.com/
2
+ # Copyright (c) 2013 Phusion
3
+ #
4
+ # "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to deal
8
+ # in the Software without restriction, including without limitation the rights
9
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ # copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included in
14
+ # all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ # THE SOFTWARE.
23
+
24
+ ### Node.js components tests ###
25
+
26
+ desc "Run unit tests for the Node.js libraries"
27
+ task 'test:node' do
28
+ sh "cd test && env NODE_PATH=#{PhusionPassenger.node_libdir} ../node_modules/.bin/mocha -R spec node/*_spec.js"
29
+ end
@@ -25,7 +25,7 @@
25
25
 
26
26
  TEST_OXT_CFLAGS = "-I../../ext -I../support #{TEST_COMMON_CFLAGS}"
27
27
  TEST_OXT_LDFLAGS = "#{TEST_BOOST_OXT_LIBRARY} #{PlatformInfo.portability_ldflags} #{EXTRA_LDFLAGS}"
28
- TEST_OXT_LDFLAGS << " -faddress-sanitizer" if USE_ASAN
28
+ TEST_OXT_LDFLAGS << " #{PlatformInfo.adress_sanitizer_flag}" if USE_ASAN
29
29
  TEST_OXT_OBJECTS = {
30
30
  'oxt_test_main.o' => %w(oxt_test_main.cpp),
31
31
  'backtrace_test.o' => %w(backtrace_test.cpp counter.hpp),
@@ -172,11 +172,7 @@ task 'package:release' => ['package:set_official', 'package:gem', 'package:tarba
172
172
  sh "cd #{homebrew_dir} && hub pull-request 'Update passenger to version #{version}' -b mxcl:master"
173
173
 
174
174
  puts "Initiating building of Debian packages"
175
- command = "cd /srv/passenger_apt_automation && " +
176
- "chpst -l /tmp/passenger_apt_automation.lock " +
177
- "/tools/silence-unless-failed " +
178
- "./new_release https://github.com/phusion/passenger.git passenger.repo passenger.apt release-#{version}"
179
- sh "ssh psg_apt_automation@juvia-helper.phusion.nl at now <<<'#{command}'"
175
+ Rake::Task['package:initiate_debian_building'].invoke
180
176
 
181
177
  puts "Building OS X binaries..."
182
178
  sh "cd ../passenger_autobuilder && " +
@@ -201,11 +197,7 @@ task 'package:release' => ['package:set_official', 'package:gem', 'package:tarba
201
197
  sh "ssh psg_autobuilder_run@juvia-helper.phusion.nl at now <<<'#{command}'"
202
198
 
203
199
  puts "Initiating building of Debian packages"
204
- command = "cd /srv/passenger_apt_automation && " +
205
- "chpst -l /tmp/passenger_apt_automation.lock " +
206
- "/tools/silence-unless-failed " +
207
- "./new_release #{git_url} passenger-enterprise.repo passenger-enterprise.apt enterprise-#{version}"
208
- sh "ssh psg_apt_automation@juvia-helper.phusion.nl at now <<<'#{command}'"
200
+ Rake::Task['package:initiate_debian_building'].invoke
209
201
 
210
202
  sh "cd ../passenger_autobuilder && " +
211
203
  "git pull && " +
@@ -291,6 +283,27 @@ task 'package:sign' do
291
283
  end
292
284
  end
293
285
 
286
+ task 'package:initiate_debian_building' do
287
+ version = PhusionPassenger::VERSION_STRING
288
+ is_enterprise = PhusionPassenger::PACKAGE_NAME =~ /enterprise/
289
+ is_open_source = !is_enterprise
290
+
291
+ if is_open_source
292
+ command = "cd /srv/passenger_apt_automation && " +
293
+ "chpst -l /tmp/passenger_apt_automation.lock " +
294
+ "/tools/silence-unless-failed " +
295
+ "./new_release https://github.com/phusion/passenger.git passenger.repo passenger.apt release-#{version}"
296
+ else
297
+ git_url = `git config remote.origin.url`.strip
298
+ command = "cd /srv/passenger_apt_automation && " +
299
+ "chpst -l /tmp/passenger_apt_automation.lock " +
300
+ "/tools/silence-unless-failed " +
301
+ "./new_release #{git_url} passenger-enterprise.repo passenger-enterprise.apt enterprise-#{version}"
302
+ end
303
+
304
+ sh "ssh psg_apt_automation@juvia-helper.phusion.nl at now <<<'#{command}'"
305
+ end
306
+
294
307
  desc "Remove gem, tarball and signatures"
295
308
  task 'package:clean' do
296
309
  require 'phusion_passenger'
@@ -319,6 +332,7 @@ task :fakeroot => [:apache2, :nginx, :doc] do
319
332
  # the files to be installed to /usr, and the Ruby interpreter
320
333
  # on the packaging machine might be in /usr/local.
321
334
  fake_rubylibdir = "#{fakeroot}/usr/lib/ruby/vendor_ruby"
335
+ fake_nodelibdir = "#{fakeroot}/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/node"
322
336
  fake_libdir = "#{fakeroot}/usr/lib/#{GLOBAL_NAMESPACE_DIRNAME}"
323
337
  fake_native_support_dir = "#{fakeroot}/usr/lib/ruby/#{CONFIG['ruby_version']}/#{CONFIG['arch']}"
324
338
  fake_agents_dir = "#{fakeroot}/usr/lib/#{GLOBAL_NAMESPACE_DIRNAME}/agents"
@@ -341,6 +355,10 @@ task :fakeroot => [:apache2, :nginx, :doc] do
341
355
  sh "cp #{PhusionPassenger.ruby_libdir}/phusion_passenger.rb #{fake_rubylibdir}/"
342
356
  sh "cp -R #{PhusionPassenger.ruby_libdir}/phusion_passenger #{fake_rubylibdir}/"
343
357
 
358
+ # Node.js sources
359
+ sh "mkdir -p #{fake_nodelibdir}"
360
+ sh "cp -R #{PhusionPassenger.node_libdir}/phusion_passenger #{fake_nodelibdir}/"
361
+
344
362
  # Phusion Passenger common libraries
345
363
  sh "mkdir -p #{fake_libdir}"
346
364
  sh "cp -R #{PhusionPassenger.lib_dir}/common #{fake_libdir}/"
@@ -432,6 +450,7 @@ task :fakeroot => [:apache2, :nginx, :doc] do
432
450
  f.puts "include_dir=/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/include"
433
451
  f.puts "doc_dir=/usr/share/doc/#{GLOBAL_NAMESPACE_DIRNAME}"
434
452
  f.puts "ruby_libdir=/usr/lib/ruby/vendor_ruby"
453
+ f.puts "node_libdir=/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/node"
435
454
  f.puts "apache2_module_path=/usr/lib/apache2/modules/mod_passenger.so"
436
455
  f.puts "ruby_extension_source_dir=/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/ruby_extension_source"
437
456
  f.puts "nginx_module_source_dir=/usr/share/#{GLOBAL_NAMESPACE_DIRNAME}/ngx_http_passenger_module"
@@ -181,7 +181,8 @@ private
181
181
  "precise" => "12.04",
182
182
  "quantal" => "12.10",
183
183
  "raring" => "13.04",
184
- "saucy" => "13.10"
184
+ "saucy" => "13.10",
185
+ "trusty" => "14.04"
185
186
  }
186
187
  DEBIAN_DISTRIBUTIONS = {
187
188
  "squeeze" => "20110206",
@@ -25,10 +25,10 @@ TEST_BOOST_OXT_LIBRARY = LIBBOOST_OXT
25
25
  TEST_COMMON_LIBRARY = COMMON_LIBRARY
26
26
 
27
27
  TEST_COMMON_CFLAGS = "-DTESTING_APPLICATION_POOL " <<
28
- "#{PlatformInfo.portability_cflags} #{EXTRA_CXXFLAGS}"
28
+ "#{EXTRA_CXXFLAGS}"
29
29
 
30
30
  desc "Run all unit tests and integration tests"
31
- task :test => ['test:oxt', 'test:cxx', 'test:ruby', 'test:integration']
31
+ task :test => ['test:oxt', 'test:cxx', 'test:ruby', 'test:node', 'test:integration']
32
32
 
33
33
  desc "Clean all compiled test files"
34
34
  task 'test:clean' do
@@ -47,10 +47,16 @@ desc "Install developer dependencies"
47
47
  task 'test:install_deps' do
48
48
  gem_install = PlatformInfo.gem_command + " install --no-rdoc --no-ri"
49
49
  gem_install = "#{PlatformInfo.ruby_sudo_command} #{gem_install}" if boolean_option('SUDO')
50
- sh "#{gem_install} rails -v 2.3.15"
51
- sh "#{gem_install} bundler rspec mime-types daemon_controller json rack"
52
- sh "#{gem_install} mizuho bluecloth" if boolean_option('DOCTOOLS', true)
53
- if boolean_option('RAILS_BUNDLES', true)
50
+ default = boolean_option('DEVDEPS_DEFAULT', true)
51
+
52
+ if boolean_option('BASE_DEPS', default)
53
+ sh "#{gem_install} rails -v 2.3.15"
54
+ sh "#{gem_install} bundler rspec mime-types daemon_controller json rack"
55
+ end
56
+ if boolean_option('DOCTOOLS', default)
57
+ sh "#{gem_install} mizuho bluecloth"
58
+ end
59
+ if boolean_option('RAILS_BUNDLES', default)
54
60
  sh "cd test/stub/rails3.0 && bundle install"
55
61
  sh "cd test/stub/rails3.1 && bundle install"
56
62
  sh "cd test/stub/rails3.2 && bundle install"
@@ -61,4 +67,7 @@ task 'test:install_deps' do
61
67
  sh "cd test/stub/rails4.0 && bundle install"
62
68
  end
63
69
  end
70
+ if boolean_option('NODE_MODULES', default)
71
+ sh "npm install mocha should sinon"
72
+ end
64
73
  end
@@ -8,6 +8,7 @@ resources_dir=/usr/share/<%= PhusionPassenger::GLOBAL_NAMESPACE_DIRNAME %>
8
8
  include_dir=/usr/share/<%= PhusionPassenger::GLOBAL_NAMESPACE_DIRNAME %>/include
9
9
  doc_dir=/usr/share/doc/passenger
10
10
  ruby_libdir=/usr/lib/ruby/vendor_ruby
11
+ node_libdir=/usr/share/<%= PhusionPassenger::GLOBAL_NAMESPACE_DIRNAME %>/node
11
12
  apache2_module_path=/usr/lib/apache2/modules/mod_passenger.so
12
13
  ruby_extension_source_dir=/usr/share/<%= PhusionPassenger::GLOBAL_NAMESPACE_DIRNAME %>/ruby_extension_source
13
14
  nginx_module_source_dir=/usr/share/<%= PhusionPassenger::GLOBAL_NAMESPACE_DIRNAME %>/ngx_http_passenger_module
@@ -4,6 +4,7 @@ usr/share/<%= PhusionPassenger::GLOBAL_NAMESPACE_DIRNAME %>/helper-scripts/
4
4
  usr/share/<%= PhusionPassenger::GLOBAL_NAMESPACE_DIRNAME %>/templates/
5
5
  usr/share/<%= PhusionPassenger::GLOBAL_NAMESPACE_DIRNAME %>/standalone_default_root/
6
6
  usr/share/<%= PhusionPassenger::GLOBAL_NAMESPACE_DIRNAME %>/ruby_extension_source/
7
+ usr/share/<%= PhusionPassenger::GLOBAL_NAMESPACE_DIRNAME %>/node/
7
8
  usr/share/<%= PhusionPassenger::GLOBAL_NAMESPACE_DIRNAME %>/*.types
8
9
  usr/share/<%= PhusionPassenger::GLOBAL_NAMESPACE_DIRNAME %>/*.crt
9
10
  usr/share/<%= PhusionPassenger::GLOBAL_NAMESPACE_DIRNAME %>/*.txt
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  # Phusion Passenger - https://www.phusionpassenger.com/
3
- # Copyright (c) 2010-2012 Phusion
3
+ # Copyright (c) 2010-2013 Phusion
4
4
  #
5
5
  # "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
6
6
  #
@@ -30,18 +30,22 @@ ESSENTIALS = [
30
30
  "boost/smart_ptr/detail/sp_counted_*",
31
31
  "boost/smart_ptr/detail/atomic_count*",
32
32
  "boost/smart_ptr/detail/spinlock*",
33
+ "boost/atomic",
34
+ "boost/unordered*",
33
35
  "boost/thread",
34
36
  "libs/thread/src",
35
37
  "libs/system/src",
36
38
  "boost/date_time/gregorian/formatters_limited.hpp",
37
39
  "boost/date_time/date_formatting_limited.hpp",
40
+ "boost/type_traits/make_signed.hpp",
38
41
  "boost/type_traits/detail/*",
39
42
  "boost/non_type.hpp",
40
43
  "boost/detail/fenv.hpp",
41
44
  "boost/foreach.hpp"
42
45
  ]
43
46
  EXCLUDE = [
44
- "libs/thread/src/win32/*"
47
+ "libs/thread/src/win32/*",
48
+ "boost/atomic/detail/windows.hpp"
45
49
  ]
46
50
  PROGRAM_SOURCE = %q{
47
51
  #include <boost/shared_ptr.hpp>
@@ -55,7 +59,7 @@ PROGRAM_SOURCE = %q{
55
59
  #include <boost/bind.hpp>
56
60
  #include <boost/date_time/posix_time/posix_time.hpp>
57
61
  #include <boost/foreach.hpp>
58
- #include <boost/lambda/lambda.hpp>
62
+ #include <boost/unordered_map.hpp>
59
63
  }
60
64
 
61
65
  require 'fileutils'
@@ -3,6 +3,7 @@ set -e
3
3
 
4
4
  export VERBOSE=1
5
5
  export TRACE=1
6
+ export DEVDEPS_DEFAULT=no
6
7
  export rvmsudo_secure_path=1
7
8
 
8
9
  sudo sh -c 'cat >> /etc/hosts' <<EOF
@@ -38,19 +39,30 @@ function apt_get_update() {
38
39
  fi
39
40
  }
40
41
 
41
- function install_test_deps_without_rails_bundles()
42
+ function install_test_deps_with_doctools()
42
43
  {
43
- if [[ "$install_test_deps_without_rails_bundles" = "" ]]; then
44
- install_test_deps_without_rails_bundles=1
45
- run rake test:install_deps RAILS_BUNDLES=no
44
+ if [[ "$install_test_deps_with_doctools" = "" ]]; then
45
+ install_test_deps_with_doctools=1
46
+ run rake test:install_deps BASE_DEPS=yes DOCTOOLS=yes
46
47
  fi
47
48
  }
48
49
 
49
- function install_test_deps_without_rails_bundles_without_doctools()
50
+ function install_base_test_deps()
50
51
  {
51
- if [[ "$install_test_deps_without_rails_bundles_without_doctools" = "" ]]; then
52
- install_test_deps_without_rails_bundles_without_doctools=1
53
- rake test:install_deps RAILS_BUNDLES=no DOCTOOLS=no
52
+ if [[ "$install_base_test_deps" = "" ]]; then
53
+ install_base_test_deps=1
54
+ rake test:install_deps BASE_DEPS=yes
55
+ fi
56
+ }
57
+
58
+ function install_node_and_modules()
59
+ {
60
+ if [[ "$install_node_and_modules" = "" ]]; then
61
+ install_node_and_modules=1
62
+ curl -O http://nodejs.org/dist/v0.10.20/node-v0.10.20-linux-x64.tar.gz
63
+ tar xzvf node-v0.10.20-linux-x64.tar.gz
64
+ export PATH=`pwd`/node-v0.10.20-linux-x64/bin:$PATH
65
+ run rake test:install_deps NODE_MODULES=yes
54
66
  fi
55
67
  }
56
68
 
@@ -82,18 +94,23 @@ if [[ "$TEST_RUBYGEMS_VERSION" != "" ]]; then
82
94
  fi
83
95
 
84
96
  if [[ "$TEST_CXX" = 1 ]]; then
85
- run rake test:install_deps RAILS_BUNDLES=no DOCTOOLS=no
97
+ run rake test:install_deps BASE_DEPS=yes
86
98
  run rake test:cxx
87
99
  run rake test:oxt
88
100
  fi
89
101
 
90
102
  if [[ "$TEST_RUBY" = 1 ]]; then
91
- run rake test:install_deps DOCTOOLS=no
103
+ run rake test:install_deps BASE_DEPS=yes RAILS_BUNDLES=yes
92
104
  run rake test:ruby
93
105
  fi
94
106
 
107
+ if [[ "$TEST_NODE" = 1 ]]; then
108
+ install_node_and_modules
109
+ run rake test:node
110
+ fi
111
+
95
112
  if [[ "$TEST_NGINX" = 1 ]]; then
96
- run rake test:install_deps RAILS_BUNDLES=no DOCTOOLS=no
113
+ install_base_test_deps
97
114
  run ./bin/passenger-install-nginx-module --auto --prefix=/tmp/nginx --auto-download
98
115
  run rake test:integration:nginx
99
116
  fi
@@ -102,14 +119,13 @@ if [[ "$TEST_APACHE2" = 1 ]]; then
102
119
  apt_get_update
103
120
  run sudo apt-get install -y --no-install-recommends \
104
121
  apache2-mpm-worker apache2-threaded-dev
105
- install_test_deps_without_rails_bundles_without_doctools
122
+ install_base_test_deps
106
123
  run ./bin/passenger-install-apache2-module --auto
107
124
  run rake test:integration:apache2
108
125
  fi
109
126
 
110
127
  if [[ "$TEST_STANDALONE" = 1 ]]; then
111
- apt_get_update
112
- install_test_deps_without_rails_bundles_without_doctools
128
+ install_base_test_deps
113
129
  run rake test:integration:standalone
114
130
  fi
115
131
 
@@ -119,7 +135,7 @@ if [[ "$TEST_DEBIAN_PACKAGING" = 1 ]]; then
119
135
  devscripts debhelper rake apache2-mpm-worker apache2-threaded-dev \
120
136
  ruby1.8 ruby1.8-dev ruby1.9.1 ruby1.9.1-dev rubygems libev-dev gdebi-core \
121
137
  source-highlight
122
- install_test_deps_without_rails_bundles
138
+ install_test_deps_with_doctools
123
139
  run rake debian:dev debian:dev:reinstall
124
140
  run rake test:integration:native_packaging \
125
141
  LOCATIONS_INI=/usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini \
@@ -131,6 +147,6 @@ fi
131
147
  if [[ "$TEST_SOURCE_PACKAGING" = 1 ]]; then
132
148
  apt_get_update
133
149
  run sudo apt-get install -y --no-install-recommends source-highlight
134
- install_test_deps_without_rails_bundles
150
+ install_test_deps_with_doctools
135
151
  run rspec -f s -c test/integration_tests/source_packaging_test.rb
136
152
  fi