[exim-cvs] better build for dyn modules

Góra strony
Delete this message
Reply to this message
Autor: Exim Git Commits Mailing List
Data:  
Dla: exim-cvs
Temat: [exim-cvs] better build for dyn modules
Gitweb: https://git.exim.org/exim.git/commitdiff/4d10782e6dc0928b4b9ac6f3980f71f3b05383f6
Commit:     4d10782e6dc0928b4b9ac6f3980f71f3b05383f6
Parent:     9995dd161eda29d2f5213f124e0042ec01a5ab5e
Author:     Jeremy Harris <jgh146exb@???>
AuthorDate: Mon Aug 12 15:40:22 2024 +0100
Committer:  Jeremy Harris <jgh146exb@???>
CommitDate: Wed Aug 14 09:01:27 2024 +0100


    better build for dyn modules
---
 src/OS/Makefile-Base     | 16 ++++++++++++++--
 src/src/drtables.c       |  5 +++--
 src/src/lookups/Makefile |  5 +++--
 test/runtest             |  2 +-
 4 files changed, 21 insertions(+), 7 deletions(-)


diff --git a/src/OS/Makefile-Base b/src/OS/Makefile-Base
index f494249bf..5b74b6ac8 100644
--- a/src/OS/Makefile-Base
+++ b/src/OS/Makefile-Base
@@ -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
diff --git a/src/src/drtables.c b/src/src/drtables.c
index 424c6197c..19a70ab8b 100644
--- a/src/src/drtables.c
+++ b/src/src/drtables.c
@@ -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)))
diff --git a/src/src/lookups/Makefile b/src/src/lookups/Makefile
index 19585bf31..f305e0655 100644
--- a/src/src/lookups/Makefile
+++ b/src/src/lookups/Makefile
@@ -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
diff --git a/test/runtest b/test/runtest
index b89960a8b..d73bc393e 100755
--- a/test/runtest
+++ b/test/runtest
@@ -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");

--
## subscription configuration (requires account):
## https://lists.exim.org/mailman3/postorius/lists/exim-cvs.lists.exim.org/
## unsubscribe (doesn't require an account):
## exim-cvs-unsubscribe@???
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/