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
@@ -1,6 +1,6 @@
1
1
  // Copyright (C) 2001-2003
2
2
  // William E. Kempf
3
- // Copyright (C) 2011-2012 Vicente J. Botet Escriba
3
+ // Copyright (C) 2011-2013 Vicente J. Botet Escriba
4
4
  //
5
5
  // Distributed under the Boost Software License, Version 1.0. (See accompanying
6
6
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -8,111 +8,193 @@
8
8
  #ifndef BOOST_THREAD_CONFIG_WEK01032003_HPP
9
9
  #define BOOST_THREAD_CONFIG_WEK01032003_HPP
10
10
 
11
- // Force SIG_ATOMIC_MAX to be defined
12
- //#ifndef __STDC_LIMIT_MACROS
13
- //#define __STDC_LIMIT_MACROS
14
- //#endif
15
-
16
11
  #include <boost/config.hpp>
17
12
  #include <boost/detail/workaround.hpp>
13
+ #include <boost/thread/detail/platform.hpp>
14
+
15
+ //#define BOOST_THREAD_DONT_PROVIDE_INTERRUPTIONS
16
+ // ATTRIBUTE_MAY_ALIAS
17
+
18
+ #if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) > 302 \
19
+ && !defined(__INTEL_COMPILER)
20
+
21
+ // GCC since 3.3 has may_alias attribute that helps to alleviate optimizer issues with
22
+ // regard to violation of the strict aliasing rules.
18
23
 
19
- #ifdef BOOST_NO_NOEXCEPT
20
- # define BOOST_THREAD_NOEXCEPT_OR_THROW throw()
24
+ #define BOOST_THREAD_DETAIL_USE_ATTRIBUTE_MAY_ALIAS
25
+ #define BOOST_THREAD_ATTRIBUTE_MAY_ALIAS __attribute__((__may_alias__))
21
26
  #else
22
- # define BOOST_THREAD_NOEXCEPT_OR_THROW noexcept
27
+ #define BOOST_THREAD_ATTRIBUTE_MAY_ALIAS
28
+ #endif
29
+
30
+
31
+ #if defined BOOST_THREAD_THROW_IF_PRECONDITION_NOT_SATISFIED
32
+ #define BOOST_THREAD_ASSERT_PRECONDITION(EXPR, EX) \
33
+ if (EXPR) {} else boost::throw_exception(EX)
34
+ #define BOOST_THREAD_VERIFY_PRECONDITION(EXPR, EX) \
35
+ if (EXPR) {} else boost::throw_exception(EX)
36
+ #define BOOST_THREAD_THROW_ELSE_RETURN(EX, RET) \
37
+ boost::throw_exception(EX)
38
+ #else
39
+ #define BOOST_THREAD_ASSERT_PRECONDITION(EXPR, EX)
40
+ #define BOOST_THREAD_VERIFY_PRECONDITION(EXPR, EX) \
41
+ (void)(EXPR)
42
+ #define BOOST_THREAD_THROW_ELSE_RETURN(EX, RET) \
43
+ return (RET)
23
44
  #endif
24
45
 
25
46
  // This compiler doesn't support Boost.Chrono
26
- #if defined __IBMCPP__ && (__IBMCPP__ < 1100) && ! defined BOOST_THREAD_DONT_USE_CHRONO
47
+ #if defined __IBMCPP__ && (__IBMCPP__ < 1100) \
48
+ && ! defined BOOST_THREAD_DONT_USE_CHRONO
27
49
  #define BOOST_THREAD_DONT_USE_CHRONO
50
+ #if ! defined BOOST_THREAD_USES_DATETIME
51
+ #define BOOST_THREAD_USES_DATETIME
52
+ #endif
28
53
  #endif
29
54
 
30
55
  // This compiler doesn't support Boost.Move
31
- #if BOOST_WORKAROUND(__SUNPRO_CC, < 0x5100) && ! defined BOOST_THREAD_DONT_USE_MOVE
56
+ #if BOOST_WORKAROUND(__SUNPRO_CC, < 0x5100) \
57
+ && ! defined BOOST_THREAD_DONT_USE_MOVE
32
58
  #define BOOST_THREAD_DONT_USE_MOVE
33
59
  #endif
34
60
 
35
61
  // This compiler doesn't support Boost.Container Allocators files
36
- #if defined __SUNPRO_CC && ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS
62
+ #if defined __SUNPRO_CC \
63
+ && ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS
37
64
  #define BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS
