74 lines
3.1 KiB
Ruby
74 lines
3.1 KiB
Ruby
class Igraph < Formula
|
|
desc "Network analysis package"
|
|
homepage "https://igraph.org/"
|
|
url "https://github.com/igraph/igraph/releases/download/0.9.4/igraph-0.9.4.tar.gz"
|
|
sha256 "a3285cccf4f043c9ced2bc8d8d2609ff8398cb92ed49fdf86264ed91929137dd"
|
|
license "GPL-2.0-or-later"
|
|
|
|
bottle do
|
|
sha256 cellar: :any, arm64_big_sur: "ffe6765971d065e88c9d58b039b10288f0fa8987136eda974de21c356f4e9b29"
|
|
sha256 cellar: :any, big_sur: "53d4b26764597f9e640a10f9f3376e42d57edd1ea028eda5462531a53a2777c3"
|
|
sha256 cellar: :any, catalina: "bf6f483a1d959cb0a47a3bdb0bdca8ad097d4fb53b7093253694b6d1f93261f1"
|
|
sha256 cellar: :any, mojave: "f0cb37d933ee52faf99446b21184f4301da5b08aee5ea6d8acfd8c15d0b10279"
|
|
sha256 cellar: :any_skip_relocation, x86_64_linux: "20a04b22950e1647f19b9ddad67ecb9eefb0795c275fd5dcb6e3d30cc7a9d0c2"
|
|
end
|
|
|
|
depends_on "cmake" => :build
|
|
depends_on "arpack"
|
|
depends_on "glpk"
|
|
depends_on "gmp"
|
|
depends_on "openblas"
|
|
depends_on "suite-sparse"
|
|
|
|
uses_from_macos "libxml2"
|
|
|
|
def install
|
|
mkdir "build" do
|
|
# explanation of extra options:
|
|
# * we want a shared library, not a static one
|
|
# * link-time optimization should be enabled if the compiler supports it
|
|
# * thread-local storage of global variables is enabled
|
|
# * force the usage of external dependencies from Homebrew where possible
|
|
# * GraphML support should be compiled in (needs libxml2)
|
|
# * BLAS and LAPACK should come from OpenBLAS
|
|
# * prevent the usage of ccache even if it is installed to ensure that we
|
|
# have a clean build
|
|
system "cmake", "-G", "Unix Makefiles",
|
|
"-DBUILD_SHARED_LIBS=ON",
|
|
"-DIGRAPH_ENABLE_LTO=AUTO",
|
|
"-DIGRAPH_ENABLE_TLS=ON",
|
|
"-DIGRAPH_GLPK_SUPPORT=ON",
|
|
"-DIGRAPH_GRAPHML_SUPPORT=ON",
|
|
"-DIGRAPH_USE_INTERNAL_ARPACK=OFF",
|
|
"-DIGRAPH_USE_INTERNAL_BLAS=OFF",
|
|
"-DIGRAPH_USE_INTERNAL_CXSPARSE=OFF",
|
|
"-DIGRAPH_USE_INTERNAL_GLPK=OFF",
|
|
"-DIGRAPH_USE_INTERNAL_GMP=OFF",
|
|
"-DIGRAPH_USE_INTERNAL_LAPACK=OFF",
|
|
"-DBLA_VENDOR=OpenBLAS",
|
|
"-DUSE_CCACHE=OFF",
|
|
"..", *std_cmake_args
|
|
system "make"
|
|
system "make", "install"
|
|
end
|
|
end
|
|
|
|
test do
|
|
(testpath/"test.c").write <<~EOS
|
|
#include <igraph.h>
|
|
int main(void) {
|
|
igraph_real_t diameter;
|
|
igraph_t graph;
|
|
igraph_rng_seed(igraph_rng_default(), 42);
|
|
igraph_erdos_renyi_game(&graph, IGRAPH_ERDOS_RENYI_GNP, 1000, 5.0/1000, IGRAPH_UNDIRECTED, IGRAPH_NO_LOOPS);
|
|
igraph_diameter(&graph, &diameter, 0, 0, 0, IGRAPH_UNDIRECTED, 1);
|
|
printf("Diameter = %f\\n", (double) diameter);
|
|
igraph_destroy(&graph);
|
|
}
|
|
EOS
|
|
system ENV.cc, "test.c", "-I#{include}/igraph", "-L#{lib}",
|
|
"-ligraph", "-lm", "-o", "test"
|
|
assert_match "Diameter = 9", shell_output("./test")
|
|
end
|
|
end
|