# -*- 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

PortSystem 1.0
PortGroup deprecated 1.0
PortGroup openssl 1.0

# Final release was on 2014-07-24
deprecated.upstream_support no

if {${os.platform} eq "darwin" && ${build_arch} eq "arm64"} {
    known_fail      yes
}

name            postgresql84
version         8.4.22
revision        8

categories      databases
maintainers     nomaintainer
license         Permissive
description     The most advanced open-source database available anywhere.
long_description PostgreSQL is Object-Relational Database Management System. \
                It supports almost all SQL constructs, including transactions, \
                subselects, and user-defined types and functions. Write-ahead \
                logging means increased performance while retaining data \
                integrity.

homepage        https://www.postgresql.org/
master_sites    http://ftp3.de.postgresql.org/pub/Mirrors/ftp.postgresql.org/source/v${version}/ \
                postgresql:source/v${version}/
distname        postgresql-${version}

checksums       rmd160  c46d1fd3405150f0ed25012dad1ef8110d2c2d64 \
                sha256  5c1d56ce77448706d9dd03b2896af19d9ab1b9b8dcdb96c39707c74675ca3826

use_bzip2       yes

patchfiles-append   int64_check.patch

openssl.branch  1.0
depends_lib     port:readline port:zlib port:libxml2 port:libxslt port:ossp-uuid
depends_build   port:bison
depends_run     port:postgresql_select-84

configure.cppflags-prepend -I${prefix}/include/openssl-1.0
configure.ldflags-prepend  -L${prefix}/lib/openssl-1.0

worksrcdir      postgresql-${version}

set libdir      ${prefix}/lib/${name}
configure.args  --sysconfdir=${prefix}/etc/${name} \
                --bindir=${libdir}/bin \
                --libdir=${libdir} \
                --includedir=${prefix}/include/${name} \
                --datadir=${prefix}/share/${name} \
                --mandir=${prefix}/share/man \
                --without-docdir \
                --with-includes=${prefix}/include \
                --with-libraries=${prefix}/lib \
                --with-openssl \
                --with-bonjour \
                --with-readline \
                --with-zlib \
                --with-libxml \
                --with-libxslt \
                --enable-thread-safety \
                --enable-integer-datetimes \
                --with-ossp-uuid
configure.cppflags-append   -I${prefix}/include/ossp

post-configure {
    if {[variant_exists universal] && [variant_isset universal]} {
        system "cd ${worksrcpath}/src/include \
                && ed - pg_config.h < ${filespath}/pg_config.h.ed \
                && touch stamp-h"
        system "cd ${worksrcpath}/src/interfaces/ecpg/include \
                && ed - ecpg_config.h < ${filespath}/ecpg_config.h.ed \
                && touch stamp-h"
    }
}

build.type      gnu
build.target

test.run        yes
test.target     check

livecheck.type  none

platform darwin {
    if {${os.major} >= 12} {
        patchfiles-append   postgresql-uuid-ossp.patch
    }
    if {${os.major} >= 13} {
        configure.args-replace  --with-bonjour --without-bonjour
    }
}

# prepare the contrib modules
set contribs {}

post-build {
    set contribdirs [glob -nocomplain -type d ${worksrcpath}/contrib/*]
    foreach d [lsort $contribdirs] {
        if { [file exists $d/Makefile] } {
            lappend contribs [file tail $d]
        }
    }
    foreach contrib ${contribs} {
        system "cd ${worksrcpath}/contrib/${contrib}/ && ${build.cmd}"
    }
}

post-destroot {
    foreach contrib ${contribs} {
        system "echo contrib: \"${contrib}\""
        system "cd ${worksrcpath}/contrib/${contrib}/ && \
            ${destroot.cmd} install ${destroot.destdir} && touch DONE"
    }
    system "cd ${destroot}${prefix}/bin && ln -sf ${libdir}/bin/psql psql84"
    file delete -force ${destroot}${prefix}/share/doc/postgresql \
        ${destroot}${prefix}/share/man
}

variant python requires python27 description {add support for python} {
}

variant python27 description {add support for python 2.7} {
    depends_lib-append      port:python27
    configure.args-append   --with-python
    configure.python        ${prefix}/bin/python2.7
}

variant krb5 description {add support for Kerberos 5 authentication} {
    configure.args-append   --with-krb5
}

variant perl description {add Perl support} {
    depends_lib-append      bin:perl:perl5
    configure.args-append   --with-perl
}

variant tcl description {add Tcl support} {
    depends_lib-append      port:tcl
    configure.args-append   --with-tcl --with-tclconfig=${prefix}/lib
    configure.env-append    TCLSH=${prefix}/bin/tclsh
}

variant earthdistance description {add earthdistance contrib module} {
    lappend contribs cube earthdistance
}

post-install {
    ui_msg "\nTo use the postgresql server, install the postgresql84-server port"
}
