Skip to content

haskell.compiler.ghc865Binary: drop#440400

Merged
sternenseemann merged 1 commit intoNixOS:masterfrom
wolfgangwalther:haskell-updates-drop-power64
Sep 6, 2025
Merged

haskell.compiler.ghc865Binary: drop#440400
sternenseemann merged 1 commit intoNixOS:masterfrom
wolfgangwalther:haskell-updates-drop-power64

Conversation

@wolfgangwalther
Copy link
Contributor

This was used for bootstrapping GHC on powerpc64le, but it's unclear whether that actually still works. It makes no sense to pretend to support it, when it's most likely broken, but we can't even verify.

Also the bootstrap chain will be broken once we drop GHC 8.10.7, so we might as well drop the whole thing.

Discussed in #381265 (comment)

Things done


Add a 👍 reaction to pull requests you find important.

@nixpkgs-ci nixpkgs-ci bot added 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. 10.rebuild-darwin: 1-10 This PR causes between 1 and 10 packages to rebuild on Darwin. 11.by: package-maintainer This PR was created by a maintainer of all the package it changes. 10.rebuild-darwin: 1 This PR causes 1 package to rebuild on Darwin. 6.topic: haskell General-purpose, statically typed, purely functional programming language 8.has: changelog This PR adds or changes release notes 8.has: documentation This PR adds or changes documentation labels Sep 5, 2025
@wolfgangwalther wolfgangwalther force-pushed the haskell-updates-drop-power64 branch from 5dbf6ed to 3b8c265 Compare September 5, 2025 12:13
Copy link
Contributor

@OPNA2608 OPNA2608 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't have the correct kind of machine to even attempt to salvage powerpc64le bootstrap, so all I can give is a phrasing suggestion.

@wolfgangwalther wolfgangwalther force-pushed the haskell-updates-drop-power64 branch 2 times, most recently from b82d16d to 71aa6a3 Compare September 6, 2025 13:12
@wolfgangwalther wolfgangwalther changed the base branch from haskell-updates to master September 6, 2025 13:12
@nixpkgs-ci nixpkgs-ci bot closed this Sep 6, 2025
@nixpkgs-ci nixpkgs-ci bot reopened this Sep 6, 2025
This was used for bootstrapping GHC on powerpc64le, but it's unclear
whether that actually still works. It makes no sense to pretend to
support it, when it's most likely broken, but we can't even verify.

Also the bootstrap chain will be broken once we drop GHC 8.10.7, so we
might as well drop the whole thing.
Copy link
Member

@emilazy emilazy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

Comment on lines 124 to +125
# GHC >= 9.0 removed the armv7l bindist
if stdenv.buildPlatform.isAarch32 then
bb.packages.ghc8107Binary
# No suitable bindists for powerpc64le
else if stdenv.buildPlatform.isPower64 && stdenv.buildPlatform.isLittleEndian then
bb.packages.ghc902
else
bb.packages.ghc902Binary;
if stdenv.buildPlatform.isAarch32 then bb.packages.ghc8107Binary else bb.packages.ghc902Binary;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ghc8107Binary should probably be dropped, too – I did not bother verifying my bootstrap hack with 8.10.7, so this will presumably get broken for lack of NCG or working LLVM, and anyway it only covers bootstrap of versions that are due for removal. Out of scope for this PR, of course, and maybe the fix is just… drop ghc8107 and ghc928 in general.

(I doubt anyone is doing native builds for AArch32 these days anyway. It was broken on the Nix side for a while and nobody noticed.)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did not bother verifying my bootstrap hack with 8.10.7, so this will presumably get broken for lack of NCG or working LLVM, and anyway it only covers bootstrap of versions that are due for removal.

I think 8.10.7 can only be dropped if we drop AArch32 support entirely.

(I doubt anyone is doing native builds for AArch32 these days anyway. It was broken on the Nix side for a while and nobody noticed.)

Yeah, that's the part I have no idea of. If we all agree that we can drop native AArch32 support, then we can drop 8.10.7 bindist and 9.2.8 from source, too.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, I guess there is a long bootstrap chain back to the existing AArch32 bindist.

I am sceptical that there is AArch32 hardware that can viably compile modern GHCs. I think that if people want to do that, the cross bindist approach is the way to go. I expect that the 8.10 bindist would work with subopt and could therefore be used to keep this long bootstrap chain working, but am reluctant to spend time on validating that given that even cross‐compiling to AArch32 is flaky in Nixpkgs and that using it natively has been impossible at various points in recent history. From my previous conversations with @sternenseemann I don’t remember this coming up as a concern for dropping 8.10, at least.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can happily propose a PR to drop ghc8107Binary along with the whole isAarch32 chain - but only once this one here is merged, since it touches all the same lines.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems sensible to me. Might as well just drop 8.10 entirely? Which should probably be done after dropping the 9.0 source build, as there’s no point running a build to verify a bootstrap chain for a compiler due for removal anyway.

This is so hard to keep track of, you guys should discover the joys of PRs that delete > 6,000 lines all at once.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, a lot of these things only surface while we're already discussing things. I lack the overview of what can all be dropped, so I'm trying to slice off pieces 1-by-1 to make progress overall.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I basically just start hitting the backspace key and only open a PR once it wears out and I have to go out and buy a new one :)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's do it bit by bit.

armv7l and ppc64le are going to be the victims of this.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we can drop 8.10.7 bindist and 9.2.8 from source, too

Even with subopt, there is not really a way to get 9.2 with a recent enough LLVM version.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, why is that? I assume the LLVM patches could be extended back, and subopt should work for the bootstrap. But maybe I’m missing something (significant changes in the backend around that time?).

OTOH I don’t think it’s worthwhile, compared to doing the cross bindist thing.

@nixpkgs-ci nixpkgs-ci bot added the 12.approvals: 1 This PR was reviewed and approved by one person. label Sep 6, 2025
@sternenseemann sternenseemann merged commit 4a5ab1e into NixOS:master Sep 6, 2025
29 of 32 checks passed
@wolfgangwalther wolfgangwalther deleted the haskell-updates-drop-power64 branch September 7, 2025 08:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

6.topic: haskell General-purpose, statically typed, purely functional programming language 8.has: changelog This PR adds or changes release notes 8.has: documentation This PR adds or changes documentation 10.rebuild-darwin: 1-10 This PR causes between 1 and 10 packages to rebuild on Darwin. 10.rebuild-darwin: 1 This PR causes 1 package to rebuild on Darwin. 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. 11.by: package-maintainer This PR was created by a maintainer of all the package it changes. 12.approvals: 1 This PR was reviewed and approved by one person.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants