passenger 5.0.30 → 5.1.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (131) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +30 -1
  3. data/CONTRIBUTING.md +1 -1
  4. data/CONTRIBUTORS +2 -0
  5. data/bin/passenger-install-nginx-module +18 -13
  6. data/build/agent.rb +1 -0
  7. data/build/basics.rb +1 -0
  8. data/build/cxx_tests.rb +6 -1
  9. data/build/misc.rb +3 -0
  10. data/build/packaging.rb +5 -17
  11. data/build/support/cxx_dependency_map.rb +100 -0
  12. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +4 -1
  13. data/build/test_basics.rb +12 -2
  14. data/dev/ci/run_travis.sh +6 -2
  15. data/doc/Users guide Apache.html +7 -2
  16. data/doc/Users guide Apache.txt +4 -0
  17. data/resources/templates/error_layout.css +70 -84
  18. data/resources/templates/error_layout.html.template +84 -93
  19. data/resources/templates/standalone/http.erb +17 -13
  20. data/resources/templates/standalone/server.erb +2 -1
  21. data/resources/templates/undisclosed_error.html.template +52 -51
  22. data/resources/update_check_client_cert.p12 +0 -0
  23. data/resources/update_check_client_cert.pem +89 -0
  24. data/resources/update_check_server_pubkey.pem +14 -0
  25. data/src/agent/Core/ApplicationPool/ErrorRenderer.h +15 -1
  26. data/src/agent/Core/Controller.h +3 -2
  27. data/src/agent/Core/Controller/CheckoutSession.cpp +5 -4
  28. data/src/agent/Core/Controller/ForwardResponse.cpp +1 -1
  29. data/src/agent/Core/Controller/InitRequest.cpp +2 -0
  30. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +1 -0
  31. data/src/agent/Core/Controller/Request.h +1 -0
  32. data/src/agent/Core/CoreMain.cpp +99 -2
  33. data/src/agent/Core/OptionParser.h +18 -1
  34. data/src/agent/Core/SecurityUpdateChecker.h +559 -0
  35. data/src/agent/Shared/Base.cpp +6 -1
  36. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +52 -0
  37. data/src/agent/Watchdog/InstanceDirToucher.cpp +1 -2
  38. data/src/agent/Watchdog/WatchdogMain.cpp +31 -40
  39. data/src/apache2_module/Configuration.cpp +12 -0
  40. data/src/apache2_module/Configuration.hpp +5 -0
  41. data/src/apache2_module/ConfigurationCommands.cpp +19 -19
  42. data/src/apache2_module/ConfigurationCommands.cpp.cxxcodebuilder +2 -2
  43. data/src/apache2_module/ConfigurationFields.hpp +19 -19
  44. data/src/apache2_module/ConfigurationFields.hpp.cxxcodebuilder +2 -2
  45. data/src/apache2_module/ConfigurationSetters.cpp +19 -19
  46. data/src/apache2_module/ConfigurationSetters.cpp.cxxcodebuilder +2 -2
  47. data/src/apache2_module/CreateDirConfig.cpp +19 -19
  48. data/src/apache2_module/CreateDirConfig.cpp.cxxcodebuilder +2 -2
  49. data/src/apache2_module/Hooks.cpp +10 -1
  50. data/src/apache2_module/MergeDirConfig.cpp +19 -19
  51. data/src/apache2_module/MergeDirConfig.cpp.cxxcodebuilder +2 -2
  52. data/src/apache2_module/SetHeaders.cpp +19 -19
  53. data/src/apache2_module/SetHeaders.cpp.cxxcodebuilder +2 -2
  54. data/src/cxx_supportlib/Constants.h +22 -22
  55. data/src/cxx_supportlib/Constants.h.cxxcodebuilder +4 -1
  56. data/src/cxx_supportlib/Crypto.cpp +977 -0
  57. data/src/cxx_supportlib/Crypto.h +147 -0
  58. data/src/cxx_supportlib/InstanceDirectory.h +55 -2
  59. data/src/cxx_supportlib/Utils/Curl.h +24 -10
  60. data/src/cxx_supportlib/Utils/JsonUtils.h +1 -1
  61. data/src/cxx_supportlib/oxt/detail/spin_lock_darwin.hpp +2 -0
  62. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +3 -3
  63. data/src/cxx_supportlib/vendor-modified/jsoncpp/json-forwards.h +167 -92
  64. data/src/cxx_supportlib/vendor-modified/jsoncpp/json.h +1827 -1542
  65. data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +4705 -3652
  66. data/src/cxx_supportlib/vendor-modified/libev/Changes +46 -15
  67. data/src/cxx_supportlib/vendor-modified/libev/LICENSE +1 -1
  68. data/src/cxx_supportlib/vendor-modified/libev/Makefile.in +215 -128
  69. data/src/cxx_supportlib/vendor-modified/libev/aclocal.m4 +466 -275
  70. data/src/cxx_supportlib/vendor-modified/libev/config.guess +312 -418
  71. data/src/cxx_supportlib/vendor-modified/libev/config.sub +246 -105
  72. data/src/cxx_supportlib/vendor-modified/libev/configure +276 -72
  73. data/src/cxx_supportlib/vendor-modified/libev/configure.ac +2 -1
  74. data/src/cxx_supportlib/vendor-modified/libev/depcomp +346 -185
  75. data/src/cxx_supportlib/vendor-modified/libev/ev++.h +1 -1
  76. data/src/cxx_supportlib/vendor-modified/libev/ev.c +530 -190
  77. data/src/cxx_supportlib/vendor-modified/libev/ev.h +23 -14
  78. data/src/cxx_supportlib/vendor-modified/libev/ev_epoll.c +12 -6
  79. data/src/cxx_supportlib/vendor-modified/libev/ev_kqueue.c +9 -5
  80. data/src/cxx_supportlib/vendor-modified/libev/ev_poll.c +6 -3
  81. data/src/cxx_supportlib/vendor-modified/libev/ev_port.c +8 -4
  82. data/src/cxx_supportlib/vendor-modified/libev/ev_select.c +4 -2
  83. data/src/cxx_supportlib/vendor-modified/libev/ev_vars.h +3 -2
  84. data/src/cxx_supportlib/vendor-modified/libev/ev_win32.c +3 -4
  85. data/src/cxx_supportlib/vendor-modified/libev/install-sh +433 -219
  86. data/src/cxx_supportlib/vendor-modified/libev/libev.m4 +6 -6
  87. data/src/cxx_supportlib/vendor-modified/libev/ltmain.sh +2 -2
  88. data/src/cxx_supportlib/vendor-modified/libev/missing +167 -288
  89. data/src/cxx_supportlib/vendor-modified/libev/mkinstalldirs +72 -21
  90. data/src/cxx_supportlib/vendor-modified/modp_b64.cpp +4 -106
  91. data/src/cxx_supportlib/vendor-modified/modp_b64_data.h +37 -1
  92. data/src/cxx_supportlib/vendor-modified/modp_b64_strict_aliasing.cpp +119 -0
  93. data/src/helper-scripts/node-loader.js +72 -1
  94. data/src/nginx_module/CacheLocationConfig.c +52 -19
  95. data/src/nginx_module/CacheLocationConfig.c.cxxcodebuilder +2 -2
  96. data/src/nginx_module/Configuration.c +26 -1
  97. data/src/nginx_module/Configuration.h +2 -0
  98. data/src/nginx_module/ConfigurationCommands.c +35 -19
  99. data/src/nginx_module/ConfigurationCommands.c.cxxcodebuilder +2 -2
  100. data/src/nginx_module/ContentHandler.c +1 -1
  101. data/src/nginx_module/CreateLocationConfig.c +22 -19
  102. data/src/nginx_module/CreateLocationConfig.c.cxxcodebuilder +2 -2
  103. data/src/nginx_module/LocationConfig.h +21 -19
  104. data/src/nginx_module/LocationConfig.h.cxxcodebuilder +2 -2
  105. data/src/nginx_module/MergeLocationConfig.c +25 -19
  106. data/src/nginx_module/MergeLocationConfig.c.cxxcodebuilder +2 -2
  107. data/src/nginx_module/ngx_http_passenger_module.c +8 -4
  108. data/src/ruby_supportlib/phusion_passenger.rb +9 -4
  109. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +2 -2
  110. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +1 -1
  111. data/src/ruby_supportlib/phusion_passenger/common_library.rb +13 -0
  112. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +5 -2
  113. data/src/ruby_supportlib/phusion_passenger/constants.rb +1 -1
  114. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +15 -3
  115. data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +51 -0
  116. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +7 -0
  117. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +17 -0
  118. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +4 -2
  119. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +4 -0
  120. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +5 -0
  121. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +19 -10
  122. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/base.rb +25 -0
  123. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +38 -103
  124. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +178 -0
  125. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +94 -0
  126. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/version.rb +2 -2
  127. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core.rb +2 -2
  128. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/version_data.rb +2 -2
  129. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/ruby_versions.yml.travis +5 -3
  130. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/ruby_versions.yml.travis-with-sudo +9 -7
  131. metadata +14 -4
