Something went wrong. Try again.
lol
Something went wrong. Try again.
3.5 kB · 133 lines
Nix
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134{ buildPythonPackage, lib, fetchurl, fetchpatch, stdenv,
boost189, cairomm, cgal, expat, fontconfig, gobject-introspection, graphviz, gtk3, llvmPackages, matplotlib, mpfr, numpy, pkg-config, pycairo, pygobject3, python, scipy, sparsehash, zstandard, gitUpdater,}:
let boost' = boost189.override { patches = [ # required to build against Clang >= 21 (https://github.com/boostorg/lexical_cast/pull/87) # TODO: drop when upgrading to Boost >= 1.90 (fetchpatch { name = "Reduce-dependency-on-Boost.TypeTraits-now-that-C-11-.patch"; url = "https://github.com/boostorg/lexical_cast/commit/8fc8a19931c8cb452400af907959fdacbbdd8ec1.patch"; relative = "include"; hash = "sha256-OO39ejR+I5ufjqinrMJ6HgjTE7Ph+XBu50PqcIKaIQo="; }) ]; enablePython = true; inherit python; };inbuildPythonPackage rec { pname = "graph-tool"; version = "2.98"; pyproject = false;
src = fetchurl { url = "https://downloads.skewed.de/graph-tool/graph-tool-${version}.tar.bz2"; hash = "sha256-7vGUi5N/XwQ3Se7nX+DG1+jwNlUdlF6dVeN4cLBsxSc="; };
postPatch = # remove error messages about tput during build process without adding ncurses '' substituteInPlace configure \ --replace-fail 'tput setaf $1' : \ --replace-fail 'tput sgr0' : '' + # hardcode path to graphviz library to avoid find_library, which would require setting LD_LIBRARY_PATH '' substituteInPlace src/graph_tool/draw/graphviz_draw.py \ --replace-fail \ 'ctypes.util.find_library("gvc")' \ '"${lib.getLib graphviz}/lib/libgvc${stdenv.hostPlatform.extensions.sharedLibrary}"' '';
configureFlags = lib.mapAttrsToList (lib.withFeatureAs true) { boost-libdir = "${lib.getLib boost'}/lib"; cgal = lib.getDev cgal; python-module-path = "$(out)/${python.sitePackages}"; } ++ lib.optionals stdenv.cc.isGNU # enable GCC's link-time optimizer in order to reduce compilation time and memory usage during compilation # https://graph-tool.skewed.de/installation.html#memory-requirements-for-compilation # https://git.skewed.de/count0/graph-tool/-/issues/798#note_5626 [ "MOD_CXXFLAGS=-flto" ];
enableParallelBuilding = true;
nativeBuildInputs = [ pkg-config ];
# https://graph-tool.skewed.de/installation.html#manual-compilation buildInputs = [ boost' cairomm cgal expat mpfr sparsehash ] ++ lib.optionals stdenv.cc.isClang [ llvmPackages.openmp ];
dependencies = [ gtk3 matplotlib numpy pycairo pygobject3 scipy zstandard ];
propagatedNativeBuildInputs = [ gobject-introspection ];
preInstallCheck = # avoid warnings about Matplotlib and Fontconfig configuration issues '' export HOME=$(mktemp -d) export FONTCONFIG_FILE=${fontconfig.out}/etc/fonts/fonts.conf '';
pythonImportsCheck = [ "graph_tool.all" ];
passthru.updateScript = gitUpdater { url = "https://git.skewed.de/count0/graph-tool"; rev-prefix = "release-"; };
meta = { description = "Python module for manipulation and statistical analysis of graphs"; homepage = "https://graph-tool.skewed.de"; changelog = "https://git.skewed.de/count0/graph-tool/commits/release-${version}"; license = lib.licenses.lgpl3Plus; maintainers = [ lib.maintainers.mjoerg ]; };}