# -*- 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               active_variants 1.1
PortGroup               legacysupport 1.1

# clock_gettime, at least for quickjs
legacysupport.newest_darwin_requires_legacy 15

name                    couchdb
version                 3.5.2
revision                0
categories              databases
license                 Apache-2
maintainers             {ciserlohn @ci42} {makr @mohd-akram} openmaintainer

description             CouchDB is a document database server

long_description        ${description} with a restful HTTP API, capable of \
                        storing arbitrary JSON documents, building powerful \
                        data views, defined in JavaScript, and processed in \
                        parallel using Map/Reduce. \
                        It leaves out SQL and transactions for simplicity's \
                        sake, to improve scalability and to relax users' lives.

homepage                https://couchdb.apache.org

master_sites            apache
master_sites.mirror_subdir ${name}/source/${version}/
distname                apache-${name}-${version}

checksums               rmd160  535ea12b3cfbb41bc11d9e4a12bed329d7e80979 \
                        sha256  e561102aaadfdda1e499e6e9e12d2473433291b608bcd390bcbcf590bbb6cf68 \
                        size    24922969

depends_build           port:erlang

depends_lib-append      path:lib/pkgconfig/icu-uc.pc:icu \
                        port:ncurses \
                        path:lib/libssl.dylib:openssl \
                        port:zlib

compiler.blacklist-append \
                        *gcc-4.0 *gcc-4.2

patchfiles              patch-rebar-config.diff \
                        patch-ibrowse-rebar-config.diff

patchfiles-append       patch-unbreak-darwin.diff

# FIXME: the build still injects x86 archflags from somewhere, but thankfully gcc
# is smart enough to discard them. Still, this should be fixed properly.
# See also: https://trac.macports.org/ticket/73047

post-patch {
    reinplace "s,@CC@,${configure.cc},g" ${worksrcpath}/src/couch_quickjs/quickjs/Makefile
    reinplace "s,@ARCHFLAG@,[get_canonical_archflags cc],g" ${worksrcpath}/src/couch_quickjs/quickjs/Makefile
    reinplace "s,@PREFIX@,${prefix},g" ${worksrcpath}/src/couch_quickjs/quickjs/Makefile
}

# erlang is not universal
universal_variant       no

require_active_variants erlang ssl

set dbgroup             ${name}
set dbuser              ${name}
set logdir              ${prefix}/var/log/${name}
set dbdir               ${prefix}/var/db/${name}
set confdir             ${prefix}/etc/${name}
set datadir             ${prefix}/share/${name}
set docdir              ${prefix}/share/doc/${name}
set rundir              ${prefix}/var/run/${name}

startupitem.create      yes
startupitem.uniquename  org.apache.couchdb
startupitem.user        ${dbuser}
startupitem.group       ${dbgroup}
startupitem.executable  ${prefix}/bin/couchdb

add_users               ${dbuser} group=${dbgroup} home=${rundir} \
                        realname=CouchDB\ Database\ Server

configure.pre_args
configure.args          --disable-spidermonkey

build.env-append        CC=${configure.cc} \
                        CXX=${configure.cxx}

set root                ${worksrcpath}/rel/couchdb
set dest                ${prefix}/libexec/${name}

destroot.target         release

post-destroot {
    xinstall -d ${destroot}${dest}

    copy ${root}/bin ${root}/lib ${root}/releases {*}[glob ${root}/erts-*] \
        ${destroot}${dest}
    delete ${destroot}${dest}/bin/couchdb.cmd
    ln -s ${dest}/bin/couchdb ${dest}/bin/remsh ${dest}/bin/weatherreport \
        ${destroot}${prefix}/bin

    xinstall -d ${destroot}${confdir}
    copy {*}[glob ${root}/etc/*] ${destroot}${confdir}

    xinstall -d ${destroot}${docdir}
    copy ${root}/LICENSE ${destroot}${docdir}
    move ${destroot}${confdir}/local.ini ${destroot}${docdir}

    xinstall -d ${destroot}${datadir}
    copy ${root}/share/www ${destroot}${datadir}

    copy ${root}/share/docs/couchdb.1 ${destroot}${prefix}/share/man/man1

    # TODO - patch the source to use these paths directly
    ln -s ${confdir} ${destroot}${dest}/etc
    ln -s ${datadir} ${destroot}${dest}/share
    ln -s ${dbdir} ${destroot}${dest}/data

    xinstall -m 755 -o ${dbuser} -g ${dbgroup} -d \
        ${destroot}${dbdir} \
        ${destroot}${logdir} \
        ${destroot}${rundir}

    destroot.keepdirs-append \
        ${destroot}${dbdir} \
        ${destroot}${logdir} \
        ${destroot}${rundir}
}

post-activate {
    if {![file exists ${confdir}/local.ini]} {
        copy ${docdir}/local.ini ${confdir}/local.ini
    }
}

livecheck.url           https://couchdb.apache.org/downloads.html
livecheck.regex         apache-${name}-(\[0-9.\]+\[0-9\]+)