38
65
  #endif
39
66
 
40
- #if defined _WIN32_WCE && _WIN32_WCE==0x501 && ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS
67
+ #if defined _WIN32_WCE && _WIN32_WCE==0x501 \
68
+ && ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS
41
69
  #define BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS
42
70
  #endif
43
71
 
44
- #if ! defined BOOST_THREAD_DONT_PROVIDE_BASIC_THREAD_ID && ! defined BOOST_THREAD_PROVIDES_BASIC_THREAD_ID
72
+
73
+ #if defined BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX || defined BOOST_NO_CXX11_HDR_INITIALIZER_LIST
74
+ #define BOOST_THREAD_NO_CXX11_HDR_INITIALIZER_LIST
75
+ #define BOOST_THREAD_NO_MAKE_LOCK_GUARD
76
+ #define BOOST_THREAD_NO_MAKE_STRICT_LOCK
77
+ #define BOOST_THREAD_NO_MAKE_NESTED_STRICT_LOCK
78
+ #endif
79
+
80
+ #if defined(BOOST_NO_CXX11_HDR_TUPLE) || defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
81
+ #define BOOST_THREAD_NO_MAKE_UNIQUE_LOCKS
82
+ #define BOOST_THREAD_NO_SYNCHRONIZE
83
+ #elif defined _MSC_VER && _MSC_VER <= 1600
84
+ // C++ features supported by VC++ 10 (aka 2010)
85
+ #define BOOST_THREAD_NO_MAKE_UNIQUE_LOCKS
86
+ #define BOOST_THREAD_NO_SYNCHRONIZE
87
+ #endif
88
+
89
+ /// BASIC_THREAD_ID
90
+ #if ! defined BOOST_THREAD_DONT_PROVIDE_BASIC_THREAD_ID \
91
+ && ! defined BOOST_THREAD_PROVIDES_BASIC_THREAD_ID
45
92
  #define BOOST_THREAD_PROVIDES_BASIC_THREAD_ID
46
93
  #endif
47
94
 
48
- // Default version is 2
95
+ /// RVALUE_REFERENCES_DONT_MATCH_FUNTION_PTR
96
+ //#if defined BOOST_NO_CXX11_RVALUE_REFERENCES || defined BOOST_MSVC
97
+ #define BOOST_THREAD_RVALUE_REFERENCES_DONT_MATCH_FUNTION_PTR
98
+ //#endif
99
+
100
+ // Default version
49
101
  #if !defined BOOST_THREAD_VERSION
50
102
  #define BOOST_THREAD_VERSION 2
51
103
  #else
52
- #if BOOST_THREAD_VERSION!=2 && BOOST_THREAD_VERSION!=3
53
- #error "BOOST_THREAD_VERSION must be 2 or 3"
104
+ #if BOOST_THREAD_VERSION!=2 && BOOST_THREAD_VERSION!=3 && BOOST_THREAD_VERSION!=4
105
+ #error "BOOST_THREAD_VERSION must be 2, 3 or 4"
54
106
  #endif
55
107
  #endif
56
108
 
109
+ // CHRONO
57
110
  // Uses Boost.Chrono by default if not stated the opposite defining BOOST_THREAD_DONT_USE_CHRONO
58
- #if ! defined BOOST_THREAD_DONT_USE_CHRONO && ! defined BOOST_THREAD_USES_CHRONO
111
+ #if ! defined BOOST_THREAD_DONT_USE_CHRONO \
112
+ && ! defined BOOST_THREAD_USES_CHRONO
59
113
  #define BOOST_THREAD_USES_CHRONO
60
114
  #endif
61
115
 
62
- // Don't provided by default in version 1.
63
- #if defined BOOST_THREAD_PROVIDES_EXPLICIT_LOCK_CONVERSION
64
- #define BOOST_THREAD_EXPLICIT_LOCK_CONVERSION explicit
65
- #else
66
- #define BOOST_THREAD_EXPLICIT_LOCK_CONVERSION
116
+ #if ! defined BOOST_THREAD_DONT_USE_ATOMIC \
117
+ && ! defined BOOST_THREAD_USES_ATOMIC
118
+ #define BOOST_THREAD_USES_ATOMIC
119
+ //#define BOOST_THREAD_DONT_USE_ATOMIC
67
120
  #endif
68
121
 
