3 # check-perl-modules.pl -- check for modules used by Girocco
4 # Copyright (c) 2013,2019,2020,2021 Kyle J. McKay. All rights reserved.
5 # License GPLv2+: GNU GPL version 2 or later.
6 # www.gnu.org/licenses/gpl-2.0.html
7 # This is free software: you are free to change and redistribute it.
8 # There is NO WARRANTY, to the extent permitted by law.
10 # Attempt to require all the modules used by Perl anywhere in Girocco and
11 # report the failures. There is special handling for the SHA-1 functions
12 # and some other optional modules.
14 # These ones are not errors
16 eval {require Proc
::ProcessTable
; 1} or
17 print "Note: missing Perl module Proc::ProcessTable, deprecated ".
18 "toolbox/kill-stale-daemons.pl will not function\n";
20 eval {require HTML
::Entities
; 1} or
21 print "Warning: missing Perl module HTML::Entities, gitweb ".
22 "email obfuscation will be partially disabled\n";
24 eval {require HTML
::TagCloud
; 1} or
25 print "Warning: missing Perl module HTML::TagCloud, optional gitweb tag cloud ".
26 "display will be all one size\n";
28 eval {require HTTP
::Date
; 1} ||
29 eval {require Time
::ParseDate
; 1} or
30 print "Warning: missing Perl module HTTP::Date and Time::ParseDate, gitweb ".
31 "will always return true to if-modified-since feed requests\n";
33 # These ones are required
37 # For SHA1, any of Digest::SHA, Digest::SHA1 or Digest::SHA::PurePerl will do
39 eval {require Digest
::SHA
; 1} ||
40 eval {require Digest
::SHA1
; 1} ||
41 eval {require Digest
::SHA
::PurePerl
; 1} or
43 print STDERR
"One of the Perl modules Digest::SHA or Digest::SHA1 or "
44 . "Digest::SHA::PurePerl must be available\n";
75 Time
::HiRes
=> [qw(gettimeofday tv_interval)],
78 foreach my $module (@modules) {
80 $imports = " qw(".join(' ', @
{$imports{$module}}).")"
82 eval "use $module$imports; 1" or
83 ++$errors, print STDERR
"Error: required Perl module $module$imports not found\n";
86 eval {require LWP
::UserAgent
; 1} or
87 print STDERR
"Note: Perl module LWP::UserAgent ".
88 "is required by the ref-change notification mechanism\n";
91 eval {require FCGI
; 1} or $fcgi_ok = 0,
92 print STDERR
"Note: missing Perl module FCGI used for efficient ".
93 "gitweb.cgi FastCGI implementation\n";
95 eval {require CGI
::Fast
; 1} or $cgifast_ok = 0,
96 print STDERR
"Note: missing Perl module CGI::Fast used for efficient ".
97 "gitweb.cgi FastCGI implementation\n";
99 $mods .= "FCGI" unless $fcgi_ok;
100 $mods .= ($mods?
" and ":"")."CGI::Fast" unless $cgifast_ok;
102 $pl = "s" unless $fcgi_ok || $cgifast_ok;
104 print STDERR
"Warning: gitweb.cgi running in FastCGI mode will use a pure Perl ".
105 "implementation of FastCGI\n".
106 "Warning: install Perl module$pl $mods for a more efficient gitweb.cgi ".
107 "FastCGI implementation\n";
108 eval {require FCGI
::ProcManager
; 1} or
109 print STDERR
"Note: gitweb.cgi running in FastCGI mode requires ".
110 "missing FCGI::ProcManager to support the --nproc option\n";
112 !$errors or print STDERR
"\nFatal: required perl modules are missing!\n\n";
114 exit($errors ?
1 : 0);