diff options
Diffstat (limited to 'pkgs/development/lisp-modules/quicklisp-to-nix/ql-to-nix.lisp')
-rw-r--r-- | pkgs/development/lisp-modules/quicklisp-to-nix/ql-to-nix.lisp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/pkgs/development/lisp-modules/quicklisp-to-nix/ql-to-nix.lisp b/pkgs/development/lisp-modules/quicklisp-to-nix/ql-to-nix.lisp index ded802ca693a..dc4b14c1f60b 100644 --- a/pkgs/development/lisp-modules/quicklisp-to-nix/ql-to-nix.lisp +++ b/pkgs/development/lisp-modules/quicklisp-to-nix/ql-to-nix.lisp @@ -33,6 +33,17 @@ (format nil "~{~16,2,'0r~}" (map 'list 'identity (md5:md5sum-file path)))))))) +(defun escape-filename (s) + (format nil "~{~a~}" + (loop + for x in (map 'list 'identity s) + collect + (case x + (#\/ "_slash_") + (#\\ "_backslash_") + (#\_ "__") + (t x))))) + (defun system-data (system) (ql:quickload system) (let* @@ -64,6 +75,7 @@ :url url :md5 file-md5 :name name + :filename (escape-filename name) :deps deps :dependencies dependencies :version version))) @@ -112,7 +124,8 @@ for s in closure do (alexandria:write-string-into-file (nix-expression s) - (format nil "~a/quicklisp-to-nix-output/~a.nix" target-directory s) + (format nil "~a/quicklisp-to-nix-output/~a.nix" + target-directory (escape-filename s)) :if-exists :supersede)) (alexandria:write-string-into-file (cl-emb:execute-emb |