bug#30265: Fish shell has wrong path variables

2018-01-27 Thread Meiyo Peng
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.
#+BEGIN_EXAMPLE
  meiyo@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





bug#23199: XFCE is missing documentation

2018-01-27 Thread ng0
In my opinion this bug can be closed due to WONTFIX from
upstream at this URL:

> https://docs.xfce.org/contribute/documentation

quote:

>> Documentation
>> Introduction
>> Since Xfce 4.10 there are no application manuals in the
>> packages. Reason for this change is that hardly any
>> documentation was contributed over the years mainly because
>> people had problems with the various formats (docbook and
>> mallard) or with the complexity of the VCS1). 
>>
>> To make the documentation barrier lower it was decided to start
>> a documentation wiki where contributors, developers and
>> translators can work on good and up-to-date documentation. 
>>
>> From the various dialogs and links in the Xfce applications,
>> we redirect to the sections in this wiki.

So, we won't see any offline Documentation here. I've looked at
3 other OS before reading this, and none of the do anything
different wrt Manual including/excluding.

With this in mind, I'm closing the bug report.
-- 
ng0 :: https://ea.n0.is
A88C8ADD129828D7EAC02E52E22F9BBFEE348588 :: https://ea.n0.is/keys/





bug#30265: Fish shell has wrong path variables

2018-01-27 Thread ng0
Hi Meiyo,

thanks for your report. Indeed, Fish has some problems in Guix.

On Sat, 27 Jan 2018, Meiyo Peng  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@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/





bug#30265: Fish shell has wrong path variables

2018-01-27 Thread Ricardo Wurmus

Hi Meiyo,

thanks for the report.

> 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.
[…]
> 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

Where are these environment variables defined?

> 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.

Some other packages record exact store references in cache files in the
user’s home directory.  As packages get upgraded and removed after
garbage collection, these references become invalid.

The question is whether these old store references are kept in files
outside of the store (and thus are not directly under our control), or
if the packages that Guix builds include incorrect references.  I guess
that it’s the former.

As is the case for these other programmes that record paths in cache
files, we would need to patch fish to record only the stable names of
links to those files (e.g. ~/.guix-profile/foo/bar) rather than the
actual file names in the store, which may disappear upon “guix gc”.

--
Ricardo

GPG: BCA6 89B6 3655 3801 C3C6  2150 197A 5888 235F ACAC
https://elephly.net







bug#30265: Fish shell has wrong path variables

2018-01-27 Thread Meiyo Peng
Ricardo Wurmus  writes:

> Where are these environment variables defined?
According to `share/fish/config.fish`, they are defined in fish.cpp.
#+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
#+END_SRC

You can get fish shell's environment variables using fish's `set` command.
A single `set` without argument will print all environment variables.

> The question is whether these old store references are kept in files
> outside of the store (and thus are not directly under our control), or
> if the packages that Guix builds include incorrect references.  I guess
> that it’s the former.
>
> As is the case for these other programmes that record paths in cache
> files, we would need to patch fish to record only the stable names of
> links to those files (e.g. ~/.guix-profile/foo/bar) rather than the
> actual file names in the store, which may disappear upon “guix gc”.
>
Maybe you are right. Guix is still new to me, so I do not know details
about guix's mechanism.


Meiyo Peng





bug#30265: Fish shell has wrong path variables

2018-01-27 Thread Meiyo Peng

ng0 wrote:
> 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?

My GuixSD is a fresh setup. I did no customization to fish and did not
set fish as login shell.

The bug I reported is reproducible. I tried it in a virtual machine
several times.
1. Install GuixSD 0.14 with fish
2. guix pull
3. Upgrade all packages
4. guix gc
5. Start a fish shell, and the bug I reported occur





bug#30250: Two failures on ‘make -k "-j$(nproc)" check’

2018-01-27 Thread Ludovic Courtès
Hi Jorge,

"Jorge"  skribis:

