Bug 33146: Unit tests
[koha-ffzg.git] / Makefile.PL
index 91d4b3c..2acf916 100644 (file)
@@ -83,7 +83,7 @@ Makefile.PL - Koha packager and installer
     --db_name                    Database name (e.g. koha)
     --db_user                    Database user (e.g. kohaadmin)
     --db_pass                    Database password (e.g. katikoan)
-    --zebra_marc_format          Zebra MARC format (marc21, normarc, unimarc)
+    --zebra_marc_format          Zebra MARC format (marc21, unimarc)
     --zebra_language             Zebra language (e.g. en)
     --zebra_tokenizer            Zebra tokenizer (chr, icu)
     --zebra_user                 Zebra user (e.g. kohauser)
@@ -320,6 +320,7 @@ my $target_map = {
   './docs/contributors.yaml'    => { target => 'DOC_DIR', trimdir => -1 },
   './docs/teams.yaml'           => { target => 'DOC_DIR', trimdir => -1 },
   './offline_circ'              => 'INTRANET_CGI_DIR',
+  './erm'                       => 'INTRANET_CGI_DIR',
   './etc'                       => { target => 'KOHA_CONF_DIR', trimdir => -1 },
   './etc/zebradb'               => { target => 'ZEBRA_CONF_DIR', trimdir => -1 },
   './etc/z3950'                 => { target => 'Z3950_CONF_DIR', trimdir => -1 },
@@ -334,6 +335,7 @@ my $target_map = {
   './koha-tmpl/opac-tmpl'       => {target => 'OPAC_TMPL_DIR', trimdir => -1},
   './kohaversion.pl'            => 'INTRANET_CGI_DIR',
   './labels'                    => 'INTRANET_CGI_DIR',
+  './lib'                       => {target => 'PERL_MODULE_LIB_DIR', trimdir => -1},
   './mainpage.pl'               => 'INTRANET_CGI_DIR',
   './Makefile.PL'               => 'NONE',
   './MANIFEST.SKIP'             => 'NONE',
@@ -351,6 +353,7 @@ my $target_map = {
   './patron_lists'              => 'INTRANET_CGI_DIR',
   './plugins'                   => 'INTRANET_CGI_DIR',
   './pos'                       => 'INTRANET_CGI_DIR',
+  './recalls'                   => 'INTRANET_CGI_DIR',
   './reports'                   => 'INTRANET_CGI_DIR',
   './reserve'                   => 'INTRANET_CGI_DIR',
   './reviews'                   => 'INTRANET_CGI_DIR',
@@ -396,6 +399,9 @@ my $target_map = {
   'gulpfile.js'                 => 'NONE',
   'package.json'                => 'NONE',
   'yarn.lock'                   => 'NONE',
+  'cypress.json'                => 'NONE',
+  'tsconfig.json'               => 'NONE',
+  'webpack.config.js'           => 'NONE',
 };
 
 =head1 CONFIGURATION OPTIONS
@@ -564,7 +570,7 @@ my %valid_config_values = (
   'DB_TYPE' => { 'mysql' => 1, 'Pg' => 1 },
   'DB_USE_TLS' => {'yes', 'no'},
   'INSTALL_SRU' => { 'yes' => 1, 'no' => 1 },
-  'ZEBRA_MARC_FORMAT' => { 'marc21' => 1, 'normarc' => 1, 'unimarc' => 1 }, # FIXME should generate from contents of distributation
+  'ZEBRA_MARC_FORMAT' => { 'marc21' => 1, 'unimarc' => 1 }, # FIXME should generate from contents of distributation
   'ZEBRA_LANGUAGE'    => { 'cs' => 1, 'el' => 1, 'en' => 1, 'es' => 1, 'fr' => 1, 'nb' => 1, 'ru' => 1, 'uk' => 1 }, # FIXME should generate from contents of distribution
   'ZEBRA_TOKENIZER' => { chr => 1, icu => 1 },
   'RUN_DATABASE_TESTS' => { 'yes' => 1, 'no' => 1 },
@@ -657,11 +663,29 @@ display_configuration(\%config, $target_directories);
 my $file_map = {};
 get_file_map($target_map, $dirtree, $file_map);
 
+#NOTE: List files generated by build-resources.PL, so that they're copied into blib for installation
+#INTRANET_TMPL_DIR
+$file_map->{'koha-tmpl/intranet-tmpl/prog/css/calendar.css'} = 'blib/INTRANET_TMPL_DIR/prog/css/calendar.css';
+$file_map->{'koha-tmpl/intranet-tmpl/prog/css/holds.css'} = 'blib/INTRANET_TMPL_DIR/prog/css/holds.css';
+$file_map->{'koha-tmpl/intranet-tmpl/prog/css/installer.css'} = 'blib/INTRANET_TMPL_DIR/prog/css/installer.css';
+$file_map->{'koha-tmpl/intranet-tmpl/prog/css/mainpage.css'} = 'blib/INTRANET_TMPL_DIR/prog/css/mainpage.css';
+$file_map->{'koha-tmpl/intranet-tmpl/prog/css/staff-global.css'} = 'blib/INTRANET_TMPL_DIR/prog/css/staff-global.css';
+$file_map->{'koha-tmpl/intranet-tmpl/prog/js/vue/dist/erm.js'} = 'blib/INTRANET_TMPL_DIR/prog/js/vue/dist/erm.js';
+$file_map->{'koha-tmpl/intranet-tmpl/prog/js/vue/dist/erm.js.LICENSE.txt'} = 'blib/INTRANET_TMPL_DIR/prog/js/vue/dist/erm.js.LICENSE.txt';
+#OPAC_TMPL_DIR
+$file_map->{'koha-tmpl/opac-tmpl/bootstrap/css/opac.css'} = 'blib/OPAC_TMPL_DIR/bootstrap/css/opac.css';
+$file_map->{'koha-tmpl/opac-tmpl/bootstrap/css/opac-rtl.css'} = 'blib/OPAC_TMPL_DIR/bootstrap/css/opac-rtl.css';
+$file_map->{'koha-tmpl/opac-tmpl/bootstrap/css/print.css'} = 'blib/OPAC_TMPL_DIR/bootstrap/css/print.css';
+$file_map->{'koha-tmpl/opac-tmpl/bootstrap/css/print-rtl.css'} = 'blib/OPAC_TMPL_DIR/bootstrap/css/print-rtl.css';
+$file_map->{'koha-tmpl/opac-tmpl/bootstrap/css/sco.css'} = 'blib/OPAC_TMPL_DIR/bootstrap/css/sco.css';
+$file_map->{'koha-tmpl/opac-tmpl/bootstrap/css/sco-rtl.css'} = 'blib/OPAC_TMPL_DIR/bootstrap/css/sco-rtl.css';
+
 my $pl_files = {
       'rewrite-config.PL' => [
          'blib/KOHA_CONF_DIR/koha-conf.xml',
          'blib/KOHA_CONF_DIR/koha-httpd.conf',
          'blib/KOHA_CONF_DIR/log4perl.conf',
+         'blib/KOHA_CONF_DIR/koha-worker.service',
          'blib/ZEBRA_CONF_DIR/etc/default.idx',
          'blib/MISC_DIR/koha-install-log'
          ],
@@ -691,7 +715,6 @@ $config{'BIB_RETRIEVAL_CFG'}  = 'retrieval-info-bib-dom.xml';
 if ($config{'INSTALL_MODE'} ne "dev") {
     push @{ $pl_files->{'rewrite-config.PL'} }, (
         'blib/PERL_MODULE_DIR/C4/Context.pm',
-        'blib/SCRIPT_NONDEV_DIR/kohalib.pl'
     );
 }
 
@@ -1149,7 +1172,7 @@ You must specify the primary MARC format of the
 records to be indexed by Zebra.
 
 Koha provides Zebra configuration files for MARC21,
-NORMARC and UNIMARC.
+and UNIMARC.
 
 MARC format for Zebra indexing);
     $msg .= _add_valid_values_disp('ZEBRA_MARC_FORMAT', $valid_values);
@@ -1432,6 +1455,7 @@ sub get_target_directories {
         $dirmap{'OPAC_TMPL_DIR'} = File::Spec->catdir(@basedir, $package, 'opac', 'htdocs', 'opac-tmpl');
         $dirmap{'OPAC_WWW_DIR'} = File::Spec->catdir(@basedir, $package, 'opac', 'htdocs');
         $dirmap{'PERL_MODULE_DIR'} = File::Spec->catdir(@basedir, $package, 'lib');
+        $dirmap{'PERL_MODULE_LIB_DIR'} = File::Spec->catdir(@basedir, $package, 'lib');
         $dirmap{'KOHA_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc');
         $dirmap{'ZEBRA_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc', 'zebradb');
         $dirmap{'Z3950_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc', 'z3950');
@@ -1463,8 +1487,11 @@ sub get_target_directories {
         $skipdirs{'OPAC_TMPL_DIR'} = 1;
         $dirmap{'OPAC_WWW_DIR'} = File::Spec->catdir($curdir, 'koha-tmpl');
         $skipdirs{'OPAC_WWW_DIR'} = 1;
+        #NOTE: We're hacking the dirmap here, so that PERL_MODULE_DIR tokens get rewritten correctly for git installs
         $dirmap{'PERL_MODULE_DIR'} = File::Spec->catdir($curdir);
         $skipdirs{'PERL_MODULE_DIR'} = 1;
+        $dirmap{'PERL_MODULE_LIB_DIR'} = File::Spec->catdir($curdir,'lib');
+        $skipdirs{'PERL_MODULE_LIB_DIR'} = 1;
         $dirmap{'KOHA_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc');
         $dirmap{'ZEBRA_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc', 'zebradb');
         $dirmap{'Z3950_CONF_DIR'} = File::Spec->catdir(@basedir, $package, 'etc', 'z3950');
@@ -1493,6 +1520,7 @@ sub get_target_directories {
         $dirmap{'OPAC_TMPL_DIR'} = File::Spec->catdir(@basedir, $package, 'opac', 'htdocs', 'opac-tmpl');
         $dirmap{'OPAC_WWW_DIR'} = File::Spec->catdir(@basedir, $package, 'opac', 'htdocs');
         $dirmap{'PERL_MODULE_DIR'} = File::Spec->catdir(@basedir, $package, 'lib');
+        $dirmap{'PERL_MODULE_LIB_DIR'} = File::Spec->catdir(@basedir, $package, 'lib');
         $dirmap{'KOHA_CONF_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'etc', $package);
         $dirmap{'ZEBRA_CONF_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'etc', $package, 'zebradb');
         $dirmap{'Z3950_CONF_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'etc', $package, 'z3950');
@@ -1645,6 +1673,8 @@ sub install {
     # This means that we're completely overriding EU::MM's default
     # installation and uninstallation targets.
 
+    my $perl5lib_dirs = _build_perl5lib_string({ target_dirs => $target_directories });
+
 # If installation is on Win32, we need to do permissions different from *nix
     if ( $^O =~ /darwin|linux|cygwin|freebsd|solaris/ ) { # this value needs to be verified for each platform and modified accordingly
            foreach my $key (sort keys %$target_directories) {
@@ -1699,7 +1729,7 @@ install :: all install_koha set_koha_ownership set_koha_permissions warn_koha_en
     $install .= "\t\$(NOECHO) \$(ECHO) you should set the following environment variables:\n";
     $install .= "\t\$(NOECHO) \$(ECHO)\n";
     $install .= "\t\$(NOECHO) \$(ECHO) export KOHA_CONF=\$(KOHA_DEST_KOHA_CONF_DIR)/koha-conf.xml\n";
-    $install .= "\t\$(NOECHO) \$(ECHO) export PERL5LIB=$target_directories->{'PERL_MODULE_DIR'}\n";
+    $install .= "\t\$(NOECHO) \$(ECHO) export PERL5LIB=$perl5lib_dirs\n";
     $install .= "\t\$(NOECHO) \$(ECHO)\n";
     $install .= "\t\$(NOECHO) \$(ECHO) For other post-installation tasks, please consult the README.\n";
     $install .= "\t\$(NOECHO) \$(ECHO)\n";
@@ -1766,9 +1796,16 @@ sub postamble {
     # rewrite-confg.PL
 
     my $env;
+
+    #NOTE: Build __PERL5LIB_DIRS__ for rewrite-config.PL
+    my $perl5lib_dirs = _build_perl5lib_string({ target_dirs => $target_directories });
+    if ($perl5lib_dirs){
+        $env .= "export __PERL5LIB_DIRS__ := $perl5lib_dirs\n"
+    }
+
        # Hereagain, we must alter syntax per platform...
         {
-               $env = join("\n", map { "export __${_}__ := $target_directories->{$_}" } keys %$target_directories);
+               $env .= join("\n", map { "export __${_}__ := $target_directories->{$_}" } keys %$target_directories);
                $env .= "\n\n";
                $env .= join("\n", map { "export __${_}__ := $config{$_}" } keys %config);
        }
@@ -1776,6 +1813,38 @@ sub postamble {
     return "$env\n";
 }
 
+sub top_targets {
+    my $inherited = shift->SUPER::top_targets(@_);
+    my $compile_step;
+    $compile_step .= "all :: compile_css_js\n";
+    $compile_step .= "\t" . '$(NOECHO) $(NOOP)' . "\n";
+    $compile_step .= "\n";
+    $compile_step .= "compile_css_js:\n";
+    $compile_step .= "\t" . '$(PERLRUN) build-resources.PL' . "\n";
+    my $top_targets = $compile_step . "\n" . $inherited;
+    return $top_targets;
+}
+
+sub _build_perl5lib_string {
+    my ($args) = @_;
+    my %unique_map = ();
+    my $perl5lib_str;
+    my $target_dirs = $args->{target_dirs};
+    my @dir_codes = ("PERL_MODULE_DIR","PERL_MODULE_LIB_DIR");
+    if ($target_dirs){
+        foreach my $code (@dir_codes){
+            my $path = $target_dirs->{ $code };
+            if ($path){
+                $unique_map{$path} = 1 unless $unique_map{$path};
+            }
+        }
+        my @paths = sort keys %unique_map;
+        if (@paths){
+            $perl5lib_str = join(':',@paths);
+        }
+    }
+    return $perl5lib_str;
+}
 
 __END__