[Snort-devel] Enhancements to onfigure.in: looking for postgresql includes and defining exit status

Javier Fernández-Sanguino Peña jfs at ...2147...
Mon Jun 27 06:18:04 EDT 2005


Hi there,

While preparing the Snort packages for the Debian GNU/Linux distribution 
[1] I have found a few problems with the configure.in currently shipped 
with the Snort distribution:

- the configure.in script will not exit with an error ('1' status code) if 
required libraries are not found

- there is no way to auto-configure Snort when the include headers are in a 
different location from the dynamic library. For example, the PostgreSQL 
packages in Debian will install the headers under 
/usr/include/postgresql/8.0 while the dynamic library will be under 
/usr/lib. The configure script forces anyone to use compiled sources.

The patched attached fixes both things, it will add a new configure option 
(--with-pgsql-includes) to tell it where the header files are which will 
supersede the --with-postgresql defined directory defined. It could be easy 
to add this to Oracle, MySQL and ODBC too.

Regards

Javier


[1] Actually, an update to use PostgreSQL 8.0, see 
http://packages.debian.org/unstable/net/snort-pgsql

-------------- next part --------------
--- snort-2.3.2.orig/configure.in
+++ snort-2.3.2/configure.in
@@ -288,7 +288,7 @@
   echo "   http://www.tcpdump.org"
   echo "   or use the --with-libpcap-* options, if you have it installed"
   echo "   in unusual place"
-  exit
+  exit 1
 fi
 
 default_directory="/usr /usr/local"
@@ -304,7 +304,7 @@
    done
    echo "**********************************************"
    echo
