cpanfile 11.4 KB
Newer Older
Luc Didry's avatar
Luc Didry committed
1 2 3
### Requirements
##

4 5
# Minimum version of Perl required.
# Notation suggested on https://metacpan.org/pod/Carton#PERL-VERSIONS
6
requires 'perl', '5.10.1';
7

Luc Didry's avatar
Luc Didry committed
8 9 10 11 12 13
# This module provides zip/unzip for archive and shared document download/upload
requires 'Archive::Zip', '>= 1.05';

# Required to run Sympa web interface
requires 'CGI', '>= 3.51';

14 15 16 17
# Note: 'CGI::Cookie' is included in CGI.

# Note: 'CGI::Util' is included in CGI.

Luc Didry's avatar
Luc Didry committed
18
# WWSympa, Sympa's web interface can run as a FastCGI (i.e. a persistent CGI). If you install this module, you will also need to install FCGI module
19 20 21
# Note: 'CGI::Fast' was included in core of Perl < 5.22 so that dependency
#   upon 'FCGI' might not be enforced.
# Note: 1.08 is at least version with CGI 3.51.
Luc Didry's avatar
Luc Didry committed
22 23 24 25 26 27 28 29
requires 'CGI::Fast', '>= 1.08';

# Used to construct various singleton classes.
requires 'Class::Singleton', '>= 1.03';

# A generic Database Driver, required by Sympa to access Subscriber information and User preferences. An additional Database Driver is required for each database type you wish to connect to.
requires 'DBI', '>= 1.48';

30 31
# Note: 'DateTime' is used by DateTime::Format::Mail.

Luc Didry's avatar
Luc Didry committed
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
# Used to decode date and time in message headers
requires 'DateTime::Format::Mail', '>= 0.28';

# Used to decode date and time in message headers
requires 'DateTime::TimeZone', '>= 0.59';

# Used to compute MD5 digests for passwords, etc.
requires 'Digest::MD5', '>= 2.00';

# Module for character encoding processing
requires 'Encode';

# WWSympa, Sympa's web interface can run as a FastCGI (i.e. a persistent CGI). If you install this module, you will also need to install the associated FastCGI frontend, e.g. mod_fcgid for Apache.
requires 'FCGI', '>= 0.67';

47 48 49 50
# Note: 'Fcntl' is core module.

# Note: 'File::Basename' is core module.

Luc Didry's avatar
Luc Didry committed
51 52 53 54 55 56 57 58 59
# Used to copy file hierarchies
requires 'File::Copy::Recursive', '>= 0.36';

# Required to perform NFS-safe file locking
requires 'File::NFSLock';

# Used to create or remove paths
requires 'File::Path', '>= 2.08';

60 61 62
# Note: 'HTML::Entities' >=3.59 is included in HTML-Parser which
#   'HTML::StripScripts::Parser' depends on.

Luc Didry's avatar
Luc Didry committed
63 64 65
# Used to compute plaindigest messages from HTML
requires 'HTML::FormatText';

66 67
# Note: 'HTML::Parser' is used by HTML::StripScripts::Parser.

Luc Didry's avatar
Luc Didry committed
68 69 70 71 72 73
# Required for XSS protection on the web interface
requires 'HTML::StripScripts::Parser', '>= 1.03';

# Used to compute plaindigest messages from HTML
requires 'HTML::TreeBuilder';

74 75 76 77 78 79
# Note: 'HTTP::Cookies' is included or depended on by libwww-perl which
#   includes 'LWP::UserAgent'.

# Note: 'HTTP::Request' is included or depended on by libwww-perl which
#   includes 'LWP::UserAgent'.

Luc Didry's avatar
Luc Didry committed
80 81 82 83 84 85 86 87 88 89
# Internal use for filehandle processing
requires 'IO::File', '>= 1.10';

# Internal use for string processing
requires 'IO::Scalar';

# Required when including members of a remote list
requires 'LWP::UserAgent';

