forked from haskell/cabal
-
Notifications
You must be signed in to change notification settings - Fork 0
feature/cross-compile #8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
andreabedini
wants to merge
68
commits into
master
Choose a base branch
from
stable-haskell/feature/cross-compile
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fixes for ExtraSource
The treatment of --executable-static means we pass `-optl-static` to GHC, which in turn just passes this to the linker. This flag can not work on macOS. Fully static linking is impossible as libSystem must be linked dynamically. Thus here we disable this flag for macOS.
Don't enable -threaded unconditionnally when building Setup.hs. We may only have vanilla libraries (but maybe we don't have them either?) Revert ae0e752
Run a program (named "preBuildHook") before doing a package build and another program (named "postBuildHook") after the package is built. The exit code from the pre-build hook is passed to the post-build hook. The commit includes documentation for the hooks and the security safeguards implemented to avoid the running of malicious hook files. (cherry picked from commit 5f7b47f)
This reverts b408167 in spirit from haskell#4656.
This has to be cleaned up but it does not make sense to pass the compiler.
b9cbca4
to
985b8b7
Compare
- Remove QualifiyOptions Remove QualifyOptions by setting qoSetupIndependent to be always true (the current default) and qoBaseShim false (this must have been just a hack of some sort).
principalPP and setupPP seem to have gone unused since 8194fab
1. We want to let the user take control and we have no issue with GHC failing later on. 2. These checks depend on the compiler which now can change within the build graph. If they have to exist they will exist in a different way.
Another thing that cannot (shouldn't?) be compiler dependent.
remove independent goals
It is not very useful.
…tedConfiguredPackage to ElaboratedComponent
add stages list
wip: try to keep compatibility with existing tooling introduce Distribution.Client.Toolchain
Merge fromSolverInstallPlan and fromSolverInstallPlanWithProgress.
available targets are only host
Isolate the common logic between building and only downloading
More logging in ProjectBuilding
Determine packages to build in-place by their solver id, not their package id.
I am not sure about this commit. This works by package name and not by package id like hideInstalledPackagesSpecificBySourcePackageId.
refactor: simplify distBuildDirectory
When components were introduced, cabal had support for build-type: Configure, which allows to run a `configure` script prior to building the package. Upon the introduction of components, it became obvious that we can't just configure each and every component, as this easily runs into the situation where the `configure` script is run potentially concurrently for all components. However, build-type is a global option for cabal files, and is usually used to produce a <pkg>.buildinfo file. This file is then used to augment the Main Library and Executables only. This change now tracks whether or not we are building a main library or executable component, and if we do, retains only for these components the build-type: Configure from the package description. For all other components, we will fall back to the default build-type: Simple. For end users who want to depend on package configured values, they will need to set their sub libraries, testsuites and benchmark components to depend on the main library, and import any configured values from there. For lib:Cabal, which doesn't know about components when configure is invoked, we will continue to execute configure. There is no impact on lib:Cabal in this change.
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.
985b8b7
to
9abf046
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Marked as draft to avoid merging.