-   exit
+   exit 1
 ])
 
 AC_ARG_WITH(libpcre_includes,
@@ -335,7 +335,7 @@
   echo
   echo "   ERROR!  Libpcre header not found, go get it from"
   echo "   http://www.pcre.org"
-  exit
+  exit 1
 fi
 
 # Verify that we have the library
@@ -346,7 +346,7 @@
     echo "    ERROR!  Libpcre library not found, go get it from"
     echo "    http://www.pcre.org"
     echo
-    exit
+    exit 1
 fi
 
 AC_ARG_WITH(libnet_includes,
@@ -511,6 +511,11 @@
     [ with_postgresql="$withval" ],
     [ with_postgresql=no ])
 
+AC_ARG_WITH(pgsql_includes,
+    [  --with-pgsql-includes=DIR  postgresql include directory],
+    [with_pgsql_includes="$withval" ],
+    [with_pgsql_includes=no ])
+
 if test "$with_postgresql" != "no"; then
   if test "$with_postgresql" = "yes"; then
     postgresql_directory="$default_directory /usr/local/pgsql /usr/pgsql /usr/local"
@@ -525,54 +530,76 @@
 
   AC_MSG_CHECKING(for postgresql)
 
-  for i in $postgresql_directory; do
-    if test -r $i/include/pgsql/libpq-fe.h; then
-      POSTGRESQL_DIR=$i
-      POSTGRESQL_INC_DIR=$i/include/pgsql
-    elif test -r $i/include/libpq-fe.h; then
-      POSTGRESQL_DIR=$i
-      POSTGRESQL_INC_DIR=$i/include
-    elif test -r $i/include/postgresql/libpq-fe.h; then
-      POSTGRESQL_DIR=$i
-      POSTGRESQL_INC_DIR=$i/include/postgresql
-    fi
-  done
+  if test "$with_pgsql_includes" != "no"; then
+    for i in $with_pgsql_includes $postgresql_directory; do
+      if test -r $i/libpq-fe.h; then
+        POSTGRESQL_INC_DIR=$i
+      elif test -r $i/include/pgsql/libpq-fe.h; then
+        POSTGRESQL_INC_DIR=$i/include/pgsql
+      elif test -r $i/include/libpq-fe.h; then
+        POSTGRESQL_INC_DIR=$i/include
+      elif test -r $i/include/postgresql/libpq-fe.h; then
+        POSTGRESQL_INC_DIR=$i/include/postgresql
+      fi
+    done
+  fi
 
-  if test -z "$POSTGRESQL_DIR"; then
+  if test -z "$POSTGRESQL_INC_DIR"; then
+    for i in $postgresql_directory; do
+      if test -r $i/include/pgsql/libpq-fe.h; then
+        POSTGRESQL_DIR=$i
+        POSTGRESQL_INC_DIR=$i/include/pgsql
+      elif test -r $i/include/libpq-fe.h; then
+        POSTGRESQL_DIR=$i
+        POSTGRESQL_INC_DIR=$i/include
+      elif test -r $i/include/postgresql/libpq-fe.h; then
+        POSTGRESQL_DIR=$i
+        POSTGRESQL_INC_DIR=$i/include/postgresql
+      fi
+    done
+  fi
+
+  if test -z "$POSTGRESQL_INC_DIR"; then
     if test "$postgresql_fail" != "no"; then
       tmp=""
-      for i in $postgesql_directory; do
+      if test "$with_pgsql_includes" != "no"; then
+        tmp="$tmp $with_pgsql_includes"
+      fi
+      for i in $postgresql_directory; do
         tmp="$tmp $i/include $i/include/pgsql"
       done
       FAIL_MESSAGE("postgresql header file (libpq-fe.h)", $tmp)
     else
       AC_MSG_RESULT(no)
     fi
-  else
+  fi
 
-    for i in lib lib/pgsql; do
-      str="$POSTGRESQL_DIR/$i/libpq.*"
-      for j in `echo $str`; do
-        if test -r $j; then
-          POSTGRESQL_LIB_DIR="$POSTGRESQL_DIR/$i"
-          break 2
-        fi
-      done
-    done
+  if test -z "$POSTGRESQL_DIR"; then
+    for dir in $postgresql_directory; do
+       for i in lib lib/pgsql; do
+         str="$dir/$i/libpq.*"
+         for j in `echo $str`; do
+           if test -r $j; then
+  	     POSTGRESQL_LIB_DIR="$dir/$i"
+             break 2
+           fi
+         done
+       done
+   done
+  fi
 
-    if test -z "$POSTGRESQL_LIB_DIR"; then
-      if test "$postgresql_fail" != "no"; then
-        FAIL_MESSAGE("postgresql library libpq",
-        "$POSTGRESQL_DIR/lib $POSTGRESQL_DIR/lib/pgsql")
-      else
-        AC_MSG_RESULT(no);
-      fi
-    else
-      AC_MSG_RESULT(yes)
-      LDFLAGS="${LDFLAGS} -L${POSTGRESQL_LIB_DIR}"
-      CPPFLAGS="${CPPFLAGS} -I${POSTGRESQL_INC_DIR} -DENABLE_POSTGRESQL"
-      LIBS="${LIBS} -lpq"
-    fi
+  if test -z "$POSTGRESQL_LIB_DIR"; then
+     if test "$postgresql_fail" != "no"; then
+       FAIL_MESSAGE("postgresql library libpq",
+       "$POSTGRESQL_DIR/lib $POSTGRESQL_DIR/lib/pgsql")
+     else
+       AC_MSG_RESULT(no);
+     fi
+  else
+     AC_MSG_RESULT(yes)
+     LDFLAGS="${LDFLAGS} -L${POSTGRESQL_LIB_DIR}"
+     CPPFLAGS="${CPPFLAGS} -I${POSTGRESQL_INC_DIR} -DENABLE_POSTGRESQL"
+     LIBS="${LIBS} -lpq"
   fi
 fi
 
@@ -681,7 +708,7 @@
                echo "   www.netfilter.org or use the --with-libipq-* options, "
                echo "   if you have it installed in unusual place"
                echo
-               exit
+               exit 1
            fi
         fi
 
@@ -737,7 +764,7 @@
     echo "   http://www.packetfactory.net/projects/libnet/"
     echo "   or use the --with-libnet-* options, if you have it installed"
     echo "   in unusual place"
-    exit
+    exit 1
   fi
 
   AC_MSG_CHECKING(for libnet version 1.0.2a)
@@ -781,7 +808,7 @@
     echo "   http://www.packetfactory.net/projects/libnet/"
     echo "   or use the --with-libnet-* options, if you have it installed"
     echo "   in unusual place"
-    exit
+    exit 1
   fi
 
 fi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <https://lists.snort.org/pipermail/snort-devel/attachments/20050627/db99196d/attachment.sig>


More information about the Snort-devel mailing list