# Set of various subroutines to handle scalar
90 91
# Note: The pure-perl version of Scalar::Util::looks_like_number() was
#   unstable. To force using XS version, check existence of 'List::Util::XS'.
Luc Didry's avatar
Luc Didry committed
92 93 94
requires 'List::Util::XS', '>= 1.20';

# Internationalization functions
95
# Note: 1.22 or later is recommended.
Luc Didry's avatar
Luc Didry committed
96 97 98
requires 'Locale::Messages', '>= 1.20';

# MHonArc is used to build Sympa web archives
99
requires 'MHonArc::UTF8';
Luc Didry's avatar
Luc Didry committed
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121

# Required to compute digest for password and emails
requires 'MIME::Base64', '>= 3.03';

# Used to encode mail body using a different charset
requires 'MIME::Charset', '>= 1.011.3';

# Required to decode/encode SMTP header fields without breaking character encoding
requires 'MIME::EncWords', '>= 1.014';

# Used to compose HTML mail from the web interface
requires 'MIME::Lite::HTML', '>= 1.23';

# Provides libraries for manipulating MIME messages
requires 'MIME::Tools', '>= 5.423';

# Used to parse or build mailboxes in message headers
requires 'Mail::Address', '>= 1.70';

# Used to check netmask within Sympa authorization scenario rules
requires 'Net::CIDR', '>= 0.16';

122 123 124
# Note: 'Scalar::Util' is included in Scalar-List-Utils which includes
#   'List::Util'.

Luc Didry's avatar
Luc Didry committed
125 126 127 128 129 130 131 132 133 134
# Used to record system log via syslog
requires 'Sys::Syslog', '>= 0.03';

# Sympa template format, used for web pages and other mail, config file templates. See http://template-toolkit.org/.
requires 'Template', '>= 2.21';

# Used to show progress bar by command line utilities
requires 'Term::ProgressBar', '>= 2.09';

# Used to fold lines in HTML mail composer and system messages, prior to Text::Wrap
IKEDA Soji's avatar
IKEDA Soji committed
135
requires 'Text::LineFold', '>= 2018.012';
Luc Didry's avatar
Luc Didry committed
136 137 138 139 140

# Used to get time with sub-second precision
requires 'Time::HiRes', '>= 1.29';

# Used to create URI containing non URI-canonical characters.
141
# Note: '3.28' is the version included in URI-1.35.
Luc Didry's avatar
Luc Didry committed
142 143
requires 'URI::Escape', '>= 3.28';

144 145 146
# Note: 'Unicode::GCString' is included in Unicode-LineBreak which includes
#   'Text::LineFold'.

Luc Didry's avatar
Luc Didry committed
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
# Used to parse list configuration templates and instanciate list families
# libxml2-devel is needed to build the Perl code
requires 'XML::LibXML', '>= 1.70';

### Recommendations
##

# Use XS version of some modules to make Sympa faster
# Used to make copy of internal data structures.
recommends 'Clone', '>= 0.31';

# Used to encrypt passwords with the Bcrypt hash algorithm
recommends 'Crypt::Eksblowfish', '>= 0.009';

# Used for configureable hardening of passwords via the password_validation sympa.conf directive.
recommends 'Data::Password', '>= 1.07';

# Useful when running command line utilities in the console not supporting UTF-8 encoding
recommends 'Encode::Locale', '>= 1.02';

167 168 169 170
# Note: 'Mail::DKIM::Signer' is included in Mail-DKIM.

# Note: 'Mail::DKIM::TextWrap' is included in Mail-DKIM.

Luc Didry's avatar
Luc Didry committed
171 172 173 174 175 176
# Required in order to use DKIM features (both for signature verification and signature insertion)
recommends 'Mail::DKIM::Verifier', '>= 0.37';

# This is required if you set a value for "dmarc_protection_mode" which requires DNS verification
recommends 'Net::DNS', '>= 0.65';

