blob: adcb7bda5ac44a4fda243820e70aab75326fe550 [file] [log] [blame]
# -*- 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 named-data ccnx ccnx-0.7.1-ndn-2
checksums rmd160 a6a936f088c6d884ab73f04d3ae2409de093593a \
sha256 9bb928b438544dac4e759d6736740d69f5f403ac98ba39476025aa4f34c4410d
name ccnx
homepage http://www.ccnx.org/
license GPL-2+ LGPL-2.1+
version 0.7.1.ndn.2
epoch 1
categories net
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.
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
}
post-patch {
reinplace "s|\$HOME/.ccnx/|${ccnxdir}/|g" ${worksrcpath}/csrc/util/ccndstart.sh
}
configure.env-append OPENSSL_CFLAGS=-I${prefix}/include \
OPENSSL_LIBS=-L${prefix}/lib \
INSTALL_BASE=${prefix} \
INSTALL_MAN=${prefix}/share/man \
BUILD_JAVA=false \
BUILD_APPS=false \
configure.cflags -DCCNX_DIR=\\\"${ccnxdir}\\\" \
-O2
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}${ccnxdir}"
# Copy a sample ccnd.conf file
xinstall -o ${ccnxuser} -g ${ccnxgroup} \
${worksrcpath}/csrc/libexec/ccnd.conf.sample \
${destroot}${ccnxdir}/
# Create a sample ccndrc file
system "echo CCNR_GLOBAL_PREFIX=/ndn/keys > \"${destroot}${ccnxdir}/ccndrc.sample\""
system "echo CCND_LOG=${prefix}/var/log/ccnd.log >> \"${destroot}${ccnxdir}/ccndrc.sample\""
system "echo CCND_DEBUG=16 >> \"${destroot}${ccnxdir}/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}
file mkdir "${prefix}/var/run/ccnd"
file attributes "${prefix}/var/run/ccnd" -owner ${ccnxuser} -group ${ccnxgroup}
# Make sure initial conf files are present and setup correctly
foreach f { ccnd.conf ccndrc } {
if {![file exists ${ccnxdir}/${f}]} {
file copy ${ccnxdir}/${f}.sample \
${ccnxdir}/${f}
}
}
}
startupitem.pidfile none
startupitem.start "su ${ccnxuser} -c \"${prefix}/bin/ccndstart\" && sleep 5 && su ${ccnxuser} -c \"${prefix}/bin/ccnd-autoconfig -d ${prefix}/var/run/ccnd/autoconfig.pid &\""
startupitem.stop "su ${ccnxuser} -c \"kill `cat ${prefix}/var/run/ccnd/autoconfig.pid`\" ; su ${ccnxuser} -c \"${prefix}/bin/ccndstop\""
startupitem.restart "su ${ccnxuser} -c \"${prefix}/bin/ccndc -f ${ccnxdir}/ccnd.conf\" && su ${ccnxuser} -c \"${prefix}/bin/ccnd-autoconfig\""
variant no_autoconf description {Disable automatic detection of local ccnx hub} {
startupitem.start "su ${ccnxuser} -c \"${prefix}/bin/ccndstart\""
startupitem.restart "su ${ccnxuser} -c \"${prefix}/bin/ccndc -f ${ccnxdir}/ccnd.conf\""
}
startupitem.create yes
startupitem.name ${name}
startupitem.netchange yes
startupitem.logevents yes
startupitem.logfile ${prefix}/var/log/ccnx.log
notes "
You can add the following line into \"${ccnxdir}/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.
If you have your public key signed by NDN testbed operators and you installed the certificate
\(using ndn-install-pubcert command\), you can enable automatic configuration of the default
route using your key. To do so, you need to run the following commands once:
# extract public key from ccnx user
sudo HOME=${ccnxdir} ndn-extract-public-key > /tmp/ccnx.pem
# sign public key of the ccnx user
ndn-sign-key -i \"ccnx-autoconfig\" /tmp/ccnx.pem
# install certification of the public key
sudo HOME=${ccnxdir} ndn-install-pubcert /tmp/ccnx.pubcert
"