about summary refs log tree commit diff
path: root/third_party/lisp/str.nix
{ depot, pkgs, ... }:

let
  inherit (depot.nix) buildLisp;
  src = with pkgs; srcOnly lispPackages.str;
in
buildLisp.library {
  name = "str";

  deps = with depot.third_party.lisp; [
    {
      sbcl = buildLisp.bundled "uiop";
      default = buildLisp.bundled "asdf";
    }
    cl-ppcre
    cl-ppcre.unicode
    cl-change-case
  ];

  srcs = [
    (pkgs.runCommand "str.lisp" { } ''
      substitute ${src}/str.lisp $out \
        --replace-fail \
          '(asdf:component-version (asdf:find-system "str"))' \
          '"${pkgs.lispPackages.str.meta.version}"'
    '')
  ];

  brokenOn = [
    "ccl" # In REPLACE-USING: Shouldn't assign to variable I
  ];

  tests = {
    name = "str-test";
    srcs = [ (src + "/test/test-str.lisp") ];
    deps = [
      {
        sbcl = depot.nix.buildLisp.bundled "uiop";
        default = depot.nix.buildLisp.bundled "asdf";
      }
      depot.third_party.lisp.prove
      depot.third_party.lisp.fiveam
    ];

    expression = ''
      (fiveam:run! 'str::test-str)
    '';
  };
}