177 178 179
# This is required if you set "list_check_smtp" sympa.conf parameter, used to check existing aliases before mailing list creation.
recommends 'Net::SMTP';

Luc Didry's avatar
Luc Didry committed
180
# Normalizes file names represented by Unicode
181
# Note: Perl 5.8.1 bundles version 0.23.
182
# Note: Perl 5.10.1 bundles 1.03 (per Unicode 5.1.0).
183
recommends 'Unicode::Normalize', '>= 1.03';
Luc Didry's avatar
Luc Didry committed
184

185 186
recommends 'Unicode::UTF8', '>= 0.58';

Luc Didry's avatar
Luc Didry committed
187 188 189 190 191 192 193
### Features
##

feature 'cas', 'CAS Single Sign-On client libraries. Required if you configure Sympa to delegate web authentication to a CAS server.' => sub {
    requires 'AuthCAS', '>= 1.4';
};

194 195 196 197
feature 'Clone', 'Used to make copy of internal data structures.' => sub {
    requires 'Clone', '>= 0.31';
};

Luc Didry's avatar
Luc Didry committed
198 199 200 201
feature 'migrate-from-very-old-version', 'This module provides reversible encryption of user passwords in the database.  Useful when updating from old version with password reversible encryption, or if secure session cookies in non-SSL environments are required.' => sub {
    requires 'Crypt::CipherSaber', '>= 0.50';
};

202
feature 'Crypt::Eksblowfish', 'Used to encrypt passwords with the Bcrypt hash algorithm.' => sub {
203 204 205
    requires 'Crypt::Eksblowfish', '>= 0.009';
};

Luc Didry's avatar
Luc Didry committed
206 207 208 209 210 211 212 213 214 215
feature 'x509-auth', 'Required to extract user certificates for SSL clients and S/MIME messages.' => sub {
    requires 'Crypt::OpenSSL::X509', '>= 1.800.1';
};

feature 'smime', 'Required to sign, verify, encrypt and decrypt S/MIME messages.' => sub {
    requires 'Crypt::SMIME', '>= 0.15';
    # Required to extract user certificates for SSL clients and S/MIME messages.
    requires 'Crypt::OpenSSL::X509', '>= 1.800.1';
};

216
feature 'csv', 'CSV database driver, required if you include list members, owners or moderators from CSV file.' => sub {
Luc Didry's avatar
Luc Didry committed
217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237
    requires 'DBD::CSV', '>= 0.22';
};

feature 'odbc', 'ODBC database driver, required if you connect to a database via ODBC.' => sub {
    requires 'DBD::ODBC';
};

feature 'oracle', 'Oracle database driver, required if you connect to a Oracle database.' => sub {
    requires 'DBD::Oracle', '>= 1.02';
};

feature 'pg', 'PostgreSQL database driver, required if you connect to a PostgreSQL database.' => sub {
    # postgresql-devel and postgresql-server. PostgreSQL server should be running for make test to succeed
    requires 'DBD::Pg', '>= 2.00';
};

feature 'sqlite', 'SQLite database driver, required if you connect to a SQLite database.' => sub {
    # sqlite-devel. No need to install a server, the SQLite server code being provided with the client code.
    requires 'DBD::SQLite', '>= 1.31';
};

IKEDA Soji's avatar
IKEDA Soji committed
238 239 240
#feature 'sybase', 'Sybase database driver, required if you connect to a Sybase database.' => sub {
#    requires 'DBD::Sybase', '>= 0.90';
#};
Luc Didry's avatar
Luc Didry committed
241 242 243 244 245 246

feature 'mysql', 'MySQL / MariaDB database driver, required if you connect to a MySQL (or MariaDB) database.' => sub {
    # mysql-devel and myslq-server. MySQL (or MariaDB) server should be running for make test to succeed
    requires 'DBD::mysql', '>= 4.008';
};

247 248 249 250
feature 'Data::Password', 'Used for configureable hardening of passwords via the password_validation sympa.conf directive.' => sub {
    requires 'Data::Password', '>= 1.07';
};

