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

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

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

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

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

Luc Didry's avatar
Luc Didry committed
204
205
206
207
208
209
210
211
212
213
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';
};

214
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
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
    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
236
237
238
#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
239
240
241
242
243
244

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

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

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

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

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

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

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

269
270
271
272
273
274
275
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
276
277
278
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';
279

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

284
285
286
287
288
289
290
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.
};

291
292
293
294
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';
};

295
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
296
297
298
    requires 'SOAP::Lite', '>= 0.712';
};

299
feature 'Unicode::Normalize', 'Normalizes file names represented by Unicode.' => sub {
300
301
302
    # Note: Perl 5.8.1 bundles version 0.23.
    # Note: Perl 5.10.1 bundles this version (per Unicode 5.1.0).
    requires 'Unicode::Normalize', '>= 1.03';
303
};
Luc Didry's avatar
Luc Didry committed
304

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

312
313
on 'develop' => sub {
    requires 'Test::Fixme';
IKEDA Soji's avatar
IKEDA Soji committed
314
    requires 'Test::PerlTidy', '== 20130104';
315
    requires 'Perl::Tidy', '== 20180220';
Luc Didry's avatar
Luc Didry committed
316
    requires 'Code::TidyAll';
317
};