GNU bug report logs -
#30265
Fish embeds store file names in UCS-4/UTF-32 literal strings
Previous Next
Reported by: Meiyo Peng <meiyo.peng <at> gmail.com>
Date: Sat, 27 Jan 2018 09:13:01 UTC
Severity: important
Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Hi Meiyo,
thanks for your report. Indeed, Fish has some problems in Guix.
On Sat, 27 Jan 2018, Meiyo Peng <meiyo.peng <at> gmail.com> wrote:
> Hi,
>
> I am using GuixSD 0.14. After upgrading fish shell to latest version(v2.7.1) and
> running `guix gc`, fish shell does not work well.
Can you explain a bit more about your setup? I assume you use
fish as you user shell and not just as a shell you switch into
from a Bash enabled user, correct?
> #+BEGIN_EXAMPLE
> meiyo <at> guix ~$ fish
> fish:
> echo $_ " "; __fish_pwd
> ^
> in command substitution
> called on standard input
>
> fish:
> __fish_pwd
> ^
> in command substitution
> called on standard input
>
> in command substitution
> called on standard input
>
> fish:
> echo $_ " "; __fish_pwd
> ^
> in command substitution
> called on standard input
> #+END_EXAMPLE
>
>
> __fish_pwd is a fish function. It's defined in
> `share/fish/functions/__fish_pwd.fish`. The error message shows that fish
> cannot load __fish_pwd's function definition from disk. After doing some
> research, I found out that the error was caused by wrong environment variables.
>
> Fish shell is installed in:
>
> #+BEGIN_EXAMPLE
> /gnu/store/ajbbi9cgj9j0my7v5habp0lcysaf2a51-fish-2.7.1/
> #+END_EXAMPLE
>
>
> But the environment variable $fish_function_path does not exist. And these
> environment variables point to non-existent paths:
>
> #+BEGIN_EXAMPLE
> __fish_bin_dir /gnu/store/4jkxcz8kpy621ycmqn3rvs0fv6c98h6p-fish-2.7.1/bin
> __fish_datadir /gnu/store/4jkxcz8kpy621ycmqn3rvs0fv6c98h6p-fish-2.7.1/share/fish
> #+END_EXAMPLE
>
>
> Setting $fish_function_path to the correct path reduces the error message.
>
> #+BEGIN_EXAMPLE
> set fish_function_path /gnu/store/ajbbi9cgj9j0my7v5habp0lcysaf2a51-fish-2.7.1/share/fish/functions
> #+END_EXAMPLE
>
>
> `share/fish/config.fish` states $__fish_datadir is set by fish.cpp,
> and $fish_function_path is derived from $__fish_datadir.
>
> #+BEGIN_SRC fish
> # __fish_datadir, __fish_sysconfdir, __fish_help_dir, __fish_bin_dir
> # are expected to have been set up by read_init from fish.cpp
>
>
> # Set up function and completion paths. Make sure that the fish
> # default functions/completions are included in the respective path.
>
> if not set -q fish_function_path
> set fish_function_path $configdir/fish/functions $__fish_sysconfdir/functions $__extra_functionsdir $__fish_datadir/functions
> end
>
> if not contains -- $__fish_datadir/functions $fish_function_path
> set fish_function_path $fish_function_path $__fish_datadir/functions
> end
> #+END_SRC
>
> In conclusion, I think some path related variables are not set correctly when
> fish is compiled from source code and that caused the bug I met. But since I'm
> not good at C++ programming, I will not dive deeper.
>
> I hope that the information provided above is helpful.
>
>
> Meiyo Peng
It's more or less known, I assume this is related to bug#27206
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27206
Which to my knowledge and sources I've read doesn't require C
knowledge but more knowledge of how Fish interacts on
system/vendor level and some testing with the resources I've
provided in the other thread/bug.
--
ng0 :: https://ea.n0.is
A88C8ADD129828D7EAC02E52E22F9BBFEE348588 :: https://ea.n0.is/keys/
This bug report was last modified 2 years and 285 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.