better build for dyn modules
authorJeremy Harris <jgh146exb@wizmail.org>
Mon, 12 Aug 2024 14:40:22 +0000 (15:40 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Wed, 14 Aug 2024 08:01:27 +0000 (09:01 +0100)
src/OS/Makefile-Base
src/src/drtables.c
src/src/lookups/Makefile
test/runtest

index f494249bfcea86328bfe4eb5084033a068ed075d..5b74b6ac8d24dfd8e5366a918d8b7e025493eb6b 100644 (file)
@@ -36,7 +36,7 @@ FE       = $(FULLECHO)
 # up-to-date. Then the os-specific source files and the C configuration file
 # are set up, and finally it goes to the main Exim target.
 
-all:       utils exim
+all:       utils exim dynmodules
 config:    $(EDITME) checklocalmake Makefile os.c config.h version.h version.sh macro.c
 
 exim_openssl exim_gnutls: clean exim
@@ -245,7 +245,7 @@ macro.c: macro_predef
 
 .PHONY: all config utils \
        buildauths buildlookups buildpdkim buildrouters \
-        buildtransports checklocalmake clean
+        buildtransports dynmodules checklocalmake clean
 
 
 utils: $(EXIM_MONITOR) exicyclog exinext exiwhat \
@@ -943,6 +943,18 @@ $(MONBIN): $(HDRS)
 
 # Targets for the various libraries that Exim uses.
 
+# Copies of modules built as dynamic-load libraries
+
+dynmodules: buildlookups buildrouters buildtransports buildauths
+       rm -fr dynmodules
+       mkdir dynmodules
+       for d in lookup router transport auth; do \
+         for f in $${d}s/*.so; do \
+           [ -e $$f ] && ln $$f dynmodules/`basename $$f .so`_$$d.so; \
+         done; \
+       done; \
+       true
+
 # The lookups library.
 
 buildlookups: config
index 424c6197c3f2dacdc02add170ea0714209d41a0f..19a70ab8b617f3bf1ebbbb1a1e3a6c633ab1703c 100644 (file)
@@ -770,12 +770,13 @@ addlookupmodule(NULL, &readsock_lookup_module_info);
 if (!(dd = exim_opendir(CUS LOOKUP_MODULE_DIR)))
   {
   DEBUG(D_lookup) debug_printf("Couldn't open %s: not loading lookup modules\n", LOOKUP_MODULE_DIR);
-  log_write(0, LOG_MAIN, "Couldn't open %s: not loading lookup modules\n", LOOKUP_MODULE_DIR);
+  log_write(0, LOG_MAIN|LOG_PANIC,
+         "Couldn't open %s: not loading lookup modules\n", LOOKUP_MODULE_DIR);
   }
 else
   {
   const pcre2_code * regex_islookupmod = regex_must_compile(
-    US"\\." DYNLIB_FN_EXT "$", MCS_NOFLAGS, TRUE);
+    US"_lookup\\." DYNLIB_FN_EXT "$", MCS_NOFLAGS, TRUE);
 
   DEBUG(D_lookup) debug_printf("Loading lookup modules from %s\n", LOOKUP_MODULE_DIR);
   while ((ent = readdir(dd)))
index 19585bf31a3755f71f579ef1f6000845ec73be9c..f305e06550b48586e42972c96f93a7f4dce40818 100644 (file)
@@ -2,16 +2,17 @@
 # This is called from the main make file, after cd'ing
 # to the lookups subdirectory.
 #
-# Copyright (c) The Exim Maintainers 2021
+# Copyright (c) The Exim Maintainers 2021 - 2024
 
 # nb: at build time, the version of this file used will have had some
 #     extra variable definitions and prepended to it and module build rules
-#     interpolated below.
+#     interpolated below. This is done by scripts/lookups-Makefile.
 
 # MAGIC-TAG-MODS-OBJ-RULES-GO-HERE
 
 
 all:             lookups.a lf_quote.o lf_check_file.o lf_sqlperform.o $(MODS)
+#               for f in *.so; do mv $$f `basename $$f .so`_lookup.so; done
 
 lookups.a:       $(OBJ)
                 @$(RM_COMMAND) -f lookups.a
index b89960a8bb867570b754016cf7b34fb32b46f814..d73bc393e490de27f02a83277e9fa02612c8d8ee 100755 (executable)
@@ -4138,7 +4138,7 @@ system("sudo cp eximdir/exim eximdir/exim_exim;" .
 
 ($parm_exim_dir) = $parm_exim =~ m?^(.*)/exim?;
 
-while (my $file = glob("$parm_exim_dir/lookups/*.so")) {
+while (my $file = glob("$parm_exim_dir/dynmodules/*.so")) {
   my $base = basename($file);
   cp("$file", "eximdir/");
   system("sudo chmod 755 eximdir/$base");