/[gentoo-x86]/eclass/depend.php.eclass
Gentoo

Contents of /eclass/depend.php.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.15 - (hide annotations) (download)
Sat May 13 15:39:11 2006 UTC (8 years, 3 months ago) by chtekk
Branch: MAIN
Changes since 1.14: +35 -19 lines
Add PHPCHECKNODIE option for the require_php_with_*use checks.

1 stuart 1.1 # Copyright 1999-2005 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3 chtekk 1.15 # $Header: /var/cvsroot/gentoo-x86/eclass/depend.php.eclass,v 1.14 2006/05/05 21:42:16 chtekk Exp $
4 stuart 1.1 #
5     # ========================================================================
6     #
7     # depend.php.eclass
8     # functions to allow ebuilds to depend on php4 and/or php5
9     #
10     # Author: Stuart Herbert
11 chtekk 1.7 # <stuart@gentoo.org>
12     #
13     # Author: Luca Longinotti
14     # <chtekk@gentoo.org>
15     #
16     # Maintained by the PHP Herd <php-bugs@gentoo.org>
17 stuart 1.1 #
18     # ========================================================================
19    
20 chtekk 1.12 inherit eutils phpconfutils
21 stuart 1.1
22 trapni 1.4 # PHP4-only depend functions
23 chtekk 1.12 need_php4_cli() {
24 stuart 1.1 DEPEND="${DEPEND} =virtual/php-4*"
25     RDEPEND="${RDEPEND} =virtual/php-4*"
26 chtekk 1.12 PHP_VERSION="4"
27 stuart 1.1 }
28    
29 chtekk 1.12 need_php4_httpd() {
30 stuart 1.1 DEPEND="${DEPEND} =virtual/httpd-php-4*"
31     RDEPEND="${RDEPEND} =virtual/httpd-php-4*"
32 chtekk 1.12 PHP_VERSION="4"
33 stuart 1.1 }
34    
35 chtekk 1.12 need_php4() {
36 stuart 1.1 DEPEND="${DEPEND} =dev-lang/php-4*"
37     RDEPEND="${RDEPEND} =dev-lang/php-4*"
38 chtekk 1.12 PHP_VERSION="4"
39 stuart 1.1 PHP_SHARED_CAT="php4"
40     }
41    
42     # common settings go in here
43 chtekk 1.12 uses_php4() {
44 stuart 1.1 # cache this
45     libdir=$(get_libdir)
46    
47     PHPIZE="/usr/${libdir}/php4/bin/phpize"
48     PHPCONFIG="/usr/${libdir}/php4/bin/php-config"
49     PHPCLI="/usr/${libdir}/php4/bin/php"
50     PHPCGI="/usr/${libdir}/php4/bin/php-cgi"
51     PHP_PKG="`best_version =dev-lang/php-4*`"
52     PHPPREFIX="/usr/${libdir}/php4"
53    
54     einfo
55     einfo "Using ${PHP_PKG}"
56     einfo
57     }
58    
59 trapni 1.4 # PHP5-only depend functions
60 chtekk 1.12 need_php5_cli() {
61 stuart 1.1 DEPEND="${DEPEND} =virtual/php-5*"
62     RDEPEND="${RDEPEND} =virtual/php-5*"
63 chtekk 1.12 PHP_VERSION="5"
64 stuart 1.1 }
65    
66 chtekk 1.12 need_php5_httpd() {
67 stuart 1.1 DEPEND="${DEPEND} =virtual/httpd-php-5*"
68     RDEPEND="${RDEPEND} =virtual/httpd-php-5*"
69 chtekk 1.12 PHP_VERSION="5"
70 stuart 1.1 }
71    
72 chtekk 1.12 need_php5() {
73 stuart 1.1 DEPEND="${DEPEND} =dev-lang/php-5*"
74     RDEPEND="${RDEPEND} =dev-lang/php-5*"
75 chtekk 1.12 PHP_VERSION="5"
76 stuart 1.1 PHP_SHARED_CAT="php5"
77     }
78    
79     # common settings go in here
80 chtekk 1.12 uses_php5() {
81 stuart 1.1 # cache this
82     libdir=$(get_libdir)
83    
84     PHPIZE="/usr/${libdir}/php5/bin/phpize"
85     PHPCONFIG="/usr/${libdir}/php5/bin/php-config"
86     PHPCLI="/usr/${libdir}/php5/bin/php"
87     PHPCGI="/usr/${libdir}/php5/bin/php-cgi"
88     PHP_PKG="`best_version =dev-lang/php-5*`"
89     PHPPREFIX="/usr/${libdir}/php5"
90    
91     einfo
92     einfo "Using ${PHP_PKG}"
93     einfo
94     }
95    
96 trapni 1.4 # general PHP depend functions
97 chtekk 1.12 need_php_cli() {
98 trapni 1.4 DEPEND="${DEPEND} virtual/php"
99     RDEPEND="${RDEPEND} virtual/php"
100     }
101    
102 chtekk 1.12 need_php_httpd() {
103 trapni 1.4 DEPEND="${DEPEND} virtual/httpd-php"
104     RDEPEND="${RDEPEND} virtual/httpd-php"
105     }
106    
107 chtekk 1.12 need_php() {
108 stuart 1.1 DEPEND="${DEPEND} dev-lang/php"
109     RDEPEND="${RDEPEND} dev-lang/php"
110     PHP_SHARED_CAT="php"
111     }
112    
113 chtekk 1.12 need_php_by_category() {
114 stuart 1.1 case "${CATEGORY}" in
115     dev-php) need_php ;;
116     dev-php4) need_php4 ;;
117     dev-php5) need_php5 ;;
118     *) die "I don't know which version of PHP packages in ${CATEGORY} require"
119     esac
120     }
121    
122 chtekk 1.12 # Call this function from your pkg_setup, src_compile and src_install methods
123     # if you need to know where the PHP binaries are installed and their data
124    
125     has_php() {
126     # If PHP_PKG is already set, then we have remembered our PHP settings
127     # from last time
128     if [[ -n ${PHP_PKG} ]] ; then
129     return
130     fi
131    
132     if [[ -z ${PHP_VERSION} ]] ; then
133     # Detect which PHP version we have installed
134     if has_version '=dev-lang/php-5*' ; then
135     PHP_VERSION="5"
136     elif has_version '=dev-lang/php-4*' ; then
137     PHP_VERSION="4"
138     else
139     die "Unable to find an installed dev-lang/php package"
140     fi
141     fi
142    
143     # If we get here, then PHP_VERSION tells us which version of PHP we
144     # want to use
145     uses_php${PHP_VERSION}
146     }
147    
148     # Call this function from pkg_setup if your package only works with
149 stuart 1.1 # specific SAPIs
150     #
151 chtekk 1.12 # $1 ... a list of PHP SAPI USE flags (cli, cgi, apache, apache2)
152 stuart 1.1 #
153 chtekk 1.12 # Returns if any one of the listed SAPIs have been installed
154     # Dies if none of the listed SAPIs have been installed
155 stuart 1.1
156 chtekk 1.12 require_php_sapi_from() {
157 stuart 1.1 has_php
158    
159 chtekk 1.12 local has_sapi="0"
160 stuart 1.1 local x
161    
162     einfo "Checking for compatible SAPI(s)"
163    
164     for x in $@ ; do
165 chtekk 1.13 if built_with_use =${PHP_PKG} ${x} || phpconfutils_built_with_use =${PHP_PKG} ${x} ; then
166 stuart 1.1 einfo " Discovered compatible SAPI ${x}"
167 chtekk 1.12 has_sapi="1"
168 stuart 1.1 fi
169     done
170    
171 chtekk 1.12 if [[ "${has_sapi}" == "1" ]] ; then
172 stuart 1.1 return
173     fi
174    
175     eerror
176     eerror "${PHP_PKG} needs to be re-installed with one of the following"
177     eerror "USE flags enabled:"
178     eerror
179     eerror " $@"
180     eerror
181 chtekk 1.12 die "No compatible PHP SAPIs found"
182 stuart 1.1 }
183    
184 chtekk 1.12 # Call this function from pkg_setup if your package requires PHP compiled
185 stuart 1.1 # with specific USE flags
186     #
187     # $1 ... a list of USE flags
188 swegener 1.8 #
189 chtekk 1.12 # Returns if all of the listed USE flags are enabled
190     # Dies if any of the listed USE flags are disabled
191 stuart 1.1
192 chtekk 1.12 require_php_with_use() {
193 stuart 1.1 has_php
194    
195 chtekk 1.11 local missing_use=""
196 stuart 1.1 local x
197    
198 chtekk 1.14 einfo "Checking for required PHP feature(s) ..."
199 stuart 1.1
200     for x in $@ ; do
201 chtekk 1.12 if ! built_with_use =${PHP_PKG} ${x} && ! phpconfutils_built_with_use =${PHP_PKG} ${x} ; then
202 chtekk 1.14 einfo " Discovered missing USE flag: ${x}"
203 stuart 1.1 missing_use="${missing_use} ${x}"
204     fi
205     done
206    
207 chtekk 1.15 if [[ -z "${missing_use}" ]] ; then
208     if [[ -z "${PHPCHECKNODIE}" ]] ; then
209     return
210     else
211     return 0
212     fi
213 stuart 1.1 fi
214    
215 chtekk 1.15 if [[ -z "${PHPCHECKNODIE}" ]] ; then
216     eerror
217     eerror "${PHP_PKG} needs to be re-installed with all of the following"
218     eerror "USE flags enabled:"
219     eerror
220     eerror " $@"
221     eerror
222     die "Missing PHP USE flags found"
223     else
224     return 1
225     fi
226 stuart 1.1 }
227    
228 chtekk 1.12 # Call this function from pkg_setup if your package requires PHP compiled
229     # with any of specified USE flags
230     #
231     # $1 ... a list of USE flags
232     #
233     # Returns if any of the listed USE flags are enabled
234     # Dies if all of the listed USE flags are disabled
235    
236     require_php_with_any_use() {
237     has_php
238 stuart 1.1
239 chtekk 1.12 local missing_use=""
240     local x
241 hollow 1.3
242 chtekk 1.14 einfo "Checking for required PHP feature(s) ..."
243 stuart 1.1
244 chtekk 1.12 for x in $@ ; do
245     if built_with_use =${PHP_PKG} ${x} || phpconfutils_built_with_use =${PHP_PKG} ${x} ; then
246     einfo " USE flag ${x} is enabled, ok ..."
247     return
248 stuart 1.1 else
249 chtekk 1.12 missing_use="${missing_use} ${x}"
250 stuart 1.1 fi
251 chtekk 1.12 done
252    
253 chtekk 1.15 if [[ -z "${missing_use}" ]] ; then
254     if [[ -z "${PHPCHECKNODIE}" ]] ; then
255     return
256     else
257     return 0
258     fi
259 stuart 1.1 fi
260    
261 chtekk 1.15 if [[ -z "${PHPCHECKNODIE}" ]] ; then
262     eerror
263     eerror "${PHP_PKG} needs to be re-installed with any of the following"
264     eerror "USE flags enabled:"
265     eerror
266     eerror " $@"
267     eerror
268     die "Missing PHP USE flags found"
269     else
270     return 1
271     fi
272 stuart 1.1 }
273    
274     # ========================================================================
275     # has_*() functions
276     #
277 chtekk 1.12 # These functions return 0 if the condition is satisfied, 1 otherwise
278 stuart 1.1 # ========================================================================
279    
280 chtekk 1.12 # Check if our PHP was compiled with ZTS (Zend Thread Safety) enabled
281 hollow 1.3
282 chtekk 1.12 has_zts() {
283 stuart 1.1 has_php
284    
285 chtekk 1.13 if built_with_use =${PHP_PKG} apache2 threads || phpconfutils_built_with_use =${PHP_PKG} apache2 threads ; then
286 stuart 1.1 return 0
287     fi
288    
289     return 1
290     }
291    
292 chtekk 1.12 # Check if our PHP was built with Hardened-PHP enabled
293 hollow 1.3
294 chtekk 1.12 has_hardenedphp() {
295 hollow 1.3 has_php
296    
297 chtekk 1.13 if built_with_use =${PHP_PKG} hardenedphp || phpconfutils_built_with_use =${PHP_PKG} hardenedphp ; then
298 hollow 1.3 return 0
299     fi
300    
301     return 1
302     }
303    
304 chtekk 1.12 # Check if our PHP was built with debug support enabled
305    
306     has_debug() {
307     has_php
308    
309 chtekk 1.13 if built_with_use =${PHP_PKG} debug || phpconfutils_built_with_use =${PHP_PKG} debug ; then
310 chtekk 1.12 return 0
311     fi
312    
313     return 1
314     }
315    
316 stuart 1.1 # ========================================================================
317     # require_*() functions
318     #
319 chtekk 1.12 # These functions die() if PHP was built without the required features
320 stuart 1.1 # ========================================================================
321    
322 chtekk 1.12 # Require a PHP built with PDO support (PHP5 only)
323 hollow 1.3
324 chtekk 1.12 require_pdo() {
325 stuart 1.1 has_php
326    
327 chtekk 1.12 # Do we have PHP5 installed?
328     if [[ "${PHP_VERSION}" == "4" ]] ; then
329 stuart 1.1 eerror
330 hollow 1.3 eerror "This package requires PDO."
331     eerror "PDO is only available for PHP 5."
332 chtekk 1.11 eerror "You must install =dev-lang/php-5.0* with"
333     eerror "the 'pdo-external' USE flag or you must"
334     eerror "install >=dev-lang/php-5.1 with either"
335     eerror "the 'pdo' or the 'pdo-external' USE flags"
336     eerror "turned on."
337 stuart 1.1 eerror
338     die "PHP 5 not installed"
339     fi
340    
341 chtekk 1.12 # Was PHP5 compiled with internal PDO support?
342 chtekk 1.13 if built_with_use =${PHP_PKG} pdo || phpconfutils_built_with_use =${PHP_PKG} pdo ; then
343 stuart 1.1 return
344     fi
345    
346 chtekk 1.12 # Ok, maybe PDO was built as an external extension?
347 chtekk 1.13 if ( built_with_use =${PHP_PKG} pdo-external || phpconfutils_built_with_use =${PHP_PKG} pdo-external ) && has_version 'dev-php5/pecl-pdo' ; then
348 stuart 1.1 return
349     fi
350    
351 chtekk 1.12 # Ok, as last resort, it suffices that pecl-pdo was installed to have PDO support
352     if has_version 'dev-php5/pecl-pdo' ; then
353 stuart 1.1 return
354     fi
355    
356 chtekk 1.12 # If we get here, then we have no PDO support
357 stuart 1.1 eerror
358     eerror "No PDO extension for PHP found."
359     eerror "Please note that PDO only exists for PHP 5."
360     eerror "Please install a PDO extension for PHP 5,"
361 chtekk 1.11 eerror "you must install =dev-lang/php-5.0* with"
362 stuart 1.1 eerror "the 'pdo-external' USE flag or you must"
363 chtekk 1.11 eerror "install >=dev-lang/php-5.1 with either"
364 stuart 1.1 eerror "the 'pdo' or the 'pdo-external' USE flags"
365     eerror "turned on."
366     eerror
367 chtekk 1.12 die "No PDO extension for PHP 5 found"
368 stuart 1.1 }
369    
370 chtekk 1.12 # Determines which installed PHP version has the CLI SAPI enabled,
371     # useful for PEAR stuff, or anything which needs to run PHP
372     # scripts depending on the CLI SAPI
373 stuart 1.1
374 chtekk 1.12 require_php_cli() {
375     # If PHP_PKG is set, then we have remembered our PHP settings
376 stuart 1.1 # from last time
377 chtekk 1.11 if [[ -n ${PHP_PKG} ]] ; then
378 stuart 1.1 return
379     fi
380    
381 chtekk 1.12 local PHP_PACKAGE_FOUND=""
382    
383     # Detect which PHP version we have installed
384 chtekk 1.6 if has_version '=dev-lang/php-4*' ; then
385 chtekk 1.12 PHP_PACKAGE_FOUND="1"
386 chtekk 1.6 pkg="`best_version '=dev-lang/php-4*'`"
387 chtekk 1.13 if built_with_use =${pkg} cli || phpconfutils_built_with_use =${pkg} cli ; then
388 chtekk 1.12 PHP_VERSION="4"
389 chtekk 1.6 fi
390 sebastian 1.10 fi
391    
392     if has_version '=dev-lang/php-5*' ; then
393 chtekk 1.12 PHP_PACKAGE_FOUND="1"
394 stuart 1.1 pkg="`best_version '=dev-lang/php-5*'`"
395 chtekk 1.13 if built_with_use =${pkg} cli || phpconfutils_built_with_use =${pkg} cli ; then
396 chtekk 1.12 PHP_VERSION="5"
397 stuart 1.1 fi
398 sebastian 1.10 fi
399    
400 chtekk 1.11 if [[ -z ${PHP_PACKAGE_FOUND} ]] ; then
401 stuart 1.1 die "Unable to find an installed dev-lang/php package"
402     fi
403    
404 chtekk 1.11 if [[ -z ${PHP_VERSION} ]] ; then
405 stuart 1.1 die "No PHP CLI installed"
406     fi
407    
408 chtekk 1.12 # If we get here, then PHP_VERSION tells us which version of PHP we
409 stuart 1.1 # want to use
410 hollow 1.3 uses_php${PHP_VERSION}
411     }
412    
413 chtekk 1.12 # Determines which installed PHP version has the CGI SAPI enabled,
414 hollow 1.3 # useful for anything which needs to run PHP scripts
415 chtekk 1.12 # depending on the CGI SAPI
416 hollow 1.3
417 chtekk 1.12 require_php_cgi() {
418     # If PHP_PKG is set, then we have remembered our PHP settings
419 hollow 1.3 # from last time
420 chtekk 1.11 if [[ -n ${PHP_PKG} ]] ; then
421 hollow 1.3 return
422     fi
423    
424 chtekk 1.12 local PHP_PACKAGE_FOUND=""
425    
426     # Detect which PHP version we have installed
427 chtekk 1.6 if has_version '=dev-lang/php-4*' ; then
428 chtekk 1.12 PHP_PACKAGE_FOUND="1"
429 chtekk 1.6 pkg="`best_version '=dev-lang/php-4*'`"
430 chtekk 1.13 if built_with_use =${pkg} cgi || phpconfutils_built_with_use =${pkg} cgi ; then
431 chtekk 1.12 PHP_VERSION="4"
432 chtekk 1.6 fi
433 sebastian 1.9 fi
434    
435     if has_version '=dev-lang/php-5*' ; then
436 chtekk 1.12 PHP_PACKAGE_FOUND="1"
437 hollow 1.3 pkg="`best_version '=dev-lang/php-5*'`"
438 chtekk 1.13 if built_with_use =${pkg} cgi || phpconfutils_built_with_use =${pkg} cgi ; then
439 chtekk 1.12 PHP_VERSION="5"
440 hollow 1.3 fi
441 sebastian 1.9 fi
442 chtekk 1.11
443     if [[ -z ${PHP_PACKAGE_FOUND} ]] ; then
444 hollow 1.3 die "Unable to find an installed dev-lang/php package"
445     fi
446    
447 chtekk 1.11 if [[ -z ${PHP_VERSION} ]] ; then
448 hollow 1.3 die "No PHP CGI installed"
449     fi
450    
451 chtekk 1.12 # If we get here, then PHP_VERSION tells us which version of PHP we
452 hollow 1.3 # want to use
453 stuart 1.1 uses_php${PHP_VERSION}
454     }
455    
456 chtekk 1.12 # Require a PHP built with SQLite support
457 stuart 1.1
458 chtekk 1.12 require_sqlite() {
459 stuart 1.1 has_php
460    
461 chtekk 1.12 # Has our PHP been built with SQLite support?
462     if built_with_use =${PHP_PKG} sqlite || phpconfutils_built_with_use =${PHP_PKG} sqlite ; then
463 stuart 1.1 return
464     fi
465    
466 chtekk 1.12 # Do we have pecl-sqlite installed for PHP4?
467     if [[ "${PHP_VERSION}" == "4" ]] ; then
468     if has_version 'dev-php4/pecl-sqlite' ; then
469 stuart 1.1 return
470     fi
471     fi
472    
473 chtekk 1.12 # If we get here, then we don't have any SQLite support for PHP installed
474 stuart 1.1 eerror
475 chtekk 1.12 eerror "No SQLite extension for PHP found."
476     eerror "Please install an SQLite extension for PHP,"
477 stuart 1.1 eerror "this is done best by simply adding the"
478     eerror "'sqlite' USE flag when emerging dev-lang/php."
479     eerror
480 chtekk 1.12 die "No SQLite extension for PHP found"
481 stuart 1.1 }
482 hollow 1.3
483 chtekk 1.12 # Require a PHP built with GD support
484 chtekk 1.6
485 chtekk 1.12 require_gd() {
486 hollow 1.3 has_php
487    
488 chtekk 1.12 # Do we have the internal GD support installed?
489     if built_with_use =${PHP_PKG} gd || phpconfutils_built_with_use =${PHP_PKG} gd ; then
490 hollow 1.3 return
491     fi
492    
493 chtekk 1.12 # Ok, maybe GD was built using the external library support?
494     if built_with_use =${PHP_PKG} gd-external || phpconfutils_built_with_use =${PHP_PKG} gd-external ; then
495 hollow 1.3 return
496     fi
497    
498 chtekk 1.12 # If we get here, then we have no GD support
499 hollow 1.3 eerror
500     eerror "No GD support for PHP found."
501     eerror "Please install the GD support for PHP,"
502     eerror "you must install dev-lang/php with either"
503     eerror "the 'gd' or the 'gd-external' USE flags"
504     eerror "turned on."
505     eerror
506     die "No GD support found for PHP"
507     }
508 chtekk 1.6
509     # ========================================================================
510     # Misc functions
511     #
512     # These functions provide miscellaneous checks and functionality.
513     # ========================================================================
514    
515 chtekk 1.12 # Executes some checks needed when installing a binary PHP extension
516 chtekk 1.6
517     php_binary_extension() {
518     has_php
519    
520 chtekk 1.12 local PUSE_ENABLED=""
521    
522     # Binary extensions do not support the change of PHP
523 chtekk 1.6 # API version, so they can't be installed when USE flags
524     # are enabled wich change the PHP API version
525    
526 chtekk 1.13 if built_with_use =${PHP_PKG} hardenedphp || phpconfutils_built_with_use =${PHP_PKG} hardenedphp ; then
527 chtekk 1.6 eerror
528     eerror "You cannot install binary PHP extensions"
529     eerror "when the 'hardenedphp' USE flag is enabled!"
530     eerror "Please reemerge dev-lang/php with the"
531     eerror "'hardenedphp' USE flag turned off."
532     eerror
533 chtekk 1.12 PUSE_ENABLED="1"
534 chtekk 1.6 fi
535    
536 chtekk 1.13 if built_with_use =${PHP_PKG} debug || phpconfutils_built_with_use =${PHP_PKG} debug ; then
537 chtekk 1.6 eerror
538     eerror "You cannot install binary PHP extensions"
539     eerror "when the 'debug' USE flag is enabled!"
540     eerror "Please reemerge dev-lang/php with the"
541     eerror "'debug' USE flag turned off."
542     eerror
543 chtekk 1.12 PUSE_ENABLED="1"
544     fi
545    
546     if [[ -n ${PUSE_ENABLED} ]] ; then
547     die "'hardenedphp' and/or 'debug' USE flags turned on"
548 chtekk 1.6 fi
549     }
550    
551 chtekk 1.12 # Alternative to dodoc function for use in our PHP eclasses and
552     # ebuilds.
553     # Stored here because depend.php gets always sourced everywhere
554     # in the PHP ebuilds and eclasses.
555     # It simply is dodoc with a changed path to the docs.
556     # NOTE: no support for docinto is given!
557 chtekk 1.6
558 chtekk 1.12 dodoc-php() {
559     if [[ $# -lt 1 ]] ; then
560 chtekk 1.6 echo "$0: at least one argument needed" 1>&2
561     exit 1
562     fi
563    
564     phpdocdir="${D}/usr/share/doc/${CATEGORY}/${PF}/"
565    
566 chtekk 1.12 if [[ ! -d "${phpdocdir}" ]] ; then
567 chtekk 1.6 install -d "${phpdocdir}"
568     fi
569    
570 chtekk 1.12 for x in $@ ; do
571     if [[ -s "${x}" ]] ; then
572 chtekk 1.6 install -m0644 "${x}" "${phpdocdir}"
573     gzip -f -9 "${phpdocdir}/${x##*/}"
574 chtekk 1.12 elif [[ ! -e "${x}" ]] ; then
575 chtekk 1.6 echo "dodoc-php: ${x} does not exist" 1>&2
576     fi
577     done
578     }

  ViewVC Help
Powered by ViewVC 1.1.20