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
?
Your comment

This issue is archived.

To comment on this conversation send an email to 53655@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 53655
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch