diff mbox

[04/15] gnu: Add chez-sockets.

Message ID CAKrPhPPpMQGwx4GDW0TKP_-u4TbuGZQc6kczoOpzjWLM-2=GTw@mail.gmail.com
State New
Headers show

Commit Message

Federico Beffa Oct. 16, 2016, 3:31 p.m. UTC

Comments

Ludovic Courtès Oct. 17, 2016, 1:37 p.m. UTC | #1
Federico Beffa <beffa@ieee.org> skribis:

> From d09667ff264149467b2b69e8a4ef67a1ce9b123c Mon Sep 17 00:00:00 2001
> From: Federico Beffa <beffa@fbengineering.ch>
> Date: Sun, 16 Oct 2016 16:03:07 +0200
> Subject: [PATCH 04/15] gnu: Add chez-sockets.
>
> * gnu/packages/chez.scm (chez-sockets): New variable.

[...]

> +(define-public chez-sockets
> +  (package
> +    (name "chez-sockets")
> +    (version "0.0-1.bce9688")

Please factorize the commit number (info "(guix) Version Numbers").

> +    (native-inputs
> +     `(("chez-scheme" ,chez-scheme)
> +       ("chez-web" ,chez-web)
> +       ("texlive" ,texlive)))

Can documentation be made available in an on-line format like HTML or
Info?

This would be consistent with what most other packages provide and would
avoid the TeX Live dependency.

The rest LGTM, thanks!

Ludo’.
Federico Beffa Oct. 17, 2016, 4:08 p.m. UTC | #2
On Mon, Oct 17, 2016 at 3:37 PM, Ludovic Courtès <ludo@gnu.org> wrote:
> Federico Beffa <beffa@ieee.org> skribis:
>
>> From d09667ff264149467b2b69e8a4ef67a1ce9b123c Mon Sep 17 00:00:00 2001
>> From: Federico Beffa <beffa@fbengineering.ch>
>> Date: Sun, 16 Oct 2016 16:03:07 +0200
>> Subject: [PATCH 04/15] gnu: Add chez-sockets.
>>
>> * gnu/packages/chez.scm (chez-sockets): New variable.
>
> [...]
>
>> +(define-public chez-sockets
>> +  (package
>> +    (name "chez-sockets")
>> +    (version "0.0-1.bce9688")
>
> Please factorize the commit number (info "(guix) Version Numbers").

OK

>
>> +    (native-inputs
>> +     `(("chez-scheme" ,chez-scheme)
>> +       ("chez-web" ,chez-web)
>> +       ("texlive" ,texlive)))
>
> Can documentation be made available in an on-line format like HTML or
> Info?

No, this library is written in a WEB system based on Chez Scheme and LaTeX.

>
> This would be consistent with what most other packages provide and would
> avoid the TeX Live dependency.
>
> The rest LGTM, thanks!
>
> Ludo’.
diff mbox

Patch

From d09667ff264149467b2b69e8a4ef67a1ce9b123c Mon Sep 17 00:00:00 2001
From: Federico Beffa <beffa@fbengineering.ch>
Date: Sun, 16 Oct 2016 16:03:07 +0200
Subject: [PATCH 04/15] gnu: Add chez-sockets.

* gnu/packages/chez.scm (chez-sockets): New variable.
---
 gnu/packages/chez.scm | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 76 insertions(+)

diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm
index d9f6f71..6579b81 100644
--- a/gnu/packages/chez.scm
+++ b/gnu/packages/chez.scm
@@ -271,3 +271,79 @@  and 32-bit PowerPC architectures.")
 programming in Scheme, and more particularly, it is implemented in
 Chez Scheme.")
     (license expat)))
+
+(define-public chez-sockets
+  (package
+    (name "chez-sockets")
+    (version "0.0-1.bce9688")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/arcfide/chez-sockets.git")
+             (commit "bce96881c06bd69a6757a6bff139744153924140")))
+       (file-name (string-append name "-" version "-checkout"))
+       (sha256
+        (base32 "1n5fbwwz51fdzvjackgmnsgh363g9inyxv7kmzi0469cwavwcx5m"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("chez-scheme" ,chez-scheme)
+       ("chez-web" ,chez-web)
+       ("texlive" ,texlive)))
+    (arguments
+     `(#:tests? #f          ; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (chez-web (assoc-ref inputs "chez-web"))
+                    (chez (assoc-ref inputs "chez-scheme"))
+                    (chez-h (dirname (car (find-files chez "scheme\\.h")))))
+               (substitute* "Makefile"
+                 (("(SCHEMEH=).*$" all var)
+                  (string-append var chez-h)))
+               #t)))
+         (add-before 'build 'tangle
+           (lambda _
+             ;; just using "make" tries to build the .c files before
+             ;; they are created.
+             (and (zero? (system* "make" "sockets"))
+                  (zero? (system* "make")))))
+         (replace 'build
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (chez-site (string-append out "/lib/csv"
+                                              ,(package-version chez-scheme)
+                                              "-site/arcfide")))
+               ;; make sure Chez Scheme can find the shared libraries.
+               (substitute* "sockets.ss"
+                 (("(load-shared-object) \"(socket-ffi-values\\.[sd][oy].*)\""
+                   all cmd so)
+                  (string-append cmd " \"" chez-site "/" so "\""))
+                 (("sockets-stub\\.[sd][oy].*" all)
+                  (string-append chez-site "/" all)))
+               ;; to compile chez-sockets, the .so files must be
+               ;; installed (because of the absolute path we
+               ;; inserted above).
+               (for-each (lambda (f d) (install-file f d))
+                         '("socket-ffi-values.so" "sockets-stub.so")
+                         (list chez-site chez-site))
+               (zero? (system "echo '(compile-file \"sockets.sls\")' | scheme -q")))))
+         (replace 'install
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (lib (string-append out "/lib/chez-sockets"))
+                    (doc (string-append out "/share/doc/" ,name "-" ,version))
+                    (chez-site (string-append out "/lib/csv"
+                                              ,(package-version chez-scheme)
+                                              "-site/arcfide")))
+               (for-each (lambda (f d) (install-file f d))
+                         '("sockets.pdf" "sockets.so")
+                         (list doc chez-site))
+               #t))))))
+    (home-page "https://github.com/arcfide/chez-sockets")
+    (synopsis "Extensible sockets library for Chez Scheme")
+    (description "Chez-sockets is an extensible sockets library for
+Chez Scheme.")
+    (license expat)))
-- 
2.7.4