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

name                nrg
version             0.99.27
revision            4
categories          net
maintainers         nomaintainer
platforms           darwin

description         Network Resource Grapher

long_description    NRG is an RRDtool front-end tool to monitor traffic and load \
                    on network links or any other resource utilization source.  It \
                    automatically creates and maintains web pages and RRDtool databases, \
                    while providing short and long-term graph web pages just like MRTG.

# website no longer exists
homepage            http://ginseng.hep.wisc.edu/NRG/
master_sites        ftp://noc.hep.wisc.edu/src/nrg/ \
                    ftp://noc.hep.wisc.edu/pub/src/nrg/

checksums           rmd160  1192ce02d14447abdcff994671693eeb4ca67e28 \
                    sha256  ef851705f9ebd2bf55892823f258c7cffc079ae0276df4f40860c520262971c2

perl5.branches      5.24

depends_lib         port:perl${perl5.major} \
                    port:p${perl5.major}-time-hires \
                    port:rrdtool

patchfiles          patch-nrg-discover-tcp.in.diff \
                    patch-roverpingd-send.c.diff

configure.perl      ${perl5.bin}

configure.pre_args  --prefix=${prefix}/var/${name}

configure.args      --bindir=${prefix}/bin \
                    --sysconfdir=${prefix}/etc/${name} \
                    --datadir=${prefix}/share \
                    --build=powerpc-unknown-freebsd \
                    CFLAGS="-D__FreeBSD__"

platform i386 {
    configure.args-delete   --build=powerpc-unknown-freebsd
    configure.args-append   --build=i386-unknown-freebsd
}

variant pingd_server description {pingd daemon to graph network latency with NRG} {
    startupitem.create      yes
    startupitem.name        pingd
    startupitem.executable  "${prefix}/bin/pingd"
}

build.target                pingd
destroot.target             install.pingd install

# Maintain empty directories
destroot.keepdirs ${destroot}${prefix}/var/${name}/archive

post-patch {

### Path fixes ###
    reinplace "s|@prefix@/bin|@bindir@|g" \
        ${worksrcpath}/examples/NRG.mconf.in \
        ${worksrcpath}/src/nrg-spiketrimmer.in

    reinplace "s|@prefix@/bin|@bindir@|g" \
        {*}[glob ${worksrcpath}/templates/*.in]

#### Make NRG page title the way I want it ####
    reinplace "s|Somesite's NRG Home Page|NRG Home Page|g" \
        "${worksrcpath}/examples/Makefile.ops.in"


#### Fix paths for proper destrooting ####
    reinplace "s|exec_prefix = @prefix@|exec_prefix = ${destroot}@prefix@|g" \
        ${worksrcpath}/Makefile.in
    reinplace "s|prefix = @prefix@|prefix = ${destroot}@prefix@|g" \
        ${worksrcpath}/Makefile.in
    reinplace "s|BIN_DIR = @bindir@|BIN_DIR = ${destroot}@bindir@|g" \
        ${worksrcpath}/Makefile.in
    reinplace "s|ETC_DIR = @sysconfdir@|ETC_DIR = ${destroot}@sysconfdir@|g" \
        ${worksrcpath}/Makefile.in
    reinplace "s|TEMPLATE_DIR = \${prefix}/templates|TEMPLATE_DIR = ${destroot}@prefix@/templates|g" \
        ${worksrcpath}/Makefile.in
    reinplace "s|EXAMPLE_DIR = \${prefix}/examples|EXAMPLE_DIR = ${destroot}@datadir@/doc/nrg/examples|g" \
        ${worksrcpath}/Makefile.in
    reinplace "s|HTML_DIR = \${prefix}/html|HTML_DIR = ${destroot}@datadir@/doc/nrg/html|g" \
        ${worksrcpath}/Makefile.in
    reinplace "s|ARCHIVE_DIR = \${prefix}/archive|ARCHIVE_DIR = ${destroot}@prefix@/archive|g" \
        ${worksrcpath}/Makefile.in
    reinplace "s|CONTRIB_DIR = \${prefix}/contrib|CONTRIB_DIR = ${destroot}@datadir@/doc/nrg/contrib|g" \
        ${worksrcpath}/Makefile.in
}

post-destroot {
# Install images to \${prefix}/var/nrg/web/icons
    xinstall -d -m 755 ${destroot}${prefix}/var/${name}/web/icons
    xinstall -m 755 {*}[glob ${worksrcpath}/images/*.*] ${destroot}${prefix}/var/${name}/web/icons

# Rename Site.mconf so graphed devices won't get rewritten on port upgrades
    move ${destroot}${prefix}/var/${name}/Site.mconf \
        ${destroot}${prefix}/var/${name}/Site.mconf.sample
}

notes \
"#### To complete the NRG installation ####

1) Make an /nrg symlink in your Apache document root pointing to the ../nrg/web NRG data directory:

      sudo ln -s ${prefix}/var/${name}/web /my-Apache-document-root/nrg

2) Modify your httpd.conf file for NRG graph pages:

Uncomment lines:   AddHandler cgi-script .cgi
           LoadModule expires_module   libexec/httpd/mod_expires.so
           AddModule mod_expires.c

Add directives:    <Directory /my-Apache-document-root/nrg>
              Options ExecCGI
           </Directory>

           <Files \"*.gif\">
              ExpiresActive On
              ExpiresDefault M5
           </Files>

Change the Apache user and group to the NRG user and group so Apache will
have permissions to create graphs when you click an RRD file link.

           User <nrg-user>
           Group <nrg-group>

3) Change the web root variables at the top of files Makefile and Site.mconf
   in directory ${prefix}/var/${name} to your Apache document root location.

4) Make NRG files and data owned by the user you'll use to run NRG

   su  (must be root for this operation)
   find ${prefix}/var/nrg -print | xargs chown <nrg-user>:<nrg-group>


#### To use NRG ####

1) Set meta-configuration definitions in the Site.mconf file for each
   resource you want to graph by following the example meta-configuration
   definitions in ${prefix}/share/doc/nrg/examples.

2) Have NRG generate rrd files and html graph pages (and modify them after
   Site.mconf changes):

      cd ${prefix}/var/${name}
      make rediscover
      make notify

3) Schedule the script ${prefix}/var/${name}/run-nrg to run via cron every five
   minutes to poll your data sources and update the rrd files.

Be sure to read the documentation in ${prefix}/share/doc/${name}/html for
creating custom graphs or for more information."