Macro: ms_check_pgsql_db

Back to the Main Page. | # ms_check_pgsql_db | Download the M4 Source.

Synopsis

  `MS_CHECK_PGSQL_DB([DB], [USER], [HOST], [PASSWORD], [ACTION_IF_FAILED], [ACTION_IF_OK])`

Version

  1.1 (2002/12/12) Installed_Packages @ ac-archive-0.5.39

Author

  Moritz Sinn <moritz@freesources.org>

Description

  This macro checks wether we can connect to a PostgreSQL server with the given data. The macro MS_PROG_PGCLIENT is required by this one. The variable $pgclient_call is set for later use in Makefiles, if you'd like to make use of this, you must do

  `AC_SUBST(pgclient_call)`

  after having called MS_CHECK_PGSQL_DB. You can then do something like the following in your Makefile.am:

  `@pgclient_call@ -f file.sql`

  If you want the user to set the data, you should support something like these configure options:

  `AC_ARG_WITH(pgsql-host,`
  `[ --with-pgsql-host=HOST server is running on HOST @<:@local socket@:>@],`
  `[pg_host=$withval], [pg_host=])`

  `AC_ARG_WITH(pgsql-db,`
  `[ --with-pgsql-db=DATABASE use DATABASE @<:@tarantoola@:>@],`
  `[pg_db=$withval], [pg_db=tarantoola])`

  `AC_ARG_WITH(pgsql-user,`
  `[ --with-pgsql-user=USER use USER @<:@postgres@:>@],`
  `[pg_user=$withval], [pg_user=postgres])`

  `AC_ARG_WITH(pgsql-password,`
  `[ --with-pgsql-password=PASSWORD use PASSWORD @<:@none@:>@],`
  `[pg_password=$withval], [pg_password=""])`

  You can then call the macro like this:

  `MS_CHECK_PGSQL_DB([$pg_db], [$pg_user], [$pg_host], [$pg_password], [AC_MSG_ERROR([We need a database connection!])])`

M4 Source Code

      AC_DEFUN([MS_CHECK_PGSQL_DB], [
      AC_REQUIRE([MS_PROG_PGCLIENT])
      AC_MSG_CHECKING([for PostgreSQL db $1 (user: $2, host: $3)])

      pgclient_call="$pgclient"

      if test "x$1" != "x"; then
              pgclient_call="$pgclient_call dbname=$1";
      fi
      if test "x$2" != "x"; then
              pgclient_call="$pgclient_call user=$2";
      fi
      if test "x$3" != "x"; then
              pgclient_call="$pgclient_call host=$3";
      fi
      if test "x$4" != "x"; then
              pgclient_call="$pgclient_call password=$4";
      fi

      $pgclient_call -c 'SELECT 1' > /dev/null 2>&1
      if test "x$?" = "x0"; then
              AC_MSG_RESULT([yes])
              $6
      else
              AC_MSG_RESULT([no])
              $5
      fi;
      ])dnl