Hi Chris,

On Fri, 14 Feb 2025 at 11:54, Christopher Baines <m...@cbaines.net> wrote:

>> --8<---------------cut here---------------start------------->8---
>> $ guix build -L foo git2cl-bang
>> Backtrace:
>> In guix/gexp.scm:
>>    1218:2 19 (_ #<store-connection 256.100 7fa4a8355eb0>)
>>    1085:2 18 (_ _)
>>     926:4 17 (_ _)
>> In guix/store.scm:
>>   2095:12 16 (_ #<store-connection 256.100 7fa4a8355eb0>)
>>   1412:11 15 (map/accumulate-builds #<store-connection 256.100 7fa4a8355eb0> 
>> #<procedure 7fa4a835cfc0 at guix/store.scm:2096:35 (obj)> _ #:cutoff _)
>>    1330:8 14 (call-with-build-handler #<procedure 7fa4a835cf90 at 
>> guix/store.scm:1365:2 (continue store things mode)> _)
>>   2210:25 13 (run-with-store #<store-connection 256.100 7fa4a8355eb0> 
>> #<procedure 7fa4aa99c840 at guix/gexp.scm:931:13 (state)> #:guile-for-build 
>> _ # _ # _)
>> In guix/gexp.scm:
>>    931:13 12 (_ _)
>> In guix/store.scm:
>>    2038:8 11 (_ _)
>> In guix/gexp.scm:
>>    300:22 10 (_ _)
>> In guix/store.scm:
>>   2142:12  9 (_ #<store-connection 256.100 7fa4a8355eb0>)
>>   1173:24  8 (_ #<store-connection 256.100 7fa4a8355eb0> "git2cl" #t 
>> "sha256" "/tmp/git2cl" #:select? _)
>>   1151:14  7 (add-to-store #<store-connection 256.100 7fa4a8355eb0> _ _ 
>> "sha256" "/tmp/git2cl" #:select? _)
>> In guix/serialization.scm:
>>    380:43  6 (dump "/tmp/git2cl")
>> In srfi/srfi-1.scm:
>>    691:23  5 (filter-map #<procedure 7fa4aa99c2c0 at 
>> guix/serialization.scm:322:33 (base)> ("COPYING" "README" "README.html" 
>> "git2cl") . _)
>> In guix/serialization.scm:
>>    325:42  4 (_ "COPYING")
>>    325:42  3 (_ "/tmp/git2cl/COPYING")
>> In ice-9/boot-9.scm:
>>   1685:16  2 (raise-exception _ #:continuable? _)
>>   1685:16  1 (raise-exception _ #:continuable? _)
>>   1685:16  0 (raise-exception _ #:continuable? _)
>>
>> ice-9/boot-9.scm:1685:16: In procedure raise-exception:
>> Wrong type to apply: #f
>> --8<---------------cut here---------------end--------------->8---

[...]

> I think this is actually an example where Guix is pretty helpful, you
> didn't have to fight to get a backtrace, and the backtrace is actually
> relevant.

Euh, maybe I do not know enough the internals but I do not find the
backtrace very relevant.  It does not even mention ’git-predicate’. :-)
Maybe I’m missing something.

>> The mistake is obviously that ’git-predicate’ always returns #f because
>> /tmp/git2cl is not a Git repository.
>>
>> Hum, I’m not sure to understand well enough how ’local-file’ internally
>> works to propose an improvement (handle the exception).
>
> So, local-file could check what's passed in as select?, and raise an
> exception if it's not a procedure.
>
> That wound't be ideal though, since local-file doesn't know why it's
> getting #f and not a procedure, but it's probably still worth doing.
>
> This is the documented behaviour for git-predicate, and that behaviour
> is used within Guix (it's called like "(or (git-predicate ...". For this
> scenario though, it would help if git-predicate raised an exception,
> rather than returning #f. Then it could clearly say that /tmp/git2cl is
> not a git repository.

Cool, thanks for the explanations.  I agree that raising an exception
would be better.  I’ll try to scratch my itch if no one beats me. :-)

Cheers,
simon

Reply via email to