X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=Makefile.PL;h=4fe9b5923eabd210482c475d5fed48e5363e9ed3;hb=faaf13a6b3e9e34a4d5eebd3f43ca660a8749d42;hp=e7c6f2c769016618fc3087ac7298a31b35af3928;hpb=a740bcda76563a4005a28f685912c3d489c971df;p=koha_fer diff --git a/Makefile.PL b/Makefile.PL old mode 100755 new mode 100644 index e7c6f2c769..4fe9b5923e --- a/Makefile.PL +++ b/Makefile.PL @@ -18,12 +18,17 @@ # Current maintainer MJR http://mjr.towers.org.uk/ # See http://www.koha.org/wiki/?page=KohaInstaller # -# 2007-11-05 Corrected CGI copy to include entire 'installer' subdir structure. -fbcit + use ExtUtils::MakeMaker; use POSIX; die "perl 5.6.1 or later required" unless ($] >= 5.006001); +# Hash up directory structure & files beginning with the directory we were called from (should be the base of koha)... + +my $dirtree = hashdir('.'); +my %result = (); + =head1 NAME Makefile.PL - Koha packager and installer @@ -47,7 +52,7 @@ Makefile.PL - Koha packager and installer =head1 DESCRIPTION -This is a packager and installer that uses +This is a Packager and installer that uses ExtUtils::MakeMaker, which is fairly common on perl systems. As well as building tar or zip files @@ -87,6 +92,19 @@ to generate initial configuration files in future. =cut +my $marc_value; +my $lang_value; + + +while ($marc_value ne 'marc21' && $marc_value ne 'unimarc'){ + my $message= "Chose your flavour of MARC, unimarc or marc21 [marc21]"; + $marc_value=prompt($message) || 'marc21'; +} +while ($lang_value ne 'en' && $lang_value ne 'fr'){ + my $message= "Choose your language, en or fr [en]"; + $lang_value=prompt($message) || 'en'; +} + WriteMakefile( NAME => 'koha', @@ -119,9 +137,10 @@ WriteMakefile( 'Lingua::Stem' => 0.82, 'List::Util' => 1.18, 'Locale::Language' => 2.07, -'MARC::Charset' => 0.95, -'MARC::File::XML' => 0.86, -'MARC::Record' => 1.38, +'MARC::Charset' => 0.98, +'MARC::Crosswalk::DublinCore' => 0.03, +'MARC::File::XML' => 0.88, +'MARC::Record' => 2.00, 'MIME::Base64' => 3.07, 'MIME::QuotedPrint' => 3.07, 'Mail::Sendmail' => 0.79, @@ -137,6 +156,7 @@ WriteMakefile( 'Test::Harness' => 2.56, 'Test::More' => 0.62, 'Text::CSV' => 0.01, +'Text::CSV_XS' => 0.32, 'Text::Wrap' => 2005.082401, 'Time::HiRes' => 1.86, 'Time::localtime' => 1.02, @@ -150,7 +170,8 @@ WriteMakefile( }, # File tree mapping - PM => map_tree(), +# PM => map_tree(), + PM => unhashdir($dirtree), # disable tests 'test' => {TESTS => 't/dummy.t'}, @@ -185,68 +206,69 @@ WriteMakefile( =head1 FUNCTIONS -=head2 map_tree +=head2 hashdir -This function lists all files and where to install each one. -It returns a hash reference suitable for the PM variable above. +This function recurses through the directory structure and builds +a hash of hashes containing the structure with arrays holding filenames. +This directory hashing routine was taken from BrowserUK @ http://www.perlmonks.org/?node_id=219919 =cut -sub map_tree { - my %result => (); +sub hashdir{ + my $dir = shift; + opendir my $dh, $dir or die $!; + my $tree = {}->{$dir} = {}; + while( my $file = readdir($dh) ) { + next if $file =~ m/^\.{1,2}/; + my $path = $dir .'/' . $file; + $tree->{$file} = hashdir($path), next if -d $path; + push @{$tree->{'.'}}, $file; + } + return $tree; +} -=pod +=head2 unhashdir -C4/*.pm is copied to perl's lib namespace. +This function unhashes the hash of hashes generated by hashdir(). +This directory unhashing routine is the personal work of Chris Nighswonger (fbcit). +Modified here to build koha makefile. It lists all files and where to install each one. +It then returns a hash reference suitable for the PM variable above. =cut - foreach my $src (glob("C4/*.pm")) { - $result{$src} = '$(INST_LIBDIR)/'.$src; - } - -=pod -CGIs are copied to $(PREFIX)/lib/cgi-bin/koha/ -and other scripts to koha/ - -=cut - foreach my $src ("mainpage.pl","help.pl","kohaversion.pl",glob("*/*.pl"),glob("installer/*"),glob("installer/*/*/*/*"),glob("*/*/*.pl"),glob("*/*/*/*.pl")) { - if ($src =~ /(misc|updater|rss)\//) { - $result{$src} = '$(INST_LIBDIR)/koha/'.$src; - } else { - $result{$src} = '$(PREFIX)/lib/cgi-bin/koha/'.$src; +sub unhashdir{ + my $dirhash = shift; + my $dirlevel = shift; + my $toplevel = $dirlevel; + for my $k1 ( sort keys %$dirhash ) { + if ($k1 ne '.' && $k1 ne '') { + $dirlevel = ( $dirlevel ? $dirlevel . '/' . $k1 : $k1 ); + &unhashdir($dirhash->{ $k1 }, $dirlevel); + $dirlevel = $toplevel; } - } + elsif ( $k1 eq '.' ) { + foreach $file ( @{$dirhash->{ $k1 }} ) { +# TODO: There are some hacks here that may be able to be improved... -fbcit + if ( $file =~ /^./ ) { next; } # skip hidden files and directories. -=pod + elsif ( $file =~ /\.pm/ && $dirlevel =~ /C4/ ) { $result{ ($dirlevel ? $dirlevel . '/' . $file : $file) } = '$(INST_LIBDIR)/' . ($dirlevel ? $dirlevel . '/' . $file : $file); } # C4/*.pm is copied to perl's lib namespace. -Templates are copied to koha/templates, + elsif ( $dirlevel !~ /koha-tmpl/ && $dirlevel =~ /(installer|errors)/ ) { $result{ ($dirlevel ? $dirlevel . '/' . $file : $file) } = '$(PREFIX)/lib/cgi-bin/koha/' . ($dirlevel ? $dirlevel . '/' . $file : $file); } # error templates are copied to $(PREFIX)/lib/cgi-bin/koha/ -=cut - 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/*/*/*/*/*")) { + elsif ( $dirlevel =~ /koha-tmpl/ && $dirlevel !~ /errors/ ) { $result{ ($dirlevel ? $dirlevel . '/' . $file : $file) } = '$(INST_LIBDIR)/koha/templates/' . ($dirlevel ? $dirlevel . '/' . $file : $file); } # error templates are copied to $(INST_LIBDIR)/koha/templates/ -=pod + elsif ( $dirlevel =~ /(misc|rss)/ ) { $result{ ($dirlevel ? $dirlevel . '/' . $file : $file) } = '$(INST_LIBDIR)/koha/' . ($dirlevel ? $dirlevel . '/' . $file : $file); } # misc & rss are copied to koha, -excluding non-files, CVS files and whitespace in filenames. +# elsif ( $dirlevel =~ /(intranet-tmpl|opac-tmpl)/ ) { $result{ ($dirlevel ? $dirlevel . '/' . $file : $file) } = '$(INST_LIBDIR)/koha/templates/' . ($dirlevel ? $dirlevel . '/' . $file : $file); } # Templates are copied to koha/templates, -=cut - if ((-f $src) && ($src !~ /(\/CVS\/|\s)/)) { - $result{$src} = '$(INST_LIBDIR)/koha/templates/'.$src; - } - } -=pod + elsif ( $file !~ /\.pl/ && $dirlevel =~ /etc/ ) { $result{ ($dirlevel ? $dirlevel . '/' . $file : $file) } = '$(PREFIX)/share/koha/' . ($dirlevel ? $dirlevel . '/' . $file : $file); } # Misc etc to koha/etc -etc files are copied to /usr/share/koha/etc/ + elsif ( $file =~ /\.pl/ ) { $result{ ($dirlevel ? $dirlevel . '/' . $file : $file) } = '$(PREFIX)/lib/cgi-bin/koha/' . ($dirlevel ? $dirlevel . '/' . $file : $file); } # CGIs are copied to $(PREFIX)/lib/cgi-bin/koha/ print $result{ ($dirlevel ? $dirlevel . '/' . $file : $file)},"\n\n"; -=cut - # Misc etc to koha/etc - foreach my $src (glob("etc/zebradb/*/*/*"),glob("etc/zebradb/*/*"),glob("etc/zebradb/*"),glob("etc/*")) { - if (-f $src) { - $result{$src} = '$(PREFIX)/share/koha/'.$src; + } + next; } } - - return \%result; } @@ -257,7 +279,7 @@ __END__ ExtUtils::MakeMaker(3) -=head1 AUTHOR +=head1 AUTHORS MJ Ray mjr at phonecoop.coop