Skip to content

CI: build portable binaries#180

Open
hasufell wants to merge 68 commits intostable-haskell/feature/cross-compilefrom
stable-haskell/feature/portable-binaries
Open

CI: build portable binaries#180
hasufell wants to merge 68 commits intostable-haskell/feature/cross-compilefrom
stable-haskell/feature/portable-binaries

Conversation

@hasufell
Copy link
Copy Markdown
Member

@hasufell hasufell commented Dec 8, 2025

TODO:

  • disable tests

This reduces linux binary flavors to two:

  • glibc (dynamic)
  • musl (fully static)

'gmp' and 'zlib' are always statically linked.

principalPP and setupPP seem to have gone unused since
8194fab
…ry, pkgsUseProfilingLibrary, pkgsUseProfilingLibraryShared

We do not want to check the compiler.
…antiatedWith from ElaboratedConfiguredPackage to ElaboratedComponent

Instantiation only makes sense for components.
…g jsem

This is a user problem. User should not enable jsem on a compiler that does not support it.

This change also avoid us to pass the compiler all the way down.

A better approach to restore this functionality would be to defer the application of the parallel strategy.
… validateSolverResult

- add step to Progress
- add MonadFail Progress instance
- refactor validateSolverResult
Merge fromSolverInstallPlan and fromSolverInstallPlanWithProgress.
andreabedini and others added 21 commits August 21, 2025 13:51
Cabal uses a peculiar c program to check if LD supports and should
use -x. To do this, it shells out to GHC to compiler the C file.
This however requires that GHC will not bail out, yet cabal does
not pass --package-db flags to this GHC invocation, and as such we
can run into situations where GHC bails out, especially during GHC
bootstrap phases where not all boot packages are available.

We however do not need GHC to compiler a c program, and can rely
on the C compiler.

Fundamentally cabal does not allow modelling program dependencies
in the program db, as such we must configure gcc first before using
it.

We make a small change to lib:Cabal (specifically the GHC module,
and it's Internal companion) to allow it to configure gcc first,
before trying to configure ld, and thus having gcc in scope while
configuring ld. This removes the need for the awkward ghc
invocation to compiler the test program.
Split the function into multiple ones.
If a node has dangling edges, then the list of missing neighbours cannot be empty.
Exceptions are not nice but this is an obvious invariant. Graph should provide a better API to make this unnecessary.
Not really a fix. I do not know why this happens.
It is duplicate information since we write the program invocation right after.
@hasufell hasufell marked this pull request as draft December 10, 2025 09:29
This reduces linux binary flavors to two:

- glibc (dynamic)
- musl (fully static)

'gmp' and 'zlib' are always statically linked.
@hasufell hasufell force-pushed the stable-haskell/feature/portable-binaries branch from fd20736 to 55b5169 Compare December 10, 2025 09:40
@hasufell hasufell marked this pull request as ready for review December 10, 2025 09:40
@hasufell
Copy link
Copy Markdown
Member Author

@andreabedini andreabedini force-pushed the stable-haskell/feature/cross-compile branch from 8e9a1e3 to fdbfbbe Compare May 4, 2026 06:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants