[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