69
-
122
+ #if defined BOOST_THREAD_USES_ATOMIC
123
+ // Andrey Semashev
124
+ #define BOOST_THREAD_ONCE_ATOMIC
125
+ #else
126
+ //#elif ! defined BOOST_NO_CXX11_THREAD_LOCAL && ! defined BOOST_NO_THREAD_LOCAL && ! defined BOOST_THREAD_NO_UINT32_PSEUDO_ATOMIC
127
+ // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2444.html#Appendix
128
+ #define BOOST_THREAD_ONCE_FAST_EPOCH
129
+ #endif
70
130
  #if BOOST_THREAD_VERSION==2
71
- #if ! defined BOOST_THREAD_DONT_PROVIDE_PROMISE_LAZY && ! defined BOOST_THREAD_PROMISE_LAZY
72
- #define BOOST_THREAD_PROMISE_LAZY
131
+
132
+ // PROVIDE_PROMISE_LAZY
133
+ #if ! defined BOOST_THREAD_DONT_PROVIDE_PROMISE_LAZY \
134
+ && ! defined BOOST_THREAD_PROVIDES_PROMISE_LAZY
135
+ #define BOOST_THREAD_PROVIDES_PROMISE_LAZY
73
136
  #endif
74
- #if ! defined BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0
75
- #define BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0
137
+
138
+ // PROVIDE_THREAD_EQ
139
+ #if ! defined BOOST_THREAD_DONT_PROVIDE_THREAD_EQ \
140
+ && ! defined BOOST_THREAD_PROVIDES_THREAD_EQ
141
+ #define BOOST_THREAD_PROVIDES_THREAD_EQ
76
142
  #endif
143
+
77
144
  #endif
78
145
 
79
- #if BOOST_THREAD_VERSION==3
146
+ #if BOOST_THREAD_VERSION>=3
147
+
148
+ // ONCE_CXX11
149
+ // fixme BOOST_THREAD_PROVIDES_ONCE_CXX11 doesn't works when thread.cpp is compiled BOOST_THREAD_VERSION 3
80
150
  #if ! defined BOOST_THREAD_DONT_PROVIDE_ONCE_CXX11 \
81
151
  && ! defined BOOST_THREAD_PROVIDES_ONCE_CXX11
82
- #define BOOST_THREAD_PROVIDES_ONCE_CXX11
152
+ #define BOOST_THREAD_DONT_PROVIDE_ONCE_CXX11
83
153
  #endif
154
+
155
+ // THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLE
84
156
  #if ! defined BOOST_THREAD_DONT_PROVIDE_THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLE \
85
157
  && ! defined BOOST_THREAD_PROVIDES_THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLE
86
158
  #define BOOST_THREAD_PROVIDES_THREAD_DESTRUCTOR_CALLS_TERMINATE_IF_JOINABLE
87
159
  #endif
160
+
161
+ // THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLE
88
162
  #if ! defined BOOST_THREAD_DONT_PROVIDE_THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLE \
89
163
  && ! defined BOOST_THREAD_PROVIDES_THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLE
90
164
  #define BOOST_THREAD_PROVIDES_THREAD_MOVE_ASSIGN_CALLS_TERMINATE_IF_JOINABLE
91
165
  #endif
166
+
167
+ // PROVIDE_FUTURE
92
168
  #if ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE \
93
169
  && ! defined BOOST_THREAD_PROVIDES_FUTURE
94
170
  #define BOOST_THREAD_PROVIDES_FUTURE
95
171
  #endif
172
+
173
+ // FUTURE_CTOR_ALLOCATORS
96
174
  #if ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_CTOR_ALLOCATORS \
97
175
  && ! defined BOOST_THREAD_PROVIDES_FUTURE_CTOR_ALLOCATORS
98
176
  #define BOOST_THREAD_PROVIDES_FUTURE_CTOR_ALLOCATORS
99
177
  #endif
178
+
179
+ // SHARED_MUTEX_UPWARDS_CONVERSIONS
100
180
  #if ! defined BOOST_THREAD_DONT_PROVIDE_SHARED_MUTEX_UPWARDS_CONVERSIONS \
101
181
  && ! defined BOOST_THREAD_PROVIDES_SHARED_MUTEX_UPWARDS_CONVERSIONS
102
182
  #define BOOST_THREAD_PROVIDES_SHARED_MUTEX_UPWARDS_CONVERSIONS
