passenger_dudemeister 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1565) hide show
  1. data/DEVELOPERS.TXT +113 -0
  2. data/INSTALL +6 -0
  3. data/LICENSE +19 -0
  4. data/NEWS +429 -0
  5. data/PACKAGING.TXT +25 -0
  6. data/README +45 -0
  7. data/Rakefile +56 -0
  8. data/bin/passenger +32 -0
  9. data/bin/passenger-config +46 -0
  10. data/bin/passenger-install-apache2-module +237 -0
  11. data/bin/passenger-install-nginx-module +476 -0
  12. data/bin/passenger-make-enterprisey +82 -0
  13. data/bin/passenger-memory-stats +171 -0
  14. data/bin/passenger-status +211 -0
  15. data/build/agents.rb +80 -0
  16. data/build/apache2.rb +168 -0
  17. data/build/basics.rb +105 -0
  18. data/build/common_library.rb +268 -0
  19. data/build/config.rb +42 -0
  20. data/build/cplusplus_support.rb +61 -0
  21. data/build/cxx_tests.rb +219 -0
  22. data/build/documentation.rb +84 -0
  23. data/build/gempackagetask.rb +99 -0
  24. data/build/integration_tests.rb +64 -0
  25. data/build/misc.rb +153 -0
  26. data/build/nginx.rb +72 -0
  27. data/build/oxt_tests.rb +59 -0
  28. data/build/packagetask.rb +186 -0
  29. data/build/packaging.rb +194 -0
  30. data/build/rake_extensions.rb +182 -0
  31. data/build/rdoctask.rb +209 -0
  32. data/build/rpm.rb +98 -0
  33. data/build/ruby_extension.rb +52 -0
  34. data/build/ruby_tests.rb +49 -0
  35. data/build/test_basics.rb +43 -0
  36. data/debian/README.Debian +15 -0
  37. data/debian/changelog +185 -0
  38. data/debian/compat +1 -0
  39. data/debian/control +49 -0
  40. data/debian/copyright +20 -0
  41. data/debian/libapache2-mod-passenger.install +1 -0
  42. data/debian/libapache2-mod-passenger.postinst +36 -0
  43. data/debian/libapache2-mod-passenger.prerm +15 -0
  44. data/debian/passenger-common.install +4 -0
  45. data/debian/passenger.conf +4 -0
  46. data/debian/passenger.load +1 -0
  47. data/debian/prerm +2 -0
  48. data/debian/rules +37 -0
  49. data/debian/watch +3 -0
  50. data/dev/copy_boost_headers.rb +155 -0
  51. data/dev/find_owner_pipe_leaks.rb +128 -0
  52. data/dev/render_error_pages.rb +116 -0
  53. data/doc/ApplicationPool algorithm.txt +615 -0
  54. data/doc/Architectural overview.html +1 -0
  55. data/doc/Architectural overview.txt +334 -0
  56. data/doc/Doxyfile +241 -0
  57. data/doc/Security of user switching support.html +1 -0
  58. data/doc/Security of user switching support.txt +197 -0
  59. data/doc/Users guide Apache.html +1 -0
  60. data/doc/Users guide Apache.txt +2208 -0
  61. data/doc/Users guide Nginx.html +1 -0
  62. data/doc/Users guide Nginx.txt +1394 -0
  63. data/doc/Users guide Standalone.html +1 -0
  64. data/doc/Users guide Standalone.txt +40 -0
  65. data/doc/definitions.h +5 -0
  66. data/doc/images/by_sa.png +0 -0
  67. data/doc/images/conservative_spawning.png +0 -0
  68. data/doc/images/conservative_spawning.svg +248 -0
  69. data/doc/images/icons/README +5 -0
  70. data/doc/images/icons/callouts/1.png +0 -0
  71. data/doc/images/icons/callouts/10.png +0 -0
  72. data/doc/images/icons/callouts/11.png +0 -0
  73. data/doc/images/icons/callouts/12.png +0 -0
  74. data/doc/images/icons/callouts/13.png +0 -0
  75. data/doc/images/icons/callouts/14.png +0 -0
  76. data/doc/images/icons/callouts/15.png +0 -0
  77. data/doc/images/icons/callouts/2.png +0 -0
  78. data/doc/images/icons/callouts/3.png +0 -0
  79. data/doc/images/icons/callouts/4.png +0 -0
  80. data/doc/images/icons/callouts/5.png +0 -0
  81. data/doc/images/icons/callouts/6.png +0 -0
  82. data/doc/images/icons/callouts/7.png +0 -0
  83. data/doc/images/icons/callouts/8.png +0 -0
  84. data/doc/images/icons/callouts/9.png +0 -0
  85. data/doc/images/icons/caution.png +0 -0
  86. data/doc/images/icons/example.png +0 -0
  87. data/doc/images/icons/home.png +0 -0
  88. data/doc/images/icons/important.png +0 -0
  89. data/doc/images/icons/next.png +0 -0
  90. data/doc/images/icons/note.png +0 -0
  91. data/doc/images/icons/prev.png +0 -0
  92. data/doc/images/icons/tip.png +0 -0
  93. data/doc/images/icons/up.png +0 -0
  94. data/doc/images/icons/warning.png +0 -0
  95. data/doc/images/passenger_architecture.png +0 -0
  96. data/doc/images/passenger_architecture.svg +401 -0
  97. data/doc/images/phusion_banner.png +0 -0
  98. data/doc/images/smart-lv2.png +0 -0
  99. data/doc/images/smart-lv2.svg +320 -0
  100. data/doc/images/spawn_server_architecture.png +0 -0
  101. data/doc/images/spawn_server_architecture.svg +655 -0
  102. data/doc/images/typical_isolated_web_application.png +0 -0
  103. data/doc/images/typical_isolated_web_application.svg +213 -0
  104. data/doc/rdoc/classes/ConditionVariable.html +215 -0
  105. data/doc/rdoc/classes/Exception.html +120 -0
  106. data/doc/rdoc/classes/GC.html +113 -0
  107. data/doc/rdoc/classes/IO.html +221 -0
  108. data/doc/rdoc/classes/PhusionPassenger.html +397 -0
  109. data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +180 -0
  110. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +647 -0
  111. data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +654 -0
  112. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/InvalidPassword.html +92 -0
  113. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerAlreadyStarted.html +97 -0
  114. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerError.html +96 -0
  115. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerNotStarted.html +97 -0
  116. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/UnknownMessage.html +96 -0
  117. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +619 -0
  118. data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +142 -0
  119. data/doc/rdoc/classes/PhusionPassenger/AdminTools/MemoryStats.html +368 -0
  120. data/doc/rdoc/classes/PhusionPassenger/AdminTools/MemoryStats/Process.html +231 -0
  121. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance.html +588 -0
  122. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/CorruptedDirectoryError.html +92 -0
  123. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/GenerationsAbsentError.html +92 -0
  124. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Group.html +147 -0
  125. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Process.html +279 -0
  126. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/RoleDeniedError.html +92 -0
  127. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/StaleDirectoryError.html +92 -0
  128. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Stats.html +123 -0
  129. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/UnsupportedGenerationStructureVersionError.html +92 -0
  130. data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger.html +341 -0
  131. data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger/Log.html +294 -0
  132. data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger/SharedData.html +199 -0
  133. data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +155 -0
  134. data/doc/rdoc/classes/PhusionPassenger/AppProcess.html +367 -0
  135. data/doc/rdoc/classes/PhusionPassenger/ClassicRails.html +95 -0
  136. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/ApplicationSpawner.html +351 -0
  137. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/ApplicationSpawner/Error.html +98 -0
  138. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/CGIFixed.html +200 -0
  139. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/FrameworkSpawner.html +410 -0
  140. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/FrameworkSpawner/Error.html +98 -0
  141. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/RequestHandler.html +156 -0
  142. data/doc/rdoc/classes/PhusionPassenger/ClassicRailsExtensions.html +115 -0
  143. data/doc/rdoc/classes/PhusionPassenger/ClassicRailsExtensions/AnalyticsLogging.html +202 -0
  144. data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +172 -0
  145. data/doc/rdoc/classes/PhusionPassenger/DebugLogging.html +273 -0
  146. data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +145 -0
  147. data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +162 -0
  148. data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +141 -0
  149. data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +92 -0
  150. data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +673 -0
  151. data/doc/rdoc/classes/PhusionPassenger/MessageChannel/InvalidHashError.html +92 -0
  152. data/doc/rdoc/classes/PhusionPassenger/MessageClient.html +415 -0
  153. data/doc/rdoc/classes/PhusionPassenger/NativeSupportLoader.html +134 -0
  154. data/doc/rdoc/classes/PhusionPassenger/Packaging.html +129 -0
  155. data/doc/rdoc/classes/PhusionPassenger/PlatformInfo.html +1972 -0
  156. data/doc/rdoc/classes/PhusionPassenger/Plugin.html +237 -0
  157. data/doc/rdoc/classes/PhusionPassenger/Rack.html +91 -0
  158. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +312 -0
  159. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner/Error.html +98 -0
  160. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +218 -0
  161. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions.html +114 -0
  162. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging.html +259 -0
  163. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ACExtension.html +139 -0
  164. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ASBenchmarkableExtension.html +118 -0
  165. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ExceptionLogger.html +135 -0
  166. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +378 -0
  167. data/doc/rdoc/classes/PhusionPassenger/Standalone.html +111 -0
  168. data/doc/rdoc/classes/PhusionPassenger/Standalone/AppFinder.html +252 -0
  169. data/doc/rdoc/classes/PhusionPassenger/Standalone/Command.html +161 -0
  170. data/doc/rdoc/classes/PhusionPassenger/Standalone/ConfigFile.html +368 -0
  171. data/doc/rdoc/classes/PhusionPassenger/Standalone/ConfigFile/DisallowedContextError.html +132 -0
  172. data/doc/rdoc/classes/PhusionPassenger/Standalone/HelpCommand.html +151 -0
  173. data/doc/rdoc/classes/PhusionPassenger/Standalone/Main.html +189 -0
  174. data/doc/rdoc/classes/PhusionPassenger/Standalone/PackageRuntimeCommand.html +177 -0
  175. data/doc/rdoc/classes/PhusionPassenger/Standalone/RuntimeInstaller.html +341 -0
  176. data/doc/rdoc/classes/PhusionPassenger/Standalone/StartCommand.html +203 -0
  177. data/doc/rdoc/classes/PhusionPassenger/Standalone/StatusCommand.html +156 -0
  178. data/doc/rdoc/classes/PhusionPassenger/Standalone/StopCommand.html +168 -0
  179. data/doc/rdoc/classes/PhusionPassenger/Standalone/Utils.html +86 -0
  180. data/doc/rdoc/classes/PhusionPassenger/Standalone/VersionCommand.html +135 -0
  181. data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +125 -0
  182. data/doc/rdoc/classes/PhusionPassenger/Utils.html +1543 -0
  183. data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher.html +204 -0
  184. data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher/DirInfo.html +171 -0
  185. data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher/FileInfo.html +140 -0
  186. data/doc/rdoc/classes/PhusionPassenger/Utils/HostsFileParser.html +260 -0
  187. data/doc/rdoc/classes/PhusionPassenger/Utils/PseudoIO.html +169 -0
  188. data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput.html +265 -0
  189. data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput/Tempfile.html +120 -0
  190. data/doc/rdoc/classes/PhusionPassenger/Utils/UnseekableSocket.html +561 -0
  191. data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +140 -0
  192. data/doc/rdoc/classes/PhusionPassenger/WSGI.html +89 -0
  193. data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +182 -0
  194. data/doc/rdoc/classes/Process.html +115 -0
  195. data/doc/rdoc/classes/Signal.html +139 -0
  196. data/doc/rdoc/created.rid +1 -0
  197. data/doc/rdoc/files/DEVELOPERS_TXT.html +280 -0
  198. data/doc/rdoc/files/README.html +157 -0
  199. data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +130 -0
  200. data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +135 -0
  201. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +126 -0
  202. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +128 -0
  203. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/memory_stats_rb.html +126 -0
  204. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/server_instance_rb.html +132 -0
  205. data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +122 -0
  206. data/doc/rdoc/files/lib/phusion_passenger/analytics_logger_rb.html +129 -0
  207. data/doc/rdoc/files/lib/phusion_passenger/app_process_rb.html +127 -0
  208. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/application_spawner_rb.html +141 -0
  209. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/cgi_fixed_rb.html +126 -0
  210. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/framework_spawner_rb.html +146 -0
  211. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/request_handler_rb.html +125 -0
  212. data/doc/rdoc/files/lib/phusion_passenger/classic_rails_extensions/init_rb.html +132 -0
  213. data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +126 -0
  214. data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +122 -0
  215. data/doc/rdoc/files/lib/phusion_passenger/debug_logging_rb.html +122 -0
  216. data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +147 -0
  217. data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +122 -0
  218. data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +127 -0
  219. data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +120 -0
  220. data/doc/rdoc/files/lib/phusion_passenger/message_client_rb.html +127 -0
  221. data/doc/rdoc/files/lib/phusion_passenger/native_support_rb.html +132 -0
  222. data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +122 -0
  223. data/doc/rdoc/files/lib/phusion_passenger/platform_info/apache_rb.html +127 -0
  224. data/doc/rdoc/files/lib/phusion_passenger/platform_info/binary_compatibility_rb.html +129 -0
  225. data/doc/rdoc/files/lib/phusion_passenger/platform_info/compiler_rb.html +127 -0
  226. data/doc/rdoc/files/lib/phusion_passenger/platform_info/curl_rb.html +126 -0
  227. data/doc/rdoc/files/lib/phusion_passenger/platform_info/documentation_tools_rb.html +126 -0
  228. data/doc/rdoc/files/lib/phusion_passenger/platform_info/linux_rb.html +126 -0
  229. data/doc/rdoc/files/lib/phusion_passenger/platform_info/operating_system_rb.html +127 -0
  230. data/doc/rdoc/files/lib/phusion_passenger/platform_info/ruby_rb.html +128 -0
  231. data/doc/rdoc/files/lib/phusion_passenger/platform_info/zlib_rb.html +126 -0
  232. data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +122 -0
  233. data/doc/rdoc/files/lib/phusion_passenger/plugin_rb.html +127 -0
  234. data/doc/rdoc/files/lib/phusion_passenger/public_api_rb.html +127 -0
  235. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +137 -0
  236. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +125 -0
  237. data/doc/rdoc/files/lib/phusion_passenger/rails3_extensions/init_rb.html +127 -0
  238. data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +122 -0
  239. data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +160 -0
  240. data/doc/rdoc/files/lib/phusion_passenger/standalone/app_finder_rb.html +127 -0
  241. data/doc/rdoc/files/lib/phusion_passenger/standalone/command_rb.html +136 -0
  242. data/doc/rdoc/files/lib/phusion_passenger/standalone/config_file_rb.html +126 -0
  243. data/doc/rdoc/files/lib/phusion_passenger/standalone/help_command_rb.html +126 -0
  244. data/doc/rdoc/files/lib/phusion_passenger/standalone/main_rb.html +126 -0
  245. data/doc/rdoc/files/lib/phusion_passenger/standalone/package_runtime_command_rb.html +127 -0
  246. data/doc/rdoc/files/lib/phusion_passenger/standalone/runtime_installer_rb.html +133 -0
  247. data/doc/rdoc/files/lib/phusion_passenger/standalone/start_command_rb.html +136 -0
  248. data/doc/rdoc/files/lib/phusion_passenger/standalone/status_command_rb.html +126 -0
  249. data/doc/rdoc/files/lib/phusion_passenger/standalone/stop_command_rb.html +126 -0
  250. data/doc/rdoc/files/lib/phusion_passenger/standalone/utils_rb.html +126 -0
  251. data/doc/rdoc/files/lib/phusion_passenger/standalone/version_command_rb.html +127 -0
  252. data/doc/rdoc/files/lib/phusion_passenger/utils/file_system_watcher_rb.html +126 -0
  253. data/doc/rdoc/files/lib/phusion_passenger/utils/hosts_file_parser_rb.html +120 -0
  254. data/doc/rdoc/files/lib/phusion_passenger/utils/rewindable_input_rb.html +100 -0
  255. data/doc/rdoc/files/lib/phusion_passenger/utils/tmpdir_rb.html +122 -0
  256. data/doc/rdoc/files/lib/phusion_passenger/utils/unseekable_socket_rb.html +126 -0
  257. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +179 -0
  258. data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +132 -0
  259. data/doc/rdoc/fr_class_index.html +138 -0
  260. data/doc/rdoc/fr_file_index.html +108 -0
  261. data/doc/rdoc/fr_method_index.html +433 -0
  262. data/doc/rdoc/index.html +26 -0
  263. data/doc/rdoc/rdoc-style.css +187 -0
  264. data/doc/template/horo.rb +613 -0
  265. data/doc/users_guide_snippets/analysis_and_system_maintenance.txt +201 -0
  266. data/doc/users_guide_snippets/appendix_a_about.txt +13 -0
  267. data/doc/users_guide_snippets/appendix_b_terminology.txt +63 -0
  268. data/doc/users_guide_snippets/appendix_c_spawning_methods.txt +303 -0
  269. data/doc/users_guide_snippets/global_queueing_explained.txt +74 -0
  270. data/doc/users_guide_snippets/passenger_spawn_method.txt +49 -0
  271. data/doc/users_guide_snippets/rackup_specifications.txt +71 -0
  272. data/doc/users_guide_snippets/tips.txt +207 -0
  273. data/doc/users_guide_snippets/under_the_hood/page_caching_support.txt +22 -0
  274. data/ext/apache2/Bucket.cpp +190 -0
  275. data/ext/apache2/Bucket.h +87 -0
  276. data/ext/apache2/Configuration.cpp +717 -0
  277. data/ext/apache2/Configuration.h +51 -0
  278. data/ext/apache2/Configuration.hpp +462 -0
  279. data/ext/apache2/DirectoryMapper.h +280 -0
  280. data/ext/apache2/HelperAgent.cpp +365 -0
  281. data/ext/apache2/Hooks.cpp +1757 -0
  282. data/ext/apache2/Hooks.h +45 -0
  283. data/ext/apache2/mod_passenger.c +44 -0
  284. data/ext/boost/algorithm/string/case_conv.hpp +176 -0
  285. data/ext/boost/algorithm/string/compare.hpp +199 -0
  286. data/ext/boost/algorithm/string/concept.hpp +83 -0
  287. data/ext/boost/algorithm/string/config.hpp +28 -0
  288. data/ext/boost/algorithm/string/constants.hpp +36 -0
  289. data/ext/boost/algorithm/string/detail/case_conv.hpp +121 -0
  290. data/ext/boost/algorithm/string/detail/find_format.hpp +204 -0
  291. data/ext/boost/algorithm/string/detail/find_format_all.hpp +273 -0
  292. data/ext/boost/algorithm/string/detail/find_format_store.hpp +89 -0
  293. data/ext/boost/algorithm/string/detail/finder.hpp +646 -0
  294. data/ext/boost/algorithm/string/detail/formatter.hpp +94 -0
  295. data/ext/boost/algorithm/string/detail/replace_storage.hpp +159 -0
  296. data/ext/boost/algorithm/string/detail/sequence.hpp +200 -0
  297. data/ext/boost/algorithm/string/detail/util.hpp +106 -0
  298. data/ext/boost/algorithm/string/erase.hpp +844 -0
  299. data/ext/boost/algorithm/string/find_format.hpp +287 -0
  300. data/ext/boost/algorithm/string/finder.hpp +270 -0
  301. data/ext/boost/algorithm/string/formatter.hpp +103 -0
  302. data/ext/boost/algorithm/string/replace.hpp +928 -0
  303. data/ext/boost/algorithm/string/sequence_traits.hpp +193 -0
  304. data/ext/boost/algorithm/string/yes_no_type.hpp +33 -0
  305. data/ext/boost/assert.hpp +50 -0
  306. data/ext/boost/bind.hpp +24 -0
  307. data/ext/boost/bind/arg.hpp +62 -0
  308. data/ext/boost/bind/bind.hpp +1751 -0
  309. data/ext/boost/bind/bind_cc.hpp +117 -0
  310. data/ext/boost/bind/bind_mf2_cc.hpp +228 -0
  311. data/ext/boost/bind/bind_mf_cc.hpp +227 -0
  312. data/ext/boost/bind/bind_template.hpp +345 -0
  313. data/ext/boost/bind/mem_fn.hpp +389 -0
  314. data/ext/boost/bind/mem_fn_cc.hpp +103 -0
  315. data/ext/boost/bind/mem_fn_template.hpp +1047 -0
  316. data/ext/boost/bind/placeholders.hpp +69 -0
  317. data/ext/boost/bind/storage.hpp +475 -0
  318. data/ext/boost/call_traits.hpp +24 -0
  319. data/ext/boost/checked_delete.hpp +69 -0
  320. data/ext/boost/concept/assert.hpp +46 -0
  321. data/ext/boost/concept/detail/backward_compatibility.hpp +16 -0
  322. data/ext/boost/concept/detail/concept_def.hpp +51 -0
  323. data/ext/boost/concept/detail/concept_undef.hpp +5 -0
  324. data/ext/boost/concept/detail/general.hpp +75 -0
  325. data/ext/boost/concept/detail/has_constraints.hpp +50 -0
  326. data/ext/boost/concept/usage.hpp +44 -0
  327. data/ext/boost/concept_check.hpp +1007 -0
  328. data/ext/boost/config.hpp +70 -0
  329. data/ext/boost/config/abi/borland_prefix.hpp +27 -0
  330. data/ext/boost/config/abi/borland_suffix.hpp +12 -0
  331. data/ext/boost/config/abi/msvc_prefix.hpp +22 -0
  332. data/ext/boost/config/abi/msvc_suffix.hpp +8 -0
  333. data/ext/boost/config/abi_prefix.hpp +25 -0
  334. data/ext/boost/config/abi_suffix.hpp +27 -0
  335. data/ext/boost/config/auto_link.hpp +420 -0
  336. data/ext/boost/config/compiler/borland.hpp +275 -0
  337. data/ext/boost/config/compiler/clang.hpp +62 -0
  338. data/ext/boost/config/compiler/codegear.hpp +177 -0
  339. data/ext/boost/config/compiler/comeau.hpp +59 -0
  340. data/ext/boost/config/compiler/common_edg.hpp +99 -0
  341. data/ext/boost/config/compiler/compaq_cxx.hpp +19 -0
  342. data/ext/boost/config/compiler/digitalmars.hpp +93 -0
  343. data/ext/boost/config/compiler/gcc.hpp +243 -0
  344. data/ext/boost/config/compiler/gcc_xml.hpp +55 -0
  345. data/ext/boost/config/compiler/greenhills.hpp +28 -0
  346. data/ext/boost/config/compiler/hp_acc.hpp +127 -0
  347. data/ext/boost/config/compiler/intel.hpp +196 -0
  348. data/ext/boost/config/compiler/kai.hpp +33 -0
  349. data/ext/boost/config/compiler/metrowerks.hpp +139 -0
  350. data/ext/boost/config/compiler/mpw.hpp +81 -0
  351. data/ext/boost/config/compiler/nvcc.hpp +86 -0
  352. data/ext/boost/config/compiler/pgi.hpp +77 -0
  353. data/ext/boost/config/compiler/sgi_mipspro.hpp +29 -0
  354. data/ext/boost/config/compiler/sunpro_cc.hpp +144 -0
  355. data/ext/boost/config/compiler/vacpp.hpp +96 -0
  356. data/ext/boost/config/compiler/visualc.hpp +274 -0
  357. data/ext/boost/config/no_tr1/cmath.hpp +28 -0
  358. data/ext/boost/config/no_tr1/complex.hpp +28 -0
  359. data/ext/boost/config/no_tr1/functional.hpp +28 -0
  360. data/ext/boost/config/no_tr1/memory.hpp +28 -0
  361. data/ext/boost/config/no_tr1/utility.hpp +28 -0
  362. data/ext/boost/config/platform/aix.hpp +33 -0
  363. data/ext/boost/config/platform/amigaos.hpp +15 -0
  364. data/ext/boost/config/platform/beos.hpp +26 -0
  365. data/ext/boost/config/platform/bsd.hpp +86 -0
  366. data/ext/boost/config/platform/cygwin.hpp +48 -0
  367. data/ext/boost/config/platform/hpux.hpp +87 -0
  368. data/ext/boost/config/platform/irix.hpp +31 -0
  369. data/ext/boost/config/platform/linux.hpp +98 -0
  370. data/ext/boost/config/platform/macos.hpp +86 -0
  371. data/ext/boost/config/platform/qnxnto.hpp +31 -0
  372. data/ext/boost/config/platform/solaris.hpp +28 -0
  373. data/ext/boost/config/platform/symbian.hpp +94 -0
  374. data/ext/boost/config/platform/vxworks.hpp +31 -0
  375. data/ext/boost/config/platform/win32.hpp +65 -0
  376. data/ext/boost/config/posix_features.hpp +95 -0
  377. data/ext/boost/config/requires_threads.hpp +92 -0
  378. data/ext/boost/config/select_compiler_config.hpp +129 -0
  379. data/ext/boost/config/select_platform_config.hpp +98 -0
  380. data/ext/boost/config/select_stdlib_config.hpp +77 -0
  381. data/ext/boost/config/stdlib/dinkumware.hpp +148 -0
  382. data/ext/boost/config/stdlib/libcomo.hpp +72 -0
  383. data/ext/boost/config/stdlib/libstdcpp3.hpp +128 -0
  384. data/ext/boost/config/stdlib/modena.hpp +56 -0
  385. data/ext/boost/config/stdlib/msl.hpp +84 -0
  386. data/ext/boost/config/stdlib/roguewave.hpp +180 -0
  387. data/ext/boost/config/stdlib/sgi.hpp +137 -0
  388. data/ext/boost/config/stdlib/stlport.hpp +237 -0
  389. data/ext/boost/config/stdlib/vacpp.hpp +44 -0
  390. data/ext/boost/config/suffix.hpp +639 -0
  391. data/ext/boost/config/user.hpp +124 -0
  392. data/ext/boost/config/warning_disable.hpp +47 -0
  393. data/ext/boost/cstdint.hpp +504 -0
  394. data/ext/boost/current_function.hpp +67 -0
  395. data/ext/boost/date_time/adjust_functors.hpp +178 -0
  396. data/ext/boost/date_time/c_time.hpp +107 -0
  397. data/ext/boost/date_time/compiler_config.hpp +171 -0
  398. data/ext/boost/date_time/constrained_value.hpp +121 -0
  399. data/ext/boost/date_time/date.hpp +208 -0
  400. data/ext/boost/date_time/date_clock_device.hpp +77 -0
  401. data/ext/boost/date_time/date_defs.hpp +26 -0
  402. data/ext/boost/date_time/date_duration.hpp +146 -0
  403. data/ext/boost/date_time/date_duration_types.hpp +269 -0
  404. data/ext/boost/date_time/date_facet.hpp +764 -0
  405. data/ext/boost/date_time/date_format_simple.hpp +159 -0
  406. data/ext/boost/date_time/date_formatting.hpp +127 -0
  407. data/ext/boost/date_time/date_formatting_limited.hpp +121 -0
  408. data/ext/boost/date_time/date_formatting_locales.hpp +233 -0
  409. data/ext/boost/date_time/date_generator_formatter.hpp +265 -0
  410. data/ext/boost/date_time/date_generator_parser.hpp +330 -0
  411. data/ext/boost/date_time/date_generators.hpp +509 -0
  412. data/ext/boost/date_time/date_iterator.hpp +101 -0
  413. data/ext/boost/date_time/date_names_put.hpp +320 -0
  414. data/ext/boost/date_time/date_parsing.hpp +316 -0
  415. data/ext/boost/date_time/dst_rules.hpp +391 -0
  416. data/ext/boost/date_time/filetime_functions.hpp +170 -0
  417. data/ext/boost/date_time/format_date_parser.hpp +743 -0
  418. data/ext/boost/date_time/gregorian/conversion.hpp +68 -0
  419. data/ext/boost/date_time/gregorian/formatters.hpp +162 -0
  420. data/ext/boost/date_time/gregorian/formatters_limited.hpp +81 -0
  421. data/ext/boost/date_time/gregorian/greg_calendar.hpp +48 -0
  422. data/ext/boost/date_time/gregorian/greg_date.hpp +136 -0
  423. data/ext/boost/date_time/gregorian/greg_day.hpp +57 -0
  424. data/ext/boost/date_time/gregorian/greg_day_of_year.hpp +38 -0
  425. data/ext/boost/date_time/gregorian/greg_duration.hpp +134 -0
  426. data/ext/boost/date_time/gregorian/greg_duration_types.hpp +43 -0
  427. data/ext/boost/date_time/gregorian/greg_month.hpp +105 -0
  428. data/ext/boost/date_time/gregorian/greg_weekday.hpp +66 -0
  429. data/ext/boost/date_time/gregorian/greg_year.hpp +53 -0
  430. data/ext/boost/date_time/gregorian/greg_ymd.hpp +33 -0
  431. data/ext/boost/date_time/gregorian/gregorian.hpp +38 -0
  432. data/ext/boost/date_time/gregorian/gregorian_io.hpp +784 -0
  433. data/ext/boost/date_time/gregorian/gregorian_types.hpp +109 -0
  434. data/ext/boost/date_time/gregorian/parsers.hpp +91 -0
  435. data/ext/boost/date_time/gregorian_calendar.hpp +70 -0
  436. data/ext/boost/date_time/gregorian_calendar.ipp +219 -0
  437. data/ext/boost/date_time/int_adapter.hpp +509 -0
  438. data/ext/boost/date_time/iso_format.hpp +303 -0
  439. data/ext/boost/date_time/locale_config.hpp +31 -0
  440. data/ext/boost/date_time/microsec_time_clock.hpp +127 -0
  441. data/ext/boost/date_time/parse_format_base.hpp +29 -0
  442. data/ext/boost/date_time/period.hpp +377 -0
  443. data/ext/boost/date_time/period_formatter.hpp +196 -0
  444. data/ext/boost/date_time/period_parser.hpp +198 -0
  445. data/ext/boost/date_time/posix_time/conversion.hpp +94 -0
  446. data/ext/boost/date_time/posix_time/date_duration_operators.hpp +114 -0
  447. data/ext/boost/date_time/posix_time/posix_time.hpp +39 -0
  448. data/ext/boost/date_time/posix_time/posix_time_config.hpp +178 -0
  449. data/ext/boost/date_time/posix_time/posix_time_duration.hpp +82 -0
  450. data/ext/boost/date_time/posix_time/posix_time_io.hpp +239 -0
  451. data/ext/boost/date_time/posix_time/posix_time_system.hpp +68 -0
  452. data/ext/boost/date_time/posix_time/posix_time_types.hpp +55 -0
  453. data/ext/boost/date_time/posix_time/ptime.hpp +65 -0
  454. data/ext/boost/date_time/posix_time/time_formatters.hpp +289 -0
  455. data/ext/boost/date_time/posix_time/time_parsers.hpp +44 -0
  456. data/ext/boost/date_time/posix_time/time_period.hpp +29 -0
  457. data/ext/boost/date_time/special_defs.hpp +25 -0
  458. data/ext/boost/date_time/special_values_formatter.hpp +96 -0
  459. data/ext/boost/date_time/special_values_parser.hpp +159 -0
  460. data/ext/boost/date_time/string_convert.hpp +33 -0
  461. data/ext/boost/date_time/string_parse_tree.hpp +278 -0
  462. data/ext/boost/date_time/strings_from_facet.hpp +125 -0
  463. data/ext/boost/date_time/time.hpp +191 -0
  464. data/ext/boost/date_time/time_clock.hpp +83 -0
  465. data/ext/boost/date_time/time_defs.hpp +43 -0
  466. data/ext/boost/date_time/time_duration.hpp +282 -0
  467. data/ext/boost/date_time/time_facet.hpp +1367 -0
  468. data/ext/boost/date_time/time_formatting_streams.hpp +122 -0
  469. data/ext/boost/date_time/time_iterator.hpp +52 -0
  470. data/ext/boost/date_time/time_parsing.hpp +321 -0
  471. data/ext/boost/date_time/time_resolution_traits.hpp +144 -0
  472. data/ext/boost/date_time/time_system_counted.hpp +254 -0
  473. data/ext/boost/date_time/time_system_split.hpp +207 -0
  474. data/ext/boost/date_time/wrapping_int.hpp +169 -0
  475. data/ext/boost/date_time/year_month_day.hpp +45 -0
  476. data/ext/boost/detail/call_traits.hpp +164 -0
  477. data/ext/boost/detail/endian.hpp +76 -0
  478. data/ext/boost/detail/indirect_traits.hpp +487 -0
  479. data/ext/boost/detail/iterator.hpp +494 -0
  480. data/ext/boost/detail/lcast_precision.hpp +184 -0
  481. data/ext/boost/detail/limits.hpp +449 -0
  482. data/ext/boost/detail/no_exceptions_support.hpp +87 -0
  483. data/ext/boost/detail/reference_content.hpp +141 -0
  484. data/ext/boost/detail/sp_typeinfo.hpp +129 -0
  485. data/ext/boost/detail/workaround.hpp +267 -0
  486. data/ext/boost/enable_shared_from_this.hpp +18 -0
  487. data/ext/boost/exception/current_exception_cast.hpp +43 -0
  488. data/ext/boost/exception/detail/attribute_noreturn.hpp +17 -0
  489. data/ext/boost/exception/detail/error_info_impl.hpp +75 -0
  490. data/ext/boost/exception/detail/exception_ptr.hpp +431 -0
  491. data/ext/boost/exception/detail/is_output_streamable.hpp +60 -0
  492. data/ext/boost/exception/detail/object_hex_dump.hpp +50 -0
  493. data/ext/boost/exception/detail/type_info.hpp +83 -0
  494. data/ext/boost/exception/diagnostic_information.hpp +184 -0
  495. data/ext/boost/exception/exception.hpp +436 -0
  496. data/ext/boost/exception/get_error_info.hpp +130 -0
  497. data/ext/boost/exception/info.hpp +200 -0
  498. data/ext/boost/exception/to_string.hpp +83 -0
  499. data/ext/boost/exception/to_string_stub.hpp +109 -0
  500. data/ext/boost/exception_ptr.hpp +11 -0
  501. data/ext/boost/function.hpp +66 -0
  502. data/ext/boost/function/detail/function_iterate.hpp +16 -0
  503. data/ext/boost/function/detail/maybe_include.hpp +267 -0
  504. data/ext/boost/function/detail/prologue.hpp +26 -0
  505. data/ext/boost/function/function_base.hpp +904 -0
  506. data/ext/boost/function/function_fwd.hpp +70 -0
  507. data/ext/boost/function/function_template.hpp +1158 -0
  508. data/ext/boost/function_equal.hpp +28 -0
  509. data/ext/boost/get_pointer.hpp +33 -0
  510. data/ext/boost/implicit_cast.hpp +29 -0
  511. data/ext/boost/integer.hpp +257 -0
  512. data/ext/boost/integer_fwd.hpp +180 -0
  513. data/ext/boost/integer_traits.hpp +261 -0
  514. data/ext/boost/io/ios_state.hpp +439 -0
  515. data/ext/boost/io_fwd.hpp +67 -0
  516. data/ext/boost/is_placeholder.hpp +31 -0
  517. data/ext/boost/iterator.hpp +59 -0
  518. data/ext/boost/iterator/detail/config_def.hpp +137 -0
  519. data/ext/boost/iterator/detail/config_undef.hpp +25 -0
  520. data/ext/boost/iterator/detail/enable_if.hpp +86 -0
  521. data/ext/boost/iterator/detail/facade_iterator_category.hpp +200 -0
  522. data/ext/boost/iterator/detail/minimum_category.hpp +116 -0
  523. data/ext/boost/iterator/interoperable.hpp +50 -0
  524. data/ext/boost/iterator/iterator_adaptor.hpp +371 -0
  525. data/ext/boost/iterator/iterator_categories.hpp +188 -0
  526. data/ext/boost/iterator/iterator_concepts.hpp +284 -0
  527. data/ext/boost/iterator/iterator_facade.hpp +878 -0
  528. data/ext/boost/iterator/iterator_traits.hpp +92 -0
  529. data/ext/boost/iterator/reverse_iterator.hpp +69 -0
  530. data/ext/boost/iterator/transform_iterator.hpp +187 -0
  531. data/ext/boost/lexical_cast.hpp +1213 -0
  532. data/ext/boost/limits.hpp +146 -0
  533. data/ext/boost/make_shared.hpp +17 -0
  534. data/ext/boost/mem_fn.hpp +24 -0
  535. data/ext/boost/memory_order.hpp +53 -0
  536. data/ext/boost/mpl/always.hpp +39 -0
  537. data/ext/boost/mpl/and.hpp +60 -0
  538. data/ext/boost/mpl/apply.hpp +229 -0
  539. data/ext/boost/mpl/apply_fwd.hpp +107 -0
  540. data/ext/boost/mpl/apply_wrap.hpp +234 -0
  541. data/ext/boost/mpl/arg.hpp +131 -0
  542. data/ext/boost/mpl/arg_fwd.hpp +28 -0
  543. data/ext/boost/mpl/assert.hpp +370 -0
  544. data/ext/boost/mpl/aux_/adl_barrier.hpp +48 -0
  545. data/ext/boost/mpl/aux_/arg_typedef.hpp +31 -0
  546. data/ext/boost/mpl/aux_/arity.hpp +39 -0
  547. data/ext/boost/mpl/aux_/arity_spec.hpp +67 -0
  548. data/ext/boost/mpl/aux_/common_name_wknd.hpp +34 -0
  549. data/ext/boost/mpl/aux_/config/adl.hpp +40 -0
  550. data/ext/boost/mpl/aux_/config/arrays.hpp +30 -0
  551. data/ext/boost/mpl/aux_/config/bcc.hpp +28 -0
  552. data/ext/boost/mpl/aux_/config/bind.hpp +33 -0
  553. data/ext/boost/mpl/aux_/config/compiler.hpp +66 -0
  554. data/ext/boost/mpl/aux_/config/ctps.hpp +30 -0
  555. data/ext/boost/mpl/aux_/config/dtp.hpp +46 -0
  556. data/ext/boost/mpl/aux_/config/eti.hpp +47 -0
  557. data/ext/boost/mpl/aux_/config/gcc.hpp +23 -0
  558. data/ext/boost/mpl/aux_/config/has_apply.hpp +32 -0
  559. data/ext/boost/mpl/aux_/config/has_xxx.hpp +34 -0
  560. data/ext/boost/mpl/aux_/config/integral.hpp +38 -0
  561. data/ext/boost/mpl/aux_/config/intel.hpp +21 -0
  562. data/ext/boost/mpl/aux_/config/lambda.hpp +32 -0
  563. data/ext/boost/mpl/aux_/config/msvc.hpp +21 -0
  564. data/ext/boost/mpl/aux_/config/msvc_typename.hpp +26 -0
  565. data/ext/boost/mpl/aux_/config/nttp.hpp +41 -0
  566. data/ext/boost/mpl/aux_/config/overload_resolution.hpp +29 -0
  567. data/ext/boost/mpl/aux_/config/pp_counter.hpp +26 -0
  568. data/ext/boost/mpl/aux_/config/preprocessor.hpp +39 -0
  569. data/ext/boost/mpl/aux_/config/static_constant.hpp +25 -0
  570. data/ext/boost/mpl/aux_/config/ttp.hpp +41 -0
  571. data/ext/boost/mpl/aux_/config/use_preprocessed.hpp +19 -0
  572. data/ext/boost/mpl/aux_/config/workaround.hpp +19 -0
  573. data/ext/boost/mpl/aux_/full_lambda.hpp +354 -0
  574. data/ext/boost/mpl/aux_/has_apply.hpp +32 -0
  575. data/ext/boost/mpl/aux_/has_type.hpp +23 -0
  576. data/ext/boost/mpl/aux_/include_preprocessed.hpp +42 -0
  577. data/ext/boost/mpl/aux_/integral_wrapper.hpp +93 -0
  578. data/ext/boost/mpl/aux_/lambda_arity_param.hpp +25 -0
  579. data/ext/boost/mpl/aux_/lambda_support.hpp +169 -0
  580. data/ext/boost/mpl/aux_/msvc_never_true.hpp +34 -0
  581. data/ext/boost/mpl/aux_/na.hpp +95 -0
  582. data/ext/boost/mpl/aux_/na_assert.hpp +34 -0
  583. data/ext/boost/mpl/aux_/na_fwd.hpp +31 -0
  584. data/ext/boost/mpl/aux_/na_spec.hpp +175 -0
  585. data/ext/boost/mpl/aux_/nested_type_wknd.hpp +48 -0
  586. data/ext/boost/mpl/aux_/nttp_decl.hpp +35 -0
  587. data/ext/boost/mpl/aux_/preprocessed/gcc/and.hpp +69 -0
  588. data/ext/boost/mpl/aux_/preprocessed/gcc/apply.hpp +169 -0
  589. data/ext/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp +52 -0
  590. data/ext/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp +84 -0
  591. data/ext/boost/mpl/aux_/preprocessed/gcc/arg.hpp +123 -0
  592. data/ext/boost/mpl/aux_/preprocessed/gcc/bind.hpp +561 -0
  593. data/ext/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp +52 -0
  594. data/ext/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp +558 -0
  595. data/ext/boost/mpl/aux_/preprocessed/gcc/or.hpp +69 -0
  596. data/ext/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp +105 -0
  597. data/ext/boost/mpl/aux_/preprocessed/gcc/quote.hpp +123 -0
  598. data/ext/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp +97 -0
  599. data/ext/boost/mpl/aux_/preprocessor/def_params_tail.hpp +105 -0
  600. data/ext/boost/mpl/aux_/preprocessor/enum.hpp +62 -0
  601. data/ext/boost/mpl/aux_/preprocessor/filter_params.hpp +28 -0
  602. data/ext/boost/mpl/aux_/preprocessor/params.hpp +65 -0
  603. data/ext/boost/mpl/aux_/preprocessor/sub.hpp +65 -0
  604. data/ext/boost/mpl/aux_/static_cast.hpp +27 -0
  605. data/ext/boost/mpl/aux_/template_arity.hpp +189 -0
  606. data/ext/boost/mpl/aux_/template_arity_fwd.hpp +23 -0
  607. data/ext/boost/mpl/aux_/type_wrapper.hpp +47 -0
  608. data/ext/boost/mpl/aux_/value_wknd.hpp +89 -0
  609. data/ext/boost/mpl/aux_/yes_no.hpp +58 -0
  610. data/ext/boost/mpl/bind.hpp +551 -0
  611. data/ext/boost/mpl/bind_fwd.hpp +99 -0
  612. data/ext/boost/mpl/bool.hpp +39 -0
  613. data/ext/boost/mpl/bool_fwd.hpp +33 -0
  614. data/ext/boost/mpl/eval_if.hpp +71 -0
  615. data/ext/boost/mpl/has_xxx.hpp +640 -0
  616. data/ext/boost/mpl/identity.hpp +45 -0
  617. data/ext/boost/mpl/if.hpp +135 -0
  618. data/ext/boost/mpl/int.hpp +22 -0
  619. data/ext/boost/mpl/int_fwd.hpp +27 -0
  620. data/ext/boost/mpl/integral_c.hpp +51 -0
  621. data/ext/boost/mpl/integral_c_fwd.hpp +32 -0
  622. data/ext/boost/mpl/integral_c_tag.hpp +26 -0
  623. data/ext/boost/mpl/lambda.hpp +29 -0
  624. data/ext/boost/mpl/lambda_fwd.hpp +57 -0
  625. data/ext/boost/mpl/limits/arity.hpp +21 -0
  626. data/ext/boost/mpl/logical.hpp +21 -0
  627. data/ext/boost/mpl/next.hpp +19 -0
  628. data/ext/boost/mpl/next_prior.hpp +49 -0
  629. data/ext/boost/mpl/not.hpp +51 -0
  630. data/ext/boost/mpl/or.hpp +61 -0
  631. data/ext/boost/mpl/placeholders.hpp +100 -0
  632. data/ext/boost/mpl/protect.hpp +55 -0
  633. data/ext/boost/mpl/quote.hpp +151 -0
  634. data/ext/boost/mpl/size_t.hpp +25 -0
  635. data/ext/boost/mpl/size_t_fwd.hpp +28 -0
  636. data/ext/boost/mpl/void.hpp +76 -0
  637. data/ext/boost/mpl/void_fwd.hpp +26 -0
  638. data/ext/boost/next_prior.hpp +51 -0
  639. data/ext/boost/non_type.hpp +27 -0
  640. data/ext/boost/noncopyable.hpp +36 -0
  641. data/ext/boost/none.hpp +28 -0
  642. data/ext/boost/none_t.hpp +24 -0
  643. data/ext/boost/operators.hpp +976 -0
  644. data/ext/boost/optional.hpp +18 -0
  645. data/ext/boost/optional/optional.hpp +924 -0
  646. data/ext/boost/optional/optional_fwd.hpp +22 -0
  647. data/ext/boost/preprocessor/arithmetic/add.hpp +51 -0
  648. data/ext/boost/preprocessor/arithmetic/dec.hpp +288 -0
  649. data/ext/boost/preprocessor/arithmetic/detail/div_base.hpp +61 -0
  650. data/ext/boost/preprocessor/arithmetic/inc.hpp +288 -0
  651. data/ext/boost/preprocessor/arithmetic/mod.hpp +39 -0
  652. data/ext/boost/preprocessor/arithmetic/sub.hpp +50 -0
  653. data/ext/boost/preprocessor/array/data.hpp +28 -0
  654. data/ext/boost/preprocessor/array/elem.hpp +29 -0
  655. data/ext/boost/preprocessor/array/size.hpp +28 -0
  656. data/ext/boost/preprocessor/cat.hpp +35 -0
  657. data/ext/boost/preprocessor/comma_if.hpp +17 -0
  658. data/ext/boost/preprocessor/comparison/less_equal.hpp +39 -0
  659. data/ext/boost/preprocessor/config/config.hpp +70 -0
  660. data/ext/boost/preprocessor/control/deduce_d.hpp +22 -0
  661. data/ext/boost/preprocessor/control/detail/while.hpp +536 -0
  662. data/ext/boost/preprocessor/control/expr_iif.hpp +31 -0
  663. data/ext/boost/preprocessor/control/if.hpp +30 -0
  664. data/ext/boost/preprocessor/control/iif.hpp +34 -0
  665. data/ext/boost/preprocessor/control/while.hpp +312 -0
  666. data/ext/boost/preprocessor/debug/error.hpp +33 -0
  667. data/ext/boost/preprocessor/detail/auto_rec.hpp +293 -0
  668. data/ext/boost/preprocessor/detail/check.hpp +48 -0
  669. data/ext/boost/preprocessor/detail/is_binary.hpp +30 -0
  670. data/ext/boost/preprocessor/empty.hpp +17 -0
  671. data/ext/boost/preprocessor/enum.hpp +17 -0
  672. data/ext/boost/preprocessor/enum_params.hpp +17 -0
  673. data/ext/boost/preprocessor/facilities/empty.hpp +21 -0
  674. data/ext/boost/preprocessor/facilities/identity.hpp +23 -0
  675. data/ext/boost/preprocessor/identity.hpp +17 -0
  676. data/ext/boost/preprocessor/inc.hpp +17 -0
  677. data/ext/boost/preprocessor/iterate.hpp +17 -0
  678. data/ext/boost/preprocessor/iteration/detail/bounds/lower1.hpp +99 -0
  679. data/ext/boost/preprocessor/iteration/detail/bounds/upper1.hpp +99 -0
  680. data/ext/boost/preprocessor/iteration/detail/iter/forward1.hpp +1342 -0
  681. data/ext/boost/preprocessor/iteration/iterate.hpp +82 -0
  682. data/ext/boost/preprocessor/list/adt.hpp +73 -0
  683. data/ext/boost/preprocessor/list/append.hpp +40 -0
  684. data/ext/boost/preprocessor/list/detail/fold_left.hpp +279 -0
  685. data/ext/boost/preprocessor/list/detail/fold_right.hpp +277 -0
  686. data/ext/boost/preprocessor/list/fold_left.hpp +303 -0
  687. data/ext/boost/preprocessor/list/fold_right.hpp +40 -0
  688. data/ext/boost/preprocessor/list/for_each_i.hpp +65 -0
  689. data/ext/boost/preprocessor/list/reverse.hpp +40 -0
  690. data/ext/boost/preprocessor/list/transform.hpp +49 -0
  691. data/ext/boost/preprocessor/logical/and.hpp +30 -0
  692. data/ext/boost/preprocessor/logical/bitand.hpp +38 -0
  693. data/ext/boost/preprocessor/logical/bool.hpp +288 -0
  694. data/ext/boost/preprocessor/logical/compl.hpp +36 -0
  695. data/ext/boost/preprocessor/logical/not.hpp +30 -0
  696. data/ext/boost/preprocessor/punctuation/comma.hpp +21 -0
  697. data/ext/boost/preprocessor/punctuation/comma_if.hpp +31 -0
  698. data/ext/boost/preprocessor/repeat.hpp +17 -0
  699. data/ext/boost/preprocessor/repetition/detail/for.hpp +536 -0
  700. data/ext/boost/preprocessor/repetition/enum.hpp +66 -0
  701. data/ext/boost/preprocessor/repetition/enum_binary_params.hpp +54 -0
  702. data/ext/boost/preprocessor/repetition/enum_params.hpp +41 -0
  703. data/ext/boost/preprocessor/repetition/enum_trailing_params.hpp +38 -0
  704. data/ext/boost/preprocessor/repetition/for.hpp +306 -0
  705. data/ext/boost/preprocessor/repetition/repeat.hpp +825 -0
  706. data/ext/boost/preprocessor/repetition/repeat_from_to.hpp +87 -0
  707. data/ext/boost/preprocessor/seq/cat.hpp +48 -0
  708. data/ext/boost/preprocessor/seq/elem.hpp +304 -0
  709. data/ext/boost/preprocessor/seq/enum.hpp +288 -0
  710. data/ext/boost/preprocessor/seq/fold_left.hpp +1070 -0
  711. data/ext/boost/preprocessor/seq/for_each_i.hpp +61 -0
  712. data/ext/boost/preprocessor/seq/seq.hpp +44 -0
  713. data/ext/boost/preprocessor/seq/size.hpp +548 -0
  714. data/ext/boost/preprocessor/seq/transform.hpp +48 -0
  715. data/ext/boost/preprocessor/slot/detail/def.hpp +49 -0
  716. data/ext/boost/preprocessor/slot/detail/shared.hpp +247 -0
  717. data/ext/boost/preprocessor/slot/slot.hpp +32 -0
  718. data/ext/boost/preprocessor/stringize.hpp +33 -0
  719. data/ext/boost/preprocessor/tuple/eat.hpp +57 -0
  720. data/ext/boost/preprocessor/tuple/elem.hpp +385 -0
  721. data/ext/boost/preprocessor/tuple/rem.hpp +72 -0
  722. data/ext/boost/preprocessor/tuple/to_list.hpp +62 -0
  723. data/ext/boost/range/algorithm/equal.hpp +188 -0
  724. data/ext/boost/range/as_literal.hpp +127 -0
  725. data/ext/boost/range/begin.hpp +132 -0
  726. data/ext/boost/range/concepts.hpp +331 -0
  727. data/ext/boost/range/config.hpp +54 -0
  728. data/ext/boost/range/const_iterator.hpp +67 -0
  729. data/ext/boost/range/detail/common.hpp +117 -0
  730. data/ext/boost/range/detail/extract_optional_type.hpp +52 -0
  731. data/ext/boost/range/detail/implementation_help.hpp +103 -0
  732. data/ext/boost/range/detail/misc_concept.hpp +33 -0
  733. data/ext/boost/range/detail/sfinae.hpp +77 -0
  734. data/ext/boost/range/detail/str_types.hpp +38 -0
  735. data/ext/boost/range/difference_type.hpp +29 -0
  736. data/ext/boost/range/distance.hpp +34 -0
  737. data/ext/boost/range/empty.hpp +34 -0
  738. data/ext/boost/range/end.hpp +131 -0
  739. data/ext/boost/range/functions.hpp +27 -0
  740. data/ext/boost/range/iterator.hpp +72 -0
  741. data/ext/boost/range/iterator_range.hpp +16 -0
  742. data/ext/boost/range/iterator_range_core.hpp +542 -0
  743. data/ext/boost/range/iterator_range_io.hpp +93 -0
  744. data/ext/boost/range/mutable_iterator.hpp +67 -0
  745. data/ext/boost/range/rbegin.hpp +65 -0
  746. data/ext/boost/range/rend.hpp +65 -0
  747. data/ext/boost/range/reverse_iterator.hpp +40 -0
  748. data/ext/boost/range/size.hpp +36 -0
  749. data/ext/boost/range/size_type.hpp +79 -0
  750. data/ext/boost/range/value_type.hpp +34 -0
  751. data/ext/boost/ref.hpp +189 -0
  752. data/ext/boost/scoped_array.hpp +16 -0
  753. data/ext/boost/scoped_ptr.hpp +16 -0
  754. data/ext/boost/shared_array.hpp +19 -0
  755. data/ext/boost/shared_ptr.hpp +19 -0
  756. data/ext/boost/smart_ptr/bad_weak_ptr.hpp +59 -0
  757. data/ext/boost/smart_ptr/detail/atomic_count.hpp +119 -0
  758. data/ext/boost/smart_ptr/detail/atomic_count_gcc.hpp +72 -0
  759. data/ext/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +77 -0
  760. data/ext/boost/smart_ptr/detail/atomic_count_pthreads.hpp +96 -0
  761. data/ext/boost/smart_ptr/detail/atomic_count_solaris.hpp +59 -0
  762. data/ext/boost/smart_ptr/detail/atomic_count_sync.hpp +61 -0
  763. data/ext/boost/smart_ptr/detail/atomic_count_win32.hpp +63 -0
  764. data/ext/boost/smart_ptr/detail/operator_bool.hpp +56 -0
  765. data/ext/boost/smart_ptr/detail/shared_count.hpp +444 -0
  766. data/ext/boost/smart_ptr/detail/sp_convertible.hpp +76 -0
  767. data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +70 -0
  768. data/ext/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +150 -0
  769. data/ext/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +170 -0
  770. data/ext/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +158 -0
  771. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +157 -0
  772. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +172 -0
  773. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +181 -0
  774. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +166 -0
  775. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +173 -0
  776. data/ext/boost/smart_ptr/detail/sp_counted_base_nt.hpp +107 -0
  777. data/ext/boost/smart_ptr/detail/sp_counted_base_pt.hpp +135 -0
  778. data/ext/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +113 -0
  779. data/ext/boost/smart_ptr/detail/sp_counted_base_spin.hpp +131 -0
  780. data/ext/boost/smart_ptr/detail/sp_counted_base_sync.hpp +155 -0
  781. data/ext/boost/smart_ptr/detail/sp_counted_base_w32.hpp +130 -0
  782. data/ext/boost/smart_ptr/detail/sp_counted_impl.hpp +231 -0
  783. data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +49 -0
  784. data/ext/boost/smart_ptr/detail/spinlock.hpp +53 -0
  785. data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +85 -0
  786. data/ext/boost/smart_ptr/detail/spinlock_nt.hpp +89 -0
  787. data/ext/boost/smart_ptr/detail/spinlock_pool.hpp +87 -0
  788. data/ext/boost/smart_ptr/detail/spinlock_pt.hpp +79 -0
  789. data/ext/boost/smart_ptr/detail/spinlock_sync.hpp +87 -0
  790. data/ext/boost/smart_ptr/detail/yield_k.hpp +149 -0
  791. data/ext/boost/smart_ptr/enable_shared_from_this.hpp +79 -0
  792. data/ext/boost/smart_ptr/make_shared.hpp +508 -0
  793. data/ext/boost/smart_ptr/scoped_array.hpp +107 -0
  794. data/ext/boost/smart_ptr/scoped_ptr.hpp +131 -0
  795. data/ext/boost/smart_ptr/shared_array.hpp +147 -0
  796. data/ext/boost/smart_ptr/shared_ptr.hpp +701 -0
  797. data/ext/boost/smart_ptr/weak_ptr.hpp +230 -0
  798. data/ext/boost/src/pthread/once.cpp +51 -0
  799. data/ext/boost/src/pthread/thread.cpp +616 -0
  800. data/ext/boost/src/pthread/timeconv.inl +133 -0
  801. data/ext/boost/src/tss_null.cpp +34 -0
  802. data/ext/boost/static_assert.hpp +132 -0
  803. data/ext/boost/thread.hpp +26 -0
  804. data/ext/boost/thread/barrier.hpp +64 -0
  805. data/ext/boost/thread/condition.hpp +16 -0
  806. data/ext/boost/thread/condition_variable.hpp +21 -0
  807. data/ext/boost/thread/detail/config.hpp +100 -0
  808. data/ext/boost/thread/detail/force_cast.hpp +39 -0
  809. data/ext/boost/thread/detail/move.hpp +60 -0
  810. data/ext/boost/thread/detail/platform.hpp +71 -0
  811. data/ext/boost/thread/detail/singleton.hpp +59 -0
  812. data/ext/boost/thread/detail/thread.hpp +540 -0
  813. data/ext/boost/thread/detail/thread_group.hpp +108 -0
  814. data/ext/boost/thread/detail/thread_heap_alloc.hpp +23 -0
  815. data/ext/boost/thread/detail/thread_interruption.hpp +35 -0
  816. data/ext/boost/thread/detail/tss_hooks.hpp +65 -0
  817. data/ext/boost/thread/exceptions.hpp +223 -0
  818. data/ext/boost/thread/future.hpp +1375 -0
  819. data/ext/boost/thread/locks.hpp +1585 -0
  820. data/ext/boost/thread/mutex.hpp +21 -0
  821. data/ext/boost/thread/once.hpp +33 -0
  822. data/ext/boost/thread/pthread/condition_variable.hpp +179 -0
  823. data/ext/boost/thread/pthread/condition_variable_fwd.hpp +102 -0
  824. data/ext/boost/thread/pthread/mutex.hpp +236 -0
  825. data/ext/boost/thread/pthread/once.hpp +95 -0
  826. data/ext/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +54 -0
  827. data/ext/boost/thread/pthread/recursive_mutex.hpp +345 -0
  828. data/ext/boost/thread/pthread/shared_mutex.hpp +303 -0
  829. data/ext/boost/thread/pthread/thread_data.hpp +129 -0
  830. data/ext/boost/thread/pthread/thread_heap_alloc.hpp +242 -0
  831. data/ext/boost/thread/pthread/timespec.hpp +36 -0
  832. data/ext/boost/thread/recursive_mutex.hpp +21 -0
  833. data/ext/boost/thread/shared_mutex.hpp +21 -0
  834. data/ext/boost/thread/thread.hpp +27 -0
  835. data/ext/boost/thread/thread_time.hpp +50 -0
  836. data/ext/boost/thread/tss.hpp +113 -0
  837. data/ext/boost/thread/xtime.hpp +92 -0
  838. data/ext/boost/throw_exception.hpp +91 -0
  839. data/ext/boost/token_functions.hpp +641 -0
  840. data/ext/boost/token_iterator.hpp +128 -0
  841. data/ext/boost/tokenizer.hpp +98 -0
  842. data/ext/boost/type.hpp +18 -0
  843. data/ext/boost/type_traits/add_const.hpp +47 -0
  844. data/ext/boost/type_traits/add_pointer.hpp +72 -0
  845. data/ext/boost/type_traits/add_reference.hpp +107 -0
  846. data/ext/boost/type_traits/add_volatile.hpp +47 -0
  847. data/ext/boost/type_traits/alignment_of.hpp +128 -0
  848. data/ext/boost/type_traits/broken_compiler_spec.hpp +117 -0
  849. data/ext/boost/type_traits/composite_traits.hpp +29 -0
  850. data/ext/boost/type_traits/config.hpp +76 -0
  851. data/ext/boost/type_traits/conversion_traits.hpp +17 -0
  852. data/ext/boost/type_traits/detail/bool_trait_def.hpp +173 -0
  853. data/ext/boost/type_traits/detail/bool_trait_undef.hpp +27 -0
  854. data/ext/boost/type_traits/detail/cv_traits_impl.hpp +97 -0
  855. data/ext/boost/type_traits/detail/false_result.hpp +28 -0
  856. data/ext/boost/type_traits/detail/ice_and.hpp +35 -0
  857. data/ext/boost/type_traits/detail/ice_eq.hpp +36 -0
  858. data/ext/boost/type_traits/detail/ice_not.hpp +31 -0
  859. data/ext/boost/type_traits/detail/ice_or.hpp +34 -0
  860. data/ext/boost/type_traits/detail/is_function_ptr_helper.hpp +220 -0
  861. data/ext/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +817 -0
  862. data/ext/boost/type_traits/detail/size_t_trait_def.hpp +58 -0
  863. data/ext/boost/type_traits/detail/size_t_trait_undef.hpp +16 -0
  864. data/ext/boost/type_traits/detail/template_arity_spec.hpp +31 -0
  865. data/ext/boost/type_traits/detail/type_trait_def.hpp +61 -0
  866. data/ext/boost/type_traits/detail/type_trait_undef.hpp +19 -0
  867. data/ext/boost/type_traits/detail/yes_no_type.hpp +26 -0
  868. data/ext/boost/type_traits/function_traits.hpp +236 -0
  869. data/ext/boost/type_traits/has_nothrow_copy.hpp +39 -0
  870. data/ext/boost/type_traits/has_trivial_copy.hpp +49 -0
  871. data/ext/boost/type_traits/has_trivial_destructor.hpp +42 -0
  872. data/ext/boost/type_traits/ice.hpp +20 -0
  873. data/ext/boost/type_traits/integral_constant.hpp +53 -0
  874. data/ext/boost/type_traits/intrinsics.hpp +240 -0
  875. data/ext/boost/type_traits/is_abstract.hpp +153 -0
  876. data/ext/boost/type_traits/is_arithmetic.hpp +51 -0
  877. data/ext/boost/type_traits/is_array.hpp +91 -0
  878. data/ext/boost/type_traits/is_base_and_derived.hpp +254 -0
  879. data/ext/boost/type_traits/is_base_of.hpp +51 -0
  880. data/ext/boost/type_traits/is_class.hpp +140 -0
  881. data/ext/boost/type_traits/is_const.hpp +165 -0
  882. data/ext/boost/type_traits/is_convertible.hpp +430 -0
  883. data/ext/boost/type_traits/is_enum.hpp +189 -0
  884. data/ext/boost/type_traits/is_float.hpp +27 -0
  885. data/ext/boost/type_traits/is_function.hpp +106 -0
  886. data/ext/boost/type_traits/is_fundamental.hpp +45 -0
  887. data/ext/boost/type_traits/is_integral.hpp +78 -0
  888. data/ext/boost/type_traits/is_lvalue_reference.hpp +118 -0
  889. data/ext/boost/type_traits/is_member_function_pointer.hpp +136 -0
  890. data/ext/boost/type_traits/is_member_pointer.hpp +116 -0
  891. data/ext/boost/type_traits/is_pod.hpp +135 -0
  892. data/ext/boost/type_traits/is_pointer.hpp +162 -0
  893. data/ext/boost/type_traits/is_reference.hpp +45 -0
  894. data/ext/boost/type_traits/is_rvalue_reference.hpp +29 -0
  895. data/ext/boost/type_traits/is_same.hpp +103 -0
  896. data/ext/boost/type_traits/is_scalar.hpp +55 -0
  897. data/ext/boost/type_traits/is_signed.hpp +135 -0
  898. data/ext/boost/type_traits/is_union.hpp +49 -0
  899. data/ext/boost/type_traits/is_unsigned.hpp +130 -0
  900. data/ext/boost/type_traits/is_void.hpp +38 -0
  901. data/ext/boost/type_traits/is_volatile.hpp +152 -0
  902. data/ext/boost/type_traits/make_unsigned.hpp +137 -0
  903. data/ext/boost/type_traits/remove_const.hpp +90 -0
  904. data/ext/boost/type_traits/remove_cv.hpp +83 -0
  905. data/ext/boost/type_traits/remove_pointer.hpp +43 -0
  906. data/ext/boost/type_traits/remove_reference.hpp +70 -0
  907. data/ext/boost/type_traits/type_with_alignment.hpp +393 -0
  908. data/ext/boost/units/detail/utility.hpp +104 -0
  909. data/ext/boost/utility.hpp +20 -0
  910. data/ext/boost/utility/addressof.hpp +102 -0
  911. data/ext/boost/utility/base_from_member.hpp +87 -0
  912. data/ext/boost/utility/binary.hpp +708 -0
  913. data/ext/boost/utility/compare_pointees.hpp +68 -0
  914. data/ext/boost/utility/enable_if.hpp +119 -0
  915. data/ext/boost/visit_each.hpp +29 -0
  916. data/ext/boost/weak_ptr.hpp +18 -0
  917. data/ext/common/AbstractSpawnManager.h +110 -0
  918. data/ext/common/Account.h +175 -0
  919. data/ext/common/AccountsDatabase.cpp +81 -0
  920. data/ext/common/AccountsDatabase.h +130 -0
  921. data/ext/common/AgentBase.cpp +323 -0
  922. data/ext/common/AgentBase.h +39 -0
  923. data/ext/common/AgentsStarter.cpp +154 -0
  924. data/ext/common/AgentsStarter.h +81 -0
  925. data/ext/common/AgentsStarter.hpp +646 -0
  926. data/ext/common/ApplicationPool/Client.h +796 -0
  927. data/ext/common/ApplicationPool/Interface.h +295 -0
  928. data/ext/common/ApplicationPool/Pool.h +1327 -0
  929. data/ext/common/ApplicationPool/Server.h +475 -0
  930. data/ext/common/BCrypt.cpp +343 -0
  931. data/ext/common/BCrypt.h +73 -0
  932. data/ext/common/Blowfish.c +685 -0
  933. data/ext/common/Blowfish.h +103 -0
  934. data/ext/common/Constants.h +48 -0
  935. data/ext/common/EventedClient.h +702 -0
  936. data/ext/common/EventedMessageServer.h +327 -0
  937. data/ext/common/EventedServer.h +295 -0
  938. data/ext/common/Exceptions.h +348 -0
  939. data/ext/common/FileDescriptor.h +293 -0
  940. data/ext/common/HelperAgent/BacktracesServer.h +59 -0
  941. data/ext/common/IniFile.h +488 -0
  942. data/ext/common/Logging.cpp +64 -0
  943. data/ext/common/Logging.h +695 -0
  944. data/ext/common/LoggingAgent/ChangeNotifier.h +63 -0
  945. data/ext/common/LoggingAgent/DataStoreId.h +177 -0
  946. data/ext/common/LoggingAgent/LoggingServer.h +1343 -0
  947. data/ext/common/LoggingAgent/Main.cpp +278 -0
  948. data/ext/common/LoggingAgent/RemoteSender.h +468 -0
  949. data/ext/common/MessageChannel.h +737 -0
  950. data/ext/common/MessageClient.h +297 -0
  951. data/ext/common/MessageReadersWriters.h +508 -0
  952. data/ext/common/MessageServer.h +581 -0
  953. data/ext/common/PoolOptions.h +518 -0
  954. data/ext/common/Process.h +255 -0
  955. data/ext/common/RandomGenerator.h +160 -0
  956. data/ext/common/ResourceLocator.h +134 -0
  957. data/ext/common/SafeLibev.h +149 -0
  958. data/ext/common/ServerInstanceDir.h +347 -0
  959. data/ext/common/Session.h +470 -0
  960. data/ext/common/SpawnManager.h +616 -0
  961. data/ext/common/StaticString.h +298 -0
  962. data/ext/common/StringListCreator.h +83 -0
  963. data/ext/common/Utils.cpp +972 -0
  964. data/ext/common/Utils.h +428 -0
  965. data/ext/common/Utils/Base64.cpp +143 -0
  966. data/ext/common/Utils/Base64.h +83 -0
  967. data/ext/common/Utils/BlockingQueue.h +136 -0
  968. data/ext/common/Utils/BufferedIO.h +196 -0
  969. data/ext/common/Utils/CachedFileStat.cpp +62 -0
  970. data/ext/common/Utils/CachedFileStat.h +51 -0
  971. data/ext/common/Utils/CachedFileStat.hpp +243 -0
  972. data/ext/common/Utils/FileChangeChecker.h +209 -0
  973. data/ext/common/Utils/IOUtils.cpp +913 -0
  974. data/ext/common/Utils/IOUtils.h +370 -0
  975. data/ext/common/Utils/MD5.cpp +406 -0
  976. data/ext/common/Utils/MD5.h +98 -0
  977. data/ext/common/Utils/MemZeroGuard.h +103 -0
  978. data/ext/common/Utils/ProcessMetricsCollector.h +590 -0
  979. data/ext/common/Utils/ScopeGuard.h +72 -0
  980. data/ext/common/Utils/StrIntUtils.cpp +363 -0
  981. data/ext/common/Utils/StrIntUtils.h +231 -0
  982. data/ext/common/Utils/SystemTime.cpp +37 -0
  983. data/ext/common/Utils/SystemTime.h +201 -0
  984. data/ext/common/Utils/Timer.h +152 -0
  985. data/ext/common/Utils/VariantMap.h +363 -0
  986. data/ext/common/Utils/utf8.h +35 -0
  987. data/ext/common/Utils/utf8/checked.h +324 -0
  988. data/ext/common/Utils/utf8/core.h +359 -0
  989. data/ext/common/Utils/utf8/unchecked.h +229 -0
  990. data/ext/common/Watchdog.cpp +1001 -0
  991. data/ext/google/COPYING +28 -0
  992. data/ext/google/ChangeLog +167 -0
  993. data/ext/google/dense_hash_map +310 -0
  994. data/ext/google/dense_hash_set +287 -0
  995. data/ext/google/sparse_hash_map +294 -0
  996. data/ext/google/sparse_hash_set +275 -0
  997. data/ext/google/sparsehash/densehashtable.h +1062 -0
  998. data/ext/google/sparsehash/sparseconfig.h +55 -0
  999. data/ext/google/sparsehash/sparsehashtable.h +1015 -0
  1000. data/ext/google/sparsetable +1468 -0
  1001. data/ext/google/type_traits.h +250 -0
  1002. data/ext/libev/Changes +302 -0
  1003. data/ext/libev/LICENSE +36 -0
  1004. data/ext/libev/Makefile.am +18 -0
  1005. data/ext/libev/Makefile.in +685 -0
  1006. data/ext/libev/README +58 -0
  1007. data/ext/libev/aclocal.m4 +7549 -0
  1008. data/ext/libev/autogen.sh +6 -0
  1009. data/ext/libev/config.guess +1526 -0
  1010. data/ext/libev/config.h.in +121 -0
  1011. data/ext/libev/config.sub +1658 -0
  1012. data/ext/libev/configure +22156 -0
  1013. data/ext/libev/configure.ac +18 -0
  1014. data/ext/libev/ev++.h +800 -0
  1015. data/ext/libev/ev.c +3694 -0
  1016. data/ext/libev/ev.h +705 -0
  1017. data/ext/libev/ev_epoll.c +228 -0
  1018. data/ext/libev/ev_kqueue.c +196 -0
  1019. data/ext/libev/ev_poll.c +144 -0
  1020. data/ext/libev/ev_port.c +165 -0
  1021. data/ext/libev/ev_select.c +308 -0
  1022. data/ext/libev/ev_vars.h +187 -0
  1023. data/ext/libev/ev_win32.c +153 -0
  1024. data/ext/libev/ev_wrap.h +178 -0
  1025. data/ext/libev/event.c +401 -0
  1026. data/ext/libev/event.h +158 -0
  1027. data/ext/libev/install-sh +294 -0
  1028. data/ext/libev/libev.m4 +38 -0
  1029. data/ext/libev/ltmain.sh +6871 -0
  1030. data/ext/libev/missing +336 -0
  1031. data/ext/libev/mkinstalldirs +111 -0
  1032. data/ext/nginx/Configuration.c +1454 -0
  1033. data/ext/nginx/Configuration.h +94 -0
  1034. data/ext/nginx/ContentHandler.c +1360 -0
  1035. data/ext/nginx/ContentHandler.h +64 -0
  1036. data/ext/nginx/HelperAgent.cpp +988 -0
  1037. data/ext/nginx/HttpStatusExtractor.h +351 -0
  1038. data/ext/nginx/ScgiRequestParser.h +375 -0
  1039. data/ext/nginx/StaticContentHandler.c +256 -0
  1040. data/ext/nginx/StaticContentHandler.h +37 -0
  1041. data/ext/nginx/config +56 -0
  1042. data/ext/nginx/ngx_http_passenger_module.c +499 -0
  1043. data/ext/nginx/ngx_http_passenger_module.h +63 -0
  1044. data/ext/oxt/backtrace.cpp +185 -0
  1045. data/ext/oxt/backtrace.hpp +135 -0
  1046. data/ext/oxt/detail/backtrace_disabled.hpp +39 -0
  1047. data/ext/oxt/detail/backtrace_enabled.hpp +156 -0
  1048. data/ext/oxt/detail/spin_lock_darwin.hpp +69 -0
  1049. data/ext/oxt/detail/spin_lock_gcc_x86.hpp +81 -0
  1050. data/ext/oxt/detail/spin_lock_portable.hpp +38 -0
  1051. data/ext/oxt/detail/spin_lock_pthreads.hpp +97 -0
  1052. data/ext/oxt/detail/tracable_exception_disabled.hpp +46 -0
  1053. data/ext/oxt/detail/tracable_exception_enabled.hpp +48 -0
  1054. data/ext/oxt/dynamic_thread_group.hpp +195 -0
  1055. data/ext/oxt/macros.hpp +58 -0
  1056. data/ext/oxt/spin_lock.hpp +57 -0
  1057. data/ext/oxt/system_calls.cpp +477 -0
  1058. data/ext/oxt/system_calls.hpp +260 -0
  1059. data/ext/oxt/thread.cpp +32 -0
  1060. data/ext/oxt/thread.hpp +370 -0
  1061. data/ext/oxt/tracable_exception.cpp +87 -0
  1062. data/ext/oxt/tracable_exception.hpp +35 -0
  1063. data/ext/ruby/extconf.rb +41 -0
  1064. data/ext/ruby/passenger_native_support.c +1037 -0
  1065. data/helper-scripts/passenger-spawn-server +106 -0
  1066. data/helper-scripts/prespawn +63 -0
  1067. data/lib/phusion_passenger.rb +107 -0
  1068. data/lib/phusion_passenger/abstract_installer.rb +234 -0
  1069. data/lib/phusion_passenger/abstract_request_handler.rb +738 -0
  1070. data/lib/phusion_passenger/abstract_server.rb +372 -0
  1071. data/lib/phusion_passenger/abstract_server_collection.rb +335 -0
  1072. data/lib/phusion_passenger/admin_tools.rb +48 -0
  1073. data/lib/phusion_passenger/admin_tools/memory_stats.rb +299 -0
  1074. data/lib/phusion_passenger/admin_tools/server_instance.rb +334 -0
  1075. data/lib/phusion_passenger/analytics_logger.rb +342 -0
  1076. data/lib/phusion_passenger/app_process.rb +162 -0
  1077. data/lib/phusion_passenger/classic_rails/application_spawner.rb +344 -0
  1078. data/lib/phusion_passenger/classic_rails/cgi_fixed.rb +68 -0
  1079. data/lib/phusion_passenger/classic_rails/framework_spawner.rb +311 -0
  1080. data/lib/phusion_passenger/classic_rails/request_handler.rb +75 -0
  1081. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_base_extension.rb +65 -0
  1082. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_benchmarking_extension.rb +48 -0
  1083. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_rescue_extension.rb +59 -0
  1084. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ar_abstract_adapter_extension.rb +54 -0
  1085. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/as_cache_extension.rb +130 -0
  1086. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/av_benchmark_helper_extension.rb +47 -0
  1087. data/lib/phusion_passenger/classic_rails_extensions/init.rb +123 -0
  1088. data/lib/phusion_passenger/console_text_template.rb +66 -0
  1089. data/lib/phusion_passenger/constants.rb +35 -0
  1090. data/lib/phusion_passenger/debug_logging.rb +104 -0
  1091. data/lib/phusion_passenger/dependencies.rb +633 -0
  1092. data/lib/phusion_passenger/exceptions.rb +103 -0
  1093. data/lib/phusion_passenger/html_template.rb +107 -0
  1094. data/lib/phusion_passenger/message_channel.rb +387 -0
  1095. data/lib/phusion_passenger/message_client.rb +173 -0
  1096. data/lib/phusion_passenger/native_support.rb +166 -0
  1097. data/lib/phusion_passenger/packaging.rb +108 -0
  1098. data/lib/phusion_passenger/platform_info.rb +248 -0
  1099. data/lib/phusion_passenger/platform_info/apache.rb +332 -0
  1100. data/lib/phusion_passenger/platform_info/binary_compatibility.rb +175 -0
  1101. data/lib/phusion_passenger/platform_info/compiler.rb +183 -0
  1102. data/lib/phusion_passenger/platform_info/curl.rb +61 -0
  1103. data/lib/phusion_passenger/platform_info/documentation_tools.rb +35 -0
  1104. data/lib/phusion_passenger/platform_info/linux.rb +77 -0
  1105. data/lib/phusion_passenger/platform_info/operating_system.rb +158 -0
  1106. data/lib/phusion_passenger/platform_info/ruby.rb +338 -0
  1107. data/lib/phusion_passenger/platform_info/zlib.rb +38 -0
  1108. data/lib/phusion_passenger/plugin.rb +96 -0
  1109. data/lib/phusion_passenger/public_api.rb +112 -0
  1110. data/lib/phusion_passenger/rack/application_spawner.rb +227 -0
  1111. data/lib/phusion_passenger/rack/request_handler.rb +145 -0
  1112. data/lib/phusion_passenger/rails3_extensions/init.rb +207 -0
  1113. data/lib/phusion_passenger/simple_benchmarking.rb +52 -0
  1114. data/lib/phusion_passenger/spawn_manager.rb +359 -0
  1115. data/lib/phusion_passenger/standalone/app_finder.rb +153 -0
  1116. data/lib/phusion_passenger/standalone/command.rb +241 -0
  1117. data/lib/phusion_passenger/standalone/config_file.rb +119 -0
  1118. data/lib/phusion_passenger/standalone/help_command.rb +57 -0
  1119. data/lib/phusion_passenger/standalone/main.rb +101 -0
  1120. data/lib/phusion_passenger/standalone/package_runtime_command.rb +92 -0
  1121. data/lib/phusion_passenger/standalone/runtime_installer.rb +479 -0
  1122. data/lib/phusion_passenger/standalone/start_command.rb +514 -0
  1123. data/lib/phusion_passenger/standalone/status_command.rb +62 -0
  1124. data/lib/phusion_passenger/standalone/stop_command.rb +74 -0
  1125. data/lib/phusion_passenger/standalone/utils.rb +46 -0
  1126. data/lib/phusion_passenger/standalone/version_command.rb +42 -0
  1127. data/lib/phusion_passenger/templates/apache2/apache_must_be_compiled_with_compatible_mpm.txt.erb +9 -0
  1128. data/lib/phusion_passenger/templates/apache2/config_snippets.txt.erb +13 -0
  1129. data/lib/phusion_passenger/templates/apache2/deployment_example.txt.erb +23 -0
  1130. data/lib/phusion_passenger/templates/apache2/no_write_permission_to_passenger_root.txt.erb +9 -0
  1131. data/lib/phusion_passenger/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +11 -0
  1132. data/lib/phusion_passenger/templates/apache2/run_installer_as_root.txt.erb +8 -0
  1133. data/lib/phusion_passenger/templates/apache2/welcome.txt.erb +15 -0
  1134. data/lib/phusion_passenger/templates/app_exited_during_initialization.html.erb +38 -0
  1135. data/lib/phusion_passenger/templates/app_init_error.html.erb +64 -0
  1136. data/lib/phusion_passenger/templates/database_error.html.erb +66 -0
  1137. data/lib/phusion_passenger/templates/error_layout.css +97 -0
  1138. data/lib/phusion_passenger/templates/error_layout.html.erb +39 -0
  1139. data/lib/phusion_passenger/templates/framework_init_error.html.erb +39 -0
  1140. data/lib/phusion_passenger/templates/general_error.html.erb +22 -0
  1141. data/lib/phusion_passenger/templates/load_error.html.erb +46 -0
  1142. data/lib/phusion_passenger/templates/nginx/ask_for_extra_configure_flags.txt.erb +8 -0
  1143. data/lib/phusion_passenger/templates/nginx/cannot_write_to_dir.txt.erb +11 -0
  1144. data/lib/phusion_passenger/templates/nginx/config_snippets.txt.erb +17 -0
  1145. data/lib/phusion_passenger/templates/nginx/config_snippets_inserted.txt.erb +20 -0
  1146. data/lib/phusion_passenger/templates/nginx/confirm_extra_configure_flags.txt.erb +5 -0
  1147. data/lib/phusion_passenger/templates/nginx/deployment_example.txt.erb +22 -0
  1148. data/lib/phusion_passenger/templates/nginx/pcre_could_not_be_downloaded.txt.erb +11 -0
  1149. data/lib/phusion_passenger/templates/nginx/pcre_could_not_be_extracted.txt.erb +11 -0
  1150. data/lib/phusion_passenger/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +11 -0
  1151. data/lib/phusion_passenger/templates/nginx/possible_solutions_for_download_and_extraction_problems.txt.erb +20 -0
  1152. data/lib/phusion_passenger/templates/nginx/query_download_and_install.txt.erb +21 -0
  1153. data/lib/phusion_passenger/templates/nginx/run_installer_as_root.txt.erb +8 -0
  1154. data/lib/phusion_passenger/templates/nginx/welcome.txt.erb +15 -0
  1155. data/lib/phusion_passenger/templates/standalone/cannot_write_to_dir.txt.erb +11 -0
  1156. data/lib/phusion_passenger/templates/standalone/config.erb +94 -0
  1157. data/lib/phusion_passenger/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +17 -0
  1158. data/lib/phusion_passenger/templates/standalone/run_installer_as_root.txt.erb +8 -0
  1159. data/lib/phusion_passenger/templates/standalone/welcome.txt.erb +8 -0
  1160. data/lib/phusion_passenger/templates/standalone_default_root/index.html +1 -0
  1161. data/lib/phusion_passenger/templates/version_not_found.html.erb +34 -0
  1162. data/lib/phusion_passenger/utils.rb +1080 -0
  1163. data/lib/phusion_passenger/utils/file_system_watcher.rb +186 -0
  1164. data/lib/phusion_passenger/utils/hosts_file_parser.rb +130 -0
  1165. data/lib/phusion_passenger/utils/rewindable_input.rb +125 -0
  1166. data/lib/phusion_passenger/utils/tmpdir.rb +70 -0
  1167. data/lib/phusion_passenger/utils/unseekable_socket.rb +196 -0
  1168. data/lib/phusion_passenger/wsgi/application_spawner.rb +108 -0
  1169. data/lib/phusion_passenger/wsgi/request_handler.py +199 -0
  1170. data/man/passenger-config.1 +29 -0
  1171. data/man/passenger-make-enterprisey.8 +23 -0
  1172. data/man/passenger-memory-stats.8 +33 -0
  1173. data/man/passenger-status.8 +43 -0
  1174. data/man/passenger-stress-test.1 +43 -0
  1175. data/resources/mime.types +73 -0
  1176. data/resources/union_station_gateway.crt +32 -0
  1177. data/test/config.yml.example +41 -0
  1178. data/test/cxx/ApplicationPool_PoolTest.cpp +33 -0
  1179. data/test/cxx/ApplicationPool_PoolTestCases.cpp +1029 -0
  1180. data/test/cxx/ApplicationPool_ServerTest.cpp +308 -0
  1181. data/test/cxx/ApplicationPool_Server_PoolTest.cpp +80 -0
  1182. data/test/cxx/Base64Test.cpp +50 -0
  1183. data/test/cxx/BufferedIOTest.cpp +364 -0
  1184. data/test/cxx/CachedFileStatTest.cpp +402 -0
  1185. data/test/cxx/CxxTestMain.cpp +122 -0
  1186. data/test/cxx/EventedClientTest.cpp +523 -0
  1187. data/test/cxx/FileChangeCheckerTest.cpp +329 -0
  1188. data/test/cxx/FileDescriptorTest.cpp +69 -0
  1189. data/test/cxx/HttpStatusExtractorTest.cpp +198 -0
  1190. data/test/cxx/IOUtilsTest.cpp +796 -0
  1191. data/test/cxx/LoggingTest.cpp +914 -0
  1192. data/test/cxx/MessageChannelTest.cpp +557 -0
  1193. data/test/cxx/MessageReadersWritersTest.cpp +574 -0
  1194. data/test/cxx/MessageServerTest.cpp +383 -0
  1195. data/test/cxx/PoolOptionsTest.cpp +116 -0
  1196. data/test/cxx/ProcessMetricsCollectorTest.cpp +121 -0
  1197. data/test/cxx/ScgiRequestParserTest.cpp +389 -0
  1198. data/test/cxx/ServerInstanceDirTest.cpp +186 -0
  1199. data/test/cxx/SpawnManagerTest.cpp +161 -0
  1200. data/test/cxx/StaticStringTest.cpp +220 -0
  1201. data/test/cxx/SystemTimeTest.cpp +37 -0
  1202. data/test/cxx/TestSupport.cpp +166 -0
  1203. data/test/cxx/TestSupport.h +254 -0
  1204. data/test/cxx/UtilsTest.cpp +491 -0
  1205. data/test/cxx/VariantMapTest.cpp +179 -0
  1206. data/test/integration_tests/apache2_tests.rb +666 -0
  1207. data/test/integration_tests/cgi_environment_spec.rb +26 -0
  1208. data/test/integration_tests/hello_world_rack_spec.rb +36 -0
  1209. data/test/integration_tests/hello_world_wsgi_spec.rb +41 -0
  1210. data/test/integration_tests/mycook_spec.rb +166 -0
  1211. data/test/integration_tests/nginx_tests.rb +260 -0
  1212. data/test/integration_tests/spec_helper.rb +19 -0
  1213. data/test/oxt/backtrace_test.cpp +88 -0
  1214. data/test/oxt/counter.hpp +55 -0
  1215. data/test/oxt/dynamic_thread_group_test.cpp +131 -0
  1216. data/test/oxt/oxt_test_main.cpp +25 -0
  1217. data/test/oxt/spin_lock_test.cpp +59 -0
  1218. data/test/oxt/syscall_interruption_test.cpp +38 -0
  1219. data/test/ruby/abstract_request_handler_spec.rb +406 -0
  1220. data/test/ruby/abstract_server_collection_spec.rb +247 -0
  1221. data/test/ruby/abstract_server_spec.rb +61 -0
  1222. data/test/ruby/admin_tools_spec.rb +362 -0
  1223. data/test/ruby/analytics_logger_spec.rb +253 -0
  1224. data/test/ruby/app_process_spec.rb +43 -0
  1225. data/test/ruby/classic_rails/application_spawner_spec.rb +89 -0
  1226. data/test/ruby/classic_rails/framework_spawner_spec.rb +92 -0
  1227. data/test/ruby/debug_logging_spec.rb +141 -0
  1228. data/test/ruby/message_channel_spec.rb +196 -0
  1229. data/test/ruby/rack/application_spawner_spec.rb +116 -0
  1230. data/test/ruby/shared/abstract_server_spec.rb +23 -0
  1231. data/test/ruby/shared/rails/analytics_logging_extensions_spec.rb +375 -0
  1232. data/test/ruby/shared/spawners/classic_rails/framework_spawner_spec.rb +38 -0
  1233. data/test/ruby/shared/spawners/classic_rails/lack_of_rails_gem_version_spec.rb +19 -0
  1234. data/test/ruby/shared/spawners/classic_rails/spawner_spec.rb +15 -0
  1235. data/test/ruby/shared/spawners/non_preloading_spawner_spec.rb +27 -0
  1236. data/test/ruby/shared/spawners/preloading_spawner_spec.rb +29 -0
  1237. data/test/ruby/shared/spawners/reload_all_spec.rb +36 -0
  1238. data/test/ruby/shared/spawners/reload_single_spec.rb +52 -0
  1239. data/test/ruby/shared/spawners/spawn_server_spec.rb +28 -0
  1240. data/test/ruby/shared/spawners/spawner_spec.rb +273 -0
  1241. data/test/ruby/shared/utils/pseudo_io_spec.rb +60 -0
  1242. data/test/ruby/spawn_manager_spec.rb +134 -0
  1243. data/test/ruby/spec_helper.rb +104 -0
  1244. data/test/ruby/utils/file_system_watcher_spec.rb +221 -0
  1245. data/test/ruby/utils/hosts_file_parser.rb +258 -0
  1246. data/test/ruby/utils/unseekable_socket_spec.rb +66 -0
  1247. data/test/ruby/utils_spec.rb +748 -0
  1248. data/test/ruby/wsgi/application_spawner_spec.rb +50 -0
  1249. data/test/stub/apache2/httpd.conf.erb +86 -0
  1250. data/test/stub/apache2/mime.types +748 -0
  1251. data/test/stub/garbage1.dat +0 -0
  1252. data/test/stub/garbage2.dat +0 -0
  1253. data/test/stub/garbage3.dat +0 -0
  1254. data/test/stub/http_request.yml +23 -0
  1255. data/test/stub/message_channel.rb +11 -0
  1256. data/test/stub/message_channel_2.rb +12 -0
  1257. data/test/stub/message_channel_3.rb +19 -0
  1258. data/test/stub/nginx/koi-utf +109 -0
  1259. data/test/stub/nginx/koi-win +103 -0
  1260. data/test/stub/nginx/mime.types +70 -0
  1261. data/test/stub/nginx/nginx.conf.erb +58 -0
  1262. data/test/stub/nginx/win-utf +126 -0
  1263. data/test/stub/rack/config.ru +4 -0
  1264. data/test/stub/rack/public/rack.jpg +0 -0
  1265. data/test/stub/rails_apps/1.2/empty/Rakefile +10 -0
  1266. data/test/stub/rails_apps/1.2/empty/app/controllers/application.rb +7 -0
  1267. data/test/stub/rails_apps/1.2/empty/app/helpers/application_helper.rb +3 -0
  1268. data/test/stub/rails_apps/1.2/empty/config/boot.rb +108 -0
  1269. data/test/stub/rails_apps/1.2/empty/config/database.yml +31 -0
  1270. data/test/stub/rails_apps/1.2/empty/config/environment.rb +66 -0
  1271. data/test/stub/rails_apps/1.2/empty/config/environments/development.rb +21 -0
  1272. data/test/stub/rails_apps/1.2/empty/config/environments/production.rb +18 -0
  1273. data/test/stub/rails_apps/1.2/empty/config/environments/staging.rb +18 -0
  1274. data/test/stub/rails_apps/1.2/empty/config/environments/test.rb +19 -0
  1275. data/test/stub/rails_apps/1.2/empty/config/routes.rb +23 -0
  1276. data/test/stub/rails_apps/1.2/empty/doc/README_FOR_APP +2 -0
  1277. data/test/stub/rails_apps/1.2/empty/public/404.html +30 -0
  1278. data/test/stub/rails_apps/1.2/empty/public/500.html +30 -0
  1279. data/test/stub/rails_apps/1.2/empty/public/dispatch.cgi +10 -0
  1280. data/test/stub/rails_apps/1.2/empty/public/dispatch.fcgi +24 -0
  1281. data/test/stub/rails_apps/1.2/empty/public/dispatch.rb +10 -0
  1282. data/test/stub/rails_apps/1.2/empty/public/favicon.ico +0 -0
  1283. data/test/stub/rails_apps/1.2/empty/public/images/rails.png +0 -0
  1284. data/test/stub/rails_apps/1.2/empty/public/robots.txt +1 -0
  1285. data/test/stub/rails_apps/1.2/empty/script/about +3 -0
  1286. data/test/stub/rails_apps/1.2/empty/script/breakpointer +3 -0
  1287. data/test/stub/rails_apps/1.2/empty/script/console +3 -0
  1288. data/test/stub/rails_apps/1.2/empty/script/destroy +3 -0
  1289. data/test/stub/rails_apps/1.2/empty/script/generate +3 -0
  1290. data/test/stub/rails_apps/1.2/empty/script/performance/benchmarker +3 -0
  1291. data/test/stub/rails_apps/1.2/empty/script/performance/profiler +3 -0
  1292. data/test/stub/rails_apps/1.2/empty/script/plugin +3 -0
  1293. data/test/stub/rails_apps/1.2/empty/script/process/inspector +3 -0
  1294. data/test/stub/rails_apps/1.2/empty/script/process/reaper +3 -0
  1295. data/test/stub/rails_apps/1.2/empty/script/process/spawner +3 -0
  1296. data/test/stub/rails_apps/1.2/empty/script/runner +3 -0
  1297. data/test/stub/rails_apps/1.2/empty/script/server +3 -0
  1298. data/test/stub/rails_apps/1.2/empty/test/test_helper.rb +28 -0
  1299. data/test/stub/rails_apps/2.0/empty/Rakefile +10 -0
  1300. data/test/stub/rails_apps/2.0/empty/app/controllers/application.rb +10 -0
  1301. data/test/stub/rails_apps/2.0/empty/app/helpers/application_helper.rb +3 -0
  1302. data/test/stub/rails_apps/2.0/empty/config/boot.rb +108 -0
  1303. data/test/stub/rails_apps/2.0/empty/config/database.yml +31 -0
  1304. data/test/stub/rails_apps/2.0/empty/config/environment.rb +59 -0
  1305. data/test/stub/rails_apps/2.0/empty/config/environments/development.rb +18 -0
  1306. data/test/stub/rails_apps/2.0/empty/config/environments/production.rb +18 -0
  1307. data/test/stub/rails_apps/2.0/empty/config/environments/staging.rb +18 -0
  1308. data/test/stub/rails_apps/2.0/empty/config/environments/test.rb +22 -0
  1309. data/test/stub/rails_apps/2.0/empty/config/initializers/inflections.rb +10 -0
  1310. data/test/stub/rails_apps/2.0/empty/config/initializers/mime_types.rb +5 -0
  1311. data/test/stub/rails_apps/2.0/empty/config/routes.rb +35 -0
  1312. data/test/stub/rails_apps/2.0/empty/doc/README_FOR_APP +2 -0
  1313. data/test/stub/rails_apps/2.0/empty/public/404.html +30 -0
  1314. data/test/stub/rails_apps/2.0/empty/public/422.html +30 -0
  1315. data/test/stub/rails_apps/2.0/empty/public/500.html +30 -0
  1316. data/test/stub/rails_apps/2.0/empty/public/dispatch.cgi +10 -0
  1317. data/test/stub/rails_apps/2.0/empty/public/dispatch.fcgi +24 -0
  1318. data/test/stub/rails_apps/2.0/empty/public/dispatch.rb +10 -0
  1319. data/test/stub/rails_apps/2.0/empty/public/favicon.ico +0 -0
  1320. data/test/stub/rails_apps/2.0/empty/public/images/rails.png +0 -0
  1321. data/test/stub/rails_apps/2.0/empty/public/robots.txt +5 -0
  1322. data/test/stub/rails_apps/2.0/empty/script/about +3 -0
  1323. data/test/stub/rails_apps/2.0/empty/script/console +3 -0
  1324. data/test/stub/rails_apps/2.0/empty/script/destroy +3 -0
  1325. data/test/stub/rails_apps/2.0/empty/script/generate +3 -0
  1326. data/test/stub/rails_apps/2.0/empty/script/performance/benchmarker +3 -0
  1327. data/test/stub/rails_apps/2.0/empty/script/performance/profiler +3 -0
  1328. data/test/stub/rails_apps/2.0/empty/script/performance/request +3 -0
  1329. data/test/stub/rails_apps/2.0/empty/script/plugin +3 -0
  1330. data/test/stub/rails_apps/2.0/empty/script/process/inspector +3 -0
  1331. data/test/stub/rails_apps/2.0/empty/script/process/reaper +3 -0
  1332. data/test/stub/rails_apps/2.0/empty/script/process/spawner +3 -0
  1333. data/test/stub/rails_apps/2.0/empty/script/runner +3 -0
  1334. data/test/stub/rails_apps/2.0/empty/script/server +3 -0
  1335. data/test/stub/rails_apps/2.0/empty/test/test_helper.rb +38 -0
  1336. data/test/stub/rails_apps/2.2/empty/Rakefile +10 -0
  1337. data/test/stub/rails_apps/2.2/empty/app/controllers/application.rb +15 -0
  1338. data/test/stub/rails_apps/2.2/empty/app/helpers/application_helper.rb +3 -0
  1339. data/test/stub/rails_apps/2.2/empty/config/boot.rb +109 -0
  1340. data/test/stub/rails_apps/2.2/empty/config/database.yml +31 -0
  1341. data/test/stub/rails_apps/2.2/empty/config/environment.rb +75 -0
  1342. data/test/stub/rails_apps/2.2/empty/config/environments/development.rb +17 -0
  1343. data/test/stub/rails_apps/2.2/empty/config/environments/production.rb +24 -0
  1344. data/test/stub/rails_apps/2.2/empty/config/environments/staging.rb +24 -0
  1345. data/test/stub/rails_apps/2.2/empty/config/environments/test.rb +22 -0
  1346. data/test/stub/rails_apps/2.2/empty/config/initializers/inflections.rb +10 -0
  1347. data/test/stub/rails_apps/2.2/empty/config/initializers/mime_types.rb +5 -0
  1348. data/test/stub/rails_apps/2.2/empty/config/initializers/new_rails_defaults.rb +17 -0
  1349. data/test/stub/rails_apps/2.2/empty/config/locales/en.yml +5 -0
  1350. data/test/stub/rails_apps/2.2/empty/config/routes.rb +43 -0
  1351. data/test/stub/rails_apps/2.2/empty/doc/README_FOR_APP +5 -0
  1352. data/test/stub/rails_apps/2.2/empty/public/404.html +30 -0
  1353. data/test/stub/rails_apps/2.2/empty/public/422.html +30 -0
  1354. data/test/stub/rails_apps/2.2/empty/public/500.html +33 -0
  1355. data/test/stub/rails_apps/2.2/empty/public/dispatch.cgi +10 -0
  1356. data/test/stub/rails_apps/2.2/empty/public/dispatch.fcgi +24 -0
  1357. data/test/stub/rails_apps/2.2/empty/public/dispatch.rb +10 -0
  1358. data/test/stub/rails_apps/2.2/empty/public/favicon.ico +0 -0
  1359. data/test/stub/rails_apps/2.2/empty/public/images/rails.png +0 -0
  1360. data/test/stub/rails_apps/2.2/empty/public/robots.txt +5 -0
  1361. data/test/stub/rails_apps/2.2/empty/script/about +4 -0
  1362. data/test/stub/rails_apps/2.2/empty/script/console +3 -0
  1363. data/test/stub/rails_apps/2.2/empty/script/dbconsole +3 -0
  1364. data/test/stub/rails_apps/2.2/empty/script/destroy +3 -0
  1365. data/test/stub/rails_apps/2.2/empty/script/generate +3 -0
  1366. data/test/stub/rails_apps/2.2/empty/script/performance/benchmarker +3 -0
  1367. data/test/stub/rails_apps/2.2/empty/script/performance/profiler +3 -0
  1368. data/test/stub/rails_apps/2.2/empty/script/performance/request +3 -0
  1369. data/test/stub/rails_apps/2.2/empty/script/plugin +3 -0
  1370. data/test/stub/rails_apps/2.2/empty/script/process/inspector +3 -0
  1371. data/test/stub/rails_apps/2.2/empty/script/process/reaper +3 -0
  1372. data/test/stub/rails_apps/2.2/empty/script/process/spawner +3 -0
  1373. data/test/stub/rails_apps/2.2/empty/script/runner +3 -0
  1374. data/test/stub/rails_apps/2.2/empty/script/server +3 -0
  1375. data/test/stub/rails_apps/2.2/empty/test/performance/browsing_test.rb +9 -0
  1376. data/test/stub/rails_apps/2.2/empty/test/test_helper.rb +38 -0
  1377. data/test/stub/rails_apps/2.3/empty/Rakefile +10 -0
  1378. data/test/stub/rails_apps/2.3/empty/app/controllers/application_controller.rb +10 -0
  1379. data/test/stub/rails_apps/2.3/empty/app/helpers/application_helper.rb +3 -0
  1380. data/test/stub/rails_apps/2.3/empty/config/boot.rb +110 -0
  1381. data/test/stub/rails_apps/2.3/empty/config/database.yml +31 -0
  1382. data/test/stub/rails_apps/2.3/empty/config/environment.rb +41 -0
  1383. data/test/stub/rails_apps/2.3/empty/config/environments/development.rb +17 -0
  1384. data/test/stub/rails_apps/2.3/empty/config/environments/production.rb +28 -0
  1385. data/test/stub/rails_apps/2.3/empty/config/environments/staging.rb +28 -0
  1386. data/test/stub/rails_apps/2.3/empty/config/environments/test.rb +28 -0
  1387. data/test/stub/rails_apps/2.3/empty/config/initializers/backtrace_silencers.rb +7 -0
  1388. data/test/stub/rails_apps/2.3/empty/config/initializers/inflections.rb +10 -0
  1389. data/test/stub/rails_apps/2.3/empty/config/initializers/mime_types.rb +5 -0
  1390. data/test/stub/rails_apps/2.3/empty/config/initializers/new_rails_defaults.rb +21 -0
  1391. data/test/stub/rails_apps/2.3/empty/config/initializers/session_store.rb +15 -0
  1392. data/test/stub/rails_apps/2.3/empty/config/locales/en.yml +5 -0
  1393. data/test/stub/rails_apps/2.3/empty/config/routes.rb +43 -0
  1394. data/test/stub/rails_apps/2.3/empty/db/seeds.rb +7 -0
  1395. data/test/stub/rails_apps/2.3/empty/doc/README_FOR_APP +2 -0
  1396. data/test/stub/rails_apps/2.3/empty/public/404.html +30 -0
  1397. data/test/stub/rails_apps/2.3/empty/public/422.html +30 -0
  1398. data/test/stub/rails_apps/2.3/empty/public/500.html +30 -0
  1399. data/test/stub/rails_apps/2.3/empty/public/favicon.ico +0 -0
  1400. data/test/stub/rails_apps/2.3/empty/public/images/rails.png +0 -0
  1401. data/test/stub/rails_apps/2.3/empty/public/robots.txt +5 -0
  1402. data/test/stub/rails_apps/2.3/empty/script/about +4 -0
  1403. data/test/stub/rails_apps/2.3/empty/script/console +3 -0
  1404. data/test/stub/rails_apps/2.3/empty/script/dbconsole +3 -0
  1405. data/test/stub/rails_apps/2.3/empty/script/destroy +3 -0
  1406. data/test/stub/rails_apps/2.3/empty/script/generate +3 -0
  1407. data/test/stub/rails_apps/2.3/empty/script/performance/benchmarker +3 -0
  1408. data/test/stub/rails_apps/2.3/empty/script/performance/profiler +3 -0
  1409. data/test/stub/rails_apps/2.3/empty/script/plugin +3 -0
  1410. data/test/stub/rails_apps/2.3/empty/script/runner +3 -0
  1411. data/test/stub/rails_apps/2.3/empty/script/server +3 -0
  1412. data/test/stub/rails_apps/2.3/empty/test/performance/browsing_test.rb +9 -0
  1413. data/test/stub/rails_apps/2.3/empty/test/test_helper.rb +38 -0
  1414. data/test/stub/rails_apps/2.3/foobar/Rakefile +10 -0
  1415. data/test/stub/rails_apps/2.3/foobar/app/controllers/application_controller.rb +12 -0
  1416. data/test/stub/rails_apps/2.3/foobar/app/controllers/bar_controller_1.rb +5 -0
  1417. data/test/stub/rails_apps/2.3/foobar/app/controllers/bar_controller_2.rb +5 -0
  1418. data/test/stub/rails_apps/2.3/foobar/app/controllers/foo_controller.rb +21 -0
  1419. data/test/stub/rails_apps/2.3/foobar/app/helpers/application_helper.rb +3 -0
  1420. data/test/stub/rails_apps/2.3/foobar/config/boot.rb +110 -0
  1421. data/test/stub/rails_apps/2.3/foobar/config/database.yml +19 -0
  1422. data/test/stub/rails_apps/2.3/foobar/config/environment.rb +59 -0
  1423. data/test/stub/rails_apps/2.3/foobar/config/environments/development.rb +17 -0
  1424. data/test/stub/rails_apps/2.3/foobar/config/environments/production.rb +18 -0
  1425. data/test/stub/rails_apps/2.3/foobar/config/environments/staging.rb +18 -0
  1426. data/test/stub/rails_apps/2.3/foobar/config/initializers/inflections.rb +10 -0
  1427. data/test/stub/rails_apps/2.3/foobar/config/initializers/mime_types.rb +5 -0
  1428. data/test/stub/rails_apps/2.3/foobar/config/routes.rb +35 -0
  1429. data/test/stub/rails_apps/2.3/foobar/script/about +3 -0
  1430. data/test/stub/rails_apps/2.3/foobar/script/console +3 -0
  1431. data/test/stub/rails_apps/2.3/foobar/script/dbconsole +3 -0
  1432. data/test/stub/rails_apps/2.3/foobar/script/destroy +3 -0
  1433. data/test/stub/rails_apps/2.3/foobar/script/generate +3 -0
  1434. data/test/stub/rails_apps/2.3/foobar/script/performance/benchmarker +3 -0
  1435. data/test/stub/rails_apps/2.3/foobar/script/performance/profiler +3 -0
  1436. data/test/stub/rails_apps/2.3/foobar/script/performance/request +3 -0
  1437. data/test/stub/rails_apps/2.3/foobar/script/plugin +3 -0
  1438. data/test/stub/rails_apps/2.3/foobar/script/process/inspector +3 -0
  1439. data/test/stub/rails_apps/2.3/foobar/script/process/reaper +3 -0
  1440. data/test/stub/rails_apps/2.3/foobar/script/process/spawner +3 -0
  1441. data/test/stub/rails_apps/2.3/foobar/script/runner +3 -0
  1442. data/test/stub/rails_apps/2.3/foobar/script/server +3 -0
  1443. data/test/stub/rails_apps/2.3/mycook/Rakefile +10 -0
  1444. data/test/stub/rails_apps/2.3/mycook/app/controllers/application_controller.rb +12 -0
  1445. data/test/stub/rails_apps/2.3/mycook/app/controllers/recipes_controller.rb +5 -0
  1446. data/test/stub/rails_apps/2.3/mycook/app/controllers/uploads_controller.rb +15 -0
  1447. data/test/stub/rails_apps/2.3/mycook/app/controllers/welcome_controller.rb +71 -0
  1448. data/test/stub/rails_apps/2.3/mycook/app/helpers/application_helper.rb +3 -0
  1449. data/test/stub/rails_apps/2.3/mycook/app/views/layouts/default.rhtml +26 -0
  1450. data/test/stub/rails_apps/2.3/mycook/app/views/recipes/create.rhtml +13 -0
  1451. data/test/stub/rails_apps/2.3/mycook/app/views/recipes/index.rhtml +3 -0
  1452. data/test/stub/rails_apps/2.3/mycook/app/views/recipes/new.rhtml +8 -0
  1453. data/test/stub/rails_apps/2.3/mycook/app/views/uploads/index.rhtml +1 -0
  1454. data/test/stub/rails_apps/2.3/mycook/app/views/uploads/new.html.erb +8 -0
  1455. data/test/stub/rails_apps/2.3/mycook/app/views/welcome/cached.rhtml +1 -0
  1456. data/test/stub/rails_apps/2.3/mycook/app/views/welcome/index.rhtml +20 -0
  1457. data/test/stub/rails_apps/2.3/mycook/config/boot.rb +110 -0
  1458. data/test/stub/rails_apps/2.3/mycook/config/database.yml +19 -0
  1459. data/test/stub/rails_apps/2.3/mycook/config/environment.rb +61 -0
  1460. data/test/stub/rails_apps/2.3/mycook/config/environments/development.rb +18 -0
  1461. data/test/stub/rails_apps/2.3/mycook/config/environments/production.rb +19 -0
  1462. data/test/stub/rails_apps/2.3/mycook/config/initializers/inflections.rb +10 -0
  1463. data/test/stub/rails_apps/2.3/mycook/config/initializers/mime_types.rb +5 -0
  1464. data/test/stub/rails_apps/2.3/mycook/config/routes.rb +38 -0
  1465. data/test/stub/rails_apps/2.3/mycook/log/useless.txt +1 -0
  1466. data/test/stub/rails_apps/2.3/mycook/public/404.html +30 -0
  1467. data/test/stub/rails_apps/2.3/mycook/public/422.html +30 -0
  1468. data/test/stub/rails_apps/2.3/mycook/public/500.html +30 -0
  1469. data/test/stub/rails_apps/2.3/mycook/public/dispatch.cgi +10 -0
  1470. data/test/stub/rails_apps/2.3/mycook/public/dispatch.fcgi +24 -0
  1471. data/test/stub/rails_apps/2.3/mycook/public/dispatch.rb +10 -0
  1472. data/test/stub/rails_apps/2.3/mycook/public/favicon.ico +0 -0
  1473. data/test/stub/rails_apps/2.3/mycook/public/images/angrywizard.gif +0 -0
  1474. data/test/stub/rails_apps/2.3/mycook/public/images/cookbook.gif +0 -0
  1475. data/test/stub/rails_apps/2.3/mycook/public/images/header.png +0 -0
  1476. data/test/stub/rails_apps/2.3/mycook/public/images/rails.png +0 -0
  1477. data/test/stub/rails_apps/2.3/mycook/public/javascripts/application.js +2 -0
  1478. data/test/stub/rails_apps/2.3/mycook/public/javascripts/controls.js +963 -0
  1479. data/test/stub/rails_apps/2.3/mycook/public/javascripts/dragdrop.js +973 -0
  1480. data/test/stub/rails_apps/2.3/mycook/public/javascripts/effects.js +1128 -0
  1481. data/test/stub/rails_apps/2.3/mycook/public/javascripts/prototype.js +4320 -0
  1482. data/test/stub/rails_apps/2.3/mycook/public/robots.txt +5 -0
  1483. data/test/stub/rails_apps/2.3/mycook/public/uploads.html +26 -0
  1484. data/test/stub/rails_apps/2.3/mycook/public/welcome/cached.html +26 -0
  1485. data/test/stub/rails_apps/2.3/mycook/script/about +3 -0
  1486. data/test/stub/rails_apps/2.3/mycook/script/console +3 -0
  1487. data/test/stub/rails_apps/2.3/mycook/script/dbconsole +3 -0
  1488. data/test/stub/rails_apps/2.3/mycook/script/destroy +3 -0
  1489. data/test/stub/rails_apps/2.3/mycook/script/generate +3 -0
  1490. data/test/stub/rails_apps/2.3/mycook/script/performance/benchmarker +3 -0
  1491. data/test/stub/rails_apps/2.3/mycook/script/performance/profiler +3 -0
  1492. data/test/stub/rails_apps/2.3/mycook/script/performance/request +3 -0
  1493. data/test/stub/rails_apps/2.3/mycook/script/plugin +3 -0
  1494. data/test/stub/rails_apps/2.3/mycook/script/process/inspector +3 -0
  1495. data/test/stub/rails_apps/2.3/mycook/script/process/reaper +3 -0
  1496. data/test/stub/rails_apps/2.3/mycook/script/process/spawner +3 -0
  1497. data/test/stub/rails_apps/2.3/mycook/script/runner +3 -0
  1498. data/test/stub/rails_apps/2.3/mycook/script/server +3 -0
  1499. data/test/stub/rails_apps/2.3/mycook/sites/some.site/public/uploads.html +26 -0
  1500. data/test/stub/rails_apps/2.3/mycook/sites/some.site/public/welcome/cached.html +26 -0
  1501. data/test/stub/rails_apps/2.3/mycook/tmp/cache/useless.txt +1 -0
  1502. data/test/stub/rails_apps/2.3/mycook/tmp/pids/useless.txt +1 -0
  1503. data/test/stub/rails_apps/2.3/mycook/tmp/sessions/useless.txt +1 -0
  1504. data/test/stub/rails_apps/2.3/mycook/tmp/sockets/useless.txt +1 -0
  1505. data/test/stub/rails_apps/3.0/empty/Gemfile +22 -0
  1506. data/test/stub/rails_apps/3.0/empty/Gemfile.lock +73 -0
  1507. data/test/stub/rails_apps/3.0/empty/Rakefile +10 -0
  1508. data/test/stub/rails_apps/3.0/empty/app/controllers/application_controller.rb +4 -0
  1509. data/test/stub/rails_apps/3.0/empty/app/helpers/application_helper.rb +2 -0
  1510. data/test/stub/rails_apps/3.0/empty/app/views/layouts/application.html.erb +14 -0
  1511. data/test/stub/rails_apps/3.0/empty/config.ru +4 -0
  1512. data/test/stub/rails_apps/3.0/empty/config/application.rb +48 -0
  1513. data/test/stub/rails_apps/3.0/empty/config/boot.rb +13 -0
  1514. data/test/stub/rails_apps/3.0/empty/config/database.yml +22 -0
  1515. data/test/stub/rails_apps/3.0/empty/config/environment.rb +5 -0
  1516. data/test/stub/rails_apps/3.0/empty/config/environments/development.rb +19 -0
  1517. data/test/stub/rails_apps/3.0/empty/config/environments/production.rb +48 -0
  1518. data/test/stub/rails_apps/3.0/empty/config/environments/test.rb +32 -0
  1519. data/test/stub/rails_apps/3.0/empty/config/initializers/backtrace_silencers.rb +7 -0
  1520. data/test/stub/rails_apps/3.0/empty/config/initializers/inflections.rb +10 -0
  1521. data/test/stub/rails_apps/3.0/empty/config/initializers/mime_types.rb +5 -0
  1522. data/test/stub/rails_apps/3.0/empty/config/initializers/passenger.rb +1 -0
  1523. data/test/stub/rails_apps/3.0/empty/config/initializers/secret_token.rb +7 -0
  1524. data/test/stub/rails_apps/3.0/empty/config/initializers/session_store.rb +8 -0
  1525. data/test/stub/rails_apps/3.0/empty/config/locales/en.yml +5 -0
  1526. data/test/stub/rails_apps/3.0/empty/config/routes.rb +58 -0
  1527. data/test/stub/rails_apps/3.0/empty/db/seeds.rb +7 -0
  1528. data/test/stub/rails_apps/3.0/empty/doc/README_FOR_APP +2 -0
  1529. data/test/stub/rails_apps/3.0/empty/public/404.html +26 -0
  1530. data/test/stub/rails_apps/3.0/empty/public/422.html +26 -0
  1531. data/test/stub/rails_apps/3.0/empty/public/500.html +26 -0
  1532. data/test/stub/rails_apps/3.0/empty/public/favicon.ico +0 -0
  1533. data/test/stub/rails_apps/3.0/empty/public/index.html +279 -0
  1534. data/test/stub/rails_apps/3.0/empty/public/robots.txt +5 -0
  1535. data/test/stub/rails_apps/3.0/empty/script/rails +9 -0
  1536. data/test/stub/rails_apps/3.0/empty/test/performance/browsing_test.rb +9 -0
  1537. data/test/stub/rails_apps/3.0/empty/test/test_helper.rb +13 -0
  1538. data/test/stub/spawn_server.rb +22 -0
  1539. data/test/stub/upload_data.txt +494 -0
  1540. data/test/stub/vendor_rails/minimal/README +1 -0
  1541. data/test/stub/vendor_rails/minimal/actionmailer/lib/action_mailer.rb +0 -0
  1542. data/test/stub/vendor_rails/minimal/actionpack/lib/action_controller.rb +22 -0
  1543. data/test/stub/vendor_rails/minimal/actionpack/lib/action_pack.rb +0 -0
  1544. data/test/stub/vendor_rails/minimal/actionpack/lib/action_view.rb +0 -0
  1545. data/test/stub/vendor_rails/minimal/activerecord/lib/active_record.rb +7 -0
  1546. data/test/stub/vendor_rails/minimal/activeresource/lib/active_resource.rb +0 -0
  1547. data/test/stub/vendor_rails/minimal/activesupport/lib/active_support.rb +17 -0
  1548. data/test/stub/vendor_rails/minimal/activesupport/lib/active_support/whiny_nil.rb +0 -0
  1549. data/test/stub/vendor_rails/minimal/railties/lib/dispatcher.rb +0 -0
  1550. data/test/stub/vendor_rails/minimal/railties/lib/initializer.rb +57 -0
  1551. data/test/stub/vendor_rails/minimal/railties/lib/ruby_version_check.rb +1 -0
  1552. data/test/stub/wsgi/passenger_wsgi.py +3 -0
  1553. data/test/stub/wsgi/public/wsgi-snake.jpg +0 -0
  1554. data/test/stub/zsfa/header.png +0 -0
  1555. data/test/stub/zsfa/index.html +14 -0
  1556. data/test/stub/zsfa/zsfa.png +0 -0
  1557. data/test/support/allocate_memory.c +14 -0
  1558. data/test/support/apache2_controller.rb +258 -0
  1559. data/test/support/multipart.rb +62 -0
  1560. data/test/support/nginx_controller.rb +99 -0
  1561. data/test/support/test_helper.rb +448 -0
  1562. data/test/support/valgrind.h +2539 -0
  1563. data/test/tut/tut.h +1240 -0
  1564. data/test/tut/tut_reporter.h +256 -0
  1565. metadata +1703 -0
