Subject: bug#19630: closed (Re: bug#19630: error message when referencing non-existing output not helpful)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 24 Jan 2015 22:02:03 +0000

Your bug report

#19630: error message when referencing non-existing output not helpful

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
19630: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19630
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#19630: error message when referencing non-existing output not helpful
From: [email-masked] (Ludovic Courtès)
To: Ricardo Wurmus <[email-masked]>
Cc: [email-masked]
Date: Sat, 24 Jan 2015 23:01:07 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Commit f304c9c fixes that.  Now the result is something like this:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build abiword -n
guix build: error: reference to invalid output 'binfds' of derivation '/gnu/store/7lxd5yri8s4vkailk1jg5bxiqrshblj1-glib-2.42.1.drv'
--8<---------------cut here---------------end--------------->8---

It doesn’t say the context in which that invalid reference occurred, but
it’s already much better.

Note that at the lowest level it’s possible to create a derivation that
refers to a non-existent output of some other derivation.  The problem
will go unnoticed until the ‘build-derivations’ RPC is called.

Thanks,
Ludo’.

Subject: error message when referencing non-existing output not helpful
From: Ricardo Wurmus <[email-masked]>
To: <[email-masked]>
Date: Mon, 19 Jan 2015 12:51:20 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

When a package recipe specifies as input a non-existing output of a
package, the build process fails with a rather unhelpful late error
message.

The following is the output of building a package that depends on the
"bin" output of libtool, which has since been removed.

~~~~~
[rwurmus@workstation:~/code/guix] (599) $ ./pre-inst-env guix build ijs
Backtrace:
In ice-9/boot-9.scm:
 157: 18 [catch #t #<catch-closure 10e4d60> ...]
In unknown file:
   ?: 17 [apply-smob/1 #<catch-closure 10e4d60>]
In ice-9/boot-9.scm:
  63: 16 [call-with-prompt prompt0 ...]
In ice-9/eval.scm:
 432: 15 [eval # #]
In ice-9/boot-9.scm:
2401: 14 [save-module-excursion #<procedure 1100940 at ice-9/boot-9.scm:4045:3 ()>]
4050: 13 [#<procedure 1100940 at ice-9/boot-9.scm:4045:3 ()>]
1724: 12 [%start-stack load-stack ...]
1729: 11 [#<procedure 1118ea0 ()>]
In unknown file:
   ?: 10 [primitive-load "/home/rwurmus/code/guix/scripts/guix"]
In guix/ui.scm:
 787: 9 [run-guix-command build "ijs"]
In ice-9/boot-9.scm:
 157: 8 [catch srfi-34 #<procedure 1872840 at guix/ui.scm:218:2 ()> ...]
 157: 7 [catch system-error ...]
In guix/scripts/build.scm:
 436: 6 [#<procedure 1872860 at guix/scripts/build.scm:422:2 ()>]
In guix/ui.scm:
 307: 5 [show-what-to-build #<build-daemon 256.14 17d7200> (#) #:dry-run? ...]
In guix/derivations.scm:
 226: 4 [substitution-oracle #<build-daemon 256.14 17d7200> (#)]
In guix/store.scm:
 705: 3 [substitutable-paths # #]
In srfi/srfi-1.scm:
 619: 2 [for-each #<procedure 383ed80 at guix/serialization.scm:118:12 (t-3793)> #]
In guix/serialization.scm:
  85: 1 [write-string #f #<input-output: socket 10>]
In unknown file:
   ?: 0 [string->utf8 #f]

ERROR: In procedure string->utf8:
ERROR: In procedure string->utf8: Wrong type argument in position 1 (expecting string): #f
~~~~~

The error message is triggered by an unexpected #f in a long list of
paths.  It would be more helpful if an earlier error was produced that
indicates that the cause is a non-existing package output.