Subject: [bug#56768] [PATCH] gnu: engineering: Add qucs-s.

From: Maxime Devos <[email-masked]>
Date: Sat, 6 Aug 2022 13:42:53 +0200

On 30-07-2022 08:59, Artyom V. Poptsov wrote:
>> ... as you have observed, things work even when they aren't propagated
>> (at least for qtbase etc., ngspice and octave have not yet been
>> tested).
> I usually put into "propagated-inputs" packages that provide some binary
> that the current package use in the runtime.
>
> So do you mean that I should rely only on "inputs" package property, and
> the inputs will be propagated anyway if they're in use by the package?
>
Yes to the first (at least in this case, propagation is sometimes hard 
to avoid), no to the second. Propagation happens only for 
propagated-inputs; however, if they are 'in use' by the package by 
ending up in the references, then the GC won't remove the store items. 
The GC and propagation are independent mechanisms.

> Less experimentally, the propagated- in propagated-inputs means only 
> that: propagation -- the dependencies are still installed even if they 
> aren't propagated, because the substitute* inserts a reference so the 
> GC knows to not delete it, the only difference is that the dependency 
> isn't automatically put in the profile when not propagating. 

Here, I meant with 'installed' = entry in /gnu/store is downloaded or 
built and kept, not 'added to ~/.guix-profile or equivalent' -- the 
latter is propagation.

> So the next time Qucs-S run it gets the paths from the configuration
> file.
>
> I changed the substitutions so Qucs-S will ignore the paths to Octave
> and NGSpice from the configuration and will always use the paths
> provided by Guix.  Also any custom paths to Octave and NGSpice will be
> overwritten in the config when the application exits.
>
> That is sub-optimal in my view as we're messing up with the application
> configuration logic and if a user wants to change those paths he or she
> will be able to remove the config and set the paths in the startup
> configuration dialogue, but the settings will have no effect; that will
> be a bit confusing.
>
> Yet at least Qucs-S will always use the right Octave/NGSpice path from
> GNU Guix.
>
> What do you think?
>
> Here's the patch.

It's not ideal that the ngspice cannot be overridden in the 
configuration, but OTOH we have --with-input. I think it's acceptable, 
though if there are any users that would like to override in the 
configuration, we might need to propagate it again and remove the 
substitute* -- or better, though more work: patch qucs-s to use the 
configuration when explicitly set by the user and don't write 
/gnu/store/... inside it automatically, with /gnu/store/... as a 
fallback when it is not set.

Greetings,
Maxime.