unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Timothy Sample <samplet@ngyro.com>
To: Ricardo Wurmus <rekado@elephly.net>
Cc: guix-devel@gnu.org
Subject: Re: Haskel LTS 12.8.
Date: Thu, 30 Aug 2018 15:46:41 -0400	[thread overview]
Message-ID: <877ek763j2.fsf@ngyro.com> (raw)
In-Reply-To: <87efeg6dqy.fsf@ngyro.com> (Timothy Sample's message of "Wed, 29 Aug 2018 17:53:41 -0400")

Hi Again,

Timothy Sample <samplet@ngyro.com> writes:

> Hello,
>
> Ricardo Wurmus <rekado@elephly.net> writes:
>
>> Hi Tim,
>>
>>> To avoid duplicating work, I wanted to let you know that I am working on
>>> updating the Haskell packages to their LTS 12.8 versions.  This will go
>>> nicely with the new GHC 8.4.3.
>>
>> Excellent!  I have a couple of new package definitions and a few minor
>> updates that I wanted to push to the master branch tomorrow.  (These
>> updates work fine with with GHC 8.0.x AFAICT, but I haven’t subjected
>> them to much testing.)
>
> There’s an issue with the new GHC.  The “--allow-newer=…” flags no
> longer work.  I can’t find any info on the Web or in any changelog.  It
> seems that nobody uses “runhaskell Setup.hs …” except for us.  Right
> now, I am working around this clumsily to avoid stalling (I am just
> patching the Cabal files).  It ought to be fixed before everything gets
> merged, though.  The best idea I’ve had so far is to update the build
> system to use the “cabal” command.  Hopefully I can find something
> simpler, though.

The change is here: <https://github.com/haskell/cabal/pull/4527>, and it
is mentioned nicely in the Cabal changelog:

    * Removed unused `--allow-newer`/`--allow-older` support from
      `Setup configure` (#4527).

If we use the “cabal” command like I proposed above, we need the
“cabal-install” package which is built with (wait for it) Cabal.  We
could add an argument like “#:cabal-install?” which when false would
cause the build system to use “runhaskell Setup.hs”.  This would let us
bootstrap “cabal-install”, but we would need to use it for every package
that “cabal-install” depends on, which is a pretty substantial set.
(This also means that all of those packages could not use
“--allow-newer”.)  I find this pretty clunky.

I’m starting to think that patching the Cabal files is not so bad after
all.  The main reason we change dependency constraints so often with
Hackage packages is because we do not use the latest constraints from
upstream.  Hackage has a Cabal file revision system separate from the
release tarballs, and it is used liberally by the Haskell community.
(In fact, it seems to cause developers to be very conservative with
their constraints, because they know they can be revised easily if
needed.)  Because we only ever see the unrevised constraints, we use
“--allow-newer” often to keep up.

If we could modify the build system or add a new downloader to use these
revisions, we would only rarely need to change the Cabal file dependency
constraints, and it would make doing it via patches much less
burdensome.

Another idea is to add an “#:allow-newer” argument to the build system,
and either use a clever regex or the Cabal parser to patch the files
automatically.

Thoughts?

>>> I am keeping the work on a WIP branch that I have here:
>>> <https://gitlab.com/samplet/guix/tree/wip-haskell>.  All the updates
>>> have commits, but there is still a lot of testing to do and build issues
>>> to resolve.  I will keep you posted.
>>
>> Shall we push that to a wip-haskell branch in the Guix repository on
>> Savannah instead?  Then we could more easily let ci.guix.info build out
>> the branch.
>
> Yes!  This is a great idea.  However, maybe it’s best for a little later
> (tomorrow or the next day).  Right now, I am fixing more than my
> computer is building.  :)
>
>> --
>> Ricardo
>
>
> -- Tim

      reply	other threads:[~2018-08-30 19:46 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-29 16:39 Haskel LTS 12.8 Timothy Sample
2018-08-29 18:51 ` Ricardo Wurmus
2018-08-29 21:53   ` Timothy Sample
2018-08-30 19:46     ` Timothy Sample [this message]

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

  List information: https://guix.gnu.org/

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

  git send-email \
    --in-reply-to=877ek763j2.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 public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).