# -*- 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 muniversal 1.0
PortGroup deprecated 1.0
PortGroup openssl 1.0

# Final release was on 2020-02-10
deprecated.upstream_support no

#remember to update the -doc and -server as well
name            postgresql94
version         9.4.26
revision        3

categories      databases
maintainers     {jwa @jyrkiwahlstedt}
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  5e5e98408ff58e48ededa425fbcf6e0bb76795f8 \
                sha256  f5c014fc4a5c94e8cf11314cbadcade4d84213cfcc82081c9123e1b8847a20b9 \
                size    16871195

use_bzip2       yes

# do not build man or html files (use postgresqlXY-doc instead)
patchfiles-append   patch-no_doc.diff

# https://github.com/postgres/postgres/commit/47fca011b88a9c0eadf2b62f6c1943deae0631c3
patchfiles-append   int64_check.patch

# https://www.postgresql.org/message-id/attachment/152769/v1-0001-Make-PostgreSQL-work-with-newer-version-of-libxml.patch
patchfiles-append   patch-xml_c.diff

openssl.branch  1.1
depends_lib     port:readline port:zlib port:libxml2 port:libxslt
depends_build   port:bison
depends_run     port:postgresql_select-94

worksrcdir      postgresql-${version}

set libdir      ${prefix}/lib/${name}
configure.args  PG_SYSROOT=disabled \
                --sysconfdir=${prefix}/etc/${name} \
                --bindir=${libdir}/bin \
                --libdir=${libdir} \
                --includedir=${prefix}/include/${name} \
                --datadir=${prefix}/share/${name} \
                --docdir=${prefix}/share/doc/${name} \
                --mandir=${prefix}/share/man \
                --with-includes=${prefix}/include \
                --with-libraries=${prefix}/lib \
                --with-openssl \
                --with-bonjour \
                --with-readline \
                --with-zlib \
                --with-libxml \
                --with-libxslt \
                --with-gssapi \
                --enable-thread-safety \
                --with-uuid=e2fs

configure.ldflags-append    -headerpad_max_install_names

# building psql with clang from Xcode prior to 4.4 causes segfault on query; see #31717
compiler.blacklist-append {clang < 421}
notes "To use the postgresql server, install the ${name}-server port"

if {![info exists universal_possible]} {
    set universal_possible [expr {${os.universal_supported} && [llength ${configure.universal_archs}] >= 2}]
}
if {${universal_possible} && [variant_isset universal]} {
    configure.cflags-append -DAC_APPLE_UNIVERSAL_BUILD
}

build.type      gnu
build.target    world

destroot.target install-world

test.run        yes
test.target     check

# remember to change livecheck with first proper release
livecheck.type  regex
livecheck.regex (9\\.4\\.\[.0-9\]+)
livecheck.url   ${homepage}/ftp/source/
#livecheck.regex    (9\\.4\[.0-9\]*\[a-z\]+\[0-9\])

post-destroot {
    system "cd ${destroot}${prefix}/bin && ln -sf ${libdir}/bin/psql psql94"

    reinplace -E "s#^CFLAGS =#CFLAGS +=#g" \
        ${destroot}${prefix}/lib/postgresql94/pgxs/src/Makefile.global

    reinplace -E "s#^(\[\[:space:\]\]+)LDFLAGS =#\\1LDFLAGS +=#g" \
        ${destroot}${prefix}/lib/postgresql94/pgxs/src/Makefile.global
}

if {!${universal_possible} || ![variant_isset universal]} {
    post-destroot {
        reinplace -E "s#-arch\[\[:space:\]\]+\[\[:alnum:\]_\]+##g" \
            ${destroot}${prefix}/lib/${name}/pgxs/src/Makefile.global
    }
} else {
    merger-post-destroot {
        foreach arch ${configure.universal_archs} {
            reinplace -E "s#-arch\[\[:space:\]\]+\[\[:alnum:\]_\]+##g" \
                ${destroot}-${arch}${prefix}/lib/${name}/pgxs/src/Makefile.global

            reinplace -E "s#${worksrcpath}-${arch}#${worksrcpath}#g" \
                ${destroot}-${arch}${prefix}/lib/${name}/pgxs/src/Makefile.global
        }
    }
}

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 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
}
