Hi Daniel,

2024/06/17, Daniel Littlewood:

> The file guix.scm contains (by the way, why is the use-modules syntax
> different here?)
> (use-modules (guix packages)
>                        (guix download)
>                        (guix utils)
>                        (guix build-system ruby)
>                        (ruby))
> (package
>   (name "my-project")
>   (version "1.0.0")
>   (license #f)
>   (source #f)
>   (build-system ruby-build-system) ; "no build system" was not an option
>   (propagated-inputs (list ruby-3.3))
>   (synopsis "")
>   (description "")
>   (homepage ""))
>
> Now I become confused:
> guix shell -L ~/my-channel -D -f guix.scm # works, as expected
> ruby --version
> ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux]
> # this is *not* the host ruby:
> exit
> ruby --version
> ruby 2.7.8p225 (2023-03-30 revision 1fd455848) [x86_64-linux]
>
> I don't know where it is getting 3.1.4 from! I have not written it
> anywhere. I do recognise it - I think I have previously installed it
> at some point. But I don't know where it's being pulled from - some
> cache? It looks like Remco's approach using manifests should work, but
> I wonder: does anyone know what's wrong with my guix.scm?

I think you're getting the build dependency of ruby-3.3 because you're
using -D to get the development dependencies of the defined package.  It
should probably work when you use "inputs" instead of
"propagated-inputs" here when using -D.

I've never used "propagated-inputs" but I think this is not the way to
use them. A typical use, I think, would be some package which enhances
some other package.  So say you have a package "foo" which you could
install to do it's thing but there's also "foo-with-superpowers" which
depends on "foo" being installed but add superpowers to that command and
function through the original package.

Cheers,
Remco

Reply via email to