adding missing dependancies (needed by scheduler & patron import)
[koha-ffzg.git] / Makefile.PL
1 # Copyright 2007 MJ Ray
2 #
3 # This file is part of Koha.
4 #
5 # Koha is free software; you can redistribute it and/or modify it under the
6 # terms of the GNU General Public License as published by the Free Software
7 # Foundation; either version 2 of the License, or (at your option) any later
8 # version.
9 #
10 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
11 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License along with
15 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
16 # Suite 330, Boston, MA  02111-1307 USA
17 #
18 # Current maintainer MJR http://mjr.towers.org.uk/
19 # See http://www.koha.org/wiki/?page=KohaInstaller
20
21 use ExtUtils::MakeMaker;
22 use POSIX;
23
24 die "perl 5.6.1 or later required" unless ($] >= 5.006001);
25
26 =head1 NAME
27
28 Makefile.PL - Koha packager and installer
29
30 =head1 SYNOPSIS
31
32 =head2 BASIC INSTALLATION
33
34         perl Makefile.PL
35         make
36         sudo make install
37
38 =head2 PACKAGING RELEASE TARBALLS
39
40         make manifest tardist
41         make manifest zipdist
42
43 =head2 CLEANING UP
44
45         make clean
46
47 =head1 DESCRIPTION
48
49 This is a packager and installer that uses
50 ExtUtils::MakeMaker, which is fairly common
51 on perl systems.
52 As well as building tar or zip files
53 and installing with the above commands,
54 it allows us to check pre-requisites
55 and generate configuration files.
56
57 =head1 VARIABLES
58
59 =head2 NAME, VERSION_FROM, ABSTRACT, AUTHOR
60
61 Basic metadata about this software.
62
63 =head2 NO_META
64
65 Suppress generation of META.yml file.
66
67 =head2 PREREQ_PM
68
69 Hash of perl modules and versions required.
70
71 =head2 PM
72
73 Hash of file mappings
74
75 =head2 CONFIGURE
76
77 Maybe use prompt() here in future to get configuration values 
78 interactively at installation time.
79
80 =head2 PL_FILES
81
82 This is a hash of PL scripts to run after installation and
83 the files to ask them to generate.
84 Maybe use the values from CONFIGURE
85 to generate initial configuration files in future.
86
87 =cut
88
89 WriteMakefile(
90
91     NAME => 'koha',
92     #VERSION => strftime('2.9.%Y%m%d%H',gmtime),
93     VERSION_FROM => 'C4/Context.pm',
94     ABSTRACT => 'Award-winning integrated library system (ILS) and Web OPAC',
95     AUTHOR => 'Koha Developers <koha-devel@nongnu.org>',
96     NO_META => 1,
97     PREREQ_PM => {
98 'CGI' => 3.15,
99 'CGI::Carp' => 1.29,
100 'CGI::Session' => '4.10',
101 'Class::Accessor' => 0.30,
102 'DBD::mysql' => 3.0008,
103 'DBI' => 1.53,
104 'Data::Dumper' => 2.121_08,
105 'Date::Calc' => 5.4,
106 'Date::Manip' => 5.44,
107 'Digest::MD5' => 2.36,
108 'File::Temp' => 0.16,
109 'GD::Barcode::UPCE' => 1.1,
110 'Getopt::Long' => 2.35,
111 'Getopt::Std' => 1.05,
112 'HTML::Template' => 2.8,
113 'HTML::Template::Pro' => 0.65,
114 'HTTP::Cookies' => 1.39,
115 'HTTP::Request::Common' => 1.26,
116 'LWP::Simple' => 1.41,
117 'LWP::UserAgent' => 2.033,
118 'Lingua::Stem' => 0.82,
119 'List::Util' => 1.18,
120 'Locale::Language' => 2.07,
121 'MARC::Charset' => 0.95,
122 'MARC::File::XML' => 0.86,
123 'MARC::Record' => 1.38,
124 'MIME::Base64' => 3.07,
125 'MIME::QuotedPrint' => 3.07,
126 'Mail::Sendmail' => 0.79,
127 'Net::Z3950' => 0,
128 'Net::Z3950::ZOOM' => 1.16,
129 'PDF::API2' => 2.000,
130 'PDF::API2::Page' => 2.000,
131 'PDF::API2::Util' => 2.000,
132 'PDF::Reuse' => 0.33,
133 'PDF::Reuse::Barcode' => 0.05,
134 'POSIX' => 1.09,
135 'Schedule::At' => 1.06',
136 'Term::ANSIColor' => 1.10,
137 'Test' => 1.25,
138 'Test::Harness' => 2.56,
139 'Test::More' => 0.62,
140 'Test::CSV' => 0.01,
141 'Text::Wrap' => 2005.082401,
142 'Time::HiRes' => 1.86,
143 'Time::localtime' => 1.02,
144 'Unicode::Normalize' => 0.32,
145 'XML::Dumper' => 0.81,
146 'XML::LibXML' => 1.59,
147 'XML::SAX::ParserFactory' => 1.01,
148 'XML::Simple' => 2.14,
149 'XML::RSS' => 1.31,
150 'ZOOM' => 0,
151         },
152
153         # File tree mapping
154         PM => map_tree(),
155
156         # disable tests
157         'test' => {TESTS => 't/dummy.t'},
158
159 #   CONFIGURE => sub {
160 #     # Ask for options with prompt($question,$default) calls here?
161 #     return { macro => { 'export TEST' => '755' } }
162 #     },
163
164    PL_FILES => { # generator => target(s)
165       'rewrite-config.PL' => [
166          '$(PREFIX)/share/koha/etc/koha-conf.xml',
167          '$(PREFIX)/share/koha/etc/koha-httpd.conf',
168          '$(PREFIX)/share/koha/etc/zebradb/tab/passwd',
169          '$(PREFIX)/share/koha/etc/zebradb/zebra-biblios.cfg',
170          '$(PREFIX)/share/koha/etc/zebradb/zebra-authorities.cfg'
171          ]
172    }
173 #     'opac/getfromintranet.PL' => ['$(INST_LIBDIR)/opac/cgi-bin/detail.pl','$(INST_LIBDIR)/opac/cgi-bin/moredetail.pl','$(INST_LIBDIR)/opac/cgi-bin/search.pl','$(INST_LIBDIR)/opac/cgi-bin/subjectsearch.pl','$(INST_LIBDIR)/opac/cgi-bin/logout.pl'],
174 #     'misc/koha.conf.PL' => '$(INST_LIBDIR)/../etc/koha.conf',
175 #     'misc/apache-koha.conf.PL' => '$(INST_LIBDIR)/../etc/apache-koha.conf',
176 #     'misc/koha.sql.PL' => '$(INST_LIBDIR)/intranet/scripts/koha.sql',
177 #     'z3950/z3950-daemon-options.PL' => '$(INST_LIBDIR)/intranet/scripts/z3950daemon/z3950-daemon-options',
178 #     # fake target to check permissions
179 #     'misc/chmod.PL' => '$(INST_LIBDIR)/fake-target'
180 #     }
181    # need to set ownerships
182    # need to load koha.sql
183    # need to link koha-httpd.conf
184    # need to start z3950-daemon
185 );
186
187 =head1 FUNCTIONS
188
189 =head2 map_tree
190
191 This function lists all files and where to install each one.
192 It returns a hash reference suitable for the PM variable above.
193
194 =cut
195
196 sub map_tree {
197         my %result => ();
198
199 =pod
200
201 C4/*.pm is copied to perl's lib namespace.
202
203 =cut
204         foreach my $src (glob("C4/*.pm")) {
205                 $result{$src} = '$(INST_LIBDIR)/'.$src;
206         }
207
208 =pod
209
210 CGIs are copied to $(PREFIX)/lib/cgi-bin/koha/
211 and other scripts to koha/
212
213 =cut
214         foreach my $src ("mainpage.pl","help.pl",glob("*/*.pl"),glob("installer/*.pm"),glob("*/*/*.pl"),glob("*/*/*/*.pl")) {
215                 if ($src =~ /(misc|updater|rss)\//) {
216                         $result{$src} = '$(INST_LIBDIR)/koha/'.$src;
217                 } else {
218                         $result{$src} = '$(PREFIX)/lib/cgi-bin/koha/'.$src;
219                 }
220         }
221
222 =pod
223
224 Templates are copied to koha/templates,
225
226 =cut
227         foreach my $src (glob("koha-tmpl/*"),glob("koha-tmpl/intranet-tmpl/*/*/*"),glob("koha-tmpl/intranet-tmpl/*/*/*/*"),glob("koha-tmpl/intranet-tmpl/*/*/*/*/*"),glob("koha-tmpl/opac-tmpl/*/*/*"),glob("koha-tmpl/opac-tmpl/*/*/*/*"),glob("koha-tmpl/opac-tmpl/*/*/*/*/*")) {
228
229 =pod
230
231 excluding non-files, CVS files and whitespace in filenames.
232
233 =cut
234                 if ((-f $src) && ($src !~ /(\/CVS\/|\s)/)) {
235                         $result{$src} = '$(INST_LIBDIR)/koha/templates/'.$src;
236                 }
237         }
238 =pod
239
240 etc files are copied to /usr/share/koha/etc/
241
242 =cut
243         # Misc etc to koha/etc
244         foreach my $src (glob("etc/zebradb/*/*/*"),glob("etc/zebradb/*/*"),glob("etc/zebradb/*"),glob("etc/*")) {
245                 if (-f $src) {
246                         $result{$src} = '$(PREFIX)/share/koha/'.$src;
247                 }
248         }
249
250
251         return \%result;
252 }
253
254 __END__
255
256
257 =head1 SEE ALSO
258
259 ExtUtils::MakeMaker(3)
260
261 =head1 AUTHOR
262
263 MJ Ray mjr at phonecoop.coop
264
265 =cut
266