summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/py-pymol/package.py
blob: 3e3ab85a261bbadc3d91757a9db7eaaceec26dc8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

from spack import *


class PyPymol(PythonPackage):
    """PyMOL is a Python-enhanced molecular graphics tool. It excels at 3D
       visualization of proteins, small molecules, density, surfaces, and
       trajectories. It also includes molecular editing, ray tracing, and
       movies. Open Source PyMOL is free to everyone!"""

    homepage = "https://pymol.org"
    url      = "https://github.com/schrodinger/pymol-open-source/archive/v2.4.0.tar.gz"

    version('2.5.0', sha256='aa828bf5719bd9a14510118a93182a6e0cadc03a574ba1e327e1e9780a0e80b3')
    version('2.4.0', sha256='5ede4ce2e8f53713c5ee64f5905b2d29bf01e4391da7e536ce8909d6b9116581')
    version('2.3.0', sha256='62aa21fafd1db805c876f89466e47513809f8198395e1f00a5f5cc40d6f40ed0')

    depends_on('python+tkinter@2.7:', type=('build', 'run'), when='@2.3.0:2.4.0')
    depends_on('python+tkinter@3.6:', type=('build', 'run'), when='@2.5.0:')
    depends_on('gl')
    depends_on('glew')
    depends_on('libpng')
    depends_on('freetype')
    depends_on('glm')
    depends_on('libmmtf-cpp')
    depends_on('msgpack-c@2.1.5:')
    depends_on('netcdf-cxx4')
    depends_on('libxml2')
    depends_on('py-pmw-patched', type=('build', 'run'))
    depends_on('py-pyqt5', type=('build', 'run'))
    depends_on('py-pmw', type=('build', 'run'))
    depends_on('libmmtf-cpp', type=('build', 'run', 'link'))
    depends_on('msgpack-c', type=('build', 'run'))
    depends_on('libpng', type=('build', 'run'))
    depends_on('py-numpy', type=('build', 'run'))

    def install_args(self, spec, prefix):
        args = super(PyPymol, self).install_args(spec, prefix)
        args.append('--no-launcher')
        return args

    @run_after('install')
    def install_launcher(self):
        binpath = self.prefix.bin
        mkdirp(self.prefix.bin)
        fname = join_path(binpath, 'pymol')
        script = join_path(python_platlib, 'pymol', '__init__.py')

        shebang = '#!/bin/sh\n'
        fdata = 'exec {0} {1} \"$@\"'.format(self.spec['python'].command,
                                             script)
        with open(fname, 'w') as new:
            new.write(shebang + fdata)
        set_executable(fname)