summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/energyplus/package.py
blob: d46b56a7df826d275c0a0de4b8b502623518d02f (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
# 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)

import glob
import os

from spack.package import *


class Energyplus(Package):
    """EnergyPlus is a whole building energy simulation program that engineers,
    architects, and researchers use to model both energy consumption for
    heating, cooling, ventilation, lighting and plug and process loads
    and water use in buildings"""

    homepage = "https://energyplus.net"

    # versions require explicit URLs as they contain hashes
    version(
        "9.3.0",
        sha256="c939dc4f867224e110485a8e0712ce4cfb1e06f8462bc630b54f83a18c93876c",
        url="https://github.com/NREL/EnergyPlus/releases/download/v9.3.0/EnergyPlus-9.3.0-baff08990c-Linux-x86_64.tar.gz",
    )
    version(
        "9.1.0",
        sha256="742b4897781ca8f4b0065c9cd97bf9c5e378968dbb059a21eb91856ba1ec404d",
        url="https://github.com/NREL/EnergyPlus/releases/download/v9.1.0/EnergyPlus-9.1.0-08d2e308bb-Linux-x86_64.tar.gz",
    )
    version(
        "8.9.0",
        sha256="13a5192b25815eb37b3ffd019ce3b99fd9f854935f8cc4362814f41c56e9ca98",
        url="https://github.com/NREL/EnergyPlus/releases/download/v8.9.0-WithIDDFixes/EnergyPlus-8.9.0-eba93e8e1b-Linux-x86_64.tar.gz",
    )

    def install(self, spec, prefix):
        # binary distribution, we just unpack to lib/energyplus
        # and then symlink the appropriate targets

        # there is only one folder with a semi-predictable name so we glob it
        source_dir = "."

        if spec.satisfies("@:8.9.9"):
            source_dir = glob.glob("EnergyPlus*")[0]

        install_tree(source_dir, prefix.lib.enregyplus)

        mkdirp(prefix.bin)
        for b in ["energyplus", "EPMacro", "ExpandObjects"]:
            os.symlink(join_path(prefix.lib.energyplus, b), join_path(prefix.bin, b))