# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
# $Id: Portfile 60862 2009-11-25 22:29:48Z snc@macports.org $

PortSystem 1.0

name        libpqxx
version     3.0.2

categories  databases devel

maintainers dweber openmaintainer

description Official C++ client API for PostgreSQL

long_description \
libpqxx is the official C++ client API for PostgreSQL, the enterprise-strength \
open-source database software.  There are many similar libraries for PostgreSQL \
and for other databases, some of them database independent.  Most of these, \
however, are fairly C like in their programming style, and fail to take \
advantage of the full power of the C++ language as it has matured since \
the acceptance of the Standard in 1996.  What libpqxx brings you is effective \
use of templates to reduce the inconvenience of dealing with type conversions, \
standard C++ strings to keep you from having to worry about buffer allocation \
and overflow attacks, exceptions to take the tedious and error prone plumbing \
around error handling out of your hands, constructors and destructors to bring \
resource management under control, and even basic object orientation to give \
you some extra reliability features that would be hard to get with most other \
database interfaces.

homepage        http://pqxx.org/development/libpqxx/
master_sites    http://pqxx.org/download/software/libpqxx/
#http://pqxx.org/download/software/libpqxx/libpqxx-3.0.1.tar.gz

distname        libpqxx-${version}

checksums           md5     3baa257e851b773fa1d693bbe185a418 \
                    sha1    6af866e06668e9c8b7af4161dddb1ab5f4bf094c \
                    rmd160  0162ea135d56c203f45f9d5d328a29d2db72b102

variant pq83 description {use postgresql83} {
}

if {[variant_isset pq83]} {
    set server      postgresql83
} else {
    set server      postgresql84
}

platforms       darwin
depends_build   path:bin/pkg-config:pkgconfig
depends_lib     port:${server}

configure.env-append \
    PG_CONFIG=${prefix}/lib/${server}/bin/pg_config

configure.args-append \
    --enable-shared

# Enable tests after the build phase; see
# http://guide.macports.org/#reference.phases.test
# http://pqxx.org/development/libpqxx/browser/trunk/README?rev=latest
# http://pqxx.org/development/libpqxx/wiki/TestDocs

test.run        no
test.cmd        make
test.target     check

pre-test {
    system "initdb -D ${worksrcdir}/test_libpqxx"
    system "pg_ctl -w -D ${worksrcdir}/test_libpqxx -l ${worksrcdir}/test_libpqxx/logfile -o \"-p 5455\" start"
    # test for existence of ${worksrcdir}/test_libpqxx/postmaster.pid to indicate success

    # PGDATABASE    (name of database; defaults to your user name)
    # PGHOST        (database server; defaults to local machine)
    # PGPORT        (PostgreSQL port to connect to; default is 5432)
    # PGUSER        (your PostgreSQL user ID; defaults to your login name)
    # PGPASSWORD    (your PostgreSQL password, if needed)
    test.env-append \
        PGDATABASE=${worksrcdir}/test_libpqxx \
        PGPORT=5455
        #PGUSER
        #PGPASSWORD
}

post-test {
    system "pg_ctl -w -D ${worksrcdir}/test_libpqxx stop -m fast"
    system "rm -rf ${worksrcdir}/test_libpqxx"
}

