passenger 4.0.59 → 4.0.60
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of passenger might be problematic. Click here for more details.
- checksums.yaml +8 -8
- checksums.yaml.gz.asc +7 -7
- data.tar.gz.asc +7 -7
- data/CHANGELOG +15 -0
- data/bin/passenger-install-apache2-module +2 -1
- data/bin/passenger-install-nginx-module +8 -2
- data/ext/apache2/Hooks.cpp +21 -2
- data/ext/apache2/MergeDirConfig.cpp +40 -40
- data/ext/common/ApplicationPool2/Group.h +14 -10
- data/ext/common/ApplicationPool2/Implementation.cpp +13 -7
- data/ext/common/ApplicationPool2/SmartSpawner.h +4 -1
- data/ext/common/Constants.h +1 -1
- data/ext/nginx/ContentHandler.c +17 -1
- data/lib/phusion_passenger.rb +4 -5
- data/lib/phusion_passenger/platform_info/depcheck_specs/libs.rb +4 -3
- data/lib/phusion_passenger/platform_info/openssl.rb +61 -0
- data/lib/phusion_passenger/standalone/runtime_installer.rb +27 -22
- data/packaging/debian/LICENSE.md +19 -0
- data/packaging/debian/README.md +320 -0
- data/packaging/debian/Vagrantfile +25 -0
- data/packaging/debian/build +210 -0
- data/packaging/debian/debian_specs/nginx/changelog +1989 -0
- data/packaging/debian/debian_specs/nginx/compat.erb +5 -0
- data/packaging/debian/debian_specs/nginx/conf/fastcgi.conf +25 -0
- data/packaging/debian/debian_specs/nginx/conf/fastcgi_params +24 -0
- data/packaging/debian/debian_specs/nginx/conf/koi-utf +109 -0
- data/packaging/debian/debian_specs/nginx/conf/koi-win +103 -0
- data/packaging/debian/debian_specs/nginx/conf/mime.types +89 -0
- data/packaging/debian/debian_specs/nginx/conf/nginx.conf.erb +97 -0
- data/packaging/debian/debian_specs/nginx/conf/proxy_params +4 -0
- data/packaging/debian/debian_specs/nginx/conf/scgi_params +16 -0
- data/packaging/debian/debian_specs/nginx/conf/sites-available/default.erb +93 -0
- data/packaging/debian/debian_specs/nginx/conf/snippets/fastcgi-php.conf +13 -0
- data/packaging/debian/debian_specs/nginx/conf/snippets/snakeoil.conf +5 -0
- data/packaging/debian/debian_specs/nginx/conf/uwsgi_params +16 -0
- data/packaging/debian/debian_specs/nginx/conf/win-utf +125 -0
- data/packaging/debian/debian_specs/nginx/control.erb +226 -0
- data/packaging/debian/debian_specs/nginx/copyright +196 -0
- data/packaging/debian/debian_specs/nginx/debian-full.lintian-overrides +1 -0
- data/packaging/debian/debian_specs/nginx/gbp.conf +2 -0
- data/packaging/debian/debian_specs/nginx/help/docs/fcgiwrap +14 -0
- data/packaging/debian/debian_specs/nginx/help/docs/php +119 -0
- data/packaging/debian/debian_specs/nginx/help/docs/support-irc +28 -0
- data/packaging/debian/debian_specs/nginx/help/docs/upstream +51 -0
- data/packaging/debian/debian_specs/nginx/help/examples/drupal +114 -0
- data/packaging/debian/debian_specs/nginx/help/examples/http +59 -0
- data/packaging/debian/debian_specs/nginx/help/examples/mail +30 -0
- data/packaging/debian/debian_specs/nginx/help/examples/mailman +59 -0
- data/packaging/debian/debian_specs/nginx/help/examples/nginx.conf +34 -0
- data/packaging/debian/debian_specs/nginx/help/examples/nginx_modsite +162 -0
- data/packaging/debian/debian_specs/nginx/help/examples/virtual_hosts +155 -0
- data/packaging/debian/debian_specs/nginx/help/examples/wordpress +74 -0
- data/packaging/debian/debian_specs/nginx/helpers.rb +41 -0
- data/packaging/debian/debian_specs/nginx/index-debian.html.in +32 -0
- data/packaging/debian/debian_specs/nginx/index-ubuntu.html.in +32 -0
- data/packaging/debian/debian_specs/nginx/index.html.erb +10 -0
- data/packaging/debian/debian_specs/nginx/modules/README.Modules-versions +65 -0
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/README.markdown +510 -0
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/config +5 -0
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/doc/HttpHeadersMoreModule.wiki +395 -0
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ddebug.h +119 -0
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_filter_module.c +348 -0
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_filter_module.h +80 -0
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_in.c +826 -0
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_in.h +26 -0
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_out.c +716 -0
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_headers_out.h +26 -0
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_util.c +380 -0
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/src/ngx_http_headers_more_util.h +52 -0
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/util/build.sh +32 -0
- data/packaging/debian/debian_specs/nginx/modules/headers-more-nginx-module/valgrind.suppress +215 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/ChangeLog +35 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/LICENSE +25 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/README.md +93 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/config +4 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-auth-pam/ngx_http_auth_pam_module.c +462 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/CHANGES +66 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/LICENSE +26 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/README.md +171 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/TODO.md +7 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/config +21 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-cache-purge/ngx_cache_purge_module.c +1803 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/README +29 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/config +9 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-dav-ext-module/ngx_http_dav_ext_module.c +824 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/README +139 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/README_AUTO_LIB +395 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/TODO +1 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/actions/array +10 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/actions/palloc +8 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/build +597 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/action_replacements +5 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/action_types +12 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_args +22 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_locs +25 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/conf_macros +35 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/contexts +22 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/header_files +3 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/headers +4 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/module_dependencies +5 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/modules_optional +15 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/data/prefixes +2 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/array.h +7 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/conf_cmd_basic.h +43 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/conf_merge.h +78 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/src/palloc.h +6 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/auto/text/autogen +12 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/config +49 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/core/action_macros +63 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/core/conf_cmds +62 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/modules/set_var +124 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/patches/more_logging_info +48 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/docs/upstream/list +45 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/README +12 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/http/set_var/config +4 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/examples/http/set_var/ngx_http_set_var_examples_module.c +136 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/ngx_auto_lib_core +797 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/notes/CHANGES +17 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/notes/LICENSE +24 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_array.h +113 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_cmd_basic.h +2203 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_cmd_extra.h +5423 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_conf_merge.h +227 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_config.c +72 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_config.h +98 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_includes.h +66 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/objs/ndk_palloc.h +112 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/auto_config +16 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/expose_rewrite_functions +291 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/patches/rewrite_phase_handler +19 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/md5.h +117 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/murmurhash2.c +77 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/hash/sha.h +200 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk.c +155 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk.h +58 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_buf.c +43 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_buf.h +5 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_path.c +129 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_path.h +30 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_value.c +192 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_complex_value.h +21 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_conf_file.c +396 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_conf_file.h +44 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_debug.c +72 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_debug.h +171 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_encoding.c +57 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_encoding.h +12 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_hash.c +82 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_hash.h +45 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http.c +138 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http.h +3 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_http_headers.h +35 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_log.c +3 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_log.h +165 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_parse.h +67 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_path.c +583 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_path.h +22 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_process.c +20 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_process.h +12 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_regex.c +215 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_regex.h +7 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_rewrite.c +103 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_rewrite.h +26 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_set_var.c +602 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_set_var.h +44 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string.c +434 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string.h +37 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_string_util.h +14 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_upstream_list.c +205 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_upstream_list.h +27 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_uri.c +45 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-development-kit/src/ndk_uri.h +6 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/LICENSE +25 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/README.markdown +1850 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/config +5 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/doc/HttpEchoModule.wiki +1558 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ddebug.h +109 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_echo.c +344 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_echo.h +25 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_filter.c +282 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_filter.h +15 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_foreach.c +183 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_foreach.h +16 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_handler.c +429 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_handler.h +18 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_location.c +178 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_location.h +13 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_module.c +667 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_module.h +137 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_request_info.c +452 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_request_info.h +31 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_sleep.c +208 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_sleep.h +16 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_subrequest.c +788 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_subrequest.h +19 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_timer.c +96 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_timer.h +13 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_util.c +298 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_util.h +58 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_var.c +110 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/src/ngx_http_echo_var.h +9 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/build.sh +45 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/releng +8 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/util/wiki2pod.pl +131 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-echo/valgrind.suppress +38 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/LICENCE +24 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/README +206 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/changelog.txt +54 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/config +26 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/protocol.txt +191 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_defs.c +59 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_defs.h +73 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module.c +783 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module.h +31 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_module_setup.c +361 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/ngx_http_push_types.h +120 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/memory/store.c +1180 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/memory/store.h +1 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_module_ipc.c +146 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_module_ipc.h +5 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_http_push_store.h +51 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_rwlock.c +178 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/ngx_rwlock.h +5 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/rbtree_util.c +246 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-http-push/src/store/rbtree_util.h +9 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/Changes +51 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/README.markdown +6954 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/config +363 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/doc/HttpLuaModule.wiki +5898 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/dtrace/ngx_lua_provider.d +61 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/Makefile +3 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/lib/RecvUntil.pm +138 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/misc/recv-until-pm/t/sanity.t +140 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/api/ngx_http_lua_api.h +52 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ddebug.h +82 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_accessby.c +377 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_accessby.h +22 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_api.c +77 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_args.c +537 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_args.h +20 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_bodyfilterby.c +632 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_bodyfilterby.h +31 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_cache.c +296 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_cache.h +24 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_capturefilter.c +175 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_capturefilter.h +20 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_clfactory.c +887 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_clfactory.h +22 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_common.h +478 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_config.c +67 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_config.h +19 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_consts.c +148 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_consts.h +20 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_contentby.c +369 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_contentby.h +26 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_control.c +483 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_control.h +20 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_coroutine.c +379 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_coroutine.h +23 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ctx.c +216 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ctx.h +23 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_directive.c +1081 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_directive.h +56 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_exception.c +58 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_exception.h +33 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headerfilterby.c +302 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headerfilterby.h +29 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers.c +1370 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers.h +22 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_in.c +782 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_in.h +22 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_out.c +625 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_headers_out.h +23 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initby.c +42 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initby.h +23 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initworkerby.c +320 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_initworkerby.h +25 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_log.c +300 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_log.h +20 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_logby.c +227 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_logby.h +22 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_misc.c +252 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_misc.h +20 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_module.c +924 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ndk.c +184 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_ndk.h +21 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_output.c +794 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_output.h +28 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_pcrefix.c +106 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_pcrefix.h +23 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_phase.c +94 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_phase.h +13 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_probe.h +85 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_regex.c +2468 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_regex.h +22 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_body.c +1169 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_body.h +20 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_method.c +252 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_req_method.h +19 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_rewriteby.c +351 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_rewriteby.h +22 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_script.c +538 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_script.h +86 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_setby.c +216 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_setby.h +15 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_shdict.c +1844 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_shdict.h +52 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_sleep.c +191 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_sleep.h +20 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_tcp.c +5314 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_tcp.h +156 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_udp.c +1624 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_socket_udp.h +56 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_string.c +704 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_string.h +20 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_subrequest.c +1741 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_subrequest.h +46 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_time.c +278 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_time.h +21 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_timer.c +661 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_timer.h +20 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uri.c +110 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uri.h +20 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uthread.c +283 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_uthread.h +36 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_util.c +3972 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_util.h +423 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_variable.c +499 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_variable.h +20 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_worker.c +64 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/src/ngx_http_lua_worker.h +17 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/tapset/ngx_lua.stp +5 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/build.sh +39 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/build2.sh +55 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/fix-comments +27 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/gdbinit +415 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/ngx-links +62 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/reindex +64 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/releng +8 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/retab +8 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/revim +102 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/run_test.sh +10 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/util/update-readme.sh +4 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-lua/valgrind.suppress +144 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/CHANGES +107 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/LICENSE +25 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/Makefile +8 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/README +329 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/config +3 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-upload-progress/ngx_http_uploadprogress_module.c +1774 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/README +53 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/config +3 -0
- data/packaging/debian/debian_specs/nginx/modules/nginx-upstream-fair/ngx_http_upstream_fair_module.c +1356 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/CHANGELOG.md +37 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/HACKING.md +24 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/LICENSE +20 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/README.rst +182 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/config +8 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/nginx-0.6-support.patch +23 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/ngx_http_fancyindex_module.c +1305 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.awk +52 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.h +103 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx-fancyindex/template.html +102 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/CHANGES +37 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/README +141 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/config +3 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.google_code_home_page.wiki +120 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.html +199 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/doc/README.wiki +123 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/ngx_http_subs_filter_module.c +1298 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/README +275 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/AutoInstall.pm +820 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install.pm +470 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/AutoInstall.pm +82 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Base.pm +83 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Can.pm +81 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Fetch.pm +93 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Include.pm +34 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Makefile.pm +415 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Metadata.pm +716 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/TestBase.pm +29 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/Win32.pm +64 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Module/Install/WriteAll.pm +63 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Spiffy.pm +539 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Base.pm +682 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Base/Filter.pm +341 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Builder.pm +1413 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/Builder/Module.pm +81 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/inc/Test/More.pm +735 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx.pm +315 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/LWP.pm +524 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/Socket.pm +1749 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/lib/Test/Nginx/Util.pm +874 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs.t +136 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_capture.t +32 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_fix_string.t +32 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_regex.t +108 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/t/subs_types.t +59 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/test.sh +5 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/update-readme.sh +7 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/wiki2google_code_homepage.pl +29 -0
- data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/util/wiki2pod.pl +129 -0
- data/packaging/debian/debian_specs/nginx/nginx-common.NEWS +135 -0
- data/packaging/debian/debian_specs/nginx/nginx-common.README.Debian +45 -0
- data/packaging/debian/debian_specs/nginx/nginx-common.dirs.erb +32 -0
- data/packaging/debian/debian_specs/nginx/nginx-common.install +3 -0
- data/packaging/debian/debian_specs/nginx/nginx-common.lintian-overrides +2 -0
- data/packaging/debian/debian_specs/nginx/nginx-common.manpages +1 -0
- data/packaging/debian/debian_specs/nginx/nginx-common.nginx.default +10 -0
- data/packaging/debian/debian_specs/nginx/nginx-common.nginx.init.erb +214 -0
- data/packaging/debian/debian_specs/nginx/nginx-common.nginx.logrotate +18 -0
- data/packaging/debian/debian_specs/nginx/nginx-common.nginx.service.erb +37 -0
- data/packaging/debian/debian_specs/nginx/nginx-common.postinst.erb +66 -0
- data/packaging/debian/debian_specs/nginx/nginx-common.postrm.erb +46 -0
- data/packaging/debian/debian_specs/nginx/nginx-common.preinst +47 -0
- data/packaging/debian/debian_specs/nginx/nginx-common.prerm.erb +28 -0
- data/packaging/debian/debian_specs/nginx/nginx-doc.docs +2 -0
- data/packaging/debian/debian_specs/nginx/nginx-doc.examples +1 -0
- data/packaging/debian/debian_specs/nginx/nginx-extras.install.erb +17 -0
- data/packaging/debian/debian_specs/nginx/nginx-extras.lintian-overrides +1 -0
- data/packaging/debian/debian_specs/nginx/nginx-extras.postinst.erb +44 -0
- data/packaging/debian/debian_specs/nginx/nginx-extras.prerm +22 -0
- data/packaging/debian/debian_specs/nginx/nginx.1 +47 -0
- data/packaging/debian/debian_specs/nginx/patches/perl-use-dpkg-buildflags.patch +23 -0
- data/packaging/debian/debian_specs/nginx/patches/series +1 -0
- data/packaging/debian/debian_specs/nginx/rules.erb +185 -0
- data/packaging/debian/debian_specs/nginx/source/format +1 -0
- data/packaging/debian/debian_specs/nginx/tests/control +4 -0
- data/packaging/debian/debian_specs/nginx/ufw/nginx +14 -0
- data/packaging/debian/debian_specs/nginx/upstream/signing-key.asc +34 -0
- data/packaging/debian/debian_specs/nginx/watch +3 -0
- data/packaging/debian/debian_specs/passenger/README.Debian +12 -0
- data/packaging/debian/debian_specs/passenger/changelog +316 -0
- data/packaging/debian/debian_specs/passenger/compat +1 -0
- data/packaging/debian/debian_specs/passenger/control.erb +123 -0
- data/packaging/debian/debian_specs/passenger/copyright +385 -0
- data/packaging/debian/debian_specs/passenger/helpers.rb +24 -0
- data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.install +3 -0
- data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.postinst +36 -0
- data/packaging/debian/debian_specs/passenger/libapache2-mod-passenger.prerm +15 -0
- data/packaging/debian/debian_specs/passenger/locations.ini.erb +14 -0
- data/packaging/debian/debian_specs/passenger/passenger-dev.install.erb +3 -0
- data/packaging/debian/debian_specs/passenger/passenger-doc.install.erb +2 -0
- data/packaging/debian/debian_specs/passenger/passenger.conf +6 -0
- data/packaging/debian/debian_specs/passenger/passenger.docs +4 -0
- data/packaging/debian/debian_specs/passenger/passenger.install.erb +16 -0
- data/packaging/debian/debian_specs/passenger/passenger.load +3 -0
- data/packaging/debian/debian_specs/passenger/passenger.manpages +3 -0
- data/packaging/debian/debian_specs/passenger/passenger_free_ruby.c +29 -0
- data/packaging/debian/debian_specs/passenger/passenger_ruby_utils.c +54 -0
- data/packaging/debian/debian_specs/passenger/passenger_system_ruby.c.erb +37 -0
- data/packaging/debian/debian_specs/passenger/patches/series +0 -0
- data/packaging/debian/debian_specs/passenger/rules.erb +84 -0
- data/packaging/debian/debian_specs/passenger/source/format +1 -0
- data/packaging/debian/debian_specs/passenger_enterprise/README.Debian +12 -0
- data/packaging/debian/debian_specs/passenger_enterprise/changelog +316 -0
- data/packaging/debian/debian_specs/passenger_enterprise/compat +1 -0
- data/packaging/debian/debian_specs/passenger_enterprise/control.erb +123 -0
- data/packaging/debian/debian_specs/passenger_enterprise/copyright +385 -0
- data/packaging/debian/debian_specs/passenger_enterprise/helpers.rb +2 -0
- data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.install +3 -0
- data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.postinst +36 -0
- data/packaging/debian/debian_specs/passenger_enterprise/libapache2-mod-passenger-enterprise.prerm +15 -0
- data/packaging/debian/debian_specs/passenger_enterprise/locations.ini.erb +14 -0
- data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise-dev.install.erb +3 -0
- data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise-doc.install.erb +2 -0
- data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.docs +4 -0
- data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.install.erb +14 -0
- data/packaging/debian/debian_specs/passenger_enterprise/passenger-enterprise.manpages +3 -0
- data/packaging/debian/debian_specs/passenger_enterprise/passenger.conf +6 -0
- data/packaging/debian/debian_specs/passenger_enterprise/passenger.load +3 -0
- data/packaging/debian/debian_specs/passenger_enterprise/passenger_free_ruby.c.erb +1 -0
- data/packaging/debian/debian_specs/passenger_enterprise/passenger_ruby_utils.c.erb +1 -0
- data/packaging/debian/debian_specs/passenger_enterprise/passenger_system_ruby.c.erb +1 -0
- data/packaging/debian/debian_specs/passenger_enterprise/patches/series +0 -0
- data/packaging/debian/debian_specs/passenger_enterprise/rules.erb +84 -0
- data/packaging/debian/debian_specs/passenger_enterprise/source/format +1 -0
- data/packaging/debian/docker_images/Makefile +38 -0
- data/packaging/debian/docker_images/buildbox/CONTAINER_VERSION.txt +0 -0
- data/packaging/debian/docker_images/buildbox/Dockerfile +3 -0
- data/packaging/debian/docker_images/buildbox/Gemfile +9 -0
- data/packaging/debian/docker_images/buildbox/Gemfile.lock +42 -0
- data/packaging/debian/docker_images/buildbox/install.sh +85 -0
- data/packaging/debian/docker_images/buildbox/pbuilderrc +4 -0
- data/packaging/debian/docker_images/buildbox/sudoers.conf +6 -0
- data/packaging/debian/docker_images/setup-buildbox-docker-image +7 -0
- data/packaging/debian/docker_images/setup-testbox-docker-image-debian-6 +7 -0
- data/packaging/debian/docker_images/setup-testbox-docker-image-debian-7 +7 -0
- data/packaging/debian/docker_images/setup-testbox-docker-image-debian-8 +7 -0
- data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-12.04 +7 -0
- data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-14.04 +7 -0
- data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-15.04 +7 -0
- data/packaging/debian/docker_images/setup-testbox-docker-image-ubuntu-15.10 +7 -0
- data/packaging/debian/docker_images/testbox-debian-6/Dockerfile +3 -0
- data/packaging/debian/docker_images/testbox-debian-6/Gemfile +2 -0
- data/packaging/debian/docker_images/testbox-debian-6/Gemfile.lock +23 -0
- data/packaging/debian/docker_images/testbox-debian-6/argparse.py +2374 -0
- data/packaging/debian/docker_images/testbox-debian-6/install.sh +78 -0
- data/packaging/debian/docker_images/testbox-debian-7/Dockerfile +3 -0
- data/packaging/debian/docker_images/testbox-debian-7/Gemfile +2 -0
- data/packaging/debian/docker_images/testbox-debian-7/Gemfile.lock +23 -0
- data/packaging/debian/docker_images/testbox-debian-7/install.sh +71 -0
- data/packaging/debian/docker_images/testbox-debian-8/Dockerfile +3 -0
- data/packaging/debian/docker_images/testbox-debian-8/Gemfile +2 -0
- data/packaging/debian/docker_images/testbox-debian-8/Gemfile.lock +23 -0
- data/packaging/debian/docker_images/testbox-debian-8/install.sh +70 -0
- data/packaging/debian/docker_images/testbox-ubuntu-12.04/Dockerfile +3 -0
- data/packaging/debian/docker_images/testbox-ubuntu-12.04/Gemfile +2 -0
- data/packaging/debian/docker_images/testbox-ubuntu-12.04/Gemfile.lock +23 -0
- data/packaging/debian/docker_images/testbox-ubuntu-12.04/install.sh +69 -0
- data/packaging/debian/docker_images/testbox-ubuntu-14.04/Dockerfile +3 -0
- data/packaging/debian/docker_images/testbox-ubuntu-14.04/Gemfile +2 -0
- data/packaging/debian/docker_images/testbox-ubuntu-14.04/Gemfile.lock +23 -0
- data/packaging/debian/docker_images/testbox-ubuntu-14.04/install.sh +69 -0
- data/packaging/debian/docker_images/testbox-ubuntu-15.04/Dockerfile +3 -0
- data/packaging/debian/docker_images/testbox-ubuntu-15.04/Gemfile +2 -0
- data/packaging/debian/docker_images/testbox-ubuntu-15.04/Gemfile.lock +23 -0
- data/packaging/debian/docker_images/testbox-ubuntu-15.04/install.sh +69 -0
- data/packaging/debian/docker_images/testbox-ubuntu-15.10/Dockerfile +3 -0
- data/packaging/debian/docker_images/testbox-ubuntu-15.10/Gemfile +2 -0
- data/packaging/debian/docker_images/testbox-ubuntu-15.10/Gemfile.lock +23 -0
- data/packaging/debian/docker_images/testbox-ubuntu-15.10/install.sh +69 -0
- data/packaging/debian/internal/build/Rakefile +235 -0
- data/packaging/debian/internal/build/build-passenger-orig-tarball.sh +76 -0
- data/packaging/debian/internal/build/build-source-package.rb +121 -0
- data/packaging/debian/internal/build/download-nginx-orig-tarball.sh +17 -0
- data/packaging/debian/internal/build/rakefile_support.rb +96 -0
- data/packaging/debian/internal/build/setup-environment-essentials.sh +15 -0
- data/packaging/debian/internal/build/setup-environment.sh +29 -0
- data/packaging/debian/internal/lib/distro_info.rb +82 -0
- data/packaging/debian/internal/lib/distro_info.sh +303 -0
- data/packaging/debian/internal/lib/distro_info.sh.erb +65 -0
- data/packaging/debian/internal/lib/library.sh +83 -0
- data/packaging/debian/internal/lib/preprocessor.rb +173 -0
- data/packaging/debian/internal/lib/tracking.rb +95 -0
- data/packaging/debian/internal/lib/tracking_category.rb +45 -0
- data/packaging/debian/internal/lib/tracking_database.rb +132 -0
- data/packaging/debian/internal/lib/tracking_task.rb +148 -0
- data/packaging/debian/internal/lib/utils.rb +78 -0
- data/packaging/debian/internal/publish/Rakefile +97 -0
- data/packaging/debian/internal/publish/oss-binaries.phusionpassenger.com-fingerprint.txt +1 -0
- data/packaging/debian/internal/publish/packagecloud_fingerprint.txt +1 -0
- data/packaging/debian/internal/publish/passenger_website_fingerprint.txt +1 -0
- data/packaging/debian/internal/publish/preinit.sh +7 -0
- data/packaging/debian/internal/publish/rakefile_support.rb +183 -0
- data/packaging/debian/internal/scripts/gpg_noninteractive/gpg +11 -0
- data/packaging/debian/internal/scripts/initccache.sh +35 -0
- data/packaging/debian/internal/scripts/inituidgid.sh +19 -0
- data/packaging/debian/internal/scripts/my_init +340 -0
- data/packaging/debian/internal/scripts/pin_certificates +34 -0
- data/packaging/debian/internal/scripts/regen_distro_info_script.sh +3 -0
- data/packaging/debian/internal/scripts/setup-vagrant.sh +12 -0
- data/packaging/debian/internal/scripts/setuser +31 -0
- data/packaging/debian/internal/shell/initpbuilder.sh +3 -0
- data/packaging/debian/internal/shell/preinit.sh +28 -0
- data/packaging/debian/internal/shell/sudoers.conf +1 -0
- data/packaging/debian/internal/test/apache/apache-24.conf +5 -0
- data/packaging/debian/internal/test/apache/apache-pre-24.conf +4 -0
- data/packaging/debian/internal/test/apache/vhost.conf +17 -0
- data/packaging/debian/internal/test/misc/config.json +15 -0
- data/packaging/debian/internal/test/misc/hosts.conf +4 -0
- data/packaging/debian/internal/test/misc/init.sh +25 -0
- data/packaging/debian/internal/test/misc/nodejs_test_app.js +6 -0
- data/packaging/debian/internal/test/misc/python_test_app.py +3 -0
- data/packaging/debian/internal/test/misc/ruby_test_app.rb +5 -0
- data/packaging/debian/internal/test/misc/test_support.rb +61 -0
- data/packaging/debian/internal/test/nginx/vhost.conf +23 -0
- data/packaging/debian/internal/test/system_web_server_test.rb +126 -0
- data/packaging/debian/internal/test/test.sh +141 -0
- data/packaging/debian/jenkins/publish/clear_caches.rb +48 -0
- data/packaging/debian/jenkins/publish/publish.sh +69 -0
- data/packaging/debian/jenkins/test/test.sh +63 -0
- data/packaging/debian/passenger_apt_automation.sublime-project +14 -0
- data/packaging/debian/publish +172 -0
- data/packaging/debian/shell +116 -0
- data/packaging/debian/test +142 -0
- metadata +563 -3
- metadata.gz.asc +7 -7
- data/resources/oss-binaries.phusionpassenger.com.crt +0 -208
data/packaging/debian/debian_specs/nginx/modules/ngx_http_substitutions_filter_module/test/README
ADDED
@@ -0,0 +1,275 @@
|
|
1
|
+
NAME
|
2
|
+
Test::Nginx - Testing modules for Nginx C module development
|
3
|
+
|
4
|
+
DESCRIPTION
|
5
|
+
This distribution provides two testing modules for Nginx C module
|
6
|
+
development:
|
7
|
+
|
8
|
+
* Test::Nginx::LWP
|
9
|
+
|
10
|
+
* Test::Nginx::Socket
|
11
|
+
|
12
|
+
All of them are based on Test::Base.
|
13
|
+
|
14
|
+
Usually, Test::Nginx::Socket is preferred because it works on a much
|
15
|
+
lower level and not that fault tolerant like Test::Nginx::LWP.
|
16
|
+
|
17
|
+
Also, a lot of connection hang issues (like wrong "r->main->count" value
|
18
|
+
in nginx 0.8.x) can only be captured by Test::Nginx::Socket because
|
19
|
+
Perl's LWP::UserAgent client will close the connection itself which will
|
20
|
+
conceal such issues from the testers.
|
21
|
+
|
22
|
+
Test::Nginx automatically starts an nginx instance (from the "PATH" env)
|
23
|
+
rooted at t/servroot/ and the default config template makes this nginx
|
24
|
+
instance listen on the port 1984 by default. One can specify a different
|
25
|
+
port number by setting his port number to the "TEST_NGINX_PORT"
|
26
|
+
environment, as in
|
27
|
+
|
28
|
+
export TEST_NGINX_PORT=1989
|
29
|
+
|
30
|
+
etcproxy integration
|
31
|
+
The default settings in etcproxy
|
32
|
+
(https://github.com/chaoslawful/etcproxy) makes this small TCP proxy
|
33
|
+
split the TCP packets into bytes and introduce 1 ms latency among them.
|
34
|
+
|
35
|
+
There's usually various TCP chains that we can put etcproxy into, for
|
36
|
+
example
|
37
|
+
|
38
|
+
Test::Nginx <=> nginx
|
39
|
+
$ ./etcproxy 1234 1984
|
40
|
+
|
41
|
+
Here we tell etcproxy to listen on port 1234 and to delegate all the TCP
|
42
|
+
traffic to the port 1984, the default port that Test::Nginx makes nginx
|
43
|
+
listen to.
|
44
|
+
|
45
|
+
And then we tell Test::Nginx to test against the port 1234, where
|
46
|
+
etcproxy listens on, rather than the port 1984 that nginx directly
|
47
|
+
listens on:
|
48
|
+
|
49
|
+
$ TEST_NGINX_CLIENT_PORT=1234 prove -r t/
|
50
|
+
|
51
|
+
Then the TCP chain now looks like this:
|
52
|
+
|
53
|
+
Test::Nginx <=> etcproxy (1234) <=> nginx (1984)
|
54
|
+
|
55
|
+
So etcproxy can effectively emulate extreme network conditions and
|
56
|
+
exercise "unusual" code paths in your nginx server by your tests.
|
57
|
+
|
58
|
+
In practice, *tons* of weird bugs can be captured by this setting. Even
|
59
|
+
ourselves didn't expect that this simple approach is so effective.
|
60
|
+
|
61
|
+
nginx <=> memcached
|
62
|
+
We first start the memcached server daemon on port 11211:
|
63
|
+
|
64
|
+
memcached -p 11211 -vv
|
65
|
+
|
66
|
+
and then we another etcproxy instance to listen on port 11984 like this
|
67
|
+
|
68
|
+
$ ./etcproxy 11984 11211
|
69
|
+
|
70
|
+
Then we tell our t/foo.t test script to connect to 11984 rather than
|
71
|
+
11211:
|
72
|
+
|
73
|
+
# foo.t
|
74
|
+
use Test::Nginx::Socket;
|
75
|
+
repeat_each(1);
|
76
|
+
plan tests => 2 * repeat_each() * blocks();
|
77
|
+
$ENV{TEST_NGINX_MEMCACHED_PORT} ||= 11211; # make this env take a default value
|
78
|
+
run_tests();
|
79
|
+
|
80
|
+
__DATA__
|
81
|
+
|
82
|
+
=== TEST 1: sanity
|
83
|
+
--- config
|
84
|
+
location /foo {
|
85
|
+
set $memc_cmd set;
|
86
|
+
set $memc_key foo;
|
87
|
+
set $memc_value bar;
|
88
|
+
memc_pass 127.0.0.1:$TEST_NGINX_MEMCACHED_PORT;
|
89
|
+
}
|
90
|
+
--- request
|
91
|
+
GET /foo
|
92
|
+
--- response_body_like: STORED
|
93
|
+
|
94
|
+
The Test::Nginx library will automatically expand the special macro
|
95
|
+
$TEST_NGINX_MEMCACHED_PORT to the environment with the same name. You
|
96
|
+
can define your own $TEST_NGINX_BLAH_BLAH_PORT macros as long as its
|
97
|
+
prefix is "TEST_NGINX_" and all in upper case letters.
|
98
|
+
|
99
|
+
And now we can run your test script against the etcproxy port 11984:
|
100
|
+
|
101
|
+
TEST_NGINX_MEMCACHED_PORT=11984 prove t/foo.t
|
102
|
+
|
103
|
+
Then the TCP chains look like this:
|
104
|
+
|
105
|
+
Test::Nginx <=> nginx (1984) <=> etcproxy (11984) <=> memcached (11211)
|
106
|
+
|
107
|
+
If "TEST_NGINX_MEMCACHED_PORT" is not set, then it will take the default
|
108
|
+
value 11211, which is what we want when there's no etcproxy configured:
|
109
|
+
|
110
|
+
Test::Nginx <=> nginx (1984) <=> memcached (11211)
|
111
|
+
|
112
|
+
This approach also works for proxied mysql and postgres traffic. Please
|
113
|
+
see the live test suite of ngx_drizzle and ngx_postgres for more
|
114
|
+
details.
|
115
|
+
|
116
|
+
Usually we set both "TEST_NGINX_CLIENT_PORT" and
|
117
|
+
"TEST_NGINX_MEMCACHED_PORT" (and etc) at the same time, effectively
|
118
|
+
yielding the following chain:
|
119
|
+
|
120
|
+
Test::Nginx <=> etcproxy (1234) <=> nginx (1984) <=> etcproxy (11984) <=> memcached (11211)
|
121
|
+
|
122
|
+
as long as you run two separate etcproxy instances in two separate
|
123
|
+
terminals.
|
124
|
+
|
125
|
+
It's easy to verify if the traffic actually goes through your etcproxy
|
126
|
+
server. Just check if the terminal running etcproxy emits outputs. By
|
127
|
+
default, etcproxy always dump out the incoming and outgoing data to
|
128
|
+
stdout/stderr.
|
129
|
+
|
130
|
+
valgrind integration
|
131
|
+
Test::Nginx has integrated support for valgrind (<http://valgrind.org>)
|
132
|
+
even though by default it does not bother running it with the tests
|
133
|
+
because valgrind will significantly slow down the test sutie.
|
134
|
+
|
135
|
+
First ensure that your valgrind executable visible in your PATH env. And
|
136
|
+
then run your test suite with the "TEST_NGINX_USE_VALGRIND" env set to
|
137
|
+
true:
|
138
|
+
|
139
|
+
TEST_NGINX_USE_VALGRIND=1 prove -r t
|
140
|
+
|
141
|
+
If you see false alarms, you do have a chance to skip them by defining a
|
142
|
+
./valgrind.suppress file at the root of your module source tree, as in
|
143
|
+
|
144
|
+
<https://github.com/chaoslawful/drizzle-nginx-module/blob/master/valgrin
|
145
|
+
d.suppress>
|
146
|
+
|
147
|
+
This is the suppression file for ngx_drizzle. Test::Nginx will
|
148
|
+
automatically use it to start nginx with valgrind memcheck if this file
|
149
|
+
does exist at the expected location.
|
150
|
+
|
151
|
+
If you do see a lot of "Connection refused" errors while running the
|
152
|
+
tests this way, then you probably have a slow machine (or a very busy
|
153
|
+
one) that the default waiting time is not sufficient for valgrind to
|
154
|
+
start. You can define the sleep time to a larger value by setting the
|
155
|
+
"TEST_NGINX_SLEEP" env:
|
156
|
+
|
157
|
+
TEST_NGINX_SLEEP=1 prove -r t
|
158
|
+
|
159
|
+
The time unit used here is "second". The default sleep setting just fits
|
160
|
+
my ThinkPad ("Core2Duo T9600").
|
161
|
+
|
162
|
+
Applying the no-pool patch to your nginx core is recommended while
|
163
|
+
running nginx with valgrind:
|
164
|
+
|
165
|
+
<https://github.com/shrimp/no-pool-nginx>
|
166
|
+
|
167
|
+
The nginx memory pool can prevent valgrind from spotting lots of invalid
|
168
|
+
memory reads/writes as well as certain double-free errors. We did find a
|
169
|
+
lot more memory issues in many of our modules when we first introduced
|
170
|
+
the no-pool patch in practice ;)
|
171
|
+
|
172
|
+
There's also more advanced features in Test::Nginx that have never
|
173
|
+
documented. I'd like to write more about them in the near future ;)
|
174
|
+
|
175
|
+
Nginx C modules that use Test::Nginx to drive their test suites
|
176
|
+
ngx_echo
|
177
|
+
<http://github.com/agentzh/echo-nginx-module>
|
178
|
+
|
179
|
+
ngx_headers_more
|
180
|
+
<http://github.com/agentzh/headers-more-nginx-module>
|
181
|
+
|
182
|
+
ngx_chunkin
|
183
|
+
<http://wiki.nginx.org/NginxHttpChunkinModule>
|
184
|
+
|
185
|
+
ngx_memc
|
186
|
+
<http://wiki.nginx.org/NginxHttpMemcModule>
|
187
|
+
|
188
|
+
ngx_drizzle
|
189
|
+
<http://github.com/chaoslawful/drizzle-nginx-module>
|
190
|
+
|
191
|
+
ngx_rds_json
|
192
|
+
<http://github.com/agentzh/rds-json-nginx-module>
|
193
|
+
|
194
|
+
ngx_xss
|
195
|
+
<http://github.com/agentzh/xss-nginx-module>
|
196
|
+
|
197
|
+
ngx_srcache
|
198
|
+
<http://github.com/agentzh/srcache-nginx-module>
|
199
|
+
|
200
|
+
ngx_lua
|
201
|
+
<http://github.com/chaoslawful/lua-nginx-module>
|
202
|
+
|
203
|
+
ngx_set_misc
|
204
|
+
<http://github.com/agentzh/set-misc-nginx-module>
|
205
|
+
|
206
|
+
ngx_array_var
|
207
|
+
<http://github.com/agentzh/array-var-nginx-module>
|
208
|
+
|
209
|
+
ngx_form_input
|
210
|
+
<http://github.com/calio/form-input-nginx-module>
|
211
|
+
|
212
|
+
ngx_iconv
|
213
|
+
<http://github.com/calio/iconv-nginx-module>
|
214
|
+
|
215
|
+
ngx_set_cconv
|
216
|
+
<http://github.com/liseen/set-cconv-nginx-module>
|
217
|
+
|
218
|
+
ngx_postgres
|
219
|
+
<http://github.com/FRiCKLE/ngx_postgres>
|
220
|
+
|
221
|
+
ngx_coolkit
|
222
|
+
<http://github.com/FRiCKLE/ngx_coolkit>
|
223
|
+
|
224
|
+
SOURCE REPOSITORY
|
225
|
+
This module has a Git repository on Github, which has access for all.
|
226
|
+
|
227
|
+
http://github.com/agentzh/test-nginx
|
228
|
+
|
229
|
+
If you want a commit bit, feel free to drop me a line.
|
230
|
+
|
231
|
+
AUTHORS
|
232
|
+
agentzh (章亦春) "<agentzh@gmail.com>"
|
233
|
+
|
234
|
+
Antoine BONAVITA "<antoine.bonavita@gmail.com>"
|
235
|
+
|
236
|
+
COPYRIGHT & LICENSE
|
237
|
+
Copyright (c) 2009-2011, Taobao Inc., Alibaba Group
|
238
|
+
(<http://www.taobao.com>).
|
239
|
+
|
240
|
+
Copyright (c) 2009-2011, agentzh "<agentzh@gmail.com>".
|
241
|
+
|
242
|
+
Copyright (c) 2011, Antoine Bonavita "<antoine.bonavita@gmail.com>".
|
243
|
+
|
244
|
+
This module is licensed under the terms of the BSD license.
|
245
|
+
|
246
|
+
Redistribution and use in source and binary forms, with or without
|
247
|
+
modification, are permitted provided that the following conditions are
|
248
|
+
met:
|
249
|
+
|
250
|
+
* Redistributions of source code must retain the above copyright
|
251
|
+
notice, this list of conditions and the following disclaimer.
|
252
|
+
|
253
|
+
* Redistributions in binary form must reproduce the above copyright
|
254
|
+
notice, this list of conditions and the following disclaimer in the
|
255
|
+
documentation and/or other materials provided with the distribution.
|
256
|
+
|
257
|
+
* Neither the name of the Taobao Inc. nor the names of its
|
258
|
+
contributors may be used to endorse or promote products derived from
|
259
|
+
this software without specific prior written permission.
|
260
|
+
|
261
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
262
|
+
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
263
|
+
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
264
|
+
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
265
|
+
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
266
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
267
|
+
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
268
|
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
269
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
270
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
271
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
272
|
+
|
273
|
+
SEE ALSO
|
274
|
+
Test::Nginx::LWP, Test::Nginx::Socket, Test::Base.
|
275
|
+
|
@@ -0,0 +1,820 @@
|
|
1
|
+
#line 1
|
2
|
+
package Module::AutoInstall;
|
3
|
+
|
4
|
+
use strict;
|
5
|
+
use Cwd ();
|
6
|
+
use ExtUtils::MakeMaker ();
|
7
|
+
|
8
|
+
use vars qw{$VERSION};
|
9
|
+
BEGIN {
|
10
|
+
$VERSION = '1.03';
|
11
|
+
}
|
12
|
+
|
13
|
+
# special map on pre-defined feature sets
|
14
|
+
my %FeatureMap = (
|
15
|
+
'' => 'Core Features', # XXX: deprecated
|
16
|
+
'-core' => 'Core Features',
|
17
|
+
);
|
18
|
+
|
19
|
+
# various lexical flags
|
20
|
+
my ( @Missing, @Existing, %DisabledTests, $UnderCPAN, $HasCPANPLUS );
|
21
|
+
my (
|
22
|
+
$Config, $CheckOnly, $SkipInstall, $AcceptDefault, $TestOnly, $AllDeps
|
23
|
+
);
|
24
|
+
my ( $PostambleActions, $PostambleUsed );
|
25
|
+
|
26
|
+
# See if it's a testing or non-interactive session
|
27
|
+
_accept_default( $ENV{AUTOMATED_TESTING} or ! -t STDIN );
|
28
|
+
_init();
|
29
|
+
|
30
|
+
sub _accept_default {
|
31
|
+
$AcceptDefault = shift;
|
32
|
+
}
|
33
|
+
|
34
|
+
sub missing_modules {
|
35
|
+
return @Missing;
|
36
|
+
}
|
37
|
+
|
38
|
+
sub do_install {
|
39
|
+
__PACKAGE__->install(
|
40
|
+
[
|
41
|
+
$Config
|
42
|
+
? ( UNIVERSAL::isa( $Config, 'HASH' ) ? %{$Config} : @{$Config} )
|
43
|
+
: ()
|
44
|
+
],
|
45
|
+
@Missing,
|
46
|
+
);
|
47
|
+
}
|
48
|
+
|
49
|
+
# initialize various flags, and/or perform install
|
50
|
+
sub _init {
|
51
|
+
foreach my $arg (
|
52
|
+
@ARGV,
|
53
|
+
split(
|
54
|
+
/[\s\t]+/,
|
55
|
+
$ENV{PERL_AUTOINSTALL} || $ENV{PERL_EXTUTILS_AUTOINSTALL} || ''
|
56
|
+
)
|
57
|
+
)
|
58
|
+
{
|
59
|
+
if ( $arg =~ /^--config=(.*)$/ ) {
|
60
|
+
$Config = [ split( ',', $1 ) ];
|
61
|
+
}
|
62
|
+
elsif ( $arg =~ /^--installdeps=(.*)$/ ) {
|
63
|
+
__PACKAGE__->install( $Config, @Missing = split( /,/, $1 ) );
|
64
|
+
exit 0;
|
65
|
+
}
|
66
|
+
elsif ( $arg =~ /^--default(?:deps)?$/ ) {
|
67
|
+
$AcceptDefault = 1;
|
68
|
+
}
|
69
|
+
elsif ( $arg =~ /^--check(?:deps)?$/ ) {
|
70
|
+
$CheckOnly = 1;
|
71
|
+
}
|
72
|
+
elsif ( $arg =~ /^--skip(?:deps)?$/ ) {
|
73
|
+
$SkipInstall = 1;
|
74
|
+
}
|
75
|
+
elsif ( $arg =~ /^--test(?:only)?$/ ) {
|
76
|
+
$TestOnly = 1;
|
77
|
+
}
|
78
|
+
elsif ( $arg =~ /^--all(?:deps)?$/ ) {
|
79
|
+
$AllDeps = 1;
|
80
|
+
}
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
# overrides MakeMaker's prompt() to automatically accept the default choice
|
85
|
+
sub _prompt {
|
86
|
+
goto &ExtUtils::MakeMaker::prompt unless $AcceptDefault;
|
87
|
+
|
88
|
+
my ( $prompt, $default ) = @_;
|
89
|
+
my $y = ( $default =~ /^[Yy]/ );
|
90
|
+
|
91
|
+
print $prompt, ' [', ( $y ? 'Y' : 'y' ), '/', ( $y ? 'n' : 'N' ), '] ';
|
92
|
+
print "$default\n";
|
93
|
+
return $default;
|
94
|
+
}
|
95
|
+
|
96
|
+
# the workhorse
|
97
|
+
sub import {
|
98
|
+
my $class = shift;
|
99
|
+
my @args = @_ or return;
|
100
|
+
my $core_all;
|
101
|
+
|
102
|
+
print "*** $class version " . $class->VERSION . "\n";
|
103
|
+
print "*** Checking for Perl dependencies...\n";
|
104
|
+
|
105
|
+
my $cwd = Cwd::cwd();
|
106
|
+
|
107
|
+
$Config = [];
|
108
|
+
|
109
|
+
my $maxlen = length(
|
110
|
+
(
|
111
|
+
sort { length($b) <=> length($a) }
|
112
|
+
grep { /^[^\-]/ }
|
113
|
+
map {
|
114
|
+
ref($_)
|
115
|
+
? ( ( ref($_) eq 'HASH' ) ? keys(%$_) : @{$_} )
|
116
|
+
: ''
|
117
|
+
}
|
118
|
+
map { +{@args}->{$_} }
|
119
|
+
grep { /^[^\-]/ or /^-core$/i } keys %{ +{@args} }
|
120
|
+
)[0]
|
121
|
+
);
|
122
|
+
|
123
|
+
# We want to know if we're under CPAN early to avoid prompting, but
|
124
|
+
# if we aren't going to try and install anything anyway then skip the
|
125
|
+
# check entirely since we don't want to have to load (and configure)
|
126
|
+
# an old CPAN just for a cosmetic message
|
127
|
+
|
128
|
+
$UnderCPAN = _check_lock(1) unless $SkipInstall;
|
129
|
+
|
130
|
+
while ( my ( $feature, $modules ) = splice( @args, 0, 2 ) ) {
|
131
|
+
my ( @required, @tests, @skiptests );
|
132
|
+
my $default = 1;
|
133
|
+
my $conflict = 0;
|
134
|
+
|
135
|
+
if ( $feature =~ m/^-(\w+)$/ ) {
|
136
|
+
my $option = lc($1);
|
137
|
+
|
138
|
+
# check for a newer version of myself
|
139
|
+
_update_to( $modules, @_ ) and return if $option eq 'version';
|
140
|
+
|
141
|
+
# sets CPAN configuration options
|
142
|
+
$Config = $modules if $option eq 'config';
|
143
|
+
|
144
|
+
# promote every features to core status
|
145
|
+
$core_all = ( $modules =~ /^all$/i ) and next
|
146
|
+
if $option eq 'core';
|
147
|
+
|
148
|
+
next unless $option eq 'core';
|
149
|
+
}
|
150
|
+
|
151
|
+
print "[" . ( $FeatureMap{ lc($feature) } || $feature ) . "]\n";
|
152
|
+
|
153
|
+
$modules = [ %{$modules} ] if UNIVERSAL::isa( $modules, 'HASH' );
|
154
|
+
|
155
|
+
unshift @$modules, -default => &{ shift(@$modules) }
|
156
|
+
if ( ref( $modules->[0] ) eq 'CODE' ); # XXX: bugward combatability
|
157
|
+
|
158
|
+
while ( my ( $mod, $arg ) = splice( @$modules, 0, 2 ) ) {
|
159
|
+
if ( $mod =~ m/^-(\w+)$/ ) {
|
160
|
+
my $option = lc($1);
|
161
|
+
|
162
|
+
$default = $arg if ( $option eq 'default' );
|
163
|
+
$conflict = $arg if ( $option eq 'conflict' );
|
164
|
+
@tests = @{$arg} if ( $option eq 'tests' );
|
165
|
+
@skiptests = @{$arg} if ( $option eq 'skiptests' );
|
166
|
+
|
167
|
+
next;
|
168
|
+
}
|
169
|
+
|
170
|
+
printf( "- %-${maxlen}s ...", $mod );
|
171
|
+
|
172
|
+
if ( $arg and $arg =~ /^\D/ ) {
|
173
|
+
unshift @$modules, $arg;
|
174
|
+
$arg = 0;
|
175
|
+
}
|
176
|
+
|
177
|
+
# XXX: check for conflicts and uninstalls(!) them.
|
178
|
+
my $cur = _load($mod);
|
179
|
+
if (_version_cmp ($cur, $arg) >= 0)
|
180
|
+
{
|
181
|
+
print "loaded. ($cur" . ( $arg ? " >= $arg" : '' ) . ")\n";
|
182
|
+
push @Existing, $mod => $arg;
|
183
|
+
$DisabledTests{$_} = 1 for map { glob($_) } @skiptests;
|
184
|
+
}
|
185
|
+
else {
|
186
|
+
if (not defined $cur) # indeed missing
|
187
|
+
{
|
188
|
+
print "missing." . ( $arg ? " (would need $arg)" : '' ) . "\n";
|
189
|
+
}
|
190
|
+
else
|
191
|
+
{
|
192
|
+
# no need to check $arg as _version_cmp ($cur, undef) would satisfy >= above
|
193
|
+
print "too old. ($cur < $arg)\n";
|
194
|
+
}
|
195
|
+
|
196
|
+
push @required, $mod => $arg;
|
197
|
+
}
|
198
|
+
}
|
199
|
+
|
200
|
+
next unless @required;
|
201
|
+
|
202
|
+
my $mandatory = ( $feature eq '-core' or $core_all );
|
203
|
+
|
204
|
+
if (
|
205
|
+
!$SkipInstall
|
206
|
+
and (
|
207
|
+
$CheckOnly
|
208
|
+
or ($mandatory and $UnderCPAN)
|
209
|
+
or $AllDeps
|
210
|
+
or _prompt(
|
211
|
+
qq{==> Auto-install the }
|
212
|
+
. ( @required / 2 )
|
213
|
+
. ( $mandatory ? ' mandatory' : ' optional' )
|
214
|
+
. qq{ module(s) from CPAN?},
|
215
|
+
$default ? 'y' : 'n',
|
216
|
+
) =~ /^[Yy]/
|
217
|
+
)
|
218
|
+
)
|
219
|
+
{
|
220
|
+
push( @Missing, @required );
|
221
|
+
$DisabledTests{$_} = 1 for map { glob($_) } @skiptests;
|
222
|
+
}
|
223
|
+
|
224
|
+
elsif ( !$SkipInstall
|
225
|
+
and $default
|
226
|
+
and $mandatory
|
227
|
+
and
|
228
|
+
_prompt( qq{==> The module(s) are mandatory! Really skip?}, 'n', )
|
229
|
+
=~ /^[Nn]/ )
|
230
|
+
{
|
231
|
+
push( @Missing, @required );
|
232
|
+
$DisabledTests{$_} = 1 for map { glob($_) } @skiptests;
|
233
|
+
}
|
234
|
+
|
235
|
+
else {
|
236
|
+
$DisabledTests{$_} = 1 for map { glob($_) } @tests;
|
237
|
+
}
|
238
|
+
}
|
239
|
+
|
240
|
+
if ( @Missing and not( $CheckOnly or $UnderCPAN ) ) {
|
241
|
+
require Config;
|
242
|
+
print
|
243
|
+
"*** Dependencies will be installed the next time you type '$Config::Config{make}'.\n";
|
244
|
+
|
245
|
+
# make an educated guess of whether we'll need root permission.
|
246
|
+
print " (You may need to do that as the 'root' user.)\n"
|
247
|
+
if eval '$>';
|
248
|
+
}
|
249
|
+
print "*** $class configuration finished.\n";
|
250
|
+
|
251
|
+
chdir $cwd;
|
252
|
+
|
253
|
+
# import to main::
|
254
|
+
no strict 'refs';
|
255
|
+
*{'main::WriteMakefile'} = \&Write if caller(0) eq 'main';
|
256
|
+
|
257
|
+
return (@Existing, @Missing);
|
258
|
+
}
|
259
|
+
|
260
|
+
sub _running_under {
|
261
|
+
my $thing = shift;
|
262
|
+
print <<"END_MESSAGE";
|
263
|
+
*** Since we're running under ${thing}, I'll just let it take care
|
264
|
+
of the dependency's installation later.
|
265
|
+
END_MESSAGE
|
266
|
+
return 1;
|
267
|
+
}
|
268
|
+
|
269
|
+
# Check to see if we are currently running under CPAN.pm and/or CPANPLUS;
|
270
|
+
# if we are, then we simply let it taking care of our dependencies
|
271
|
+
sub _check_lock {
|
272
|
+
return unless @Missing or @_;
|
273
|
+
|
274
|
+
my $cpan_env = $ENV{PERL5_CPAN_IS_RUNNING};
|
275
|
+
|
276
|
+
if ($ENV{PERL5_CPANPLUS_IS_RUNNING}) {
|
277
|
+
return _running_under($cpan_env ? 'CPAN' : 'CPANPLUS');
|
278
|
+
}
|
279
|
+
|
280
|
+
require CPAN;
|
281
|
+
|
282
|
+
if ($CPAN::VERSION > '1.89') {
|
283
|
+
if ($cpan_env) {
|
284
|
+
return _running_under('CPAN');
|
285
|
+
}
|
286
|
+
return; # CPAN.pm new enough, don't need to check further
|
287
|
+
}
|
288
|
+
|
289
|
+
# last ditch attempt, this -will- configure CPAN, very sorry
|
290
|
+
|
291
|
+
_load_cpan(1); # force initialize even though it's already loaded
|
292
|
+
|
293
|
+
# Find the CPAN lock-file
|
294
|
+
my $lock = MM->catfile( $CPAN::Config->{cpan_home}, ".lock" );
|
295
|
+
return unless -f $lock;
|
296
|
+
|
297
|
+
# Check the lock
|
298
|
+
local *LOCK;
|
299
|
+
return unless open(LOCK, $lock);
|
300
|
+
|
301
|
+
if (
|
302
|
+
( $^O eq 'MSWin32' ? _under_cpan() : <LOCK> == getppid() )
|
303
|
+
and ( $CPAN::Config->{prerequisites_policy} || '' ) ne 'ignore'
|
304
|
+
) {
|
305
|
+
print <<'END_MESSAGE';
|
306
|
+
|
307
|
+
*** Since we're running under CPAN, I'll just let it take care
|
308
|
+
of the dependency's installation later.
|
309
|
+
END_MESSAGE
|
310
|
+
return 1;
|
311
|
+
}
|
312
|
+
|
313
|
+
close LOCK;
|
314
|
+
return;
|
315
|
+
}
|
316
|
+
|
317
|
+
sub install {
|
318
|
+
my $class = shift;
|
319
|
+
|
320
|
+
my $i; # used below to strip leading '-' from config keys
|
321
|
+
my @config = ( map { s/^-// if ++$i; $_ } @{ +shift } );
|
322
|
+
|
323
|
+
my ( @modules, @installed );
|
324
|
+
while ( my ( $pkg, $ver ) = splice( @_, 0, 2 ) ) {
|
325
|
+
|
326
|
+
# grep out those already installed
|
327
|
+
if ( _version_cmp( _load($pkg), $ver ) >= 0 ) {
|
328
|
+
push @installed, $pkg;
|
329
|
+
}
|
330
|
+
else {
|
331
|
+
push @modules, $pkg, $ver;
|
332
|
+
}
|
333
|
+
}
|
334
|
+
|
335
|
+
return @installed unless @modules; # nothing to do
|
336
|
+
return @installed if _check_lock(); # defer to the CPAN shell
|
337
|
+
|
338
|
+
print "*** Installing dependencies...\n";
|
339
|
+
|
340
|
+
return unless _connected_to('cpan.org');
|
341
|
+
|
342
|
+
my %args = @config;
|
343
|
+
my %failed;
|
344
|
+
local *FAILED;
|
345
|
+
if ( $args{do_once} and open( FAILED, '.#autoinstall.failed' ) ) {
|
346
|
+
while (<FAILED>) { chomp; $failed{$_}++ }
|
347
|
+
close FAILED;
|
348
|
+
|
349
|
+
my @newmod;
|
350
|
+
while ( my ( $k, $v ) = splice( @modules, 0, 2 ) ) {
|
351
|
+
push @newmod, ( $k => $v ) unless $failed{$k};
|
352
|
+
}
|
353
|
+
@modules = @newmod;
|
354
|
+
}
|
355
|
+
|
356
|
+
if ( _has_cpanplus() and not $ENV{PERL_AUTOINSTALL_PREFER_CPAN} ) {
|
357
|
+
_install_cpanplus( \@modules, \@config );
|
358
|
+
} else {
|
359
|
+
_install_cpan( \@modules, \@config );
|
360
|
+
}
|
361
|
+
|
362
|
+
print "*** $class installation finished.\n";
|
363
|
+
|
364
|
+
# see if we have successfully installed them
|
365
|
+
while ( my ( $pkg, $ver ) = splice( @modules, 0, 2 ) ) {
|
366
|
+
if ( _version_cmp( _load($pkg), $ver ) >= 0 ) {
|
367
|
+
push @installed, $pkg;
|
368
|
+
}
|
369
|
+
elsif ( $args{do_once} and open( FAILED, '>> .#autoinstall.failed' ) ) {
|
370
|
+
print FAILED "$pkg\n";
|
371
|
+
}
|
372
|
+
}
|
373
|
+
|
374
|
+
close FAILED if $args{do_once};
|
375
|
+
|
376
|
+
return @installed;
|
377
|
+
}
|
378
|
+
|
379
|
+
sub _install_cpanplus {
|
380
|
+
my @modules = @{ +shift };
|
381
|
+
my @config = _cpanplus_config( @{ +shift } );
|
382
|
+
my $installed = 0;
|
383
|
+
|
384
|
+
require CPANPLUS::Backend;
|
385
|
+
my $cp = CPANPLUS::Backend->new;
|
386
|
+
my $conf = $cp->configure_object;
|
387
|
+
|
388
|
+
return unless $conf->can('conf') # 0.05x+ with "sudo" support
|
389
|
+
or _can_write($conf->_get_build('base')); # 0.04x
|
390
|
+
|
391
|
+
# if we're root, set UNINST=1 to avoid trouble unless user asked for it.
|
392
|
+
my $makeflags = $conf->get_conf('makeflags') || '';
|
393
|
+
if ( UNIVERSAL::isa( $makeflags, 'HASH' ) ) {
|
394
|
+
# 0.03+ uses a hashref here
|
395
|
+
$makeflags->{UNINST} = 1 unless exists $makeflags->{UNINST};
|
396
|
+
|
397
|
+
} else {
|
398
|
+
# 0.02 and below uses a scalar
|
399
|
+
$makeflags = join( ' ', split( ' ', $makeflags ), 'UNINST=1' )
|
400
|
+
if ( $makeflags !~ /\bUNINST\b/ and eval qq{ $> eq '0' } );
|
401
|
+
|
402
|
+
}
|
403
|
+
$conf->set_conf( makeflags => $makeflags );
|
404
|
+
$conf->set_conf( prereqs => 1 );
|
405
|
+
|
406
|
+
|
407
|
+
|
408
|
+
while ( my ( $key, $val ) = splice( @config, 0, 2 ) ) {
|
409
|
+
$conf->set_conf( $key, $val );
|
410
|
+
}
|
411
|
+
|
412
|
+
my $modtree = $cp->module_tree;
|
413
|
+
while ( my ( $pkg, $ver ) = splice( @modules, 0, 2 ) ) {
|
414
|
+
print "*** Installing $pkg...\n";
|
415
|
+
|
416
|
+
MY::preinstall( $pkg, $ver ) or next if defined &MY::preinstall;
|
417
|
+
|
418
|
+
my $success;
|
419
|
+
my $obj = $modtree->{$pkg};
|
420
|
+
|
421
|
+
if ( $obj and _version_cmp( $obj->{version}, $ver ) >= 0 ) {
|
422
|
+
my $pathname = $pkg;
|
423
|
+
$pathname =~ s/::/\\W/;
|
424
|
+
|
425
|
+
foreach my $inc ( grep { m/$pathname.pm/i } keys(%INC) ) {
|
426
|
+
delete $INC{$inc};
|
427
|
+
}
|
428
|
+
|
429
|
+
my $rv = $cp->install( modules => [ $obj->{module} ] );
|
430
|
+
|
431
|
+
if ( $rv and ( $rv->{ $obj->{module} } or $rv->{ok} ) ) {
|
432
|
+
print "*** $pkg successfully installed.\n";
|
433
|
+
$success = 1;
|
434
|
+
} else {
|
435
|
+
print "*** $pkg installation cancelled.\n";
|
436
|
+
$success = 0;
|
437
|
+
}
|
438
|
+
|
439
|
+
$installed += $success;
|
440
|
+
} else {
|
441
|
+
print << ".";
|
442
|
+
*** Could not find a version $ver or above for $pkg; skipping.
|
443
|
+
.
|
444
|
+
}
|
445
|
+
|
446
|
+
MY::postinstall( $pkg, $ver, $success ) if defined &MY::postinstall;
|
447
|
+
}
|
448
|
+
|
449
|
+
return $installed;
|
450
|
+
}
|
451
|
+
|
452
|
+
sub _cpanplus_config {
|
453
|
+
my @config = ();
|
454
|
+
while ( @_ ) {
|
455
|
+
my ($key, $value) = (shift(), shift());
|
456
|
+
if ( $key eq 'prerequisites_policy' ) {
|
457
|
+
if ( $value eq 'follow' ) {
|
458
|
+
$value = CPANPLUS::Internals::Constants::PREREQ_INSTALL();
|
459
|
+
} elsif ( $value eq 'ask' ) {
|
460
|
+
$value = CPANPLUS::Internals::Constants::PREREQ_ASK();
|
461
|
+
} elsif ( $value eq 'ignore' ) {
|
462
|
+
$value = CPANPLUS::Internals::Constants::PREREQ_IGNORE();
|
463
|
+
} else {
|
464
|
+
die "*** Cannot convert option $key = '$value' to CPANPLUS version.\n";
|
465
|
+
}
|
466
|
+
} else {
|
467
|
+
die "*** Cannot convert option $key to CPANPLUS version.\n";
|
468
|
+
}
|
469
|
+
}
|
470
|
+
return @config;
|
471
|
+
}
|
472
|
+
|
473
|
+
sub _install_cpan {
|
474
|
+
my @modules = @{ +shift };
|
475
|
+
my @config = @{ +shift };
|
476
|
+
my $installed = 0;
|
477
|
+
my %args;
|
478
|
+
|
479
|
+
_load_cpan();
|
480
|
+
require Config;
|
481
|
+
|
482
|
+
if (CPAN->VERSION < 1.80) {
|
483
|
+
# no "sudo" support, probe for writableness
|
484
|
+
return unless _can_write( MM->catfile( $CPAN::Config->{cpan_home}, 'sources' ) )
|
485
|
+
and _can_write( $Config::Config{sitelib} );
|
486
|
+
}
|
487
|
+
|
488
|
+
# if we're root, set UNINST=1 to avoid trouble unless user asked for it.
|
489
|
+
my $makeflags = $CPAN::Config->{make_install_arg} || '';
|
490
|
+
$CPAN::Config->{make_install_arg} =
|
491
|
+
join( ' ', split( ' ', $makeflags ), 'UNINST=1' )
|
492
|
+
if ( $makeflags !~ /\bUNINST\b/ and eval qq{ $> eq '0' } );
|
493
|
+
|
494
|
+
# don't show start-up info
|
495
|
+
$CPAN::Config->{inhibit_startup_message} = 1;
|
496
|
+
|
497
|
+
# set additional options
|
498
|
+
while ( my ( $opt, $arg ) = splice( @config, 0, 2 ) ) {
|
499
|
+
( $args{$opt} = $arg, next )
|
500
|
+
if $opt =~ /^force$/; # pseudo-option
|
501
|
+
$CPAN::Config->{$opt} = $arg;
|
502
|
+
}
|
503
|
+
|
504
|
+
local $CPAN::Config->{prerequisites_policy} = 'follow';
|
505
|
+
|
506
|
+
while ( my ( $pkg, $ver ) = splice( @modules, 0, 2 ) ) {
|
507
|
+
MY::preinstall( $pkg, $ver ) or next if defined &MY::preinstall;
|
508
|
+
|
509
|
+
print "*** Installing $pkg...\n";
|
510
|
+
|
511
|
+
my $obj = CPAN::Shell->expand( Module => $pkg );
|
512
|
+
my $success = 0;
|
513
|
+
|
514
|
+
if ( $obj and _version_cmp( $obj->cpan_version, $ver ) >= 0 ) {
|
515
|
+
my $pathname = $pkg;
|
516
|
+
$pathname =~ s/::/\\W/;
|
517
|
+
|
518
|
+
foreach my $inc ( grep { m/$pathname.pm/i } keys(%INC) ) {
|
519
|
+
delete $INC{$inc};
|
520
|
+
}
|
521
|
+
|
522
|
+
my $rv = $args{force} ? CPAN::Shell->force( install => $pkg )
|
523
|
+
: CPAN::Shell->install($pkg);
|
524
|
+
$rv ||= eval {
|
525
|
+
$CPAN::META->instance( 'CPAN::Distribution', $obj->cpan_file, )
|
526
|
+
->{install}
|
527
|
+
if $CPAN::META;
|
528
|
+
};
|
529
|
+
|
530
|
+
if ( $rv eq 'YES' ) {
|
531
|
+
print "*** $pkg successfully installed.\n";
|
532
|
+
$success = 1;
|
533
|
+
}
|
534
|
+
else {
|
535
|
+
print "*** $pkg installation failed.\n";
|
536
|
+
$success = 0;
|
537
|
+
}
|
538
|
+
|
539
|
+
$installed += $success;
|
540
|
+
}
|
541
|
+
else {
|
542
|
+
print << ".";
|
543
|
+
*** Could not find a version $ver or above for $pkg; skipping.
|
544
|
+
.
|
545
|
+
}
|
546
|
+
|
547
|
+
MY::postinstall( $pkg, $ver, $success ) if defined &MY::postinstall;
|
548
|
+
}
|
549
|
+
|
550
|
+
return $installed;
|
551
|
+
}
|
552
|
+
|
553
|
+
sub _has_cpanplus {
|
554
|
+
return (
|
555
|
+
$HasCPANPLUS = (
|
556
|
+
$INC{'CPANPLUS/Config.pm'}
|
557
|
+
or _load('CPANPLUS::Shell::Default')
|
558
|
+
)
|
559
|
+
);
|
560
|
+
}
|
561
|
+
|
562
|
+
# make guesses on whether we're under the CPAN installation directory
|
563
|
+
sub _under_cpan {
|
564
|
+
require Cwd;
|
565
|
+
require File::Spec;
|
566
|
+
|
567
|
+
my $cwd = File::Spec->canonpath( Cwd::cwd() );
|
568
|
+
my $cpan = File::Spec->canonpath( $CPAN::Config->{cpan_home} );
|
569
|
+
|
570
|
+
return ( index( $cwd, $cpan ) > -1 );
|
571
|
+
}
|
572
|
+
|
573
|
+
sub _update_to {
|
574
|
+
my $class = __PACKAGE__;
|
575
|
+
my $ver = shift;
|
576
|
+
|
577
|
+
return
|
578
|
+
if _version_cmp( _load($class), $ver ) >= 0; # no need to upgrade
|
579
|
+
|
580
|
+
if (
|
581
|
+
_prompt( "==> A newer version of $class ($ver) is required. Install?",
|
582
|
+
'y' ) =~ /^[Nn]/
|
583
|
+
)
|
584
|
+
{
|
585
|
+
die "*** Please install $class $ver manually.\n";
|
586
|
+
}
|
587
|
+
|
588
|
+
print << ".";
|
589
|
+
*** Trying to fetch it from CPAN...
|
590
|
+
.
|
591
|
+
|
592
|
+
# install ourselves
|
593
|
+
_load($class) and return $class->import(@_)
|
594
|
+
if $class->install( [], $class, $ver );
|
595
|
+
|
596
|
+
print << '.'; exit 1;
|
597
|
+
|
598
|
+
*** Cannot bootstrap myself. :-( Installation terminated.
|
599
|
+
.
|
600
|
+
}
|
601
|
+
|
602
|
+
# check if we're connected to some host, using inet_aton
|
603
|
+
sub _connected_to {
|
604
|
+
my $site = shift;
|
605
|
+
|
606
|
+
return (
|
607
|
+
( _load('Socket') and Socket::inet_aton($site) ) or _prompt(
|
608
|
+
qq(
|
609
|
+
*** Your host cannot resolve the domain name '$site', which
|
610
|
+
probably means the Internet connections are unavailable.
|
611
|
+
==> Should we try to install the required module(s) anyway?), 'n'
|
612
|
+
) =~ /^[Yy]/
|
613
|
+
);
|
614
|
+
}
|
615
|
+
|
616
|
+
# check if a directory is writable; may create it on demand
|
617
|
+
sub _can_write {
|
618
|
+
my $path = shift;
|
619
|
+
mkdir( $path, 0755 ) unless -e $path;
|
620
|
+
|
621
|
+
return 1 if -w $path;
|
622
|
+
|
623
|
+
print << ".";
|
624
|
+
*** You are not allowed to write to the directory '$path';
|
625
|
+
the installation may fail due to insufficient permissions.
|
626
|
+
.
|
627
|
+
|
628
|
+
if (
|
629
|
+
eval '$>' and lc(`sudo -V`) =~ /version/ and _prompt(
|
630
|
+
qq(
|
631
|
+
==> Should we try to re-execute the autoinstall process with 'sudo'?),
|
632
|
+
((-t STDIN) ? 'y' : 'n')
|
633
|
+
) =~ /^[Yy]/
|
634
|
+
)
|
635
|
+
{
|
636
|
+
|
637
|
+
# try to bootstrap ourselves from sudo
|
638
|
+
print << ".";
|
639
|
+
*** Trying to re-execute the autoinstall process with 'sudo'...
|
640
|
+
.
|
641
|
+
my $missing = join( ',', @Missing );
|
642
|
+
my $config = join( ',',
|
643
|
+
UNIVERSAL::isa( $Config, 'HASH' ) ? %{$Config} : @{$Config} )
|
644
|
+
if $Config;
|
645
|
+
|
646
|
+
return
|
647
|
+
unless system( 'sudo', $^X, $0, "--config=$config",
|
648
|
+
"--installdeps=$missing" );
|
649
|
+
|
650
|
+
print << ".";
|
651
|
+
*** The 'sudo' command exited with error! Resuming...
|
652
|
+
.
|
653
|
+
}
|
654
|
+
|
655
|
+
return _prompt(
|
656
|
+
qq(
|
657
|
+
==> Should we try to install the required module(s) anyway?), 'n'
|
658
|
+
) =~ /^[Yy]/;
|
659
|
+
}
|
660
|
+
|
661
|
+
# load a module and return the version it reports
|
662
|
+
sub _load {
|
663
|
+
my $mod = pop; # class/instance doesn't matter
|
664
|
+
my $file = $mod;
|
665
|
+
|
666
|
+
$file =~ s|::|/|g;
|
667
|
+
$file .= '.pm';
|
668
|
+
|
669
|
+
local $@;
|
670
|
+
return eval { require $file; $mod->VERSION } || ( $@ ? undef: 0 );
|
671
|
+
}
|
672
|
+
|
673
|
+
# Load CPAN.pm and it's configuration
|
674
|
+
sub _load_cpan {
|
675
|
+
return if $CPAN::VERSION and $CPAN::Config and not @_;
|
676
|
+
require CPAN;
|
677
|
+
|
678
|
+
# CPAN-1.82+ adds CPAN::Config::AUTOLOAD to redirect to
|
679
|
+
# CPAN::HandleConfig->load. CPAN reports that the redirection
|
680
|
+
# is deprecated in a warning printed at the user.
|
681
|
+
|
682
|
+
# CPAN-1.81 expects CPAN::HandleConfig->load, does not have
|
683
|
+
# $CPAN::HandleConfig::VERSION but cannot handle
|
684
|
+
# CPAN::Config->load
|
685
|
+
|
686
|
+
# Which "versions expect CPAN::Config->load?
|
687
|
+
|
688
|
+
if ( $CPAN::HandleConfig::VERSION
|
689
|
+
|| CPAN::HandleConfig->can('load')
|
690
|
+
) {
|
691
|
+
# Newer versions of CPAN have a HandleConfig module
|
692
|
+
CPAN::HandleConfig->load;
|
693
|
+
} else {
|
694
|
+
# Older versions had the load method in Config directly
|
695
|
+
CPAN::Config->load;
|
696
|
+
}
|
697
|
+
}
|
698
|
+
|
699
|
+
# compare two versions, either use Sort::Versions or plain comparison
|
700
|
+
# return values same as <=>
|
701
|
+
sub _version_cmp {
|
702
|
+
my ( $cur, $min ) = @_;
|
703
|
+
return -1 unless defined $cur; # if 0 keep comparing
|
704
|
+
return 1 unless $min;
|
705
|
+
|
706
|
+
$cur =~ s/\s+$//;
|
707
|
+
|
708
|
+
# check for version numbers that are not in decimal format
|
709
|
+
if ( ref($cur) or ref($min) or $cur =~ /v|\..*\./ or $min =~ /v|\..*\./ ) {
|
710
|
+
if ( ( $version::VERSION or defined( _load('version') )) and
|
711
|
+
version->can('new')
|
712
|
+
) {
|
713
|
+
|
714
|
+
# use version.pm if it is installed.
|
715
|
+
return version->new($cur) <=> version->new($min);
|
716
|
+
}
|
717
|
+
elsif ( $Sort::Versions::VERSION or defined( _load('Sort::Versions') ) )
|
718
|
+
{
|
719
|
+
|
720
|
+
# use Sort::Versions as the sorting algorithm for a.b.c versions
|
721
|
+
return Sort::Versions::versioncmp( $cur, $min );
|
722
|
+
}
|
723
|
+
|
724
|
+
warn "Cannot reliably compare non-decimal formatted versions.\n"
|
725
|
+
. "Please install version.pm or Sort::Versions.\n";
|
726
|
+
}
|
727
|
+
|
728
|
+
# plain comparison
|
729
|
+
local $^W = 0; # shuts off 'not numeric' bugs
|
730
|
+
return $cur <=> $min;
|
731
|
+
}
|
732
|
+
|
733
|
+
# nothing; this usage is deprecated.
|
734
|
+
sub main::PREREQ_PM { return {}; }
|
735
|
+
|
736
|
+
sub _make_args {
|
737
|
+
my %args = @_;
|
738
|
+
|
739
|
+
$args{PREREQ_PM} = { %{ $args{PREREQ_PM} || {} }, @Existing, @Missing }
|
740
|
+
if $UnderCPAN or $TestOnly;
|
741
|
+
|
742
|
+
if ( $args{EXE_FILES} and -e 'MANIFEST' ) {
|
743
|
+
require ExtUtils::Manifest;
|
744
|
+
my $manifest = ExtUtils::Manifest::maniread('MANIFEST');
|
745
|
+
|
746
|
+
$args{EXE_FILES} =
|
747
|
+
[ grep { exists $manifest->{$_} } @{ $args{EXE_FILES} } ];
|
748
|
+
}
|
749
|
+
|
750
|
+
$args{test}{TESTS} ||= 't/*.t';
|
751
|
+
$args{test}{TESTS} = join( ' ',
|
752
|
+
grep { !exists( $DisabledTests{$_} ) }
|
753
|
+
map { glob($_) } split( /\s+/, $args{test}{TESTS} ) );
|
754
|
+
|
755
|
+
my $missing = join( ',', @Missing );
|
756
|
+
my $config =
|
757
|
+
join( ',', UNIVERSAL::isa( $Config, 'HASH' ) ? %{$Config} : @{$Config} )
|
758
|
+
if $Config;
|
759
|
+
|
760
|
+
$PostambleActions = (
|
761
|
+
($missing and not $UnderCPAN)
|
762
|
+
? "\$(PERL) $0 --config=$config --installdeps=$missing"
|
763
|
+
: "\$(NOECHO) \$(NOOP)"
|
764
|
+
);
|
765
|
+
|
766
|
+
return %args;
|
767
|
+
}
|
768
|
+
|
769
|
+
# a wrapper to ExtUtils::MakeMaker::WriteMakefile
|
770
|
+
sub Write {
|
771
|
+
require Carp;
|
772
|
+
Carp::croak "WriteMakefile: Need even number of args" if @_ % 2;
|
773
|
+
|
774
|
+
if ($CheckOnly) {
|
775
|
+
print << ".";
|
776
|
+
*** Makefile not written in check-only mode.
|
777
|
+
.
|
778
|
+
return;
|
779
|
+
}
|
780
|
+
|
781
|
+
my %args = _make_args(@_);
|
782
|
+
|
783
|
+
no strict 'refs';
|
784
|
+
|
785
|
+
$PostambleUsed = 0;
|
786
|
+
local *MY::postamble = \&postamble unless defined &MY::postamble;
|
787
|
+
ExtUtils::MakeMaker::WriteMakefile(%args);
|
788
|
+
|
789
|
+
print << "." unless $PostambleUsed;
|
790
|
+
*** WARNING: Makefile written with customized MY::postamble() without
|
791
|
+
including contents from Module::AutoInstall::postamble() --
|
792
|
+
auto installation features disabled. Please contact the author.
|
793
|
+
.
|
794
|
+
|
795
|
+
return 1;
|
796
|
+
}
|
797
|
+
|
798
|
+
sub postamble {
|
799
|
+
$PostambleUsed = 1;
|
800
|
+
|
801
|
+
return <<"END_MAKE";
|
802
|
+
|
803
|
+
config :: installdeps
|
804
|
+
\t\$(NOECHO) \$(NOOP)
|
805
|
+
|
806
|
+
checkdeps ::
|
807
|
+
\t\$(PERL) $0 --checkdeps
|
808
|
+
|
809
|
+
installdeps ::
|
810
|
+
\t$PostambleActions
|
811
|
+
|
812
|
+
END_MAKE
|
813
|
+
|
814
|
+
}
|
815
|
+
|
816
|
+
1;
|
817
|
+
|
818
|
+
__END__
|
819
|
+
|
820
|
+
#line 1071
|