Skip to content

v2-build --only-dependencies solver should never fail, if v2-build --dry doesn't. #6106

Open
@phadej

Description

@phadej
servant release-0.16 % cabal new-build --dry all | tail
 - cookbook-generic-0.1 (exe:cookbook-using-custom-monad) (cannot read state cache)
 - cookbook-db-sqlite-simple-0.1 (exe:cookbook-db-sqlite-simple) (cannot read state cache)
 - cookbook-db-postgres-pool-0.1 (exe:cookbook-db-postgres-pool) (cannot read state cache)
 - cookbook-curl-mock-0.1 (exe:cookbock-curl-mock) (cannot read state cache)
 - cookbook-basic-streaming-2.1 (exe:cookbook-basic-streaming) (cannot read state cache)
 - cookbook-basic-auth-0.1 (exe:cookbook-basic-auth) (cannot read state cache)
 - tutorial-0.10 (test:spec) (cannot read state cache)
 - cookbook-testing-0.0.1 (exe:cookbook-testing) (cannot read state cache)
 - cookbook-pagination-2.1 (exe:cookbook-pagination) (cannot read state cache)
 - cookbook-file-upload-0.1 (exe:cookbook-file-upload) (cannot read state cache)
servant release-0.16 % cabal new-build --dep all       
cabal: Cannot select only the dependencies (as requested by the
'--only-dependencies' flag), the packages servant-0.16.1,
servant-foreign-0.15, servant-docs-0.11.3, servant-server-0.16.1 and
servant-client-0.16 are required by a dependency of one of the other targets.

Solver should pick as much as it can, there are dependencies to be built, even there are so called in-place packages (here: tutorial depends on servant-js which depends on servant-js)


More concretely, given there are four categories of packages in a plan

  • builtin Lives in global (non-nix-style) package db
  • global Lives in Nix-store cache
  • local Local package
  • inplace Local in-place package

I'd need a flag to build all packages which will end in the nix-store (which IMO we should rename to v2-build store: #6105, because nix-store is /nix/store). I think that --only-dependencies is close to that. To make more people happy, the v2-build --only-dependencies could also download inplace packages.

Given that, if you go on a flight, v2-build --only-dependencies will prepare you for an offline hacking session.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions