about summary refs log tree commit diff
path: root/pkgs/development/lisp-modules/quicklisp-to-nix/ql-to-nix.lisp
diff options
context:
space:
mode:
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.lisp15
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