about summary refs log tree commit diff
path: root/pkgs/development/python-modules/graph-tool/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules/graph-tool/default.nix')
-rw-r--r--pkgs/development/python-modules/graph-tool/default.nix93
1 files changed, 62 insertions, 31 deletions
diff --git a/pkgs/development/python-modules/graph-tool/default.nix b/pkgs/development/python-modules/graph-tool/default.nix
index 61545e3a2ec9..ff0ab4f62787 100644
--- a/pkgs/development/python-modules/graph-tool/default.nix
+++ b/pkgs/development/python-modules/graph-tool/default.nix
@@ -1,53 +1,76 @@
-{ buildPythonPackage
-, lib
-, fetchurl
+{
+  buildPythonPackage,
+  lib,
+  fetchurl,
+  stdenv,
 
-, autoreconfHook
-, boost
-, cairomm
-, cgal
-, expat
-, gmp
-, gobject-introspection
-, gtk3
-, matplotlib
-, mpfr
-, numpy
-, pkg-config
-, pycairo
-, pygobject3
-, python
-, scipy
-, sparsehash
+  autoreconfHook,
+  boost185,
+  cairomm,
+  cgal,
+  expat,
+  gmp,
+  gobject-introspection,
+  gtk3,
+  llvmPackages,
+  matplotlib,
+  mpfr,
+  numpy,
+  pkg-config,
+  pycairo,
+  pygobject3,
+  python,
+  scipy,
+  sparsehash,
+  gitUpdater,
 }:
 
+let
+  # graph-tool doesn't build against boost181 on Darwin
+  boost = boost185.override {
+    enablePython = true;
+    inherit python;
+  };
+in
 buildPythonPackage rec {
   pname = "graph-tool";
+  version = "2.78";
   format = "other";
-  version = "2.45";
 
   src = fetchurl {
     url = "https://downloads.skewed.de/graph-tool/graph-tool-${version}.tar.bz2";
-    hash = "sha256-+S2nrM/aArKXke/k8LPtkzKfJyMq9NOvwHySQh7Ghmg=";
+    hash = "sha256-gG9TWKRJISOowRIXI1/ROTIwrVwhxFtMOextXqN6KiU=";
   };
 
+  # Remove error messages about tput during build process without adding ncurses,
+  # and replace unavailable git commit hash and date.
+  postPatch = ''
+    substituteInPlace configure.ac \
+      --replace-fail 'tput setaf $1' : \
+      --replace-fail 'tput sgr0' : \
+      --replace-fail \
+        "\"esyscmd(git show | head -n 1 | sed 's/commit //' |  grep -o -e '.\{8\}' | head -n 1 |tr -d '\n')\"" \
+        '["(nixpkgs-${version})"]' \
+      --replace-fail \
+        "\"esyscmd(git log -1 | head -n 3 | grep 'Date:' | sed s/'Date:   '// | tr -d '\n')\"" \
+        '["(unavailable)"]'
+  '';
+
   configureFlags = [
     "--with-python-module-path=$(out)/${python.sitePackages}"
     "--with-boost-libdir=${boost}/lib"
-    "--with-expat=${expat}"
     "--with-cgal=${cgal}"
-    "--enable-openmp"
   ];
 
   enableParallelBuilding = true;
 
-  nativeBuildInputs = [
+  build-system = [
     autoreconfHook
     pkg-config
   ];
 
-  # https://git.skewed.de/count0/graph-tool/-/wikis/installation-instructions#manual-compilation
-  propagatedBuildInputs = [
+  # https://graph-tool.skewed.de/installation.html#manual-compilation
+  dependencies = [
     boost
     cairomm
     cgal
@@ -62,12 +85,20 @@ buildPythonPackage rec {
     pygobject3
     scipy
     sparsehash
-  ];
+  ] ++ lib.optionals stdenv.cc.isClang [ llvmPackages.openmp ];
+
+  pythonImportsCheck = [ "graph_tool" ];
+
+  passthru.updateScript = gitUpdater {
+    url = "https://git.skewed.de/count0/graph-tool";
+    rev-prefix = "release-";
+  };
 
-  meta = with lib; {
+  meta = {
     description = "Python module for manipulation and statistical analysis of graphs";
     homepage = "https://graph-tool.skewed.de";
-    license = licenses.lgpl3Plus;
-    maintainers = with maintainers; [ ];
+    changelog = "https://git.skewed.de/count0/graph-tool/commits/release-${version}";
+    license = lib.licenses.lgpl3Plus;
+    maintainers = [ lib.maintainers.mjoerg ];
   };
 }