-
Notifications
You must be signed in to change notification settings - Fork 701
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
Planned improvements to component handling in Cabal/cabal-install #3287
Comments
…#3287) --one-shot lets you compile a single component without building its dependencies. Signed-off-by: Edward Z. Yang <[email protected]>
…#3287) --one-shot lets you compile a single component without building its dependencies. Signed-off-by: Edward Z. Yang <[email protected]>
…#3287) --one-shot lets you compile a single component without building its dependencies. Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
…#3287) --one-shot lets you compile a single component without building its dependencies. Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
…askell#3287) --one-shot lets you compile a single component without building its dependencies. Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
…askell#3287) --one-shot lets you compile a single component without building its dependencies. Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
…askell#3287) --one-shot lets you compile a single component without building its dependencies. Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
…askell#3287) --one-shot lets you compile a single component without building its dependencies. Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
…askell#3287) --one-shot lets you compile a single component without building its dependencies. Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
…askell#3287) --one-shot lets you compile a single component without building its dependencies. Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
…askell#3287) --one-shot lets you compile a single component without building its dependencies. Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
…askell#3287) --one-shot lets you compile a single component without building its dependencies. Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
…askell#2775 (haskell#3287) --assume-deps-up-to-date lets you compile a single component without building its dependencies. Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
…askell#2775 (haskell#3287) --assume-deps-up-to-date lets you compile a single component without building its dependencies. Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
…askell#2775 (haskell#3287) --assume-deps-up-to-date lets you compile a single component without building its dependencies. Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
…askell#2775 (haskell#3287) --assume-deps-up-to-date lets you compile a single component without building its dependencies. Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
Signed-off-by: Edward Z. Yang <[email protected]>
This ticket got obsoleted by #3662 |
Also, I don't think this last item is actually needed. The existing approach to the build runner can avoid re-configuring and can download in parallel. |
Well, it would be needed if took the approach described in this ticket (which we ended up not doing. Per-component builds as currently implement have to reconfigure for each component; not really possible to avoid without reimplementing configure in cabal-install. |
)" This reverts commit 2fac2ec.
This reverts commit 1d27ac7.
…fix to haskell#2775 (haskell#3287)" This reverts commit 85a76c9.
)" This reverts commit 2fac2ec.
This reverts commit 1d27ac7.
…fix to haskell#2775 (haskell#3287)" This reverts commit 85a76c9.
Cabal and cabal-install operate on a per-package basis, rather than a per-component basis; this is the source of many bugs:
-j
should build package components in parallel #2623 No parallelism while building components; you parallelize over packages but components are built seriallyI had a previous proposal for a per-component setup interface at #3064 but after discussion, we are going to go for a more conservative plan:
cabal build myexe
, this will buildmyexe
as well as any components it depends on (e.g., the library). If you pass the--one-shot
flag, we will assume that all of its dependencies are up-to-date and only build the immediate component. However, it will assume, e.g., the library it needs, has been built and registered in place; it would not be possible to request the executable to be built against an already installed version of the package. (I suppose if you fix Make Cabal accept --dependency flags qualified by components #3286 that will solve that problem, because you'll just configure the dependency to point elsewhere.)--one-shot
mode to./Setup copy
. If you don't specify a component it will instead install package-global information.--one-shot
mode to./Setup register
.InstallPlan
fromPackageIndex
; i.e., havecabal-install
have a copy of the code so thatInstallPlan
isn't implemented internally using aPackageIndex
but with its own data typePlanIndex
. See Refactor of PackageIndex and InstallPlan #3525.InstallPlan
to not be keyed onUnitId
, but on a new data type that reflects various build items we may need to do, specifically (1) download a package, (2) configure a package, (3) build a component in a package (this step takes advantage of--one-shot
). At the same time, rewrite the install plan runner to handle these steps individually.The text was updated successfully, but these errors were encountered: