biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / tools / package-management / akku / akkuDerivation.nix
blob5b4609c3abaa6c390c3b026c608c158c056eed63
1 { stdenv, akku, chez, guile, chibi, makeWrapper, lib, writeShellScriptBin }:
2 { pname, version, src, buildInputs ? [ ], r7rs ? false, nativeBuildInputs ? [ ], ... } @ args:
3 let
4   parse-akku_ = writeShellScriptBin "parse-akku"
5     "${guile}/bin/guile --no-auto-compile ${./parse-akku.scm} \"$@\"";
6   parse-akku = "${parse-akku_}/bin/parse-akku";
7 in
8 stdenv.mkDerivation ({
9   inherit version src;
11   pname = "akku-${pname}";
12   propagatedBuildInputs = buildInputs;
13   buildInputs = [ ];
14   nativeBuildInputs = [ makeWrapper akku chez chibi ] ++ nativeBuildInputs;
15   buildPhase = ''
16     runHook preBuild
18     # only install the project
19     rm -f Akku.lock Akku.manifest
21     akku install
23     # make sure akku metadata is present during testing and onwards
24     echo $PWD $CHEZSCHEMELIBDIRS \
25     | sed "s/:/ /g" \
26     | xargs find \
27     | grep "metadata.sls" \
28     | xargs ${parse-akku} merge ${pname} ${version} > temp___
29     mv temp___ .akku/lib/akku/metadata.sls
31     runHook postBuild
32   '';
33   checkPhase = ''
34     IS_R7RS=false
35     runHook preCheck
38     propagated_chez=$CHEZSCHEMELIBDIRS
39     propagated_chibi=$CHIBI_MODULE_PATH
41     export CHEZSCHEMELIBDIRS="$PWD/.akku/lib:$CHEZSCHEMELIBDIRS"
42     export CHIBI_MODULE_PATH="$PWD/.akku/lib:$CHIBI_MODULE_PATH"
44     # Run all test .sps files if they exist
45     # and run tests for libs mirrored from snow-fort.
46     for path in $(find test* -type f | grep -e "\.sps") \
47                 $(find . | grep "run-test" | grep "\.scm"); do
48       echo Running test: $path
49       [[ "\n$SKIP\n" =~ $(basename $path) ]] && continue
50       if [ -x $path ]; then
51         patchShebangs $path
52         ./$path
53       elif ${lib.trivial.boolToString r7rs}; then
54         chibi-scheme $path
55       else
56         scheme-script $path
57       fi
58     done
60     runHook postCheck
62     export CHEZSCHEMELIBDIRS=$propagated_chez
63     export CHIBI_MODULE_PATH=$propagated_chibi
64   '';
65   doCheck = true;
66   installPhase = ''
67     runHook preInstall
69     mkdir -p $out/lib
71     cd .akku
73     rm -f bin/activate*
75     cp -rL lib $out/lib/scheme-libs
76     cp -rL bin $out/bin
78     [ -d ffi ]    && cp -rL ffi $out/lib
79     [ -d libobj ] && cp -rL libobj $out/lib
81     CHEZSCHEMELIBDIRS="$out/lib/scheme-libs:$CHEZSCHEMELIBDIRS"
83     # add support for other schemes
84     for f in $out/bin/*
85     do
86     patchShebangs $f
87     wrapProgram $f \
88       --prefix CHEZSCHEMELIBDIRS : $CHEZSCHEMELIBDIRS
89     done
91     runHook postInstall
92   '';
93   meta = {
94     inherit (akku.meta) platforms;
95   } // args.meta or { };
96   setupHook = ./setup-hook.sh;
97 } // builtins.removeAttrs args [ "name" "buildInputs" "meta" "nativeBuildInputs" ])