# -*- 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 105364 2013-04-18 22:24:52Z ryandesign@macports.org $

PortSystem          1.0
PortGroup           compiler_blacklist_versions 1.0

name                mongodb
epoch               1
version             2.4.2
license             AGPL-3
categories          databases
maintainers         ryandesign

description         High-performance, schema-free document-oriented database
long_description    ${description}

platforms           darwin

homepage            http://www.mongodb.org/
master_sites        http://downloads.mongodb.org/src/
distname            ${name}-src-r${version}

checksums           rmd160  896884f72ae94caee1405df658bd7878ef5c5fbb \
                    sha256  d0a26fef7f425a6652ebfc3addbc7e1b01a10be65c9d68e464730687bd6721c3

depends_build       port:scons

depends_lib         port:libpcap \
                    port:pcre \
                    port:snappy \
                    port:v8

license_noconflict  scons

# As of mongodb 2.2.0, we use the bundled copy of boost to guard against
# potential incompatible changes that might be made in the boost port.

patchfiles          patch-SConstruct.diff \
                    patch-distsrc-client-SConstruct.diff \
                    patch-src-SConscript.client.diff \
                    patch-src-mongo-util-compress.cpp.diff

post-patch {
    reinplace "s|@@PREFIX@@|${prefix}|g" \
        ${worksrcpath}/distsrc/client/SConstruct
}

use_configure       no

variant universal {}

compiler.blacklist  gcc-4.0 {clang < 318.0.45}

build.env           TERM=xterm \
                    ARCHFLAGS="[get_canonical_archflags]" \
                    CPPFLAGS="${configure.cppflags}" \
                    LDFLAGS="${configure.ldflags}"

build.cmd           ${prefix}/bin/scons
build.target        all mongobridge mongosniff
build.args          --cc=${configure.cc} \
                    --cxx=${configure.cxx} \
                    --full \
                    --use-system-pcre \
                    --use-system-snappy \
                    --use-system-v8 \
                    --extralib=pcre,pcrecpp,snappy

eval destroot.env   [option build.env]
destroot.args       ${build.args}
destroot.destdir    --prefix=${destroot}${prefix}

set dbdir           ${prefix}/var/db/mongodb
set logdir          ${prefix}/var/log/mongodb
set mongouser       _mongo
add_users           ${mongouser} group=${mongouser} realname=MongoDB\ Server

post-destroot {
    xinstall -W ${worksrcpath} mongobridge ${destroot}${prefix}/bin

    xinstall -m 755 -o ${mongouser} -g ${mongouser} -d \
        ${destroot}${dbdir} \
        ${destroot}${logdir}
    destroot.keepdirs-append  \
        ${destroot}${dbdir} \
        ${destroot}${logdir}
}

startupitem.create      yes
startupitem.executable  sudo -u ${mongouser} ${prefix}/bin/mongod --dbpath ${dbdir} --logpath ${logdir}/mongodb.log --logappend

if {${os.platform} == "darwin" && ${os.major} < 10} {
    depends_build
    depends_lib
    pre-fetch {
        ui_error "${name} ${version} requires OS X 10.6 or greater."
        return -code error "incompatible OS X version"
    }
}

livecheck.url       ${homepage}downloads
livecheck.regex     {mongodb-src-r(\d+\.\d*[02468]\.\d+)\.}
