help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: non-input dependencies Was: guile-dbi from guix not working


From: raingloom
Subject: Re: non-input dependencies Was: guile-dbi from guix not working
Date: Sun, 29 May 2022 17:23:14 +0200

On Sun, 29 May 2022 14:42:32 +0000
Zelphir Kaltstahl <zelphirkaltstahl@posteo.de> wrote:

> Hi!
> 
> On 5/29/22 10:58, raingloom wrote:
> > On Sun, 29 May 2022 13:27:23 +0530
> > Arun Isaac <arunisaac@systemreboot.net> wrote:
> >  
> >> Hi Zelphir,
> >>  
> >>> Should guile-dbd-sqlite3 not be a dependency of guile-dbi then?
> >>> But on the other hand, what if one only wanted to interact with
> >>> one database type and not the other? So maybe not a must have
> >>> dependency then. Hm. What is the typical Guix solution for this
> >>> kind of "specialization" of a library? I think in the Python
> >>> world, in requirements files it would be something like
> >>> `library[specialization] == version`, to install that variant.  
> >> You can think of guile-dbd-* as plugins for guile-dbi. So, you
> >> install guile-dbi along with whatever plugins you want for
> >> guile-dbi. It's no different from installing emacs and installing
> >> emacs packages of interest. I don't think we need a special Guix
> >> feature for this.
> >>
> >> But, guile-dbi should be fixed to produce a proper error message
> >> that a required plugin is missing. It should not produce
> >> misleading error messages like "file not found". If you're up for
> >> it, you can try reporting this to guile-dbi upstream.
> >>
> >> Cheers!
> >> Arun
> >>  
> > I disagree, Guix packages should make it clear when they have
> > non-input dependencies. Users should not be forced to play
> > dependency-whack-a-mole.
> > Run-time dependencies should either be listed in the package
> > description or in some extra field.
> > I absolutely hate it that I have to go look at bug trackers and
> > external docs to find out why a package I installed isn't working
> > correctly, especially when other package managers have already
> > solved this issue.
> > We don't have to do the exact same thing as them, but there has to
> > be some way for a user to know if, for example, they need ffmpeg in
> > their manifest if they want to use yt-dlp.  
> 
> I think I get both of your viewpoints. I did not think of the
> database specific packages as plugins, but it makes sense. However,
> it also makes sense, that you need at least one of them, to actually
> do anything with guile-dbi (as far as I know), so it is also not the
> case, that you could make much use of guile-dbi without any of those
> packages.
> 
> Maybe one solution could be having 1 general package acting like
> guile-dbi package is acting now, in terms of dependencies, and also
> having N packages, one for each guile-dbi + database specific
> combination, so that you can install a package that does take care of
> installing all things required for working with that specific
> database.
> 
> But maybe that would become too many packages in the future to keep
> track of and update accordingly. And also now I know what mistake I
> made and things work. But what about the next person? Is there some
> way, that there could be a hint, when installing guile-dbi, that you
> might need another package as well? And how often is there such a
> situation? Maybe creating a general solution is not worth it, or
> maybe it is.
> 
> Of course, the error message could be better, as it also directed me
> to tripple and quadruppel checking, that I am specifying the correct
> filename and that I am not insane.
> 
> Anyway, thanks for the help and the explanations all : )
> 
> Best regards,
> Zelphir
> 

IMHO as a first step we should just add this information to the package
descriptions. Simple, backwards compatible, doesn't restrict us, etc.
Eg.: for emacs-geiser, just add a line that says: "To use it with a
given Scheme dialect, install emacs-geiser-<scheme-dialect> in the
same environment."
Bam, no more confusion over why a package isn't doing anything.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]