summary refs log tree commit diff
path: root/pkgs/development/lisp-modules/quicklisp-to-nix
diff options
context:
space:
mode:
authorMichael Raskin <7c6f434c@mail.ru>2017-06-21 22:15:07 +0200
committerMichael Raskin <7c6f434c@mail.ru>2017-06-21 22:17:48 +0200
commitbc47794ab580a28d9c995e4b0f01ef4bee77af28 (patch)
tree0da1b1d874991f2a70d6777d3b4763616fc839e7 /pkgs/development/lisp-modules/quicklisp-to-nix
parente89e96a7551e4213f50e0f44467546a26d42ea5f (diff)
downloadnixlib-bc47794ab580a28d9c995e4b0f01ef4bee77af28.tar
nixlib-bc47794ab580a28d9c995e4b0f01ef4bee77af28.tar.gz
nixlib-bc47794ab580a28d9c995e4b0f01ef4bee77af28.tar.bz2
nixlib-bc47794ab580a28d9c995e4b0f01ef4bee77af28.tar.lz
nixlib-bc47794ab580a28d9c995e4b0f01ef4bee77af28.tar.xz
nixlib-bc47794ab580a28d9c995e4b0f01ef4bee77af28.tar.zst
nixlib-bc47794ab580a28d9c995e4b0f01ef4bee77af28.zip
quicklispPackages: update
Escape things by default in derivation names (i.e. digit cannot be the
first character etc.)

Update Quicklisp (tracking upstream); list new missing dependencies

Add some minimal README about ql-to-nix
Diffstat (limited to 'pkgs/development/lisp-modules/quicklisp-to-nix')
-rw-r--r--pkgs/development/lisp-modules/quicklisp-to-nix/invocation.emb9
-rw-r--r--pkgs/development/lisp-modules/quicklisp-to-nix/nix-package.emb4
-rw-r--r--pkgs/development/lisp-modules/quicklisp-to-nix/ql-to-nix.lisp31
3 files changed, 27 insertions, 17 deletions
diff --git a/pkgs/development/lisp-modules/quicklisp-to-nix/invocation.emb b/pkgs/development/lisp-modules/quicklisp-to-nix/invocation.emb
index a13cedf3dfe4..3a0c5cb5fc2c 100644
--- a/pkgs/development/lisp-modules/quicklisp-to-nix/invocation.emb
+++ b/pkgs/development/lisp-modules/quicklisp-to-nix/invocation.emb
@@ -1,8 +1,7 @@
-  "<% @var name %>" = buildLispPackage
+  "<% @var filename %>" = buildLispPackage
     ((f: x: (x // (f x)))
-       (qlOverrides."<% @var name %>" or (x: {}))
+       (qlOverrides."<% @var filename %>" or (x: {}))
        (import ./quicklisp-to-nix-output/<% @var filename %>.nix {
          inherit fetchurl;<% @loop deps %>
-           "<% @var name %>" = quicklisp-to-nix-packages."<% @var name %>";<% @endloop %>
-       }));<% @ifequal name filename %><% @else %>
-  "<% @var filename %>" = quicklisp-to-nix-packages."<% @var name %>";<% @endif %>
+           "<% @var filename %>" = quicklisp-to-nix-packages."<% @var filename %>";<% @endloop %>
+       }));
diff --git a/pkgs/development/lisp-modules/quicklisp-to-nix/nix-package.emb b/pkgs/development/lisp-modules/quicklisp-to-nix/nix-package.emb
index 3b71ade03f7c..baedbd1553a5 100644
--- a/pkgs/development/lisp-modules/quicklisp-to-nix/nix-package.emb
+++ b/pkgs/development/lisp-modules/quicklisp-to-nix/nix-package.emb
@@ -7,12 +7,14 @@ rec {
 
   description = ''<% @var description %>'';
 
-  deps = [ <% @loop deps %>args."<% @var name %>" <% @endloop %>];
+  deps = [ <% @loop deps %>args."<% @var filename %>" <% @endloop %>];
 
   src = fetchurl {
     url = ''<% @var url %>'';
     sha256 = ''<% @var sha256 %>'';
   };
+    
+  packageName = "<% @var name %>";
 
   overrides = x: {
     postInstall = ''
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 18cf6d097a21..141fb0f34ebb 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
@@ -36,19 +36,27 @@
                        (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)))))
+  (format 
+    nil "~a~{~a~}"
+    (if (cl-ppcre:scan "^[a-zA-Z_]" s) "" "_")
+    (loop
+      for x in (map 'list 'identity s)
+      collect
+      (case x
+        (#\/ "_slash_")
+        (#\\ "_backslash_")
+        (#\_ "__")
+        (#\. "_dot_")
+        (t x)))))
 
 (defun system-data (system)
   (let*
-    ((asdf-system (asdf:find-system system))
+    ((asdf-system
+       (or
+         (ignore-errors (asdf:find-system system))
+         (progn
+           (ql:quickload system)
+           (asdf:find-system system))))
      (ql-system (ql-dist:find-system system))
      (ql-release (ql-dist:release ql-system))
      (ql-sibling-systems (ql-dist:provided-systems ql-release))
@@ -73,7 +81,8 @@
            :test 'equal)
          ql-sibling-names
          :test 'equal))
-     (deps (mapcar (lambda (x) (list :name x)) dependencies))
+     (deps (mapcar (lambda (x) (list :name x :filename (escape-filename x)))
+                   dependencies))
      (description (asdf:system-description asdf-system))
      (release-name (ql-dist:short-description ql-release))
      (version (cl-ppcre:regex-replace-all