cpanfile 12.1 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.16.0';
7

8
9
10
# Used to zip/unzip for archive and shared document download/upload.
# Note: Some environments not providing 'Archive::Zip::Simple*' modules may
#   use a memory-consuming module 'Archive::Zip' for the alternative.
IKEDA Soji's avatar
IKEDA Soji committed
11
requires 'Archive::Zip::SimpleUnzip', '>= 0.024';
12
13
requires 'Archive::Zip::SimpleZip', '>= 0.021';
#requires 'Archive::Zip', '>= 1.05';
Luc Didry's avatar
Luc Didry committed
14
15
16
17

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

18
19
20
21
# Note: 'CGI::Cookie' is included in CGI.

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

Luc Didry's avatar
Luc Didry committed
22
# 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
23
24
25
# 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
26
27
28
29
30
31
32
33
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';

34
35
# Note: 'DateTime' is used by DateTime::Format::Mail.

Luc Didry's avatar
Luc Didry committed
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 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';

51
52
53
54
# Note: 'Fcntl' is core module.

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

Luc Didry's avatar
Luc Didry committed
55
56
57
58
59
60
61
62
63
# 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';

IKEDA Soji's avatar
IKEDA Soji committed
64
65
66
# Used to parse arguments of command line tools
requires 'Getopt::Long', '>= 2.24';

67
68
69
# Note: 'HTML::Entities' >=3.59 is included in HTML-Parser which
#   'HTML::StripScripts::Parser' depends on.

Luc Didry's avatar
Luc Didry committed
70
71
72
# Used to compute plaindigest messages from HTML
requires 'HTML::FormatText';

73
74
# Note: 'HTML::Parser' is used by HTML::StripScripts::Parser.

Luc Didry's avatar
Luc Didry committed
75
76
77
78
79
80
# Required for XSS protection on the web interface
requires 'HTML::StripScripts::Parser', '>= 1.03';

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

81
82
83
84
85
86
# 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
87
88
89
90
91
92
93
94
95
96
# 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
97
98
# 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
99
100
101
requires 'List::Util::XS', '>= 1.20';

# Internationalization functions
102
# Note: 1.22 or later is recommended.
Luc Didry's avatar
Luc Didry committed
103
104
105
requires 'Locale::Messages', '>= 1.20';

# MHonArc is used to build Sympa web archives
IKEDA Soji's avatar
IKEDA Soji committed
106
requires 'MHonArc::UTF8', '>= 2.6.24';
Luc Didry's avatar
Luc Didry committed
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128

# 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';

129
130
131
# Note: 'Scalar::Util' is included in Scalar-List-Utils which includes
#   'List::Util'.

Luc Didry's avatar
Luc Didry committed
132
133
134
135
136
137
138
139
140
141
# 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
142
requires 'Text::LineFold', '>= 2018.012';
Luc Didry's avatar
Luc Didry committed
143
144
145
146
147

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

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

151
152
153
# Note: 'Unicode::GCString' is included in Unicode-LineBreak which includes
#   'Text::LineFold'.

Luc Didry's avatar
Luc Didry committed
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
# 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';

174
175
176
177
# 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
178
179
180
181
182
183
# 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';

184
185
186
# 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
187
# Normalizes file names represented by Unicode
188
# Note: Perl 5.8.1 bundles version 0.23.
189
# Note: Perl 5.10.1 bundles 1.03 (per Unicode 5.1.0).
190
recommends 'Unicode::Normalize', '>= 1.03';
Luc Didry's avatar
Luc Didry committed
191

192
193
recommends 'Unicode::UTF8', '>= 0.58';

Luc Didry's avatar
Luc Didry committed
194
195
196
197
198
199
200
### 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';
};

201
202
203
204
feature 'Clone', 'Used to make copy of internal data structures.' => sub {
    requires 'Clone', '>= 0.31';
};

Luc Didry's avatar
Luc Didry committed
205
206
207
208
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';
};

209
feature 'Crypt::Eksblowfish', 'Used to encrypt passwords with the Bcrypt hash algorithm.' => sub {
210
211
212
    requires 'Crypt::Eksblowfish', '>= 0.009';
};

