Unable to compile ghc-8.2.2 with ghc-8.4.3

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
14 messages Options
Reply | Threaded
Open this post in threaded view
|

Unable to compile ghc-8.2.2 with ghc-8.4.3

fommil
Hello all,

I am unable to compile ghc-8.2.2 with ghc-8.4.3 (which is otherwise
working fine, e.g. to compile my own projects and xmonad). Could
somebody please help? The error I get is

ghc-cabal: Encountered missing dependencies:
base >=4.4.1 && <4.11
libraries/hpc/ghc.mk:3: libraries/hpc/dist-boot/package-data.mk: No
such file or directory
make[1]: *** [libraries/hpc/ghc.mk:3:
libraries/hpc/dist-boot/package-data.mk] Error 1
make: *** [Makefile:123: all] Error 2

I should give some background as to why I'm doing this: I am trying to
build a back catalogue of ghc installations because the older binary
downloads from haskell.org give me linking errors and I've lost faith
in Archlinux's ability to package ghc.

I plan on using these builds of ghc in stack, instead of their
binaries. I don't like downloading binaries. I'd rather build them
from source. I will also create a docker image for my own CI purposes.

I'm using this script, but it's just a formalisation of the ghc
installation instructions to help me automate the process.

  https://gitlab.com/fommil/ghc-env/blob/master/bin/ghc-env

