guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 3/3] gnu: Add ghc.


From: Federico Beffa
Subject: Re: [PATCH 3/3] gnu: Add ghc.
Date: Mon, 2 Mar 2015 12:09:18 +0100

address@hidden (Ludovic Courtès) writes:

>> +            (substitute* (list "testsuite/timeout/Makefile"
>> +                               "testsuite/timeout/timeout.py"
>> +                               "testsuite/timeout/timeout.hs"
>> +                               "testsuite/tests/rename/prog006/Setup.lhs"
>> + "testsuite/tests/programs/life_space_leak/life.test")
>> +              (("/bin/sh") (which "sh"))
>> +              (("/bin/rm") "rm"))
>
> Perhaps (find-files "testsuite" ".*") would be enough?

Somehow find-files appears to have problems with a file. This happens
even if I install the en_US.UTF-8 locale:

Backtrace:
In ice-9/boot-9.scm:
2401: 19 [save-module-excursion #<procedure 1691880 at
ice-9/boot-9.scm:4045:3 ()>]
4050: 18 [#<procedure 1691880 at ice-9/boot-9.scm:4045:3 ()>]
1724: 17 [%start-stack load-stack ...]
1729: 16 [#<procedure 16a6c60 ()>]
In unknown file:
   ?: 15 [primitive-load
"/gnu/store/qxy6784klrpjqnmxw00l6fpkqi60jwad-ghc-7.8.4-guile-builder"]
In ice-9/eval.scm:
 387: 14 [eval # ()]
In srfi/srfi-1.scm:
 830: 13 [every1 #<procedure 17b2520 at
/gnu/store/v4q9shphawhckqp35x05fxz5sfijv92r-module-import/guix/build/gnu-build-system.scm:475:9
(expr)> ...]
In 
/gnu/store/v4q9shphawhckqp35x05fxz5sfijv92r-module-import/guix/build/gnu-build-system.scm:
 479: 12 [#<procedure 17b2520 at
/gnu/store/v4q9shphawhckqp35x05fxz5sfijv92r-module-import/guix/build/gnu-build-system.scm:475:9
(expr)> #]
In ice-9/eval.scm:
 432: 11 [eval # #]
In srfi/srfi-1.scm:
 619: 10 [for-each #<procedure 1b744e0 at ice-9/eval.scm:416:20 (a)> #]
In ice-9/boot-9.scm:
 171: 9 [with-throw-handler #t ...]
 867: 8 [call-with-input-file
"testsuite/tests/codeGen/should_run/cgrun037.stdout" ...]
In 
/gnu/store/v4q9shphawhckqp35x05fxz5sfijv92r-module-import/guix/build/utils.scm:
 443: 7 [#<procedure 1f2ae00 at
/gnu/store/v4q9shphawhckqp35x05fxz5sfijv92r-module-import/guix/build/utils.scm:442:10
(in)> #<input: testsuite/tests/codeGen/should_run/cgrun037.stdout 11>]
 469: 6 [#<procedure 1a9f6a0 at
/gnu/store/v4q9shphawhckqp35x05fxz5sfijv92r-module-import/guix/build/utils.scm:465:6
(in out)> #<input: testsuite/tests/codeGen/should_run/cgrun037.stdout
11> ...]
In srfi/srfi-1.scm:
 465: 5 [fold #<procedure 19d5180 at
/gnu/store/v4q9shphawhckqp35x05fxz5sfijv92r-module-import/guix/build/utils.scm:469:32
(r+p line)> ...]
In 
/gnu/store/v4q9shphawhckqp35x05fxz5sfijv92r-module-import/guix/build/utils.scm:
 472: 4 [#<procedure 19d5180 at
/gnu/store/v4q9shphawhckqp35x05fxz5sfijv92r-module-import/guix/build/utils.scm:469:32
(r+p line)> # ...]
In ice-9/regex.scm:
 189: 3 [list-matches #<regexp 1b66100> "hello\x00 world\n" 0]
 176: 2 [fold-matches #<regexp 1b66100> "hello\x00 world\n" ...]
In unknown file:
   ?: 1 [regexp-exec #<regexp 1b66100> "hello\x00 world\n" 0 0]
In ice-9/boot-9.scm:
 106: 0 [#<procedure 1f2ae40 at ice-9/boot-9.scm:97:6 (thrown-k .
args)> misc-error ...]

ice-9/boot-9.scm:106:20: In procedure #<procedure 1f2ae40 at
ice-9/boot-9.scm:97:6 (thrown-k . args)>:
ice-9/boot-9.scm:106:20: string contains #\nul character: "hello\x00 world\n"
builder for `/gnu/store/ixnpnrj6g6svayzz5kw0yhigm5vgjd2g-ghc-7.8.4.drv'
failed with exit code 1
@ build-failed /gnu/store/ixnpnrj6g6svayzz5kw0yhigm5vgjd2g-ghc-7.8.4.drv
- 1 builder for
`/gnu/store/ixnpnrj6g6svayzz5kw0yhigm5vgjd2g-ghc-7.8.4.drv' failed
with exit code 1
cannot build derivation
`/gnu/store/659as6vx99qfrnwl1cc59kkgwiqwhg2l-ghc-7.8.4.drv': 1
dependencies couldn't be built
killing process 10073

>
> [...]
>
>> +           (alist-cons-before
>> +            'configure 'install-bin
>
> This phase installs bootstrap binaries to $out/bin and adds them to
> $PATH, right?  Wouldn’t it be enough to install them to $TMPDIR/bin and
> add that to $PATH?

That is what is happening :-). The bootstrap binaries are installed in a
temporary local directory inside the build directory:

       (let* ((ghc-bootstrap-path
               (string-append (getcwd) "/" ,name "-" ,version "/ghc-bin"))
              (ghc-bootstrap-prefix
               (string-append ghc-bootstrap-path "/usr" )))

               ...

                  (system* (string-append (getcwd) "/configure")
                           (string-append "--prefix=" ghc-bootstrap-prefix)

                           ...

>
>> +            (lambda* (#:key inputs outputs #:allow-other-keys)
>> +              (let* ((binaries
>> +                      (list
>> +                       "./utils/ghc-pwd/dist-install/build/tmp/ghc-pwd"
>> +                       "./utils/hpc/dist-install/build/tmp/hpc"
>> +                       "./utils/haddock/dist/build/tmp/haddock"
>> +                       "./utils/hsc2hs/dist-install/build/tmp/hsc2hs"
>> +                       "./utils/runghc/dist-install/build/tmp/runghc"
>> +                       "./utils/ghc-cabal/dist-install/build/tmp/ghc-cabal"
>> +                       "./utils/hp2ps/dist/build/tmp/hp2ps"
>> +                       "./utils/ghc-pkg/dist-install/build/tmp/ghc-pkg"
>> +                       "./utils/unlit/dist/build/tmp/unlit"
>> +                       "./ghc/stage2/build/tmp/ghc-stage2"))
>
> Could we just list base names and do
>
>   (append-map (lambda (program)
>                 (find-files "." (string-append "^" program "$")))
>               '("ghc-pwd" "hpc" ...))

Here I'm puzzled. If I test the command that you suggest by displaying
the generated list (during the phase execution), I see that it produces
the same list as the original one (at least as displayed on screen).

In spite of this, differently than with the explicit list, the phase
fails because somehow the listed files do not get patched by

                  (for-each
                   (cut system* "patchelf" "--set-interpreter" ld-so <>)
                   binaries)

Unless you understand what's happening, I would propose for now to
keep the explicit lists.

Regards,
Fede



reply via email to

[Prev in Thread] Current Thread [Next in Thread]