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

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

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
135
136
137
138
139
140
# 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
requires 'Text::LineFold', '>= 2011.05';

# 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 this version.
Luc Didry's avatar
Luc Didry committed
182
183
184
185
186
187
188
189
190
recommends 'Unicode::Normalize', '>= 0.23';

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

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

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

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

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

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

feature 'sybase', 'Sybase database driver, required if you connect to a Sybase database.' => sub {
    requires 'DBD::Sybase', '>= 0.90';
};

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

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

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

252
feature 'remote-list-including', 'Required when including members of a remote list.' => sub {
Luc Didry's avatar
Luc Didry committed
253
254
255
    requires 'IO::Socket::SSL', '>= 0.90';
};

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

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

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

Luc Didry's avatar
Luc Didry committed
268
269
270
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';
271
272
273

    # Note: 'Net::LDAP::Entry', 'Net::LDAP::Util' and 'Net::LDAPS' are also
    #   included in perl-ldap.
Luc Didry's avatar
Luc Didry committed
274
275
};

276
277
278
279
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';
};

280
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
281
282
283
    requires 'SOAP::Lite', '>= 0.712';
};

284
feature 'Unicode::Normalize', 'Normalizes file names represented by Unicode.' => sub {
285
    # Note: Perl 5.8.1 bundles this version.
286
287
    requires 'Unicode::Normalize', '>= 0.23';
};
Luc Didry's avatar
Luc Didry committed
288

289
290
291
on 'develop' => sub {
    requires 'Test::Fixme';
    requires 'Test::PerlTidy';
292
    requires 'Perl::Tidy', '== 20180220';
293
};