perl-5.26: . no longer in @INC

Michael Weiser <[email protected]> Fri, 13 Oct 2017 15:11:35 +0200
Newsgroups gmane.mail.majordomo.majordomo2.devel
Message-ID <[email protected]>
--+pHx0qQiF2pBVqBT
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hi,

I'm running the latest snapshot of Mj2 from
http://ftp.mj2.org/pub/mj2/snapshots/2016-04/ (20160404) on Gentoo.

Gentoo has recently introduced Perl 5.26 into the distribution. This
version no longer has . in @INC by default, breaking the Mj2
installation scripts:

[michael@build:~/majordomo] perl Makefile.PL 
Can't locate setup/query_util.pl in @INC (@INC contains: /etc/perl
/usr/local/lib/perl5/5.26.1/armv7ve-linux /usr/local/lib/perl5/5.26.1
/usr/lib/perl5/vendor_perl/5.26.1/armv7ve-linux
/usr/lib/perl5/vendor_perl/5.26.1 /usr/local/lib/perl5
/usr/lib/perl5/vendor_perl/5.24.3 /usr/lib/perl5/vendor_perl/5.24.2
/usr/lib/perl5/vendor_perl/5.24.1 /usr/lib/perl5/vendor_perl/5.24.0
/usr/lib/perl5/vendor_perl /usr/lib/perl5/5.26.1/armv7ve-linux
/usr/lib/perl5/5.26.1) at Makefile.PL line 8.

Gentoo has a detailed explanation of reasons and fallout here:
https://wiki.gentoo.org/wiki/Project:Perl/Dot-In-INC-Removal. Since this
is an upstream Perl change, it'll affect all Mj2 installations in time.

The attached patch makes Mj2 install and run for me. This is mostly
adding "./" to requires in the setup scripts.
-- 
Thanks,
Michael

--+pHx0qQiF2pBVqBT
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="majordomo-20160404-dotinc.patch"

--- majordomo-20160404/Makefile.PL.orig       2017-10-12 19:47:39.885216523 +0200
+++ majordomo-20160404/Makefile.PL    2017-10-12 19:47:39.905216523 +0200
@@ -5,9 +5,9 @@
 $|  = 1;
 use Carp;
 use Config;
-require "setup/query_util.pl";
-require "setup/ask_basic.pl";
-require "setup/setup_func.pl";
+require "./setup/query_util.pl";
+require "./setup/ask_basic.pl";
+require "./setup/setup_func.pl";
 
 BEGIN {
   require 5.00401;
--- majordomo-20160404/convertlist.pl.orig	2017-10-12 19:44:12.005216424 +0200
+++ majordomo-20160404/convertlist.pl	2017-10-12 19:44:12.025216424 +0200
@@ -3,8 +3,8 @@
 use Getopt::Std;
 use Fcntl;
 use Data::Dumper;
-require "setup/query_util.pl";
-require "setup/setup_func.pl";
+require "./setup/query_util.pl";
+require "./setup/setup_func.pl";
 use vars qw(%opts $mjcfg);
 $|=1;
 
--- majordomo-20160404/postinstall.orig	2017-10-12 19:44:12.085216424 +0200
+++ majordomo-20160404/postinstall	2017-10-12 19:44:12.095216424 +0200
@@ -8,9 +8,9 @@
 
 use DirHandle;
 use Data::Dumper;
-require "setup/query_util.pl";
-require "setup/install_util.pl";
-require "setup/setup_func.pl";
+require "./setup/query_util.pl";
+require "./setup/install_util.pl";
+require "./setup/setup_func.pl";
 
 # We call mj_shell (which we make sure has the right permissions) to do the
 # dirty work; it would be possible to include the routines directly, but
--- majordomo-20160404/setup/ask_basic.pl.orig	2017-10-12 19:44:12.105216424 +0200
+++ majordomo-20160404/setup/ask_basic.pl	2017-10-12 19:44:12.115216424 +0200
@@ -248,7 +248,7 @@
     $config->{queue_mode} : 1;
   $config->{queue_mode} = get_bool($msg, $def);
   if ($config->{queue_mode}) {
-    require "setup/ask_queueing.pl";
+    require "./setup/ask_queueing.pl";
     ask_queueing($config);
   }
 
@@ -273,19 +273,19 @@
   $config->{'mta'} = get_enum($msg, $def, [qw(none sendmail exim qmail postfix)]);
 
   if ($config->{'mta'} eq 'sendmail') {
-    require "setup/mta_sendmail.pl";
+    require "./setup/mta_sendmail.pl";
     ask_sendmail($config);
   }
   elsif ($config->{'mta'} eq 'exim') {
-    require "setup/mta_exim.pl";
+    require "./setup/mta_exim.pl";
     ask_exim($config);
   }
   elsif ($config->{'mta'} eq 'postfix') {
-    require "setup/mta_postfix.pl";
+    require "./setup/mta_postfix.pl";
     ask_postfix($config);
   }
   elsif ($config->{'mta'} eq 'qmail') {
-    require "setup/mta_qmail.pl";
+    require "./setup/mta_qmail.pl";
     ask_qmail($config);
   }
 
@@ -295,7 +295,7 @@
          [$Net::Config::NetConfig{'inet_domain'}] || undef;
   $config->{'domains'} = get_list($msg, $def, 1);
 
-  require "setup/ask_domain.pl";
+  require "./setup/ask_domain.pl";
   for $i (@{$config->{'domains'}}) {
     ask_domain($config, $i);
   }
--- majordomo-20160404/setup/ask_domain.pl.orig	2017-10-12 19:44:12.125216424 +0200
+++ majordomo-20160404/setup/ask_domain.pl	2017-10-12 19:44:12.135216424 +0200
@@ -71,7 +71,7 @@
 
   #---- Ask for qmail information
   if ($config->{'mta'} eq 'qmail') {
-    require "setup/mta_qmail.pl";
+    require "./setup/mta_qmail.pl";
     ask_qmail_domain($config, $dom);
   }
 }
