[PATCH] gnu: Add cl-async-process.

  • Open
  • quality assurance status badge
Details
2 participants
  • Guillaume Le Vaillant
  • jgart
Owner
unassigned
Submitted by
jgart
Severity
normal
J
(address . guix-patches@gnu.org)(name . jgart)(address . jgart@dismail.de)
21b927da240259b41c3ceee1a246019095509740.1725985244.git.jgart@dismail.de
* gnu/packages/lisp-xyz.scm (cl-async-process, ecl-async-process,
sbcl-async-process): New variables.

Change-Id: I4e4707ffa30b6fcd1267e681f71a874c790746f4
---
gnu/packages/lisp-xyz.scm | 75 +++++++++++++++++++++++++++++++++++++++
1 file changed, 75 insertions(+)

Toggle diff (97 lines)
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 02eb3514ee..eaaaa17f99 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -81,6 +81,7 @@ (define-module (gnu packages lisp-xyz)
#:use-module (guix build-system trivial)
#:use-module (guix build-system emacs)
#:use-module (gnu packages audio)
+ #:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages c)
#:use-module (gnu packages compression)
@@ -2850,6 +2851,80 @@ (define-public cl-cells
(define-public ecl-cells
(sbcl-package->ecl-package sbcl-cells))
+(define (async-process-origin commit name version)
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/lem-project/async-process")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1m2sfgfg6c0gqqy1pqsahsiw3j25y473mfw7sx0akkqbhwhm7mjb"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Delete precompiled artifacts.
+ `(begin
+ (for-each delete-file-recursively
+ (list "static"
+ "static_old0001-819cbf6"))))))
+
+(define async-process-c-sources
+ (let ((commit "9690530fc92b59636d9f17d821afa7697e7c8ca4")
+ (revision "0"))
+ (package
+ (name "async-process-c-sources")
+ (version (git-version "0.0.1" revision commit))
+ (source (async-process-origin commit name version))
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'bootstrap
+ (lambda _
+ (invoke "libtoolize")
+ (invoke "aclocal")
+ (invoke "autoheader")
+ (invoke "automake" "-a")
+ (invoke "autoconf"))))))
+ (native-inputs (list autoconf automake libtool))
+ (home-page "https://github.com/lem-project/async-process")
+ (synopsis "Asynchronous process execution for Common Lisp")
+ (description "This library provides an asynchronous process
+execution mechanism for Common Lisp.")
+ (license license:expat))))
+
+(define-public sbcl-async-process
+ (let ((commit "9690530fc92b59636d9f17d821afa7697e7c8ca4")
+ (revision "0"))
+ (package
+ (name "sbcl-async-process")
+ (version (git-version "0.0.1" revision commit))
+ (source (async-process-origin commit name version))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/async-process.lisp"
+ (("libasyncprocess\\.so")
+ (search-input-file inputs
+ "/lib/async-process/libasyncprocess.so"))))))))
+ (inputs (list async-process-c-sources sbcl-cffi))
+ (home-page "https://github.com/lem-project/async-process")
+ (synopsis "Asynchronous process execution for Common Lisp")
+ (description "This library provides an asynchronous process
+execution mechanism for Common Lisp.")
+ (license license:expat))))
+
+(define-public cl-async-process
+ (sbcl-package->cl-source-package sbcl-async-process))
+
+(define-public ecl-async-process
+ (sbcl-package->ecl-package sbcl-async-process))
+
(define-public sbcl-cephes
(let ((commit "d87146fa38c8425ffb5fe425eee5eb3e818bacd4")
(revision "0"))

base-commit: f977cb2b609f7122db2cf026cac5ab9d6d44a206
--
2.46.0
J
(address . 73170@debbugs.gnu.org)
874j6nihqc.fsf@dismail.de
Hi Guillaume,

Would you be able to review this one? This package is a dependency of
the lem text editor.

To give some context, this package has C source code that needs to be
compiled.

There is a bootstrap script in the root of the project repository that
does too much. It also runs configure and make, for example.


Thanks!
--
all the best,
jgart
G
G
Guillaume Le Vaillant wrote 2 days ago
Re: [bug#73170] [PATCH] gnu: Add cl-async-process.
(name . jgart)(address . jgart@dismail.de)(address . 73170@debbugs.gnu.org)
874j6es9mz.fsf@kitej
Hi.

jgart <jgart@dismail.de> skribis:

Toggle quote (17 lines)
> +(define (async-process-origin commit name version)
> + (origin
> + (method git-fetch)
> + (uri (git-reference
> + (url "https://github.com/lem-project/async-process")
> + (commit commit)))
> + (file-name (git-file-name name version))
> + (sha256
> + (base32 "1m2sfgfg6c0gqqy1pqsahsiw3j25y473mfw7sx0akkqbhwhm7mjb"))
> + (modules '((guix build utils)))
> + (snippet
> + ;; Delete precompiled artifacts.
> + `(begin
> + (for-each delete-file-recursively
> + (list "static"
> + "static_old0001-819cbf6"))))))

