File Coverage

blib/lib/CPAN/Plugin/Sysdeps/Mapping.pm
Criterion Covered Total %
statement 46 46 100.0
branch 1 2 50.0
condition n/a
subroutine 16 16 100.0
pod 1 1 100.0
total 64 65 98.4


line stmt bran cond sub pod time code
1             package CPAN::Plugin::Sysdeps::Mapping;
2              
3 6     6   50 use strict;
  6         12  
  6         224  
4 6     6   35 use warnings;
  6         10  
  6         412  
5              
6             our $VERSION = '0.70';
7              
8             # shortcuts
9             # os and distros
10 6     6   52 use constant os_freebsd => (os => 'freebsd');
  6         14  
  6         558  
11 6     6   55 use constant os_dragonfly => (os => 'dragonfly');
  6         13  
  6         361  
12 6     6   52 use constant os_openbsd => (os => 'openbsd');
  6         14  
  6         360  
13 6     6   47 use constant os_windows => (os => 'MSWin32');
  6         15  
  6         377  
14 6     6   42 use constant os_darwin => (os => 'darwin'); # really means installer=homebrew
  6         13  
  6         318  
15 6     6   36 use constant like_debian => (linuxdistro => '~debian');
  6         20  
  6         444  
16 6     6   57 use constant before_ubuntu_trusty => (linuxdistrocodename => [qw(squeeze precise wheezy)]);
  6         13  
  6         450  
17 6     6   43 use constant before_ubuntu_xenial => (linuxdistrocodename => [qw(squeeze precise wheezy trusty jessie)]);
  6         11  
  6         541  
18 6     6   73 use constant before_debian_stretch => (linuxdistrocodename => [qw(squeeze precise wheezy trusty jessie xenial)]);
  6         11  
  6         462  
19 6     6   43 use constant before_ubuntu_bionic => (linuxdistrocodename => [qw(squeeze precise wheezy trusty jessie xenial stretch)]);
  6         10  
  6         408  
20 6     6   43 use constant before_debian_buster => (linuxdistrocodename => [qw(squeeze precise wheezy trusty jessie xenial stretch bionic)]);
  6         20  
  6         408  
21 6     6   41 use constant like_fedora => (linuxdistro => '~fedora');
  6         20  
  6         344  
22             # package shortcuts
23 6     6   41 use constant freebsd_jpeg => 'jpeg | jpeg-turbo';
  6         12  
  6         53661  