--- majordomo-20160404/setup/mta_exim.pl.orig	2017-10-12 19:44:12.145216424 +0200
+++ majordomo-20160404/setup/mta_exim.pl	2017-10-12 19:44:12.155216424 +0200
@@ -30,7 +30,7 @@
   my ($config, $dom) = @_;
   my $whereami = $config->{'domain'}{$dom}->{'whereami'};
 
-  require "setup/mta_sendmail.pl";
+  require "./setup/mta_sendmail.pl";
   setup_sendmail_domain($config, $dom);
 
   #---- Suggest routers or directors for the exim configuration file.
--- majordomo-20160404/setup/mta_postfix.pl.orig	2017-10-12 19:44:12.165216424 +0200
+++ majordomo-20160404/setup/mta_postfix.pl	2017-10-12 19:44:12.175216424 +0200
@@ -22,7 +22,7 @@
 sub setup_postfix_domain {
   my($config, $dom) = @_;
 
-  require "setup/mta_sendmail.pl";
+  require "./setup/mta_sendmail.pl";
   setup_sendmail_domain($config, $dom);
 }
 
--- majordomo-20160404/setup/newdomain.pl.orig	2017-10-12 19:44:12.185216424 +0200
+++ majordomo-20160404/setup/newdomain.pl	2017-10-12 19:44:12.195216424 +0200
@@ -8,11 +8,11 @@
 
 use DirHandle;
 use Data::Dumper;
-require "setup/ask_basic.pl";
-require "setup/ask_domain.pl";
-require "setup/query_util.pl";
-require "setup/install_util.pl";
-require "setup/setup_func.pl";
+require "./setup/ask_basic.pl";
+require "./setup/ask_domain.pl";
+require "./setup/query_util.pl";
+require "./setup/install_util.pl";
+require "./setup/setup_func.pl";
 use vars qw($config $lang $nosep $sepclear);
 my (@domains, $dom, $install, $newdomain);
 
@@ -106,7 +106,7 @@
   no strict 'refs';
   my $nhead = 0;
   my @domains = get_domains();
-  require "setup/mta_$config->{mta}.pl";
+  require "./setup/mta_$config->{mta}.pl";
 
   # First do the generalized setup
   &{"setup_$config->{mta}"}($config);
--- majordomo-20160404/setup/setup_func.pl.orig	2017-10-12 19:44:12.215216424 +0200
+++ majordomo-20160404/setup/setup_func.pl	2017-10-12 19:44:12.225216424 +0200
@@ -128,8 +128,8 @@
 
   # Open the master defaults file, in lib/mj_cf_defs.pl
   # open MASTER, 'lib/mj_cf_defs.pl';
