haskell build system cannot build attoparsec

  • Done
  • quality assurance status badge
Details
2 participants
  • Philip Munksgaard
  • zimoun
Owner
unassigned
Submitted by
Philip Munksgaard
Severity
normal
P
P
Philip Munksgaard wrote on 31 Jan 2022 11:33
(address . bug-guix@gnu.org)
a9871314-33e8-474e-b2ec-854a5c740bfb@www.fastmail.com
I'm trying to build a newer version of attoparsec than the one included in guix, namely version 0.14.4.

First of all, `guix import hackage -r attoparsec` fails, as far as I can tell because of the requirement to attoparsec-internal, with the following error:

```
$ guix import hackage -r attoparsec

Starting download of /tmp/guix-file.szLCRk
….14.4.tar.gz 157KiB 5.1MiB/s 00:00 [##################] 100.0%
Backtrace:
7 (primitive-load "/home/munksgaard/.config/guix/current/…")
In guix/ui.scm:
2209:7 6 (run-guix . _)
2172:10 5 (run-guix-command _ . _)
In guix/scripts/import.scm:
124:11 4 (guix-import . _)
In guix/scripts/import/hackage.scm:
129:26 3 (guix-import-hackage . _)
In guix/import/utils.scm:
504:23 2 (recursive-import _ #:repo->guix-package _ #:guix-name _ …)
In srfi/srfi-1.scm:
586:17 1 (map1 (("attoparsec-internal" #f)))
In guix/import/utils.scm:
492:33 0 (lookup-node "attoparsec-internal" #f)

guix/import/utils.scm:492:33: In procedure lookup-node:
Wrong number of values returned to continuation (expected 2)
```

`guix import hackage attoparsec` succeeds, but I have to manually remove the dependency on attoparsec-internal, resulting in this file:

```
(define-module (gnu packages futhark)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system haskell)
#:use-module (guix licenses)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages haskell)
#:use-module (gnu packages haskell)
#:use-module (gnu packages haskell-web)
#:use-module (gnu packages haskell-xyz)
#:use-module (gnu packages haskell-check)
#:use-module (gnu packages haskell-crypto))

(package
(name "ghc-attoparsec")
(version "0.14.4")
(source
(origin
(method url-fetch)
(uri (hackage-uri "attoparsec" version))
(sha256
(base32 "0v4yjz4qi8bwhbyavqxlhsfb1iv07v10gxi64khmsmi4hvjpycrz"))))
(build-system haskell-build-system)
(inputs (list ghc-scientific))
(native-inputs
(list ghc-quickcheck
ghc-quickcheck-unicode
ghc-tasty
ghc-tasty-quickcheck
ghc-vector))
(arguments
`(#:cabal-revision
("1" "149ihklmwnl13mmixq6iq5gzggkgqwsqrjlg2fshqwwbvbd4nn3r")))
(synopsis "Fast combinator parsing for bytestrings and text")
(description
"This package provides a fast parser combinator library, aimed particularly at
dealing efficiently with network protocols and complicated text/binary file
formats.")
(license license:bsd-3))
```

When trying to build this file however, I get the following error:

```
running "runhaskell Setup.hs" with command "register" and parameters ("--gen-pkg-config=/gnu/store/25ql0xsjqf0alrvy6hmpw6gzirzbqfmv-ghc-attoparsec-0.14.4/ghc-attoparsec-0.14.4.conf")
error: in phase 'register': uncaught exception:
system-error "fport_read" "~A" ("Is a directory") (21)
phase `register' failed after 0.5 seconds
Backtrace:
11 (primitive-load "/gnu/store/01ry4yp98silvy0mfwgn8c77fxz…")
In guix/build/gnu-build-system.scm:
906:2 10 (gnu-build #:source _ #:outputs _ #:inputs _ #:phases . #)
In ice-9/boot-9.scm:
1752:10 9 (with-exception-handler _ _ #:unwind? _ # _)
In srfi/srfi-1.scm:
634:9 8 (for-each #<procedure 7ffff404a920 at guix/build/gnu-b…> …)
In ice-9/boot-9.scm:
1752:10 7 (with-exception-handler _ _ #:unwind? _ # _)
In guix/build/gnu-build-system.scm:
927:23 6 (_)
In guix/build/haskell-build-system.scm:
244:23 5 (register #:name _ #:system _ #:inputs _ #:outputs _)
In ice-9/ports.scm:
433:17 4 (call-with-input-file _ _ #:binary _ #:encoding _ # _)
In ice-9/rdelim.scm:
160:18 3 (read-string _)
In unknown file:
2 (read-char #<input: /gnu/store/25ql0xsjqf0alrvy6hmpw6gz…>)
In ice-9/boot-9.scm:
1685:16 1 (raise-exception _ #:continuable? _)
1685:16 0 (raise-exception _ #:continuable? _)
```

I've attached the entire build log.
Z
Z
zimoun wrote on 23 Feb 2022 11:02
86a6eh2954.fsf@gmail.com
Hi,

Thanks for he report.

It is 2 different issues; therefore I propose to keep them separated.