24              
25             sub mapping {
26             (
27             [cpanmod => 'AI::LibNeural',
28             [os_freebsd,
29             [package => 'libneural']], # but marked as broken (unfetchable)
30             # not available for debian or centos
31             ],
32              
33             [cpanmod => 'AI::PBDD',
34             [os_freebsd,
35             # but does not work, kernel.h is also required
36             [package => 'bddsolve']],
37             [like_debian,
38             # but does not work, kernel.h is also required
39             [package => 'libbdd-dev']]],
40              
41             [cpanmod => ['Algorithm::ConstructDFA::XS', 'Algorithm::LibLinear'],
42             # FreeBSD has c++ in the base system
43             [like_debian,
44             [package => 'g++']],
45             ],
46              
47             ## Does not help, tests still fail (Alien-Electron-0.102):
48             #[cpanmod => 'Alien::Electron',
49             # [like_debian,
50             # [package => 'libnotify4']]],
51              
52             [cpanmod => 'Alien::ffmpeg',
53             [os_freebsd,
54             [package => 'yasm']],
55             [like_debian,
56             [package => 'yasm']],
57             [like_fedora,
58             [package => 'yasm']],
59             [os_darwin,
60             [package => 'yasm']],
61             ],
62              
63             [cpanmod => 'Alien::FFTW3',
64             [os_freebsd,
65             [package => ['fftw3', 'pkgconf']]],
66             [like_debian,
67             [package => ['libfftw3-dev', 'pkg-config | pkgconf']]],
68             ],
69              
70             [cpanmod => 'Alien::HDF4',
71             [os_freebsd,
72             [package => 'hdf']],
73             [like_debian,
74             # "yasm/nasm not found or too old. Use --disable-yasm for a crippled build."
75             [package => ['libhdf4-dev', 'yasm']]],
76             [like_fedora,
77             [package => 'hdf-devel']],
78             [os_darwin,
79             [package => 'hdf4']], # but does not work, module expects static libdf.a which is not provided
80             ],
81              
82             [cpanmod => 'Alien::IUP',
83             [os_freebsd,
84             [package => [qw(gtk2 cairo freeglut)]]],
85             [like_debian,
86             [package => [qw(libgtk-3-dev libcairo2-dev libx11-dev libglu-dev freeglut3-dev)]]],
87             [like_fedora,
88             [package => [qw(gtk2-devel cairo-devel libX11-devel libGLU-devel freeglut-devel)]]],
89             ],
90              
91             [cpanmod => 'Alien::LibJIT',
92             [like_debian,
93             [package => [qw(autoconf libtool flex bison texinfo)]]], # but no success building it
94             ],
95              
96             [cpanmod => 'Alien::libtickit',
97             [like_debian,
98             [before_ubuntu_bionic,
99             [package => []]],
100             [package => 'libtickit-dev']],
101             ],
102              
103             [cpanmod => 'Alien::LibUSBx',
104             # XXX what about freebsd?
105             [like_debian,
106             [package => 'libudev-dev']]],
107              
108             [cpanmod => 'Alien::LibYAML',
109             [like_debian,
110             [package => 'autoconf']],
111             # XXX what about freebsd?
112             ],
113              
114             [cpanmod => 'Alien::libtermkey',
115             [os_freebsd,
116             [osvers => {'>=', 10}, # proxy check for clang system
117             [package => ['libtool', 'gmake', 'pkgconf', 'libtermkey']], # see also RT #91873
118             ],
119             [package => ['libtool', 'gmake', 'pkgconf']]],
120             [like_debian,
121             [linuxdistrocodename => ['squeeze','wheezy'],
122             [package => ['libtool', 'libncurses5-dev']]],
123             [package => ['libtool-bin', 'libncurses5-dev']]],
124             [like_fedora,
125             [package => ['libtool', 'ncurses-devel']]],
126             ],
127              
128             [cpanmod => 'Alien::NSS', # cannot install external package, see https://github.com/0xxon/alien-nss/issues/5#issuecomment-488220899
129             [os_freebsd,
130             [package => 'nss']],
131             [like_debian,
132             [before_ubuntu_trusty, # at least not available in debian/wheezy
133             [package => []]],
134             [package => 'libnss3-dev']],
135             [like_fedora,
136             [package => 'nss-devel']],
137             ],
138              
139             [cpanmod => 'Alien::ProtoBuf',
140             # but why? shouldn't an alien module care about its own external library?
141             [os_freebsd,
142             [package => 'protobuf']],
143             [like_debian,
144             [package => 'libprotobuf-dev']]],
145              
146             [cpanmod => 'Alien::raylib',
147             [os_freebsd,
148             [package => [qw(alsa-lib)]]], # XXX maybe more?
149             [like_debian,
150             [package => [qw(libasound2-dev libxcursor-dev libxinerama-dev mesa-common-dev libx11-dev libxrandr-dev libxi-dev libgl1-mesa-dev libglu1-mesa-dev)]]],
151             [like_fedora,
152             [package => 'libXrandr-devel']], # XXX maybe more?
153             ],
154              
155             [cpanmod => 'Alien::RRDtool',
156             [os_freebsd,
157             [package => ['pkgconf', 'glib', 'cairo', 'pango', 'libxml2']]],
158             [like_debian,
159             [package => 'pkg-config | pkgconf']]], # XXX pkg-config probably needed by much more CPAN distributions...
160              
161             [cpanmod => 'Alien::sispmctl',
162             [like_debian,
163             [package => 'libusb-dev']]],
164              
165             [cpanmod => 'Alien::SVN',
166             [os_freebsd,
167             # does not work, configure does not recognize sqlite
168             [package => ['apr', 'sqlite3']]],
169             [like_debian,
170             [package => ['libapr1-dev', 'libaprutil1-dev', 'libsqlite3-dev', 'zlib1g-dev']]],
171             [like_fedora,
172             [package => [qw(apr-devel apr-util-devel sqlite-devel)]]],
173             ],
174              
175             [cpanmod => 'Alien::unibilium',
176             # XXX what about freebsd?
177             [os_freebsd,
178             [package => ['gmake', 'libtool', 'pkgconf']]],
179             [like_debian,
180             [linuxdistrocodename => ['squeeze','wheezy'],
181             [package => 'libtool']],
182             [package => 'libtool-bin']],
183             ],
184              
185             [cpanmod => 'Alien::Uninum', # probably!
186             [os_freebsd,
187             # XXX does not work, configure does not accept -lgmp
188             [package => 'gmp']],
189             # XXX what about debian?
190             ],
191              
192             [cpanmod => 'Alien::uPB',
193             # freebsd and darwin have /usr/bin/unzip in the base system
194             [os => 'linux',
195             [package => 'unzip']],
196             ],
197              
198             [cpanmod => 'Alien::wxWidgets',
199             [os_freebsd,
200             # XXX what about freebsd?
201             [package => ['gtk2', 'pkgconf']]],
202             [like_debian,
203             [package => 'libgtk2.0-dev']]],
204              
205             [cpanmod => 'App::Stacktrace',
206             # does not work with freebsd anyway
207             [like_debian,
208             [package => 'gdb']],
209             [like_fedora,
210             [package => 'gdb']],
211             ],
212              
213             [cpanmod => 'Archive::Peek::Libarchive',
214             [os_freebsd,
215             [package => 'libarchive']],
216             [like_debian,
217             [package => 'libarchive-dev']],
218             [like_fedora,
219             [package => 'libarchive-devel']],
220             ],
221              
222             [cpanmod => 'Archive::Rar',
223             [os_freebsd,
224             [package => 'rar'], # restricted, no binary package available, must build from ports
225             ],
226             [like_debian,
227             [package => 'rar'], # available in jessie/non-free
228             ]],
229              
230             [cpanmod => 'Archive::Raw',
231             [os_freebsd,
232             [package => []]], # FreeBSD has archive.h in the base system, and works for freebsd 11 .. 13
233             [like_debian,
234             [package => 'libarchive-dev']], # but seems to work only with bullseye, not with wheezy .. buster
235             [like_fedora,
236             [package => 'libarchive-devel']], # but seems to work only with fedora28, not with CentOS6+7+8
237             ],
238            
239             [cpanmod => 'Archive::SevenZip',
240             [os_freebsd,
241             [package => 'p7zip']],
242             [os_dragonfly,
243             [package => 'p7zip']],
244             [like_debian,
245             [package => 'p7zip-full']]],
246              
247             [cpanmod => 'Astro::FITS::CFITSIO',
248             [os_freebsd,
249             [package => 'cfitsio']],
250             [like_debian,
251             [linuxdistrocodename => [qw(squeeze wheezy jessie precise xenial)],
252             [package => 'libcfitsio3-dev']],
253             [package => 'libcfitsio-dev']],
254             [like_fedora,
255             [package => 'cfitsio-devel']], # but test fails on CentOS7 (undefined symbol: ffgsky)
256             [os_darwin,
257             [package => 'homebrew/science/cfitsio']],
258             ],
259              
260             [cpanmod => 'Astro::WCS::LibWCS',
261             ## not checked:
262             #[os_freebsd,
263             # [package => 'astrometry']],
264             [like_debian,
265             [package => 'libwcstools-dev']]],
266              
267             [cpanmod => 'Audio::Ao',
268             [os_freebsd,
269             [package => 'libao']],
270             [like_debian,
271             [package => 'libao-dev']],
272             [like_fedora,
273             [package => 'libao-devel']],
274             ],
275              
276             [cpanmod => 'Audio::Audiere',
277             [os_freebsd,
278             [package => 'audiere']], # but compilation failures
279             # no package for Debian & CentOS7
280             ],
281              
282             [cpanmod => 'Audio::CD',
283             [os_freebsd,
284             [package => 'libcdaudio']],
285             [os_dragonfly,
286             [package => 'libcdaudio']],
287             [like_debian,
288             [package => 'libcdaudio-dev']],
289             [like_fedora,
290             [package => 'libcdaudio-devel']],
291             ],
292              
293             [cpanmod => 'Audio::Extract::PCM',
294             # but does not work with freebsd, see https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=205732
295             [package => 'sox']],
296              
297             [cpanmod => 'Audio::FLAC::Decoder',
298             [os_freebsd,
299             [package => 'flac']],
300             [like_debian,
301             [package => 'libflac-dev']],
302             [like_fedora,
303             [package => 'flac-devel']],
304             ],
305              
306             [cpanmod => 'Audio::GSM',
307             [os_freebsd,
308             [package => 'gsm']],
309             [os_dragonfly,
310             [package => 'gsm']],
311             [like_debian,
312             [package => 'libgsm1-dev']],
313             [like_fedora,
314             [package => 'gsm-devel']],
315             ],
316              
317             [cpanmod => 'Audio::LibSampleRate',
318             [os_freebsd,
319             [package => 'libsamplerate']],
320             [like_debian,
321             [package => 'libsamplerate0-dev']]],
322              
323             [cpanmod => 'Audio::MPEG',
324             [os_freebsd,
325             [package => 'lame']], # restricted, no binary package available, must build from ports
326             [like_debian,
327             [package => 'libmp3lame-dev']], # but compilation fails
328             ],
329              
330             [cpanmod => 'Audio::Ofa',
331             ## from freebsd's MOVED: "2017-03-01|Has expired: MusicDNS service has been discontinued"
332             #[os_freebsd,
333             # [package => 'libofa']],
334             [like_debian,
335             [package => 'libofa0-dev']],
336             [like_fedora,
337             [linuxdistro => 'centos',
338             linuxdistroversion => qr{^[68]\.},
339             package => []], # N/A for centos6+8
340             [package => 'libofa-devel']],
341             ],
342              
343             [cpanmod => 'Audio::Opusfile',
344             [os_freebsd,
345             [package => 'opusfile']],
346             [like_debian,
347             [package => 'libopusfile-dev']]],
348              
349             [cpanmod => 'Audio::PortAudio',
350             [os_freebsd,
351             [package => ['portaudio', 'pkgconf']]],
352             [like_debian,
353             # conflicts with libjack0
354             [package => 'portaudio19-dev']],
355             [like_fedora,
356             [package => 'portaudio-devel']],
357             ],
358              
359             [cpanmod => 'Audio::SndFile',
360             [os_freebsd,
361             [package => ['libsndfile', 'pkgconf']]],
362             [like_debian,
363             [package => 'libsndfile1-dev']],
364             [like_fedora,
365             [package => 'libsndfile-devel']],
366             ],
367              
368             [cpanmod => 'Audio::TagLib',
369             [os_freebsd,
370             [package => 'taglib']],
371             [like_debian,
372             # but does only work with newer debians (like stretch), because the module wants taglib 1.9.1 (e.g. wheezy has 1.7.2-1)
373             [package => ['libtag1-dev', 'g++']]],
374             [like_fedora,
375             [package => 'taglib-devel']], # at least on centos6 does not work: provided taglib is 1.6.1, but module wants 1.11 or greater
376             [os_darwin, # ... but does not seem to build
377             [package => 'taglib']],
378             ],
379              
380             [cpanmod => ['Authen::Krb5Password', 'GSSAPI'],
381             [os_freebsd,
382             [package => 'krb5 | heimdal']], # heimdal shadows tools like "su", so put it behind krb5
383             [like_debian,
384             [linuxdistrocodename => [qw(squeeze wheezy jessie)],
385             [package => 'heimdal-dev | libkrb5-dev']],
386             [package => 'libkrb5-dev']],
387             [like_fedora,
388             [package => 'krb5-devel']],
389             [os_darwin,
390             [package => 'krb5']],
391             ],
392              
393             [cpanmod => ['Authen::SASL::Cyrus', 'Authen::SASL::XS'],
394             [os_freebsd,
395             [package => 'cyrus-sasl']],
396             [like_debian,
397             [package => 'libsasl2-dev']]],
398              
399             [cpanmod => 'Barcode::ZBar',
400             [os_freebsd,
401             [package => 'zbar']],
402             [like_debian,
403             [package => 'libzbar-dev']],
404             [like_fedora,
405             [package => 'zbar-devel']],
406             [os_darwin,
407             [package => 'zbar']], # but tests fails (Barcode-ZBar-0.04)
408             ],
409              
410             [cpanmod => ['BerkeleyDB', 'BDB'],
411             [os_freebsd,
412             # FreeBSD has libdb in the base system, but this version is too old.
413             # Make sure that a corresponding distroprefs file matches this library.
414             [package => 'db48']],
415             [like_debian,
416             [linuxdistrocodename => 'squeeze',
417             [package => 'libdb4.8-dev']],
418             [linuxdistrocodename => ['wheezy', 'precise'],
419             [package => 'libdb5.1-dev']],
420             [package => 'libdb5.3-dev']], # e.g. jessie, stretch, trusty, xenial, yakkety, zesty
421             [os_darwin,
422             # Make sure that a corresponding distroprefs file matches this library (see srezic-cpan-distroprefs).
423             [package => 'berkeley-db']],
424             ],
425              
426             [cpanmod => 'Bio::HTS',
427             [os_freebsd,
428             # htslib exists, but does not seem to be compatible with the perl module
429             [package => 'htslib']],
430             [like_debian,
431             # also does not work...
432             [package => 'libhts-dev']]],
433              
434             [cpanmod => 'Bio::Phylo::Beagle',
435             # XXX what about freebsd?
436             [like_debian,
437             [package => ['libhmsbeagle-dev', 'pkg-config | pkgconf']]]],
438              
439             [cpanmod => 'Bio::SCF',
440             [os_freebsd,
441             [package => 'io_lib']],
442             [like_debian,
443             [package => ['libstaden-read-dev', 'zlib1g-dev']]],
444             [like_fedora,
445             [linuxdistro => 'fedora', # not available for centos6+7, only for fedora28
446             [package => 'staden-io_lib-devel']]],
447             ],
448              
449             [cpanmod => 'Cache::Memcached::XS',
450             [os_freebsd,
451             [package => 'libmemcache']],
452             [like_debian,
453             [linuxdistrocodename => ['squeeze', 'wheezy', 'xenial'], # but tests fail on xenial
454             [package => 'libmemcache-dev']],
455             [package => []], # in jessie there's no package containing include/memcache.h
456             ]],
457              
458             [cpanmod => 'Cache::RedisDB',
459             # real testing with redis-server
460             [os_freebsd,
461             [package => 'redis']],
462             [os_openbsd,
463             [package => 'redis']],
464             [like_debian,
465             [package => 'redis-server']]],
466              
467             [cpanmod => ['Cairo', 'Prima::Cairo'],
468             [os_freebsd,
469             [package => 'cairo']],
470             [os_dragonfly,
471             [package => 'cairo']],
472             [os_openbsd,
473             [package => 'cairo']],
474             [like_debian,
475             [package => 'libcairo2-dev']],
476             [like_fedora,
477             [package => 'cairo-devel']],
478             [os_darwin,
479             [package => 'cairo']]],
480              
481             [cpanmod => 'Cairo::GObject',
482             [like_fedora,
483             [linuxdistro => 'centos', linuxdistroversion => {'<', 7},
484             [package => []]],
485             [package => 'cairo-gobject-devel']],
486             ],
487              
488             [cpanmod => 'Capstone',
489             [os_freebsd,
490             [package => 'capstone']],
491             [like_debian,
492             [package => 'libcapstone-dev']], # but test failures with Capstone 0.6 @ jessie
493             [like_fedora,
494             [linuxdistro => 'centos', linuxdistroversion => {'<', 7},
495             package => []], # N/A for centos6
496             [package => 'capstone-devel']],
497             ],
498              
499             [cpanmod => 'CDB::TinyCDB',
500             [os_freebsd,
501             [package => 'tinycdb']],
502             [like_debian,
503             [package => 'libcdb-dev']],
504             [like_fedora,
505             [package => 'tinycdb-devel']],
506             [os_darwin,
507             [package => 'tinycdb']], # but test failures
508             ],
509              
510             [cpanmod => 'CDB_File::Generator',
511             [os_freebsd,
512             [package => 'cdb']],
513             [like_debian,
514             [package => 'freecdb']]],
515              
516             [cpanmod => 'Ceph::Rados',
517             #[os_freebsd,
518             # [package => 'ceph']], # XXX installation takes ~375MB --- could it be made smaller?
519             [like_debian,
520             [package => 'librados-dev']],
521             [like_fedora,
522             [linuxdistro => 'centos',
523             linuxdistroversion => qr{^7\.},
524             package => 'librados2-devel'],
525             [linuxdistro => 'fedora',
526             linuxdistroversion => '28',
527             package => 'librados-devel'], # XXX but compilation errors
528             ],
529             ],
530              
531             [cpanmod => 'Ceph::Rados::Striper',
532             [like_debian,
533             [before_ubuntu_xenial,
534             [package => []]],
535             [package => 'libradosstriper-dev']],
536             ],
537              
538             [cpanmod => 'Chipcard::PCSC',
539             # XXX what about freebsd?
540             [os_freebsd,
541             [package => 'pcsc-lite']],
542             [like_debian,
543             [package => ['bzip2', 'libpcsclite-dev', 'pkg-config | pkgconf']]]], # bzip2 needed for extraction
544              
545             [cpanmod => ['ClamAV::Client', 'File::Scan::ClamAV'],
546             [os_freebsd,
547             [package => 'clamav']], # additionally freshclam has to be run at least once, and the clamav-clamd service has to be started
548             [like_debian,
549             [package => ['clamav-daemon', 'clamav-data']]]],
550              
551             [cpanmod => 'Comedi::Lib',
552             # Not available for FreeBSD or CentOS7
553             [like_debian,
554             [package => 'libcomedi-dev']],
555             [like_fedora,
556             [linuxdistro => 'fedora',
557             [package => 'comedilib-devel']]], # but still does not build
558             ],
559              
560             [cpanmod => 'CommonMark',
561             [os_freebsd,
562             [package => 'cmark']],
563             ],
564              
565             [cpanmod => 'Compress::LZMA::Simple',
566             [os_freebsd,
567             [package => 'lzmalib']], # warning: installing this package would cause subsequent failures in the Compress::Raw::Lzma test suite!
568             ],
569            
570             [cpanmod => 'Compress::Raw::Lzma',
571             [os_openbsd,
572             [package => 'xz']],
573             [like_debian,
574             [package => 'liblzma-dev']],
575             [os_darwin,
576             [package => 'xz']],
577             ],
578              
579             # Try also the patches listed in
580             # https://rt.cpan.org/Ticket/Display.html?id=86115
581             # (or the corresponding srezic-cpan-distroprefs file)
582             [cpanmod => 'Compress::LZO',
583             [os_freebsd,
584             [package => 'lzo2']],
585             [like_debian,
586             [package => 'liblzo2-dev']],
587             [like_fedora,
588             [package => 'lzo-devel']],
589             [os_darwin,
590             [package => 'lzo']],
591             ],
592              
593             [cpanmod => 'Compress::Zstd',
594             [os_freebsd,
595             [package => 'gmake']],
596             ],
597              
598             [cpanmod => 'Config::Augeas',
599             [os_freebsd,
600             [package => ['augeas', 'pkgconf']]],
601             [like_debian,
602             # but the wheezy version is too old, module wants 1.0.0, wheezy has 0.10.0
603             [package => ['libaugeas-dev', 'pkg-config | pkgconf']]],
604             [like_fedora,
605             [package => 'augeas-devel']],
606             [os_darwin,
607             [package => 'augeas']],
608             ],
609              
610             [cpanmod => 'Config::UCL',
611             [os_freebsd,
612             [package => 'libucl']],
613             ],
614              
615             [cpanmod => 'Convert::Recode',
616             [os_freebsd,
617             [package => 'recode']],
618             [os_openbsd,
619             [package => 'recode']],
620             [like_debian,
621             [package => 'recode']],
622             [like_fedora,
623             [package => 'recode']],
624             ],
625              
626             [cpanmod => 'CORBA::ORBit',
627             #[os_freebsd,
628             # [package => 'ORBit']], # does not exist anymore, just ORBit2
629             [like_fedora,
630             [package => [qw(ORBit-devel libIDL-devel)]]
631             # XXX still does not work, at least on CentOS6
632             # either -I/usr/include/libIDL-1.0 or libIDL-2.0 has
633             # to be specified, but not possible in the standard
634             # Makefile.PL
635             ],
636             ],
637              
638             [cpanmod => 'Couchbase',
639             [os_freebsd,
640             [package => 'libcouchbase']],
641             ],
642              
643             [cpanmod => 'Crypt::Cracklib',
644             [os_freebsd,
645             [package => 'cracklib']],
646             [like_debian,
647             [package => 'libcrack2-dev']],
648             [like_fedora,
649             [package => 'cracklib-devel']],
650             ],
651              
652             [cpanmod => [qw(Crypt::DH::GMP Math::GMPq Math::GMPz Math::BigInt::GMP)],
653             [os_freebsd,
654             [package => 'gmp']],
655             [os_openbsd,
656             [package => 'gmp']],
657             [like_debian,
658             [linuxdistrocodename => 'squeeze',
659             [package => 'libgmp3-dev']],
660             [package => 'libgmp-dev']],
661             [like_fedora,
662             [package => 'gmp-devel']],
663             [os_darwin,
664             [package => 'gmp']],
665             ],
666              
667             [cpanmod => 'Crypt::GCrypt',
668             [os_freebsd,
669             # Does not work, see the patches in the p5-Crypt-GCrypt port
670             [package => 'libgcrypt']],
671             [like_debian,
672             # Neither libgcrypt11 nor libgcrypt20 seem to work.
673             [package => 'libgcrypt11-dev']]],
674              
675             [cpanmod => 'Crypt::HC128',
676             [os_freebsd,
677             [package => 'wolfssl']],
678             [like_debian,
679             [linuxdistrocodename => 'xenial',
680             [package => 'libwolfssl-dev']]],
681             ],
682              
683             [cpanmod => ['Crypt::MCrypt', 'Mcrypt'],
684             [os_freebsd,
685             [package => 'libmcrypt']],
686             [like_debian,
687             [linuxdistrocodename => 'squeeze',
688             [package => []], # N/A in squeeze
689             ],
690             [package => 'libmcrypt-dev']],
691             [like_fedora,
692             [package => [qw(libmcrypt-devel libtool-ltdl-devel)]]],
693             ],
694              
695             [cpanmod => ['Crypt::OpenSSL::DSA', 'Crypt::OpenSSL::PKCS12', 'Crypt::OpenSSL::Random', 'Crypt::OpenSSL::RSA', 'Crypt::OpenSSL::X509', 'Net::SSLeay', 'IO::Socket::SSL'],
696             # freebsd has all libssl in the base system
697             [like_debian,
698             [package => ['libssl-dev', 'zlib1g-dev']]],
699             [like_fedora,
700             [package => 'openssl-devel']],
701             [os_windows,
702             [package => 'openssl.light']]], # XXX create openssl.dev
703              
704             [cpanmod => 'Crypt::OpenSSL::X509',
705             [os_darwin,
706             [package => 'openssl']]],
707              
708             [cpanmod => 'Crypt::OTR',
709             [os_freebsd,
710             [package => 'libotr']],
711             [like_debian,
712             [linuxdistrocodename => ['squeeze', 'wheezy'],
713             [package => 'libotr2-dev']],
714             [package => 'libotr5-dev']]],
715              
716             [cpanmod => 'Crypt::secp256k1',
717             [like_debian,
718             [linuxdistrocodename => [qw(squeeze wheezy jessie precise trusty xenial)],
719             [package => []], # not available before stretch
720             ],
721             [package => 'libsecp256k1-dev']],
722             ],
723              
724             # XXX may be removed if Crypt::secp256k1 got its first stable release
725             [cpandist => qr{^Crypt-secp256k1-\d},
726             [like_debian,
727             [linuxdistrocodename => [qw(squeeze wheezy jessie precise trusty xenial)],
728             [package => []], # not available before stretch
729             ],
730             [package => 'libsecp256k1-dev']],
731             ],
732              
733             [cpanmod => 'Crypt::LibSCEP',
734             [os_freebsd,
735             [osvers => {'>=', 11},
736             [package => 'libscep']],
737             [package => []]],
738             ],
739              
740             [cpanmod => 'Crypt::Sodium',
741             [os_freebsd,
742             [package => 'libsodium']],
743             [os_openbsd,
744             # does not work
745             [package => 'libsodium']],
746             [os_openbsd,
747             [package => 'libsodium']],
748             [like_debian,
749             [linuxdistrocodename => ['squeeze', 'wheezy'],
750             [package => []], # not available before jessie
751             ],
752             [package => 'libsodium-dev']],
753             [like_fedora,
754             [package => 'libsodium-devel']],
755             [os_darwin,
756             [package => 'libsodium']],
757             ],
758              
759             [cpanmod => 'Crypt::U2F::Server',
760             [like_debian,
761             [linuxdistrocodename => [qw(squeeze wheezy jessie)],
762             [package => []], # not available before xenial and stretch
763             ],
764             [package => 'libu2f-server-dev']],
765             [os_darwin,
766             [package => 'libu2f-server']],
767             [linuxdistro => 'fedora', # not available for CentOS6 or 7
768             [package => 'libu2f-server-devel']],
769             ],
770              
771             [cpanmod => 'CSS::Croco',
772             [os_freebsd,
773             [package => ['libcroco', 'pkgconf']]],
774             [like_debian,
775             [package => 'libcroco3-dev']],
776             [like_fedora,
777             [package => 'libcroco-devel']],
778             ],
779              
780             [cpanmod => 'Curses',
781             # ncurses.h is included in FreeBSD base install
782             [like_debian,
783             [package => 'libncurses5-dev']],
784             [like_fedora,
785             [package => 'ncurses-devel']],
786             ],
787              
788             [cpanmod => 'Curses::UI::Mousehandler::GPM',
789             [like_debian,
790             [package => ['libgpm-dev', 'libncurses5-dev']]],
791             [like_fedora,
792             [package => ['gpm-devel']]],
793             ],
794              
795             [cpanmod => 'Database::Cassandra::Client',
796             [os_freebsd,
797             # but does not work, and neither does cassandra2
798             [package => 'cassandra']],
799             # cassandra package not available on debian
800             ],
801              
802             [cpanmod => ['Data::UUID::LibUUID', 'UUID'],
803             [os_freebsd,
804             [package => 'e2fsprogs-libuuid']],
805             [os_openbsd,
806             [package => 'ossp-uuid']],
807             [like_debian,
808             [package => 'uuid-dev']],
809             [like_fedora,
810             [package => 'libuuid-devel']],
811             ],
812              
813             [cpanmod => 'Date::LibICal',
814             [os_freebsd,
815             [package => 'libical']],
816             [like_debian,
817             [package => 'libical-dev']],
818             [like_fedora,
819             [package => 'libical-devel']],
820             ],
821              
822             [cpanmod => 'DateLocale',
823             [os_freebsd,
824             [package => 'gettext-tools']],
825             # XXX what about debian?
826             ],
827              
828             [cpanmod => ['DateTime::Astro', 'Math::MPFR'],
829             [os_freebsd,
830             [package => 'mpfr']],
831             [like_debian,
832             [package => 'libmpfr-dev']],
833             [like_fedora,
834             [package => 'mpfr-devel']],
835             [os_darwin,
836             [package => 'mpfr']],
837             ],
838              
839             [cpanmod => 'DB_File',
840             [like_debian,
841             [linuxdistrocodename => 'squeeze',
842             [package => 'libdb4.8-dev']],
843             [linuxdistrocodename => ['wheezy', 'precise'],
844             [package => 'libdb5.1-dev']],
845             [package => 'libdb5.3-dev']], # e.g. jessie, stretch, trusty, xenial, yakkety, zesty
846             # FreeBSD and MacOSX have libdb in the base system
847             [like_fedora,
848             [linuxdistro => 'centos',
849             linuxdistroversion => qr{^6\.},
850             package => 'db4-devel'],
851             [linuxdistro => 'centos', # CentOS 7 and 8
852             package => 'libdb-devel'],
853             [linuxdistro => 'fedora',
854             linuxdistroversion => '28',
855             package => 'libdb-devel'],
856             ],
857             ],
858              
859             [cpanmod => 'DBD::Firebird',
860             [os_freebsd,
861             [package => 'firebird25-server']],
862             [os_dragonfly,
863             [package => 'firebird25-server']],
864             [like_debian,
865             [before_debian_stretch,
866             [package => 'firebird-dev']],
867             [package => [qw(firebird-dev firebird3.0-server-core)]] # for stretch (and newer?)
868             ],
869             [like_fedora,
870             [package => 'firebird-devel']],
871             ],
872              
873             [cpanmod => 'DBD::mysql',
874             [os_freebsd,
875             [package => 'mysql80-client | mysql57-client | mysql56-client | mysql55-client | mariadb103-client | mariadb102-client | mariadb101-client | mariadb100-client | mariadb55-client | percona56-client | percona55-client | mysql-connector-c']],
876             [os_dragonfly,
877             [package => 'mariadb101-client | mariadb100-client | mariadb55-client-5.5.58']],
878             [os_openbsd,
879             [package => 'mariadb-client']],
880             [like_debian,
881             [before_debian_stretch,
882             [package => 'libmysqlclient-dev']],
883             [package => 'default-libmysqlclient-dev']],
884             [like_fedora,
885             [linuxdistro => 'centos', linuxdistroversion => qr{^6\.},
886             [package => 'mysql-devel']],
887             [package => 'mariadb-devel']],
888             [os_darwin,
889             [package => 'mysql-connector-c | mysql']],
890             ],
891              
892             [cpanmod => 'DBD::ODBC',
893             [os_freebsd,
894             [package => 'unixODBC']],
895             [os_dragonfly,
896             [package => 'unixODBC']],
897             [like_debian,
898             [package => 'unixodbc-dev']],
899             [like_fedora,
900             [package => 'libiodbc-devel']], # but building does not work out of the box, Makefile.PL needs patching
901             [os_darwin,
902             [package => 'unixodbc']],
903             ],
904              
905             [cpanmod => 'DBD::Pg',
906             [os_freebsd,
907             [package => 'postgresql12-client | postgresql11-client | postgresql10-client | postgresql96-client | postgresql95-client | postgresql94-client | postgresql93-client']],
908             [os_dragonfly,
909             [package => 'postgresql10-server | postgresql96-server | postgresql94-server | postgresql93-server | postgresql92-server']],
910             [os_openbsd,
911             [package => 'postgresql-server']],
912             [like_debian,
913             [package => 'libpq-dev']],
914             [like_fedora,
915             [package => [qw(postgresql postgresql-devel)]]],
916             [os_darwin,
917             [package => 'postgresql']],
918             ],
919              
920             [cpanmod => 'Deliantra::Client',
921             [os_freebsd,
922             [package => ['sdl2', 'sdl2_image', 'sdl2_mixer']]],
923             [like_debian,
924             [package => ['libsdl1.2-dev', 'libsdl-image1.2-dev', 'libsdl-mixer1.2-dev', 'libglib2.0-dev']]]],
925              
926             [cpanmod => 'Devel::IPerl',
927             [like_debian,
928             [before_debian_stretch,
929             [package => [qw(libzmq3-dev ipython ipython-notebook libmagic-dev)]]], # as specified in https://metacpan.org/source/ZMUGHAL/Devel-IPerl-0.006/README.md
930             [package => [qw(libzmq3-dev ipython jupyter-console jupyter-notebook libmagic-dev)]],
931             ],
932             ],
933              
934             [cpanmod => 'Devel::Jemallctl',
935             [like_debian,
936             [package => 'libjemalloc-dev']],
937             [like_fedora,
938             [package => 'jemalloc-devel']],
939             [os_darwin,
940             [package => 'jemalloc']],
941             ],
942              
943             [cpanmod => 'Devel::Valgrind::Client',
944             [os_freebsd,
945             [package => 'valgrind']], # untested
946             [like_debian,
947             [package => 'valgrind']], # but compilation errors
948             ],
949              
950             [cpanmod => 'Device::Cdio',
951             [os_freebsd,
952             # but it's too old, even on freebsd11 (1.1 needed, 0.94 installed)
953             [package => 'libcdio']],
954             [like_debian,
955             # but still does not work
956             [package => ['libcdio-dev', 'libiso9660-dev']]],
957             [os_darwin,
958             [package => 'libcdio']],
959             ],
960              
961             [cpanmod => 'Device::Serdisp',
962             [os_freebsd,
963             [package => 'serdisplib']], # but segfault in tests
964             # no package for debian
965             ],
966              
967             [cpanmod => 'Device::USB',
968             [like_debian,
969             [package => 'libusb-dev']],
970             [like_fedora,
971             [package => 'libusb-devel']], # but testsuite segfaults
972             ],
973              
974             [cpanmod => 'Device::Velleman::K8055::libk8055',
975             [os_freebsd,
976             [package => 'libk8055']],
977             # not available on debian
978             ],
979              
980             [cpanmod => 'DLM::Client',
981             # libdlm does not seem to exist on FreeBSD
982             [like_debian,
983             [package => 'libdlm-dev']],
984             [like_fedora,
985             [package => 'dlm-devel']],
986             ],
987            
988             [cpanmod => 'DNS::LDNS',
989             [os_freebsd,
990             [package => 'ldns']],
991             [os_dragonfly,
992             [package => 'ldns']],
993             [like_debian,
994             [package => 'libldns-dev']],
995             [like_fedora,
996             [package => 'ldns-devel']],
997             # additionally needs to be patched, see https://github.com/eserte/srezic-cpan-distroprefs/blob/master/DNS-LDNS.yml
998             [os_darwin,
999             [package => 'ldns']]],
1000              
1001             [cpanmod => 'DNS::Unbound',
1002             #[cpandist => qr{^DNS-Unbound-\d},
1003             [os_freebsd,
1004             [package => 'unbound']], # build problems: port's pkg-config file references ssl & crypto, but these are already in base system
1005             [like_debian,
1006             [package => 'libunbound-dev']],
1007             [like_fedora,
1008             [package => 'unbound-devel']],
1009             ],
1010              
1011             [cpanmod => 'DVD::Read',
1012             [os_freebsd,
1013             [package => 'libdvdread']],
1014             [like_debian,
1015             [package => 'libdvdread-dev']],
1016             [like_fedora,
1017             [package => 'libdvdread-devel']],
1018             ],
1019              
1020             [cpanmod => 'EFL',
1021             [os_freebsd,
1022             # build is not successful anyway (Evas.h cannot be found), additionally the prereqs install also gcc on a freebsd10 system
1023             [package => ['evas-core', 'elementary']]],
1024             [like_debian,
1025             # here too: build is not successful anyway (Evas.h cannot be found)
1026             [package => ['libevas-dev', 'libelementary-dev']]]],
1027              
1028             [cpanmod => 'Encode::TECkit',
1029             [os_freebsd,
1030             [package => 'teckit']],
1031             # no package for Debian (jessie, stretch) and CentOS7
1032             ],
1033              
1034             [cpanmod => 'Erlang::Interface',
1035             [like_debian,
1036             [package => 'erlang-dev']],
1037             ],
1038              
1039             [cpanmod => ['EV::ADNS', 'Net::ADNS'],
1040             [os_freebsd,
1041             [package => 'adns']],
1042             [like_debian,
1043             [package => 'libadns1-dev']],
1044             [os_darwin,
1045             [package => 'adns']],
1046             [like_fedora,
1047             [linuxdistro => 'fedora', # not available for CentOS6 or 7
1048             [package => 'adns-devel']]],
1049             ],
1050              
1051             [cpanmod => 'Event::Lib',
1052             [os_freebsd,
1053             [package => 'libevent2']],
1054             [like_debian,
1055             [package => 'libevent-dev']]],
1056              
1057             [cpanmod => 'ExtUtils::CppGuess',
1058             # FreeBSD has c++ in the base system
1059             [like_debian,
1060             [package => 'g++']]],
1061              
1062             [cpanmod => 'ExtUtils::F77',
1063             # XXX TBD FreeBSD: provided by gcc, which is in the base system for osvers < 10, and has to be installed separately for osvers >= 10
1064             [like_debian,
1065             [package => 'gfortran']],
1066             [like_fedora,
1067             [package => 'gcc-gfortran']],
1068             # XXX TBD MacOSX: "GNU Fortran is now provided as part of GCC, and can be installed with: brew install gcc"
1069             ],
1070              
1071             [cpanmod => 'ExtUtils::PkgConfig',
1072             [os_freebsd,
1073             [package => 'pkgconf']],
1074             [like_debian,
1075             [package => 'pkg-config | pkgconf']],
1076             [like_fedora,
1077             [linuxdistro => 'centos', linuxdistroversion => {'<', 8},
1078             [package => 'pkgconfig']],
1079             [linuxdistro => 'fedora', linuxdistroversion => {'<', 31},
1080             [package => 'pkgconfig']],
1081             [package => 'pkgconf-pkg-config']],
1082             [os_darwin,
1083             [package => 'pkg-config']],
1084             ],
1085              
1086             [cpanmod => 'FFI::Platypus::Lang::Pascal',
1087             [like_debian,
1088             [package => 'fp-compiler']],
1089             ],
1090              
1091             [cpanmod => 'File::ExtAttr',
1092             [like_debian,
1093             [package => 'libattr1-dev']],
1094             [like_fedora,
1095             [package => 'libattr-devel']],
1096             # no special packages needed on freebsd and macosx
1097             ],
1098              
1099             [cpanmod => 'File::LibMagic',
1100             # XXX what about freebsd?
1101             [like_debian,
1102             [package => 'libmagic-dev']],
1103             [like_fedora,
1104             [package => 'file-devel']],
1105             [os_darwin,
1106             [package => 'libmagic']]],
1107              
1108             [cpanmod => 'File::MimeInfo',
1109             [os_freebsd,
1110             [# actually, this module installs without the package, but
1111             # depending modules like IO-All which really use it may fail
1112             [package => 'shared-mime-info']]]],
1113              
1114             [cpanmod => 'File::Rdiff',
1115             [os_freebsd,
1116             [package => 'librsync2 | librsync']],
1117             [like_debian,
1118             [package => 'librsync-dev']],
1119             [like_fedora,
1120             [package => 'librsync-devel']], # but compilation failures on CentOS7
1121             ],
1122              
1123             [cpanmod => 'Filesys::SmbClient',
1124             ## XXX unclear which package is the correct one
1125             #[os_freebsd,
1126             # [package => 'samba-libsmbclient | samba41 | samba4']],
1127             [like_debian,
1128             [package => 'libsmbclient-dev']],
1129             ],
1130              
1131             [cpanmod => 'Finance::MICR::GOCR::Check',
1132             [package => 'gocr']],
1133              
1134             [cpanmod => 'Finance::TA',
1135             [os_freebsd,
1136             [package => 'ta-lib']]], # alternative would be Alien::TALib
1137              
1138             [cpanmod => 'Firefox::Marionette',
1139             [os_freebsd,
1140             [package => [ 'firefox', 'xorg-vfbserver', 'xauth' ]]],
1141             [os_openbsd,
1142             [package => [ 'firefox' ]]],
1143             [like_debian,
1144             [linuxdistrocodename => [qw(trusty xenial bionic eoan focal)],
1145             [package => [qw(firefox xvfb xauth)]]], # there's no firefox-esr for Ubuntu
1146             [package => [ 'firefox-esr', 'xvfb', 'xauth' ]]],
1147             [like_fedora,
1148             [package => [ 'firefox', 'xorg-x11-server-Xvfb', 'xorg-x11-xauth' ]]],
1149             [os_windows,
1150             [package => [ 'firefox' ]]],
1151             ],
1152              
1153             [cpanmod => ['FTDI::D2XX', 'Device::FTDI'],
1154             # neither libftdi nor libftdi1 seem to work on FreeBSD
1155             [like_debian,
1156             [package => 'libftdi-dev']]],
1157              
1158             [cpanmod => 'Fuse',
1159             # Fuse.pm does not work on freebsd
1160             [like_debian,
1161             [package => 'libfuse-dev']],
1162             [like_fedora,
1163             [package => 'fuse-devel']],
1164             ],
1165              
1166             [cpanmod => 'Games::Chipmunk',
1167             [os_freebsd,
1168             [package => 'ChipmunkPhysics']],
1169             [like_debian,
1170             [package => 'chipmunk-dev']],
1171             ],
1172              
1173             [cpanmod => 'Games::Irrlicht',
1174             [os_freebsd,
1175             [package => 'irrlicht']], # but does not build
1176             [like_debian,
1177             [package => 'libirrlicht-dev']], # but does not build
1178             ],
1179              
1180             [cpanmod => 'Games::Poker::HandEvaluator',
1181             [os_freebsd,
1182             [package => 'poker-eval']], # but does not build out of the box
1183             [like_debian,
1184             [package => 'libpoker-eval-dev']], # but does not build out of the box
1185             ],
1186              
1187             [cpanmod => 'GCCJIT',
1188             [like_debian,
1189             [linuxdistrocodename => [qw(squeeze wheezy jessie precise)],
1190             [package => []]], # N/A in older Debian+Ubuntu versions
1191             [linuxdistrocodename => [qw(xenial)],
1192             [package => 'libgccjit-5-dev']],
1193             [linuxdistrocodename => [qw(stretch)],
1194             [package => 'libgccjit-6-dev']],
1195             [linuxdistrocodename => [qw(bionic)],
1196             [package => 'libgccjit-7-dev']], # use matching with current gcc, don't use libgccjit-8-dev | libgccjit-6-dev | libgccjit-5-dev
1197             [linuxdistrocodename => [qw(buster)],
1198             [package => 'libgccjit-8-dev']], # use matching with current gcc, don't use libgccjit-7-dev | libgccjit-6-dev
1199             ],
1200             [like_fedora,
1201             [linuxdistro => 'fedora', # not available for CentOS6 or 7
1202             [package => 'libgccjit-devel']]],
1203             ],
1204              
1205             [cpanmod => 'GD',
1206             [os_freebsd,
1207             [package => 'libgd']],
1208             [os_dragonfly,
1209             [package => 'libgd']],
1210             [os_openbsd,
1211             [package => 'gd']],
1212             [like_debian,
1213             [linuxdistrocodename => ['precise', 'wheezy'],
1214             [package => 'libgd2-noxpm-dev | libgd2-xpm-dev']],
1215             [package => 'libgd-dev']],
1216             [like_fedora,
1217             [package => 'gd-devel']],
1218             [os_darwin,
1219             [package => 'gd']]],
1220              
1221             [cpanmod => 'Gearman::XS',
1222             [os_freebsd,
1223             [package => 'gearmand-devel'], # untested; not for small disks, needs boost-libs
1224             ],
1225             [like_debian,
1226             [package => 'libgearman-dev']],
1227             [like_fedora,
1228             [package => 'libgearman-devel']],
1229             ],
1230              
1231             [cpanmod => 'Geo::Hex::V3::XS',
1232             [package => 'cmake']],
1233              
1234             [cpanmod => 'Geo::Proj4',
1235             [os_freebsd,
1236             [package => 'proj']],
1237             [like_debian,
1238             [package => ['libproj-dev', 'proj-bin']]],
1239             [like_fedora,
1240             [package => ['proj-devel', 'proj']]],
1241             [os_darwin,
1242             [package => 'proj']],
1243             ],
1244            
1245             [cpanmod => 'Geo::Shapelib',
1246             [os_freebsd,
1247             [package => 'shapelib']],
1248             [like_debian,
1249             [package => 'libshp-dev']],
1250             [like_fedora,
1251             [package => 'shapelib-devel']],
1252             ],
1253              
1254             [cpanmod => ['Gimp', 'Alien::Gimp'],
1255             [os_freebsd,
1256             [package => 'gimp-app']],
1257             [like_debian,
1258             [package => 'libgimp2.0-dev'], # 90 MB for package + deps
1259             ]],
1260              
1261             [cpanmod => 'GitDDL::Migrator',
1262             # XXX freebsd?
1263             [like_debian,
1264             [package => ['mysql-server-5.7 | mysql-server-5.5']], # possible alternative: mariadb-server-10.0; mysql-server-core-5.5 is not enough as resolveip is usually required
1265             ]],
1266              
1267             [cpanmod => 'Git::Raw',
1268             [os_freebsd,
1269             [package => 'libssh2']],
1270             [like_debian,
1271             [package => 'libssh2-1-dev']],
1272             # libgit2 is already bundled with Git::Raw
1273             ],
1274              
1275             [cpanmod => 'Git::XS',
1276             [os_freebsd,
1277             [package => 'libgit2']],
1278             [os_openbsd,
1279             [package => 'libgit2']],
1280             [like_debian,
1281             [linuxdistrocodename => ['squeeze', 'wheezy'],
1282             [package => []]], # N/A
1283             [package => 'libgit2-dev']],
1284             [like_fedora,
1285             [package => 'libgit2-devel']],
1286             ],
1287              
1288             [cpanmod => 'Glib',
1289             [like_debian,
1290             [package => 'libglib2.0-dev']],
1291             [like_fedora,
1292             [linuxdistro => 'centos', linuxdistroversion => {'<', 7},
1293             [package => []]],
1294             [package => 'gobject-introspection-devel']],
1295             [os_darwin,
1296             [package => 'glib']],
1297             ],
1298              
1299             [cpanmod => 'Glib::JSON',
1300             [os_freebsd,
1301             [package => 'json-glib']],
1302             [like_debian,
1303             [package => 'libjson-glib-dev']],
1304             [like_fedora,
1305             [package => 'json-glib-devel']],
1306             [os_darwin,
1307             [package => 'json-glib']],
1308             ],
1309              
1310             [cpanmod => 'Glib::Object::Introspection',
1311             [os_freebsd,
1312             [package => 'gobject-introspection']],
1313             [os_openbsd,
1314             [package => 'gobject-introspection']],
1315             [like_debian,
1316             [package => 'libgirepository1.0-dev']],
1317             [like_fedora,
1318             [linuxdistro => 'centos', linuxdistroversion => {'<', 7},
1319             [package => []]],
1320             [package => 'gobject-introspection-devel']],
1321             [os_darwin,
1322             [package => [qw(gobject-introspection libffi)]]],
1323             ],
1324              
1325             [cpanmod => 'Gnome2',
1326             [os_freebsd,
1327             [package => 'libgnomeui']],
1328             [like_debian,
1329             [package => 'libgnomeui-dev']]],
1330              
1331             [cpanmod => 'Gnome2::Canvas',
1332             [os_freebsd,
1333             [package => 'libgnomecanvas']],
1334             [like_debian,
1335             [package => 'libgnomecanvas2-dev']],
1336             [like_fedora,
1337             [package => 'libgnomecanvas-devel']],
1338             ],
1339              
1340             [cpanmod => 'Gnome2::GConf',
1341             [os_freebsd,
1342             [package => 'gconf2']],
1343             [like_debian,
1344             [package => 'libgconf2-dev']],
1345             [like_fedora,
1346             [package => 'GConf2-devel']],
1347             ],
1348              
1349             [cpanmod => 'Gnome2::Print',
1350             [os_freebsd,
1351             [package => 'libgnomeprintui']],
1352             [linuxdistro => 'centos', linuxdistroversion => {'<', 7},
1353             [package => 'libgnomeprintui22-devel']],
1354             ],
1355              
1356             [cpanmod => 'Gnome2::Wnck',
1357             [os_freebsd,
1358             [package => 'libwnck']],
1359             [like_debian,
1360             [package => 'libwnck-dev']],
1361             [like_fedora,
1362             [package => 'libwnck-devel']],
1363             ],
1364              
1365             [cpanmod => ['Gnome2::VFS', 'VFS::Gnome'],
1366             [os_freebsd,
1367             [package => 'gnome-vfs']],
1368             [like_debian,
1369             [package => 'libgnomevfs2-dev']]],
1370              
1371             [cpanmod => 'Gnome::Sound',
1372             [like_debian,
1373             [package => 'libgnome2-dev']], # does not work, module does not look into /usr/include/libgnome-2.0/
1374             ],
1375              
1376             [cpanmod => ['GnuPG', 'Module::Signature'],
1377             [os_freebsd,
1378             [package => 'gnupg1'] # XXX what about gnupg (version 2)?
1379             ],
1380             [os_dragonfly,
1381             [package => 'gnupg']],
1382             [os_openbsd,
1383             [package => 'gnupg']],
1384             [like_debian,
1385             [package => 'gnupg']],
1386             [like_fedora,
1387             [package => 'gnupg2']],
1388             ],
1389              
1390             [cpanmod => 'GnuPG::Interface',
1391             [os_freebsd,
1392             [package => 'gnupg1'] # XXX what about gnupg (version 2)?
1393             ],
1394             [os_dragonfly,
1395             [package => 'gnupg']],
1396             [os_openbsd,
1397             [package => 'gnupg']],
1398             [like_debian,
1399             [package => 'gnupg']],
1400             [like_fedora,
1401             [package => 'gnupg']], # does not work with gnupg2
1402             ],
1403              
1404             [cpanmod => 'Goo::Canvas',
1405             [os_freebsd,
1406             [package => 'goocanvas']],
1407             [like_debian,
1408             [package => 'libgoocanvas-dev']],
1409             [like_fedora,
1410             [package => 'goocanvas2']],
1411             ],
1412              
1413             [cpanmod => 'GooCanvas2',
1414             [os_freebsd,
1415             [package => 'goocanvas2']],
1416             [like_debian,
1417             [linuxdistrocodename => [qw(squeeze wheezy jessie)], # not available before xenial/stretch
1418             [package => []]],
1419             [package => 'gir1.2-goocanvas-2.0']],
1420             [like_fedora,
1421             [linuxdistro => 'centos', linuxdistroversion => qr{^6\.},
1422             [package => []]],
1423             [package => 'goocanvas2-devel']],
1424             [os_darwin,
1425             [package => 'goocanvas']], # untested
1426             ],
1427              
1428             [cpanmod => 'Google::ProtocolBuffers::Dynamic',
1429             [os_freebsd,
1430             [package => 'protobuf']],
1431             [like_debian,
1432             [package => 'libprotoc-dev']]],
1433              
1434             [cpanmod => ['Graphics::GnuplotIF', 'Gnuplot::Simple', 'Chart::Gnuplot'],
1435             [package => 'gnuplot']],
1436              
1437             [cpanmod => 'Graph::Nauty',
1438             [os_freebsd,
1439             [package => []]], # there is a nauty package, but this seems to be something different
1440             [like_debian,
1441             [before_ubuntu_trusty,
1442             [package => []]],
1443             [package => 'libnauty2-dev']],
1444             [like_fedora,
1445             [linuxdistro => 'centos',
1446             [package => []]],
1447             [package => 'libnauty-devel']],
1448             [os_darwin,
1449             [package => 'nauty']]
1450             ],
1451              
1452             [cpanmod => 'Graphics::Plotter',
1453             [os_freebsd,
1454             [package => 'plotutils']],
1455             [like_debian,
1456             [package => 'libplot-dev']],
1457             [like_fedora,
1458             [package => 'plotutils-devel']],
1459             ],
1460              
1461             [cpanmod => ['Graphics::PLplot', 'PDL::Graphics::PLplot'],
1462             [os_freebsd,
1463             [package => 'plplot']],
1464             [like_debian,
1465             [package => 'libplplot-dev']],
1466             [like_fedora,
1467             [package => 'plplot-devel']],
1468             ],
1469              
1470             [cpanmod => ['Graphics::SANE', 'Sane', 'Image::Sane'],
1471             [os_freebsd,
1472             [package => 'sane-backends']],
1473             [like_debian,
1474             [package => 'libsane-dev']],
1475             [like_fedora,
1476             [package => 'sane-backends-devel']],
1477             [os_darwin,
1478             [package => 'sane-backends']],
1479             ],
1480              
1481             [cpanmod => ['GraphViz', 'GraphViz2', 'GraphViz2::Marpa'],
1482             # package named the same in freebsd, debian and macosx/homebrew, maybe everywhere?
1483             [package => 'graphviz']],
1484              
1485             [cpanmod => 'GSM::Gnokii',
1486             # XXX what about freebsd?
1487             [like_debian,
1488             [package => 'libgnokii-dev']]],
1489              
1490             [cpanmod => 'Gtk2',
1491             # XXX freebsd?
1492             [like_debian,
1493             [package => 'libgtk2.0-dev']],
1494             [like_fedora,
1495             [package => 'gtk2-devel']],
1496             ],
1497              
1498             [cpanmod => 'Gtk2::AppIndicator',
1499             # no package for freebsd or centos7
1500             [like_debian,
1501             [package => 'libappindicator-dev']],
1502             ],
1503              
1504             [cpanmod=> 'Gtk2::CV',
1505             [linuxdistro => 'fedora',
1506             [package => 'perlmulticore-devel']],
1507             ],
1508              
1509             [cpanmod => 'Gtk2::GladeXML',
1510             [os_freebsd,
1511             [package => 'libglade2']],
1512             [like_debian,
1513             [package => 'libglade2-dev']],
1514             [like_fedora,
1515             [package => 'libglade2-devel']],
1516             ],
1517              
1518             [cpanmod => 'Gtk2::GLExt',
1519             # But does not build anywhere...
1520             [os_freebsd,
1521             [package => 'gtkglext']],
1522             [like_debian,
1523             [package => 'libgtkglext1-dev']],
1524             [like_fedora,
1525             [package => 'gtkglext-devel']],
1526             ],
1527              
1528             [cpanmod => 'Gtk2::ImageView',
1529             [os_freebsd,
1530             [package => 'gtkimageview']],
1531             [like_debian,
1532             [package => 'libgtkimageview-dev']]],
1533              
1534             [cpanmod => ['Gtk2::Notify', 'Gtk3::Notify'], # but compilation errors, see https://rt.cpan.org/Ticket/Display.html?id=67467
1535             [os_freebsd,
1536             [package => 'libnotify']],
1537             [like_debian,
1538             [package => 'libnotify-dev']],
1539             [like_fedora,
1540             [package => 'libnotify-devel']],
1541             ],
1542              
1543             [cpanmod => 'Gtk2::Spell',
1544             [os_freebsd,
1545             [package => 'gtkspell']],
1546             [like_debian,
1547             [package => 'libgtkspell-dev']],
1548             [like_fedora,
1549             [package => 'gtkspell-devel']],
1550             ],
1551              
1552             [cpanmod => 'Gtk2::Unique',
1553             [os_freebsd,
1554             [package => 'unique']],
1555             [like_debian,
1556             [package => 'libunique-dev']],
1557             [like_fedora,
1558             [package => 'unique-devel']],
1559             ],
1560              
1561             [cpanmod => 'Gtk3',
1562             [os_freebsd,
1563             # additionally dbus has to be enabled and started
1564             [package => ['gtk3', 'dbus']]],
1565             [like_debian,
1566             [package => 'libgtk-3-dev']],
1567             [like_fedora,
1568             [linuxdistro => 'centos', linuxdistroversion => {'<', 7},
1569             [package => []]],
1570             [package => 'gtk3-devel']],
1571             ],
1572              
1573             [cpanmod => 'Gtk3::SourceView',
1574             [os_freebsd,
1575             [package => 'gtksourceview3']],
1576             [like_debian,
1577             [package => 'libgtksourceview-3.0-dev']],
1578             [like_fedora,
1579             [package => 'gtksourceview3-devel']],
1580             ],
1581              
1582             [cpanmod => 'Gtk3::WebKit',
1583             [os_freebsd,
1584             [package => 'webkit-gtk3']],
1585             [like_debian,
1586             [package => 'libwebkitgtk-3.0-dev']],
1587             [like_fedora,
1588             [package => 'webkitgtk3-devel']],
1589             ],
1590              
1591             [cpanmod => 'Gtk3::WebKit2',
1592             [like_debian,
1593             [before_ubuntu_trusty, # at least not available in debian/wheezy
1594             [package => []]],
1595             [package => 'libwebkit2gtk-4.0-dev']],
1596             [like_fedora,
1597             [linuxdistro => 'centos',
1598             linuxdistroversion => qr{^[67]\.},
1599             package => []], # N/A for centos6+7
1600             [package => 'webkit2gtk3-devel']],
1601             ],
1602              
1603             [cpanmod => 'GTop',
1604             [os_freebsd,
1605             [package => 'libgtop']],
1606             [like_debian,
1607             [package => 'libgtop2-dev']],
1608             [os_darwin,
1609             [package => 'libgtop']],
1610             ],
1611              
1612             [cpanmod => 'Heimdal::Kadm5',
1613             [os_freebsd,
1614             [package => 'heimdal']],
1615             [like_debian,
1616             # conflicts with libkrb5-dev
1617             [package => 'heimdal-dev']],
1618             [like_fedora,
1619             # but does not build
1620             [package => 'heimdal-devel']],
1621             ],
1622              
1623             [cpanmod => 'Hiredis::Raw',
1624             [os_freebsd,
1625             [package => 'hiredis']],
1626             [like_debian,
1627             [package => 'libhiredis-dev']]],
1628              
1629             [cpanmod => 'Hobocamp',
1630             # XXX what about freebsd
1631             [like_debian,
1632             [package => ['dialog', 'libncursesw5-dev']]]],
1633              
1634             [cpanmod => 'HTML::CTPP2',
1635             [os_freebsd,
1636             [package => 'ctpp2']],
1637             [like_debian,
1638             [linuxdistrocodename => ['squeeze', 'wheezy'],
1639             [package => []], # not available before jessie
1640             ],
1641             [package => 'libctpp2-dev']],
1642             # ctpp2 not available for homebrew
1643             ],
1644              
1645             [cpanmod => 'HTML::HTMLDoc',
1646             [os_freebsd,
1647             [package => 'htmldoc']],
1648             [like_debian,
1649             [before_ubuntu_trusty,
1650             [package => []]], # not available in wheezy
1651             [package => 'htmldoc']],
1652             [like_fedora,
1653             [linuxdistro => 'centos', linuxdistroversion => {'>=', 8, '<', 9}, # not available (maybe not yet?) for CentOS8
1654             [package => []]],
1655             [package => 'htmldoc']],
1656             ],
1657              
1658             [cpanmod => 'HTML::Parser',
1659             [os_freebsd,
1660             [package => []]],
1661             [like_debian,
1662             [package => 'libc6-dev']],
1663             [like_fedora,
1664             [package => 'glibc-headers']],
1665             [os_darwin,
1666             [package => []]],
1667             ],
1668              
1669             [cpanmod => 'HTTP::Webdav',
1670             [os_freebsd,
1671             [package => 'neon | neon29']], # untested
1672             [like_debian,
1673             [package => 'libneon27-dev | libneon27-gnutls-dev']], # compilation fails: ne_cookies.h: No such file or directory
1674             [like_fedora,
1675             [package => 'neon-devel']], # compilation fails: ne_cookies.h: No such file or directory
1676             ],
1677              
1678             [cpanmod => 'HTML::Tidy5',
1679             [os_freebsd,
1680             [package => 'tidy-html5']],
1681             [like_debian,
1682             [before_debian_stretch,
1683             [package => []]], # not available?
1684             [package => 'libtidy-dev']],
1685             [like_fedora,
1686             [package => 'libtidy-devel']], # but compilation fails on centos6, some test failures on centos7, fedora28 currently OK
1687             [os_darwin,
1688             [package => 'tidy-html5']], # but does not work (-L and -I needs to be adjusted, Symbol not found: _tidyBufFree)
1689             ],
1690              
1691             [cpanmod => 'HTML::Tidy',
1692             [os_freebsd,
1693             [package => 'tidyp']],
1694             [os_darwin,
1695             [package => 'tidyp']],
1696             # linux: Alien::Tidyp works fine, no external dependency required
1697             ],
1698              
1699             [cpanmod => 'HTTP::Soup::Gnome',
1700             [os_freebsd,
1701             [package => 'libsoup-gnome']],
1702             [like_debian,
1703             [package => 'libsoup-gnome2.4-dev']]],
1704              
1705             [cpanmod => 'Image::DecodeQR',
1706             #[os_freebsd,
1707             # [package => 'opencv']], # package for decodeqr missing
1708             [like_debian,
1709             [before_debian_stretch,
1710             [package => ['libopencv-dev', 'libdecodeqr-dev']]],
1711             [package => []], # not available anymore in stretch, bionic or buster, but currently available in sid for at least arm64
1712             ],
1713             #[like_fedora,
1714             # [package => 'opencv-devel']], # package for decodeqr missing
1715             ],
1716              
1717             [cpanmod => ['Image::ObjectDetect', 'Image::Resize::OpenCV'],
1718             [os_freebsd,
1719             [package => 'opencv']],
1720             [like_debian,
1721             [package => 'libopencv-dev']],
1722             [like_fedora,
1723             [package => 'opencv-devel']],
1724             ],
1725              
1726             [cpanmod => 'Image::GeoTIFF::Tiled',
1727             [os_freebsd,
1728             [package => ['libgeotiff', 'tiff']]],
1729             [like_debian,
1730             [package => ['libgeotiff-dev']]], # conflict between libtiff4 and libtiff5 possible
1731             ],
1732              
1733             [cpanmod => ['Image::Imlib2', 'Ithumb::XS'],
1734             [os_freebsd,
1735             [package => 'imlib2']],
1736             [like_debian,
1737             [package => 'libimlib2-dev']],
1738             [like_fedora,
1739             [package => 'imlib2-devel']],
1740             [os_darwin,
1741             [package => 'imlib2']],
1742             ],
1743              
1744             [cpanmod => 'Image::LibExif',
1745             [os_freebsd,
1746             [package => 'libexif']],
1747             [like_debian,
1748             [package => 'libexif-dev']],
1749             [os_darwin,
1750             [package => 'libexif']],
1751             [like_fedora,
1752             [package => 'libexif-devel']],
1753             ],
1754              
1755             [cpanmod => 'Image::Libpuzzle',
1756             [os_freebsd,
1757             [package => 'libpuzzle']],
1758             [like_debian,
1759             [package => 'libpuzzle-dev']],
1760             [like_fedora,
1761             [linuxdistro => 'centos',
1762             linuxdistroversion => {'>=', 7},
1763             package => []], # for some reason not available for centos7 (but it is for centos6)
1764             [package => 'libpuzzle-devel']],
1765             ],
1766              
1767             [cpanmod => 'Image::LibRaw',
1768             [os_freebsd,
1769             [package => 'libraw']],
1770             [like_debian,
1771             [before_ubuntu_trusty, # not available in debian/wheezy
1772             [package => []]],
1773             [package => 'libraw-dev']],
1774             [os_darwin,
1775             [package => 'libraw']],
1776             ],
1777              
1778             [cpanmod => ['Image::LibRSVG', 'Gnome2::Rsvg'],
1779             [os_freebsd,
1780             [package => 'librsvg2']],
1781             [like_debian,
1782             [package => 'librsvg2-dev']],
1783             [like_fedora,
1784             [package => 'librsvg2-devel']],
1785             [os_darwin,
1786             [package => 'librsvg']],
1787             ],
1788              
1789             [cpanmod => 'Image::Magick', # typically needs manual work
1790             [os_freebsd,
1791             [package => 'ImageMagick']],
1792             [like_debian,
1793             [package => 'libmagickcore-dev']]],
1794              
1795             [cpanmod => 'Image::PNGwriter',
1796             [os_freebsd,
1797             [package => 'pngwriter']],
1798             [like_debian,
1799             [linuxdistrocodename => 'squeeze',
1800             [package => 'libpngwriter0-dev']],
1801             # not available in wheezy and later
1802             ]],
1803              
1804             [cpanmod => 'Image::Ocrad',
1805             [package => 'ocrad']],
1806              
1807             [cpanmod => 'Image::Resize::OpenCV',
1808             [os_freebsd,
1809             [package => 'opencv']],
1810             [like_debian,
1811             [package => ['libcv-dev', 'libhighgui-dev']]],
1812             [like_fedora,
1813             [package => 'opencv-devel']],
1814             ],
1815              
1816             [cpanmod => 'Image::Scale',
1817             [os_freebsd,
1818             [package => ['png', freebsd_jpeg]]],
1819             [like_debian,
1820             [linuxdistrocodename => [qw(squeeze wheezy jessie precise xenial)],
1821             [package => [qw(libjpeg-dev libpng12-dev)]]],
1822             [package => [qw(libjpeg-dev libpng-dev)]],
1823             ],
1824             ],
1825              
1826             [cpanmod => 'Image::SubImageFind',
1827             # XXX what about freebsd?
1828             [like_debian,
1829             [package => ['libmagick++-dev | graphicsmagick-libmagick-dev-compat']]]],
1830              
1831             [cpanmod => 'Image::XFace', # compiles only for old perls
1832             [os_freebsd,
1833             [package => 'faces']],
1834             [like_debian,
1835             [package => 'libcompfaceg1-dev']],
1836             [like_fedora,
1837             [package => 'compface-devel']],
1838             ],
1839              
1840             [cpanmod => 'Imager',
1841             [os_freebsd,
1842             [package => [qw(freetype2 giflib png tiff), freebsd_jpeg]]], # in former days giflib-nox11 had to be specified
1843             [like_debian,
1844             [linuxdistrocodename => [qw(wheezy precise)],
1845             [package => [qw(libfreetype6-dev libgif-dev libpng12-dev libjpeg-dev), 'libtiff5-dev | libtiff4-dev']]],
1846             [linuxdistrocodename => [qw(jessie xenial)],
1847             [package => [qw(libfreetype6-dev libgif-dev libpng12-dev libjpeg-dev libtiff5-dev)]]],
1848             [package => [qw(libfreetype6-dev libgif-dev libpng-dev libjpeg-dev libtiff5-dev)]],
1849             ],
1850             [like_fedora,
1851             [package => [qw(freetype-devel giflib-devel libpng-devel libjpeg-turbo-devel libtiff-devel)]]],
1852             [os_darwin,
1853             [package => [qw(freetype giflib libpng jpeg libtiff)]]],
1854             ],
1855              
1856             [cpanmod => 'Imager::File::HEIF',
1857             [os_freebsd,
1858             [osvers => {'>=', 4, '<', 10},
1859             [package => []]],
1860             [package => 'libheif']], # but does not seem to work with freebsd 10, only with 11 and later
1861             [like_debian,
1862             [before_ubuntu_bionic,
1863             [package => []]],
1864             [package => 'libheif-dev']],
1865             ],
1866              
1867             [cpanmod => 'Imager::File::JPEG',
1868             [os_freebsd,
1869             [package => [freebsd_jpeg]]],
1870             [like_debian,
1871             [package => [qw(libjpeg-dev)]]],
1872             [like_fedora,
1873             [package => [qw(libjpeg-turbo-devel)]]],
1874             [os_darwin,
1875             [package => [qw(jpeg)]]],
1876             ],
1877              
1878             [cpanmod => 'Imager::File::WEBP',
1879             [os_freebsd,
1880             [package => 'webp']], # but tests fail with "undefined symbol: WebPFree" on older freebsd (9)
1881             [like_debian,
1882             [package => 'libwebp-dev']], # but tests fail with "undefined symbol: WebPFree" on jessie+xenial
1883             [like_fedora,
1884             [package => 'libwebp-devel']], # but test or compilation failures with centos6+7; fedora28 works
1885             [os_darwin,
1886             [package => 'webp']],
1887             ],
1888              
1889             [cpanmod => 'Imager::Font::T1',
1890             [os_freebsd,
1891             [package => 't1lib']],
1892             [linuxdistro => 'linuxmint',
1893             [package => 'libt1-dev']], # still available in Mint 17
1894             [like_debian,
1895             linuxdistrocodename => [qw(squeeze wheezy)],
1896             [package => 'libt1-dev']],
1897             # not available anymore since jessie, also not in xenial
1898             [like_fedora,
1899             [package => 't1lib-devel']],
1900             [os_darwin,
1901             #[package => 't1lib']], # but tests fail
1902             [package => []]], # ... and even worse: if t1lib is installed, then the Imager 1.008 test suite fails (https://rt.cpan.org/Ticket/Display.html?id=128145). So don't install it at all.
1903             ],
1904              
1905             # modules just needing java and nothing else:
1906             [cpanmod => ['Inline::Java', 'Bio::AssemblyImprovement', 'DBD::JDBC'],
1907             [os_freebsd,
1908             [package => 'openjdk8']],
1909             [like_debian,
1910             [linuxdistrocodename => 'squeeze',
1911             [package => 'openjdk-6-jdk']],
1912             [linuxdistrocodename => [qw(wheezy jessie precise)],
1913             [package => 'openjdk-7-jdk']],
1914             [linuxdistrocodename => [qw(stretch xenial)],
1915             [package => 'openjdk-8-jdk']],
1916             [linuxdistrocodename => [qw(buster bionic)],
1917             [package => 'openjdk-11-jdk']],
1918             ],
1919             [like_fedora,
1920             [linuxdistro => 'centos', linuxdistroversion => {'<', 7},
1921             [package => 'java-1.8.0-openjdk-devel | java-1.7.0-openjdk-devel | java-1.6.0-openjdk-devel']],
1922             [package => 'java-11-openjdk-devel | java-9-openjdk-devel | java-1.8.0-openjdk-devel | java-1.7.0-openjdk-devel | java-1.6.0-openjdk-devel']],
1923             ],
1924              
1925             [cpanmod => 'Inline::Lua',
1926             [os_freebsd,
1927             [package => 'lua53 | lua']],
1928             [like_debian,
1929             [package => 'liblua5.1-0-dev']],
1930             [like_fedora,
1931             [package => 'lua-devel']],
1932             [os_darwin,
1933             [package => 'lua']],
1934             ],
1935              
1936             [cpanmod => 'Inline::Perl6',
1937             [like_debian,
1938             # XXX tests fail on Ubuntu16.04; missing on stretch
1939             [linuxdistrocodename => [qw(stretch xenial)],
1940             [package => [qw(moarvm-dev libuv1-dev libatomic-ops-dev libtommath-dev rakudo)]]]],
1941             [like_fedora,
1942             # XXX Does not work, moar.h missing
1943             [linuxdistro => 'centos',
1944             linuxdistroversion => {'<', 7}, # not available
1945             package => []],
1946             [package => 'moarvm-devel']],
1947             ],
1948              
1949             [cpanmod => 'Inline::Python',
1950             [os_freebsd,
1951             [package => 'python']],
1952             [like_debian,
1953             [package => 'python2.7-dev']],
1954             [like_fedora,
1955             [package => 'python-devel']],
1956             # macosx already comes with python, it seems
1957             ],
1958              
1959             [cpanmod => 'Inline::Ruby',
1960             [os_freebsd,
1961             [package => 'ruby']],
1962             [like_debian,
1963             [linuxdistrocodename => ['squeeze', 'wheezy'],
1964             [package => 'ruby1.8-dev']],
1965             [linuxdistrocodename => 'jessie',
1966             [package => 'ruby2.1-dev']],
1967             [linuxdistrocodename => [qw(xenial stretch)],
1968             [package => 'ruby2.3-dev']],
1969             [linuxdistrocodename => [qw(bionic buster)],
1970             [package => 'ruby2.5-dev']],
1971             ],
1972             [like_fedora,
1973             [package => 'ruby-devel']],
1974             ],
1975              
1976             [cpanmod => 'Inline::SLang',
1977             [os_freebsd,
1978             [package => 'libslang2']], # build error
1979             [like_debian,
1980             [package => 'libslang2-dev']], # module cannot detect lib location
1981             [like_fedora,
1982             [package => 'slang-devel']], # module cannot detect lib location
1983             ],
1984              
1985             [cpanmod => 'IPC::MMA',
1986             [os_freebsd,
1987             [package => 'mm']],
1988             [like_debian,
1989             [package => 'libmm-dev']],
1990             [like_fedora,
1991             [linuxdistro => 'centos', # not available for 6 and 7
1992             package => []],
1993             [package => 'mm-devel']],
1994             ],
1995              
1996             [cpanmod => 'IPC::XPA',
1997             # no package for FreeBSD or CentOS7
1998             [like_debian,
1999             [package => 'libxpa-dev']],
2000             ],
2001              
2002             [cpanmod => 'IPTables::libiptc',
2003             # Does not work with modern Linux distributions:
2004             # https://rt.cpan.org/Ticket/Display.html?id=111267
2005             [like_debian,
2006             [package => 'iptables-dev']],
2007             [like_fedora,
2008             [package => 'iptables-devel']],
2009             ],
2010              
2011             [cpanmod => ['JavaScript::Lite', 'JavaScript::SpiderMonkey'],
2012             [os_freebsd,
2013             [package => 'spidermonkey24 | spidermonkey185 | spidermonkey170 | spidermonkey17',]], # needs something like INC=-I/usr/local/include/js-17.0, but does not work (tried 170 and 185); spidermonkey52 exists also, but does not work
2014             [like_debian,
2015             [before_ubuntu_bionic,
2016             [package => 'libmozjs185-dev']], # needs something like INC=-I/usr/include/js, but does not work
2017             [package => []]], # newer debians have libmozjs-52-dev, but neither ::Lite nor ::SpiderMonkey work with it
2018             [like_fedora,
2019             [package => 'js-devel']],
2020             ],
2021              
2022             [cpanmod => 'JavaScript::V8',
2023             [os_freebsd,
2024             [package => 'v8']],
2025             [like_debian,
2026             [before_debian_buster,
2027             [package => [qw(libv8-3.14.5 libv8-3.14-dev)]]], # but still does not work, libplatform/libplatform.h missing
2028             [package => 'libnode-dev']], # # libv8* not anymore in buster, see https://tracker.debian.org/news/876959/libv8-314-removed-from-testing/; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=934734 (but perl module does not pick v8.h from the installed location)
2029             [like_fedora,
2030             [package => 'v8-devel']], # but problems with Devel-CheckLib (centos7) and compilation errors (fedora), both with JavaScript-V8-0.10
2031             [os_darwin,
2032             [package => 'v8']], # but compilation errors (v8-5.0.71.33 <-> JavaScript-V8-0.07)
2033             ],
2034              
2035             [cpanmod => 'Jq',
2036             [os_freebsd,
2037             [package => 'jq']],
2038             [like_debian,
2039             [package => 'jq']],
2040             [like_fedora,
2041             [package => 'jq']],
2042             [os_darwin,
2043             [package => 'jq']],
2044             ],
2045              
2046             # XXX check whether Kafka::Librd needs an external librdkafka
2047             # at all, or if works with just the Alien package
2048             [cpanmod => ['Kafka::Librd', 'Net::Kafka'],
2049             [os_freebsd,
2050             [package => 'librdkafka']],
2051             [like_debian,
2052             [package => 'librdkafka-dev']],
2053             [like_fedora,
2054             [linuxdistro => 'centos', linuxdistroversion => {'<', 7},
2055             package => []], # N/A for centos6
2056             [package => 'librdkafka-devel']],
2057             [os_darwin,
2058             [package => 'librdkafka']],
2059             ],
2060              
2061             [cpanmod => 'Kernel::Keyring',
2062             # linux-only
2063             [like_debian,
2064             [package => 'libkeyutils-dev']],
2065             [like_fedora,
2066             [package => 'keyutils-libs-devel']],
2067             ],
2068              
2069             [cpanmod => 'Lab::VISA',
2070             # no package for freebsd
2071             [like_debian,
2072             [linuxdistrocodename => [qw(jessie xenial bionic)],
2073             [package => 'libvisa-dev']],
2074             [package => []], # not available anymore in stretch
2075             ],
2076             ],
2077              
2078             [cpanmod => 'Language::MzScheme',
2079             [os_freebsd,
2080             [package => 'racket']], # would need something like -I/usr/local/include/racket, but compilation still fails
2081             [like_debian,
2082             [package => ['racket', 'racket-common']]], # would need something like -I/usr/include/racket, but compilation still fails
2083             ],
2084              
2085             # XXX needs verification; maybe more latex-related modules should be listed here?
2086             [cpanmod => ['LaTeX::Driver', 'Template::Plugin::Latex'],
2087             [os_freebsd,
2088             [package => ['texlive-base', 'tex-formats']]],
2089             [like_debian,
2090             [package => ['texlive-latex-base', 'texlive-latex-extra']]]],
2091              
2092             [cpanmod => 'Lib::IXP',
2093             [package => 'libixp']],
2094              
2095             [cpanmod => 'LibJIT',
2096             [os_freebsd,
2097             [osvers => {'<', 10},
2098             [package => 'libjit']],
2099             [package => []]], # does not exist in freebsd 10 and later
2100             # XXX what aout debian?
2101             ],
2102              
2103             [cpanmod => 'Libssh::Session',
2104             [os_freebsd,
2105             # compiles only with freebsd 10, but not with freebsd 9
2106             [package => 'libssh']],
2107             [like_debian,
2108             # but does not work
2109             [package => 'libssh-dev']]],
2110              
2111             [cpanmod => 'libsoldout',
2112             [os_freebsd,
2113             [package => 'libsoldout']],
2114             [like_debian,
2115             [linuxdistrocodename => [qw(squeeze wheezy jessie precise trusty)],
2116             [package => []], # not available before stretch/xenial
2117             ],
2118             [package => 'libsoldout1-dev']], # passes with jessie, fails with xenial
2119             ],
2120              
2121             [#cpanmod => 'Lingua::Identify::CLD2',
2122             cpandist => qr{^Lingua-Identify-CLD2-\d}, # XXX until first stable release happens
2123             [os_freebsd,
2124             [package => 'cld2']],
2125             [like_debian,
2126             [before_ubuntu_xenial,
2127             [package => []]],
2128             [package => 'libcld2-dev']],
2129             [like_fedora,
2130             [linuxdistro => 'centos',
2131             package => []],
2132             [package => 'cld2-devel']],
2133             ],
2134            
2135             [cpanmod => 'Lingua::NATools',
2136             # XXX what about freebsd?
2137             [like_debian,
2138             [package => 'sqlite3']]],
2139              
2140             [cpanmod => 'Linux::ACL',
2141             [like_debian,
2142             [package => 'libacl1-dev']],
2143             [like_fedora,
2144             [package => 'libacl-devel']],
2145             ],
2146              
2147             [cpanmod => 'Linux::Inotify2',
2148             ## This inotify package is not able to run
2149             ## Linux::Inotify2, and if installed it
2150             ## casues problems with Alien-wxWidgets
2151             #[os_freebsd,
2152             # [package => 'libinotify']],
2153             [like_debian,
2154             [package => 'libc6-dev']]],
2155              
2156             [cpanmod => 'Linux::Netfilter::Log',
2157             [like_debian,
2158             [package => 'libnetfilter-log-dev']],
2159             [like_fedora,
2160             [package => 'libnetfilter_log-devel']],
2161             ],
2162              
2163             [cpanmod => ['Linux::Prctl', 'Linux::Capabilities'],
2164             [like_debian,
2165             [package => 'libcap-dev']],
2166             [like_fedora,
2167             [package => 'libcap-devel']],
2168             ],
2169              
2170             [cpanmod => 'Linux::Sysfs',
2171             [like_debian,
2172             [package => 'libsysfs-dev']],
2173             [like_fedora,
2174             [package => 'libsysfs-devel']]
2175             ],
2176              
2177             [cpanmod => ['Linux::Systemd::Journal', 'Log::Journald'],
2178             [like_debian,
2179             [linuxdistrocodename => ['squeeze', 'wheezy', 'jessie'],
2180             [package => 'libsystemd-journal-dev']],
2181             # sid, stretch and xenial
2182             [package => 'libsystemd-dev']],
2183             [like_fedora,
2184             [linuxdistro => 'centos',
2185             linuxdistroversion => qr{^7\.},
2186             package => 'systemd-devel']],
2187             ],
2188              
2189             [cpanmod => 'LMDB_File',
2190             [os_freebsd,
2191             [package => 'lmdb']],
2192             [like_debian,
2193             [linuxdistrocodename => ['squeeze', 'wheezy'],
2194             [package => []], # not available before jessie
2195             ],
2196             [package => 'liblmdb-dev']],
2197             [like_fedora,
2198             [package => 'lmdb-devel']],
2199             [os_darwin,
2200             [package => 'lmdb']],
2201             ],
2202              
2203             [cpanmod => 'Locale::gettext', # gettext distribution
2204             [os_freebsd,
2205             [package => 'gettext']],
2206             # XXX what about debian?
2207             [os_darwin,
2208             [package => 'gettext']],
2209             ],
2210              
2211             [cpanmod => 'Lucene',
2212             [os_freebsd,
2213             [package => 'clucene']],
2214             [like_debian,
2215             [package => 'libclucene-dev']]],
2216              
2217             [cpanmod => 'Mail::DMARC::opendmarc',
2218             [os_freebsd,
2219             [package => 'opendmarc']],
2220             [like_debian,
2221             [linuxdistrocodename => ['squeeze', 'wheezy'],
2222             [package => []]],
2223             [package => 'libopendmarc-dev']],
2224             [like_fedora,
2225             [package => 'libopendmarc-devel']],
2226             ],
2227              
2228             [cpanmod => 'Mail::OpenDKIM',
2229             [os_freebsd,
2230             [package => 'opendkim']],
2231             [like_debian,
2232             [package => 'libopendkim-dev']],
2233             [like_fedora,
2234             [package => 'libopendkim-devel']],
2235             [os_darwin,
2236             [package => 'libopendkim']],
2237             ],
2238              
2239             [cpanmod => ['Math::FFTW', 'PDL::FFTW3'],
2240             [os_freebsd,
2241             [package => 'fftw3']],
2242             [like_debian,
2243             [package => 'libfftw3-dev']],
2244             [like_fedora,
2245             [package => 'fftw-devel']],
2246             ],
2247              
2248             [cpanmod => 'Math::GammaFunction',
2249             [os_freebsd,
2250             # NOTE there's an entry in .cpan/prefs/01.DISABLED.yml
2251             [package => 'libRmath']],
2252             [like_debian,
2253             # not for small disks, installs about ~85MB
2254             [package => 'r-mathlib']],
2255             [like_fedora,
2256             [package => 'libRmath-devel']],
2257             ],
2258              
2259             [cpanmod => 'Math::GAP',
2260             [package => 'gap'], # needs 1-1.2GB of disk space
2261             ],
2262              
2263             [cpanmod => ['Math::GSL', 'PerlGSL::DiffEq'],
2264             [os_freebsd,
2265             [package => 'gsl']],
2266             [like_debian,
2267             [package => 'libgsl0-dev']],
2268             [like_fedora,
2269             [package => 'gsl-devel']],
2270             [os_darwin,
2271             [package => 'gsl']],
2272             ],
2273              
2274             [cpanmod => 'Math::MPC',
2275             [os_freebsd,
2276             [package => 'mpc']],
2277             [like_debian,
2278             [package => 'libmpc-dev']],
2279             [like_fedora,
2280             [package => 'libmpc-devel']],
2281             [os_darwin,
2282             [package => 'libmpc']],
2283             ],
2284              
2285             [cpanmod => 'Math::MPFI',
2286             # XXX what about freebsd?
2287             [like_debian,
2288             [package => 'libmpfi-dev']],
2289             [like_fedora,
2290             [package => 'mpfi-devel']],
2291             ],
2292              
2293             [cpanmod => 'Math::RngStream',
2294             [os_freebsd,
2295             [package => 'rngstreams']],
2296             # XXX what about debian?
2297             ],
2298              
2299             [cpanmod => 'Math::ThinPlateSpline',
2300             [os_freebsd,
2301             [package => 'boost-libs']], # untested
2302             [like_debian,
2303             [linuxdistrocodename => 'jessie',
2304             [package => 'libboost1.55-dev']],
2305             [linuxdistrocodename => 'xenial',
2306             [package => 'libboost1.58-dev']],
2307             [linuxdistrocodename => 'stretch',
2308             [package => 'libboost1.62-dev']],
2309             ],
2310             ],
2311              
2312             [cpanmod => 'MaxMind::DB::Reader::XS',
2313             [os_freebsd,
2314             [package => 'libmaxminddb']],
2315             [like_debian,
2316             [linuxdistrocodename => [qw(squeeze wheezy jessie precise)],
2317             package => []], # N/A
2318             [package => 'libmaxminddb-dev']], # xenian (but too old), stretch (works)
2319             [like_fedora,
2320             [package => 'libmaxminddb-devel']], # works
2321             ],
2322              
2323             [cpanmod => 'Media::MediaInfoLib',
2324             [os_freebsd,
2325             [package => 'libmediainfo']],
2326             [like_debian,
2327             [before_ubuntu_trusty,
2328             [package => []]],
2329             [package => 'libmediainfo-dev']],
2330             [like_fedora,
2331             [package => 'libmediainfo-devel']],
2332             ],
2333              
2334             [cpanmod => 'Mhash',
2335             [os_freebsd,
2336             [package => 'mhash']],
2337             [like_debian,
2338             [package => 'libmhash-dev']],
2339             ],
2340              
2341             [cpanmod => 'MIDI::ALSA',
2342             [os_freebsd,
2343             [package => ['alsa-lib', 'alsa-utils']]],
2344             [like_debian,
2345             [package => ['libasound2-dev', 'alsa-utils']]],
2346             ],
2347              
2348             [cpanmod => 'MP3::ID3Lib',
2349             [os_freebsd,
2350             [package => 'id3lib']],
2351             [like_debian,
2352             [package => 'libid3-3.8.3-dev']],
2353             [like_fedora,
2354             [package => 'id3lib-devel']],
2355             ],
2356              
2357             [cpanmod => 'MP4::LibMP4v2',
2358             [os_freebsd,
2359             [package => 'mp4v2']],
2360             [like_debian,
2361             [before_debian_buster,
2362             [package => 'libmp4v2-dev']],
2363             [package => []]], # not available for buster
2364             [like_fedora,
2365             [package => 'libmp4v2-devel']],
2366             ],
2367              
2368             [cpanmod => 'modperl2',
2369             # XXX what about freebsd?
2370             [like_debian,
2371             [linuxdistrocodename => ['squeeze', 'wheezy'],
2372             [package => 'apache2-prefork-dev']],
2373             [package => 'apache2-dev']]],
2374              
2375             [cpanmod => 'MPV::Simple',
2376             [os_freebsd,
2377             [package => 'mpv']],
2378             [like_debian,
2379             [before_ubuntu_trusty,
2380             [package => []]],
2381             [package => 'libmpv-dev']],
2382             ],
2383              
2384             [cpanmod => 'MusicBrainz::DiscID',
2385             [os_freebsd,
2386             [package => 'libdiscid']],
2387             [like_debian,
2388             [package => 'libdiscid-dev']],
2389             [like_fedora,
2390             [package => 'libdiscid-devel']],
2391             ],
2392              
2393             [cpanmod => 'NanoMsg::Raw',
2394             [os_freebsd,
2395             [package => 'nanomsg']],
2396             [like_debian,
2397             [linuxdistrocodename => ['squeeze', 'wheezy'],
2398             [package => []], # not available before jessie
2399             ],
2400             [package => 'libnanomsg-dev']]],
2401              
2402             [cpanmod => 'Neo4j::Bolt',
2403             [like_debian,
2404             [before_debian_stretch,
2405             [package => []],
2406             ],
2407             [package => 'libneo4j-client-dev']],
2408             ],
2409              
2410             [cpanmod => 'Net::Bluetooth',
2411             [like_debian,
2412             [package => 'libbluetooth-dev']],
2413             [like_fedora,
2414             [package => 'bluez-libs-devel']],
2415             ],
2416              
2417             [cpanmod => 'Net::CDP',
2418             [os_freebsd,
2419             [package => 'libnet']], # but build failure with Net-CDP-0.09
2420             [like_debian,
2421             [package => 'libnet1-dev']],
2422             [os_darwin,
2423             [package => 'libnet']], # but build failure with Net-CDP-0.09
2424             ],
2425              
2426             [cpanmod => 'Net::CUPS',
2427             [os_freebsd,
2428             [package => 'cups-filters']],
2429             [like_debian,
2430             [package => ['libcups2-dev', 'libcupsfilters-dev', 'libcupsimage2-dev']]]
2431             ],
2432              
2433             [cpanmod => 'Net::DBus',
2434             [os_freebsd,
2435             [package => ['dbus', 'pkgconf']]],
2436             [like_debian,
2437             [package => ['libdbus-1-dev', 'pkg-config | pkgconf']]],
2438             [like_fedora,
2439             [package => ['dbus-devel', 'pkgconfig']]],
2440             [os_darwin,
2441             [package => 'dbus']],
2442             ],
2443              
2444             [cpanmod => 'Net::DBus::GLib',
2445             [os_freebsd,
2446             [package => 'dbus-glib']],
2447             [like_debian,
2448             [package => 'libdbus-glib-1-dev']],
2449             [like_fedora,
2450             [package => 'dbus-glib-devel']],
2451             ],
2452              
2453             [cpanmod => 'Net::ESMTP',
2454             [os_freebsd,
2455             [package => 'libesmtp']],
2456             [like_debian,
2457             [package => 'libesmtp-dev']],
2458             [like_fedora,
2459             [package => 'libesmtp-devel']],
2460             ],
2461              
2462             [cpanmod => 'Net::Gadu',
2463             [os_freebsd,
2464             [package => 'pl-libgadu']],
2465             [like_debian,
2466             [package => 'libgadu-dev']],
2467             [linuxdistro => 'fedora', # not available for centos6+7, only for fedora28
2468             [package => 'libgadu-devel']],
2469             [os_darwin,
2470             [package => 'libgadu']],
2471             ],
2472              
2473             [cpanmod => 'Net::Ifstat',
2474             [os_freebsd,
2475             [package => 'ifstat']],
2476             [like_debian,
2477             [package => 'ifstat']],
2478             [like_fedora,
2479             [package => 'iproute']],
2480             [os_darwin,
2481             [package => 'ifstat']],
2482             ],
2483              
2484             [cpanmod => 'Net::Jabber::Loudmouth',
2485             [os_freebsd,
2486             [package => 'loudmouth']],
2487             [like_debian,
2488             [package => 'libloudmouth1-dev']],
2489             [like_fedora,
2490             [package => 'loudmouth-devel']],
2491             ],
2492              
2493             [cpanmod => 'Net::LDAPxs',
2494             [os_freebsd,
2495             [package => 'ldapsdk']], # but package seems to be broken and unmaintained
2496             [like_debian,
2497             [package => 'libldap2-dev']],
2498             [like_fedora,
2499             [package => 'openldap-devel']],
2500             ],
2501            
2502             [cpanmod => 'Net::Libdnet',
2503             [os_freebsd,
2504             [package => 'libdnet']],
2505             [like_debian,
2506             # but does not work without applying the patch manually - see https://rt.cpan.org/Ticket/Display.html?id=106021
2507             [package => 'libdumbnet-dev']],
2508             [like_fedora,
2509             [package => 'libdnet-devel']],
2510             [os_darwin,
2511             [package => 'libdnet']],
2512             ],
2513              
2514             [cpanmod => 'Net::LibIDN',
2515             [os_freebsd,
2516             [package => 'libidn']],
2517             [like_debian,
2518             [package => 'libidn11-dev']],
2519             [like_fedora,
2520             [package => 'libidn-devel']],
2521             [os_darwin,
2522             [package => 'libidn']],
2523             ],
2524              
2525             [cpanmod => 'Net::LibIDN2',
2526             [os_freebsd,
2527             [package => 'libidn2']],
2528             [like_debian,
2529             [before_ubuntu_bionic,
2530             [package => []]], # libidn2-0-dev exists, but is too old
2531             [package => 'libidn2-dev']],
2532             [like_fedora,
2533             [package => 'libidn2-devel']],
2534             # currently no libidn2 in homebrew
2535             ],
2536              
2537             [cpanmod => 'Net::LibLO',
2538             [os_freebsd,
2539             [package => 'liblo']],
2540             [like_debian,
2541             [package => 'liblo-dev']],
2542             [like_fedora,
2543             [linuxdistro => 'centos', linuxdistroversion => qr{^7\.},
2544             [package => []]], # N/A for centos7
2545             [package => 'liblo-devel']],
2546             ],
2547              
2548             [cpanmod => 'Net::NATS::Streaming::PB',
2549             [os_freebsd,
2550             [package => 'protobuf']],
2551             [like_debian,
2552             [package => 'protobuf-compiler']],
2553             [like_fedora,
2554             [package => [qw(protobuf-compiler protobuf-devel)]]],
2555             ],
2556              
2557             [cpanmod => 'Net::NfDump',
2558             [like_debian,
2559             [package => ['flex', 'byacc']]],
2560             # XXX what about freebsd?
2561             ],
2562              
2563             [cpanmod => 'Net::LibAsyncNS',
2564             # it seems there's no libasyncns for freebsd
2565             [like_debian,
2566             [package => 'libasyncns-dev']],
2567             [like_fedora,
2568             [package => 'libasyncns-devel']],
2569             ],
2570              
2571             [cpanmod => 'Net::LibNIDS',
2572             [os_freebsd,
2573             # but does not work (no libnids.so in freebsd port, just .a)
2574             [package => ['libnids', 'libnet', 'libpcap']]],
2575             [like_debian,
2576             [package => ['libnids-dev', 'libnet1-dev', 'libpcap0.8-dev']]],
2577             [like_fedora,
2578             [package => ['libnids-devel', 'libnet-devel', 'libpcap-devel']]],
2579             ],
2580              
2581             [cpanmod => 'Net::Pcap',
2582             [like_debian,
2583             [package => 'libpcap0.8-dev']],
2584             [like_fedora,
2585             [package => 'libpcap-devel']],
2586             ],
2587              
2588             [cpanmod => 'Net::oRTP',
2589             [os_freebsd,
2590             [package => 'ortp']],
2591             [like_debian,
2592             [package => 'libortp-dev']]],
2593              
2594             [cpanmod => 'Net::RabbitMQ::Client',
2595             [os_freebsd,
2596             [package => 'rabbitmq-c-devel']],
2597             [like_debian,
2598             [package => 'librabbitmq-dev']], # amqp_tcp_socket.h is provided by this package, but compilation still fails
2599             [like_fedora,
2600             [package => 'librabbitmq-devel']],
2601             ],
2602              
2603             ## conflicts with avahi-app on FreeBSD
2604             ## With avahi-app installed, -I/usr/local/include/avahi-compat-howl needs to be specified
2605             ## but then the test suite fails
2606             #[cpanmod => "Net::Rendezvous::Publish::Backend::Howl",
2607             # [os_freebsd,
2608             # [package => 'howl']],
2609             #],
2610              
2611             [cpanmod => 'Net::SIGTRAN::SCTP',
2612             # no sctp on freebsd or centos
2613             [like_debian,
2614             [package => 'libsctp-dev']]],
2615              
2616             [cpanmod => 'Net::Silk',
2617             [os_freebsd,
2618             [package => 'silktools']],
2619             # does not seem to exist in debian wheezy..buster, Ubuntu 16.04 or 18.04, or CentOS6
2620             ],
2621              
2622             [cpanmod => 'Net::SSH2',
2623             [os_freebsd,
2624             [package => 'libssh2']],
2625             [like_debian,
2626             [linuxdistrocodename => [qw(precise)],
2627             [package => [qw(libssh2-1-dev libgcrypt-dev)]]],
2628             [package => 'libssh2-1-dev']],
2629             [like_fedora,
2630             [package => 'libssh2-devel']],
2631             # Net-SSH2-0.58 already installs the homebrew package for libssh2 itself
2632             ],
2633              
2634             [cpanmod => 'Net::WDNS',
2635             [os_freebsd,
2636             [package => 'wdns']],
2637             # not available for debian/wheezy and jessie
2638             ],
2639              
2640             [cpanmod => ['Net::Z3950::ZOOM', 'Net::Z3950::Simple2ZOOM', 'ZOOM::IRSpy'],
2641             [os_freebsd,
2642             [package => 'yaz']],
2643             [like_debian,
2644             [package => 'libyaz-dev']],
2645             [like_fedora,
2646             [linuxdistro => 'centos', linuxdistroversion => qr{^7\.}, # available only for CentOS6, not for 7
2647             [package => []]],
2648             [package => 'libyaz-devel']],
2649             [os_darwin,
2650             [package => 'yaz']],
2651             ],
2652              
2653             [cpanmod => ['Net::ZooKeeper', 'ZooKeeper'],
2654             [os_freebsd,
2655             [package => 'libzookeeper']],
2656             [like_debian,
2657             [linuxdistrocodename => 'squeeze',
2658             [package => []]], # not available
2659             [package => ['libzookeeper-mt-dev', 'zookeeperd']]],
2660             [os_darwin,
2661             [package => 'zookeeper']],
2662             ],
2663              
2664             [cpanmod => 'NewRelic::Agent',
2665             # freebsd does not work, bundled .so files are linux-only
2666             [like_debian,
2667             [before_debian_buster,
2668             [package => ['g++', 'libcurl3']]],
2669             [package => ['g++', 'libcurl4']]],
2670             ],
2671              
2672             [cpanmod => 'Ogg::LibOgg',
2673             [os_freebsd,
2674             [package => 'libogg']],
2675             [like_debian,
2676             [package => 'libogg-dev']],
2677             [like_fedora,
2678             [package => 'libogg-devel']],
2679             ],
2680              
2681             [cpanmod => ['Ogg::Vorbis', 'Ogg::Vorbis::Decoder'],
2682             [os_freebsd,
2683             [package => 'libvorbis']],
2684             [like_debian,
2685             [package => 'libvorbis-dev']],
2686             [like_fedora,
2687             [package => 'libvorbis-devel']],
2688             ],
2689              
2690             [cpanmod => 'Ogg::Vorbis::Header',
2691             [os_freebsd,
2692             [package => 'libogg']],
2693             [like_debian,
2694             [package => ['libogg-dev', 'libvorbis-dev']]],
2695             [like_fedora,
2696             [package => ['libogg-devel', 'libvorbis-devel']]],
2697             ],
2698              
2699             [cpanmod => 'Ogre',
2700             [os_freebsd,
2701             [package => 'ogre3d']], # untested
2702             [like_debian,
2703             [package => 'libogre-1.9-dev']], # compilation failures
2704             ],
2705              
2706             [cpanmod => 'OIS',
2707             ## ois in freebsd ports is 1.2.0, but 1.3.0 is required
2708             #[os_freebsd,
2709             # [package => 'ois']],
2710             [like_debian,
2711             [package => 'libois-dev']]],
2712              
2713             [cpanmod => 'OpenGL',
2714             [os_freebsd,
2715             [package => 'freeglut']],
2716             [os_dragonfly,
2717             [package => 'freeglut']],
2718             [like_debian,
2719             [package => ['freeglut3-dev', 'libxmu-dev', 'libxi-dev']]],
2720             [like_fedora,
2721             [package => ['freeglut-devel', 'libXmu-devel']]],
2722             ],
2723              
2724             [cpanmod => 'OpenGL::FTGL',
2725             [like_debian,
2726             # but does not work, lookup into wrong freetype directory
2727             [package => ['libftgl-dev', 'libfreetype6-dev']]]],
2728              
2729             [cpanmod => 'OpenGL::GLFW',
2730             [os_freebsd,
2731             [package => 'glfw']],
2732             [like_debian,
2733             [package => 'libglfw3-dev']],
2734             [like_fedora,
2735             [linuxdistro => 'centos',
2736             linuxdistroversion => qr{^7\.},
2737             package => 'glfw-devel']],
2738             [os_darwin,
2739             [package => 'glfw']],
2740             ],
2741              
2742             [cpanmod => 'OpenGL::Modern',
2743             [like_fedora,
2744             [package => 'mesa-libGLU-devel']],
2745             ],
2746              
2747             [cpanmod => 'PAM',
2748             [like_debian,
2749             [package => 'libpam0g-dev']],
2750             [like_fedora,
2751             [package => 'pam-devel']],
2752             ],
2753              
2754             [cpanmod => 'Pango',
2755             [os_freebsd,
2756             [package => 'pango']],
2757             [os_dragonfly,
2758             [package => 'pango']],
2759             [os_openbsd,
2760             [package => 'pango']],
2761             [like_debian,
2762             [package => 'libpango1.0-dev']],
2763             [like_fedora,
2764             [package => 'pango-devel']],
2765             [os_darwin,
2766             [package => 'pango']],
2767             ],
2768              
2769             [cpanmod => 'Parallel::Pvm',
2770             [os_freebsd,
2771             [package => 'pvm']],
2772             [like_debian,
2773             [package => 'pvm-dev']]],
2774              
2775             [cpanmod => 'Passwd::Keyring::Gnome',
2776             [os_freebsd,
2777             [package => ['libgnome-keyring', 'pkgconf']]],
2778             [like_debian,
2779             [before_debian_buster,
2780             [package => 'libgnome-keyring-dev']],
2781             [package => []]], # not available for buster and later
2782             [like_fedora,
2783             [linuxdistro => 'centos', linuxdistroversion => {'<', 7},
2784             [package => 'gnome-keyring-devel']],
2785             [package => 'libgnome-keyring-devel']],
2786             ],
2787              
2788             [cpanmod => 'PDL::IO::Matlab',
2789             [os_freebsd,
2790             [package => 'matio']],
2791             [like_debian,
2792             [before_ubuntu_trusty,
2793             [package => []]],
2794             [package => 'libmatio-dev']],
2795             [like_fedora,
2796             [linuxdistro => 'centos', linuxdistroversion => {'<', 7},
2797             [package => []]],
2798             [package => 'matio-devel']],
2799             ],
2800              
2801             [cpanmod => 'PDL::NetCDF',
2802             [os_freebsd,
2803             [package => 'netcdf']],
2804             [like_debian,
2805             [package => 'libnetcdf-dev']]],
2806              
2807             [cpanmod => 'PDL::Opt::QP',
2808             [os_freebsd,
2809             [package => 'blas']],
2810             [like_debian,
2811             [package => 'libblas-dev']],
2812             [like_fedora,
2813             [package => 'blas-static']],
2814             ],
2815              
2816             [cpanmod => 'PerlQt',
2817             [like_debian,
2818             [linuxdistrocodename => 'squeeze',
2819             [package => 'libqt3-mt-dev']],
2820             [package => []] # no libqt3 anymore for wheezy
2821             ]],
2822              
2823             [cpanmod => 'PGPLOT',
2824             [os_freebsd,
2825             [package => 'pgplot']],
2826             [like_debian,
2827             [package => 'pgplot5']],
2828             # no pgplot package for CentOS7
2829             ],
2830              
2831             [cpanmod => 'Pod::Spelling',
2832             # XXX what about freebsd?
2833             [like_debian,
2834             [package => 'ispell']]],
2835              
2836             [cpanmod => 'Pod::Weaver::Plugin::Ditaa',
2837             [like_fedora,
2838             [linuxdistro => 'centos', # no ditaa for centos6 or 7
2839             [package => []]],
2840             # fallthrough for fedora
2841             ],
2842             [package => 'ditaa']],
2843              
2844             [cpanmod => 'POE::Component::NomadJukebox',
2845             # but compilation errors on FreeBSD, Debian and Ubuntu
2846             [os_freebsd,
2847             [package => 'libnjb']],
2848             [like_debian,
2849             [package => 'libnjb-dev']],
2850             ],
2851              
2852             [cpanmod => 'Poppler',
2853             [os_freebsd,
2854             [package => ['poppler', 'poppler-glib']]],
2855             [like_debian,
2856             [package => ['libpoppler-dev', 'libpoppler-glib-dev']]],
2857             [like_fedora,
2858             [package => 'poppler-glib-devel']], # but available version too low on CentOS6
2859             [os_darwin,
2860             [package => 'poppler']],
2861             ],
2862              
2863             [cpanmod => 'Prima',
2864             # XXX what about freebsd?
2865             [like_debian,
2866             [linuxdistrocodename => [qw(squeeze wheezy jessie precise xenial)],
2867             [package => [qw(libx11-dev libxcursor-dev libxpm-dev libgif-dev libpng12-dev libjpeg-dev), 'pkg-config | pkgconf']]], # XXX maybe also add libtiff...
2868             [package => [qw(libx11-dev libxcursor-dev libxpm-dev libgif-dev libpng-dev libjpeg-dev), 'pkg-config | pkgconf']], # XXX maybe also add libtiff...
2869             ],
2870             [like_fedora,
2871             [package => [qw(libXcursor-devel)]]], # XXX probably incomplete
2872             ],
2873              
2874             [cpanmod => 'Primesieve',
2875             [os_freebsd,
2876             [osvers => {'>=', 11},
2877             [package => 'primesieve']]],
2878             [like_debian,
2879             [before_ubuntu_xenial,
2880             [package => []]],
2881             [linuxdistrocodename => [qw(xenial)],
2882             [package => 'libprimesieve6-dev']],
2883             [linuxdistrocodename => [qw(stretch)],
2884             [package => 'libprimesieve7-dev']],
2885             [package => 'libprimesieve-dev']],
2886             [like_fedora,
2887             [linuxdistro => 'centos',
2888             package => []], # N/A for centos6,7,8
2889             [package => 'primesieve-devel']],
2890             [os_darwin,
2891             [package => 'primesieve']],
2892             ],
2893              
2894             [cpanmod => 'PulseAudio',
2895             [package => 'pulseaudio']],
2896              
2897             [cpanmod => 'QDBM_File',
2898             # XXX debian has libqdbm-dev, but CPAN mod needs patching for -I
2899             [os_freebsd,
2900             [package => 'qdbm']]],
2901              
2902             [cpanmod => 'Qstruct',
2903             # XXX what about freebsd?
2904             [like_debian,
2905             [package => 'ragel']]],
2906              
2907             [cpanmod => 're::engine::Hyperscan',
2908             # not available on CentOS7
2909             [os_freebsd,
2910             [package => 'hyperscan']],
2911             [like_debian,
2912             [linuxdistrocodename => [qw(squeeze wheezy jessie xenial)],
2913             [package => []]], # not available before stretch
2914             [package => 'libhyperscan-dev']],
2915             [like_fedora,
2916             [linuxdistro => 'centos', # not available for 6 and 7
2917             package => []],
2918             [package => 'hyperscan-devel']],
2919             ],
2920              
2921             [cpanmod => 're::engine::PCRE2',
2922             [os_freebsd,
2923             [package => 'pcre2']],
2924             [like_debian,
2925             [linuxdistrocodename => [qw(squeeze wheezy jessie)],
2926             [package => []]], # not available before stretch; available on Ubuntu/xenial
2927             [package => 'libpcre2-dev']],
2928             [like_fedora,
2929             [package => 'pcre2-devel']],
2930             [os_darwin,
2931             [package => 'pcre2']],
2932             ],
2933              
2934             [cpanmod => 'Remind::Client', # but does not work: "Remind output didn't look right; got: 2017/04/24 it works! today"
2935             [os_freebsd,
2936             [package => 'remind']],
2937             [like_debian,
2938             [package => 'remind']],
2939             ],
2940              
2941             [cpanmod => 'RPC::Xmlrpc_c::Client',
2942             [os_freebsd,
2943             [package => 'xmlrpc-c']],
2944             [like_debian,
2945             [linuxdistrocodename => ['squeeze', 'wheezy'],
2946             [package => 'libxmlrpc-c3-dev']],
2947             [package => 'libxmlrpc-core-c3-dev']],
2948             [like_fedora,
2949             [package => 'xmlrpc-c-devel']],
2950             ],
2951              
2952             # ## various rpm using tools --- XXX which one exactly?
2953             # ## XXX disabled because package was not yet built (last check 2014-08-10)
2954             # ## see http://portsmon.freebsd.org/portoverview.py?category=archivers&portname=rpm5
2955             # #package { "rpm5": ensure => installed }
2956             [cpanmod => 'RPM2',
2957             [like_debian,
2958             [package => 'librpm-dev']], # but tests fail
2959             [like_fedora,
2960             [package => 'rpm-devel']],
2961             ],
2962              
2963             [cpanmod => 'RPM4',
2964             [os_freebsd,
2965             [package => 'rpm4']],
2966             [like_debian,
2967             [package => 'rpm']],
2968             [like_fedora,
2969             [package => 'rpm']],
2970             [os_darwin,
2971             [package => 'rpm']],
2972             ],
2973              
2974             [cpanmod => 'RRD::Tweak',
2975             [os_freebsd,
2976             [package => 'rrdtool']],
2977             [like_debian,
2978             [package => 'librrd-dev']],
2979             [like_fedora,
2980             [package => 'rrdtool-devel']],
2981             ],
2982              
2983             [cpanmod => 'Search::Namazu',
2984             [os_freebsd,
2985             [package => 'namazu2']],
2986             [like_debian,
2987             [package => 'libnmz7-dev']],
2988             [os_darwin,
2989             [package => 'namazu']],
2990             ],
2991              
2992             [cpanmod => 'Search::Odeum',
2993             [os_freebsd,
2994             [package => 'qdbm']],
2995             [like_debian,
2996             [package => 'libqdbm-dev']]],
2997              
2998             [cpanmod => 'Search::Xapian',
2999             [os_freebsd,
3000             [package => 'xapian-core']],
3001             [like_debian,
3002             [package => 'libxapian-dev']],
3003             [like_fedora,
3004             [package => 'xapian-core-devel']],
3005             [os_darwin,
3006             [package => 'xapian']],
3007             ],
3008              
3009             [cpanmod => 'SGML::Parser::OpenSP',
3010             # XXX freebsd has textproc/opensp, but the module requires g++, so this will fail on clang++ systems
3011             [like_debian,
3012             [package => 'libosp-dev']],
3013             [like_fedora,
3014             [package => 'opensp-devel']],
3015             ],
3016              
3017             ## version mismatch
3018             #[cpanmod => 'SNMP',
3019             # [os_freebsd,
3020             # [package => 'net-snmp']],
3021             # [like_debian,
3022             # [package => 'libsnmp-dev']],
3023             # [like_fedora,
3024             # [package => 'net-snmp-devel']],
3025             #],
3026              
3027             [cpanmod => 'SNMP::OID::Translate',
3028             [os_freebsd,
3029             [package => 'net-snmp']],
3030             [like_debian,
3031             [package => ['libsnmp-dev', 'snmp-mibs-downloader']]]],
3032              
3033             [cpanmod => ['Sort::Naturally::ICU', 'Unicode::ICU::Collator'],
3034             [os_freebsd,
3035             [package => 'icu']], # but Sort::Naturally::ICU build fails
3036             [like_debian,
3037             [package => 'libicu-dev']],
3038             [like_fedora, # Sort::Naturally::ICU builds on centos7 and fedora28, missing further packages on centos6
3039             [package => 'libicu-devel']],
3040             ],
3041              
3042             [cpanmod => 'Speech::Recognizer::SPX',
3043             [os_freebsd,
3044             [package => 'pocketsphinx']],
3045             [like_debian,
3046             [package => ['libpocketsphinx-dev', 'libsphinxbase-dev']]],
3047             ],
3048              
3049             [cpanmod => ['Spread', 'Spread::Client::Constant'],
3050             [os_freebsd,
3051             # net/spread also exists, refering to version 3, but tests seem to pass with version 4
3052             [package => 'spread4']],
3053             [like_debian,
3054             [linuxdistrocodename => 'squeeze',
3055             [package => 'libspread1-dev']],
3056             # not available in wheezy and later
3057             ]],
3058              
3059             [cpanmod => 'Store::CouchDB',
3060             # tests pass also without, but most tests are skipped
3061             [os_freebsd,
3062             [package => 'couchdb']],
3063             [like_debian,
3064             [linuxdistrocodename => ['squeeze', 'jessie'],
3065             [package => []], # not available in jessie, just wheezy and sid
3066             ],
3067             [package => 'couchdb']]],
3068              
3069             [cpanmod => ['SVN::Hooks', 'SVN::Agent', 'SVN::S4'], # XXX maybe more SVN::* modules?
3070             [package => 'subversion']],
3071              
3072             [cpanmod => 'Sword',
3073             [os_freebsd,
3074             [package => 'sword']],
3075             [like_debian,
3076             [package => 'libsword-dev']]],
3077              
3078             [cpanmod => 'Sys::Gamin',
3079             [os_freebsd,
3080             [package => 'gamin'], # note: possible conflict with fam XXX maybe specify an alternative?
3081             ],
3082             [like_debian,
3083             [package => 'libfam-dev']]],
3084              
3085             [cpanmod => 'Sys::Hwloc',
3086             [os_freebsd,
3087             [package => 'hwloc']],
3088             [like_debian,
3089             [package => 'libhwloc-dev']],
3090             [like_fedora,
3091             [package => 'hwloc-devel']],
3092             ],
3093              
3094             [cpanmod => 'Sys::Virt', # but the latest Sys::Virt usually needs the latest libvirt
3095             [os_freebsd,
3096             [package => 'libvirt']],
3097             # XXX what about debian?
3098             ],
3099              
3100             [cpanmod => 'Systemd::Daemon',
3101             [like_debian,
3102             [package => 'libsystemd-dev']]],
3103              
3104             [cpanmod => 'Tcl',
3105             [os_freebsd,
3106             [package => 'tcl86 | tcl85 | tcl84']],
3107             [like_debian,
3108             [package => 'tcl8.6-dev | tcl8.5-dev']],
3109             [like_fedora,
3110             [package => 'tcl-devel']],
3111             ],
3112              
3113             [cpanmod => 'Tcl::pTk',
3114             [os_freebsd,
3115             [package => 'tk86 | tk85 | tk84']],
3116             [like_debian,
3117             [package => ['tk8.6-dev | tk8.5-dev', 'tcl']]],
3118             ],
3119              
3120             [cpanmod => 'Tcl::Tk', # XXX maybe also Tkx?
3121             [os_freebsd,
3122             [package => 'tk86 | tk85 | tk84']],
3123             [like_debian,
3124             # tcllib is needed for the snit package
3125             [package => ['tk8.6-dev | tk8.5-dev', 'tcllib']]],
3126             [like_fedora,
3127             [package => ['tk', 'tcllib']]],
3128             ],
3129              
3130             [cpanmod => 'TCOD', # currently (with 0.009) does not work
3131             [like_debian,
3132             [before_debian_stretch,
3133             [package => []]], # not available
3134             [package => 'libtcod-dev']],
3135             ],
3136              
3137             [cpanmod => 'Template::Plugin::React',
3138             [os_freebsd,
3139             [package => 'swig13']],
3140             # XXX what about debian?
3141             ],
3142              
3143             [cpanmod => 'Term::EditLine',
3144             [os_freebsd,
3145             [package => 'libedit']],
3146             [like_debian,
3147             [package => 'libedit-dev']]],
3148              
3149             [cpanmod => ['RL', 'Term::ReadLine::Gnu'],
3150             [like_debian,
3151             [before_debian_stretch,
3152             [package => 'libreadline6-dev']],
3153             [package => 'libreadline-dev']],
3154              
3155             [like_fedora,
3156             [package => 'readline-devel']],
3157             # XXX what about freebsd?
3158             # XXX no homebrew package for darwin (checked 2016-05-22)
3159             ],
3160              
3161             [cpanmod => 'Term::Terminfo',
3162             [like_debian,
3163             [package => 'libncurses5-dev']],
3164             [like_fedora,
3165             [package => 'ncurses-devel']],
3166             ],
3167              
3168             [cpanmod => 'Term::VTerm',
3169             [os_freebsd,
3170             [package => 'libvterm']],
3171             [like_debian,
3172             [before_debian_stretch,
3173             [package => []]],
3174             [package => 'libvterm-dev']],
3175             [like_fedora,
3176             [linuxdistro => 'centos', linuxdistroversion => {'<', 7},
3177             package => []], # N/A for centos6
3178             [package => 'libvterm-devel']],
3179             [os_darwin,
3180             [package => 'libvterm']],
3181             ],
3182              
3183             [cpanmod => 'Text::AI::CRM114',
3184             [os_freebsd,
3185             [package => 'libcrm114']],
3186             # No package available for Debian or CentOS7
3187             ],
3188              
3189             [cpanmod => 'Text::Aspell',
3190             [os_freebsd,
3191             [# "aspell" alone is not enough, test needs also English dictionary
3192             package => ['aspell', 'en-aspell']]],
3193             [like_debian,
3194             [package => 'libaspell-dev']],
3195             [like_fedora,
3196             [# test needs also English dictionary
3197             package => ['aspell-devel', 'aspell-en']]],
3198             [os_darwin,
3199             [package => 'aspell']],
3200             ],
3201              
3202             [cpanmod => 'Text::Bidi',
3203             # otherwise real tests are skipped
3204             [os_freebsd,
3205             # anyway, version of fribidi available in 2015-04 is too old, so tests are still skipped
3206             [package => 'fribidi']],
3207             [like_debian,
3208             # on wheezy the library is too old, so tests are anyway skipped
3209             [package => 'libfribidi-dev']],
3210             [like_fedora,
3211             [package => 'fribidi-devel']],
3212             [os_darwin,
3213             [package => 'fribidi']],
3214             ],
3215              
3216             [cpanmod => 'Text::CSV::LibCSV',
3217             [os_freebsd,
3218             [package => 'libcsv']],
3219             [like_debian,
3220             [package => 'libcsv-dev']],
3221             [like_fedora,
3222             [package => 'libcsv-devel']],
3223             ],
3224              
3225             [cpanmod => 'Text::Hspell',
3226             [os_freebsd,
3227             [osvers => {'>=', 10},
3228             [package => 'iw-hspell']],
3229             [package => []]], # not available for fbsd9
3230             [like_debian,
3231             [before_ubuntu_trusty, # not available for wheezy
3232             [package => []]],
3233             [package => 'hspell']],
3234             [like_fedora,
3235             [linuxdistro => 'centos', linuxdistroversion => {'==', 8}, # not available (maybe not yet?) for CentOS8
3236             [package => []]],
3237             [package => 'hspell-devel']],
3238             ],
3239              
3240             [cpanmod => 'Text::Hunspell',
3241             [os_freebsd,
3242             [package => 'hunspell']],
3243             [like_debian,
3244             [package => 'libhunspell-dev']]],
3245              
3246             [cpanmod => 'Text::Kakasi',
3247             [os_freebsd,
3248             [package => 'ja-kakasi']],
3249             [like_debian,
3250             # but there are linking errors on Debian
3251             [package => 'libkakasi2-dev']],
3252             [os_darwin,
3253             [package => 'kakasi']],
3254             [like_fedora,
3255             [linuxdistro => 'centos',
3256             package => []], # N/A for centos6+7
3257             [package => ['kakasi-devel', 'kakasi-dict']]],
3258             ],
3259              
3260             [cpanmod => 'Text::Migemo',
3261             [os_freebsd,
3262             [package => 'ja-migemo']],
3263             [like_debian,
3264             [package => 'libmigemo-dev']]],
3265              
3266             [cpanmod => 'Text::QRCode',
3267             [os_freebsd,
3268             [package => 'libqrencode']],
3269             [like_debian,
3270             [package => 'libqrencode-dev']],
3271             [like_fedora,
3272             [package => 'qrencode-devel']],
3273             ],
3274              
3275             [cpanmod => 'Text::VimColor',
3276             [package => 'vim']],
3277              
3278             [cpanmod => 'Tie::Cvs',
3279             [package => 'cvs']],
3280              
3281             [cpanmod => 'Tie::Judy', # but tests fail (hash randomization?)
3282             [os_freebsd,
3283             [package => 'judy']],
3284             [like_debian,
3285             [package => 'libjudy-dev']],
3286             [like_fedora,
3287             [package => 'Judy-devel']],
3288             ],
3289              
3290             [cpanmod => 'Tree::Suffix',
3291             [os_freebsd,
3292             [package => 'libstree']],
3293             # XXX what about debian?
3294             ],
3295              
3296             [cpanmod => 'Tk',
3297             # freetype2 and libXft are optional, but highly recommended as it provides nicer fonts
3298             # jpeg and png is bundled in Tk, but usually the Tk version is older
3299             [os_freebsd,
3300             [package => qw(freetype2 libXft libX11 png), freebsd_jpeg]],
3301             [like_debian,
3302             [package => [qw(libx11-dev libfreetype6-dev libxft-dev libpng-dev libz-dev libjpeg-dev)]]],
3303             [like_fedora,
3304             [package => [qw(libX11-devel libXft-devel libpng-devel zlib-devel libjpeg-devel)]]],
3305             ],
3306              
3307             [cpanmod => 'Tk::TIFF',
3308             [os_freebsd,
3309             [package => 'tiff']],
3310             [like_debian,
3311             [linuxdistrocodename => ['squeeze', 'wheezy', 'precise'],
3312             [package => 'libtiff4-dev']],
3313             [package => 'libtiff5-dev']]],
3314              
3315             [cpanmod => 'Tk::Zinc',
3316             # XXX freebsd?
3317             [like_debian,
3318             [package => ['mesa-common-dev', 'libglu1-mesa-dev']]]],
3319              
3320             [cpanmod => 'UAV::Pilot::SDL',
3321             [like_debian,
3322             [package => ['libavcodec-dev', 'libswscale-dev', 'libsdl1.2-dev']]],
3323             ],
3324              
3325             [cpanmod => 'UAV::Pilot::Video::Ffmpeg',
3326             [like_debian,
3327             [package => 'libavcodec-dev']],
3328             ],
3329              
3330             [cpanmod => 'UDT::Simple',
3331             [os_freebsd,
3332             [package => 'udt']],
3333             [like_debian,
3334             [package => 'libudt-dev']]],
3335              
3336             [cpanmod => 'Unix::Statgrab',
3337             [os_freebsd,
3338             [package => 'libstatgrab']],
3339             [os_dragonfly,
3340             [package => 'libstatgrab']],
3341             [os_openbsd,
3342             # doesn't work
3343             [package => 'libstatgrab']],
3344             [like_debian,
3345             # unfortunately does not work in wheezy, the library version is too old for the module
3346             # jessie and later is fine
3347             [package => 'libstatgrab-dev']],
3348             [like_fedora,
3349             # package found in CentOS7 is probably too old
3350             [package => 'libstatgrab-devel']],
3351             [os_darwin,
3352             [package => 'libstatgrab']]],
3353              
3354             [cpanmod => ['URPM', 'URPM::Resolve', 'urpmi'],
3355             [os_freebsd,
3356             [package => 'rpm4']],
3357             [like_debian,
3358             [package => ['rpm', 'librpm-dev']]], # but does not work anyway with the librpm version as found on squeeze
3359             [like_fedora,
3360             [package => ['rpm', 'rpm-build', 'rpm-devel']]],
3361             [os_darwin,
3362             [package => 'rpm']],
3363             ],
3364              
3365             [cpanmod => 'USB::LibUSB',
3366             [like_debian,
3367             [package => 'libusb-1.0-0-dev']], # exists on wheezy, but: Minimum required version of libusb-1.0 is 1.0.17. Installed: 1.0.11
3368             ],
3369              
3370             # Since UV::Util 0.03 Alien::libuv is used
3371             # But keep this mapping in case somebody wants to
3372             # force usage of the native system packages.
3373             ($ENV{PERL_CPAN_SYSDEPS_UV_UTIL_NATIVE}
3374 28 50   28 1 52723 ? [cpanmod => 'UV::Util',
3375             [os_freebsd,
3376             [package => 'libuv']], # does not work, -I/usr/local/include seems to be missing
3377             [like_debian,
3378             [linuxdistrocodename => ['squeeze', 'wheezy'],
3379             [package => []], # not available before jessie
3380             ],
3381             [linuxdistrocodename => ['jessie', 'xenial'],
3382             [package => 'libuv0.10-dev']], # does not work, probably too old
3383             [package => 'libuv1-dev']],
3384             [like_fedora,
3385             [package => 'libuv-devel']],
3386             ]
3387             : ()
3388             ),
3389              
3390             [cpanmod => 'Video::FFmpeg',
3391             [package => 'ffmpeg']], # on Debian only found in backports or www.deb-multimedia.org; still does not build because avformat.h is not available
3392              
3393             [cpanmod => 'Video::Xine',
3394             [os_freebsd,
3395             [package => 'libxine']],
3396             [like_debian,
3397             [package => 'libxine2-dev']]],
3398              
3399             [cpanmod => 'Video::ZVBI',
3400             [os_freebsd,
3401             [package => 'libzvbi']],
3402             [like_debian,
3403             [before_ubuntu_trusty,
3404             [package => []]],
3405             [package => 'libzvbi-dev']],
3406             ],
3407              
3408             [cpanmod => 'Vlc::Engine',
3409             [os_freebsd,
3410             [package => 'vlc']],
3411             [like_debian,
3412             [package => 'libvlc-dev']],
3413             ## Does not seem to contain include files
3414             #[os_darwin,
3415             # [package => 'caskroom/cask/vlc']],
3416             ],
3417              
3418             [cpanmod => 'WordNet::QueryData',
3419             [os_freebsd,
3420             [package => 'wordnet']],
3421             [like_debian,
3422             [package => 'wordnet-base']],
3423             [like_fedora,
3424             [package => 'wordnet']],
3425             ],
3426              
3427             [cpanmod => 'WordNet::SenseKey',
3428             [os_freebsd,
3429             [package => 'wordnet']],
3430             [like_debian,
3431             [package => 'wordnet-sense-index']],
3432             ],
3433              
3434             [cpanmod => 'WWW::Bootstrap',
3435             [os_freebsd,
3436             [package => 'npm']],
3437             [like_debian,
3438             [linuxdistrocodename => [qw(squeeze wheezy)],
3439             [package => []]],
3440             [package => 'npm']]],
3441              
3442             [cpanmod => ['WWW::Curl', 'Net::Curl'],
3443             [os_openbsd,
3444             # doesn't work
3445             [package => 'curl']],
3446             [os_freebsd,
3447             [package => 'curl']],
3448             [like_debian,
3449             [package => 'libcurl4-openssl-dev | libcurl4-gnutls-dev | libcurl4-nss-dev']],
3450             [like_fedora,
3451             [package => 'libcurl-devel']],
3452             [os_darwin,
3453             [package => []]], # libcurl is in the base system
3454             ],
3455              
3456             [cpanmod => 'WWW::Mechanize::PhantomJS',
3457             [os_freebsd,
3458             [package => 'phantomjs']],
3459             [os_openbsd,
3460             # doesn't work
3461             [package => 'phantomjs']],
3462             [like_debian,
3463             [linuxdistrocodename => [qw(squeeze wheezy jessie precise)],
3464             [package => []]], # see also https://gist.github.com/julionc/7476620
3465             [package => 'phantomjs']],
3466             [os_windows,
3467             [package => 'phantomjs']],
3468             [os_darwin,
3469             [package => 'phantomjs']],
3470             ],
3471              
3472             [cpanmod => 'Wx',
3473             [os_freebsd,
3474             [package => 'wx30-gtk3 | wx30-gtk2']],
3475             # XXX what about debian?
3476             # fedora: no package needed (e.g wxGTK-devel or wxGTK3-devel), works with Alien::wxWidgets
3477             ],
3478              
3479             [cpanmod => 'XML::LibXML',
3480             [os_freebsd,
3481             [package => 'libxml2']],
3482             [os_dragonfly,
3483             [package => 'libxml2']],
3484             [os_openbsd,
3485             # doesn't work at the moment
3486             [package => 'libxml2']],
3487             [like_debian,
3488             [package => 'libxml2-dev']],
3489             [like_fedora,
3490             [package => 'libxml2-devel']],
3491             [os_darwin,
3492             [package => []]], # libxml2.dylib is part of the base system
3493             ],
3494              
3495             [cpanmod => 'XML::LibXSLT',
3496             [os_freebsd,
3497             [package => 'libxslt']],
3498             [os_dragonfly,
3499             [package => 'libxslt']],
3500             [os_openbsd,
3501             [package => 'libxslt']],
3502             [like_debian,
3503             [package => ['libxslt1-dev', 'libgdbm-dev']]],
3504             [like_fedora,
3505             [package => 'libxslt-devel']],
3506             [os_darwin,
3507             [package => []]], # libxslt.dylib is part of the base system
3508             ],
3509              
3510             [cpanmod => 'XML::Parser',
3511             [os_freebsd,
3512             [package => 'expat']],
3513             [os_dragonfly,
3514             [package => 'expat']],
3515             [os_openbsd,
3516             [package => 'expat']],
3517             [like_debian,
3518             [package => 'libexpat1-dev']],
3519             [like_fedora,
3520             [package => 'expat-devel']],
3521             ],
3522              
3523             [cpanmod => 'XML::Sablotron',
3524             # compiles only with perl < 5.14, see https://rt.cpan.org/Ticket/Display.html?id=66849
3525             [os_freebsd,
3526             [package => 'Sablot']],
3527             # no sablot package on debian
3528             ],
3529              
3530             [cpanmod => 'XML::Saxon::XSLT2', # needs java
3531             [os_freebsd,
3532             [package => 'saxon-he']],
3533             # XXX what about debian?
3534             ],
3535              
3536             [cpanmod => 'XML::WBXML',
3537             [os_freebsd,
3538             [package => 'wbxml2']],
3539             [like_debian,
3540             [package => 'libwbxml2-dev']]],
3541              
3542             [cpanmod => 'XML::Xerces', # "You must use Xerces-C-2.7.0"
3543             [os_freebsd,
3544             [package => 'xerces-c2']],
3545             [like_debian,
3546             # probably needs setting of XERCES_* variables?
3547             [linuxdistrocodename => ['wheezy'],
3548             [package => 'libxerces-c2-dev']],
3549             [package => 'libxerces-c-dev'], # will not work, because jessie has Xerces-C-3.1.1
3550             ]],
3551              
3552             [cpanmod => 'X::Osd',
3553             [os_freebsd,
3554             [package => 'xosd']],
3555             [like_debian,
3556             [package => 'libxosd-dev']]],
3557              
3558             [cpanmod => 'X11::FullScreen',
3559             [os_freebsd,
3560             [package => 'imlib2']],
3561             [like_debian,
3562             [package => 'libimlib2-dev']]],
3563              
3564             [cpanmod => 'X11::GUITest',
3565             # XXX what about freebsd?
3566             [like_debian,
3567             [package => ['libxt-dev', 'libxtst-dev']]],
3568             [like_fedora,
3569             [package => 'libXtst-devel']],
3570             ],
3571              
3572             [cpanmod => 'X11::XCB',
3573             [os_freebsd,
3574             [package => 'xcb-util-wm']],
3575             [like_debian,
3576             [package => ['xsltproc', 'xcb-proto', 'libxcb-util0-dev', 'libxcb-xinerama0-dev', 'libxcb-icccm4-dev']]]],
3577              
3578             [cpanmod => 'X11::Xlib',
3579             [os_freebsd,
3580             [package => 'libXtst']],
3581             [os_dragonfly,
3582             [package => 'libXtst']],
3583             [like_debian,
3584             [package => 'libxtst-dev']],
3585             [like_fedora,
3586             [package => 'libXtst-devel']],
3587             ],
3588              
3589             [cpanmod => 'YAML::LibYAML::API',
3590             [os_freebsd,
3591             [package => 'libyaml']],
3592             [like_debian,
3593             [package => 'libyaml-dev']],
3594             [like_fedora,
3595             [package => 'libyaml-devel']],
3596             [os_darwin,
3597             [package => 'libyaml']],
3598             ],
3599              
3600             [cpanmod => 'ZMQ::FFI',
3601             [os_freebsd,
3602             [package => 'libzmq4']], # seems to hang with nonthreaded perls on freebsd, wait-and-kill rule exists
3603             [os_dragonfly,
3604             [package => 'libzmq4']],
3605             [like_debian,
3606             [linuxdistrocodename => [qw(squeeze wheezy jessie xenial)],
3607             [package => 'libzmq-dev']],
3608             [package => 'libzmq3-dev']], # e.g. stretch
3609             [os_darwin,
3610             [package => 'zmq']],
3611             ],
3612              
3613             [cpanmod => 'ZMQ::LibZMQ4',
3614             [os_freebsd,
3615             [package => 'libzmq4']], # seems to hang with nonthreaded perls on freebsd, wait-and-kill rule exists (?)
3616             [os_dragonfly,
3617             [package => 'libzmq4']],
3618             [like_debian,
3619             # [linuxdistrocodename => [qw(squeeze wheezy jessie)],
3620             # [package => []]], # libzmq5 is ZMQ4.1 (!); according to http://zeromq.org/distro:debian only available in experimental (and probably sid)
3621             [package => 'libzmq3-dev'], # note: libzmq3-dev is ZMQ4.0 (!)
3622             ]],
3623              
3624             [cpanmod => 'ZOOM::IRSpy',
3625             [os_freebsd,
3626             [package => 'yaz']],
3627             [like_debian,
3628             [package => 'libyaz4-dev']]],
3629              
3630             # XXX find out which modules:
3631             # # various wordnet-using modules
3632             # package { "wordnet-base": ensure => installed }
3633              
3634             );
3635             }
3636              
3637             1;
3638              
3639             __END__