Message ID | 21b927da240259b41c3ceee1a246019095509740.1725985244.git.jgart@dismail.de |
---|---|
State | New |
Headers | show |
Series | [bug#73170] gnu: Add cl-async-process. | expand |
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. https://github.com/lem-project/async-process/issues/21 Thanks!
Hi. jgart <jgart@dismail.de> skribis: > +(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. > +(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". > +(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.
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"))