On Mon, 31 Jan 2022 at 11:33, "Philip Munksgaard" <philip@munksgaard.me> wrote:

Toggle quote (3 lines)
> ```
> $ guix import hackage -r attoparsec

[...]

Toggle quote (5 lines)
>
> guix/import/utils.scm:492:33: In procedure lookup-node:
> Wrong number of values returned to continuation (expected 2)
> ```

This one is about the importer. I think it comes from the current
cabal.scm parser; not able to deal with:

Toggle snippet (14 lines)
-- We need to test and benchmark these modules,
-- but do not want to expose them to end users
library attoparsec-internal
hs-source-dirs: internal
build-depends: array,

[...]

library
build-depends: array,
[...]
attoparsec-internal

Could you open another bug report for that?



Let focus on this one…

Toggle quote (7 lines)
> When trying to build this file however, I get the following error:
>
> ```
> running "runhaskell Setup.hs" with command "register" and parameters ("--gen-pkg-config=/gnu/store/25ql0xsjqf0alrvy6hmpw6gzirzbqfmv-ghc-attoparsec-0.14.4/ghc-attoparsec-0.14.4.conf")
> error: in phase 'register': uncaught exception:
> ```

…for this bug report. Hum, I do not know how where the error comes
from.


Cheers,
simon
P
P
Philip Munksgaard wrote on 23 Feb 2022 12:06
62174ccd-9114-4096-8d63-e1933b76ad32@www.fastmail.com
On Wed, 23 Feb 2022, at 11:02, zimoun wrote:
Toggle quote (2 lines)
> It is 2 different issues; therefore I propose to keep them separated.

Yes, I agree, sorry for the confusion.

Toggle quote (13 lines)
> Let focus on this one…
>
>> When trying to build this file however, I get the following error:
>>
>> ```
>> running "runhaskell Setup.hs" with command "register" and parameters ("--gen-pkg-config=/gnu/store/25ql0xsjqf0alrvy6hmpw6gzirzbqfmv-ghc-attoparsec-0.14.4/ghc-attoparsec-0.14.4.conf")
>> error: in phase 'register': uncaught exception:
>> ```
>
> …for this bug report. Hum, I do not know how where the error comes
> from.
>

And yes, this is indeed the issue I'm mostly concerned about. It seems like `/gnu/store/25ql0xsjqf0alrvy6hmpw6gzirzbqfmv-ghc-attoparsec-0.14.4/ghc-attoparsec-0.14.4.conf` is expected to be a file, while it is in fact a directory. I'm not sure what that means or why it is important though.
P
P
Philip Munksgaard wrote on 23 Feb 2022 12:25
(name . John Kehayias)(address . bug-guix@gnu.org)
a4f7dd5f-e162-426b-9e42-dc0c31b4507c@www.fastmail.com
On Wed, 23 Feb 2022, at 12:06, Philip Munksgaard wrote:
Toggle quote (6 lines)
> And yes, this is indeed the issue I'm mostly concerned about. It seems
> like
> `/gnu/store/25ql0xsjqf0alrvy6hmpw6gzirzbqfmv-ghc-attoparsec-0.14.4/ghc-attoparsec-0.14.4.conf`
> is expected to be a file, while it is in fact a directory. I'm not sure
> what that means or why it is important though.

Upon further investigation, it seems like the `register` function in `guix/build/haskell-build-system.scm` assumes that running `runhaskell Setup.hs register --gen-pkg-config=...` will at most result in a single configuration file, while the documentation for `--gen-pkg-config` clearly states that it is also possible that it results in a directory[0].

The relevant section states:

Toggle quote (2 lines)
> This option outputs a directory if the package requires multiple registrations: this can occur if internal/convenience libraries are used. These configuration file names are sorted so that they can be registered in order.

I think we need to amend `haskell-build-system.scm` to be able to handle such cases.

Z
Z
zimoun wrote on 23 Feb 2022 14:57
(name . Philip Munksgaard)(address . philip@munksgaard.me)(address . 53655@debbugs.gnu.org)
CAJ3okZ1Ry9AgEE_ytT6bZJsvXQqbU2PdVEqabSt5R+2=dZ3ZwA@mail.gmail.com
Hi,

On Wed, 23 Feb 2022 at 12:27, Philip Munksgaard <philip@munksgaard.me> wrote:

Toggle quote (6 lines)
> The relevant section states:
>
> > This option outputs a directory if the package requires multiple registrations: this can occur if internal/convenience libraries are used. These configuration file names are sorted so that they can be registered in order.
>
> 0: https://downloads.haskell.org/cabal/Cabal-3.0.0.0/doc/users-guide/installing-packages.html#cmdoption-setup-register-gen-pkg-config

Thanks. Indeed, it may be the issue.


Toggle quote (2 lines)
> I think we need to amend `haskell-build-system.scm` to be able to handle such cases.

Well, such change is a core-updates change because it will rebuild the
world. Let see if in the meantime, the attoparsec package could be
patched.