@@ -0,0 +1,134 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html>
6
+ <head>
7
+ <title>Class: PhusionPassenger::NativeSupportLoader</title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
10
+
11
+ <script language="JavaScript" type="text/javascript">
12
+ // <![CDATA[
13
+
14
+ function toggleSource( id )
15
+ {
16
+ var elem
17
+ var link
18
+
19
+ if( document.getElementById )
20
+ {
21
+ elem = document.getElementById( id )
22
+ link = document.getElementById( "l_" + id )
23
+ }
24
+ else if ( document.all )
25
+ {
26
+ elem = eval( "document.all." + id )
27
+ link = eval( "document.all.l_" + id )
28
+ }
29
+ else
30
+ return false;
31
+
32
+ if( elem.style.display == "block" )
33
+ {
34
+ elem.style.display = "none"
35
+ link.innerHTML = "show source"
36
+ }
37
+ else
38
+ {
39
+ elem.style.display = "block"
40
+ link.innerHTML = "hide source"
41
+ }
42
+ }
43
+
44
+ function openCode( url )
45
+ {
46
+ window.open( url, "SOURCE_CODE", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=480,width=750" ).focus();
47
+ }
48
+ // ]]>
49
+ </script>
50
+ </head>
51
+
52
+ <body>
53
+ <table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
54
+ <td class="file-title"><span class="file-title-prefix">Class</span><br />PhusionPassenger::NativeSupportLoader</td>
55
+ <td align="right">
56
+ <table cellspacing="0" cellpadding="2">
57
+ <tr valign="top">
58
+ <td>In:</td>
59
+ <td>
60
+ <a href="../../files/lib/phusion_passenger/native_support_rb.html">lib/phusion_passenger/native_support.rb</a>
61
+ </td>
62
+ </tr>
63
+ <tr>
64
+ <td>Parent:</td>
65
+ <td>
66
+ Object
67
+ </td>
68
+ </tr>
69
+ </table>
70
+ </td>
71
+ </tr>
72
+ </table>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+ <div id="content">
77
+
78
+
79
+
80
+
81
+ <div class="sectiontitle">Methods</div>
82
+ <ul>
83
+ <li><a href="#M000310">start</a></li>
84
+ <li><a href="#M000309">supported?</a></li>
85
+ </ul>
86
+
87
+
88
+
89
+
90
+
91
+
92
+ <div class="sectiontitle">Public Instance methods</div>
93
+ <div class="method">
94
+ <div class="title">
95
+ <a name="M000310"></a><b>start</b>()
96
+ </div>
97
+ <div class="sourcecode">
98
+ <p class="source-link">[ <a href="javascript:toggleSource('M000310_source')" id="l_M000310_source">show source</a> ]</p>
99
+ <div id="M000310_source" class="dyn-source">
100
+ <pre>
101
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/native_support.rb, line 31</span>
102
+ 31: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start</span>
103
+ 32: <span class="ruby-identifier">require</span> <span class="ruby-value str">'phusion_passenger'</span>
104
+ 33: <span class="ruby-identifier">load_from_source_dir</span> <span class="ruby-operator">||</span>
105
+ 34: <span class="ruby-identifier">load_from_load_path</span> <span class="ruby-operator">||</span>
106
+ 35: <span class="ruby-identifier">load_from_home</span> <span class="ruby-operator">||</span>
107
+ 36: <span class="ruby-identifier">compile_and_load</span>
108
+ 37: <span class="ruby-keyword kw">end</span>
109
+ </pre>
110
+ </div>
111
+ </div>
112
+ </div>
113
+ <div class="method">
114
+ <div class="title">
115
+ <a name="M000309"></a><b>supported?</b>()
116
+ </div>
117
+ <div class="sourcecode">
118
+ <p class="source-link">[ <a href="javascript:toggleSource('M000309_source')" id="l_M000309_source">show source</a> ]</p>
119
+ <div id="M000309_source" class="dyn-source">
120
+ <pre>
121
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/native_support.rb, line 27</span>
122
+ 27: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">supported?</span>
123
+ 28: <span class="ruby-keyword kw">return</span> <span class="ruby-operator">!</span><span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">RUBY_ENGINE</span>) <span class="ruby-operator">||</span> <span class="ruby-constant">RUBY_ENGINE</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;ruby&quot;</span> <span class="ruby-operator">||</span> <span class="ruby-constant">RUBY_ENGINE</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;rbx&quot;</span>
124
+ 29: <span class="ruby-keyword kw">end</span>
125
+ </pre>
126
+ </div>
127
+ </div>
128
+ </div>
129
+ </div>
130
+
131
+ </div>
132
+
133
+ </body>
134
+ </html>
@@ -0,0 +1,129 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html>
6
+ <head>
7
+ <title>Module: PhusionPassenger::Packaging</title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
10
+
11
+ <script language="JavaScript" type="text/javascript">
12
+ // <![CDATA[
13
+
14
+ function toggleSource( id )
15
+ {
16
+ var elem
17
+ var link
18
+
19
+ if( document.getElementById )
20
+ {
21
+ elem = document.getElementById( id )
22
+ link = document.getElementById( "l_" + id )
23
+ }
24
+ else if ( document.all )
25
+ {
26
+ elem = eval( "document.all." + id )
27
+ link = eval( "document.all.l_" + id )
28
+ }
29
+ else
30
+ return false;
31
+
32
+ if( elem.style.display == "block" )
33
+ {
34
+ elem.style.display = "none"
35
+ link.innerHTML = "show source"
36
+ }
37
+ else
38
+ {
39
+ elem.style.display = "block"
40
+ link.innerHTML = "hide source"
41
+ }
42
+ }
43
+
44
+ function openCode( url )
45
+ {
46
+ window.open( url, "SOURCE_CODE", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=480,width=750" ).focus();
47
+ }
48
+ // ]]>
49
+ </script>
50
+ </head>
51
+
52
+ <body>
53
+ <table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
54
+ <td class="file-title"><span class="file-title-prefix">Module</span><br />PhusionPassenger::Packaging</td>
55
+ <td align="right">
56
+ <table cellspacing="0" cellpadding="2">
57
+ <tr valign="top">
58
+ <td>In:</td>
59
+ <td>
60
+ <a href="../../files/lib/phusion_passenger/packaging_rb.html">lib/phusion_passenger/packaging.rb</a>
61
+ </td>
62
+ </tr>
63
+ </table>
64
+ </td>
65
+ </tr>
66
+ </table>
67
+ <!-- banner header -->
68
+
69
+ <div id="bodyContent">
70
+ <div id="content">
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ <div class="sectiontitle">Constants</div>
80
+ <table border='0' cellpadding='5'>
81
+ <tr valign='top'>
82
+ <td class="attr-name">ASCII_DOCS</td>
83
+ <td>=</td>
84
+ <td class="attr-value">[ 'doc/Users guide Apache.html', 'doc/Users guide Nginx.html', 'doc/Users guide Standalone.html', 'doc/Security of user switching support.html', 'doc/Architectural overview.html'</td>
85
+ </tr>
86
+ <tr valign='top'>
87
+ <td>&nbsp;</td>
88
+ <td colspan="2" class="attr-desc">
89
+ A list of HTML files that are generated with Asciidoc.
90
+
91
+ </td>
92
+ </tr>
93
+ <tr valign='top'>
94
+ <td class="attr-name">USER_EXECUTABLES</td>
95
+ <td>=</td>
96
+ <td class="attr-value">[ 'passenger', 'passenger-install-apache2-module', 'passenger-install-nginx-module', 'passenger-config'</td>
97
+ </tr>
98
+ <tr valign='top'>
99
+ <td class="attr-name">SUPER_USER_EXECUTABLES</td>
100
+ <td>=</td>
101
+ <td class="attr-value">[ 'passenger-status', 'passenger-memory-stats', 'passenger-make-enterprisey'</td>
102
+ </tr>
103
+ <tr valign='top'>
104
+ <td class="attr-name">GLOB</td>
105
+ <td>=</td>
106
+ <td class="attr-value">[ 'Rakefile', 'README', 'DEVELOPERS.TXT', 'PACKAGING.TXT', 'LICENSE', 'INSTALL', 'NEWS', 'build/*.rb', 'lib/*.rb', 'lib/**/*.rb', 'lib/**/*.py', 'lib/phusion_passenger/templates/*', 'lib/phusion_passenger/templates/apache2/*', 'lib/phusion_passenger/templates/nginx/*', 'lib/phusion_passenger/templates/standalone/*', 'lib/phusion_passenger/templates/standalone_default_root/*', 'bin/*', 'doc/**/*', 'man/*', 'debian/*', 'helper-scripts/*', 'ext/common/**/*.{cpp,c,h,hpp}', 'ext/apache2/*.{cpp,h,hpp,c}', 'ext/nginx/*.{c,cpp,h}', 'ext/nginx/config', 'ext/boost/**/*', 'ext/google/**/*', 'ext/libev/{LICENSE,Changes,README,Makefile.am,Makefile.in}', 'ext/libev/{*.m4,autogen.sh,config.guess,config.h.in,config.sub}', 'ext/libev/{configure,configure.ac,install-sh,ltmain.sh,missing,mkinstalldirs}', 'ext/libev/{*.h,*.c}', 'ext/oxt/*.hpp', 'ext/oxt/*.cpp', 'ext/oxt/detail/*.hpp', 'ext/ruby/*.{c,rb}', 'dev/*', 'resources/*', 'test/*.example', 'test/support/*.{c,cpp,h,rb}', 'test/tut/*', 'test/cxx/*.{cpp,h}', 'test/oxt/*.{cpp,hpp}', 'test/ruby/**/*', 'test/integration_tests/**/*', 'test/stub/**/*'</td>
107
+ </tr>
108
+ <tr valign='top'>
109
+ <td>&nbsp;</td>
110
+ <td colspan="2" class="attr-desc">
111
+ A list of globs which match all files that should be packaged in the
112
+ Phusion Passenger gem or tarball.
113
+
114
+ </td>
115
+ </tr>
116
+ <tr valign='top'>
117
+ <td class="attr-name">EXCLUDE_GLOB</td>
118
+ <td>=</td>
119
+ <td class="attr-value">[ 'test/stub/rails_apps/3.0/empty/help/**/*'</td>
120
+ </tr>
121
+ </table>
122
+
123
+
124
+ </div>
125
+
126
+ </div>
127
+
128
+ </body>
129
+ </html>
@@ -0,0 +1,1972 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html>
6
+ <head>
7
+ <title>Module: PhusionPassenger::PlatformInfo</title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
10
+
11
+ <script language="JavaScript" type="text/javascript">
12
+ // <![CDATA[
13
+
14
+ function toggleSource( id )
15
+ {
16
+ var elem
17
+ var link
18
+
19
+ if( document.getElementById )
20
+ {
21
+ elem = document.getElementById( id )
22
+ link = document.getElementById( "l_" + id )
23
+ }
24
+ else if ( document.all )
25
+ {
26
+ elem = eval( "document.all." + id )
27
+ link = eval( "document.all.l_" + id )
28
+ }
29
+ else
30
+ return false;
31
+
32
+ if( elem.style.display == "block" )
33
+ {
34
+ elem.style.display = "none"
35
+ link.innerHTML = "show source"
36
+ }
37
+ else
38
+ {
39
+ elem.style.display = "block"
40
+ link.innerHTML = "hide source"
41
+ }
42
+ }
43
+
44
+ function openCode( url )
45
+ {
46
+ window.open( url, "SOURCE_CODE", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=480,width=750" ).focus();
47
+ }
48
+ // ]]>
49
+ </script>
50
+ </head>
51
+
52
+ <body>
53
+ <table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
54
+ <td class="file-title"><span class="file-title-prefix">Module</span><br />PhusionPassenger::PlatformInfo</td>
55
+ <td align="right">
56
+ <table cellspacing="0" cellpadding="2">
57
+ <tr valign="top">
58
+ <td>In:</td>
59
+ <td>
60
+ <a href="../../files/lib/phusion_passenger/platform_info_rb.html">lib/phusion_passenger/platform_info.rb</a>
61
+ <a href="../../files/lib/phusion_passenger/platform_info/apache_rb.html">lib/phusion_passenger/platform_info/apache.rb</a>
62
+ <a href="../../files/lib/phusion_passenger/platform_info/binary_compatibility_rb.html">lib/phusion_passenger/platform_info/binary_compatibility.rb</a>
63
+ <a href="../../files/lib/phusion_passenger/platform_info/compiler_rb.html">lib/phusion_passenger/platform_info/compiler.rb</a>
64
+ <a href="../../files/lib/phusion_passenger/platform_info/curl_rb.html">lib/phusion_passenger/platform_info/curl.rb</a>
65
+ <a href="../../files/lib/phusion_passenger/platform_info/documentation_tools_rb.html">lib/phusion_passenger/platform_info/documentation_tools.rb</a>
66
+ <a href="../../files/lib/phusion_passenger/platform_info/linux_rb.html">lib/phusion_passenger/platform_info/linux.rb</a>
67
+ <a href="../../files/lib/phusion_passenger/platform_info/operating_system_rb.html">lib/phusion_passenger/platform_info/operating_system.rb</a>
68
+ <a href="../../files/lib/phusion_passenger/platform_info/ruby_rb.html">lib/phusion_passenger/platform_info/ruby.rb</a>
69
+ <a href="../../files/lib/phusion_passenger/platform_info/zlib_rb.html">lib/phusion_passenger/platform_info/zlib.rb</a>
70
+ </td>
71
+ </tr>
72
+ </table>
73
+ </td>
74
+ </tr>
75
+ </table>
76
+ <!-- banner header -->
77
+
78
+ <div id="bodyContent">
79
+ <div id="content">
80
+
81
+ <div class="description"><p>
82
+ Users can change the detection behavior by setting the environment variable
83
+ <tt>APXS2</tt> to the correct &#8216;apxs&#8217; (or &#8216;<a
84
+ href="PlatformInfo.html#M000032">apxs2</a>&#8217;) binary, as provided by
85
+ Apache.
86
+ </p>
87
+ </div>
88
+
89
+
90
+
91
+ <div class="sectiontitle">Methods</div>
92
+ <ul>
93
+ <li><a href="#M000037">apache2_bindir</a></li>
94
+ <li><a href="#M000039">apache2_module_cflags</a></li>
95
+ <li><a href="#M000040">apache2_module_ldflags</a></li>
96
+ <li><a href="#M000038">apache2_sbindir</a></li>
97
+ <li><a href="#M000033">apache2ctl</a></li>
98
+ <li><a href="#M000035">apr_config</a></li>
99
+ <li><a href="#M000045">apr_config_needed_for_building_apache_modules?</a></li>
100
+ <li><a href="#M000041">apr_flags</a></li>
101
+ <li><a href="#M000042">apr_libs</a></li>
102
+ <li><a href="#M000036">apu_config</a></li>
103
+ <li><a href="#M000043">apu_flags</a></li>
104
+ <li><a href="#M000044">apu_libs</a></li>
105
+ <li><a href="#M000032">apxs2</a></li>
106
+ <li><a href="#M000060">asciidoc</a></li>
107
+ <li><a href="#M000030">cc</a></li>
108
+ <li><a href="#M000049">compiler_supports_visibility_flag?</a></li>
109
+ <li><a href="#M000050">compiler_supports_wno_attributes_flag?</a></li>
110
+ <li><a href="#M000051">compiler_visibility_flag_generates_warnings?</a></li>
111
+ <li><a href="#M000065">cpu_architectures</a></li>
112
+ <li><a href="#M000057">curl_flags</a></li>
113
+ <li><a href="#M000058">curl_libs</a></li>
114
+ <li><a href="#M000059">curl_supports_ssl?</a></li>
115
+ <li><a href="#M000031">cxx</a></li>
116
+ <li><a href="#M000055">debugging_cflags</a></li>
117
+ <li><a href="#M000029">env_defined?</a></li>
118
+ <li><a href="#M000056">export_dynamic_flags</a></li>
119
+ <li><a href="#M000028">find_command</a></li>
120
+ <li><a href="#M000071">gem_command</a></li>
121
+ <li><a href="#M000048">gnu_make</a></li>
122
+ <li><a href="#M000052">has_math_library?</a></li>
123
+ <li><a href="#M000034">httpd</a></li>
124
+ <li><a href="#M000075">in_rvm?</a></li>
125
+ <li><a href="#M000064">library_extension</a></li>
126
+ <li><a href="#M000061">linux_distro</a></li>
127
+ <li><a href="#M000062">linux_distro_tags</a></li>
128
+ <li><a href="#M000079">locate_ruby_tool</a></li>
129
+ <li><a href="#M000063">os_name</a></li>
130
+ <li><a href="#M000047">passenger_binary_compatibility_id</a></li>
131
+ <li><a href="#M000053">portability_cflags</a></li>
132
+ <li><a href="#M000054">portability_ldflags</a></li>
133
+ <li><a href="#M000072">rake</a></li>
134
+ <li><a href="#M000073">rake_command</a></li>
135
+ <li><a href="#M000074">rspec</a></li>
136
+ <li><a href="#M000068">ruby_command</a></li>
137
+ <li><a href="#M000069">ruby_executable</a></li>
138
+ <li><a href="#M000046">ruby_extension_binary_compatibility_ids</a></li>
139
+ <li><a href="#M000078">ruby_sudo_command</a></li>
140
+ <li><a href="#M000070">ruby_supports_fork?</a></li>
141
+ <li><a href="#M000076">rvm_path</a></li>
142
+ <li><a href="#M000077">rvm_ruby_string</a></li>
143
+ <li><a href="#M000067">supports_lfence_instruction?</a></li>
144
+ <li><a href="#M000066">supports_sfence_instruction?</a></li>
145
+ <li><a href="#M000080">zlib_flags</a></li>
146
+ <li><a href="#M000081">zlib_libs</a></li>
147
+ </ul>
148
+
149
+
150
+
151
+
152
+ <div class="sectiontitle">Constants</div>
153
+ <table border='0' cellpadding='5'>
154
+ <tr valign='top'>
155
+ <td class="attr-name">GEM_HOME</td>
156
+ <td>=</td>
157
+ <td class="attr-value">gem_home</td>
158
+ </tr>
159
+ <tr valign='top'>
160
+ <td class="attr-name">RUBY_ENGINE</td>
161
+ <td>=</td>
162
+ <td class="attr-value">::RUBY_ENGINE</td>
163
+ </tr>
164
+ <tr valign='top'>
165
+ <td class="attr-name">RUBY_ENGINE</td>
166
+ <td>=</td>
167
+ <td class="attr-value">&quot;ruby&quot;</td>
168
+ </tr>
169
+ </table>
170
+
171
+
172
+ <div class="sectiontitle">Public Class methods</div>
173
+ <div class="method">
174
+ <div class="title">
175
+ <a name="M000037"></a><b>apache2_bindir</b>()
176
+ </div>
177
+ <div class="description">
178
+ <p>
179
+ The absolute path to the Apache 2 &#8216;bin&#8217; directory, or nil if
180
+ unknown.
181
+ </p>
182
+ </div>
183
+ <div class="sourcecode">
184
+ <p class="source-link">[ <a href="javascript:toggleSource('M000037_source')" id="l_M000037_source">show source</a> ]</p>
185
+ <div id="M000037_source" class="dyn-source">
186
+ <pre>
187
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/apache.rb, line 140</span>
188
+ 140: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apache2_bindir</span>
189
+ 141: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">apxs2</span>.<span class="ruby-identifier">nil?</span>
190
+ 142: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
191
+ 143: <span class="ruby-keyword kw">else</span>
192
+ 144: <span class="ruby-keyword kw">return</span> <span class="ruby-node">`#{apxs2} -q BINDIR 2&gt;/dev/null`</span>.<span class="ruby-identifier">strip</span>
193
+ 145: <span class="ruby-keyword kw">end</span>
194
+ 146: <span class="ruby-keyword kw">end</span>
195
+ </pre>
196
+ </div>
197
+ </div>
198
+ </div>
199
+ <div class="method">
200
+ <div class="title">
201
+ <a name="M000039"></a><b>apache2_module_cflags</b>(with_apr_flags = true)
202
+ </div>
203
+ <div class="description">
204
+ <p>
205
+ The C compiler flags that are necessary to compile an Apache module. Also
206
+ includes APR and APU compiler flags if with_apr_flags is true.
207
+ </p>
208
+ </div>
209
+ <div class="sourcecode">
210
+ <p class="source-link">[ <a href="javascript:toggleSource('M000039_source')" id="l_M000039_source">show source</a> ]</p>
211
+ <div id="M000039_source" class="dyn-source">
212
+ <pre>
213
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/apache.rb, line 164</span>
214
+ 164: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apache2_module_cflags</span>(<span class="ruby-identifier">with_apr_flags</span> = <span class="ruby-keyword kw">true</span>)
215
+ 165: <span class="ruby-identifier">flags</span> = [<span class="ruby-value str">&quot;-fPIC&quot;</span>]
216
+ 166: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">compiler_supports_visibility_flag?</span>
217
+ 167: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;-fvisibility=hidden -DVISIBILITY_ATTRIBUTE_SUPPORTED&quot;</span>
218
+ 168: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">compiler_visibility_flag_generates_warnings?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">compiler_supports_wno_attributes_flag?</span>
219
+ 169: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;-Wno-attributes&quot;</span>
220
+ 170: <span class="ruby-keyword kw">end</span>
221
+ 171: <span class="ruby-keyword kw">end</span>
222
+ 172: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">with_apr_flags</span>
223
+ 173: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">apr_flags</span>
224
+ 174: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">apu_flags</span>
225
+ 175: <span class="ruby-keyword kw">end</span>
226
+ 176: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">apxs2</span>.<span class="ruby-identifier">nil?</span>
227
+ 177: <span class="ruby-identifier">apxs2_flags</span> = <span class="ruby-node">`#{apxs2} -q CFLAGS`</span>.<span class="ruby-identifier">strip</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; -I&quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">`#{apxs2} -q INCLUDEDIR`</span>.<span class="ruby-identifier">strip</span>
228
+ 178: <span class="ruby-identifier">apxs2_flags</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/-O\d? /</span>, <span class="ruby-value str">''</span>)
229
+ 179:
230
+ 180: <span class="ruby-comment cmt"># Remove flags not supported by GCC</span>
231
+ 181: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/solaris/</span> <span class="ruby-comment cmt"># TODO: Add support for people using SunStudio</span>
232
+ 182: <span class="ruby-comment cmt"># The big problem is Coolstack apxs includes a bunch of solaris -x directives.</span>
233
+ 183: <span class="ruby-identifier">options</span> = <span class="ruby-identifier">apxs2_flags</span>.<span class="ruby-identifier">split</span>
234
+ 184: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">reject!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^\-x/</span> }
235
+ 185: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">reject!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^\-Xa/</span> }
236
+ 186: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">reject!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^\-fast/</span> }
237
+ 187: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">reject!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^\-mt/</span> }
238
+ 188: <span class="ruby-identifier">apxs2_flags</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">' '</span>)
239
+ 189: <span class="ruby-keyword kw">end</span>
240
+ 190:
241
+ 191: <span class="ruby-identifier">apxs2_flags</span>.<span class="ruby-identifier">strip!</span>
242
+ 192: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">apxs2_flags</span>
243
+ 193: <span class="ruby-keyword kw">end</span>
244
+ 194: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">httpd</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/darwin/</span>
245
+ 195: <span class="ruby-comment cmt"># The default Apache install on OS X is a universal binary.</span>
246
+ 196: <span class="ruby-comment cmt"># Figure out which architectures it's compiled for and do the same</span>
247
+ 197: <span class="ruby-comment cmt"># thing for mod_passenger. We use the 'file' utility to do this.</span>
248
+ 198: <span class="ruby-comment cmt">#</span>
249
+ 199: <span class="ruby-comment cmt"># Running 'file' on the Apache executable usually outputs something</span>
250
+ 200: <span class="ruby-comment cmt"># like this:</span>
251
+ 201: <span class="ruby-comment cmt">#</span>
252
+ 202: <span class="ruby-comment cmt"># /usr/sbin/httpd: Mach-O universal binary with 4 architectures</span>
253
+ 203: <span class="ruby-comment cmt"># /usr/sbin/httpd (for architecture ppc7400): Mach-O executable ppc</span>
254
+ 204: <span class="ruby-comment cmt"># /usr/sbin/httpd (for architecture ppc64): Mach-O 64-bit executable ppc64</span>
255
+ 205: <span class="ruby-comment cmt"># /usr/sbin/httpd (for architecture i386): Mach-O executable i386</span>
256
+ 206: <span class="ruby-comment cmt"># /usr/sbin/httpd (for architecture x86_64): Mach-O 64-bit executable x86_64</span>
257
+ 207: <span class="ruby-comment cmt">#</span>
258
+ 208: <span class="ruby-comment cmt"># But on some machines, it may output just:</span>
259
+ 209: <span class="ruby-comment cmt">#</span>
260
+ 210: <span class="ruby-comment cmt"># /usr/sbin/httpd: Mach-O fat file with 4 architectures</span>
261
+ 211: <span class="ruby-comment cmt">#</span>
262
+ 212: <span class="ruby-comment cmt"># (http://code.google.com/p/phusion-passenger/issues/detail?id=236)</span>
263
+ 213: <span class="ruby-identifier">output</span> = <span class="ruby-node">`file &quot;#{httpd}&quot;`</span>.<span class="ruby-identifier">strip</span>
264
+ 214: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">output</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/Mach-O fat file/</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">output</span> <span class="ruby-operator">!~</span> <span class="ruby-regexp re">/for architecture/</span>
265
+ 215: <span class="ruby-identifier">architectures</span> = [<span class="ruby-value str">&quot;-arch i386 -arch ppc -arch x86_64 -arch ppc64&quot;</span>]
266
+ 216: <span class="ruby-keyword kw">else</span>
267
+ 217: <span class="ruby-identifier">architectures</span> = []
268
+ 218: <span class="ruby-identifier">output</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">&quot;\n&quot;</span>).<span class="ruby-identifier">grep</span>(<span class="ruby-regexp re">/for architecture/</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
269
+ 219: <span class="ruby-identifier">line</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/for architecture (.*?)\)/</span>
270
+ 220: <span class="ruby-identifier">architectures</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;-arch #{$1}&quot;</span>
271
+ 221: <span class="ruby-keyword kw">end</span>
272
+ 222: <span class="ruby-keyword kw">end</span>
273
+ 223: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">architectures</span>.<span class="ruby-identifier">compact</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">' '</span>)
274
+ 224: <span class="ruby-keyword kw">end</span>
275
+ 225: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">flags</span>.<span class="ruby-identifier">compact</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">' '</span>).<span class="ruby-identifier">strip</span>
276
+ 226: <span class="ruby-keyword kw">end</span>
277
+ </pre>
278
+ </div>
279
+ </div>
280
+ </div>
281
+ <div class="method">
282
+ <div class="title">
283
+ <a name="M000040"></a><b>apache2_module_ldflags</b>()
284
+ </div>
285
+ <div class="description">
286
+ <p>
287
+ Linker flags that are necessary for linking an Apache module. Already
288
+ includes APR and APU linker flags.
289
+ </p>
290
+ </div>
291
+ <div class="sourcecode">
292
+ <p class="source-link">[ <a href="javascript:toggleSource('M000040_source')" id="l_M000040_source">show source</a> ]</p>
293
+ <div id="M000040_source" class="dyn-source">
294
+ <pre>
295
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/apache.rb, line 231</span>
296
+ 231: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apache2_module_ldflags</span>
297
+ 232: <span class="ruby-identifier">flags</span> = <span class="ruby-node">&quot;-fPIC #{apr_libs} #{apu_libs}&quot;</span>
298
+ 233: <span class="ruby-identifier">flags</span>.<span class="ruby-identifier">strip!</span>
299
+ 234: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">flags</span>
300
+ 235: <span class="ruby-keyword kw">end</span>
301
+ </pre>
302
+ </div>
303
+ </div>
304
+ </div>
305
+ <div class="method">
306
+ <div class="title">
307
+ <a name="M000038"></a><b>apache2_sbindir</b>()
308
+ </div>
309
+ <div class="description">
310
+ <p>
311
+ The absolute path to the Apache 2 &#8216;sbin&#8217; directory, or nil if
312
+ unknown.
313
+ </p>
314
+ </div>
315
+ <div class="sourcecode">
316
+ <p class="source-link">[ <a href="javascript:toggleSource('M000038_source')" id="l_M000038_source">show source</a> ]</p>
317
+ <div id="M000038_source" class="dyn-source">
318
+ <pre>
319
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/apache.rb, line 150</span>
320
+ 150: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apache2_sbindir</span>
321
+ 151: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">apxs2</span>.<span class="ruby-identifier">nil?</span>
322
+ 152: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
323
+ 153: <span class="ruby-keyword kw">else</span>
324
+ 154: <span class="ruby-keyword kw">return</span> <span class="ruby-node">`#{apxs2} -q SBINDIR`</span>.<span class="ruby-identifier">strip</span>
325
+ 155: <span class="ruby-keyword kw">end</span>
326
+ 156: <span class="ruby-keyword kw">end</span>
327
+ </pre>
328
+ </div>
329
+ </div>
330
+ </div>
331
+ <div class="method">
332
+ <div class="title">
333
+ <a name="M000033"></a><b>apache2ctl</b>()
334
+ </div>
335
+ <div class="description">
336
+ <p>
337
+ The absolute path to the &#8216;apachectl&#8217; or &#8216;<a
338
+ href="PlatformInfo.html#M000033">apache2ctl</a>&#8217; binary, or nil if
339
+ not found.
340
+ </p>
341
+ </div>
342
+ <div class="sourcecode">
343
+ <p class="source-link">[ <a href="javascript:toggleSource('M000033_source')" id="l_M000033_source">show source</a> ]</p>
344
+ <div id="M000033_source" class="dyn-source">
345
+ <pre>
346
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/apache.rb, line 60</span>
347
+ 60: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apache2ctl</span>
348
+ 61: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">find_apache2_executable</span>(<span class="ruby-value str">'apache2ctl'</span>, <span class="ruby-value str">'apachectl2'</span>, <span class="ruby-value str">'apachectl'</span>)
349
+ 62: <span class="ruby-keyword kw">end</span>
350
+ </pre>
351
+ </div>
352
+ </div>
353
+ </div>
354
+ <div class="method">
355
+ <div class="title">
356
+ <a name="M000035"></a><b>apr_config</b>()
357
+ </div>
358
+ <div class="description">
359
+ <p>
360
+ The absolute path to the &#8216;apr-config&#8217; or
361
+ &#8216;apr-1-config&#8217; executable, or nil if not found.
362
+ </p>
363
+ </div>
364
+ <div class="sourcecode">
365
+ <p class="source-link">[ <a href="javascript:toggleSource('M000035_source')" id="l_M000035_source">show source</a> ]</p>
366
+ <div id="M000035_source" class="dyn-source">
367
+ <pre>
368
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/apache.rb, line 86</span>
369
+ 86: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apr_config</span>
370
+ 87: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">env_defined?</span>(<span class="ruby-value str">'APR_CONFIG'</span>)
371
+ 88: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">ENV</span>[<span class="ruby-value str">'APR_CONFIG'</span>]
372
+ 89: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">apxs2</span>.<span class="ruby-identifier">nil?</span>
373
+ 90: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
374
+ 91: <span class="ruby-keyword kw">else</span>
375
+ 92: <span class="ruby-identifier">filename</span> = <span class="ruby-node">`#{apxs2} -q APR_CONFIG 2&gt;/dev/null`</span>.<span class="ruby-identifier">strip</span>
376
+ 93: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">filename</span>.<span class="ruby-identifier">empty?</span>
377
+ 94: <span class="ruby-identifier">apr_bindir</span> = <span class="ruby-node">`#{apxs2} -q APR_BINDIR 2&gt;/dev/null`</span>.<span class="ruby-identifier">strip</span>
378
+ 95: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">apr_bindir</span>.<span class="ruby-identifier">empty?</span>
379
+ 96: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
380
+ 97: <span class="ruby-keyword kw">else</span>
381
+ 98: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">select_executable</span>(<span class="ruby-identifier">apr_bindir</span>,
382
+ 99: <span class="ruby-value str">&quot;apr-1-config&quot;</span>, <span class="ruby-value str">&quot;apr-config&quot;</span>)
383
+ 100: <span class="ruby-keyword kw">end</span>
384
+ 101: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">filename</span>)
385
+ 102: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">filename</span>
386
+ 103: <span class="ruby-keyword kw">else</span>
387
+ 104: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
388
+ 105: <span class="ruby-keyword kw">end</span>
389
+ 106: <span class="ruby-keyword kw">end</span>
390
+ 107: <span class="ruby-keyword kw">end</span>
391
+ </pre>
392
+ </div>
393
+ </div>
394
+ </div>
395
+ <div class="method">
396
+ <div class="title">
397
+ <a name="M000045"></a><b>apr_config_needed_for_building_apache_modules?</b>()
398
+ </div>
399
+ <div class="description">
400
+ <p>
401
+ Returns whether it is necessary to use information outputted by
402
+ &#8216;apr-config&#8217; and &#8216;apu-config&#8217; in order to compile
403
+ an Apache module. When Apache is installed with &#8212;with-included-apr,
404
+ the APR/APU headers are placed into the same directory as the Apache
405
+ headers, and so &#8216;apr-config&#8217; and &#8216;apu-config&#8217;
406
+ won&#8216;t be necessary in that case.
407
+ </p>
408
+ </div>
409
+ <div class="sourcecode">
410
+ <p class="source-link">[ <a href="javascript:toggleSource('M000045_source')" id="l_M000045_source">show source</a> ]</p>
411
+ <div id="M000045_source" class="dyn-source">
412
+ <pre>
413
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/apache.rb, line 266</span>
414
+ 266: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apr_config_needed_for_building_apache_modules?</span>
415
+ 267: <span class="ruby-identifier">filename</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-node">&quot;/tmp/passenger-platform-check-#{Process.pid}.c&quot;</span>)
416
+ 268: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">filename</span>, <span class="ruby-value str">&quot;w&quot;</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span>
417
+ 269: <span class="ruby-identifier">f</span>.<span class="ruby-identifier">puts</span>(<span class="ruby-value str">&quot;#include &lt;apr.h&gt;&quot;</span>)
418
+ 270: <span class="ruby-keyword kw">end</span>
419
+ 271: <span class="ruby-keyword kw">begin</span>
420
+ 272: <span class="ruby-keyword kw">return</span> <span class="ruby-operator">!</span><span class="ruby-identifier">system</span>(<span class="ruby-node">&quot;(gcc #{apache2_module_cflags(false)} -c '#{filename}' -o '#{filename}.o') &gt;/dev/null 2&gt;/dev/null&quot;</span>)
421
+ 273: <span class="ruby-keyword kw">ensure</span>
422
+ 274: <span class="ruby-constant">File</span>.<span class="ruby-identifier">unlink</span>(<span class="ruby-identifier">filename</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
423
+ 275: <span class="ruby-constant">File</span>.<span class="ruby-identifier">unlink</span>(<span class="ruby-node">&quot;#{filename}.o&quot;</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
424
+ 276: <span class="ruby-keyword kw">end</span>
425
+ 277: <span class="ruby-keyword kw">end</span>
426
+ </pre>
427
+ </div>
428
+ </div>
429
+ </div>
430
+ <div class="method">
431
+ <div class="title">
432
+ <a name="M000041"></a><b>apr_flags</b>()
433
+ </div>
434
+ <div class="description">
435
+ <p>
436
+ The C compiler flags that are necessary for programs that use APR.
437
+ </p>
438
+ </div>
439
+ <div class="sourcecode">
440
+ <p class="source-link">[ <a href="javascript:toggleSource('M000041_source')" id="l_M000041_source">show source</a> ]</p>
441
+ <div id="M000041_source" class="dyn-source">
442
+ <pre>
443
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/apache.rb, line 239</span>
444
+ 239: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apr_flags</span>
445
+ 240: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">determine_apr_info</span>[<span class="ruby-value">0</span>]
446
+ 241: <span class="ruby-keyword kw">end</span>
447
+ </pre>
448
+ </div>
449
+ </div>
450
+ </div>
451
+ <div class="method">
452
+ <div class="title">
453
+ <a name="M000042"></a><b>apr_libs</b>()
454
+ </div>
455
+ <div class="description">
456
+ <p>
457
+ The linker flags that are necessary for linking programs that use APR.
458
+ </p>
459
+ </div>
460
+ <div class="sourcecode">
461
+ <p class="source-link">[ <a href="javascript:toggleSource('M000042_source')" id="l_M000042_source">show source</a> ]</p>
462
+ <div id="M000042_source" class="dyn-source">
463
+ <pre>
464
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/apache.rb, line 244</span>
465
+ 244: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apr_libs</span>
466
+ 245: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">determine_apr_info</span>[<span class="ruby-value">1</span>]
467
+ 246: <span class="ruby-keyword kw">end</span>
468
+ </pre>
469
+ </div>
470
+ </div>
471
+ </div>
472
+ <div class="method">
473
+ <div class="title">
474
+ <a name="M000036"></a><b>apu_config</b>()
475
+ </div>
476
+ <div class="description">
477
+ <p>
478
+ The absolute path to the &#8216;apu-config&#8217; or
479
+ &#8216;apu-1-config&#8217; executable, or nil if not found.
480
+ </p>
481
+ </div>
482
+ <div class="sourcecode">
483
+ <p class="source-link">[ <a href="javascript:toggleSource('M000036_source')" id="l_M000036_source">show source</a> ]</p>
484
+ <div id="M000036_source" class="dyn-source">
485
+ <pre>
486
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/apache.rb, line 112</span>
487
+ 112: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apu_config</span>
488
+ 113: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">env_defined?</span>(<span class="ruby-value str">'APU_CONFIG'</span>)
489
+ 114: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">ENV</span>[<span class="ruby-value str">'APU_CONFIG'</span>]
490
+ 115: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">apxs2</span>.<span class="ruby-identifier">nil?</span>
491
+ 116: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
492
+ 117: <span class="ruby-keyword kw">else</span>
493
+ 118: <span class="ruby-identifier">filename</span> = <span class="ruby-node">`#{apxs2} -q APU_CONFIG 2&gt;/dev/null`</span>.<span class="ruby-identifier">strip</span>
494
+ 119: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">filename</span>.<span class="ruby-identifier">empty?</span>
495
+ 120: <span class="ruby-identifier">apu_bindir</span> = <span class="ruby-node">`#{apxs2} -q APU_BINDIR 2&gt;/dev/null`</span>.<span class="ruby-identifier">strip</span>
496
+ 121: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">apu_bindir</span>.<span class="ruby-identifier">empty?</span>
497
+ 122: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
498
+ 123: <span class="ruby-keyword kw">else</span>
499
+ 124: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">select_executable</span>(<span class="ruby-identifier">apu_bindir</span>,
500
+ 125: <span class="ruby-value str">&quot;apu-1-config&quot;</span>, <span class="ruby-value str">&quot;apu-config&quot;</span>)
501
+ 126: <span class="ruby-keyword kw">end</span>
502
+ 127: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">filename</span>)
503
+ 128: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">filename</span>
504
+ 129: <span class="ruby-keyword kw">else</span>
505
+ 130: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
506
+ 131: <span class="ruby-keyword kw">end</span>
507
+ 132: <span class="ruby-keyword kw">end</span>
508
+ 133: <span class="ruby-keyword kw">end</span>
509
+ </pre>
510
+ </div>
511
+ </div>
512
+ </div>
513
+ <div class="method">
514
+ <div class="title">
515
+ <a name="M000043"></a><b>apu_flags</b>()
516
+ </div>
517
+ <div class="description">
518
+ <p>
519
+ The C compiler flags that are necessary for programs that use APR-Util.
520
+ </p>
521
+ </div>
522
+ <div class="sourcecode">
523
+ <p class="source-link">[ <a href="javascript:toggleSource('M000043_source')" id="l_M000043_source">show source</a> ]</p>
524
+ <div id="M000043_source" class="dyn-source">
525
+ <pre>
526
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/apache.rb, line 249</span>
527
+ 249: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apu_flags</span>
528
+ 250: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">determine_apu_info</span>[<span class="ruby-value">0</span>]
529
+ 251: <span class="ruby-keyword kw">end</span>
530
+ </pre>
531
+ </div>
532
+ </div>
533
+ </div>
534
+ <div class="method">
535
+ <div class="title">
536
+ <a name="M000044"></a><b>apu_libs</b>()
537
+ </div>
538
+ <div class="description">
539
+ <p>
540
+ The linker flags that are necessary for linking programs that use APR-Util.
541
+ </p>
542
+ </div>
543
+ <div class="sourcecode">
544
+ <p class="source-link">[ <a href="javascript:toggleSource('M000044_source')" id="l_M000044_source">show source</a> ]</p>
545
+ <div id="M000044_source" class="dyn-source">
546
+ <pre>
547
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/apache.rb, line 254</span>
548
+ 254: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apu_libs</span>
549
+ 255: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">determine_apu_info</span>[<span class="ruby-value">1</span>]
550
+ 256: <span class="ruby-keyword kw">end</span>
551
+ </pre>
552
+ </div>
553
+ </div>
554
+ </div>
555
+ <div class="method">
556
+ <div class="title">
557
+ <a name="M000032"></a><b>apxs2</b>()
558
+ </div>
559
+ <div class="description">
560
+ <p>
561
+ The absolute path to the &#8216;apxs&#8217; or &#8216;<a
562
+ href="PlatformInfo.html#M000032">apxs2</a>&#8217; executable, or nil if not
563
+ found.
564
+ </p>
565
+ </div>
566
+ <div class="sourcecode">
567
+ <p class="source-link">[ <a href="javascript:toggleSource('M000032_source')" id="l_M000032_source">show source</a> ]</p>
568
+ <div id="M000032_source" class="dyn-source">
569
+ <pre>
570
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/apache.rb, line 44</span>
571
+ 44: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">apxs2</span>
572
+ 45: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">env_defined?</span>(<span class="ruby-value str">&quot;APXS2&quot;</span>)
573
+ 46: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">ENV</span>[<span class="ruby-value str">&quot;APXS2&quot;</span>]
574
+ 47: <span class="ruby-keyword kw">end</span>
575
+ 48: [<span class="ruby-value str">'apxs2'</span>, <span class="ruby-value str">'apxs'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span><span class="ruby-operator">|</span>
576
+ 49: <span class="ruby-identifier">command</span> = <span class="ruby-identifier">find_command</span>(<span class="ruby-identifier">name</span>)
577
+ 50: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">command</span>.<span class="ruby-identifier">nil?</span>
578
+ 51: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">command</span>
579
+ 52: <span class="ruby-keyword kw">end</span>
580
+ 53: <span class="ruby-keyword kw">end</span>
581
+ 54: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
582
+ 55: <span class="ruby-keyword kw">end</span>
583
+ </pre>
584
+ </div>
585
+ </div>
586
+ </div>
587
+ <div class="method">
588
+ <div class="title">
589
+ <a name="M000060"></a><b>asciidoc</b>()
590
+ </div>
591
+ <div class="sourcecode">
592
+ <p class="source-link">[ <a href="javascript:toggleSource('M000060_source')" id="l_M000060_source">show source</a> ]</p>
593
+ <div id="M000060_source" class="dyn-source">
594
+ <pre>
595
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/documentation_tools.rb, line 29</span>
596
+ 29: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">asciidoc</span>
597
+ 30: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">find_command</span>(<span class="ruby-value str">'asciidoc'</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">find_command</span>(<span class="ruby-value str">'mizuho-asciidoc'</span>)
598
+ 31: <span class="ruby-keyword kw">end</span>
599
+ </pre>
600
+ </div>
601
+ </div>
602
+ </div>
603
+ <div class="method">
604
+ <div class="title">
605
+ <a name="M000030"></a><b>cc</b>()
606
+ </div>
607
+ <div class="sourcecode">
608
+ <p class="source-link">[ <a href="javascript:toggleSource('M000030_source')" id="l_M000030_source">show source</a> ]</p>
609
+ <div id="M000030_source" class="dyn-source">
610
+ <pre>
611
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 159</span>
612
+ 159: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">cc</span>
613
+ 160: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">ENV</span>[<span class="ruby-value str">'CC'</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;gcc&quot;</span>
614
+ 161: <span class="ruby-keyword kw">end</span>
615
+ </pre>
616
+ </div>
617
+ </div>
618
+ </div>
619
+ <div class="method">
620
+ <div class="title">
621
+ <a name="M000049"></a><b>compiler_supports_visibility_flag?</b>()
622
+ </div>
623
+ <div class="sourcecode">
624
+ <p class="source-link">[ <a href="javascript:toggleSource('M000049_source')" id="l_M000049_source">show source</a> ]</p>
625
+ <div id="M000049_source" class="dyn-source">
626
+ <pre>
627
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/compiler.rb, line 49</span>
628
+ 49: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">compiler_supports_visibility_flag?</span>
629
+ 50: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">try_compile</span>(<span class="ruby-identifier">:c</span>, <span class="ruby-value str">''</span>, <span class="ruby-value str">'-fvisibility=hidden'</span>)
630
+ 51: <span class="ruby-keyword kw">end</span>
631
+ </pre>
632
+ </div>
633
+ </div>
634
+ </div>
635
+ <div class="method">
636
+ <div class="title">
637
+ <a name="M000050"></a><b>compiler_supports_wno_attributes_flag?</b>()
638
+ </div>
639
+ <div class="sourcecode">
640
+ <p class="source-link">[ <a href="javascript:toggleSource('M000050_source')" id="l_M000050_source">show source</a> ]</p>
641
+ <div id="M000050_source" class="dyn-source">
642
+ <pre>
643
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/compiler.rb, line 54</span>
644
+ 54: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">compiler_supports_wno_attributes_flag?</span>
645
+ 55: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">try_compile</span>(<span class="ruby-identifier">:c</span>, <span class="ruby-value str">''</span>, <span class="ruby-value str">'-Wno-attributes'</span>)
646
+ 56: <span class="ruby-keyword kw">end</span>
647
+ </pre>
648
+ </div>
649
+ </div>
650
+ </div>
651
+ <div class="method">
652
+ <div class="title">
653
+ <a name="M000051"></a><b>compiler_visibility_flag_generates_warnings?</b>()
654
+ </div>
655
+ <div class="description">
656
+ <p>
657
+ Returns whether compiling C++ with -fvisibility=hidden might result in tons
658
+ of useless warnings, like this: <a
659
+ href="http://code.google.com/p/phusion-passenger/issues/detail?id=526">code.google.com/p/phusion-passenger/issues/detail?id=526</a>
660
+ This appears to be a bug in older g++ versions: <a
661
+ href="http://gcc.gnu.org/ml/gcc-patches/2006-07/msg00861.html">gcc.gnu.org/ml/gcc-patches/2006-07/msg00861.html</a>
662
+ Warnings should be suppressed with -Wno-attributes.
663
+ </p>
664
+ </div>
665
+ <div class="sourcecode">
666
+ <p class="source-link">[ <a href="javascript:toggleSource('M000051_source')" id="l_M000051_source">show source</a> ]</p>
667
+ <div id="M000051_source" class="dyn-source">
668
+ <pre>
669
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/compiler.rb, line 65</span>
670
+ 65: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">compiler_visibility_flag_generates_warnings?</span>
671
+ 66: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/linux/</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-node">`#{cxx} -v 2&gt;&amp;1`</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/gcc version (.*?)/</span>
672
+ 67: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">$1</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value str">&quot;4.1.2&quot;</span>
673
+ 68: <span class="ruby-keyword kw">else</span>
674
+ 69: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
675
+ 70: <span class="ruby-keyword kw">end</span>
676
+ 71: <span class="ruby-keyword kw">end</span>
677
+ </pre>
678
+ </div>
679
+ </div>
680
+ </div>
681
+ <div class="method">
682
+ <div class="title">
683
+ <a name="M000065"></a><b>cpu_architectures</b>()
684
+ </div>
685
+ <div class="description">
686
+ <p>
687
+ Returns a list of all CPU architecture names that the current machine CPU
688
+ supports. If there are multiple such architectures then the first item in
689
+ the result denotes that OS runtime&#8216;s main/preferred architecture.
690
+ </p>
691
+ <p>
692
+ This function normalizes some names. For example x86 is always reported as
693
+ &quot;x86&quot; regardless of whether the OS reports it as &quot;i386&quot;
694
+ or &quot;i686&quot;. x86_64 is always reported as &quot;x86_64&quot; even
695
+ if the OS reports it as &quot;amd64&quot;.
696
+ </p>
697
+ <p>
698
+ Please note that even if the CPU supports multiple architectures, the
699
+ operating system might not. For example most x86 CPUs nowadays also support
700
+ x86_64, but x86_64 Linux systems require various x86 compatibility
701
+ libraries to be installed before x86 executables can be run. This function
702
+ does not detect whether these compatibility libraries are installed. The
703
+ only guarantee that you have is that the OS can run executables in the
704
+ architecture denoted by the first item in the result.
705
+ </p>
706
+ <p>
707
+ For example, on x86_64 Linux this function can return [&quot;x86_64&quot;,
708
+ &quot;x86&quot;]. This indicates that the CPU supports both of these
709
+ architectures, and that the OS&#8216;s main/preferred architecture is
710
+ x86_64. Most executables on the system are thus be x86_64. It is guaranteed
711
+ that the OS can run x86_64 executables, but not x86 executables per se.
712
+ </p>
713
+ <p>
714
+ Another example: on MacOS X this function can return either
715
+ </p>
716
+ <dl>
717
+ <dt>&quot;x86_64&quot;, &quot;x86&quot;</dt><dd>or [&quot;x86&quot;, &quot;x86_64&quot;]. The former result indicates
718
+
719
+ </dd>
720
+ </dl>
721
+ <p>
722
+ OS X 10.6 (Snow Leopard) and beyond because starting from that version
723
+ everything is 64-bit by default. The latter result indicates an OS X
724
+ version older than 10.6.
725
+ </p>
726
+ </div>
727
+ <div class="sourcecode">
728
+ <p class="source-link">[ <a href="javascript:toggleSource('M000065_source')" id="l_M000065_source">show source</a> ]</p>
729
+ <div id="M000065_source" class="dyn-source">
730
+ <pre>
731
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/operating_system.rb, line 77</span>
732
+ 77: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">cpu_architectures</span>
733
+ 78: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">os_name</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;macosx&quot;</span>
734
+ 79: <span class="ruby-identifier">arch</span> = <span class="ruby-value">`uname -p`</span>.<span class="ruby-identifier">strip</span>
735
+ 80: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arch</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;i386&quot;</span>
736
+ 81: <span class="ruby-comment cmt"># Macs have been x86 since around 2007. I think all of them come with</span>
737
+ 82: <span class="ruby-comment cmt"># a recent enough Intel CPU that supports both x86 and x86_64, and I</span>
738
+ 83: <span class="ruby-comment cmt"># think every OS X version has both the x86 and x86_64 runtime installed.</span>
739
+ 84: <span class="ruby-identifier">major</span>, <span class="ruby-identifier">minor</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">rest</span> = <span class="ruby-value">`sw_vers -productVersion`</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">&quot;.&quot;</span>)
740
+ 85: <span class="ruby-identifier">major</span> = <span class="ruby-identifier">major</span>.<span class="ruby-identifier">to_i</span>
741
+ 86: <span class="ruby-identifier">minor</span> = <span class="ruby-identifier">minor</span>.<span class="ruby-identifier">to_i</span>
742
+ 87: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">major</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">10</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">major</span> <span class="ruby-operator">==</span> <span class="ruby-value">10</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">minor</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">6</span>)
743
+ 88: <span class="ruby-comment cmt"># Since Snow Leopard x86_64 is the default.</span>
744
+ 89: [<span class="ruby-value str">&quot;x86_64&quot;</span>, <span class="ruby-value str">&quot;x86&quot;</span>]
745
+ 90: <span class="ruby-keyword kw">else</span>
746
+ 91: <span class="ruby-comment cmt"># Before Snow Leopard x86 was the default.</span>
747
+ 92: [<span class="ruby-value str">&quot;x86&quot;</span>, <span class="ruby-value str">&quot;x86_64&quot;</span>]
748
+ 93: <span class="ruby-keyword kw">end</span>
749
+ 94: <span class="ruby-keyword kw">else</span>
750
+ 95: <span class="ruby-identifier">arch</span>
751
+ 96: <span class="ruby-keyword kw">end</span>
752
+ 97: <span class="ruby-keyword kw">else</span>
753
+ 98: <span class="ruby-identifier">arch</span> = <span class="ruby-value">`uname -p`</span>.<span class="ruby-identifier">strip</span>
754
+ 99: <span class="ruby-comment cmt"># On some systems 'uname -p' returns something like</span>
755
+ 100: <span class="ruby-comment cmt"># 'Intel(R) Pentium(R) M processor 1400MHz'.</span>
756
+ 101: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arch</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;unknown&quot;</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">arch</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/ /</span>
757
+ 102: <span class="ruby-identifier">arch</span> = <span class="ruby-value">`uname -m`</span>.<span class="ruby-identifier">strip</span>
758
+ 103: <span class="ruby-keyword kw">end</span>
759
+ 104: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arch</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^i.86$/</span>
760
+ 105: <span class="ruby-identifier">arch</span> = <span class="ruby-value str">&quot;x86&quot;</span>
761
+ 106: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">arch</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;amd64&quot;</span>
762
+ 107: <span class="ruby-identifier">arch</span> = <span class="ruby-value str">&quot;x86_64&quot;</span>
763
+ 108: <span class="ruby-keyword kw">end</span>
764
+ 109:
765
+ 110: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arch</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;x86&quot;</span>
766
+ 111: <span class="ruby-comment cmt"># Most x86 operating systems nowadays are probably running on</span>
767
+ 112: <span class="ruby-comment cmt"># a CPU that supports both x86 and x86_64, but we're not gonna</span>
768
+ 113: <span class="ruby-comment cmt"># go through the trouble of checking that. The main architecture</span>
769
+ 114: <span class="ruby-comment cmt"># is what we usually care about.</span>
770
+ 115: [<span class="ruby-value str">&quot;x86&quot;</span>]
771
+ 116: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">arch</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;x86_64&quot;</span>
772
+ 117: <span class="ruby-comment cmt"># I don't think there's a single x86_64 CPU out there</span>
773
+ 118: <span class="ruby-comment cmt"># that doesn't support x86 as well.</span>
774
+ 119: [<span class="ruby-value str">&quot;x86_64&quot;</span>, <span class="ruby-value str">&quot;x86&quot;</span>]
775
+ 120: <span class="ruby-keyword kw">else</span>
776
+ 121: [<span class="ruby-identifier">arch</span>]
777
+ 122: <span class="ruby-keyword kw">end</span>
778
+ 123: <span class="ruby-keyword kw">end</span>
779
+ 124: <span class="ruby-keyword kw">end</span>
780
+ </pre>
781
+ </div>
782
+ </div>
783
+ </div>
784
+ <div class="method">
785
+ <div class="title">
786
+ <a name="M000057"></a><b>curl_flags</b>()
787
+ </div>
788
+ <div class="sourcecode">
789
+ <p class="source-link">[ <a href="javascript:toggleSource('M000057_source')" id="l_M000057_source">show source</a> ]</p>
790
+ <div id="M000057_source" class="dyn-source">
791
+ <pre>
792
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/curl.rb, line 29</span>
793
+ 29: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">curl_flags</span>
794
+ 30: <span class="ruby-identifier">result</span> = <span class="ruby-value">`(curl-config --cflags) 2&gt;/dev/null`</span>.<span class="ruby-identifier">strip</span>
795
+ 31: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">empty?</span>
796
+ 32: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
797
+ 33: <span class="ruby-keyword kw">else</span>
798
+ 34: <span class="ruby-identifier">version</span> = <span class="ruby-value">`curl-config --vernum`</span>.<span class="ruby-identifier">strip</span>
799
+ 35: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">version</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value str">'070c01'</span>
800
+ 36: <span class="ruby-comment cmt"># Curl &gt;= 7.12.1 supports curl_easy_reset()</span>
801
+ 37: <span class="ruby-identifier">result</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; -DHAS_CURL_EASY_RESET&quot;</span>
802
+ 38: <span class="ruby-keyword kw">end</span>
803
+ 39: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">result</span>
804
+ 40: <span class="ruby-keyword kw">end</span>
805
+ 41: <span class="ruby-keyword kw">end</span>
806
+ </pre>
807
+ </div>
808
+ </div>
809
+ </div>
810
+ <div class="method">
811
+ <div class="title">
812
+ <a name="M000058"></a><b>curl_libs</b>()
813
+ </div>
814
+ <div class="sourcecode">
815
+ <p class="source-link">[ <a href="javascript:toggleSource('M000058_source')" id="l_M000058_source">show source</a> ]</p>
816
+ <div id="M000058_source" class="dyn-source">
817
+ <pre>
818
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/curl.rb, line 44</span>
819
+ 44: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">curl_libs</span>
820
+ 45: <span class="ruby-identifier">result</span> = <span class="ruby-value">`(curl-config --libs) 2&gt;/dev/null`</span>.<span class="ruby-identifier">strip</span>
821
+ 46: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">empty?</span>
822
+ 47: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
823
+ 48: <span class="ruby-keyword kw">else</span>
824
+ 49: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">result</span>
825
+ 50: <span class="ruby-keyword kw">end</span>
826
+ 51: <span class="ruby-keyword kw">end</span>
827
+ </pre>
828
+ </div>
829
+ </div>
830
+ </div>
831
+ <div class="method">
832
+ <div class="title">
833
+ <a name="M000059"></a><b>curl_supports_ssl?</b>()
834
+ </div>
835
+ <div class="sourcecode">
836
+ <p class="source-link">[ <a href="javascript:toggleSource('M000059_source')" id="l_M000059_source">show source</a> ]</p>
837
+ <div id="M000059_source" class="dyn-source">
838
+ <pre>
839
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/curl.rb, line 54</span>
840
+ 54: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">curl_supports_ssl?</span>
841
+ 55: <span class="ruby-identifier">features</span> = <span class="ruby-value">`(curl-config --feature) 2&gt;/dev/null`</span>
842
+ 56: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">features</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/SSL/</span>
843
+ 57: <span class="ruby-keyword kw">end</span>
844
+ </pre>
845
+ </div>
846
+ </div>
847
+ </div>
848
+ <div class="method">
849
+ <div class="title">
850
+ <a name="M000031"></a><b>cxx</b>()
851
+ </div>
852
+ <div class="sourcecode">
853
+ <p class="source-link">[ <a href="javascript:toggleSource('M000031_source')" id="l_M000031_source">show source</a> ]</p>
854
+ <div id="M000031_source" class="dyn-source">
855
+ <pre>
856
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 163</span>
857
+ 163: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">cxx</span>
858
+ 164: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">ENV</span>[<span class="ruby-value str">'CXX'</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;g++&quot;</span>
859
+ 165: <span class="ruby-keyword kw">end</span>
860
+ </pre>
861
+ </div>
862
+ </div>
863
+ </div>
864
+ <div class="method">
865
+ <div class="title">
866
+ <a name="M000055"></a><b>debugging_cflags</b>()
867
+ </div>
868
+ <div class="description">
869
+ <p>
870
+ C compiler flags that should be passed in order to enable debugging
871
+ information.
872
+ </p>
873
+ </div>
874
+ <div class="sourcecode">
875
+ <p class="source-link">[ <a href="javascript:toggleSource('M000055_source')" id="l_M000055_source">show source</a> ]</p>
876
+ <div id="M000055_source" class="dyn-source">
877
+ <pre>
878
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/compiler.rb, line 163</span>
879
+ 163: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">debugging_cflags</span>
880
+ 164: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/openbsd/</span>
881
+ 165: <span class="ruby-comment cmt"># According to OpenBSD's pthreads man page, pthreads do not work</span>
882
+ 166: <span class="ruby-comment cmt"># correctly when an app is compiled with -g. It recommends using</span>
883
+ 167: <span class="ruby-comment cmt"># -ggdb instead.</span>
884
+ 168: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'-ggdb'</span>
885
+ 169: <span class="ruby-keyword kw">else</span>
886
+ 170: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'-g'</span>
887
+ 171: <span class="ruby-keyword kw">end</span>
888
+ 172: <span class="ruby-keyword kw">end</span>
889
+ </pre>
890
+ </div>
891
+ </div>
892
+ </div>
893
+ <div class="method">
894
+ <div class="title">
895
+ <a name="M000029"></a><b>env_defined?</b>(name)
896
+ </div>
897
+ <div class="sourcecode">
898
+ <p class="source-link">[ <a href="javascript:toggleSource('M000029_source')" id="l_M000029_source">show source</a> ]</p>
899
+ <div id="M000029_source" class="dyn-source">
900
+ <pre>
901
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 155</span>
902
+ 155: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">env_defined?</span>(<span class="ruby-identifier">name</span>)
903
+ 156: <span class="ruby-keyword kw">return</span> <span class="ruby-operator">!</span><span class="ruby-constant">ENV</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-constant">ENV</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">empty?</span>
904
+ 157: <span class="ruby-keyword kw">end</span>
905
+ </pre>
906
+ </div>
907
+ </div>
908
+ </div>
909
+ <div class="method">
910
+ <div class="title">
911
+ <a name="M000056"></a><b>export_dynamic_flags</b>()
912
+ </div>
913
+ <div class="sourcecode">
914
+ <p class="source-link">[ <a href="javascript:toggleSource('M000056_source')" id="l_M000056_source">show source</a> ]</p>
915
+ <div id="M000056_source" class="dyn-source">
916
+ <pre>
917
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/compiler.rb, line 174</span>
918
+ 174: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">export_dynamic_flags</span>
919
+ 175: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/linux/</span>
920
+ 176: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'-rdynamic'</span>
921
+ 177: <span class="ruby-keyword kw">else</span>
922
+ 178: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
923
+ 179: <span class="ruby-keyword kw">end</span>
924
+ 180: <span class="ruby-keyword kw">end</span>
925
+ </pre>
926
+ </div>
927
+ </div>
928
+ </div>
929
+ <div class="method">
930
+ <div class="title">
931
+ <a name="M000028"></a><b>find_command</b>(name)
932
+ </div>
933
+ <div class="description">
934
+ <p>
935
+ Check whether the specified command is in $PATH, and return its absolute
936
+ filename. Returns nil if the command is not found.
937
+ </p>
938
+ <p>
939
+ This function exists because system(&#8216;which&#8217;) doesn&#8216;t
940
+ always behave correctly, for some weird reason.
941
+ </p>
942
+ </div>
943
+ <div class="sourcecode">
944
+ <p class="source-link">[ <a href="javascript:toggleSource('M000028_source')" id="l_M000028_source">show source</a> ]</p>
945
+ <div id="M000028_source" class="dyn-source">
946
+ <pre>
947
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info.rb, line 145</span>
948
+ 145: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">find_command</span>(<span class="ruby-identifier">name</span>)
949
+ 146: <span class="ruby-constant">ENV</span>[<span class="ruby-value str">'PATH'</span>].<span class="ruby-identifier">split</span>(<span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">PATH_SEPARATOR</span>).<span class="ruby-identifier">detect</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">directory</span><span class="ruby-operator">|</span>
950
+ 147: <span class="ruby-identifier">path</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">directory</span>, <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>)
951
+ 148: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">executable?</span>(<span class="ruby-identifier">path</span>)
952
+ 149: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">path</span>
953
+ 150: <span class="ruby-keyword kw">end</span>
954
+ 151: <span class="ruby-keyword kw">end</span>
955
+ 152: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
956
+ 153: <span class="ruby-keyword kw">end</span>
957
+ </pre>
958
+ </div>
959
+ </div>
960
+ </div>
961
+ <div class="method">
962
+ <div class="title">
963
+ <a name="M000071"></a><b>gem_command</b>()
964
+ </div>
965
+ <div class="description">
966
+ <p>
967
+ Returns the correct &#8216;gem&#8217; command for this Ruby interpreter.
968
+ </p>
969
+ </div>
970
+ <div class="sourcecode">
971
+ <p class="source-link">[ <a href="javascript:toggleSource('M000071_source')" id="l_M000071_source">show source</a> ]</p>
972
+ <div id="M000071_source" class="dyn-source">
973
+ <pre>
974
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/ruby.rb, line 110</span>
975
+ 110: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">gem_command</span>
976
+ 111: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">locate_ruby_tool</span>(<span class="ruby-value str">'gem'</span>)
977
+ 112: <span class="ruby-keyword kw">end</span>
978
+ </pre>
979
+ </div>
980
+ </div>
981
+ </div>
982
+ <div class="method">
983
+ <div class="title">
984
+ <a name="M000048"></a><b>gnu_make</b>()
985
+ </div>
986
+ <div class="sourcecode">
987
+ <p class="source-link">[ <a href="javascript:toggleSource('M000048_source')" id="l_M000048_source">show source</a> ]</p>
988
+ <div id="M000048_source" class="dyn-source">
989
+ <pre>
990
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/compiler.rb, line 30</span>
991
+ 30: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">gnu_make</span>
992
+ 31: <span class="ruby-identifier">gmake</span> = <span class="ruby-identifier">find_command</span>(<span class="ruby-value str">'gmake'</span>)
993
+ 32: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">gmake</span>
994
+ 33: <span class="ruby-identifier">gmake</span> = <span class="ruby-identifier">find_command</span>(<span class="ruby-value str">'make'</span>)
995
+ 34: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">gmake</span>
996
+ 35: <span class="ruby-keyword kw">if</span> <span class="ruby-node">`#{gmake} --version 2&gt;&amp;1`</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/GNU/</span>
997
+ 36: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">gmake</span>
998
+ 37: <span class="ruby-keyword kw">else</span>
999
+ 38: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
1000
+ 39: <span class="ruby-keyword kw">end</span>
1001
+ 40: <span class="ruby-keyword kw">else</span>
1002
+ 41: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
1003
+ 42: <span class="ruby-keyword kw">end</span>
1004
+ 43: <span class="ruby-keyword kw">else</span>
1005
+ 44: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">gmake</span>
1006
+ 45: <span class="ruby-keyword kw">end</span>
1007
+ 46: <span class="ruby-keyword kw">end</span>
1008
+ </pre>
1009
+ </div>
1010
+ </div>
1011
+ </div>
1012
+ <div class="method">
1013
+ <div class="title">
1014
+ <a name="M000052"></a><b>has_math_library?</b>()
1015
+ </div>
1016
+ <div class="sourcecode">
1017
+ <p class="source-link">[ <a href="javascript:toggleSource('M000052_source')" id="l_M000052_source">show source</a> ]</p>
1018
+ <div id="M000052_source" class="dyn-source">
1019
+ <pre>
1020
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/compiler.rb, line 74</span>
1021
+ 74: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">has_math_library?</span>
1022
+ 75: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">try_link</span>(<span class="ruby-identifier">:c</span>, <span class="ruby-value str">&quot;int main() { return 0; }\n&quot;</span>, <span class="ruby-value str">'-lmath'</span>)
1023
+ 76: <span class="ruby-keyword kw">end</span>
1024
+ </pre>
1025
+ </div>
1026
+ </div>
1027
+ </div>
1028
+ <div class="method">
1029
+ <div class="title">
1030
+ <a name="M000034"></a><b>httpd</b>()
1031
+ </div>
1032
+ <div class="description">
1033
+ <p>
1034
+ The absolute path to the Apache binary (that is, &#8216;<a
1035
+ href="PlatformInfo.html#M000034">httpd</a>&#8217;, &#8216;httpd2&#8217;,
1036
+ &#8216;apache&#8217; or &#8216;apache2&#8217;), or nil if not found.
1037
+ </p>
1038
+ </div>
1039
+ <div class="sourcecode">
1040
+ <p class="source-link">[ <a href="javascript:toggleSource('M000034_source')" id="l_M000034_source">show source</a> ]</p>
1041
+ <div id="M000034_source" class="dyn-source">
1042
+ <pre>
1043
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/apache.rb, line 67</span>
1044
+ 67: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">httpd</span>
1045
+ 68: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">env_defined?</span>(<span class="ruby-value str">'HTTPD'</span>)
1046
+ 69: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">ENV</span>[<span class="ruby-value str">'HTTPD'</span>]
1047
+ 70: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">apxs2</span>.<span class="ruby-identifier">nil?</span>
1048
+ 71: [<span class="ruby-value str">&quot;apache2&quot;</span>, <span class="ruby-value str">&quot;httpd2&quot;</span>, <span class="ruby-value str">&quot;apache&quot;</span>, <span class="ruby-value str">&quot;httpd&quot;</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span><span class="ruby-operator">|</span>
1049
+ 72: <span class="ruby-identifier">command</span> = <span class="ruby-identifier">find_command</span>(<span class="ruby-identifier">name</span>)
1050
+ 73: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">command</span>.<span class="ruby-identifier">nil?</span>
1051
+ 74: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">command</span>
1052
+ 75: <span class="ruby-keyword kw">end</span>
1053
+ 76: <span class="ruby-keyword kw">end</span>
1054
+ 77: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
1055
+ 78: <span class="ruby-keyword kw">else</span>
1056
+ 79: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">find_apache2_executable</span>(<span class="ruby-node">`#{apxs2} -q TARGET`</span>.<span class="ruby-identifier">strip</span>)
1057
+ 80: <span class="ruby-keyword kw">end</span>
1058
+ 81: <span class="ruby-keyword kw">end</span>
1059
+ </pre>
1060
+ </div>
1061
+ </div>
1062
+ </div>
1063
+ <div class="method">
1064
+ <div class="title">
1065
+ <a name="M000075"></a><b>in_rvm?</b>()
1066
+ </div>
1067
+ <div class="description">
1068
+ <p>
1069
+ Returns whether the current Ruby interpreter is managed by RVM.
1070
+ </p>
1071
+ </div>
1072
+ <div class="sourcecode">
1073
+ <p class="source-link">[ <a href="javascript:toggleSource('M000075_source')" id="l_M000075_source">show source</a> ]</p>
1074
+ <div id="M000075_source" class="dyn-source">
1075
+ <pre>
1076
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/ruby.rb, line 154</span>
1077
+ 154: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">in_rvm?</span>
1078
+ 155: <span class="ruby-identifier">bindir</span> = <span class="ruby-constant">Config</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-value str">'bindir'</span>]
1079
+ 156: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">bindir</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-value str">'/.rvm/'</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">bindir</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-value str">'/rvm/'</span>)
1080
+ 157: <span class="ruby-keyword kw">end</span>
1081
+ </pre>
1082
+ </div>
1083
+ </div>
1084
+ </div>
1085
+ <div class="method">
1086
+ <div class="title">
1087
+ <a name="M000064"></a><b>library_extension</b>()
1088
+ </div>
1089
+ <div class="description">
1090
+ <p>
1091
+ The current platform&#8216;s shared library extension (&#8216;so&#8217; on
1092
+ most Unices).
1093
+ </p>
1094
+ </div>
1095
+ <div class="sourcecode">
1096
+ <p class="source-link">[ <a href="javascript:toggleSource('M000064_source')" id="l_M000064_source">show source</a> ]</p>
1097
+ <div id="M000064_source" class="dyn-source">
1098
+ <pre>
1099
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/operating_system.rb, line 42</span>
1100
+ 42: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">library_extension</span>
1101
+ 43: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/darwin/</span>
1102
+ 44: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">&quot;bundle&quot;</span>
1103
+ 45: <span class="ruby-keyword kw">else</span>
1104
+ 46: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">&quot;so&quot;</span>
1105
+ 47: <span class="ruby-keyword kw">end</span>
1106
+ 48: <span class="ruby-keyword kw">end</span>
1107
+ </pre>
1108
+ </div>
1109
+ </div>
1110
+ </div>
1111
+ <div class="method">
1112
+ <div class="title">
1113
+ <a name="M000061"></a><b>linux_distro</b>()
1114
+ </div>
1115
+ <div class="description">
1116
+ <p>
1117
+ An identifier for the current Linux distribution. nil if the operating
1118
+ system is not Linux.
1119
+ </p>
1120
+ </div>
1121
+ <div class="sourcecode">
1122
+ <p class="source-link">[ <a href="javascript:toggleSource('M000061_source')" id="l_M000061_source">show source</a> ]</p>
1123
+ <div id="M000061_source" class="dyn-source">
1124
+ <pre>
1125
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/linux.rb, line 30</span>
1126
+ 30: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">linux_distro</span>
1127
+ 31: <span class="ruby-identifier">tags</span> = <span class="ruby-identifier">linux_distro_tags</span>
1128
+ 32: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tags</span>
1129
+ 33: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">tags</span>.<span class="ruby-identifier">first</span>
1130
+ 34: <span class="ruby-keyword kw">else</span>
1131
+ 35: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
1132
+ 36: <span class="ruby-keyword kw">end</span>
1133
+ 37: <span class="ruby-keyword kw">end</span>
1134
+ </pre>
1135
+ </div>
1136
+ </div>
1137
+ </div>
1138
+ <div class="method">
1139
+ <div class="title">
1140
+ <a name="M000062"></a><b>linux_distro_tags</b>()
1141
+ </div>
1142
+ <div class="description">
1143
+ <p>
1144
+ Autodetects the current Linux distribution and return a number of
1145
+ identifier tags. The first tag identifies the distribution while the other
1146
+ tags indicate which distributions it is likely compatible with. Returns nil
1147
+ if the operating system is not Linux.
1148
+ </p>
1149
+ </div>
1150
+ <div class="sourcecode">
1151
+ <p class="source-link">[ <a href="javascript:toggleSource('M000062_source')" id="l_M000062_source">show source</a> ]</p>
1152
+ <div id="M000062_source" class="dyn-source">
1153
+ <pre>
1154
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/linux.rb, line 43</span>
1155
+ 43: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">linux_distro_tags</span>
1156
+ 44: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">!~</span> <span class="ruby-regexp re">/linux/</span>
1157
+ 45: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
1158
+ 46: <span class="ruby-keyword kw">end</span>
1159
+ 47: <span class="ruby-identifier">lsb_release</span> = <span class="ruby-identifier">read_file</span>(<span class="ruby-value str">&quot;/etc/lsb-release&quot;</span>)
1160
+ 48: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lsb_release</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/Ubuntu/</span>
1161
+ 49: <span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">:ubuntu</span>, <span class="ruby-identifier">:debian</span>]
1162
+ 50: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-value str">&quot;/etc/debian_version&quot;</span>)
1163
+ 51: <span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">:debian</span>]
1164
+ 52: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-value str">&quot;/etc/redhat-release&quot;</span>)
1165
+ 53: <span class="ruby-identifier">redhat_release</span> = <span class="ruby-identifier">read_file</span>(<span class="ruby-value str">&quot;/etc/redhat-release&quot;</span>)
1166
+ 54: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">redhat_release</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/CentOS/</span>
1167
+ 55: <span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">:centos</span>, <span class="ruby-identifier">:redhat</span>]
1168
+ 56: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">redhat_release</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/Fedora/</span>
1169
+ 57: <span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">:fedora</span>, <span class="ruby-identifier">:redhat</span>]
1170
+ 58: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">redhat_release</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/Mandriva/</span>
1171
+ 59: <span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">:mandriva</span>, <span class="ruby-identifier">:redhat</span>]
1172
+ 60: <span class="ruby-keyword kw">else</span>
1173
+ 61: <span class="ruby-comment cmt"># On official RHEL distros, the content is in the form of</span>
1174
+ 62: <span class="ruby-comment cmt"># &quot;Red Hat Enterprise Linux Server release 5.1 (Tikanga)&quot;</span>
1175
+ 63: <span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">:rhel</span>, <span class="ruby-identifier">:redhat</span>]
1176
+ 64: <span class="ruby-keyword kw">end</span>
1177
+ 65: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-value str">&quot;/etc/suse-release&quot;</span>)
1178
+ 66: <span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">:suse</span>]
1179
+ 67: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-value str">&quot;/etc/gentoo-release&quot;</span>)
1180
+ 68: <span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">:gentoo</span>]
1181
+ 69: <span class="ruby-keyword kw">else</span>
1182
+ 70: <span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">:unknown</span>]
1183
+ 71: <span class="ruby-keyword kw">end</span>
1184
+ 72: <span class="ruby-comment cmt"># TODO: Slackware</span>
1185
+ 73: <span class="ruby-keyword kw">end</span>
1186
+ </pre>
1187
+ </div>
1188
+ </div>
1189
+ </div>
1190
+ <div class="method">
1191
+ <div class="title">
1192
+ <a name="M000079"></a><b>locate_ruby_tool</b>(name)
1193
+ </div>
1194
+ <div class="description">
1195
+ <p>
1196
+ Locates a Ruby tool command, e.g. &#8216;gem&#8217;, &#8216;<a
1197
+ href="PlatformInfo.html#M000072">rake</a>&#8217;, &#8216;bundle&#8217;,
1198
+ etc. Instead of naively looking in $PATH, this function uses a variety of
1199
+ search heuristics to find the command that&#8216;s really associated with
1200
+ the current Ruby interpreter. It should never locate a command that&#8216;s
1201
+ actually associated with a different Ruby interpreter. Returns nil when
1202
+ nothing&#8216;s found.
1203
+ </p>
1204
+ </div>
1205
+ <div class="sourcecode">
1206
+ <p class="source-link">[ <a href="javascript:toggleSource('M000079_source')" id="l_M000079_source">show source</a> ]</p>
1207
+ <div id="M000079_source" class="dyn-source">
1208
+ <pre>
1209
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/ruby.rb, line 246</span>
1210
+ 246: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">locate_ruby_tool</span>(<span class="ruby-identifier">name</span>)
1211
+ 247: <span class="ruby-identifier">result</span> = <span class="ruby-identifier">locate_ruby_tool_by_basename</span>(<span class="ruby-identifier">name</span>)
1212
+ 248: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">result</span>
1213
+ 249: <span class="ruby-identifier">exeext</span> = <span class="ruby-constant">Config</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-value str">'EXEEXT'</span>]
1214
+ 250: <span class="ruby-identifier">exeext</span> = <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">exeext</span>.<span class="ruby-identifier">empty?</span>
1215
+ 251: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">exeext</span>
1216
+ 252: <span class="ruby-identifier">result</span> = <span class="ruby-identifier">locate_ruby_tool_by_basename</span>(<span class="ruby-node">&quot;#{name}#{exeext}&quot;</span>)
1217
+ 253: <span class="ruby-keyword kw">end</span>
1218
+ 254: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">result</span>
1219
+ 255: <span class="ruby-identifier">result</span> = <span class="ruby-identifier">locate_ruby_tool_by_basename</span>(<span class="ruby-identifier">transform_according_to_ruby_exec_format</span>(<span class="ruby-identifier">name</span>))
1220
+ 256: <span class="ruby-keyword kw">end</span>
1221
+ 257: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">result</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">exeext</span>
1222
+ 258: <span class="ruby-identifier">result</span> = <span class="ruby-identifier">locate_ruby_tool_by_basename</span>(<span class="ruby-identifier">transform_according_to_ruby_exec_format</span>(<span class="ruby-identifier">name</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">exeext</span>)
1223
+ 259: <span class="ruby-keyword kw">end</span>
1224
+ 260: <span class="ruby-keyword kw">end</span>
1225
+ 261: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">result</span>
1226
+ 262: <span class="ruby-keyword kw">end</span>
1227
+ </pre>
1228
+ </div>
1229
+ </div>
1230
+ </div>
1231
+ <div class="method">
1232
+ <div class="title">
1233
+ <a name="M000063"></a><b>os_name</b>()
1234
+ </div>
1235
+ <div class="description">
1236
+ <p>
1237
+ Returns the operating system&#8216;s name. This name is in lowercase and
1238
+ contains no spaces, and thus is suitable to be used in some kind of ID.
1239
+ E.g. &quot;linux&quot;, &quot;macosx&quot;.
1240
+ </p>
1241
+ </div>
1242
+ <div class="sourcecode">
1243
+ <p class="source-link">[ <a href="javascript:toggleSource('M000063_source')" id="l_M000063_source">show source</a> ]</p>
1244
+ <div id="M000063_source" class="dyn-source">
1245
+ <pre>
1246
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/operating_system.rb, line 32</span>
1247
+ 32: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">os_name</span>
1248
+ 33: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Config</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-value str">'target_os'</span>] <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/darwin/</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">sw_vers</span> = <span class="ruby-identifier">find_command</span>(<span class="ruby-value str">'sw_vers'</span>))
1249
+ 34: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">&quot;macosx&quot;</span>
1250
+ 35: <span class="ruby-keyword kw">else</span>
1251
+ 36: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">RUBY_PLATFORM</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp re">/.*?-/</span>, <span class="ruby-value str">''</span>)
1252
+ 37: <span class="ruby-keyword kw">end</span>
1253
+ 38: <span class="ruby-keyword kw">end</span>
1254
+ </pre>
1255
+ </div>
1256
+ </div>
1257
+ </div>
1258
+ <div class="method">
1259
+ <div class="title">
1260
+ <a name="M000047"></a><b>passenger_binary_compatibility_id</b>()
1261
+ </div>
1262
+ <div class="description">
1263
+ <p>
1264
+ Returns an identifier string that describes the current platform&#8216;s
1265
+ binary compatibility with regard to Phusion Passenger binaries, both the
1266
+ Ruby extension and the C++ binaries. Two systems with the same binary
1267
+ compatibility identifiers are able to run the same Phusion Passenger
1268
+ binaries.
1269
+ </p>
1270
+ <p>
1271
+ The the string depends on the following factors:
1272
+ </p>
1273
+ <ul>
1274
+ <li>The Ruby extension binary compatibility identifiers.
1275
+
1276
+ </li>
1277
+ <li>The operating system name.
1278
+
1279
+ </li>
1280
+ <li>Operating system runtime identifier. This may include the kernel version,
1281
+ libc version, C++ ABI version, etc. Everything that is of interest for
1282
+ binary compatibility with Phusion Passenger&#8216;s C++ components.
1283
+
1284
+ </li>
1285
+ <li>Operating system default runtime architecture. This is not the same as the
1286
+ CPU architecture; some CPUs support multiple architectures, e.g. Intel Core
1287
+ 2 Duo supports x86 and x86_64. Some operating systems actually support
1288
+ multiple runtime architectures: a lot of x86_64 Linux distributions also
1289
+ include 32-bit runtimes, and OS X Snow Leopard is x86_64 by default but all
1290
+ system libraries also support x86. This component identifies the
1291
+ architecture that is used when compiling a binary with the system&#8216;s
1292
+ C++ compiler with its default options.
1293
+
1294
+ </li>
1295
+ </ul>
1296
+ </div>
1297
+ <div class="sourcecode">
1298
+ <p class="source-link">[ <a href="javascript:toggleSource('M000047_source')" id="l_M000047_source">show source</a> ]</p>
1299
+ <div id="M000047_source" class="dyn-source">
1300
+ <pre>
1301
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/binary_compatibility.rb, line 103</span>
1302
+ 103: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">passenger_binary_compatibility_id</span>
1303
+ 104: <span class="ruby-identifier">ruby_engine</span>, <span class="ruby-identifier">ruby_ext_version</span>, <span class="ruby-identifier">ruby_arch</span>, <span class="ruby-identifier">os_name</span> =
1304
+ 105: <span class="ruby-identifier">ruby_extension_binary_compatibility_ids</span>
1305
+ 106:
1306
+ 107: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">os_name</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;macosx&quot;</span>
1307
+ 108: <span class="ruby-comment cmt"># RUBY_PLATFORM gives us the kernel version, but we want</span>
1308
+ 109: <span class="ruby-comment cmt"># the OS X version.</span>
1309
+ 110: <span class="ruby-identifier">os_version_string</span> = <span class="ruby-value">`sw_vers -productVersion`</span>.<span class="ruby-identifier">strip</span>
1310
+ 111: <span class="ruby-comment cmt"># sw_vers returns something like &quot;10.6.2&quot;. We're only</span>
1311
+ 112: <span class="ruby-comment cmt"># interested in the first two digits (MAJOR.MINOR) since</span>
1312
+ 113: <span class="ruby-comment cmt"># tiny releases tend to be binary compatible with each</span>
1313
+ 114: <span class="ruby-comment cmt"># other.</span>
1314
+ 115: <span class="ruby-identifier">components</span> = <span class="ruby-identifier">os_version_string</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">&quot;.&quot;</span>)
1315
+ 116: <span class="ruby-identifier">os_version</span> = <span class="ruby-node">&quot;#{components[0]}.#{components[1]}&quot;</span>
1316
+ 117: <span class="ruby-identifier">os_runtime</span> = <span class="ruby-identifier">os_version</span>
1317
+ 118:
1318
+ 119: <span class="ruby-identifier">os_arch</span> = <span class="ruby-identifier">cpu_architectures</span>[<span class="ruby-value">0</span>]
1319
+ 120: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">os_version</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value str">&quot;10.5&quot;</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">os_arch</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^i.86$/</span>
1320
+ 121: <span class="ruby-comment cmt"># On Snow Leopard, 'uname -m' returns i386 but</span>
1321
+ 122: <span class="ruby-comment cmt"># we *know* that everything is x86_64 by default.</span>
1322
+ 123: <span class="ruby-identifier">os_arch</span> = <span class="ruby-value str">&quot;x86_64&quot;</span>
1323
+ 124: <span class="ruby-keyword kw">end</span>
1324
+ 125: <span class="ruby-keyword kw">else</span>
1325
+ 126: <span class="ruby-identifier">os_arch</span> = <span class="ruby-identifier">cpu_architectures</span>[<span class="ruby-value">0</span>]
1326
+ 127:
1327
+ 128: <span class="ruby-identifier">cpp</span> = <span class="ruby-identifier">find_command</span>(<span class="ruby-value str">'cpp'</span>)
1328
+ 129: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">cpp</span>
1329
+ 130: <span class="ruby-identifier">macros</span> = <span class="ruby-node">`#{cpp} -dM &lt; /dev/null`</span>
1330
+ 131:
1331
+ 132: <span class="ruby-comment cmt"># Can be something like &quot;4.3.2&quot;</span>
1332
+ 133: <span class="ruby-comment cmt"># or &quot;4.2.1 20070719 (FreeBSD)&quot;</span>
1333
+ 134: <span class="ruby-identifier">macros</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/__VERSION__ &quot;(.+)&quot;/</span>
1334
+ 135: <span class="ruby-identifier">compiler_version</span> = <span class="ruby-identifier">$1</span>
1335
+ 136: <span class="ruby-identifier">compiler_version</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/ .*/</span>, <span class="ruby-value str">''</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">compiler_version</span>
1336
+ 137:
1337
+ 138: <span class="ruby-identifier">macros</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/__GXX_ABI_VERSION (.+)$/</span>
1338
+ 139: <span class="ruby-identifier">cxx_abi_version</span> = <span class="ruby-identifier">$1</span>
1339
+ 140: <span class="ruby-keyword kw">else</span>
1340
+ 141: <span class="ruby-identifier">compiler_version</span> = <span class="ruby-keyword kw">nil</span>
1341
+ 142: <span class="ruby-identifier">cxx_abi_version</span> = <span class="ruby-keyword kw">nil</span>
1342
+ 143: <span class="ruby-keyword kw">end</span>
1343
+ 144:
1344
+ 145: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">compiler_version</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">cxx_abi_version</span>
1345
+ 146: <span class="ruby-identifier">os_runtime</span> = <span class="ruby-node">&quot;gcc#{compiler_version}-#{cxx_abi_version}&quot;</span>
1346
+ 147: <span class="ruby-keyword kw">else</span>
1347
+ 148: <span class="ruby-identifier">os_runtime</span> = [<span class="ruby-identifier">compiler_version</span>, <span class="ruby-identifier">cxx_abi_version</span>].<span class="ruby-identifier">compact</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;-&quot;</span>)
1348
+ 149: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">os_runtime</span>.<span class="ruby-identifier">empty?</span>
1349
+ 150: <span class="ruby-identifier">os_runtime</span> = <span class="ruby-value">`uname -r`</span>.<span class="ruby-identifier">strip</span>
1350
+ 151: <span class="ruby-keyword kw">end</span>
1351
+ 152: <span class="ruby-keyword kw">end</span>
1352
+ 153: <span class="ruby-keyword kw">end</span>
1353
+ 154:
1354
+ 155: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ruby_engine</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;jruby&quot;</span>
1355
+ 156: <span class="ruby-comment cmt"># For JRuby it's kinda useless to prepend &quot;java&quot; as extension</span>
1356
+ 157: <span class="ruby-comment cmt"># architecture because JRuby doesn't allow any other extension</span>
1357
+ 158: <span class="ruby-comment cmt"># architecture.</span>
1358
+ 159: <span class="ruby-identifier">identifier</span> = <span class="ruby-value str">&quot;&quot;</span>
1359
+ 160: <span class="ruby-keyword kw">else</span>
1360
+ 161: <span class="ruby-identifier">identifier</span> = <span class="ruby-node">&quot;#{ruby_arch}-&quot;</span>
1361
+ 162: <span class="ruby-keyword kw">end</span>
1362
+ 163: <span class="ruby-identifier">identifier</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{ruby_engine}#{ruby_ext_version}-&quot;</span>
1363
+ 164: <span class="ruby-comment cmt"># If the extension architecture is the same as the OS architecture</span>
1364
+ 165: <span class="ruby-comment cmt"># then there's no need to specify it twice.</span>
1365
+ 166: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ruby_arch</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">os_arch</span>
1366
+ 167: <span class="ruby-identifier">identifier</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{os_arch}-&quot;</span>
1367
+ 168: <span class="ruby-keyword kw">end</span>
1368
+ 169: <span class="ruby-identifier">identifier</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{os_name}-#{os_runtime}&quot;</span>
1369
+ 170: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">identifier</span>
1370
+ 171: <span class="ruby-keyword kw">end</span>
1371
+ </pre>
1372
+ </div>
1373
+ </div>
1374
+ </div>
1375
+ <div class="method">
1376
+ <div class="title">
1377
+ <a name="M000053"></a><b>portability_cflags</b>()
1378
+ </div>
1379
+ <div class="description">
1380
+ <p>
1381
+ Compiler flags that should be used for compiling every C/C++ program, for
1382
+ portability reasons. These flags should be specified as last when invoking
1383
+ the compiler.
1384
+ </p>
1385
+ </div>
1386
+ <div class="sourcecode">
1387
+ <p class="source-link">[ <a href="javascript:toggleSource('M000053_source')" id="l_M000053_source">show source</a> ]</p>
1388
+ <div id="M000053_source" class="dyn-source">
1389
+ <pre>
1390
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/compiler.rb, line 82</span>
1391
+ 82: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">portability_cflags</span>
1392
+ 83: <span class="ruby-identifier">flags</span> = [<span class="ruby-value str">&quot;-D_REENTRANT -I/usr/local/include&quot;</span>]
1393
+ 84:
1394
+ 85: <span class="ruby-comment cmt"># Google SparseHash flags.</span>
1395
+ 86: <span class="ruby-comment cmt"># Figure out header for hash function object and its namespace.</span>
1396
+ 87: <span class="ruby-comment cmt"># Based on stl_hash.m4 and stl_hash_fun.m4 in the Google SparseHash sources.</span>
1397
+ 88: <span class="ruby-identifier">hash_namespace</span> = <span class="ruby-keyword kw">nil</span>
1398
+ 89: <span class="ruby-identifier">ok</span> = <span class="ruby-keyword kw">false</span>
1399
+ 90: [<span class="ruby-value str">'__gnu_cxx'</span>, <span class="ruby-value str">''</span>, <span class="ruby-value str">'std'</span>, <span class="ruby-value str">'stdext'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">namespace</span><span class="ruby-operator">|</span>
1400
+ 91: [<span class="ruby-value str">'ext/hash_map'</span>, <span class="ruby-value str">'hash_map'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">hash_map_header</span><span class="ruby-operator">|</span>
1401
+ 92: <span class="ruby-identifier">ok</span> = <span class="ruby-identifier">try_compile</span>(<span class="ruby-identifier">:cxx</span>, <span class="ruby-node">%Q{
1402
+ 93: #include &lt;#{hash_map_header}&gt;
1403
+ 94: int
1404
+ 95: main() {
1405
+ 96: #{namespace}::hash_map&lt;int, int&gt; m;
1406
+ 97: return 0;
1407
+ 98: }
1408
+ 99: }</span>)
1409
+ 100: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ok</span>
1410
+ 101: <span class="ruby-identifier">hash_namespace</span> = <span class="ruby-identifier">namespace</span>
1411
+ 102: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;-DHASH_NAMESPACE=\&quot;#{namespace}\&quot;&quot;</span>
1412
+ 103: <span class="ruby-keyword kw">end</span>
1413
+ 104: <span class="ruby-keyword kw">end</span>
1414
+ 105: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ok</span>
1415
+ 106: <span class="ruby-keyword kw">end</span>
1416
+ 107: [<span class="ruby-value str">'ext/hash_fun.h'</span>, <span class="ruby-value str">'functional'</span>, <span class="ruby-value str">'tr1/functional'</span>,
1417
+ 108: <span class="ruby-value str">'ext/stl_hash_fun.h'</span>, <span class="ruby-value str">'hash_fun.h'</span>, <span class="ruby-value str">'stl_hash_fun.h'</span>,
1418
+ 109: <span class="ruby-value str">'stl/_hash_fun.h'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">hash_function_header</span><span class="ruby-operator">|</span>
1419
+ 110: <span class="ruby-identifier">ok</span> = <span class="ruby-identifier">try_compile</span>(<span class="ruby-identifier">:cxx</span>, <span class="ruby-node">%Q{
1420
+ 111: #include &lt;#{hash_function_header}&gt;
1421
+ 112: int
1422
+ 113: main() {
1423
+ 114: #{hash_namespace}::hash&lt;int&gt;()(5);
1424
+ 115: return 0;
1425
+ 116: }
1426
+ 117: }</span>)
1427
+ 118: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ok</span>
1428
+ 119: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;-DHASH_FUN_H=\&quot;&lt;#{hash_function_header}&gt;\&quot;&quot;</span>
1429
+ 120: <span class="ruby-keyword kw">break</span>
1430
+ 121: <span class="ruby-keyword kw">end</span>
1431
+ 122: <span class="ruby-keyword kw">end</span>
1432
+ 123:
1433
+ 124: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/solaris/</span>
1434
+ 125: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'-pthreads'</span>
1435
+ 126: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'-D_XOPEN_SOURCE=500 -D_XPG4_2 -D__EXTENSIONS__ -D__SOLARIS__ -D_FILE_OFFSET_BITS=64'</span>
1436
+ 127: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'-DBOOST_HAS_STDINT_H'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/solaris2.9/</span>
1437
+ 128: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'-D__SOLARIS9__ -DBOOST__STDC_CONSTANT_MACROS_DEFINED'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/solaris2.9/</span>
1438
+ 129: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'-mcpu=ultrasparc'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/sparc/</span>
1439
+ 130: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/openbsd/</span>
1440
+ 131: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'-DBOOST_HAS_STDINT_H -D_GLIBCPP__PTHREADS'</span>
1441
+ 132: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/aix/</span>
1442
+ 133: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'-DOXT_DISABLE_BACKTRACES'</span>
1443
+ 134: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/(sparc-linux|arm-linux|^arm.*-linux|sh4-linux)/</span>
1444
+ 135: <span class="ruby-comment cmt"># http://code.google.com/p/phusion-passenger/issues/detail?id=200</span>
1445
+ 136: <span class="ruby-comment cmt"># http://groups.google.com/group/phusion-passenger/t/6b904a962ee28e5c</span>
1446
+ 137: <span class="ruby-comment cmt"># http://groups.google.com/group/phusion-passenger/browse_thread/thread/aad4bd9d8d200561</span>
1447
+ 138: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'-DBOOST_SP_USE_PTHREADS'</span>
1448
+ 139: <span class="ruby-keyword kw">end</span>
1449
+ 140:
1450
+ 141: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'-DHAS_SFENCE'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">supports_sfence_instruction?</span>
1451
+ 142: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'-DHAS_LFENCE'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">supports_lfence_instruction?</span>
1452
+ 143:
1453
+ 144: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">flags</span>.<span class="ruby-identifier">compact</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot; &quot;</span>).<span class="ruby-identifier">strip</span>
1454
+ 145: <span class="ruby-keyword kw">end</span>
1455
+ </pre>
1456
+ </div>
1457
+ </div>
1458
+ </div>
1459
+ <div class="method">
1460
+ <div class="title">
1461
+ <a name="M000054"></a><b>portability_ldflags</b>()
1462
+ </div>
1463
+ <div class="description">
1464
+ <p>
1465
+ Linker flags that should be used for linking every C/C++ program, for
1466
+ portability reasons. These flags should be specified as last when invoking
1467
+ the linker.
1468
+ </p>
1469
+ </div>
1470
+ <div class="sourcecode">
1471
+ <p class="source-link">[ <a href="javascript:toggleSource('M000054_source')" id="l_M000054_source">show source</a> ]</p>
1472
+ <div id="M000054_source" class="dyn-source">
1473
+ <pre>
1474
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/compiler.rb, line 151</span>
1475
+ 151: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">portability_ldflags</span>
1476
+ 152: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/solaris/</span>
1477
+ 153: <span class="ruby-identifier">result</span> = <span class="ruby-value str">'-lxnet -lrt -lsocket -lnsl -lpthread'</span>
1478
+ 154: <span class="ruby-keyword kw">else</span>
1479
+ 155: <span class="ruby-identifier">result</span> = <span class="ruby-value str">'-lpthread'</span>
1480
+ 156: <span class="ruby-keyword kw">end</span>
1481
+ 157: <span class="ruby-identifier">flags</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">' -lmath'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">has_math_library?</span>
1482
+ 158: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">result</span>
1483
+ 159: <span class="ruby-keyword kw">end</span>
1484
+ </pre>
1485
+ </div>
1486
+ </div>
1487
+ </div>
1488
+ <div class="method">
1489
+ <div class="title">
1490
+ <a name="M000072"></a><b>rake</b>()
1491
+ </div>
1492
+ <div class="description">
1493
+ <p>
1494
+ Returns the absolute path to the Rake executable that belongs to the
1495
+ current Ruby interpreter. Returns nil if it doesn&#8216;t exist.
1496
+ </p>
1497
+ <p>
1498
+ The return value may not be the actual correct invocation for Rake. Use <a
1499
+ href="PlatformInfo.html#M000073">rake_command</a> for that.
1500
+ </p>
1501
+ </div>
1502
+ <div class="sourcecode">
1503
+ <p class="source-link">[ <a href="javascript:toggleSource('M000072_source')" id="l_M000072_source">show source</a> ]</p>
1504
+ <div id="M000072_source" class="dyn-source">
1505
+ <pre>
1506
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/ruby.rb, line 121</span>
1507
+ 121: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">rake</span>
1508
+ 122: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">locate_ruby_tool</span>(<span class="ruby-value str">'rake'</span>)
1509
+ 123: <span class="ruby-keyword kw">end</span>
1510
+ </pre>
1511
+ </div>
1512
+ </div>
1513
+ </div>
1514
+ <div class="method">
1515
+ <div class="title">
1516
+ <a name="M000073"></a><b>rake_command</b>()
1517
+ </div>
1518
+ <div class="description">
1519
+ <p>
1520
+ Returns the correct command string for invoking the Rake executable that
1521
+ belongs to the current Ruby interpreter. Returns nil if Rake is not found.
1522
+ </p>
1523
+ </div>
1524
+ <div class="sourcecode">
1525
+ <p class="source-link">[ <a href="javascript:toggleSource('M000073_source')" id="l_M000073_source">show source</a> ]</p>
1526
+ <div id="M000073_source" class="dyn-source">
1527
+ <pre>
1528
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/ruby.rb, line 129</span>
1529
+ 129: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">rake_command</span>
1530
+ 130: <span class="ruby-identifier">filename</span> = <span class="ruby-identifier">rake</span>
1531
+ 131: <span class="ruby-comment cmt"># If the Rake executable is a Ruby program then we need to run</span>
1532
+ 132: <span class="ruby-comment cmt"># it in the correct Ruby interpreter just in case Rake doesn't</span>
1533
+ 133: <span class="ruby-comment cmt"># have the correct shebang line; we don't want a totally different</span>
1534
+ 134: <span class="ruby-comment cmt"># Ruby than the current one to be invoked.</span>
1535
+ 135: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">filename</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">is_ruby_program?</span>(<span class="ruby-identifier">filename</span>)
1536
+ 136: <span class="ruby-keyword kw">return</span> <span class="ruby-node">&quot;#{ruby_command} #{filename}&quot;</span>
1537
+ 137: <span class="ruby-keyword kw">else</span>
1538
+ 138: <span class="ruby-comment cmt"># If it's not a Ruby program then it's probably a wrapper</span>
1539
+ 139: <span class="ruby-comment cmt"># script as is the case with e.g. RVM (~/.rvm/wrappers).</span>
1540
+ 140: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">filename</span>
1541
+ 141: <span class="ruby-keyword kw">end</span>
1542
+ 142: <span class="ruby-keyword kw">end</span>
1543
+ </pre>
1544
+ </div>
1545
+ </div>
1546
+ </div>
1547
+ <div class="method">
1548
+ <div class="title">
1549
+ <a name="M000074"></a><b>rspec</b>()
1550
+ </div>
1551
+ <div class="description">
1552
+ <p>
1553
+ Returns the absolute path to the RSpec runner program that belongs to the
1554
+ current Ruby interpreter. Returns nil if it doesn&#8216;t exist.
1555
+ </p>
1556
+ </div>
1557
+ <div class="sourcecode">
1558
+ <p class="source-link">[ <a href="javascript:toggleSource('M000074_source')" id="l_M000074_source">show source</a> ]</p>
1559
+ <div id="M000074_source" class="dyn-source">
1560
+ <pre>
1561
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/ruby.rb, line 148</span>
1562
+ 148: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">rspec</span>
1563
+ 149: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">locate_ruby_tool</span>(<span class="ruby-value str">'spec'</span>)
1564
+ 150: <span class="ruby-keyword kw">end</span>
1565
+ </pre>
1566
+ </div>
1567
+ </div>
1568
+ </div>
1569
+ <div class="method">
1570
+ <div class="title">
1571
+ <a name="M000068"></a><b>ruby_command</b>()
1572
+ </div>
1573
+ <div class="description">
1574
+ <p>
1575
+ Returns correct command for invoking the current Ruby interpreter. In case
1576
+ of RVM this function will return the path to the RVM wrapper script that
1577
+ executes the current Ruby interpreter in the currently active gem set.
1578
+ </p>
1579
+ </div>
1580
+ <div class="sourcecode">
1581
+ <p class="source-link">[ <a href="javascript:toggleSource('M000068_source')" id="l_M000068_source">show source</a> ]</p>
1582
+ <div id="M000068_source" class="dyn-source">
1583
+ <pre>
1584
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/ruby.rb, line 48</span>
1585
+ 48: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">ruby_command</span>
1586
+ 49: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">in_rvm?</span>
1587
+ 50: <span class="ruby-identifier">name</span> = <span class="ruby-identifier">rvm_ruby_string</span>
1588
+ 51: <span class="ruby-identifier">dir</span> = <span class="ruby-identifier">rvm_path</span>
1589
+ 52: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">dir</span>
1590
+ 53: <span class="ruby-identifier">filename</span> = <span class="ruby-node">&quot;#{dir}/wrappers/#{name}/ruby&quot;</span>
1591
+ 54: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">filename</span>)
1592
+ 55: <span class="ruby-identifier">contents</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">filename</span>, <span class="ruby-value str">'rb'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span>
1593
+ 56: <span class="ruby-identifier">f</span>.<span class="ruby-identifier">read</span>
1594
+ 57: <span class="ruby-keyword kw">end</span>
1595
+ 58: <span class="ruby-comment cmt"># Old wrapper scripts reference $HOME which causes</span>
1596
+ 59: <span class="ruby-comment cmt"># things to blow up when run by a different user.</span>
1597
+ 60: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">contents</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-value str">&quot;$HOME&quot;</span>)
1598
+ 61: <span class="ruby-identifier">filename</span> = <span class="ruby-keyword kw">nil</span>
1599
+ 62: <span class="ruby-keyword kw">end</span>
1600
+ 63: <span class="ruby-keyword kw">else</span>
1601
+ 64: <span class="ruby-identifier">filename</span> = <span class="ruby-keyword kw">nil</span>
1602
+ 65: <span class="ruby-keyword kw">end</span>
1603
+ 66: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">filename</span>
1604
+ 67: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">filename</span>
1605
+ 68: <span class="ruby-keyword kw">else</span>
1606
+ 69: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Your RVM wrapper scripts are too old. Please &quot;</span> <span class="ruby-operator">+</span>
1607
+ 70: <span class="ruby-value str">&quot;update them first by running 'rvm update --head &amp;&amp; &quot;</span> <span class="ruby-operator">+</span>
1608
+ 71: <span class="ruby-value str">&quot;rvm reload &amp;&amp; rvm repair all'.&quot;</span>
1609
+ 72: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
1610
+ 73: <span class="ruby-keyword kw">end</span>
1611
+ 74: <span class="ruby-keyword kw">else</span>
1612
+ 75: <span class="ruby-comment cmt"># Something's wrong with the user's RVM installation.</span>
1613
+ 76: <span class="ruby-comment cmt"># Raise an error so that the user knows this instead of</span>
1614
+ 77: <span class="ruby-comment cmt"># having things fail randomly later on.</span>
1615
+ 78: <span class="ruby-comment cmt"># 'name' is guaranteed to be non-nil because rvm_ruby_string</span>
1616
+ 79: <span class="ruby-comment cmt"># already raises an exception on error.</span>
1617
+ 80: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Your RVM installation appears to be broken: the RVM &quot;</span> <span class="ruby-operator">+</span>
1618
+ 81: <span class="ruby-value str">&quot;path cannot be found. Please fix your RVM installation &quot;</span> <span class="ruby-operator">+</span>
1619
+ 82: <span class="ruby-value str">&quot;or contact the RVM developers for support.&quot;</span>
1620
+ 83: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
1621
+ 84: <span class="ruby-keyword kw">end</span>
1622
+ 85: <span class="ruby-keyword kw">else</span>
1623
+ 86: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">ruby_executable</span>
1624
+ 87: <span class="ruby-keyword kw">end</span>
1625
+ 88: <span class="ruby-keyword kw">end</span>
1626
+ </pre>
1627
+ </div>
1628
+ </div>
1629
+ </div>
1630
+ <div class="method">
1631
+ <div class="title">
1632
+ <a name="M000069"></a><b>ruby_executable</b>()
1633
+ </div>
1634
+ <div class="description">
1635
+ <p>
1636
+ Returns the full path to the current Ruby interpreter&#8216;s executable
1637
+ file. This might not be the actual correct command to use for invoking the
1638
+ Ruby interpreter; use <a href="PlatformInfo.html#M000068">ruby_command</a>
1639
+ instead.
1640
+ </p>
1641
+ </div>
1642
+ <div class="sourcecode">
1643
+ <p class="source-link">[ <a href="javascript:toggleSource('M000069_source')" id="l_M000069_source">show source</a> ]</p>
1644
+ <div id="M000069_source" class="dyn-source">
1645
+ <pre>
1646
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/ruby.rb, line 94</span>
1647
+ 94: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">ruby_executable</span>
1648
+ 95: <span class="ruby-ivar">@@ruby_executable</span> <span class="ruby-operator">||=</span>
1649
+ 96: <span class="ruby-constant">Config</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-value str">'bindir'</span>] <span class="ruby-operator">+</span> <span class="ruby-value str">'/'</span> <span class="ruby-operator">+</span> <span class="ruby-constant">Config</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-value str">'RUBY_INSTALL_NAME'</span>] <span class="ruby-operator">+</span> <span class="ruby-constant">Config</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-value str">'EXEEXT'</span>]
1650
+ 97: <span class="ruby-keyword kw">end</span>
1651
+ </pre>
1652
+ </div>
1653
+ </div>
1654
+ </div>
1655
+ <div class="method">
1656
+ <div class="title">
1657
+ <a name="M000046"></a><b>ruby_extension_binary_compatibility_ids</b>()
1658
+ </div>
1659
+ <div class="description">
1660
+ <p>
1661
+ Returns an array of identifiers that describe the current Ruby
1662
+ interpreter&#8216;s extension binary compatibility. A Ruby extension
1663
+ compiled for a certain Ruby interpreter can also be loaded on a different
1664
+ Ruby interpreter with the same binary compatibility identifiers.
1665
+ </p>
1666
+ <p>
1667
+ The identifiers depend on the following factors:
1668
+ </p>
1669
+ <ul>
1670
+ <li>Ruby engine name.
1671
+
1672
+ </li>
1673
+ <li>Ruby extension version. This is not the same as the Ruby language version,
1674
+ which identifies language-level compatibility. This is rather about binary
1675
+ compatibility of extensions. MRI seems to break source compatibility
1676
+ between tiny releases, though patchlevel releases tend to be source and
1677
+ binary compatible.
1678
+
1679
+ </li>
1680
+ <li>Ruby extension architecture. This is not necessarily the same as the
1681
+ operating system runtime architecture or the CPU architecture. For example,
1682
+ in case of JRuby, the extension architecture is just &quot;java&quot;
1683
+ because all extensions target the Java platform; the architecture the JVM
1684
+ was compiled for has no effect on compatibility. On systems with universal
1685
+ binaries support there may be multiple architectures. In this case the
1686
+ architecture is &quot;universal&quot; because extensions must be able to
1687
+ support all of the Ruby executable&#8216;s architectures.
1688
+
1689
+ </li>
1690
+ <li>The operating system for which the Ruby interpreter was compiled.
1691
+
1692
+ </li>
1693
+ </ul>
1694
+ </div>
1695
+ <div class="sourcecode">
1696
+ <p class="source-link">[ <a href="javascript:toggleSource('M000046_source')" id="l_M000046_source">show source</a> ]</p>
1697
+ <div id="M000046_source" class="dyn-source">
1698
+ <pre>
1699
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/binary_compatibility.rb, line 59</span>
1700
+ 59: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">ruby_extension_binary_compatibility_ids</span>
1701
+ 60: <span class="ruby-identifier">ruby_engine</span> = <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">RUBY_ENGINE</span>) <span class="ruby-operator">?</span> <span class="ruby-constant">RUBY_ENGINE</span> <span class="ruby-operator">:</span> <span class="ruby-value str">&quot;ruby&quot;</span>
1702
+ 61: <span class="ruby-identifier">ruby_ext_version</span> = <span class="ruby-constant">RUBY_VERSION</span>
1703
+ 62: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/darwin/</span>
1704
+ 63: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/universal/</span>
1705
+ 64: <span class="ruby-identifier">ruby_arch</span> = <span class="ruby-value str">&quot;universal&quot;</span>
1706
+ 65: <span class="ruby-keyword kw">else</span>
1707
+ 66: <span class="ruby-comment cmt"># Something like:</span>
1708
+ 67: <span class="ruby-comment cmt"># &quot;/opt/ruby-enterprise/bin/ruby: Mach-O 64-bit executable x86_64&quot;</span>
1709
+ 68: <span class="ruby-identifier">ruby_arch</span> = <span class="ruby-node">`file -L &quot;#{ruby_executable}&quot;`</span>.<span class="ruby-identifier">strip</span>
1710
+ 69: <span class="ruby-identifier">ruby_arch</span>.<span class="ruby-identifier">sub!</span>(<span class="ruby-regexp re">/.* /</span>, <span class="ruby-value str">''</span>)
1711
+ 70: <span class="ruby-keyword kw">end</span>
1712
+ 71: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;java&quot;</span>
1713
+ 72: <span class="ruby-identifier">ruby_arch</span> = <span class="ruby-value str">&quot;java&quot;</span>
1714
+ 73: <span class="ruby-keyword kw">else</span>
1715
+ 74: <span class="ruby-identifier">ruby_arch</span> = <span class="ruby-identifier">cpu_architectures</span>[<span class="ruby-value">0</span>]
1716
+ 75: <span class="ruby-keyword kw">end</span>
1717
+ 76: <span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">ruby_engine</span>, <span class="ruby-identifier">ruby_ext_version</span>, <span class="ruby-identifier">ruby_arch</span>, <span class="ruby-identifier">os_name</span>]
1718
+ 77: <span class="ruby-keyword kw">end</span>
1719
+ </pre>
1720
+ </div>
1721
+ </div>
1722
+ </div>
1723
+ <div class="method">
1724
+ <div class="title">
1725
+ <a name="M000078"></a><b>ruby_sudo_command</b>()
1726
+ </div>
1727
+ <div class="description">
1728
+ <p>
1729
+ Returns either &#8216;sudo&#8217; or &#8216;rvmsudo&#8217; depending on
1730
+ whether the current Ruby interpreter is managed by RVM.
1731
+ </p>
1732
+ </div>
1733
+ <div class="sourcecode">
1734
+ <p class="source-link">[ <a href="javascript:toggleSource('M000078_source')" id="l_M000078_source">show source</a> ]</p>
1735
+ <div id="M000078_source" class="dyn-source">
1736
+ <pre>
1737
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/ruby.rb, line 232</span>
1738
+ 232: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">ruby_sudo_command</span>
1739
+ 233: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">in_rvm?</span>
1740
+ 234: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">&quot;rvmsudo&quot;</span>
1741
+ 235: <span class="ruby-keyword kw">else</span>
1742
+ 236: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">&quot;sudo&quot;</span>
1743
+ 237: <span class="ruby-keyword kw">end</span>
1744
+ 238: <span class="ruby-keyword kw">end</span>
1745
+ </pre>
1746
+ </div>
1747
+ </div>
1748
+ </div>
1749
+ <div class="method">
1750
+ <div class="title">
1751
+ <a name="M000070"></a><b>ruby_supports_fork?</b>()
1752
+ </div>
1753
+ <div class="description">
1754
+ <p>
1755
+ Returns whether the Ruby interpreter supports process forking.
1756
+ </p>
1757
+ </div>
1758
+ <div class="sourcecode">
1759
+ <p class="source-link">[ <a href="javascript:toggleSource('M000070_source')" id="l_M000070_source">show source</a> ]</p>
1760
+ <div id="M000070_source" class="dyn-source">
1761
+ <pre>
1762
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/ruby.rb, line 100</span>
1763
+ 100: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">ruby_supports_fork?</span>
1764
+ 101: <span class="ruby-comment cmt"># MRI &gt;= 1.9.2's respond_to? returns false for methods</span>
1765
+ 102: <span class="ruby-comment cmt"># that are not implemented.</span>
1766
+ 103: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">Process</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:fork</span>) <span class="ruby-operator">&amp;&amp;</span>
1767
+ 104: <span class="ruby-constant">RUBY_ENGINE</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;jruby&quot;</span> <span class="ruby-operator">&amp;&amp;</span>
1768
+ 105: <span class="ruby-constant">RUBY_ENGINE</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;macruby&quot;</span> <span class="ruby-operator">&amp;&amp;</span>
1769
+ 106: <span class="ruby-constant">Config</span><span class="ruby-operator">::</span><span class="ruby-constant">CONFIG</span>[<span class="ruby-value str">'target_os'</span>] <span class="ruby-operator">!~</span> <span class="ruby-regexp re">/mswin|windows|mingw/</span>
1770
+ 107: <span class="ruby-keyword kw">end</span>
1771
+ </pre>
1772
+ </div>
1773
+ </div>
1774
+ </div>
1775
+ <div class="method">
1776
+ <div class="title">
1777
+ <a name="M000076"></a><b>rvm_path</b>()
1778
+ </div>
1779
+ <div class="description">
1780
+ <p>
1781
+ If the current Ruby interpreter is managed by RVM, returns the directory in
1782
+ which RVM places its working files. Otherwise returns nil.
1783
+ </p>
1784
+ </div>
1785
+ <div class="sourcecode">
1786
+ <p class="source-link">[ <a href="javascript:toggleSource('M000076_source')" id="l_M000076_source">show source</a> ]</p>
1787
+ <div id="M000076_source" class="dyn-source">
1788
+ <pre>
1789
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/ruby.rb, line 162</span>
1790
+ 162: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">rvm_path</span>
1791
+ 163: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">in_rvm?</span>
1792
+ 164: [<span class="ruby-constant">ENV</span>[<span class="ruby-value str">'rvm_path'</span>], <span class="ruby-value str">&quot;~/.rvm&quot;</span>, <span class="ruby-value str">&quot;/usr/local/rvm&quot;</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">path</span><span class="ruby-operator">|</span>
1793
+ 165: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">path</span>.<span class="ruby-identifier">nil?</span>
1794
+ 166: <span class="ruby-identifier">path</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">path</span>)
1795
+ 167: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">path</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span>(<span class="ruby-identifier">path</span>)
1796
+ 168: <span class="ruby-keyword kw">end</span>
1797
+ 169: <span class="ruby-comment cmt"># Failure to locate the RVM path is probably caused by the</span>
1798
+ 170: <span class="ruby-comment cmt"># user customizing $rvm_path. Older RVM versions don't</span>
1799
+ 171: <span class="ruby-comment cmt"># export $rvm_path, making us unable to detect its value.</span>
1800
+ 172: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Unable to locate the RVM path. Your RVM installation &quot;</span> <span class="ruby-operator">+</span>
1801
+ 173: <span class="ruby-value str">&quot;is probably too old. Please update it with &quot;</span> <span class="ruby-operator">+</span>
1802
+ 174: <span class="ruby-value str">&quot;'rvm update --head &amp;&amp; rvm reload &amp;&amp; rvm repair all'.&quot;</span>
1803
+ 175: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
1804
+ 176: <span class="ruby-keyword kw">else</span>
1805
+ 177: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
1806
+ 178: <span class="ruby-keyword kw">end</span>
1807
+ 179: <span class="ruby-keyword kw">end</span>
1808
+ </pre>
1809
+ </div>
1810
+ </div>
1811
+ </div>
1812
+ <div class="method">
1813
+ <div class="title">
1814
+ <a name="M000077"></a><b>rvm_ruby_string</b>()
1815
+ </div>
1816
+ <div class="description">
1817
+ <p>
1818
+ If the current Ruby interpreter is managed by RVM, returns the RVM name
1819
+ which identifies the current Ruby interpreter plus the currently active
1820
+ gemset, e.g. something like this: &quot;ruby-1.9.2-p0@mygemset&quot;
1821
+ </p>
1822
+ <p>
1823
+ Returns nil otherwise.
1824
+ </p>
1825
+ </div>
1826
+ <div class="sourcecode">
1827
+ <p class="source-link">[ <a href="javascript:toggleSource('M000077_source')" id="l_M000077_source">show source</a> ]</p>
1828
+ <div id="M000077_source" class="dyn-source">
1829
+ <pre>
1830
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/ruby.rb, line 188</span>
1831
+ 188: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">rvm_ruby_string</span>
1832
+ 189: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">in_rvm?</span>
1833
+ 190: <span class="ruby-comment cmt"># RVM used to export the necessary information through</span>
1834
+ 191: <span class="ruby-comment cmt"># environment variables, but doesn't always do that anymore</span>
1835
+ 192: <span class="ruby-comment cmt"># in the latest versions in order to fight env var pollution.</span>
1836
+ 193: <span class="ruby-comment cmt"># Scanning $LOAD_PATH seems to be the only way to obtain</span>
1837
+ 194: <span class="ruby-comment cmt"># the information.</span>
1838
+ 195:
1839
+ 196: <span class="ruby-comment cmt"># Getting the RVM name of the Ruby interpreter (&quot;ruby-1.9.2&quot;)</span>
1840
+ 197: <span class="ruby-comment cmt"># isn't so hard, we can extract it from the #ruby_executable</span>
1841
+ 198: <span class="ruby-comment cmt"># string. Getting the gemset name is a bit harder, so let's</span>
1842
+ 199: <span class="ruby-comment cmt"># try various strategies...</span>
1843
+ 200:
1844
+ 201: <span class="ruby-comment cmt"># $GEM_HOME usually contains the gem set name.</span>
1845
+ 202: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">GEM_HOME</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">GEM_HOME</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-value str">&quot;rvm/gems/&quot;</span>)
1846
+ 203: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">basename</span>(<span class="ruby-constant">GEM_HOME</span>)
1847
+ 204: <span class="ruby-keyword kw">end</span>
1848
+ 205:
1849
+ 206: <span class="ruby-comment cmt"># User somehow managed to nuke $GEM_HOME. Extract info</span>
1850
+ 207: <span class="ruby-comment cmt"># from $LOAD_PATH.</span>
1851
+ 208: <span class="ruby-identifier">matching_path</span> = <span class="ruby-identifier">$LOAD_PATH</span>.<span class="ruby-identifier">find_all</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">item</span><span class="ruby-operator">|</span>
1852
+ 209: <span class="ruby-identifier">item</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-value str">&quot;rvm/gems/&quot;</span>)
1853
+ 210: <span class="ruby-keyword kw">end</span>
1854
+ 211: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">matching_path</span>
1855
+ 212: <span class="ruby-identifier">subpath</span> = <span class="ruby-identifier">matching_path</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/^.*rvm\/gems\//</span>, <span class="ruby-value str">''</span>)
1856
+ 213: <span class="ruby-identifier">result</span> = <span class="ruby-identifier">subpath</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'/'</span>).<span class="ruby-identifier">first</span>
1857
+ 214: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">result</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">result</span>
1858
+ 215: <span class="ruby-keyword kw">end</span>
1859
+ 216:
1860
+ 217: <span class="ruby-comment cmt"># On Ruby 1.9, $LOAD_PATH does not contain any gem paths until</span>
1861
+ 218: <span class="ruby-comment cmt"># at least one gem has been required so the above can fail.</span>
1862
+ 219: <span class="ruby-comment cmt"># We're out of options now, we can't detect the gem set.</span>
1863
+ 220: <span class="ruby-comment cmt"># Raise an exception so that the user knows what's going on</span>
1864
+ 221: <span class="ruby-comment cmt"># instead of having things fail in obscure ways later.</span>
1865
+ 222: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Unable to autodetect the currently active RVM gem &quot;</span> <span class="ruby-operator">+</span>
1866
+ 223: <span class="ruby-value str">&quot;set name. Please contact this program's author for support.&quot;</span>
1867
+ 224: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
1868
+ 225: <span class="ruby-keyword kw">end</span>
1869
+ 226: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
1870
+ 227: <span class="ruby-keyword kw">end</span>
1871
+ </pre>
1872
+ </div>
1873
+ </div>
1874
+ </div>
1875
+ <div class="method">
1876
+ <div class="title">
1877
+ <a name="M000067"></a><b>supports_lfence_instruction?</b>()
1878
+ </div>
1879
+ <div class="description">
1880
+ <p>
1881
+ Returns whether the OS&#8216;s main CPU architecture supports the
1882
+ x86/x86_64 lfence instruction.
1883
+ </p>
1884
+ </div>
1885
+ <div class="sourcecode">
1886
+ <p class="source-link">[ <a href="javascript:toggleSource('M000067_source')" id="l_M000067_source">show source</a> ]</p>
1887
+ <div id="M000067_source" class="dyn-source">
1888
+ <pre>
1889
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/operating_system.rb, line 144</span>
1890
+ 144: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">supports_lfence_instruction?</span>
1891
+ 145: <span class="ruby-identifier">arch</span> = <span class="ruby-identifier">cpu_architectures</span>[<span class="ruby-value">0</span>]
1892
+ 146: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">arch</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;x86_64&quot;</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">arch</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;x86&quot;</span> <span class="ruby-operator">&amp;&amp;</span>
1893
+ 147: <span class="ruby-identifier">try_compile_and_run</span>(<span class="ruby-identifier">:c</span>, <span class="ruby-value str">%Q{
1894
+ 148: int
1895
+ 149: main() {
1896
+ 150: __asm__ __volatile__ (&quot;lfence&quot; ::: &quot;memory&quot;);
1897
+ 151: return 0;
1898
+ 152: }
1899
+ 153: }</span>))
1900
+ 154: <span class="ruby-keyword kw">end</span>
1901
+ </pre>
1902
+ </div>
1903
+ </div>
1904
+ </div>
1905
+ <div class="method">
1906
+ <div class="title">
1907
+ <a name="M000066"></a><b>supports_sfence_instruction?</b>()
1908
+ </div>
1909
+ <div class="description">
1910
+ <p>
1911
+ Returns whether the OS&#8216;s main CPU architecture supports the
1912
+ x86/x86_64 sfence instruction.
1913
+ </p>
1914
+ </div>
1915
+ <div class="sourcecode">
1916
+ <p class="source-link">[ <a href="javascript:toggleSource('M000066_source')" id="l_M000066_source">show source</a> ]</p>
1917
+ <div id="M000066_source" class="dyn-source">
1918
+ <pre>
1919
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/operating_system.rb, line 129</span>
1920
+ 129: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">supports_sfence_instruction?</span>
1921
+ 130: <span class="ruby-identifier">arch</span> = <span class="ruby-identifier">cpu_architectures</span>[<span class="ruby-value">0</span>]
1922
+ 131: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">arch</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;x86_64&quot;</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">arch</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;x86&quot;</span> <span class="ruby-operator">&amp;&amp;</span>
1923
+ 132: <span class="ruby-identifier">try_compile_and_run</span>(<span class="ruby-identifier">:c</span>, <span class="ruby-value str">%Q{
1924
+ 133: int
1925
+ 134: main() {
1926
+ 135: __asm__ __volatile__ (&quot;sfence&quot; ::: &quot;memory&quot;);
1927
+ 136: return 0;
1928
+ 137: }
1929
+ 138: }</span>))
1930
+ 139: <span class="ruby-keyword kw">end</span>
1931
+ </pre>
1932
+ </div>
1933
+ </div>
1934
+ </div>
1935
+ <div class="method">
1936
+ <div class="title">
1937
+ <a name="M000080"></a><b>zlib_flags</b>()
1938
+ </div>
1939
+ <div class="sourcecode">
1940
+ <p class="source-link">[ <a href="javascript:toggleSource('M000080_source')" id="l_M000080_source">show source</a> ]</p>
1941
+ <div id="M000080_source" class="dyn-source">
1942
+ <pre>
1943
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/zlib.rb, line 29</span>
1944
+ 29: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">zlib_flags</span>
1945
+ 30: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
1946
+ 31: <span class="ruby-keyword kw">end</span>
1947
+ </pre>
1948
+ </div>
1949
+ </div>
1950
+ </div>
1951
+ <div class="method">
1952
+ <div class="title">
1953
+ <a name="M000081"></a><b>zlib_libs</b>()
1954
+ </div>
1955
+ <div class="sourcecode">
1956
+ <p class="source-link">[ <a href="javascript:toggleSource('M000081_source')" id="l_M000081_source">show source</a> ]</p>
1957
+ <div id="M000081_source" class="dyn-source">
1958
+ <pre>
1959
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/platform_info/zlib.rb, line 33</span>
1960
+ 33: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">zlib_libs</span>
1961
+ 34: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'-lz'</span>
1962
+ 35: <span class="ruby-keyword kw">end</span>
1963
+ </pre>
1964
+ </div>
1965
+ </div>
1966
+ </div>
1967
+ </div>
1968
+
1969
+ </div>
1970
+
1971
+ </body>
1972
+ </html>