Compatibility fixes for dynlookup makefile builder.
authorPhil Pennock <pdp@exim.org>
Mon, 24 Jan 2011 19:35:04 +0000 (14:35 -0500)
committerPhil Pennock <pdp@exim.org>
Mon, 24 Jan 2011 19:35:04 +0000 (14:35 -0500)
Don't abort if CFLAGS_DYNAMIC not defined.  Oops!

Attempt to get a POSIX environment on Solaris.

Document POSIXy assumptions going forward.

Problems reported by: Dennis Davis

src/README
src/README.UPDATING
src/scripts/lookups-Makefile

index cdf3792f9ebe3cd9db6c5c0ea4caabfc98a40651..850a354605910ccfb99b638404638b4ec85fbcb9 100644 (file)
@@ -80,6 +80,12 @@ to which Exim has already been ported, the building process is as follows:
   comments in exim_monitor/EDITME about the values set therein, but in this
   case everything can be defaulted if you wish.
 
   comments in exim_monitor/EDITME about the values set therein, but in this
   case everything can be defaulted if you wish.
 
+. If your system is not POSIX compliant by default, then you might experience
+  fewer problems if you help point the build tools to the POSIX variants. For
+  instance, on Solaris:
+
+  PATH=/usr/xpg4/bin:$PATH make SHELL=/usr/xpg4/bin/sh
+
 . Type "make". This will determine what your machine's architecture and
   operating system are, and create a build directory from those names (e.g.
   "build-SunOS5-sparc"). Symbolic links are created from the build directory
 . Type "make". This will determine what your machine's architecture and
   operating system are, and create a build directory from those names (e.g.
   "build-SunOS5-sparc"). Symbolic links are created from the build directory
index 40210a80011a27222325e24e71dfe920a8e4d374..0b70caa2b6be9b6d29e742d19db1aed6f72d0c43 100644 (file)
@@ -31,10 +31,17 @@ that might affect a running system.
 Exim version 4.74
 -----------------
 
 Exim version 4.74
 -----------------
 
- * No incompatible changes within Exim itself, but the integrated support for
-   dynamically loadable lookup modules has an ABI change from the modules
-   supported by some OS vendors through an unofficial patch. Don't try to
-   mix & match.
+ * The integrated support for dynamically loadable lookup modules has an ABI
+   change from the modules supported by some OS vendors through an unofficial
+   patch. Don't try to mix & match.
+
+ * Some parts of the build system are now beginning to assume that the host
+   environment is POSIX. If you're building on a system where POSIX tools are
+   not the default, you might have an easier time if you switch to the POSIX
+   tools.  Feel free to report non-POSIX issues as a request for a feature
+   enhancement, but if the POSIX variants are available then the fix will
+   probably just involve some coercion.  See the README instructions for
+   building on such hosts.
 
 
 Exim version 4.73
 
 
 Exim version 4.73
index 7f2dd1b9e60b2b93bb55c76c5654f49f9532d891..959d49e118c4dd3633d81649d6a5fb58eeeeedcc 100755 (executable)
@@ -2,6 +2,15 @@
 
 # We turn the configure-built build-$foo/lookups/Makefile.predynamic into Makefile
 
 
 # We turn the configure-built build-$foo/lookups/Makefile.predynamic into Makefile
 
+if [ -x /usr/xpg4/bin/sh ] && [ -z "EXIM_BLOCK_XPG4_LOOP" ]
+then
+  EXIM_BLOCK_XPG4_LOOP=yes
+  export EXIM_BLOCK_XPG4_LOOP
+  PATH="/usr/xpg4/bin:$PATH"
+  export PATH
+  exec /usr/xpg4/bin/sh "$@"
+fi
+
 input=lookups/Makefile.predynamic
 target=lookups/Makefile
 defs_source=Makefile
 input=lookups/Makefile.predynamic
 target=lookups/Makefile
 defs_source=Makefile
@@ -15,10 +24,10 @@ tab='       '
 if grep -q "^CFLAGS_DYNAMIC[ $tab]*=" "$defs_source"
 then
   # we have a definition, we're good to go
 if grep -q "^CFLAGS_DYNAMIC[ $tab]*=" "$defs_source"
 then
   # we have a definition, we're good to go
-  : # noop (true) statement for bash compatibility
+  enable_dynamic=yes
 else
   echo >&2 "Missing CFLAGS_DYNAMIC inhibits building dynamic module lookup"
 else
   echo >&2 "Missing CFLAGS_DYNAMIC inhibits building dynamic module lookup"
-  exit 1
+  enable_dynamic=''
 fi
 
 tmp="$target.t"
 fi
 
 tmp="$target.t"
@@ -46,6 +55,10 @@ emit_module_rule() {
 
   if want_dynamic "$lookup_name"
   then
 
   if want_dynamic "$lookup_name"
   then
+    if [ -z "$enable_dynamic" ]; then
+      echo >&2 "Inhibited dynamic modules prevents building dynamic $lookup_name"
+      exit 1
+    fi
     echo "MODS += ${mod_name}.so"
     grep "^LOOKUP_${lookup_name}_" "$defs_source"
     echo "LOOKUP_${mod_name}_INCLUDE = \$(LOOKUP_${lookup_name}_INCLUDE)"
     echo "MODS += ${mod_name}.so"
     grep "^LOOKUP_${lookup_name}_" "$defs_source"
     echo "LOOKUP_${mod_name}_INCLUDE = \$(LOOKUP_${lookup_name}_INCLUDE)"