Subject: Re: [PATCH] gnu: Add sbcl-stumpwm-pamixer

From: Trev <[email-masked]>
Date: Mon, 19 Sep 2022 14:34:53 -0700

Maxime Devos <[email-masked]> writes:

> On 19-09-2022 20:22, Trev wrote:
>> Maxime Devos <[email-masked]> writes:
>> 
>>> On 19-09-2022 19:47, Trevor Richards wrote:
>>>> +      (arguments
>>>> +       `(#:asd-systems '(:pamixer)
>>>> +         #:phases
>>>> +         ,#~(modify-phases %standard-phases
>>>> +             (add-after 'unpack 'patch-pamixer
>>>> +               (lambda _
>>>> +                 (substitute* "pamixer.lisp"
>>>> +                   (("\"pamixer \"")
>>>> +                    (string-append
>>>> +                     "\"" #$pamixer "/bin/pamixer \""))))))))
>>>
>>> To support --with-input transformations, you can't do #$input, you have
>>> to do #$(this-package-input "pamixer") instead -- or better, don't
>>> depend on input labels, by using (search-input-file inputs
>>> "bin/pamixer") instead.
>>>
>> 
>> Thanks for the feedback. It's hard to tell when a gexp is appropriate
>> and where it's not, or how to properly evaluate it all at the right
>> time. The current patch builds. Is this problematic in the sense that
>> it's using some reference to #$pamixer that is not actually a part of
>> the build environment?
>
> It is inappropriate in the sense that '--with-input' rewrites the 
> 'inputs', 'native-inputs' and 'propagated-inputs' fields, but not the 
> contents of the G-exp.
>

I see.  I am not yet familiar with the --with-input flag.  I will
explore this feature, thank you.

>> Note I had to use a quasiqote and unquote for the `gexp` to work.
>> Transforming the arguments into a list so I would not have to do this
>> breaks the #:asd-systems keyword value somehow.
>
> How about:
>
> (arguments
>    (list #:asd-systems ''(:pa-mixers)
>          #:phases
>          #~(modify-phases [...])))
>
> (i.e., you are removing a layer of quoting by turning the quasiquote 
> into a quote, so it needs to be readded for the #:asd-systems).
>

I see a double-quote there with ~''(:pamixer)~ - which is not something
I have ever tried to do before.  Is this a typo?

I had tried (list #:asd-systems '(:pamixer) #:phases #~([...])) and the
build failed due '(:pamixer) somehow not returning anything from a (car)
function.

Sometimes errors elsewhere cause nebulous tracebacks.  I will try this again.

>> 
>> When I observe the source code it's kinda all over the place when it
>> comes to using gexps in some way or when not to.
>> 
>> I will patch this again and document a note about this but if there's
>> any clarifying documentation I would happily read it. Apologies in
>> advance if I have missed existing documentation.
>
> I'm not aware of any, though I'd like to note that G-exps are new-ish 
> and hence the 'all over the place' is more "guix style doesn't know how 
> to transform this kind of old thing yet" than "we chose for s-exps 
> instead of G-exps".

I like the new way of using gexps.  They are more terse than needing to
assoc reference inputs/outputs.  The thought of as slow transition
happening had occured to me.  I appreciate your insight.

-- 

Trev : 0FB7 D06B 4A2A F07E AD5B  1169 183B 6306 8AA1 D206