@@ -1,12 +1,12 @@
1
1
  dnl this file is part of libev, do not make local modifications
2
2
  dnl http://software.schmorp.de/pkg/libev
3
3
 
4
- dnl libev support
5
- AC_CHECK_HEADERS(sys/inotify.h sys/epoll.h sys/event.h port.h poll.h sys/select.h sys/eventfd.h sys/signalfd.h)
4
+ dnl libev support
5
+ AC_CHECK_HEADERS(sys/inotify.h sys/epoll.h sys/event.h port.h poll.h sys/select.h sys/eventfd.h sys/signalfd.h)
6
6
 
7
7
  AC_CHECK_FUNCS(inotify_init epoll_ctl kqueue port_create poll select eventfd signalfd)
8
8
 
9
- AC_CHECK_FUNCS(clock_gettime, [], [
9
+ AC_CHECK_FUNCS(clock_gettime, [], [
10
10
  dnl on linux, try syscall wrapper first
11
11
  if test $(uname) = Linux; then
12
12
  AC_MSG_CHECKING(for clock_gettime syscall)
@@ -21,15 +21,15 @@ AC_CHECK_FUNCS(clock_gettime, [], [
21
21
  [AC_MSG_RESULT(no)])
22
22
  fi
23
23
  if test -z "$LIBEV_M4_AVOID_LIBRT" && test -z "$ac_have_clock_syscall"; then
24
- AC_CHECK_LIB(rt, clock_gettime)
24
+ AC_CHECK_LIB(rt, clock_gettime)
25
25
  unset ac_cv_func_clock_gettime
26
26
  AC_CHECK_FUNCS(clock_gettime)
27
27
  fi
28
28
  ])
29
29
 
30
- AC_CHECK_FUNCS(nanosleep, [], [
30
+ AC_CHECK_FUNCS(nanosleep, [], [
31
31
  if test -z "$LIBEV_M4_AVOID_LIBRT"; then
32
- AC_CHECK_LIB(rt, nanosleep)
32
+ AC_CHECK_LIB(rt, nanosleep)
33
33
  unset ac_cv_func_nanosleep
34
34
  AC_CHECK_FUNCS(nanosleep)
35
35
  fi
@@ -70,7 +70,7 @@
70
70
  # compiler: $LTCC
71
71
  # compiler flags: $LTCFLAGS
72
72
  # linker: $LD (gnu? $with_gnu_ld)
73
- # $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.1
73
+ # $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.11
74
74
  # automake: $automake_version
75
75
  # autoconf: $autoconf_version
76
76
  #
@@ -80,7 +80,7 @@
80
80
 
81
81
  PROGRAM=libtool
82
82
  PACKAGE=libtool
83
- VERSION="2.4.2 Debian-2.4.2-1.1"
83
+ VERSION="2.4.2 Debian-2.4.2-1.11"
84
84
  TIMESTAMP=""
85
85
  package_revision=1.3337
86
86
 
@@ -1,7 +1,10 @@
1
1
  #! /bin/sh
2
- # Common stub for a few missing GNU programs while installing.
3
- # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
4
- # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
2
+ # Common wrapper for a few potentially missing GNU programs.
3
+
4
+ scriptversion=2013-10-28.13; # UTC
5
+
6
+ # Copyright (C) 1996-2014 Free Software Foundation, Inc.
7
+ # Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
5
8
 
6
9
  # This program is free software; you can redistribute it and/or modify
7
10
  # it under the terms of the GNU General Public License as published by
@@ -14,9 +17,7 @@
14
17
  # GNU General Public License for more details.
15
18
 
16
19
  # You should have received a copy of the GNU General Public License
17
- # along with this program; if not, write to the Free Software
18
- # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19
- # 02111-1307, USA.
20
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
20
21
 
21
22
  # As a special exception to the GNU General Public License, if you
22
23
  # distribute this file as part of a program that contains a
@@ -24,313 +25,191 @@
24
25
  # the same distribution terms that you use for the rest of that program.
25
26
 
26
27
  if test $# -eq 0; then
27
- echo 1>&2 "Try \`$0 --help' for more information"
28
+ echo 1>&2 "Try '$0 --help' for more information"
28
29
  exit 1
29
30
  fi
30
31
 
31
- run=:
32
-
33
- # In the cases where this matters, `missing' is being run in the
34
- # srcdir already.
35
- if test -f configure.ac; then
36
- configure_ac=configure.ac
37
- else
38
- configure_ac=configure.in
39
- fi
32
+ case $1 in
40
33
 
41
- case "$1" in
42
- --run)
43
- # Try to run requested program, and just exit if it succeeds.
44
- run=
45
- shift
46
- "$@" && exit 0
47
- ;;
48
- esac
34
+ --is-lightweight)
35
+ # Used by our autoconf macros to check whether the available missing
36
+ # script is modern enough.
37
+ exit 0
38
+ ;;
49
39
 
50
- # If it does not exist, or fails to run (possibly an outdated version),
51
- # try to emulate it.
52
- case "$1" in
40
+ --run)
41
+ # Back-compat with the calling convention used by older automake.
42
+ shift
43
+ ;;
53
44
 
54
45
  -h|--h|--he|--hel|--help)
55
46
  echo "\
56
47
  $0 [OPTION]... PROGRAM [ARGUMENT]...
57
48
 
58
- Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
59
- error status if there is no known handling for PROGRAM.
49
+ Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
50
+ to PROGRAM being missing or too old.
60
51
 
61
52
  Options:
62
53
  -h, --help display this help and exit
63
54
  -v, --version output version information and exit
64
- --run try to run the given command, and emulate it if it fails
65
55
 
66
56
  Supported PROGRAM values:
67
- aclocal touch file \`aclocal.m4'
68
- autoconf touch file \`configure'
69
- autoheader touch file \`config.h.in'
70
- automake touch all \`Makefile.in' files
71
- bison create \`y.tab.[ch]', if possible, from existing .[ch]
72
- flex create \`lex.yy.c', if possible, from existing .c
73
- help2man touch the output file
74
- lex create \`lex.yy.c', if possible, from existing .c
75
- makeinfo touch the output file
76
- tar try tar, gnutar, gtar, then tar without non-portable flags
77
- yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
57
+ aclocal autoconf autoheader autom4te automake makeinfo
58
+ bison yacc flex lex help2man
59
+
60
+ Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
61
+ 'g' are ignored when checking the name.
62
+
63
+ Send bug reports to <bug-automake@gnu.org>."
64
+ exit $?
78
65
  ;;
79
66
 
80
67
  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
81
- echo "missing 0.4 - GNU automake"
68
+ echo "missing $scriptversion (GNU Automake)"
69
+ exit $?
82
70
  ;;
83
71
 
84
72
  -*)
85
- echo 1>&2 "$0: Unknown \`$1' option"
86
- echo 1>&2 "Try \`$0 --help' for more information"
73
+ echo 1>&2 "$0: unknown '$1' option"
74
+ echo 1>&2 "Try '$0 --help' for more information"
87
75
  exit 1
88
76
  ;;
89
77
 
90
- aclocal*)
91
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
92
- # We have it, but it failed.
93
- exit 1
94
- fi
95
-
96
- echo 1>&2 "\
97
- WARNING: \`$1' is missing on your system. You should only need it if
98
- you modified \`acinclude.m4' or \`${configure_ac}'. You might want
99
- to install the \`Automake' and \`Perl' packages. Grab them from
100
- any GNU archive site."
101
- touch aclocal.m4
102
- ;;
103
-
104
- autoconf)
105
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
106
- # We have it, but it failed.
107
- exit 1
108
- fi
109
-
110
- echo 1>&2 "\
111
- WARNING: \`$1' is missing on your system. You should only need it if
112
- you modified \`${configure_ac}'. You might want to install the
113
- \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
114
- archive site."
115
- touch configure
116
- ;;
117
-
118
- autoheader)
119
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
120
- # We have it, but it failed.
121
- exit 1
122
- fi
123
-
124
- echo 1>&2 "\
125
- WARNING: \`$1' is missing on your system. You should only need it if
126
- you modified \`acconfig.h' or \`${configure_ac}'. You might want
127
- to install the \`Autoconf' and \`GNU m4' packages. Grab them
128
- from any GNU archive site."
129
- files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
130
- test -z "$files" && files="config.h"
131
- touch_files=
132
- for f in $files; do
133
- case "$f" in
134
- *:*) touch_files="$touch_files "`echo "$f" |
135
- sed -e 's/^[^:]*://' -e 's/:.*//'`;;
136
- *) touch_files="$touch_files $f.in";;
137
- esac
138
- done
139
- touch $touch_files
140
- ;;
141
-
142
- automake*)
143
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
144
- # We have it, but it failed.
145
- exit 1
146
- fi
147
-
148
- echo 1>&2 "\
149
- WARNING: \`$1' is missing on your system. You should only need it if
150
- you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
151
- You might want to install the \`Automake' and \`Perl' packages.
152
- Grab them from any GNU archive site."
153
- find . -type f -name Makefile.am -print |
154
- sed 's/\.am$/.in/' |
155
- while read f; do touch "$f"; done
156
- ;;
157
-
158
- autom4te)
159
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
160
- # We have it, but it failed.
161
- exit 1
162
- fi
163
-
164
- echo 1>&2 "\
165
- WARNING: \`$1' is needed, and you do not seem to have it handy on your
166
- system. You might have modified some files without having the
167
- proper tools for further handling them.
168
- You can get \`$1' as part of \`Autoconf' from any GNU
169
- archive site."
170
-
171
- file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
172
- test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
173
- if test -f "$file"; then
174
- touch $file
175
- else
176
- test -z "$file" || exec >$file
177
- echo "#! /bin/sh"
178
- echo "# Created by GNU Automake missing as a replacement of"
179
- echo "# $ $@"
180
- echo "exit 0"
181
- chmod +x $file
182
- exit 1
183
- fi
184
- ;;
185
-
186
- bison|yacc)
187
- echo 1>&2 "\
188
- WARNING: \`$1' is missing on your system. You should only need it if
189
- you modified a \`.y' file. You may need the \`Bison' package
190
- in order for those modifications to take effect. You can get
191
- \`Bison' from any GNU archive site."
192
- rm -f y.tab.c y.tab.h
193
- if [ $# -ne 1 ]; then
194
- eval LASTARG="\${$#}"
195
- case "$LASTARG" in
196
- *.y)
197
- SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
198
- if [ -f "$SRCFILE" ]; then
199
- cp "$SRCFILE" y.tab.c
200
- fi
201
- SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
202
- if [ -f "$SRCFILE" ]; then
203
- cp "$SRCFILE" y.tab.h
204
- fi
205
- ;;
206
- esac
207
- fi
208
- if [ ! -f y.tab.h ]; then
209
- echo >y.tab.h
210
- fi
211
- if [ ! -f y.tab.c ]; then
212
- echo 'main() { return 0; }' >y.tab.c
213
- fi
214
- ;;
215
-
216
- lex|flex)
217
- echo 1>&2 "\
218
- WARNING: \`$1' is missing on your system. You should only need it if
219
- you modified a \`.l' file. You may need the \`Flex' package
220
- in order for those modifications to take effect. You can get
221
- \`Flex' from any GNU archive site."
222
- rm -f lex.yy.c
223
- if [ $# -ne 1 ]; then
224
- eval LASTARG="\${$#}"
225
- case "$LASTARG" in
226
- *.l)
227
- SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
228
- if [ -f "$SRCFILE" ]; then
229
- cp "$SRCFILE" lex.yy.c
230
- fi
231
- ;;
232
- esac
233
- fi
234
- if [ ! -f lex.yy.c ]; then
235
- echo 'main() { return 0; }' >lex.yy.c
236
- fi
237
- ;;
238
-
239
- help2man)
240
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
241
- # We have it, but it failed.
242
- exit 1
243
- fi
244
-
245
- echo 1>&2 "\
246
- WARNING: \`$1' is missing on your system. You should only need it if
247
- you modified a dependency of a manual page. You may need the
248
- \`Help2man' package in order for those modifications to take
249
- effect. You can get \`Help2man' from any GNU archive site."
250
-
251
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
252
- if test -z "$file"; then
253
- file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
254
- fi
255
- if [ -f "$file" ]; then
256
- touch $file
257
- else
258
- test -z "$file" || exec >$file
259
- echo ".ab help2man is required to generate this page"
260
- exit 1
261
- fi
262
- ;;
263
-
264
- makeinfo)
265
- if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
266
- # We have makeinfo, but it failed.
267
- exit 1
268
- fi
269
-
270
- echo 1>&2 "\
271
- WARNING: \`$1' is missing on your system. You should only need it if
272
- you modified a \`.texi' or \`.texinfo' file, or any other file
273
- indirectly affecting the aspect of the manual. The spurious
274
- call might also be the consequence of using a buggy \`make' (AIX,
275
- DU, IRIX). You might want to install the \`Texinfo' package or
276
- the \`GNU make' package. Grab either from any GNU archive site."
277
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
278
- if test -z "$file"; then
279
- file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
280
- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
281
- fi
282
- touch $file
283
- ;;
284
-
285
- tar)
286
- shift
287
- if test -n "$run"; then
288
- echo 1>&2 "ERROR: \`tar' requires --run"
289
- exit 1
290
- fi
291
-
292
- # We have already tried tar in the generic part.
293
- # Look for gnutar/gtar before invocation to avoid ugly error
294
- # messages.
295
- if (gnutar --version > /dev/null 2>&1); then
296
- gnutar "$@" && exit 0
297
- fi
298
- if (gtar --version > /dev/null 2>&1); then
299
- gtar "$@" && exit 0
300
- fi
301
- firstarg="$1"
302
- if shift; then
303
- case "$firstarg" in
304
- *o*)
305
- firstarg=`echo "$firstarg" | sed s/o//`
306
- tar "$firstarg" "$@" && exit 0
307
- ;;
308
- esac
309
- case "$firstarg" in
310
- *h*)
311
- firstarg=`echo "$firstarg" | sed s/h//`
312
- tar "$firstarg" "$@" && exit 0
313
- ;;
314
- esac
315
- fi
78
+ esac
316
79
 
317
- echo 1>&2 "\
318
- WARNING: I can't seem to be able to run \`tar' with the given arguments.
319
- You may want to install GNU tar or Free paxutils, or check the
320
- command line arguments."
321
- exit 1
322
- ;;
80
+ # Run the given program, remember its exit status.
81
+ "$@"; st=$?
82
+
83
+ # If it succeeded, we are done.
84
+ test $st -eq 0 && exit 0
85
+
86
+ # Also exit now if we it failed (or wasn't found), and '--version' was
87
+ # passed; such an option is passed most likely to detect whether the
88
+ # program is present and works.
89
+ case $2 in --version|--help) exit $st;; esac
90
+
91
+ # Exit code 63 means version mismatch. This often happens when the user
92
+ # tries to use an ancient version of a tool on a file that requires a
93
+ # minimum version.
94
+ if test $st -eq 63; then
95
+ msg="probably too old"
96
+ elif test $st -eq 127; then
97
+ # Program was missing.
98
+ msg="missing on your system"
99
+ else
100
+ # Program was found and executed, but failed. Give up.
101
+ exit $st
102
+ fi
323
103
 
324
- *)
325
- echo 1>&2 "\
326
- WARNING: \`$1' is needed, and you do not seem to have it handy on your
327
- system. You might have modified some files without having the
328
- proper tools for further handling them. Check the \`README' file,
329
- it often tells you about the needed prerequisites for installing
330
- this package. You may also peek at any GNU archive site, in case
331
- some other package would contain this missing \`$1' program."
332
- exit 1
104
+ perl_URL=http://www.perl.org/
105
+ flex_URL=http://flex.sourceforge.net/
106
+ gnu_software_URL=http://www.gnu.org/software
107
+
108
+ program_details ()
109
+ {
110
+ case $1 in
111
+ aclocal|automake)
112
+ echo "The '$1' program is part of the GNU Automake package:"
113
+ echo "<$gnu_software_URL/automake>"
114
+ echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
115
+ echo "<$gnu_software_URL/autoconf>"
116
+ echo "<$gnu_software_URL/m4/>"
117
+ echo "<$perl_URL>"
118
+ ;;
119
+ autoconf|autom4te|autoheader)
120
+ echo "The '$1' program is part of the GNU Autoconf package:"
121
+ echo "<$gnu_software_URL/autoconf/>"
122
+ echo "It also requires GNU m4 and Perl in order to run:"
123
+ echo "<$gnu_software_URL/m4/>"
124
+ echo "<$perl_URL>"
125
+ ;;
126
+ esac
127
+ }
128
+
129
+ give_advice ()
130
+ {
131
+ # Normalize program name to check for.
132
+ normalized_program=`echo "$1" | sed '
133
+ s/^gnu-//; t
134
+ s/^gnu//; t
135
+ s/^g//; t'`
136
+
137
+ printf '%s\n' "'$1' is $msg."
138
+
139
+ configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
140
+ case $normalized_program in
141
+ autoconf*)
142
+ echo "You should only need it if you modified 'configure.ac',"
143
+ echo "or m4 files included by it."
144
+ program_details 'autoconf'
145
+ ;;
146
+ autoheader*)
147
+ echo "You should only need it if you modified 'acconfig.h' or"
148
+ echo "$configure_deps."
149
+ program_details 'autoheader'
150
+ ;;
151
+ automake*)
152
+ echo "You should only need it if you modified 'Makefile.am' or"
153
+ echo "$configure_deps."
154
+ program_details 'automake'
155
+ ;;
156
+ aclocal*)
157
+ echo "You should only need it if you modified 'acinclude.m4' or"
158
+ echo "$configure_deps."
159
+ program_details 'aclocal'
160
+ ;;
161
+ autom4te*)
162
+ echo "You might have modified some maintainer files that require"
163
+ echo "the 'autom4te' program to be rebuilt."
164
+ program_details 'autom4te'
165
+ ;;
166
+ bison*|yacc*)
167
+ echo "You should only need it if you modified a '.y' file."
168
+ echo "You may want to install the GNU Bison package:"
169
+ echo "<$gnu_software_URL/bison/>"
170
+ ;;
171
+ lex*|flex*)
172
+ echo "You should only need it if you modified a '.l' file."
173
+ echo "You may want to install the Fast Lexical Analyzer package:"
174
+ echo "<$flex_URL>"
175
+ ;;
176
+ help2man*)
177
+ echo "You should only need it if you modified a dependency" \
178
+ "of a man page."
179
+ echo "You may want to install the GNU Help2man package:"
180
+ echo "<$gnu_software_URL/help2man/>"
333
181
  ;;
