perltidy help.pl
[wip/koha-chris_n.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         perl Makefile.PL
33         make
34         sudo make install
35         make manifest tardist
36         make manifest zipdist
37
38 =head1 DESCRIPTION
39
40 This is a packager and installer that uses
41 ExtUtils::MakeMaker, which is fairly common
42 on perl systems.
43 As well as building tar or zip files
44 and installing,
45 it allows us to check pre-requisites
46 and generate configuration files.
47
48 =head1 VARIABLES
49
50 =head2 NAME, VERSION, ABSTRACT, AUTHOR
51
52 Basic metadata about this software.
53
54 =head2 NO_META
55
56 Suppress generation of META.yml file.
57
58 =head2 PREREQ_PM
59
60 Hash of perl modules and versions required.
61
62 =head2 PM
63
64 Hash of file mappings
65
66 =head2 CONFIGURE
67
68 Maybe use prompt() here in future to get configuration values at installation time.
69
70 =head2 PL_FILES
71
72 This is a hash of PL scripts to run after installation and
73 the files to ask them to generate.
74 Maybe use the values from CONFIGURE
75 to generate initial configuration files.
76
77 =cut
78
79 WriteMakefile(
80
81     NAME => 'koha',
82     VERSION => strftime('2.9.%Y%m%d%H',gmtime),
83     ABSTRACT => 'Award-winning integrated library system (ILS) and Web OPAC',
84     AUTHOR => 'Koha Developers <koha-devel@nongnu.org>',
85     NO_META => 1,
86     PREREQ_PM => {
87 'CGI' => 3.15,
88 'CGI::Carp' => 1.29,
89 'CGI::Session' => '4.10',
90 'Class::Accessor' => 0.30,
91 'DBD::mysql' => 3.0008,
92 'DBI' => 1.53,
93 'Data::Dumper' => 2.121_08,
94 'Data::Random' => 0.05,
95 'Date::Calc' => 5.4,
96 'Date::Manip' => 5.44,
97 'Digest::MD5' => 2.36,
98 'Event' => 1.06,
99 'File::Temp' => 0.16,
100 'GD::Barcode::UPCE' => 1.1,
101 'Getopt::Long' => 2.35,
102 'Getopt::Std' => 1.05,
103 'HTML::Template' => 2.8,
104 'HTML::Template::Pro' => 0.65,
105 'HTML::Tree' => 3.1901,
106 'HTTP::Cookies' => 1.39,
107 'HTTP::Request::Common' => 1.26,
108 'LWP::Simple' => 1.41,
109 'LWP::UserAgent' => 2.033,
110 'Lingua::Stem' => 0.82,
111 'List::Util' => 1.18,
112 'Locale::Language' => 2.07,
113 'MARC::Charset' => 0.95,
114 'MARC::File::XML' => 0.86,
115 'MARC::Record' => 1.38,
116 'MIME::Base64' => 3.07,
117 'MIME::QuotedPrint' => 3.07,
118 'Mail::Sendmail' => 0.79,
119 'Net::Z3950' => 0,
120 'Net::Z3950::ZOOM' => 1.16,
121 'PDF::API2' => 2.000,
122 'PDF::API2::Page' => 2.000,
123 'PDF::API2::Util' => 2.000,
124 'PDF::Reuse' => 0.33,
125 'PDF::Reuse::Barcode' => 0.05,
126 'POSIX' => 1.09,
127 'Term::ANSIColor' => 1.10,
128 'Test' => 1.25,
129 'Test::Harness' => 2.56,
130 'Test::More' => 0.62,
131 'Text::Wrap' => 2005.082401,
132 'Time::HiRes' => 1.86,
133 'Time::localtime' => 1.02,
134 'Unicode::Normalize' => 0.32,
135 'XML::LibXML' => 1.59,
136 'XML::SAX::ParserFactory' => 1.01,
137 'XML::Simple' => 2.14,
138 'XML::RSS' => 1.31,
139 'ZOOM' => 0,
140         },
141
142         # File tree mapping
143         PM => map_tree(),
144
145         # disable tests
146         'test' => {TESTS => 't/dummy.t'},
147
148 #   CONFIGURE => sub {
149 #     # Ask for options with prompt($question,$default) calls here?
150 #     return { macro => { 'export TEST' => '755' } }
151 #     },
152
153 #   PL_FILES => { # generator => target
154 #     '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'],
155 #     'misc/koha.conf.PL' => '$(INST_LIBDIR)/../etc/koha.conf',
156 #     'misc/apache-koha.conf.PL' => '$(INST_LIBDIR)/../etc/apache-koha.conf',
157 #     'misc/koha.sql.PL' => '$(INST_LIBDIR)/intranet/scripts/koha.sql',
158 #     'z3950/z3950-daemon-options.PL' => '$(INST_LIBDIR)/intranet/scripts/z3950daemon/z3950-daemon-options',
159 #     # fake target to check permissions
160 #     'misc/chmod.PL' => '$(INST_LIBDIR)/fake-target'
161 #     }
162    # need to set ownerships
163    # need to load koha.sql
164    # need to link koha-httpd.conf
165    # need to start z3950-daemon
166 );
167
168 =head1 FUNCTIONS
169
170 =head2 map_tree
171
172 This function lists all files and where to install each one.
173 It returns a hash reference suitable for PM.
174
175 =cut
176
177 sub map_tree {
178         my %result => ();
179
180 =pod
181
182 C4/*.pm is copied to perl's lib namespace.
183
184 =cut
185         foreach my $src (glob("C4/*.pm")) {
186                 $result{$src} = '$(INST_LIBDIR)/'.$src;
187         }
188
189 =pod
190
191 CGIs are copied to koha/cgi-bin
192 and other scripts to koha/examples.
193
194 =cut
195         # Misc scripts to koha/examples
196         foreach my $src (glob("*.pl"),glob("*/*.pl"),glob("installer/*.pm"),glob("*/*/*.pl"),glob("*/*/*/*.pl")) {
197                 if ($src =~ /(misc|updater|rss)\//) {
198                         $result{$src} = '$(INST_LIBDIR)/koha/scripts/'.$src;
199                 } else {
200                         $result{$src} = '$(INST_LIBDIR)/koha/cgi-bin/'.$src;
201                 }
202         }
203
204 =pod
205
206 Templates are copied to koha/templates,
207
208 =cut
209         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/*/*/*/*/*")) {
210
211 =pod
212
213 excluding non-files, CVS files and whitespace in filenames.
214
215 =cut
216                 if ((-f $src) && ($src !~ /(\/CVS\/|\s)/)) {
217                         $result{$src} = '$(INST_LIBDIR)/koha/templates/'.$src;
218                 }
219         }
220
221         return \%result;
222 }
223
224 __END__
225
226
227 =head1 SEE ALSO
228
229 ExtUtils::MakeMaker(3)
230
231 =cut
232