103
183
  #endif
184
+
185
+ // PROVIDE_EXPLICIT_LOCK_CONVERSION
104
186
  #if ! defined BOOST_THREAD_DONT_PROVIDE_EXPLICIT_LOCK_CONVERSION \
105
187
  && ! defined BOOST_THREAD_PROVIDES_EXPLICIT_LOCK_CONVERSION
106
188
  #define BOOST_THREAD_PROVIDES_EXPLICIT_LOCK_CONVERSION
107
189
  #endif
190
+
191
+ // GENERIC_SHARED_MUTEX_ON_WIN
108
192
  #if ! defined BOOST_THREAD_DONT_PROVIDE_GENERIC_SHARED_MUTEX_ON_WIN \
109
193
  && ! defined BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN
110
194
  #define BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN
111
195
  #endif
112
- #if ! defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 \
113
- && ! defined BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_
114
- #define BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0
115
- #endif
196
+
197
+ // USE_MOVE
116
198
  #if ! defined BOOST_THREAD_DONT_USE_MOVE \
117
199
  && ! defined BOOST_THREAD_USES_MOVE
118
200
  #define BOOST_THREAD_USES_MOVE
@@ -120,17 +202,135 @@
120
202
 
121
203
  #endif
122
204
 
205
+ // deprecated since version 4
206
+ #if BOOST_THREAD_VERSION < 4
207
+
208
+ // NESTED_LOCKS
209
+ #if ! defined BOOST_THREAD_PROVIDES_NESTED_LOCKS \
210
+ && ! defined BOOST_THREAD_DONT_PROVIDE_NESTED_LOCKS
211
+ #define BOOST_THREAD_PROVIDES_NESTED_LOCKS
212
+ #endif
213
+
214
+ // CONDITION
215
+ #if ! defined BOOST_THREAD_PROVIDES_CONDITION \
216
+ && ! defined BOOST_THREAD_DONT_PROVIDE_CONDITION
217
+ #define BOOST_THREAD_PROVIDES_CONDITION
218
+ #endif
219
+
220
+ // USE_DATETIME
221
+ #if ! defined BOOST_THREAD_DONT_USE_DATETIME \
222
+ && ! defined BOOST_THREAD_USES_DATETIME
223
+ #define BOOST_THREAD_USES_DATETIME
224
+ #endif
225
+ #endif
226
+
227
+ #if BOOST_THREAD_VERSION>=4
228
+
229
+ // SIGNATURE_PACKAGED_TASK
230
+ #if ! defined BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK \
231
+ && ! defined BOOST_THREAD_DONT_PROVIDE_SIGNATURE_PACKAGED_TASK
232
+ #define BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK
233
+ #endif
234
+
235
+ // VARIADIC_THREAD
236
+ #if ! defined BOOST_THREAD_PROVIDES_VARIADIC_THREAD \
237
+ && ! defined BOOST_THREAD_DONT_PROVIDE_VARIADIC_THREAD
238
+
239
+ #if ! defined(BOOST_NO_SFINAE_EXPR) && \
240
+ ! defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && \
241
+ ! defined(BOOST_NO_CXX11_DECLTYPE) && \
242
+ ! defined(BOOST_NO_CXX11_DECLTYPE_N3276) && \
243
+ ! defined(BOOST_NO_CXX11_AUTO) && \
244
+ ! defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && \
245
+ ! defined(BOOST_NO_CXX11_HDR_TUPLE)
246
+
247
+ #define BOOST_THREAD_PROVIDES_VARIADIC_THREAD
248
+ #endif
249
+ #endif
250
+
251
+
252
+ // MAKE_READY_AT_THREAD_EXIT
253
+ #if ! defined BOOST_THREAD_PROVIDES_MAKE_READY_AT_THREAD_EXIT \
254
+ && ! defined BOOST_THREAD_DONT_PROVIDE_MAKE_READY_AT_THREAD_EXIT
255
+
256
+ //#if defined BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK && defined(BOOST_THREAD_PROVIDES_VARIADIC_THREAD)
257
+ #define BOOST_THREAD_PROVIDES_MAKE_READY_AT_THREAD_EXIT
258
+ //#endif
259
+ #endif
260
+
261
+ // FUTURE_CONTINUATION
262
+ #if ! defined BOOST_THREAD_PROVIDES_FUTURE_CONTINUATION \
263
+ && ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_CONTINUATION
264
+ #define BOOST_THREAD_PROVIDES_FUTURE_CONTINUATION
265
+ #endif
266
+
267
+ // FUTURE_INVALID_AFTER_GET
268
+ #if ! defined BOOST_THREAD_PROVIDES_FUTURE_INVALID_AFTER_GET \
269
+ && ! defined BOOST_THREAD_DONT_PROVIDE_FUTURE_INVALID_AFTER_GET
270
+ #define BOOST_THREAD_PROVIDES_FUTURE_INVALID_AFTER_GET
271
+ #endif
272
+
273
+ // NESTED_LOCKS
274
+ #if ! defined BOOST_THREAD_PROVIDES_NESTED_LOCKS \
275
+ && ! defined BOOST_THREAD_DONT_PROVIDE_NESTED_LOCKS
276
+ #define BOOST_THREAD_DONT_PROVIDE_NESTED_LOCKS
277
+ #endif
278
+
279
+ // CONDITION
280
+ #if ! defined BOOST_THREAD_PROVIDES_CONDITION \
281
+ && ! defined BOOST_THREAD_DONT_PROVIDE_CONDITION
282
+ #define BOOST_THREAD_DONT_PROVIDE_CONDITION
283
+ #endif
284
+
285
+ #endif // BOOST_THREAD_VERSION>=4
286
+
287
+ // INTERRUPTIONS
288
+ #if ! defined BOOST_THREAD_PROVIDES_INTERRUPTIONS \
289
+ && ! defined BOOST_THREAD_DONT_PROVIDE_INTERRUPTIONS
290
+ #define BOOST_THREAD_PROVIDES_INTERRUPTIONS
291
+ #endif
292
+
293
+ // CORRELATIONS
294
+
295
+ // EXPLICIT_LOCK_CONVERSION.
296
+ #if defined BOOST_THREAD_PROVIDES_EXPLICIT_LOCK_CONVERSION
297
+ #define BOOST_THREAD_EXPLICIT_LOCK_CONVERSION explicit
298
+ #else
299
+ #define BOOST_THREAD_EXPLICIT_LOCK_CONVERSION
300
+ #endif
301
+
123
302
  // BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN is defined if BOOST_THREAD_PROVIDES_SHARED_MUTEX_UPWARDS_CONVERSIONS
