feat(3p/lisp): add qbase64

Change-Id: I448b9241726c3bb08f14188775a66e1da1225e02
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5004
Tested-by: BuildkiteCI
Autosubmit: sterni <sternenseemann@systemli.org>
Reviewed-by: sterni <sternenseemann@systemli.org>
This commit is contained in:
sterni 2022-01-19 13:59:00 +01:00 committed by clbot
parent 9cf42c25c3
commit c1484c9f85
2 changed files with 70 additions and 0 deletions

View file

@ -0,0 +1,13 @@
diff --git a/qbase64-test.lisp b/qbase64-test.lisp
index 310fdf3..b92abb5 100644
--- a/qbase64-test.lisp
+++ b/qbase64-test.lisp
@@ -14,7 +14,7 @@
(with-open-temporary-file (tmp :direction :output :element-type '(unsigned-byte 8))
(write-sequence bytes tmp)
(force-output tmp)
- (let* ((encoded (uiop:run-program `("base64" "-b" ,(format nil "~A" linebreak) "-i" ,(namestring tmp)) :output (if (zerop linebreak) '(:string :stripped t) :string)))
+ (let* ((encoded (uiop:run-program `("base64" "-w" ,(format nil "~A" linebreak) ,(namestring tmp)) :output (if (zerop linebreak) '(:string :stripped t) :string) :error-output *error-output*))
(length (length encoded)))
(cond ((and (> length 1)
(string= (subseq encoded (- length 2))

57
third_party/lisp/qbase64/default.nix vendored Normal file
View file

@ -0,0 +1,57 @@
{ depot, pkgs, ... }:
let
src = pkgs.applyPatches {
src = pkgs.fetchFromGitHub {
owner = "chaitanyagupta";
repo = "qbase64";
rev = "4ac193ed6b35a867ca453ed74acc128c9a077407";
sha256 = "06daqqfdd51wkx0pyxgz7zq4ibzsqsgn3qs04jabx67gyybgnmjm";
};
patches = [
# qbase64 expects macOS base64
./coreutils-base64.patch
];
};
getSrcs = builtins.map (p: "${src}/${p}");
in
depot.nix.buildLisp.library {
name = "qbase64";
srcs = getSrcs [
"package.lisp"
"utils.lisp"
"stream-utils.lisp"
"qbase64.lisp"
];
deps = [
depot.third_party.lisp.trivial-gray-streams
depot.third_party.lisp.metabang-bind
];
tests = {
name = "qbase64-tests";
srcs = getSrcs [
"qbase64-test.lisp"
];
deps = [
{
sbcl = depot.nix.buildLisp.bundled "uiop";
default = depot.nix.buildLisp.bundled "asdf";
}
depot.third_party.lisp.fiveam
depot.third_party.lisp.cl-fad
];
expression = ''
(fiveam:run! '(qbase64-test::encoder 'qbase64-test::decoder))
'';
};
}