summary refs log tree commit diff
path: root/pkgs/development/compilers/ccl/default.nix
blob: 7678c066df28f3ebb1036ec6530cc0a78074bfdd (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
a :  
let 
  buildInputs = with a; [
    
  ];
in
rec {
  version = "1.8";
  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 = "1dgg6a8i2csa6xidsq66hbw7zx62gm2178hpkp88yyzgxylszp01";
  };
  
  inherit buildInputs;
  configureFlags = [];

  /* doConfigure should be removed if not needed */
  phaseNames = ["doUnpack" "doPatchElf" "doCopy"];

  doCopy = a.fullDepEntry ''
    mkdir -p "$out/share"
    cp -r . "$out/share/ccl-installation"

    mkdir -p "$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;
  };
}