/
gromacs.rb
90 lines (76 loc) 路 3.06 KB
/
gromacs.rb
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
class Gromacs < Formula
desc "Versatile package for molecular dynamics calculations"
homepage "https://www.gromacs.org/"
url "https://ftp.gromacs.org/pub/gromacs/gromacs-2024.1.tar.gz"
sha256 "937d8f12a36fffbf2af7add71adbb5aa5c5537892d46c9a76afbecab1aa0aac7"
license "LGPL-2.1-or-later"
livecheck do
url "https://ftp.gromacs.org/pub/gromacs/"
regex(/href=.*?gromacs[._-]v?(\d+(?:\.\d+)*)\.t/i)
end
bottle do
sha256 arm64_sonoma: "15a2b50d7f51a6ba3d9ffe9fe5a3e461e4f1b5180333917c91837899b3f78b43"
sha256 arm64_ventura: "028cc96dab2cd643a0a026c0f4220e61951ef73930fa04602f227ae8eeba0563"
sha256 arm64_monterey: "a3d5f3b5a002a1b1af4f5bbe89243c12ee62d2a81d8eb6fb997eaa6e717f0644"
sha256 sonoma: "bce1f692285674cbd52c0561e752eea2ddbcc54f302569ad914fd8f3b388c884"
sha256 ventura: "9149b55e12bc13ec30515abef9e04f17d78df1d6c0c2b16a11b4c77bd6cf9702"
sha256 monterey: "46d72eed54b781426a83898f8c11b0ff0d959bcded8661fd7c9d51a7f2cd1a6d"
sha256 x86_64_linux: "43ee015d261736087b1155907f9d0a5794ede7492c0e8d7bb3c18fd0353b0d04"
end
depends_on "cmake" => :build
depends_on "fftw"
depends_on "gcc" # for OpenMP
depends_on "openblas"
fails_with :clang
fails_with gcc: "5"
fails_with gcc: "6"
def install
# Non-executable GMXRC files should be installed in DATADIR
inreplace "scripts/CMakeLists.txt", "CMAKE_INSTALL_BINDIR",
"CMAKE_INSTALL_DATADIR"
# Avoid superenv shim reference
gcc = Formula["gcc"]
cc = gcc.opt_bin/"gcc-#{gcc.any_installed_version.major}"
cxx = gcc.opt_bin/"g++-#{gcc.any_installed_version.major}"
inreplace "src/gromacs/gromacs-hints.in.cmake" do |s|
s.gsub! "@CMAKE_LINKER@", "/usr/bin/ld"
s.gsub! "@CMAKE_C_COMPILER@", cc
s.gsub! "@CMAKE_CXX_COMPILER@", cxx
end
inreplace "src/buildinfo.h.cmakein" do |s|
s.gsub! "@BUILD_C_COMPILER@", cc
s.gsub! "@BUILD_CXX_COMPILER@", cxx
end
inreplace "src/gromacs/gromacs-config.cmake.cmakein", "@GROMACS_CXX_COMPILER@", cxx
args = %W[
-DGROMACS_CXX_COMPILER=#{cxx}
-DGMX_VERSION_STRING_OF_FORK=#{tap.user}
-DGMX_INSTALL_LEGACY_API=ON
]
# Force SSE2/SSE4.1 for compatibility when building Intel bottles
if Hardware::CPU.intel?
gmx_simd = if OS.mac? && MacOS.version.requires_sse4?
"SSE4.1"
else
"SSE2"
end
args << "-DGMX_SIMD=#{gmx_simd}"
end
system "cmake", "-S", ".", "-B", "build", *std_cmake_args, *args
system "cmake", "--build", "build"
system "cmake", "--install", "build"
bash_completion.install "build/scripts/GMXRC" => "gromacs-completion.bash"
bash_completion.install bin/"gmx-completion-gmx.bash" => "gmx-completion-gmx.bash"
bash_completion.install bin/"gmx-completion.bash" => "gmx-completion.bash"
zsh_completion.install "build/scripts/GMXRC.zsh" => "_gromacs"
end
def caveats
<<~EOS
GMXRC and other scripts installed to:
#{HOMEBREW_PREFIX}/share/gromacs
EOS
end
test do
system "#{bin}/gmx", "help"
end
end