> I use ntlmaps (listening on localhost:5865) to mediate the corporate proxy 
> for programs that do not integrate with Gnome's proxy configuration
> ==
>GNU Guix 0.14.0.1193-4f34e: ./test-suite.log
> ==
>
> # TOTAL: 744
> # PASS:  718
> # SKIP:  24
> # XFAIL: 0
> # FAIL:  2
> # XPASS: 0
> # ERROR: 0

[...]

> test-name: add-to-store, flat
> location: /home/jorge/repos/guix/tests/derivations.scm:98
> source:
> + (test-assert
> +   "add-to-store, flat"
> +   (let* ((file (search-path
> +  %load-path
> +  "language/tree-il/spec.scm"))
> +  (drv (add-to-store
> + %store
> + "flat-test"
> + #f
> + "sha256"
> + file)))
> + (and (eq? 'regular (stat:type (stat drv)))
> +  (valid-path? %store drv)
> +  (equal?
> +(call-with-input-file file get-bytevector-all)
> +(call-with-input-file drv get-bytevector-all)
> actual-value: #f
> actual-error:
> + (srfi-34
> +   # 1] 5577e11973c0>)
> result: FAIL

It looks like the language/tree-il/spec.scm file (which is part of
Guile) that was found in $GUILE_LOAD_PATH on your system is not a
regular file and is instead presumably a symlink.  Could you check that
this is the case?

The solution would be for it to be a regular file and/or for the test to
check that.

> test-name: 'download' built-in builder
> location: /home/jorge/repos/guix/tests/derivations.scm:227
> source:
> + (test-assert
> +   "'download' built-in builder"
> +   (let ((text (random-text)))
> + (with-http-server
> +   200
> +   text
> +   (let* ((drv (derivation
> + %store
> + "world"
> + "builtin:download"
> + '()
> + #:env-vars
> + `(("url" unquote (object->string (%local-url
> + #:hash-algo
> + 'sha256
> + #:hash
> + (sha256 (string->utf8 text)
> + (and (build-derivations %store (list drv))
> +  (string=?
> +(call-with-input-file
> +  (derivation->output-path drv)
> +  get-string-all)
> +text))
> @ build-started 
> /home/jorge/repos/guix/test-tmp/store/24ibbvll6jdr9ri6qp7z1vgcl4vjljwv-world.drv
>  - x86_64-linux 
> /home/jorge/repos/guix/test-tmp/var/log/guix/drvs/24//ibbvll6jdr9ri6qp7z1vgcl4vjljwv-world.drv.bz2
>
> Starting download of 
> /home/jorge/repos/guix/test-tmp/store/25k9f37z2l775rbj4kianf5g1k9vnczj-world
> From http://localhost:10500/foo/bar...
> download failed "http://localhost:10500/foo/bar"; 503 "Service Unavailable"
> failed to download 
> "/home/jorge/repos/guix/test-tmp/store/25k9f37z2l775rbj4kianf5g1k9vnczj-world"
>  from "http://localhost:10500/foo/bar";
> builder for 
> `/home/jorge/repos/guix/test-tmp/store/24ibbvll6jdr9ri6qp7z1vgcl4vjljwv-world.drv'
>  failed to produce output path 
> `/home/jorge/repos/guix/test-tmp/store/25k9f37z2l775rbj4kianf5g1k9vnczj-world'
> @ build-failed 
> /home/jorge/repos/guix/test-tmp/store/24ibbvll6jdr9ri6qp7z1vgcl4vjljwv-world.drv
>  - 1 builder for 
> `/home/jorge/repos/guix/test-tmp/store/24ibbvll6jdr9ri6qp7z1vgcl4vjljwv-world.drv'
>  failed to produce output path 
> `/home/jorge/repos/guix/test-tmp/store/25k9f37z2l775rbj4kianf5g1k9vnczj-world'
> actual-value: #f
> actual-error:
> + (srfi-34
> +   # `/home/jorge/repos/guix/test-tmp/store/24ibbvll6jdr9ri6qp7z1vgcl4vjljwv-world.drv'
>  failed" status: 1] 5577e21fdde0>)
> result: FAIL

This test runs its own HTTP server on port 10500.  Could it be that it
try to go through your proxy and failed?  Can you check whether this
works:

  unset http_proxy
  make check TESTS=tests/derivations.scm

?

Thanks for your report!

Ludo’.





bug#30265: Fish shell has wrong path variables

2018-01-27 Thread Ludovic Courtès
Hi ng0 and Meiyo,

n...@n0.is skribis:

> On Sat, 27 Jan 2018, Meiyo Peng  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?

Note that the current ‘guix’ package, 0.14.0-7.33988f9, includes Fish
completion support, which was not the case before:

--8<---cut here---start->8---
$ ls -R $(guix build guix)/share/fish
/gnu/store/apji9j8cwf9xpd5jk5mk8s6r1a391yvq-guix-0.14.0-7.33988f9/share/fish:
vendor_completions.d

/gnu/store/apji9j8cwf9xpd5jk5mk8s6r1a391yvq-guix-0.14.0-7.33988f9/share/fish/vendor_completions.d:
guix.fish
--8<---cut here---end--->8---

Could it be the reason why you’re having problems now that you didn’t
experience earlier?

Any ideas, ng0?

Thanks,
Ludo’.





bug#30270: [PATCH] url-fetch returns #t instead of FILE

2018-01-27 Thread Maxim Cournoyer
Hello!

Commit 347fa4aebf, introduced a regression where `url-fetch' would return #t
instead of the file name (as the docstring says it should), which broke
the fiasco script used to find broken hashes of Github's archives[0].

Patch to follow.

[0]  https://notabug.org/apteryx/fiasco





bug#30270: [PATCH] url-fetch returns #t instead of FILE

2018-01-27 Thread Maxim Cournoyer
Maxim Cournoyer  writes:

> Hello!
>
> Commit 347fa4aebf, introduced a regression where `url-fetch' would return #t
> instead of the file name (as the docstring says it should), which broke
> the fiasco script used to find broken hashes of Github's archives[0].
>
> Patch to follow.
  ^
>From 61ca016f3a2a6504d899a6ec3b9daaf1647be451 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer 
Date: Sat, 27 Jan 2018 12:22:11 -0500
Subject: [PATCH] download: Fix return value of the url-fetch procedure.

Fixes #30270 which was introduced by commit 347fa4aebf.

* guix/build/download.scm (url-fetch): Return `file' instead of #t upon success.
---
 guix/build/download.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/guix/build/download.scm b/guix/build/download.scm
index 609a10053..1b630a9d6 100644
--- a/guix/build/download.scm
+++ b/guix/build/download.scm
@@ -770,7 +770,7 @@ otherwise simply ignore them."
   #:reporter (progress-reporter/file
   (uri-abbreviation uri) size))
   (newline)))
-  #t)))
+  file)))
   ((ftp)
(false-if-exception* (ftp-fetch uri file
#:timeout timeout)))
-- 
2.16.0



bug#30265: Fish shell has wrong path variables

2018-01-27 Thread ng0
On Sat, 27 Jan 2018, l...@gnu.org (Ludovic Courtès) wrote:
> Hi ng0 and Meiyo,
>
> n...@n0.is skribis:
>
>> On Sat, 27 Jan 2018, Meiyo Peng  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?
>
> Note that the current ‘guix’ package, 0.14.0-7.33988f9, includes Fish
> completion support, which was not the case before:
>
> --8<---cut here---start->8---
> $ ls -R $(guix build guix)/share/fish
> /gnu/store/apji9j8cwf9xpd5jk5mk8s6r1a391yvq-guix-0.14.0-7.33988f9/share/fish:
> vendor_completions.d
>
> /gnu/store/apji9j8cwf9xpd5jk5mk8s6r1a391yvq-guix-0.14.0-7.33988f9/share/fish/vendor_completions.d:
> guix.fish
> --8<---cut here---end--->8---
>
> Could it be the reason why you’re having problems now that you didn’t
> experience earlier?
>
> Any ideas, ng0?
>
> Thanks,
> Ludo’.
>
>
>
>

No, I'm pretty sure this has nothing to do with adding fish
support to Guix.
-- 
ng0 :: https://ea.n0.is
A88C8ADD129828D7EAC02E52E22F9BBFEE348588 :: https://ea.n0.is/keys/