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

PortSystem              1.0
PortGroup               github 1.0

github.setup            ProjectCCNx ccnx ccnx-0.7.1
checksums               rmd160  432b7b94ed786e02e97bc66a719ab0ad833c53c0 \
                        sha256  ee351efd2ac2200d5a03b16c342b1450c287af681b4f861f4b57dae2c6f2ed98

name                    ccnx
homepage                http://www.ccnx.org/
license                 GPL-2+ LGPL-2.1+
version                 0.7.1
revision                0
epoch                   0

categories              net ccnx
platforms               darwin
maintainers             ucla.edu:alexander.afanasyev

description             ProjectCCNx implementation of Content Centric Networking (CCN) / \
                        Named Data Networking (NDN) architecture

long_description        Project CCNx(r) exists to develop, promote, and evaluate a new \
                        approach to communication architecture we call content-centric \
                        networking.  We seek to carry out this mission by creating and \
                        publishing open protocol specifications and an open source \
                        software reference implementation of those protocols.  We provide \
                        support for a community of people interested in experimentation, \
                        research, and building applications with this technology, all \
                        contributing to its evolution.

use_parallel_build      no

depends_lib-append      port:openssl \
                        port:expat \
                        port:libpcap \
                        port:libxml2 \
                        port:asciidoc

set ccnxuser            ccnx
set ccnxgroup           ccnx
set ccnxdir             ${prefix}/etc/ccnx

add_users               ${ccnxuser} shell=/bin/sh group=${ccnxgroup} \
                        home=${ccnxdir} \
                        realname=CCNx\ Account

default_variants        +java +apps

variant java description {Enable Java API build} {
    configure.env-delete   BUILD_JAVA=false
}

variant apps requires java description {Enable build of reference applications} {
    configure.env-delete   BUILD_APPS=false
}

# patchfiles              autoconfig.patch

post-patch {
    reinplace   "s|\$HOME/.ccnx/|${prefix}/etc/ccnx/|g" ${worksrcpath}/csrc/util/ccndstart.sh
}

configure.env-append    OPENSSL_CFLAGS=-I${prefix}/include \
                        OPENSSL_LIBS=-L${prefix}/lib \
                        INSTALL_BASE=${prefix} \
                        BUILD_JAVA=false \
                        BUILD_APPS=false \

configure.cflags -DCCNX_DIR=\\\"${prefix}/etc/ccnx\\\" -O0 -g

build.env-append        OPENSSL_CFLAGS=-I${prefix}/include \
                        OPENSSL_LIBS=-L${prefix}/lib \
                        INSTALL_BASE=${prefix} \


post-destroot {
    # Create a configuration directory, which also a home directory for ${ccnxuser}
    xinstall -d -o ${ccnxuser} -g ${ccnxgroup} "${destroot}${prefix}/etc/ccnx"

    # Copy a sample ccnd.conf file
    xinstall -o ${ccnxuser} -g ${ccnxgroup} \
        ${worksrcpath}/csrc/libexec/ccnd.conf.sample \
        ${destroot}${prefix}/etc/ccnx/

    # Create a sample ccndrc file
    system "echo CCNR_GLOBAL_PREFIX=/ndn/keys > \"${destroot}${prefix}/etc/ccnx/ccndrc.sample\""
    system "echo CCND_LOG=${prefix}/var/log/ccnd.log >> \"${destroot}${prefix}/etc/ccnx/ccndrc.sample\""
    system "echo CCND_DEBUG=16 >> \"${destroot}${prefix}/etc/ccnx/ccndrc.sample\""
}

post-activate {
    # log file needs to be owned by ${ccnxuser}, otherwise ccnd will not be able to write to it
    file mkdir "${prefix}/var/log"
    touch "${prefix}/var/log/ccnd.log"
    file attributes "${prefix}/var/log/ccnd.log" -owner ${ccnxuser} -group ${ccnxgroup}

    # Make sure initial conf files are present and setup correctly
    foreach f { ccnd.conf ccndrc } {
        if {![file exists ${prefix}/etc/ccnx/${f}]} {
            file copy ${prefix}/etc/ccnx/${f}.sample \
                ${prefix}/etc/ccnx/${f}
        }
    }
}

startupitem.pidfile     none
startupitem.start       "su ${ccnxuser} -c \"${prefix}/bin/ccndstart\" && sleep 1 && \"${prefix}/bin/ccnd-autoconfig\""
startupitem.stop        "su ${ccnxuser} -c \"${prefix}/bin/ccndstop\""
startupitem.restart     "su ${ccnxuser} -c \"${prefix}/bin/ccndc -f ${prefix}/etc/ccnx/ccnd.conf\" && su ${ccnxuser} -c \"${prefix}/bin/ccnd-autoconfig\""

variant no_autoconf {
    startupitem.start       "su ${ccnxuser} -c \"${prefix}/bin/ccndstart\""
    startupitem.restart     "su ${ccnxuser} -c \"${prefix}/bin/ccndc -f ${prefix}/etc/ccnx/ccnd.conf\""
}

startupitem.create      yes
startupitem.name        ${name}

startupitem.netchange   yes
startupitem.logevents   yes
startupitem.logfile     ${prefix}/var/log/ccnx.log

notes "

If you want to run repo, please install and load a separate ccnx-repo package:

    # port install ccnx-repo
    # port load ccnx-repo

You can add the following line into \"${prefix}/etc/ccnx/ccndrc\" in order to automatically
start ccnx repo for the /ndn/keys prefix:

    CCNR_GLOBAL_PREFIX=/ndn/keys

For more information and documentation, refer to man pages and
http://www.ccnx.org website.
"
