# -*- 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 66463 2010-04-14 00:53:20Z singingwolfboy@macports.org $

PortSystem              1.0

name                    cassandra
version                 0.6.0
revision                0
categories              databases
maintainers             singingwolfboy openmaintainer
homepage                http://cassandra.apache.org/
platforms               darwin
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               md5     291a3f8b221e36791937ea6958d87c1a \
                        sha1    4bf092e173165e5f2ae315df7397bbfdb18fb8ba \
                        rmd160  6dcf69125c000e7728261b4799e81fe2a54bb760


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-collections \
                        port:jakarta-log4j port:google-collections 
set mp_libs {antlr junit jline slf4j-api slf4j-log4j12 commons-cli \
    commons-lang commons-collections jakarta-log4j google-collect }

use_configure           no

build.cmd               ${prefix}/bin/ant
build.target            jar
pre-build {
    # help Ant find Ivy
    xinstall -d ${worksrcpath}/build
    ln -s ${prefix}/share/java/ivy.jar ${worksrcpath}/build/ivy-2.1.0.jar
}

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

    # install jars
    xinstall -m 644 ${worksrcpath}/build/apache-${name}-${version}.jar \
        ${destroot}${prefix}/share/java/${name}.jar
    if {[variant_isset no_deps]} {
        eval xinstall -m 644 [glob ${worksrcpath}/lib/*.jar] ${cas_home}/lib/
    } else {
        foreach lib $mp_libs {
            ln -s ${prefix}/share/java/$lib.jar ${cas_home}/lib/$lib.jar
            file delete ${worksrcpath}/lib/$lib.jar
        }
        eval xinstall -m 644 [glob ${worksrcpath}/lib/*.jar] ${cas_home}/lib/
    }
    
    # install conf, contrib, interface
    move ${worksrcpath}/conf ${worksrcpath}/contrib ${worksrcpath}/interface ${cas_home}
    
    # update file storage location to be within Macports hierarchy
    eval reinplace "s|/var|${prefix}/var|" [glob ${cas_home}/conf/*]
    
    # create these files
    xinstall -m 755 -d ${destroot}${prefix}/var/log/cassandra/ ${destroot}${prefix}/var/lib/cassandra/data/
    touch ${destroot}${prefix}/var/log/cassandra/system.log
}
destroot.keepdirs   ${destroot}${prefix}/var/log/cassandra/ \
                    ${destroot}${prefix}/var/lib/cassandra/


pre-build {
    if {[variant_isset no_deps]} {} else {
        file delete ${worksrcpath}/lib/antlr-3.1.3.jar
        ln -s ${prefix}/share/java/antlr.jar ${worksrcpath}/lib/antlr.jar
        reinplace "s|antlr-3.1.3.jar|antlr.jar|" ${worksrcpath}/build.xml
        
        file delete ${worksrcpath}/lib/junit-4.6.jar
        ln -s ${prefix}/share/java/junit.jar ${worksrcpath}/lib/junit.jar
        reinplace "s|junit-4.6.jar|junit.jar|" ${worksrcpath}/build.xml
        
        file delete ${worksrcpath}/lib/commons-cli-1.1.jar
        ln -s ${prefix}/share/java/commons-cli.jar ${worksrcpath}/lib/commons-cli.jar
        reinplace "s|commons-cli-1.1.jar|commons-cli.jar|" ${worksrcpath}/build.xml
        
        file delete ${worksrcpath}/lib/commons-lang-2.4.jar
        ln -s ${prefix}/share/java/commons-lang.jar ${worksrcpath}/lib/commons-lang.jar
        reinplace "s|commons-lang-2.4.jar|commons-lang.jar|" ${worksrcpath}/build.xml
        
        file delete ${worksrcpath}/lib/commons-collections-3.2.1.jar
        ln -s ${prefix}/share/java/commons-collections.jar ${worksrcpath}/lib/commons-collections.jar
        reinplace "s|commons-collections-3.2.1.jar|commons-collections.jar|" ${worksrcpath}/build.xml
        
        file delete ${worksrcpath}/lib/log4j-1.2.15.jar
        ln -s ${prefix}/share/java/jakarta-log4j.jar ${worksrcpath}/lib/jakarta-log4j.jar
        reinplace "s|log4j-1.2.15.jar|jakarta-log4j.jar|" ${worksrcpath}/build.xml
        
        file delete ${worksrcpath}/lib/google-collect-1.0-rc1.jar
        ln -s ${prefix}/share/java/google-collect.jar ${worksrcpath}/lib/google-collect.jar
        reinplace "s|google-collect-1.0-rc1.jar|google-collect.jar|" ${worksrcpath}/build.xml
        
        file delete ${worksrcpath}/lib/jline-0.9.94.jar
        ln -s ${prefix}/share/java/jline.jar ${worksrcpath}/lib/jline.jar
        reinplace "s|jline-0.9.94.jar|jline.jar|" ${worksrcpath}/build.xml
        
        file delete ${worksrcpath}/lib/slf4j-api-1.5.8.jar
        ln -s ${prefix}/share/java/slf4j-api.jar ${worksrcpath}/lib/slf4j-api.jar
        reinplace "s|slf4j-api-1.5.8.jar|slf4j-api.jar|" ${worksrcpath}/build.xml
        
        file delete ${worksrcpath}/lib/slf4j-log4j12-1.5.8.jar
        ln -s ${prefix}/share/java/slf4j-log4j12.jar ${worksrcpath}/lib/slf4j-log4j12.jar
        reinplace "s|slf4j-log4j12-1.5.8.jar|slf4j-log4j12.jar|" ${worksrcpath}/build.xml
    }
}

variant no_deps description {Use jar files that came with Cassandra distribution for dependencies, instead of using Macports to install dependencies} {
    # clear all runtime deps
    depends_run
}
