Re: Automatic detection of PostgreSQL version - Mailing list pgsql-interfaces

From Rodrigo Moya
Subject Re: Automatic detection of PostgreSQL version
Date
Msg-id 1047473504.1016.28.camel@azkoyen.gnome-db.org
Whole thread Raw
In response to Re: Automatic detection of PostgreSQL version  (Peter Eisentraut <peter_e@gmx.net>)
Responses Re: Automatic detection of PostgreSQL version  (Peter Eisentraut <peter_e@gmx.net>)
List pgsql-interfaces
On Wed, 2003-03-12 at 01:35, Peter Eisentraut wrote:
> Roberto Costa writes:
> 
> > What I'm currently doing is searching typical include directories (like
> > /usr/include, /usr/local/share/include, ...) for the presence of a
> > directory named postgresql or pgsql that contains config.h or
> > pg_config.h (used since PostgreSQL 7.2, if I'm not wrong). When such a
> > file is found, I grep it for a line that starts with "#define
> > PG_VERSION" and I expect the version follow and be in the form "x.y.z".
> > This works for the latest PostgreSQL versions that I could test,
> > however I don't know whether this check may work with earlier ones. In
> > reality I even ignore if this kind of check is the best way to get what
> > I want.
> 
> All of that seems highly unusual.  configure scripts are supposed to check
> for alternative features in libraries, not search the entire file system
> for the "best" library.  I suggest you just include the libpq++ header
> file in your code and be done with it.  If it's missing the user will get
> an error from the compiler and will know what to do.  
>
well, many power users will know what to do, but a lot other users will
not. So I guess a configure check and --with/--without arguments might
be the correct way to do it. I myself have the following in my
configure.in:

dnl Test for PostgreSQL
try_postgres=true
AC_ARG_WITH(postgres,
[  --with-postgres=<directory>  use postgres backend in <directory>],[
if test $withval = no
then       try_postgres=false
elif test $withval = yes
then       dir="/usr/local"
else       dir=$withval
fi
])
postgresdir=""
if test $try_postgres = true
then       AC_MSG_CHECKING(for Postgres files)       for d in $dir /usr /usr/local/postgres /opt/postgres
/opt/packages/postgres /disk/postgres /usr/local/pgsql       do               if test -f $d/lib/libpq.so
then                      AC_MSG_RESULT(found Postgres in $d)                       postgresdir=$d
break               fi       done       if test x$postgresdir = x       then               AC_MSG_WARN(Postgres backend
notused)       else               if test -f ${postgresdir}/include/libpq-fe.h               then
POSTGRES_CFLAGS=-I${postgresdir}/include              elif test -f ${postgresdir}/include/pgsql/libpq-fe.h
then                       POSTGRES_CFLAGS=-I${postgresdir}/include/pgsql               elif test -f
 
${postgresdir}/include/postgresql/libpq-fe.h               then                      
POSTGRES_CFLAGS=-I${postgresdir}/include/postgresql               else                       AC_MSG_WARN(Postgres
includefiles not found,
 
backend not used)                       postgresdir=""               fi
POSTGRES_LIBS="-L${postgresdir}/lib-lpq"               AC_DEFINE(HAVE_POSTGRES)       fi
 
fi                                                                               
AM_CONDITIONAL(POSTGRES, test x$postgresdir != x)

thus, you can have your user specify which version of postgres she wants
to compile against, by just using a --with-postgres=/dir/to/use

cheers



pgsql-interfaces by date:

Previous
From: Horst Herb
Date:
Subject: Re: listen/notify with python pgdb
Next
From: "Hiroshi Inoue"
Date:
Subject: Re: [HACKERS] Roadmap for FE/BE protocol redesign