-  require 'lib/mj_cf_defs.pl';
-  require 'lib/mj_cf_data.pl';
+  require './lib/mj_cf_defs.pl';
+  require './lib/mj_cf_data.pl';
 
   $subs = {
 	   'addr_strict_domain_check' => $config->{domain}{$dom}{addr_strict_domain_check},
@@ -404,7 +404,7 @@
 sub mta_setup {
   no strict 'refs';
   my ($df, $gid, $i, $nhead, $uid);
-  require "setup/mta_$config->{mta}.pl";
+  require "./setup/mta_$config->{mta}.pl";
 
   # First do the generalized setup
   &{"setup_$config->{mta}"}($config);
@@ -453,10 +453,10 @@
 sub read_mj_config {
   my $lang = shift;
   my $msg;
-  require 'setup/query_util.pl';
+  require './setup/query_util.pl';
 
   my $destdir = $ENV{DESTDIR};
-  $config = eval { require ".mj_config" };
+  $config = eval { require "./.mj_config" };
 
   if (defined $config &&
       defined $destdir . $config->{'install_dir'} &&
--- majordomo-20160404/setup/siteconfig.pl.orig	2017-10-12 19:44:12.235216424 +0200
+++ majordomo-20160404/setup/siteconfig.pl	2017-10-12 19:44:12.245216424 +0200
@@ -2,11 +2,11 @@
 
 use DirHandle;
 use Data::Dumper;
-require "setup/ask_basic.pl";
-require "setup/ask_domain.pl";
-require "setup/query_util.pl";
-require "setup/install_util.pl";
-require "setup/setup_func.pl";
+require "./setup/ask_basic.pl";
+require "./setup/ask_domain.pl";
+require "./setup/query_util.pl";
+require "./setup/install_util.pl";
+require "./setup/setup_func.pl";
 use vars qw($config $lang $nosep $sepclear);
 
 $config = read_mj_config($lang);
@@ -72,19 +72,19 @@
   $config->{'mta'} = get_enum($msg, $def, [qw(none sendmail exim qmail postfix)]);
 
   if ($config->{'mta'} eq 'sendmail') {
-    require "setup/mta_sendmail.pl";
+    require "./setup/mta_sendmail.pl";
     ask_sendmail($config);
   }
   elsif ($config->{'mta'} eq 'exim') {
-    require "setup/mta_exim.pl";
+    require "./setup/mta_exim.pl";
     ask_exim($config);
   }
   elsif ($config->{'mta'} eq 'postfix') {
-    require "setup/mta_postfix.pl";
+    require "./setup/mta_postfix.pl";
     ask_postfix($config);
   }
   elsif ($config->{'mta'} eq 'qmail') {
-    require "setup/mta_qmail.pl";
+    require "./setup/mta_qmail.pl";
     ask_qmail($config);
   }
 }
--- majordomo-20160404/installbin.orig	2017-10-12 20:02:58.623835995 +0200
+++ majordomo-20160404/installbin	2017-10-12 20:02:58.633835995 +0200
@@ -2,7 +2,7 @@
 use Config;
 use Fcntl qw(:flock :DEFAULT);
 use File::Copy;
-$config = eval {require ".mj_config"};
+$config = eval {require "./.mj_config"};
 die "Invalid .mj_config" unless $config;
 
 my $uid = getpwnam($config->{'uid'});
--- majordomo-20160404/postinstall.orig	2017-10-12 20:02:58.673835995 +0200
+++ majordomo-20160404/postinstall	2017-10-12 20:02:58.683835995 +0200
@@ -17,7 +17,7 @@
 # this makes sure that everything was installed correctly.  It's better to
 # bomb here than to let a bad installation slip by.
 
-$config = eval { require ".mj_config" };
+$config = eval { require "./.mj_config" };
 die retr_msg('no_mj_config', $lang)
   unless $config;
 
--- majordomo-20160404/t/core.t.orig	2017-10-12 20:02:58.773835995 +0200
+++ majordomo-20160404/t/core.t	2017-10-12 20:02:58.783835995 +0200
@@ -16,7 +16,7 @@
 print "1..38\n";
 
 print "Load the stashed configuration\n";
-eval('$config = require ".mj_config"');
+eval('$config = require "./.mj_config"');
 $a = $config;
 undef $a;     # Quiet 'used only once' warning.
 ok(1, !$@);
--- majordomo-20160404/t/shell.t.orig	2017-10-12 20:02:58.823835996 +0200
+++ majordomo-20160404/t/shell.t	2017-10-12 20:02:58.833835996 +0200
@@ -7,7 +7,7 @@
 $counter = 1;
 
 # 1
-eval('$config = require ".mj_config"');
+eval('$config = require "./.mj_config"');
 $a = $config;
 undef $a;     # Quiet 'used only once' warning.
 ok(1, !$@);

--+pHx0qQiF2pBVqBT--