I am on Archlinux, which (I'm sure many of you know) has a very broken
concept of ghc. I already lost 2 hours today because Archlinux broke
my ~/.ghc, and therefore xmonad was unable to start and this locked me
out of my desktop. I plan on using NixOS in the future. From a fresh
OS install I do

  pacman -S ghc-static cabal-install

to get me ghc 8.4.3 and the cabal CLI. From here I download and
compile ghc 8.4.3 and cabal-install with

  ghc-env compile 8.4.3
  cabal install cabal-install xmonad xmonad-contrib

and now I can delete Arch's versions of ghc (yay!).

But from here, if I try to compile ghc 8.2.2 (with a view to compile
all the way back to the 7.x series) I get the failure at the top.

An alternative solution would be if there were instructions for a
fabled "phase0" compile, which doesn't require a ghc bootstrap. Does
anybody know anything about that?


Best regards,
Sam
_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: Unable to compile ghc-8.2.2 with ghc-8.4.3

Ben Gamari-2
In general we don't support bootstrapping older GHCI with newer GHC. However, you may be able to hack something together by manually tweaking bounds.

Cheers,

- Ben

--
Sent from my Android device with K-9 Mail. Please excuse my brevity.
_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: Unable to compile ghc-8.2.2 with ghc-8.4.3

fommil
Hi Ben,

What is the recommended way to build old versions of GHC? The
haskell.org binaries for, e.g. 7.8.3, do not work on my machine. If I
attempt to recompile ghc 7.8.3 with the haskell.org binary, I get
linkage errors.

Actually I'd love to be able to bootstrap a build without any ghc
installed... that would solve the problem. I heard about the "phase0"
approach from Vitaly Bragilevsky at his Lambdaconf talk this year. But
I've been unable to find any documentation about it.

Best regards,
Sam


On 22 August 2018 at 12:30, Ben Gamari <[hidden email]> wrote:

> In general we don't support bootstrapping older GHCI with newer GHC.
> However, you may be able to hack something together by manually tweaking
> bounds.
>
> Cheers,
>
> - Ben
>
> --
> Sent from my Android device with K-9 Mail. Please excuse my brevity.
> _______________________________________________
> Glasgow-haskell-users mailing list
> [hidden email]
> http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
>
_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: Unable to compile ghc-8.2.2 with ghc-8.4.3

amindfv
(I haven't actually done this, but:) If you want to be able to install GHC without any GHC binary, I think you'd have to start with an ancient version of GHC which wasn't itself written in Haskell, and build successive versions (skipping as many as possible) until you had a GHC which supported all the language features the most-recent version requires.

If you did embark on this, it would be nice if you could report back with a minimal number of steps it takes to get to current GHC!

Tom

> El 22 ago 2018, a las 06:01, Sam Halliday <[hidden email]> escribió:
>
> Hi Ben,
>
> What is the recommended way to build old versions of GHC? The
> haskell.org binaries for, e.g. 7.8.3, do not work on my machine. If I
> attempt to recompile ghc 7.8.3 with the haskell.org binary, I get
> linkage errors.
>
> Actually I'd love to be able to bootstrap a build without any ghc
> installed... that would solve the problem. I heard about the "phase0"
> approach from Vitaly Bragilevsky at his Lambdaconf talk this year. But
> I've been unable to find any documentation about it.
>
> Best regards,
> Sam
>
>
>> On 22 August 2018 at 12:30, Ben Gamari <[hidden email]> wrote:
>> In general we don't support bootstrapping older GHCI with newer GHC.
>> However, you may be able to hack something together by manually tweaking
>> bounds.
>>
>> Cheers,
>>
>> - Ben
>>
>> --
>> Sent from my Android device with K-9 Mail. Please excuse my brevity.
>> _______________________________________________
>> Glasgow-haskell-users mailing list
>> [hidden email]
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
> _______________________________________________
> Glasgow-haskell-users mailing list
> [hidden email]
> http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: Unable to compile ghc-8.2.2 with ghc-8.4.3

fommil
Hi Tom,

I'm not sure it is necessary to go back that far. Vitaly pointed out
that any version of GHC could produce the "minimal C" output, which
can be ported to another platform that doesn't have a GHC, as the
bootstrap. I'm not entirely sure how to generate that output, mind
you.

On 22 August 2018 at 17:05,  <[hidden email]> wrote:

> (I haven't actually done this, but:) If you want to be able to install GHC without any GHC binary, I think you'd have to start with an ancient version of GHC which wasn't itself written in Haskell, and build successive versions (skipping as many as possible) until you had a GHC which supported all the language features the most-recent version requires.
>
> If you did embark on this, it would be nice if you could report back with a minimal number of steps it takes to get to current GHC!
>
> Tom
>
>> El 22 ago 2018, a las 06:01, Sam Halliday <[hidden email]> escribió:
>>
>> Hi Ben,
>>
>> What is the recommended way to build old versions of GHC? The
>> haskell.org binaries for, e.g. 7.8.3, do not work on my machine. If I
>> attempt to recompile ghc 7.8.3 with the haskell.org binary, I get
>> linkage errors.
>>
>> Actually I'd love to be able to bootstrap a build without any ghc
>> installed... that would solve the problem. I heard about the "phase0"
>> approach from Vitaly Bragilevsky at his Lambdaconf talk this year. But
>> I've been unable to find any documentation about it.
>>
>> Best regards,
>> Sam
>>
>>
>>> On 22 August 2018 at 12:30, Ben Gamari <[hidden email]> wrote:
>>> In general we don't support bootstrapping older GHCI with newer GHC.
>>> However, you may be able to hack something together by manually tweaking
>>> bounds.
>>>
>>> Cheers,
>>>
>>> - Ben
>>>
>>> --
>>> Sent from my Android device with K-9 Mail. Please excuse my brevity.
>>> _______________________________________________
>>> Glasgow-haskell-users mailing list
>>> [hidden email]
>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
>> _______________________________________________
>> Glasgow-haskell-users mailing list
>> [hidden email]
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: Unable to compile ghc-8.2.2 with ghc-8.4.3

Ben Gamari-2
Indeed, GHC can indeed produce (very slow) C. This is known as unregisterised mode [1]. That being said, I'm not sure that helps you with the task at hand. Afterall, you still would need a haskell compiler to build your unregisterised compiler.

[1] https://ghc.haskell.org/trac/ghc/wiki/Building/Unregisterised

On August 22, 2018 12:12:27 PM EDT, Sam Halliday <[hidden email]> wrote:
Hi Tom,

I'm not sure it is necessary to go back that far. Vitaly pointed out
that any version of GHC could produce the "minimal C" output, which
can be ported to another platform that doesn't have a GHC, as the
bootstrap. I'm not entirely sure how to generate that output, mind
you.

On 22 August 2018 at 17:05, <[hidden email]> wrote:
(I haven't actually done this, but:) If you want to be able to install GHC without any GHC binary, I think you'd have to start with an ancient version of GHC which wasn't itself written in Haskell, and build successive versions (skipping as many as possible) until you had a GHC which supported all the language features the most-recent version requires.

If you did embark on this, it would be nice if you could report back with a minimal number of steps it takes to get to current GHC!

Tom

El 22 ago 2018, a las 06:01, Sam Halliday <[hidden email]> escribió:

Hi Ben,

What is the recommended way to build old versions of GHC? The
haskell.org binaries for, e.g. 7.8.3, do not work on my machine. If I
attempt to recompile ghc 7.8.3 with the haskell.org binary, I get
linkage errors.

Actually I'd love to be able to bootstrap a build without any ghc
installed... that would solve the problem. I heard about the "phase0"
approach from Vitaly Bragilevsky at his Lambdaconf talk this year. But
I've been unable to find any documentation about it.

Best regards,
Sam


On 22 August 2018 at 12:30, Ben Gamari <[hidden email]> wrote:
In general we don't support bootstrapping older GHCI with newer GHC.
However, you may be able to hack something together by manually tweaking
bounds.

Cheers,

- Ben

--
Sent from my Android device with K-9 Mail. Please excuse my brevity.


Glasgow-haskell-users mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users


Glasgow-haskell-users mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users

--
Sent from my Android device with K-9 Mail. Please excuse my brevity.
_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: Unable to compile ghc-8.2.2 with ghc-8.4.3

fommil
Hi Ben,

This would definitely help. I could use a docker image of a really old
OS that has old ghc binaries available, to generate the .c for that
old version of GHC (e.g. v 7.0 or something). Then I could use those
files to bootstrap a ghc 7.0 on my machine, and from there every
version of ghc since. It would make a lot of sense for the
"unregistered" sources to be made available as an optional download
alongside the source code, if haskell.org were open to that
possibility.

Best regards,
Sam


On 22 August 2018 at 21:20, Ben Gamari <[hidden email]> wrote:

> Indeed, GHC can indeed produce (very slow) C. This is known as
> unregisterised mode [1]. That being said, I'm not sure that helps you with
> the task at hand. Afterall, you still would need a haskell compiler to build
> your unregisterised compiler.
>
> [1] https://ghc.haskell.org/trac/ghc/wiki/Building/Unregisterised
>
> On August 22, 2018 12:12:27 PM EDT, Sam Halliday <[hidden email]>
> wrote:
>>
>> Hi Tom,
>>
>> I'm not sure it is necessary to go back that far. Vitaly pointed out
>> that any version of GHC could produce the "minimal C" output, which
>> can be ported to another platform that doesn't have a GHC, as the
>> bootstrap. I'm not entirely sure how to generate that output, mind
>> you.
>>
>> On 22 August 2018 at 17:05,  <[hidden email]> wrote:
>>>
>>>  (I haven't actually done this, but:) If you want to be able to install
>>> GHC without any GHC binary, I think you'd have to start with an ancient
>>> version of GHC which wasn't itself written in Haskell, and build successive
>>> versions (skipping as many as possible) until you had a GHC which supported
>>> all the language features the most-recent version requires.
>>>
>>>  If you did embark on this, it would be nice if you could report back
>>> with a minimal number of steps it takes to get to current GHC!
>>>
>>>  Tom
>>>
>>>>  El 22 ago 2018, a las 06:01, Sam Halliday <[hidden email]>
>>>> escribió:
>>>>
>>>>  Hi Ben,
>>>>
>>>>  What is the recommended way to build old versions of GHC? The
>>>>  haskell.org binaries for, e.g. 7.8.3, do not work on my machine. If I
>>>>  attempt to recompile ghc 7.8.3 with the haskell.org binary, I get
>>>>  linkage errors.
>>>>
>>>>  Actually I'd love to be able to bootstrap a build without any ghc
>>>>  installed... that would solve the problem. I heard about the "phase0"
>>>>  approach from Vitaly Bragilevsky at his Lambdaconf talk this year. But
>>>>  I've been unable to find any documentation about it.
>>>>
>>>>  Best regards,
>>>>  Sam
>>>>
>>>>
>>>>>  On 22 August 2018 at 12:30, Ben Gamari <[hidden email]> wrote:
>>>>>  In general we don't support bootstrapping older GHCI with newer GHC.
>>>>>  However, you may be able to hack something together by manually
>>>>> tweaking
>>>>>  bounds.
>>>>>
>>>>>  Cheers,
>>>>>
>>>>>  - Ben
>>>>>
>>>>>  --
>>>>>  Sent from my Android device with K-9 Mail. Please excuse my brevity.
>>>>> ________________________________
>>>>>
>>>>>  Glasgow-haskell-users mailing list
>>>>>  [hidden email]
>>>>>  http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
>>>>
>>>> ________________________________
>>>>
>>>>  Glasgow-haskell-users mailing list
>>>>  [hidden email]
>>>>  http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
>
>
> --
> Sent from my Android device with K-9 Mail. Please excuse my brevity.
_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Fwd: Unable to compile ghc-8.2.2 with ghc-8.4.3

Sven Panne-2
Am Fr., 31. Aug. 2018 um 11:11 Uhr schrieb Sam Halliday <[hidden email]>:
[...] It would make a lot of sense for the
"unregistered" sources to be made available as an optional download
alongside the source code, if haskell.org were open to that
possibility.

IIRC, the generated C code is *not* platform-independent, at least that is what I remember from ancient times. Perhaps I'm wrong and/or this has changed, but if this is really the case, you would need an additional download per target platform.

Cheers,
   S. 

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: Unable to compile ghc-8.2.2 with ghc-8.4.3

Ben Gamari-2
In reply to this post by fommil
Sam Halliday <[hidden email]> writes:

> Hi Ben,
>
> This would definitely help. I could use a docker image of a really old
> OS that has old ghc binaries available, to generate the .c for that
> old version of GHC (e.g. v 7.0 or something). Then I could use those
> files to bootstrap a ghc 7.0 on my machine, and from there every
> version of ghc since. It would make a lot of sense for the
> "unregistered" sources to be made available as an optional download
> alongside the source code, if haskell.org were open to that
> possibility.
>
This is a very interesting idea. The build system currently isn't
really setup in a way to make this possible, but this could likely be
changed in our new build system, Hadrian. Also, I suspect this would
require some adjustments to the C code generator, which very likely has
some platform dependence in its output.

Perhaps you'd like to try picking up this task?

Cheers,

- Ben

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users

signature.asc (497 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Unable to compile ghc-8.2.2 with ghc-8.4.3

fommil
Hi Ben,

Updating the new build tool is e right thing to do, long term, but it unfortunate doesn't help with my objective of compiling old versions of ghc ... but there is a quick here that I could exploit. Since I'm building for the same platform, bug just using different versions of the operating system, I think I can create the C files in an old Debian inside docker and use them in the more modern host machine to build the old ghc.

On Fri, 31 Aug 2018, 15:36 Ben Gamari, <[hidden email]> wrote:
Sam Halliday <[hidden email]> writes:

> Hi Ben,
>
> This would definitely help. I could use a docker image of a really old
> OS that has old ghc binaries available, to generate the .c for that
> old version of GHC (e.g. v 7.0 or something). Then I could use those
> files to bootstrap a ghc 7.0 on my machine, and from there every
> version of ghc since. It would make a lot of sense for the
> "unregistered" sources to be made available as an optional download
> alongside the source code, if haskell.org were open to that
> possibility.
>
This is a very interesting idea. The build system currently isn't
really setup in a way to make this possible, but this could likely be
changed in our new build system, Hadrian. Also, I suspect this would
require some adjustments to the C code generator, which very likely has
some platform dependence in its output.

Perhaps you'd like to try picking up this task?

Cheers,

- Ben

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: Fwd: Unable to compile ghc-8.2.2 with ghc-8.4.3

Ben Franksen
In reply to this post by Sven Panne-2
Am 31.08.2018 um 11:57 schrieb Sven Panne:
> Am Fr., 31. Aug. 2018 um 11:11 Uhr schrieb Sam Halliday <
> [hidden email]>:
>
>> [...] It would make a lot of sense for the
>> "unregistered" sources to be made available as an optional download

Note that the term is "unregisterized" which refers to putting certain
global variables into registers; you can't do that in C code.

Cheers
Ben (another one)

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: Fwd: Unable to compile ghc-8.2.2 with ghc-8.4.3

Sven Panne-2
Am Fr., 31. Aug. 2018 um 18:52 Uhr schrieb Ben Franksen <[hidden email]>:
Am 31.08.2018 um 11:57 schrieb Sven Panne:
> Am Fr., 31. Aug. 2018 um 11:11 Uhr schrieb Sam Halliday <
> [hidden email]>:
>
>> [...] It would make a lot of sense for the
>> "unregistered" sources to be made available as an optional download

Note that the term is "unregisterized" which refers to putting certain
global variables into registers; you can't do that in C code.

That's only correct for standard C, for GCC there is https://gcc.gnu.org/onlinedocs/gcc/Global-Register-Variables.html. IIRC this is exactly how old unregistered builds worked. I am not even sure if the unregistered builds ever worked *without* GCC, perhaps there was some CPP magic, but I can't remember....

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: Fwd: Unable to compile ghc-8.2.2 with ghc-8.4.3

Brandon Allbery
I don't think ghc ever used gcc's version of this; it used the Evil Mangler to do it.

On Fri, Aug 31, 2018 at 2:59 PM Sven Panne <[hidden email]> wrote:
Am Fr., 31. Aug. 2018 um 18:52 Uhr schrieb Ben Franksen <[hidden email]>:
Am 31.08.2018 um 11:57 schrieb Sven Panne:
> Am Fr., 31. Aug. 2018 um 11:11 Uhr schrieb Sam Halliday <
> [hidden email]>:
>
>> [...] It would make a lot of sense for the
>> "unregistered" sources to be made available as an optional download

Note that the term is "unregisterized" which refers to putting certain
global variables into registers; you can't do that in C code.

That's only correct for standard C, for GCC there is https://gcc.gnu.org/onlinedocs/gcc/Global-Register-Variables.html. IIRC this is exactly how old unregistered builds worked. I am not even sure if the unregistered builds ever worked *without* GCC, perhaps there was some CPP magic, but I can't remember....
_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users


--
brandon s allbery kf8nh

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: Fwd: Unable to compile ghc-8.2.2 with ghc-8.4.3

Sven Panne-2
Am Fr., 31. Aug. 2018 um 21:17 Uhr schrieb Brandon Allbery <[hidden email]>:
I don't think ghc ever used gcc's version of this; it used the Evil Mangler to do it.

Well, I actually *do* think it used GCC's global variables: I fixed GHC in the late 90's to make it work on HP-UX, and I'm quite sure that this involved fiddling around with header files, finding suitable registers, describing stack layout, fixing alignment problems etc.  Alas, I don't have any unregistered build for GHC 0.29 (?) on HP-UX 10 at hand anymore. :-D  Perhaps one of the Simons remembers the details...

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users