all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Timothy Sample <samplet@ngyro.com>
To: Ricardo Wurmus <rekado@elephly.net>
Cc: guix-devel <guix-devel@gnu.org>
Subject: Re: heads-up: Haskell updates
Date: Sat, 17 Feb 2018 11:04:41 -0500	[thread overview]
Message-ID: <87po53mwkm.fsf@ngyro.com> (raw)
In-Reply-To: <87o9kn65l3.fsf@elephly.net> (Ricardo Wurmus's message of "Sat, 17 Feb 2018 15:42:00 +0100")

Ricardo Wurmus <rekado@elephly.net> writes:

>> Based on your earlier suggestion, I played around with removing all the
>> packages that GHC provides.  I made the same change to ghc-mtl on
>> core-updates, and it allows me to build ghc-resourcet.
> […]
>> Is this too drastic?  I could rebase on top of your ghc-mtl changes and
>> submit a patch if you think its OK.
>
> Not too drastic.  This is exactly what I had hoped for :)
>
> Thank you for making the effort.  A patch on top of latest core-updates
> / master would be very welcome.

I sent the patch.  It’s bug #30501.  (The most complicated part was the
changelog; I hope it’s OK!)

> Now, how do we prevent this in the future?  Can we modify “guix lint” to
> warn about these cases?  Can we also change the hackage importer to
> keep these packages out of the inputs of generated package definitions?

I can think of two approaches.

We could follow the style of Hackage and force everything to reference
the base libraries.  To make this work, we would have to make builds
fail if they don’t reference a base library that they need.  Maybe
there’s a way to hide the base libraries in the Haskell build system,
and use packages to expose them.  The major downside to this is adding a
“ghc-base” input to every Haskell package (and “ghc-binary” to a bunch,
etc.).  The upside is that it is more intuitive: the inputs look more
like Hackage, and you could try new versions of the base libraries using
standard Guix tools like:

    $ guix package -i ghc-pandoc \
        --with-input=ghc-transformers=ghc-transformers-new

(This would update all the dependencies, too, leaving the GHC-provided
library hidden and only exposing the new library, thus avoiding all the
conflicting version problems.)

We would have to make sure that “guix package -i ghc” still provides the
libraries, though, to save people a lot of confusion.

The second approach would be to leave everything implicit, and add notes
everywhere not to break things (in the docs, the linter, and the
importer).  I guess we would have to be careful when updating GHC in
case it adopts new base libraries.  The appeal of this approach is that
it is basically what we just did, so it’s done modulo the changes to the
linter and importer.

Personally, I prefer the first approach even though it’s a bit of a
radical departure.  It feels like it fits more both with Guix and
Haskell.  I also think that most Haskell people coming to Guix would
just understand it without any extra explanation.  Updating every single
Haskell package is a bit daunting :S.  It’s something I’m willing to
look at, though.

What do you think?  I’m happy to look at the linter and importer, too.
I would like to package “git-annex”, so making the Haskell stuff a
little nicer is only a minor detour towards that goal (last I checked, I
will have to import a lot of packages yet).


-- Tim

  reply	other threads:[~2018-02-17 16:04 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-13 12:48 heads-up: Haskell updates Ricardo Wurmus
2018-02-14 14:20 ` Ludovic Courtès
2018-02-14 16:46   ` Ricardo Wurmus
2018-02-14 18:46 ` Mark H Weaver
2018-02-14 19:19   ` Ricardo Wurmus
2018-02-14 19:39     ` Ricardo Wurmus
2018-02-14 19:44       ` Ricardo Wurmus
2018-02-14 21:23       ` Mark H Weaver
2018-02-14 21:39         ` Andreas Enge
2018-02-14 22:42           ` Ricardo Wurmus
2018-02-14 22:47       ` Danny Milosavljevic
2018-02-15  8:41         ` Mark H Weaver
2018-02-15  9:17           ` Ricardo Wurmus
2018-02-15 10:38             ` Mark H Weaver
2018-02-15 14:02             ` Timothy Sample
2018-02-15 15:05               ` Ricardo Wurmus
2018-02-17 12:50               ` Ricardo Wurmus
2018-02-17 13:04                 ` Ricardo Wurmus
2018-02-17 15:18                   ` Andreas Enge
2018-02-17 16:11                     ` Ricardo Wurmus
2018-02-17 20:00                       ` Mark H Weaver
2018-02-17 20:24                         ` core-updates, last call? Leo Famulari
2018-02-17 23:16                           ` Ricardo Wurmus
2018-02-18 21:45                             ` Pjotr Prins
2018-02-18 22:44                               ` Ricardo Wurmus
2018-02-18 20:42                       ` heads-up: Haskell updates Chris Marusich
2018-02-15 10:29           ` Mark H Weaver
2018-02-15 11:04           ` Danny Milosavljevic
2018-02-15 11:08             ` Danny Milosavljevic
2018-02-15 11:12             ` Andreas Enge
2018-02-15 15:44             ` Ricardo Wurmus
2018-02-15 17:03               ` Danny Milosavljevic
2018-02-15 17:46                 ` Leo Famulari
2018-02-15 18:12                 ` Mark H Weaver
2018-02-16 15:26                 ` Danny Milosavljevic
2018-02-16 16:31                   ` Marius Bakke
2018-02-16 17:43                     ` Ricardo Wurmus
2018-02-16 18:12                       ` Marius Bakke
2018-02-16 18:29                         ` Leo Famulari
2018-02-16 22:14                           ` Mark H Weaver
2018-02-16 18:15                       ` Mark H Weaver
2018-02-17  0:33                         ` Ricardo Wurmus
2018-02-17 12:11                       ` Oleg Pykhalov
2018-02-17 12:18                         ` Ricardo Wurmus
2018-02-17 12:55                           ` Oleg Pykhalov
2018-02-17 13:00                             ` Ricardo Wurmus
2018-02-17 13:38                               ` Timothy Sample
2018-02-17 14:42                                 ` Ricardo Wurmus
2018-02-17 16:04                                   ` Timothy Sample [this message]
2018-02-17 23:22                                     ` Ricardo Wurmus
2018-02-17 15:51                               ` Oleg Pykhalov
2018-02-17 19:48               ` Mark H Weaver
2018-02-17 19:54             ` Mark H Weaver
2018-02-17 21:51               ` Danny Milosavljevic
2018-02-17 22:32                 ` Timothy Sample

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87po53mwkm.fsf@ngyro.com \
    --to=samplet@ngyro.com \
    --cc=guix-devel@gnu.org \
    --cc=rekado@elephly.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.