summary refs log tree commit diff
path: root/pkgs/development/libraries/cddlib/default.nix
blob: ee56b50e1da5615b990366059927324687c7d77b (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
52
53
54
55
{ stdenv
, fetchurl
, fetchpatch
, gmp
, autoreconfHook
}:

stdenv.mkDerivation rec {
  name = "cddlib-${version}";
  version = "0.94i";
  src = let
    fileVersion = stdenv.lib.replaceStrings ["."] [""] version;
  in fetchurl {
    # Might switch to github in the future, see
    # https://trac.sagemath.org/ticket/21952#comment:20
    urls = [
      "http://archive.ubuntu.com/ubuntu/pool/universe/c/cddlib/cddlib_${fileVersion}.orig.tar.gz"
      "ftp://ftp.math.ethz.ch/users/fukudak/cdd/cddlib-${fileVersion}.tar.gz"
    ];
    sha256 = "00zdgiqb91vx6gd2103h3ijij0llspsxc6zz3iw2bll39fvkl4xq";
  };
  buildInputs = [gmp];
  nativeBuildInputs = [
    autoreconfHook
  ];
  # compute reduced H and V representation of polytope
  # this patch is included by most distributions (Debian, Conda, ArchLinux, SageMath)
  # proposed upstream (no answer yet): https://github.com/cddlib/cddlib/pull/3
  both_reps_c = (fetchurl {
    name = "cdd_both_reps.c";
    url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/sci-libs/cddlib/files/cdd_both_reps.c?id=56bd759df1d0c750a065b8c845e93d5dfa6b549d";
    sha256 = "0r9yc5bgiz8i72c6vsn2y2mjk5581iw94gji9v7lg16kzzgrk9x0";
  });
  preAutoreconf = ''
    # Required by sage.geometry.polyhedron
    cp ${both_reps_c} src/cdd_both_reps.c
    cp ${both_reps_c} src-gmp/cdd_both_reps.c
  '';
  patches = [
    # add the cdd_both_reps binary
    (fetchpatch {
      name = "add-cdd_both_reps-binary.patch";
      url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/sci-libs/cddlib/files/cddlib-094h-add-cdd_both_reps-binary.patch?id=78e3a61a68c916450aa4e5ceecd20041583af901";
      sha256 = "162ni2fr7dpbdkz0b5nizxq7qr5k1i1d75g0smiylpzfb0hb761a";
    })
  ];
  meta = {
    inherit version;
    description = ''An implementation of the Double Description Method for generating all vertices of a convex polyhedron'';
    license = stdenv.lib.licenses.gpl2Plus ;
    maintainers = [stdenv.lib.maintainers.raskin];
    platforms = stdenv.lib.platforms.linux;
    homepage = https://www.inf.ethz.ch/personal/fukudak/cdd_home/index.html;
  };
}