PortSystem 1.0
PortGroup       python 1.0

name            py-zeroc-ice33
version         3.3.1
revision        2
set branch      [join [lrange [split ${version} .] 0 1] .]
categories-append   devel
maintainers     nomaintainer
license         GPL-2
description     Fast, object-oriented RPC for C++, Java, Python, Ruby, PHP

long_description \
    The Internet Communications Engine (Ice) is a modern alternative to \
    object middleware such as CORBA or COM/DCOM/COM+, with support for \
    C++, C#, Java, PHP, Python, Ruby and Visual Basic. \
    Ice consists of the following packages. \
    Slice: The Specification Language for Ice.  Slice establishes a \
    contract between clients and servers, and is also used to describe \
    persistent data. \
    Slice Compilers: Slice specifications are compiled into various \
    programming languages. Ice supports C++, Java, C#, Visual Basic, PHP, \
    Python and Ruby.  Ice clients and servers work together, regardless \
    of the programming language. \
    Ice: The Ice core library manages all the communication tasks using a \
    highly efficient protocol (including protocol compression and support \
    for both TCP and UDP), provides a flexible thread pool for \
    multi-threaded servers. \
    This Port provides the Python bindings that sit on top of the C++ \
    Ice C++ runtime libraries.

homepage        http://www.zeroc.com/
master_sites    ${homepage}download/Ice/${branch}/
dist_subdir     zeroc-ice33
distname        Ice-${version}
distfiles       ${distname}${extract.suffix}
patchfiles      patch-py-modules-IcePy-Communicator.cpp.diff \
                patch-py.config.Make.rules.Darwin.diff \
                patch-scripts.TestUtil.py.diff
checksums       Ice-${version}.tar.gz \
                    md5 1f37dfcec4662fcde030553fb447d064 \
                    sha1 08d0f32bdb7d909b4a531d45cccfa97bdde649aa \
                    rmd160 d64d52c35640cebe1145e62f57618473d17cbeb5
platforms       darwin

python.versions 27

if {${name} ne ${subport}} {
    depends_lib-append  port:zeroc-ice33

    build.dir       ${worksrcpath}/py

    post-patch {
        reinplace "s/-O2/-g -O2/" ${build.dir}/config/Make.rules.Darwin

        # Prevent name conflicts between libICE.* from xorg-libice and
        # libIce.* from this port by renaming libIce.* to libZerocIce.*.
        # For consistency, rename Ice's other shared libraries.
        foreach f [exec find ${build.dir} -name Makefile] {
            # To prevent replacements on slice2freeze's --dict argument,
            # match exactly on a , or a ) that follows ,Ice\w*, e.g.:
            # $(SLICE2FREEZE) --ice -I$(slicedir) --dict StringIsbnSeqDict,string,Ice::StringSeq
            reinplace -E {s/,Ice([[:alnum:]]*[,)])/,ZerocIce\1/} ${f}
            reinplace -E {s/-lIce([ A-Z]|$)/-lZerocIce\1/g} ${f}

            # Restore the name of the Python binding shared library.
            reinplace -E {s/ZerocIcePy/IcePy/g} ${f}
        }
        reinplace -E {s/-lIce([ A-Z]|$)/-lZerocIce\1/g} \
            ${build.dir}/config/Make.rules \
            ${build.dir}/config/Make.rules.Darwin
    }

    use_configure   no

    build.cmd       make
    build.target    prefix="${prefix}" \
                    CC="${configure.cc}" \
                    CXX="${configure.cxx}" \
                    ICE_HOME="${prefix}" \
                    PYTHON_HOME="${python.prefix}" \
                    PYTHON_VERSION="python${python.branch}" \
                    OPTIMIZE="yes" \
                    all

    test.run        yes
    test.env        ICE_HOME=${prefix}
    test.cmd        ${python.bin}
    test.target     allTests.py

    destroot.destdir
    destroot.cmd    ${build.cmd}
    destroot.target prefix="${destroot}${prefix}" \
                    CC="${configure.cc}" \
                    CXX="${configure.cxx}" \
                    ICE_HOME="${prefix}" \
                    PYTHON_HOME="${python.prefix}" \
                    PYTHON_VERSION="python${python.branch}" \
                    OPTIMIZE="yes" \
                    install

    post-destroot {
        set sharedir ${destroot}${prefix}/share
        set docdir ${sharedir}/doc/${subport}

        delete ${destroot}${prefix}/slice

        xinstall -m 755 -d ${docdir}

        xinstall -m 755 -d [file dirname ${destroot}${python.pkgd}]
        file rename ${destroot}${prefix}/python ${destroot}${python.pkgd}

        set cmd "${python.bin} \
                ${python.libdir}/compileall.py \
                ${destroot}${python.pkgd}"
        ui_debug ${cmd}
        system ${cmd}

        set cmd "${python.bin} -O \
                 ${python.libdir}/compileall.py \
                 ${destroot}${python.pkgd}"
        ui_debug ${cmd}
        system ${cmd}

        file rename ${destroot}${prefix}/ICE_LICENSE ${docdir}
        file rename ${destroot}${prefix}/LICENSE ${docdir}
        foreach f {CHANGES RELEASE_NOTES} {
            file copy ${worksrcpath}/${f} ${docdir}
        }
        file copy ${build.dir}/INSTALL ${docdir}

        if {[variant_isset demo_source_code]} {
            file copy ${build.dir}/demo ${docdir}
        }
    }

    variant demo_source_code description {Install demonstration Python code} {
    }
}
