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

PortSystem          1.0
PortGroup           python 1.0
PortGroup           github 1.0
PortGroup           boost 1.0

github.setup        schrodinger pymol-open-source 3.0.0 v
# Change github.tarball_from to 'releases' or 'archive' next update
github.tarball_from tarball
name                pymol
revision            2
conflicts           pymol-devel

categories          science chemistry
universal_variant   no
license             PSF
maintainers         {gmail.com:howarth.at.macports @jwhowarth} openmaintainer

description         Molecular graphics system
long_description    PyMOL is a molecular graphics system with an embedded Python interpreter \
                    designed for real-time visualization and rapid generation of high-quality \
                    molecular graphics images and animations.

homepage            https://www.pymol.org/

checksums           rmd160  d963b8704371db01d78cf75708b29f8f1c27829a \
                    sha256  27659a99d843c58c513bd9fd78cc67a717cef151b34a439213fbca8bffa2298f \
                    size    29508167

subport pymol-devel {
    github.setup    schrodinger pymol-open-source 71246845f77ecfa2e14f01887abd180c18ebfb55
    github.tarball_from archive
    version         20250128-[string range ${github.version} 0 7]
    conflicts       pymol
    revision        0
    maintainers     {reneeotten @reneeotten} openmaintainer
    checksums       rmd160  5700f99276e297cfd51c9e7ab5b0284f9cfa346a \
                    sha256  3c5e8ea2c6b2ee71d108b8a67471bab7de090d3809ec326cb9f537a7c272670a \
                    size    29559179
    depends_build-append \
                    path:bin/cmake:cmake
}

variant python39 conflicts python310 python311 python312 python313 description {Use Python 3.9} {}
variant python310 conflicts python39 python311 python312 python313 description {Use Python 3.10} {}
variant python311 conflicts python39 python310 python312 python313 description {Use Python 3.11} {}
variant python312 conflicts python39 python310 python311 python313 description {Use Python 3.12} {}
variant python313 conflicts python39 python310 python311 python312 description {Use Python 3.13} {}

if {![variant_isset python39] && ![variant_isset python310] && ![variant_isset python311]&& ![variant_isset python312] } {
    default_variants +python313
}

foreach pv {313 312 311 310 39} {
    if {[variant_isset python${pv}]} {
        python.default_version ${pv}
        break
    }
}

python.link_binaries no
python.pep517   no

boost.depends_type build

compiler.cxx_standard 2017

variant vtkm description {Use VTK-m for isosurface generation} {
    depends_lib-append  port:vtk-m-17
    build.args-append   --use-vtkm 1.7
}

variant openmp description {Enable OpenMP support} {
    build.args-append   --use-openmp yes

    compiler.openmp_version 4.0
    patchfiles-append   patch-openmp.diff
}

depends_build-append \
                    port:py${python.version}-setuptools

depends_lib-append  port:freetype \
                    port:glew \
                    port:glm \
                    port:libpng \
                    port:libGLU \
                    port:libxml2 \
                    port:msgpack-cpp \
                    port:mmtf-cpp \
                    port:netcdf \
                    port:py${python.version}-numpy

depends_run-append  port:py${python.version}-pyqt5

patchfiles          pymol_shell.diff \
                    setup.py.diff \
                    patch-boost-include.diff

if {${subport} == "pymol-devel"} {
    patchfiles-replace setup.py.diff patch-devel-setup.py.diff
}

post-patch {
    reinplace  "s|@PREFIX@|${prefix}|g" ${worksrcpath}/setup.py
    reinplace  "s|@@BOOST_INC_DIR@@|[boost::include_dir]|g" ${worksrcpath}/setup.py
    reinplace  "s|@@PYTHON_PKGDIR@@|${python.pkgd}|g" ${worksrcpath}/setup/pymol_macports
    reinplace  "s|@@PYTHON_BINARY@@|${python.bin}|g" ${worksrcpath}/setup/pymol_macports
    reinplace  "s|cxx + ' ' + cxxflags|'${configure.cxx} ' + cxxflags|g" ${worksrcpath}/monkeypatch_distutils.py
}

post-destroot {
     file copy ${worksrcpath}/setup/pymol_macports ${destroot}${prefix}/bin/pymol
     file attributes ${destroot}${prefix}/bin/pymol -permissions a+x
}