251
feature 'Encode::Locale', 'Useful when running command line utilities in the console not supporting UTF-8 encoding.' => sub {
252 253 254
    requires 'Encode::Locale', '>= 1.02';
};

255
feature 'remote-list-including', 'Required when including members of a remote list.' => sub {
256
    requires 'LWP::Protocol::https';
Luc Didry's avatar
Luc Didry committed
257 258
};

259
feature 'Mail::DKIM::Verifier', 'Required in order to use DKIM features (both for signature verification and signature insertion).' => sub {
260 261 262
    requires 'Mail::DKIM::Verifier', '>= 0.37';
};

John L's avatar
John L committed
263
feature 'Mail::DKIM::ARC::Signer', 'Required in order to use ARC features to add ARC seals.' => sub {
264
    requires 'Mail::DKIM::ARC::Signer', '>= 0.55';
John L's avatar
John L committed
265 266
};

267
feature 'Net::DNS', 'This is required if you set a value for "dmarc_protection_mode" which requires DNS verification.' => sub {
268 269 270
    requires 'Net::DNS', '>= 0.65';
};

271 272 273 274 275 276 277
feature 'ipv6', 'Required to support IPv6 with client features.' => sub {
    requires 'Socket6', '>= 0.23';
    # Note: Some distributions e.g. RHEL/CentOS 6 do not provide package for
    # IO::Socket::IP.  If that is the case, use IO::Socket::INET6 instead.
    requires 'IO::Socket::IP', '>= 0.21';
};

Luc Didry's avatar
Luc Didry committed
278 279 280
feature 'ldap', 'Required to query LDAP directories. Sympa can do LDAP-based authentication ; it can also build mailing lists with LDAP-extracted members.' => sub {
    # openldap-devel is needed to build the Perl code
    requires 'Net::LDAP', '>= 0.40';
281

282
    # Note: 'Net::LDAP::Entry' and 'Net::LDAP::Util' are also
283
    #   included in perl-ldap.
Luc Didry's avatar
Luc Didry committed
284 285
};

286 287 288 289 290 291 292
feature 'ldap-secure', 'Required to query LDAP directories over TLS.' => sub {
    requires 'Net::LDAP', '>= 0.40';
    requires 'IO::Socket::SSL', '>= 0.90';

    # Note: 'Net::LDAPS' is also included in perl-ldap.
};

293 294 295 296
feature 'Net::SMTP', 'This is required if you set "list_check_smtp" sympa.conf parameter, used to check existing aliases before mailing list creation.' => sub {
    requires 'Net::SMTP';
};

297
feature 'soap', 'Required if you want to run the Sympa SOAP server that provides mailing list services via a "web service".' => sub {
Luc Didry's avatar
Luc Didry committed
298 299 300
    requires 'SOAP::Lite', '>= 0.712';
};

301
feature 'safe-unicode', 'Sanitises inputs with Unicode text.' => sub {
302
    # Note: Perl 5.8.1 bundles version 0.23.
303
    # Note: Perl 5.10.1 bundles 1.03 (per Unicode 5.1.0).
304
    requires 'Unicode::Normalize', '>= 1.03';
305
    requires 'Unicode::UTF8', '>= 0.58';
306
};
Luc Didry's avatar
Luc Didry committed
307

IKEDA Soji's avatar
IKEDA Soji committed
308 309 310 311
on 'test' => sub {
    requires 'Test::Compile';
    requires 'Test::Harness';
    requires 'Test::More';
312
    requires 'Test::Pod', '>= 1.41';
IKEDA Soji's avatar
IKEDA Soji committed
313 314
};

315 316
on 'develop' => sub {
    requires 'Test::Fixme';
IKEDA Soji's avatar
IKEDA Soji committed
317
    requires 'Test::PerlTidy', '== 20130104';
318
    requires 'Perl::Tidy', '== 20180220';
319
    requires 'Code::TidyAll';
320
};