nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at 19.03 131 lines 4.2 kB view raw
1{ stdenv, fetchFromGitHub, fetchFromGitLab 2, llvmPackages 3, cmake, boehmgc, gmp, zlib, ncurses, boost, libelf 4, python, git, sbcl 5, wafHook 6}: 7let 8 sicl = fetchFromGitHub { 9 owner = "Bike"; 10 repo = "SICL"; 11 rev = "78052fb5f02a3814eb7295f3dcac09f21f98702b"; 12 sha256 = "0wnmp40310ls6q9gkr5ysfkj2qirq26ljjicnkqifc53mm0ghz4i"; 13 }; 14 cst = fetchFromGitHub { 15 owner = "robert-strandh"; 16 repo = "Concrete-Syntax-Tree"; 17 rev = "8d8c5abf8f1690cb2b765241d81c2eb86d60d77e"; 18 sha256 = "1rs8a5nbfffdyli126sccd0z1a8h5axp222b4pgwvgfxsb9w7g3s"; 19 }; 20 c2mop = fetchFromGitHub { 21 owner = "pcostanza"; 22 repo = "closer-mop"; 23 rev = "d4d1c7aa6aba9b4ac8b7bb78ff4902a52126633f"; 24 sha256 = "1amcv0f3vbsq0aqhai7ki5bi367giway1pbfxyc47r7q3hq5hw3c"; 25 }; 26 acclimation = fetchFromGitHub { 27 owner = "robert-strandh"; 28 repo = "Acclimation"; 29 rev = "dd15c86b0866fc5d8b474be0da15c58a3c04c45c"; 30 sha256 = "0ql224qs3zgflvdhfbca621v3byhhqfb71kzy70bslyczxv1bsh2"; 31 }; 32 eclector = fetchFromGitHub { 33 owner = "robert-strandh"; 34 repo = "Eclector"; 35 rev = "287ce817c0478668bd389051d2cc6b26ddc62ec9"; 36 sha256 = "0v7mgkq49ddyx5vvsradcp772y5l7cv9xrll3280hyginpm8w6q3"; 37 }; 38 alexandria = fetchFromGitHub { 39 owner = "clasp-developers"; 40 repo = "alexandria"; 41 rev = "e5c54bc30b0887c237bde2827036d17315f88737"; 42 sha256 = "14h7a9fwimiw9gqxjm2h47d95bfhrm7b81f6si7x8vy18d78fn4g"; 43 }; 44 mps = fetchFromGitHub { 45 owner = "Ravenbrook"; 46 repo = "mps"; 47 rev = "b8a05a3846430bc36c8200f24d248c8293801503"; 48 sha256 = "1q2xqdw832jrp0w9yhgr8xihria01j4z132ac16lr9ssqznkprv6"; 49 }; 50 asdf = fetchFromGitLab { 51 domain = "gitlab.common-lisp.net"; 52 owner = "asdf"; 53 repo = "asdf"; 54 rev = "3.3.1.2"; 55 sha256 = "0ljr2vc0cb2wrijcyjmp9hcaj2bdhh05ci3zf4f43hdq6i2fgg6g"; 56 }; 57in 58stdenv.mkDerivation rec { 59 name = "${pname}-${version}"; 60 pname = "clasp"; 61 version = "0.8.99.20181128"; 62 63 src = fetchFromGitHub { 64 owner = "drmeister"; 65 repo = "clasp"; 66 rev = "2f2b52ccb750048460562b5987a7eaf7a1aa4445"; 67 sha256 = "0ra55vdnk59lygwzlxr5cg16vb9c45fmg59wahaxclwm461w7fwz"; 68 fetchSubmodules = true; 69 }; 70 71 nativeBuildInputs = [ cmake python git sbcl wafHook ] ++ 72 (with llvmPackages; [ llvm clang ]); 73 74 buildInputs = with llvmPackages; 75 ( 76 builtins.map (x: stdenv.lib.overrideDerivation x 77 (x: {NIX_CFLAGS_COMPILE= (x.NIX_CFLAGS_COMPILE or "") + " -frtti"; })) 78 [ llvm clang clang-unwrapped clang ]) ++ 79 [ 80 gmp zlib ncurses 81 boost boehmgc libelf 82 (boost.override {enableStatic = true; enableShared = false;}) 83 (stdenv.lib.overrideDerivation boehmgc 84 (x: {configureFlags = (x.configureFlags or []) ++ ["--enable-static"];})) 85 ]; 86 87 NIX_CXXSTDLIB_COMPILE = " -frtti "; 88 89 postPatch = '' 90 echo " 91 PREFIX = '$out' 92 " | sed -e 's/^ *//' > wscript.config 93 94 mkdir -p src/lisp/kernel/contrib/sicl 95 mkdir -p src/lisp/kernel/contrib/Concrete-Syntax-Tree 96 mkdir -p src/lisp/kernel/contrib/closer-mop 97 mkdir -p src/lisp/kernel/contrib/Acclimation 98 mkdir -p src/lisp/kernel/contrib/Eclector 99 mkdir -p src/lisp/kernel/contrib/alexandria 100 mkdir -p src/mps 101 mkdir -p src/lisp/modules/asdf 102 103 cp -rfT "${sicl}" src/lisp/kernel/contrib/sicl 104 cp -rfT "${cst}" src/lisp/kernel/contrib/Concrete-Syntax-Tree 105 cp -rfT "${c2mop}" src/lisp/kernel/contrib/closer-mop 106 cp -rfT "${acclimation}" src/lisp/kernel/contrib/Acclimation 107 cp -rfT "${eclector}" src/lisp/kernel/contrib/Eclector 108 cp -rfT "${alexandria}" src/lisp/kernel/contrib/alexandria 109 cp -rfT "${mps}" src/mps 110 cp -rfT "${asdf}" src/lisp/modules/asdf 111 112 chmod -R u+rwX src 113 ( cd src/lisp/modules/asdf; make ) 114 ''; 115 116 buildTargets = "build_cboehm"; 117 installTargets = "install_cboehm"; 118 119 CLASP_SRC_DONTTOUCH = "true"; 120 121 meta = { 122 inherit version; 123 description = ''A Common Lisp implementation based on LLVM with C++ integration''; 124 license = stdenv.lib.licenses.lgpl21Plus ; 125 maintainers = [stdenv.lib.maintainers.raskin]; 126 platforms = stdenv.lib.platforms.linux; 127 # Large, long to build, a private build of clang is needed, a prerelease. 128 hydraPlatforms = []; 129 homepage = "https://github.com/drmeister/clasp"; 130 }; 131}