diff --git a/pkgs/development/compilers/ccl/default.nix b/pkgs/development/compilers/ccl/default.nix new file mode 100644 index 000000000000..404c0fce5232 --- /dev/null +++ b/pkgs/development/compilers/ccl/default.nix @@ -0,0 +1,49 @@ +a : +let + buildInputs = with a; [ + + ]; +in +rec { + version = "1.4"; + name = "ccl-${version}"; + + /* There are also MacOS and FreeBSD and Windows versions */ + src = a.fetchurl { + url = "ftp://ftp.clozure.com/pub/release/${version}/${name}-linuxx86.tar.gz"; + sha256 = "1z4x4kxjj2ligb2vfrx5mjww20gdkxbvgw1ax5l9c8ha802bfyg8"; + }; + + inherit buildInputs; + configureFlags = []; + + /* doConfigure should be removed if not needed */ + phaseNames = ["doUnpack" "doPatchElf" "doCopy"]; + + doCopy = a.fullDepEntry '' + ensureDir "$out/share" + cp -r . "$out/share/ccl-installation" + + ensureDir "$out/bin" + for i in $(find . -maxdepth 1 -type f -perm +111); do + echo -e '#! /bin/sh\n'"$out/share/ccl-installation/$(basename "$i")"'"$@"\n' > "$out"/bin/"$(basename "$i")" + chmod a+x "$out"/bin/"$(basename "$i")" + done + '' ["minInit" "doUnpack" "defEnsureDir"]; + + doPatchElf = a.fullDepEntry '' + patchelfFile="$(type -P patchelf)" + goodInterp="$(patchelf --print-interpreter "$patchelfFile")" + find . -type f -perm +111 -exec patchelf --set-interpreter "$goodInterp" '{}' ';' + '' ["minInit" "doUnpack"]; + + meta = { + description = "Clozure Common Lisp"; + maintainers = [ + a.lib.maintainers.raskin + ]; + platforms = with a.lib.platforms; + linux; + }; +} + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1d60fc853aae..8d4acb10a202 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1879,6 +1879,8 @@ let inherit fetchurl stdenv; }; + ccl = builderDefsPackage ../development/compilers/ccl {}; + dylan = import ../development/compilers/gwydion-dylan { inherit fetchurl stdenv perl boehmgc yacc flex readline; dylan =