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

name                    cassandra
version                 1.2.3
categories              databases
maintainers             nomaintainer
homepage                https://cassandra.apache.org/
platforms               darwin
license                 Apache-2
master_sites            apache
master_sites.mirror_subdir  ${name}/${version}
distname                apache-${name}-${version}-src

description             A highly scalable, eventually consistent, \
                        distributed, structured key-value store.

long_description        \
    The Apache Cassandra Project develops a highly scalable second-generation \
    distributed database, bringing together Dynamo's fully distributed design \
    and Bigtable's ColumnFamily-based data model. Cassandra was open sourced \
    by Facebook in 2008, and is now developed by Apache committers and \
    contributors from many companies.

checksums               rmd160  631f55dd4cbe363019a7353f0c0da9a838e69d5f \
                        sha256  581f7fc1bb95d5f088e1456e822cd47419f93b2b07087f45f7ba8b069bec1981

depends_build           bin:ant:apache-ant \
                        port:apache-ivy

depends_run             port:antlr3 \
                        port:junit \
                        port:jline \
                        port:slf4j \
                        port:commons-cli \
                        port:commons-lang \
                        port:commons-codec \
                        port:jakarta-log4j \
                        port:google-guava

set java_basepath       ${prefix}/share/java
set cassandra_destpath  ${java_basepath}/${name}-${version}

set mp_libs {antlr junit jline slf4j-api slf4j-log4j12 commons-cli \
    commons-lang commons-codec jakarta-log4j \
    google-guava }

set dbdir           ${prefix}/var/db/cassandra
set logdir          ${prefix}/var/log/cassandra
if {${os.platform} eq "darwin" && ${os.major} > 8} {
    set cassandrauser       _cassandra
} else {
    set cassandrauser       cassandra
}
add_users ${cassandrauser} group=${cassandrauser} realname=Cassandra\ Server

use_configure           no

build.cmd               ant
build.target            jar

destroot {
    # create directories
    set cas_home ${destroot}${cassandra_destpath}
    set doc_dir ${destroot}${prefix}/share/doc/${name}-${version}
    xinstall -m 755 -d ${cas_home}/lib ${doc_dir}
    
    # move in docs
    move {*}[glob ${worksrcpath}/*.txt] ${doc_dir}/
    
    # fix cassandra include file
    move ${worksrcpath}/bin/cassandra.in.sh ${cas_home}/
    reinplace "s|CASSANDRA_HOME=.*|CASSANDRA_HOME=${cassandra_destpath}|" ${cas_home}/cassandra.in.sh
    
    # install bin scripts
    delete {*}[glob ${worksrcpath}/bin/*.bat]
    reinplace "s|/opt/cassandra/cassandra.in.sh|${cassandra_destpath}/cassandra.in.sh|" {*}[glob ${worksrcpath}/bin/*]
    xinstall -m 755 {*}[glob ${worksrcpath}/bin/*] ${destroot}${prefix}/bin

    # install jars
    xinstall -m 644 ${worksrcpath}/build/apache-${name}-${version}-SNAPSHOT.jar \
        ${cas_home}/lib/${name}.jar
    xinstall -m 644 ${worksrcpath}/build/apache-${name}-thrift-${version}-SNAPSHOT.jar \
        ${cas_home}/lib/${name}-thrift.jar
    xinstall -m 644 {*}[glob ${worksrcpath}/lib/*.jar] ${cas_home}/lib/
    
    # install conf, interface
    move ${worksrcpath}/conf ${worksrcpath}/interface ${cas_home}
    
    # update file storage location to be within Macports hierarchy
    reinplace "s|/var|${prefix}/var|g" {*}[glob ${cas_home}/conf/*]

    reinplace "s|/var/lib/cassandra|/var/db/cassandra|g" ${cas_home}/conf/cassandra.yaml
}

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

startupitem.create      yes
# memo: delete env setup when release merges in r104118
startupitem.executable  sudo -u ${cassandrauser} env \
                            PATH=${prefix}/bin:${prefix}/sbin:/usr/bin:/bin:/usr/sbin:/sbin \
                            __CFPREFERENCES_AVOID_DAEMON=1 \
                            ${prefix}/bin/cassandra

livecheck.type          regex
livecheck.url           ${homepage}download/
livecheck.regex         /apache-${name}-(\[0-9.\]+)-bin${extract.suffix}