334
- esac
335
-
336
- exit 0
182
+ makeinfo*)
183
+ echo "You should only need it if you modified a '.texi' file, or"
184
+ echo "any other file indirectly affecting the aspect of the manual."
185
+ echo "You might want to install the Texinfo package:"
186
+ echo "<$gnu_software_URL/texinfo/>"
187
+ echo "The spurious makeinfo call might also be the consequence of"
188
+ echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
189
+ echo "want to install GNU make:"
190
+ echo "<$gnu_software_URL/make/>"
191
+ ;;
192
+ *)
193
+ echo "You might have modified some files without having the proper"
194
+ echo "tools for further handling them. Check the 'README' file, it"
195
+ echo "often tells you about the needed prerequisites for installing"
196
+ echo "this package. You may also peek at any GNU archive site, in"
197
+ echo "case some other package contains this missing '$1' program."
198
+ ;;
199
+ esac
200
+ }
201
+
202
+ give_advice "$1" | sed -e '1s/^/WARNING: /' \
203
+ -e '2,$s/^/ /' >&2
204
+
205
+ # Propagate the correct exit status (expected to be 127 for a program
206
+ # not found, 63 for a program that failed due to version mismatch).
207
+ exit $st
208
+
209
+ # Local variables:
210
+ # eval: (add-hook 'write-file-hooks 'time-stamp)
211
+ # time-stamp-start: "scriptversion="
212
+ # time-stamp-format: "%:y-%02m-%02d.%02H"
213
+ # time-stamp-time-zone: "UTC"
214
+ # time-stamp-end: "; # UTC"
215
+ # End: