tech-pkg archive

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

Re: Going to update lang/ghc7 to 7.10.3



On 2019-12-29 23:54, Greg Troxel wrote:
> PHO <pho%cielonegro.org@localhost> writes:
> 
>> GHC 7.10.3 is the last version that can bootstrap with existing 7.6.3
>> bootkits. I built 7.10.3 bootkit for NetBSD/amd64 and uploaded it to
>> LOCAL_PORTS, but for other platforms I currently have no suitable
>> machines to build one. If any developers can build them it's highly
>> appreciated.
>>
>> The base version has been bumped from 4.6 to 4.8, so it's highly likely
>> that updating it will break some packages depending on GHC. I will take
>> care of that later.
> 
> Thanks for looking after ghc.   Please take these comments with the
> understanding that I am not 100% sure I know what I'm talking about here...
> 
> The bootstrap situation is difficult in general, and I think it would be
> helpful to have a written plan of how that works, including how to get
> new arches, and perhaps how to move forward in steps.  I see there is
> some of this.
> 
> It would be really nice if there were some support in pkgsrc for
> building a cross ghc, so that someone could do this wihtout being a ghc
> wizard.  (I realize that perhaps one is supposed to use the cross one
> and then build the native package on the target, and that seems like a
> good check.)

Yeah, in a perfect world we could just build a working bootkit for a
foreign target by installing some tools from cross/* and running
something like "make bootstrap TARGET=powerpc-unknown-netbsd" on a
cross-building host. But for now you need to manually set up a
cross-building C compiler, binutils, libc, libterminfo, and libiconv for
the target. Then you can follow instructions in
https://gitlab.haskell.org/ghc/ghc/wikis/building/cross-compiling

Once you get a working GHC for the target platform, install it somewhere
in your PATH, run "cd lang/ghc7; make bootstrap" on the target platform
and you'll have a bootkit for the target.

> It seems reasonable to keep ghc7 around until it seems really pointless;
> having a second package doesn't hurt.

The latest release 8.8.1 can only bootstrap with 8.4 or later. 8.4.4
requires 8.0, and 8.0.2 requires 7.8. So here's my upgrading plan:

1. Create lang/ghc80 containing GHC 8.0.2. Bootstrap it with lang/ghc7
(7.10.3).
2. Then create lang/ghc84 containing GHC 8.4.4. Bootstrap it with
lang/ghc80.
3. Then create lang/ghc88 containing GHC 8.8.1. Bootstrap it with
lang/ghc84.

And we can delete old packages when we have enough bootkits for the
latest release. By "enough" I mean, at least all of the currently
supported platforms (both by pkgsrc itself and lang/ghc7) should be
supported by the latest one as well. This is because cross-building GHC
is rather painful to do.


Home | Main Index | Thread Index | Old Index