manualroute as dynamic module
[exim.git] / test / runtest
index d3cea20a82794d2a8efaf532e2cc807c45c955b8..0c9f2808b94432f4a3ab636107edf79236ceeb01 100755 (executable)
@@ -1160,11 +1160,11 @@ RESET_AFTER_EXTRA_LINE_READ:
                (?: .*\sBerkeley\ DB
                  | \sProbably\ (?:Berkeley\ DB|ndbm|GDBM)
                  | \sUsing\ (?:tdb|sqlite3)
-                 | Authenticators:
+                 | Authenticators\ \((?:built-in|dynamic)\):
                  | Lookups(?:\(built-in\))?:
                  | Support\ for:
-                 | Routers:
-                 | Transports:
+                 | Routers\ \((?:built-in|dynamic)\):
+                 | Transports\ \((?:built-in|dynamic)\):
                  | Malware:
                  | log\ selectors\ =
                  | cwd=
@@ -1297,11 +1297,16 @@ RESET_AFTER_EXTRA_LINE_READ:
     next if /^tls_set_watch\(\) fail on '\/usr\/(?:lib\/ssl|local\/openssl3\/etc\/pki\/tls)\/cert.pem': No such file or directory$/;
 
     # drop lookups
-    next if /^$time_pid?(?: Lookups\ \(built-in\):
+    next if /^$time_pid?(?: Lookups\ \((?:built-in|dynamic)\):
+                                       | Loaded\ "[^.]+\.so"\ \(\d+\ lookup\ types\)
                                        | Loading\ lookup\ modules\ from
                                        | Loaded\ \d+\ lookup\ modules
                                        | Total\ \d+\ lookups)/x;
 
+    # drop loads of dyn-module drivers
+    next if /^$time_pid?(?:Loading\ \w+\ (?:router|transport|auth)\ driver\ from
+                         | Loaded\ \w+\ (?:router|transport|auth)$)/x;
+
     # drop compiler information
     next if /^$time_pid?Compiler:/;
 
@@ -3727,41 +3732,46 @@ while (<EXIMINFO>)
     %parm_support = @temp;
     }
 
-  elsif (/^Lookups \(built-in\): (.*)/)
+  elsif (/^Lookups \((?:built-in|dynamic)\):  ?(.*)/)
     {
     print;
     @temp = split /(\s+)/, $1;
     push(@temp, ' ');
-    %parm_lookups = @temp;
+    my %temp_lookups = @temp;
+    @parm_lookups{keys %temp_lookups} = values %temp_lookups;
     }
 
-  elsif (/^Authenticators(.*)/)
+  elsif (/^Authenticators \((?:built-in|dynamic)\):  ?(.*)/)
     {
     print;
     @temp = split /(\s+)/, $1;
     push(@temp, ' ');
-    %parm_authenticators = @temp;
+    my %temp_auths= @temp;
+    @parm_authenticators{keys %temp_auths} = values %temp_auths;
     }
 
-  elsif (/^Routers(.*)/)
+  elsif (/^Routers \((?:built-in|dynamic)\):  ?(.*)/)
     {
     print;
     @temp = split /(\s+)/, $1;
     push(@temp, ' ');
-    %parm_routers = @temp;
+    my %temp_routers = @temp;
+    @parm_routers{keys %temp_routers} = values %temp_routers;
     }
 
   # Some transports have options, e.g. appendfile/maildir. For those, ensure
   # that the basic transport name is set, and then the name with each of the
   # options.
 
-  elsif (/^Transports: (.*)/)
+  elsif (/^Transports \((?:built-in|dynamic)\): (.*)/)
     {
     print;
     @temp = split /(\s+)/, $1;
     my($i,$k);
     push(@temp, ' ');
-    %parm_transports = @temp;
+    my %temp_transports = @temp;
+    @parm_transports{keys %temp_transports} = values %temp_transports;
+
     foreach $k (keys %parm_transports)
       {
       if ($k =~ "/")
@@ -4131,6 +4141,17 @@ system("sudo cp eximdir/exim eximdir/exim_exim;" .
        "sudo chgrp $parm_eximgroup eximdir/exim_exim;" .
        "sudo chmod 06755 eximdir/exim_exim");
 
+# Copy any libraries that were built for dynamic load
+# Currently this is only for lookup methods
+
+($parm_exim_dir) = $parm_exim =~ m?^(.*)/exim?;
+
+while (my $file = glob("$parm_exim_dir/dynmodules/*.so")) {
+  my $base = basename($file);
+  cp("$file", "eximdir/");
+  system("sudo chmod 755 eximdir/$base");
+  }
+
 ##################################################
 #     Make copies of utilities we might need     #
 ##################################################
@@ -4138,8 +4159,6 @@ system("sudo cp eximdir/exim eximdir/exim_exim;" .
 # Certain of the tests make use of some of Exim's utilities. We do not need
 # to be root to copy these.
 
-($parm_exim_dir) = $parm_exim =~ m?^(.*)/exim?;
-
 $dbm_build_deleted = 0;
 if (defined $parm_lookups{dbm} && not cp("$parm_exim_dir/exim_dbmbuild", "eximdir/exim_dbmbuild"))
   {