Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ pkgs, lib, fetchFromGitHub, llvmPackages_15 }: 2 3 4let 5 6 src = fetchFromGitHub { 7 owner = "clasp-developers"; 8 repo = "clasp"; 9 rev = "2.2.0"; 10 hash = "sha256-gvUqUb0dftW1miiBcAPJur0wOunox4y2SUYeeJpR9R4="; 11 }; 12 13 reposDirs = [ 14 "dependencies" 15 "src/lisp/kernel/contrib" 16 "src/lisp/modules/asdf" 17 "src/mps" 18 "src/bdwgc" 19 "src/libatomic_ops" 20 ]; 21 22 reposTarball = llvmPackages_15.stdenv.mkDerivation { 23 pname = "clasp-repos"; 24 version = "tarball"; 25 inherit src; 26 patches = [ ./clasp-pin-repos-commits.patch ]; 27 nativeBuildInputs = with pkgs; [ 28 sbcl 29 git 30 cacert 31 ]; 32 buildPhase = '' 33 export SOURCE_DATE_EPOCH=1 34 export ASDF_OUTPUT_TRANSLATIONS=$(pwd):$(pwd)/__fasls 35 sbcl --script koga --help 36 for x in {${lib.concatStringsSep "," reposDirs}}; do 37 find $x -type d -name .git -exec rm -rvf {} \; || true 38 done 39 ''; 40 installPhase = '' 41 tar --owner=0 --group=0 --numeric-owner --format=gnu \ 42 --sort=name --mtime="@$SOURCE_DATE_EPOCH" \ 43 -czf $out ${lib.concatStringsSep " " reposDirs} 44 ''; 45 outputHashMode = "flat"; 46 outputHashAlgo = "sha256"; 47 outputHash = "sha256-vgwThjn2h3nKnShtKoHgaPdH/FDHv28fLMQvKFEwG6o="; 48 }; 49 50in llvmPackages_15.stdenv.mkDerivation { 51 pname = "clasp"; 52 version = "2.2.0"; 53 inherit src; 54 nativeBuildInputs = (with pkgs; [ 55 sbcl 56 git 57 pkg-config 58 fmt 59 gmpxx 60 libelf 61 boost 62 libunwind 63 ninja 64 ]) ++ (with llvmPackages_15; [ 65 llvm 66 libclang 67 ]); 68 configurePhase = '' 69 export SOURCE_DATE_EPOCH=1 70 export ASDF_OUTPUT_TRANSLATIONS=$(pwd):$(pwd)/__fasls 71 tar xf ${reposTarball} 72 sbcl --script koga \ 73 --skip-sync \ 74 --cc=$NIX_CC/bin/cc \ 75 --cxx=$NIX_CC/bin/c++ \ 76 --reproducible-build \ 77 --package-path=/ \ 78 --bin-path=$out/bin \ 79 --lib-path=$out/lib \ 80 --share-path=$out/share 81''; 82 buildPhase = '' 83 ninja -C build 84''; 85 installPhase = '' 86 ninja -C build install 87''; 88 89 meta = { 90 description = "A Common Lisp implementation based on LLVM with C++ integration"; 91 license = lib.licenses.lgpl21Plus ; 92 maintainers = lib.teams.lisp.members; 93 platforms = ["x86_64-linux" "x86_64-darwin"]; 94 # Upstream claims support, but breaks with: 95 # error: use of undeclared identifier 'aligned_alloc' 96 broken = llvmPackages_15.stdenv.isDarwin; 97 homepage = "https://github.com/clasp-developers/clasp"; 98 }; 99 100} 101