Files
nixpkgs/pkgs/development/compilers/ecl/default.nix
T
Ihar Hrachyshka 567e8dfd8e treewide: clean up 'meta = with' pattern
This commit was created by a combination of scripts and tools:
- an ast-grep script to prefix things in meta with `lib.`,
- a modified nixf-diagnose / nixf combination to remove unused `with
lib;`, and
- regular nixfmt.

Co-authored-by: Wolfgang Walther <walther@technowledgy.de>
2025-12-10 18:09:49 +01:00

103 lines
2.5 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
lib,
stdenv,
fetchurl,
fetchpatch,
libtool,
autoconf,
automake,
texinfo,
gmp,
mpfr,
libffi,
makeWrapper,
noUnicode ? false,
gcc,
clang,
threadSupport ? true,
useBoehmgc ? false,
boehmgc,
}:
let
cc = if stdenv.cc.isClang then clang else gcc;
in
stdenv.mkDerivation rec {
pname = "ecl";
version = "24.5.10";
src = fetchurl {
url = "https://common-lisp.net/project/ecl/static/files/release/ecl-${version}.tgz";
hash = "sha256-5Opluxhh4OSVOGv6i8ZzvQFOltPPnZHpA4+RQ1y+Yis=";
};
nativeBuildInputs = [
libtool
autoconf
automake
texinfo
makeWrapper
];
propagatedBuildInputs = [
libffi
gmp
mpfr
cc
# replaces ecl's own gc which other packages can depend on, thus propagated
]
++ lib.optionals useBoehmgc [
# replaces ecl's own gc which other packages can depend on, thus propagated
boehmgc
];
patches = [
# https://gitlab.com/embeddable-common-lisp/ecl/-/merge_requests/1
(fetchpatch {
url = "https://raw.githubusercontent.com/sagemath/sage/9.2/build/pkgs/ecl/patches/write_error.patch";
sha256 = "0hfxacpgn4919hg0mn4wf4m8r7y592r4gw7aqfnva7sckxi6w089";
})
];
configureFlags = [
# Fix build with gcc15
"CFLAGS=-std=gnu17"
(if threadSupport then "--enable-threads" else "--disable-threads")
"--with-gmp-incdir=${lib.getDev gmp}/include"
"--with-gmp-libdir=${lib.getLib gmp}/lib"
"--with-libffi-incdir=${lib.getDev libffi}/include"
"--with-libffi-libdir=${lib.getLib libffi}/lib"
]
++ lib.optionals useBoehmgc [
"--with-libgc-incdir=${lib.getDev boehmgc}/include"
"--with-libgc-libdir=${lib.getLib boehmgc}/lib"
]
++ lib.optional (!noUnicode) "--enable-unicode";
hardeningDisable = [ "format" ];
# ECLs make check only works after install, making it a de-facto
# installCheck.
doInstallCheck = true;
installCheckTarget = "check";
postInstall = ''
sed -e 's/@[-a-zA-Z_]*@//g' -i $out/bin/ecl-config
wrapProgram "$out/bin/ecl" --prefix PATH ':' "${
lib.makeBinPath [
cc # for the C compiler
cc.bintools.bintools # for ar
]
}"
'';
meta = {
description = "Lisp implementation aiming to be small, fast and easy to embed";
homepage = "https://common-lisp.net/project/ecl/";
license = lib.licenses.mit;
mainProgram = "ecl";
teams = [ lib.teams.lisp ];
platforms = lib.platforms.unix;
changelog = "https://gitlab.com/embeddable-common-lisp/ecl/-/raw/${version}/CHANGELOG";
};
}