help-guix
[Top][All Lists]
Advanced

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

Re: SCSH libraries search path


From: Tom Willemse
Subject: Re: SCSH libraries search path
Date: Wed, 23 Nov 2022 22:39:35 -0800

Hey Efraim,

Efraim Flashner <efraim@flashner.co.il> writes:

> On Sun, Nov 13, 2022 at 04:49:05PM -0800, Tom Willemse wrote:
>> Hey Efraim,
>> 
>> Efraim Flashner <efraim@flashner.co.il> writes:
>> 
>> > On Mon, Oct 31, 2022 at 12:18:50AM -0700, Tom Willemse wrote:
>> >> Hey Guix \o/
>> >> 
>> >> I've been wanting to package one of my little scripts in Guix Home and
>> >> it uses a little library I wrote for SCSH. I've been looking at how
>> >> Search Paths work and I'm having trouble figuring out how to make this
>> >> work.
>> >> 
>> >> Search paths seem easy enough generally, I was able to add a simple
>> >> addition to my configuration by just adding this to the scsh package
>> >> definition:
>> >> 
>> >>     (native-search-paths
>> >>      (list (search-path-specification
>> >>             (variable "SCSH_LIB_DIRS")
>> >>             (files '("share/scsh/site")))))
>> >
>> > Try adding the 'separator' field, so it would look like this:
>> >
>> >      (native-search-paths
>> >       (list (search-path-specification
>> >              (variable "SCSH_LIB_DIRS")
>> >              (separator " ")
>> >              (files '("share/scsh/site")))))
>> 
>> Thanks for the suggestion! Unfortunately this gets me a value of
>> `SCSH_LIB_DIRS' like
>> 
>>     /home/chelys/.guix-home/profile/share/scsh-0.7
>> 
>> which, when I try the command `scsh -ll mpd.scm -o mpd' causes the
>> following error to appear:
>> 
>>     error: Illegal path element in $SCSH_LIB_DIRS
>>     $SCSH_LIB_DIRS: /home/chelys/.guix-home/profile/share/scsh-0.7
>>     The following element is not a string or #f: 
>> /home/chelys/.guix-home/profile/share/scsh-0.7
>> 
>> It's because SCSH treats the contents of `SCSH_LIB_DIRS' as "a sequence
>> of of s-expressions, which are `read' from the string"[1] and supports
>> either string values or the value #f. So `SCSH_LIB_DIRS' would have to
>> be in this case:
>> 
>>     "/home/chelys/.guix-home/profile/share/scsh-0.7"
>> 
>> I guess this just isn't supported as yet in Guix?
>> 
>
> I played around with a bunch of different options, and I wasn't able to
> get the search-path-specification to pass the directories as strings. If
> we change the file-type to 'string then it looks for strings, but it
> really means it's looking for individual files or for directories, so
> that's not the right change.
>
> IMO the easiest way to work around it (from scsh, not from guix) would
> be to use 'stringify' from (scheme utilities) in (scheme lib-dirs) (for
> the syntactic sugar around symbol->string) to make all the items in the
> search path into strings if they aren't already.

I've tried out your changes and it seems to work just great for my
little module so far, thank you!

> Actually I have a simple diff I'll send upstream that should take care
> of it. If you could help test it that'd be great. I haven't been able to
> create a scenario where I had more than one path in the SCSH_LIB_DIRS.

I don't know how I would get more than one value in there with Guix, but
manually adding another path in there works fine:

> 22:36 ~ [1]> export SCSH_LIB_DIRS="\"${HOME}/usr/share/scsh/\" 
> ${SCSH_LIB_DIRS}"
> 22:37 ~ [130]> echo $SCSH_LIB_DIRS                                            
>     
> "/home/chelys/usr/share/scsh/" /home/chelys/.guix-home/profile/share/scsh-0.7
> 22:37 ~ > scsh -ll mpd.scm -o mpd -ll herbstluft.scm -o herbstluft 
> Welcome to scsh 0.7
> Type ,? for help.
> > (query (and (= artist "Danko Jones") (= album "Garage Rock")))
> "((artist == \"Danko Jones\") AND (album == \"Garage Rock\"))"
> > (hc get_attr "my_wallpaper")
> /home/chelys/pictures/wallpaper/5120x1440/nfbq2nw3rsm81.jpg
> 0



reply via email to

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