Cheers,
simon
Z
Z
zimoun wrote on 6 Apr 2022 21:27
(name . Philip Munksgaard)(address . philip@munksgaard.me)(address . 53655@debbugs.gnu.org)
87wng2ovuq.fsf@gmail.com
Hi,

On Mon, 31 Jan 2022 at 11:33, "Philip Munksgaard" <philip@munksgaard.me> wrote:

Toggle quote (47 lines)
> ```
> (define-module (gnu packages futhark)
> #:use-module (guix packages)
> #:use-module (guix download)
> #:use-module (guix build-system haskell)
> #:use-module (guix licenses)
> #:use-module (guix git-download)
> #:use-module ((guix licenses) #:prefix license:)
> #:use-module (gnu packages)
> #:use-module (gnu packages haskell)
> #:use-module (gnu packages haskell)
> #:use-module (gnu packages haskell-web)
> #:use-module (gnu packages haskell-xyz)
> #:use-module (gnu packages haskell-check)
> #:use-module (gnu packages haskell-crypto))
>
> (package
> (name "ghc-attoparsec")
> (version "0.14.4")
> (source
> (origin
> (method url-fetch)
> (uri (hackage-uri "attoparsec" version))
> (sha256
> (base32 "0v4yjz4qi8bwhbyavqxlhsfb1iv07v10gxi64khmsmi4hvjpycrz"))))
> (build-system haskell-build-system)
> (inputs (list ghc-scientific))
> (native-inputs
> (list ghc-quickcheck
> ghc-quickcheck-unicode
> ghc-tasty
> ghc-tasty-quickcheck
> ghc-vector))
> (arguments
> `(#:cabal-revision
> ("1" "149ihklmwnl13mmixq6iq5gzggkgqwsqrjlg2fshqwwbvbd4nn3r")))
> (home-page "https://github.com/bgamari/attoparsec")
> (synopsis "Fast combinator parsing for bytestrings and text")
> (description
> "This package provides a fast parser combinator library, aimed particularly at
> dealing efficiently with network protocols and complicated text/binary file
> formats.")
> (license license:bsd-3))
> ```
>
> When trying to build this file however, I get the following error:

This part is now fixed by https://issues.guix.gnu.org/54729#2. But it
is a core-updates change so the fix will land master at the next
cycle... who knows when. ;-)

For the other issue about the importer, I suggest to close this one and
reopen an issue.


Cheers,
simon
P
P
Philip Munksgaard wrote on 7 Apr 2022 10:23
(name . zimoun)(address . zimon.toutoune@gmail.com)(address . 53655-done@debbugs.gnu.org)
5bcf6a1d-e119-4630-a257-78a3e7c195aa@www.fastmail.com
A patch has been submitted for the second part of this issue [0] and a new issue has been created for the first part [1]. I'm therefore closing this issue.


On Wed, 6 Apr 2022, at 21:27, zimoun wrote:
Toggle quote (61 lines)
> Hi,
>
> On Mon, 31 Jan 2022 at 11:33, "Philip Munksgaard" <philip@munksgaard.me> wrote:
>
>> ```
>> (define-module (gnu packages futhark)
>> #:use-module (guix packages)
>> #:use-module (guix download)
>> #:use-module (guix build-system haskell)
>> #:use-module (guix licenses)
>> #:use-module (guix git-download)
>> #:use-module ((guix licenses) #:prefix license:)
>> #:use-module (gnu packages)
>> #:use-module (gnu packages haskell)
>> #:use-module (gnu packages haskell)
>> #:use-module (gnu packages haskell-web)
>> #:use-module (gnu packages haskell-xyz)
>> #:use-module (gnu packages haskell-check)
>> #:use-module (gnu packages haskell-crypto))
>>
>> (package
>> (name "ghc-attoparsec")
>> (version "0.14.4")
>> (source
>> (origin
>> (method url-fetch)
>> (uri (hackage-uri "attoparsec" version))
>> (sha256
>> (base32 "0v4yjz4qi8bwhbyavqxlhsfb1iv07v10gxi64khmsmi4hvjpycrz"))))
>> (build-system haskell-build-system)
>> (inputs (list ghc-scientific))
>> (native-inputs
>> (list ghc-quickcheck
>> ghc-quickcheck-unicode
>> ghc-tasty
>> ghc-tasty-quickcheck
>> ghc-vector))
>> (arguments
>> `(#:cabal-revision
>> ("1" "149ihklmwnl13mmixq6iq5gzggkgqwsqrjlg2fshqwwbvbd4nn3r")))
>> (home-page "https://github.com/bgamari/attoparsec")
>> (synopsis "Fast combinator parsing for bytestrings and text")
>> (description
>> "This package provides a fast parser combinator library, aimed particularly at
>> dealing efficiently with network protocols and complicated text/binary file
>> formats.")
>> (license license:bsd-3))
>> ```
>>
>> When trying to build this file however, I get the following error:
>
> This part is now fixed by <https://issues.guix.gnu.org/54729#2>. But it
> is a core-updates change so the fix will land master at the next
> cycle... who knows when. ;-)
>
> For the other issue about the importer, I suggest to close this one and
> reopen an issue.
>
>
> Cheers,
> simon
Closed
?