summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/py-pyqt5/package.py
blob: af8b33af46d477806a16ee8423eb34ec474588d1 (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
# Copyright 2013-2023 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.package import *


class PyPyqt5(SIPPackage):
    """PyQt is a set of Python v2 and v3 bindings for The Qt Company's Qt
    application framework and runs on all platforms supported by Qt including
    Windows, OS X, Linux, iOS and Android. PyQt5 supports Qt v5."""

    homepage = "https://www.riverbankcomputing.com/software/pyqt/intro"
    url = (
        "https://www.riverbankcomputing.com/static/Downloads/PyQt5/5.13.0/PyQt5_gpl-5.13.0.tar.gz"
    )
    list_url = "https://www.riverbankcomputing.com/software/pyqt/download5"

    sip_module = "PyQt5.sip"

    version("5.13.1", sha256="54b7f456341b89eeb3930e786837762ea67f235e886512496c4152ebe106d4af")
    version("5.13.0", sha256="0cdbffe5135926527b61cc3692dd301cd0328dd87eeaf1313e610787c46faff9")
    version("5.12.3", sha256="0db0fa37debab147450f9e052286f7a530404e2aaddc438e97a7dcdf56292110")

    # API files can be installed regardless if Qscintilla is installed or not
    variant("qsci_api", default=False, description="Install PyQt API file for QScintilla")

    # Without opengl support, I got the following error:
    # sip: QOpenGLFramebufferObject is undefined
    depends_on("qt@5:+opengl")
    depends_on("python@2.6:", type=("build", "run"))
    depends_on("py-sip module=PyQt5.sip", type=("build", "run"))
    depends_on("py-sip@:4.19.18 module=PyQt5.sip", type=("build", "run"), when="@:5.13.0")

    # https://www.riverbankcomputing.com/static/Docs/PyQt5/installation.html
    def configure_args(self):
        args = [
            "--pyuic5-interpreter",
            self.spec["python"].command.path,
            "--sipdir",
            self.prefix.share.sip.PyQt5,
            "--designer-plugindir",
            self.prefix.plugins.designer,
            "--qml-plugindir",
            self.prefix.plugins.PyQt5,
            "--stubsdir",
            join_path(python_platlib, "PyQt5"),
        ]
        if "+qsci_api" in self.spec:
            args.extend(["--qsci-api", "--qsci-api-destdir", self.prefix.share.qsci])
        return args

    def setup_run_environment(self, env):
        env.prepend_path("QT_PLUGIN_PATH", self.prefix.plugins)