124
303
  #if defined BOOST_THREAD_PROVIDES_SHARED_MUTEX_UPWARDS_CONVERSIONS \
125
304
  && ! defined BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN
126
305
  #define BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN
127
306
  #endif
128
307
 
129
- // BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 defined by default up to Boost 1.52
308
+ // For C++11 call_once interface the compiler MUST support constexpr.
309
+ // Otherwise once_flag would be initialized during dynamic initialization stage, which is not thread-safe.
310
+ #if defined(BOOST_THREAD_PROVIDES_ONCE_CXX11)
311
+ #if defined(BOOST_NO_CXX11_CONSTEXPR)
312
+ #undef BOOST_THREAD_PROVIDES_ONCE_CXX11
313
+ #endif
314
+ #endif
315
+
316
+ #if defined(BOOST_THREAD_PLATFORM_WIN32) && defined BOOST_THREAD_DONT_USE_DATETIME
317
+ #undef BOOST_THREAD_DONT_USE_DATETIME
318
+ #define BOOST_THREAD_USES_DATETIME
319
+ #endif
320
+
321
+ #if defined(BOOST_THREAD_PLATFORM_WIN32) && defined BOOST_THREAD_DONT_USE_CHRONO
322
+ #undef BOOST_THREAD_DONT_USE_CHRONO
323
+ #define BOOST_THREAD_USES_CHRONO
324
+ #endif
325
+
326
+ // BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 defined by default up to Boost 1.55
130
327
  // BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0 defined by default up to Boost 1.55
131
- #if ! defined BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0 \
132
- && ! defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0
133
- #define BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0
328
+ #if defined BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0
329
+
330
+ #if ! defined BOOST_THREAD_PROVIDES_THREAD_EQ
331
+ #define BOOST_THREAD_PROVIDES_THREAD_EQ
332
+ #endif
333
+
134
334
  #endif
135
335
 
136
336
  #if BOOST_WORKAROUND(__BORLANDC__, < 0x600)
@@ -142,6 +342,13 @@
142
342
 
143
343
  #include <boost/thread/detail/platform.hpp>
144
344
 
