diff mbox series

[bug#55421,1/1] gnu: Add emacs-bfuture.

Message ID 20220514235429.34539-1-plattfot@posteo.net
State Accepted
Headers show
Series Add emacs-bfuture | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Fredrik Salomonsson May 14, 2022, 11:54 p.m. UTC
* gnu/packages/emacs-xyz.scm (emacs-bfuture): New variable.
---
 gnu/packages/emacs-xyz.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

Comments

M May 15, 2022, 8:41 a.m. UTC | #1
Fredrik Salomonsson schreef op za 14-05-2022 om 23:54 [+0000]:
> +   (arguments
> +    `(#:tests? #t
> +      #:test-command '("ert-runner")))

Tests cannot be run when cross-compiling(*), try

  (arguments
    (list #:tests? (not (%current-target-system))
          #:test-command #~'("ert-runner")))

instead.

(*) unfortunately emacs-build-system does not support cross-compilation
yet, so this cannot yet be tested for emacs packages.

> +   (propagated-inputs `())
> +   (native-inputs (list emacs-ert-runner))
> +   (inputs `())

If there are no inputs or native-inputs, these fields can be ommitted.

(Only a partial review, I did not look at anything else)

Greetings,
Maxime.
Fredrik Salomonsson May 15, 2022, 7:05 p.m. UTC | #2
Maxime Devos <maximedevos@telenet.be> writes:

> Fredrik Salomonsson schreef op za 14-05-2022 om 23:54 [+0000]:
>> +   (arguments
>> +    `(#:tests? #t
>> +      #:test-command '("ert-runner")))
>
> Tests cannot be run when cross-compiling(*), try
>
>   (arguments
>     (list #:tests? (not (%current-target-system))
>           #:test-command #~'("ert-runner")))
>
> instead.
>
> (*) unfortunately emacs-build-system does not support cross-compilation
> yet, so this cannot yet be tested for emacs packages.
>

Got it, thanks.

This is probably some sort of user error. But when I apply that patch
and run:

./pre-inst-env guix build emacs-bfuture

I get the following error:

---8<---------------------------------------------------------------------------
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
substitute: updating substitutes from 'https://bordeaux.guix.gnu.org'... 100.0%
The following derivation will be built:
  /gnu/store/8bgw51gsyya5a84bvqj02l6i3g5nk6k1-emacs-bfuture-1.0.1.drv
building /gnu/store/8bgw51gsyya5a84bvqj02l6i3g5nk6k1-emacs-bfuture-1.0.1.drv...
Backtrace:
           9 (primitive-load "/gnu/store/scwqnvkmyxiq5v8dlh4wy2132p5?")
In ice-9/eval.scm:
   214:21  8 (_ #f)
   217:50  7 (lp (#<procedure 7ffff0037480 at ice-9/eval.scm:282:?> ?))
   217:50  6 (lp (#<procedure 7ffff0037460 at ice-9/eval.scm:282:?> ?))
   217:50  5 (lp (#<procedure 7ffff0037440 at ice-9/eval.scm:282:?> ?))
   217:50  4 (lp (#<procedure 7ffff0037420 at ice-9/eval.scm:282:?> ?))
   217:33  3 (lp (#<procedure 7ffff0037300 at ice-9/eval.scm:191:?> ?))
   191:27  2 (_ #f)
   223:20  1 (proc #<directory (guile-user) 7fffeffcfc80>)
In unknown file:
           0 (%resolve-variable (7 . gexp) #<directory (guile-user) ?>)

ERROR: In procedure %resolve-variable:
Unbound variable: gexp
builder for `/gnu/store/8bgw51gsyya5a84bvqj02l6i3g5nk6k1-emacs-bfuture-1.0.1.drv' failed with exit code 1
build of /gnu/store/8bgw51gsyya5a84bvqj02l6i3g5nk6k1-emacs-bfuture-1.0.1.drv failed
View build log at '/var/log/guix/drvs/8b/gw51gsyya5a84bvqj02l6i3g5nk6k1-emacs-bfuture-1.0.1.drv.gz'.
guix build: error: build of `/gnu/store/8bgw51gsyya5a84bvqj02l6i3g5nk6k1-emacs-bfuture-1.0.1.drv' failed
--------------------------------------------------------------------------->8---

I'm using the following steps to setup my environment:

guix shell -D guix -- sh -c './bootstrap && ./configure --localstatedir=/var && make -j16' 
guix shell -D guix --pure -E LANG
./pre-inst-env guix build emacs-bfuture

This is what guix describe --format=channels outputs:

---8<---------------------------------------------------------------------------
(list (channel
        (name 'guix)
        (url "https://git.savannah.gnu.org/git/guix.git")
        (branch "master")
        (commit
          "ebb43029506d994bee0c2b890881fd61a0b0c202")
        (introduction
          (make-channel-introduction
            "9edb3f66fd807b096b48283debdcddccfea34bad"
            (openpgp-fingerprint
              "BBB0 2DDF 2CEA F6A8 0D1D  E643 A2A0 6DF2 A33A 54FA"))))
      (channel
        (name 'flat)
        (url "https://github.com/flatwhatson/guix-channel.git")
        (branch "master")
        (commit
          "094746c1e2e90f2df1e598ab1fd0abb4d75ce84d")
        (introduction
          (make-channel-introduction
            "33f86a4b48205c0dc19d7c036c85393f0766f806"
            (openpgp-fingerprint
              "736A C00E 1254 378B A982  7AF6 9DBE 8265 81B6 4490"))))
      (channel
        (name 'plt)
        (url "https://git.sr.ht/~plattfot/plt")
        (branch "master")
        (commit
          "926c6155b5dc64daad68e02c4620ff60e9de44bd")))
--------------------------------------------------------------------------->8---

>> +   (propagated-inputs `())
>> +   (native-inputs (list emacs-ert-runner))
>> +   (inputs `())
>
> If there are no inputs or native-inputs, these fields can be ommitted.
>
> (Only a partial review, I did not look at anything else)
>

Thank you for taking the time to review it.
M May 15, 2022, 7:38 p.m. UTC | #3
Fredrik Salomonsson schreef op zo 15-05-2022 om 19:05 [+0000]:
> ERROR: In procedure %resolve-variable:
> Unbound variable: gexp

Make sure it's

   (arguments
     (list #:tests? (not (%current-target-system))
           #:test-command #~'("ert-runner")))

and not

   (arguments
     `(#:tests? (not (%current-target-system))
       #:test-command #~'("ert-runner"))) ; <-- won't work

. The latter won't work as-is as the #~ needs to be unquoted with
,#~'("ert-runner").  I recommend the first method ('list' instead of `
aka quasiquote) for having less complicated syntax.

If that wasn't the case or it still fails please send a copy of the
package definition.

Greetings,
Maxime.
Fredrik Salomonsson May 15, 2022, 7:43 p.m. UTC | #4
Fredrik Salomonsson <plattfot@posteo.net> writes:

> Maxime Devos <maximedevos@telenet.be> writes:
>
>> Fredrik Salomonsson schreef op za 14-05-2022 om 23:54 [+0000]:
>>> +   (arguments
>>> +    `(#:tests? #t
>>> +      #:test-command '("ert-runner")))
>>
>> Tests cannot be run when cross-compiling(*), try
>>
>>   (arguments
>>     (list #:tests? (not (%current-target-system))
>>           #:test-command #~'("ert-runner")))
>>
>> instead.
>>
>> (*) unfortunately emacs-build-system does not support cross-compilation
>> yet, so this cannot yet be tested for emacs packages.
>>
>
> Got it, thanks.
>
> This is probably some sort of user error. 

Yup, definetly user error. I missed the list part in the diff and had
written:

>>   (arguments
>>     `(#:tests? (not (%current-target-system))
>>       #:test-command #~'("ert-runner")))

So the gexpression wasn't evaluated at the right time.

Should be all fixed in v1 patch I just sent.
diff mbox series

Patch

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index c18505a681..eff6e76423 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -24706,6 +24706,37 @@  (define-public emacs-dap-mode
 Debug server.")
     (license license:gpl3+)))
 
+(define-public emacs-bfuture
+  (package
+   (name "emacs-bfuture")
+   (version "1.0.1")
+   (source
+    (origin
+     (method git-fetch)
+     (uri (git-reference
+           (url "https://git.sr.ht/~plattfot/bfuture")
+           (commit (string-append "v" version))))
+     (sha256
+      (base32
+       "1m4v4xbsvg26z7nvg2c8q7x1nvv7v4ajm56l0nbkwcbdbrgahpva"))
+     (file-name (git-file-name name version))))
+   (build-system emacs-build-system)
+   (arguments
+    `(#:tests? #t
+      #:test-command '("ert-runner")))
+   (propagated-inputs `())
+   (native-inputs (list emacs-ert-runner))
+   (inputs `())
+   (home-page "https://github.com/plattfot/bfuture.el")
+   (synopsis "Basic future concept for @code{emacs} with @code{tramp} support")
+   (description
+    "This package provides basic functions for spawning processes
+asynchronous in @code{emacs} and retrieving the output. It is similar
+to @code{emacs-pfuture} except that this works over @code{tramp} but
+the feature set is more limited. For example it cannot tell stdout and
+stderr apart.")
+   (license license:gpl3+)))
+
 (define-public emacs-pfuture
   (package
     (name "emacs-pfuture")