-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathecl-cpp.nix
More file actions
97 lines (89 loc) · 2.61 KB
/
ecl-cpp.nix
File metadata and controls
97 lines (89 loc) · 2.61 KB
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
91
92
93
94
95
96
97
{
lib,
stdenv,
fetchurl,
fetchpatch,
libtool,
autoconf,
automake,
gmp,
mpfr,
libffi,
makeWrapper,
noUnicode ? false,
gcc,
threadSupport ? false,
useBoehmgc ? true,
boehmgc,
}:
assert useBoehmgc -> boehmgc != null;
let
s = # Generated upstream information
rec {
baseName = "ecl";
version = "16.1.2";
name = "${baseName}-${version}";
url = "https://common-lisp.net/project/ecl/static/files/release/ecl-16.1.2.tgz";
sha256 = "16ab8qs3awvdxy8xs8jy82v8r04x4wr70l9l2j45vgag18d2nj1d";
};
buildInputs = [
libtool
autoconf
automake
makeWrapper
];
propagatedBuildInputs =
[
libffi
gmp
mpfr
gcc
]
++ lib.optionals useBoehmgc [
# replaces ecl's own gc which other packages can depend on, thus propagated
boehmgc
];
in
stdenv.mkDerivation {
inherit (s) name version;
inherit buildInputs propagatedBuildInputs;
src = fetchurl { inherit (s) url sha256; };
configureFlags = [
(if threadSupport then "--enable-threads" else "--disable-threads")
"--with-gmp-prefix=${gmp.dev}"
"--with-cxx"
"--with-libffi-prefix=${libffi.dev}"
] ++ (lib.optional (!noUnicode) "--enable-unicode");
patches = [
(fetchpatch {
# Avoid infinite loop, see https://gitlab.com/embeddable-common-lisp/ecl/issues/43 (fixed upstream)
name = "avoid-infinite-loop.patch";
url = "https://gitlab.com/embeddable-common-lisp/ecl/commit/caba1989f40ef917e7486f41b9cd5c7e3c5c2d79.patch";
sha256 = "07vw91psbc9gdn8grql46ra8lq3bgkzg5v480chnbryna4sv6lbb";
})
(fetchpatch {
# Fix getcwd with long pathnames
# Rebased version of
# https://gitlab.com/embeddable-common-lisp/ecl/commit/ac5f011f57a85a38627af154bc3ee7580e7fecd4.patch
name = "getcwd.patch";
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/ecl/patches/16.1.2-getcwd.patch?id=07d6c37d18811e2b377a9689790a7c5e24da16ba";
sha256 = "1fbi8gn7rv8nqff5mpaijsrch3k3z7qc5cn4h1vl8qrr8xwqlqhb";
})
./ecl-1.16.2-libffi-3.3-abi.patch
];
hardeningDisable = [ "format" ];
postInstall = ''
sed -e 's/@[-a-zA-Z_]*@//g' -i $out/bin/ecl-config
wrapProgram "$out/bin/ecl" \
--prefix PATH ':' "${gcc}/bin" \
--prefix NIX_LDFLAGS ' ' "-L${gmp.lib or gmp.out or gmp}/lib" \
--prefix NIX_LDFLAGS ' ' "-L${libffi.lib or libffi.out or libffi}/lib"
'';
meta = {
inherit (s) version;
description = "Lisp implementation aiming to be small, fast and easy to embed";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.raskin ];
platforms = lib.platforms.unix;
};
}