345
+ #if defined(BOOST_THREAD_PLATFORM_WIN32)
346
+ #else
347
+ # if defined(BOOST_HAS_PTHREAD_DELAY_NP) || defined(BOOST_HAS_NANOSLEEP)
348
+ # define BOOST_THREAD_SLEEP_FOR_IS_STEADY
349
+ # endif
350
+ #endif
351
+
145
352
  // provided for backwards compatibility, since this
146
353
  // macro was used for several releases by mistake.
147
354
  #if defined(BOOST_THREAD_DYN_DLL) && ! defined BOOST_THREAD_DYN_LINK
@@ -160,8 +367,9 @@
160
367
  #elif defined(BOOST_THREAD_USE_LIB) //Use lib
161
368
  #else //Use default
162
369
  # if defined(BOOST_THREAD_PLATFORM_WIN32)
163
- # if defined(BOOST_MSVC) || defined(BOOST_INTEL_WIN)
164
- //For compilers supporting auto-tss cleanup
370
+ # if defined(BOOST_MSVC) || defined(BOOST_INTEL_WIN) \
371
+ || defined(__MINGW32__) || defined(MINGW32) || defined(BOOST_MINGW32)
372
+ //For compilers supporting auto-tss cleanup
165
373
  //with Boost.Threads lib, use Boost.Threads lib
166
374
  # define BOOST_THREAD_USE_LIB
167
375
  # else
@@ -0,0 +1,93 @@
1
+ // Distributed under the Boost Software License, Version 1.0. (See
2
+ // accompanying file LICENSE_1_0.txt or copy at
3
+ // http://www.boost.org/LICENSE_1_0.txt)
4
+ // (C) Copyright 2013 Vicente J. Botet Escriba
5
+
6
+ #ifndef BOOST_THREAD_COUNTER_HPP
7
+ #define BOOST_THREAD_COUNTER_HPP
8
+
9
+ #include <boost/thread/detail/config.hpp>
10
+ #include <boost/thread/detail/delete.hpp>
11
+
12
+ //#include <boost/thread/mutex.hpp>
13
+ //#include <boost/thread/lock_types.hpp>
14
+ #include <boost/thread/condition_variable.hpp>
15
+ #include <boost/chrono/duration.hpp>
16
+ #include <boost/chrono/time_point.hpp>
17
+ #include <boost/assert.hpp>
18
+
19
+ #include <boost/config/abi_prefix.hpp>
20
+
21
+ namespace boost
22
+ {
23
+ namespace detail {
24
+ struct counter
25
+ {
26
+ condition_variable cond_;
27
+ std::size_t value_;
28
+
29
+ counter(std::size_t value)
30
+ : value_(value)
31
+ {
32
+
33
+ }
34
+ counter& operator=(counter const& rhs)
35
+ {
36
+ value_ = rhs.value_;
37
+ return *this;
38
+ }
39
+ counter& operator=(std::size_t value)
40
+ {
41
+ value_ = value;
42
+ return *this;
43
+ }
44
+
45
+ operator std::size_t() const
46
+ {
47
+ return value_;
48
+ }
49
+ operator std::size_t&()
50
+ {
51
+ return value_;
52
+ }
53
+
54
+ void inc_and_notify_all()
55
+ {
56
+ ++value_;
57
+ cond_.notify_all();
58
+ }
59
+
60
+ void dec_and_notify_all()
61
+ {
62
+ --value_;
63
+ cond_.notify_all();
64
+ }
65
+ void assign_and_notify_all(counter const& rhs)
66
+ {
67
+ value_ = rhs.value_;
68
+ cond_.notify_all();
69
+ }
70
+ void assign_and_notify_all(std::size_t value)
71
+ {
72
+ value_ = value;
73
+ cond_.notify_all();
74
+ }
75
+ };
76
+ struct counter_is_not_zero
77
+ {
78
+ counter_is_not_zero(const counter& count) : count_(count) {}
79
+ bool operator()() const { return count_ != 0; }
80
+ const counter& count_;
81
+ };
82
+ struct counter_is_zero
83
+ {
84
+ counter_is_zero(const counter& count) : count_(count) {}
85
+ bool operator()() const { return count_ == 0; }
86
+ const counter& count_;
87
+ };
88
+ }
89
+ } // namespace boost
90
+
91
+ #include <boost/config/abi_suffix.hpp>
92
+
93
+ #endif