Luc Didry's avatar
Luc Didry committed
213
feature 'x509-auth', 'Required to extract user certificates for SSL clients and S/MIME messages.' => sub {
214
215
    # Note: email() for certificate on versions < 1.909 was broken.
    requires 'Crypt::OpenSSL::X509', '>= 1.909';
Luc Didry's avatar
Luc Didry committed
216
217
218
219
220
};

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.
221
222
223
    # Note: value() for extension on versions < 1.808 was broken.
    # Note: email() for certificate on versions < 1.909 was broken.
    requires 'Crypt::OpenSSL::X509', '>= 1.909';
Luc Didry's avatar
Luc Didry committed
224
225
};

226
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
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
    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
248
249
250
#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
251
252
253
254
255
256

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';
};

257
258
259
260
feature 'Data::Password', 'Used for configureable hardening of passwords via the password_validation sympa.conf directive.' => sub {
    requires 'Data::Password', '>= 1.07';
};

261
feature 'Encode::Locale', 'Useful when running command line utilities in the console not supporting UTF-8 encoding.' => sub {
262
263
264
    requires 'Encode::Locale', '>= 1.02';
};

265
feature 'remote-list-including', 'Required when including members of a remote list.' => sub {
266
    requires 'LWP::Protocol::https';
Luc Didry's avatar
Luc Didry committed
267
268
};

269
feature 'Mail::DKIM::Verifier', 'Required in order to use DKIM features (both for signature verification and signature insertion).' => sub {
270
271
272
    requires 'Mail::DKIM::Verifier', '>= 0.37';
};

John L's avatar
John L committed
273
feature 'Mail::DKIM::ARC::Signer', 'Required in order to use ARC features to add ARC seals.' => sub {
274
    requires 'Mail::DKIM::ARC::Signer', '>= 0.55';
John L's avatar
John L committed
275
276
};

277
feature 'Net::DNS', 'This is required if you set a value for "dmarc_protection_mode" which requires DNS verification.' => sub {
278
279
280
    requires 'Net::DNS', '>= 0.65';
};

281
feature 'ipv6', 'Required to support IPv6 with client features.' => sub {
IKEDA Soji's avatar
IKEDA Soji committed
282
283
    # Note: Perl 5.14 bundles Socket 0.95 which exports AF_INET6.  Earlier
    #   version also requires Socket6 >= 0.23.
284
    # Note: Some distributions e.g. RHEL/CentOS 6 do not provide package for
IKEDA Soji's avatar
IKEDA Soji committed
285
286
    #   IO::Socket::IP.  If that is the case, use IO::Socket::INET6 instead.
    # Note: Perl 5.20.0 bundles IO::Socket::IP 0.29.
287
288
289
    requires 'IO::Socket::IP', '>= 0.21';
};

Luc Didry's avatar
Luc Didry committed
290
291
292
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';
293

294
    # Note: 'Net::LDAP::Entry' and 'Net::LDAP::Util' are also
295
    #   included in perl-ldap.
Luc Didry's avatar
Luc Didry committed
296
297
};

298
299
300
301
302
303
304
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.
};

305
306
307
308
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';
};

309
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
310
311
312
    requires 'SOAP::Lite', '>= 0.712';
};

313
feature 'safe-unicode', 'Sanitises inputs with Unicode text.' => sub {
314
    # Note: Perl 5.8.1 bundles version 0.23.
315
    # Note: Perl 5.10.1 bundles 1.03 (per Unicode 5.1.0).
316
    requires 'Unicode::Normalize', '>= 1.03';
317
    requires 'Unicode::UTF8', '>= 0.58';
318
};
Luc Didry's avatar
Luc Didry committed
319

IKEDA Soji's avatar
IKEDA Soji committed
320
321
322
323
on 'test' => sub {
    requires 'Test::Compile';
    requires 'Test::Harness';
    requires 'Test::More';
324
    requires 'Test::Pod', '>= 1.41';
IKEDA Soji's avatar
IKEDA Soji committed
325
326
};

327
328
on 'develop' => sub {
    requires 'Test::Fixme';
IKEDA Soji's avatar
IKEDA Soji committed
329
    requires 'Test::PerlTidy', '== 20130104';
330
    requires 'Perl::Tidy', '== 20180220';
Luc Didry's avatar
Luc Didry committed
331
    requires 'Code::TidyAll';
IKEDA Soji's avatar
IKEDA Soji committed
332
    requires 'Test::Net::LDAP', '>= 0.06';
333
};