# -*- 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 
PortGroup           python 1.0

github.setup        remap ndnvideo ee2df117eb386fd91ff343b11790b7e8b656e561
checksums           rmd160  56c96068fed580776b4a0d93db706f58497b1568 \
                    sha256  1810b2d1d6474517fa1e67e4dbc2ef244071b2e5d701937e3242ee0f9bbc3931

name                py-ndnvideo
homepage            https://github.com/remap/ndnvideo
license             Unknown
# version             
revision            4

python.versions         27
python.default_version  27

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

description         A video toolkit it publishes and plays live video in a segmented stream \
                    that also seeks from buffer in CCNx repo

# long_description     

use_configure       false

if {$subport != $name} {
    depends_lib-append  port:ccnx \
        port:py${python.version}-ndn \
        port:py${python.version}-gst-python \
        port:gstreamer010-gst-ffmpeg \
        port:gstreamer010-gst-plugins-bad \
        port:gstreamer010-gst-plugins-base \
        port:gstreamer010-gst-plugins-gl \
        port:gstreamer010-gst-plugins-good \
        port:gstreamer010-gst-plugins-ugly \
        port:gstreamer010-gst-rtsp \
        port:gstreamer010 
}
# port:gstreamer010-gst-rtsp-server \

patchfiles          fix-play.patch

build {
    reinplace "s|/usr/bin/env python|${python.bin}|g" ${worksrcpath}/videostreaming/play.py
}

destroot {
    xinstall -d ${destroot}${python.pkgd}/ndnvideo
    xinstall -d ${destroot}${python.pkgd}/ndnvideo/pytimecode

    # system "echo ${worksrcpath}"
    eval xinstall [glob ${worksrcpath}/videostreaming/*.py] ${destroot}${python.pkgd}/ndnvideo
    eval xinstall [glob ${worksrcpath}/videostreaming/pytimecode/*.py] ${destroot}${python.pkgd}/ndnvideo/pytimecode

    xinstall ${worksrcpath}/videostreaming/play.py ${destroot}${prefix}/bin/ndnplay
}