I don't think this function is necessary; and the sha256 hash is fixed
here but it would in fact depend on the commit passed as argument to the
function.


Toggle quote (26 lines)
> +(define async-process-c-sources
> + (let ((commit "9690530fc92b59636d9f17d821afa7697e7c8ca4")
> + (revision "0"))
> + (package
> + (name "async-process-c-sources")
> + (version (git-version "0.0.1" revision commit))
> + (source (async-process-origin commit name version))
> + (build-system gnu-build-system)
> + (arguments
> + (list
> + #:phases
> + #~(modify-phases %standard-phases
> + (replace 'bootstrap
> + (lambda _
> + (invoke "libtoolize")
> + (invoke "aclocal")
> + (invoke "autoheader")
> + (invoke "automake" "-a")
> + (invoke "autoconf"))))))
> + (native-inputs (list autoconf automake libtool))
> + (home-page "https://github.com/lem-project/async-process")
> + (synopsis "Asynchronous process execution for Common Lisp")
> + (description "This library provides an asynchronous process
> +execution mechanism for Common Lisp.")
> + (license license:expat))))

So I would rather put the 'origin' field in this package building the
C library. And as the purpose of this package is to build the
libasyncprocess library, I would just call it "libasyncprocess".


Toggle quote (25 lines)
> +(define-public sbcl-async-process
> + (let ((commit "9690530fc92b59636d9f17d821afa7697e7c8ca4")
> + (revision "0"))
> + (package
> + (name "sbcl-async-process")
> + (version (git-version "0.0.1" revision commit))
> + (source (async-process-origin commit name version))
> + (build-system asdf-build-system/sbcl)
> + (arguments
> + (list
> + #:phases
> + #~(modify-phases %standard-phases
> + (add-after 'unpack 'fix-paths
> + (lambda* (#:key inputs #:allow-other-keys)
> + (substitute* "src/async-process.lisp"
> + (("libasyncprocess\\.so")
> + (search-input-file inputs
> + "/lib/async-process/libasyncprocess.so"))))))))
> + (inputs (list async-process-c-sources sbcl-cffi))
> + (home-page "https://github.com/lem-project/async-process")
> + (synopsis "Asynchronous process execution for Common Lisp")
> + (description "This library provides an asynchronous process
> +execution mechanism for Common Lisp.")
> + (license license:expat))))

Then the sbcl-async-process package could be simplified by inheriting
from the libasyncprocess package, and modifying the 'name',
'build-system', 'inputs' and 'arguments' fields.
-----BEGIN PGP SIGNATURE-----

iIUEAREKAC0WIQTLxZxm7Ce5cXlAaz5r6CCK3yH+PwUCZumBNQ8cZ2x2QHBvc3Rl
by5uZXQACgkQa+ggit8h/j98jwD8CX1SzVp/8GuAypsPptIHsD2q4oIittJc6VL6
nHm+PYABAIc4yMwb5yNatCFG2nNqZK3dQPk6t0X5/UVQOnV7D3Ee
=JBOI
-----END PGP SIGNATURE-----

?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 73170@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 73170
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch