#645: confusing interface: cabal "install" subcommand has two clashing meanings
---------------------------------+------------------------------------------
Reporter: StefanK | Owner:
Type: defect | Status: new
Priority: normal | Milestone:
Component: cabal-install tool | Version: 1.6.0.1
Severity: normal | Keywords:
Difficulty: unknown | Ghcversion:
Platform: |
---------------------------------+------------------------------------------
Comment(by duncan):
Replying to [ticket:645 StefanK]:
> {{{
> rm -rf ~/.ghc ~/.cabal
> cabal clean
> cabal configure --user --prefix="${HOME}/opt"
> cabal build
> cabal install
> }}}
> will install the binaries in '/home/sk/.cabal/bin' instead of
'/home/sk/opt/bin'.
So what is confusing here is that `cabal install` does everything. It
configures, builds and installs. In particular because it configures, it
takes all the configuration options and overrides any previous configure.
So it will work as expected if you do:
{{{
cabal clean
cabal install --user --prefix="${HOME}/opt"
}}}
The problem is that we have two clashing meanings for install. There's the
original meaning from the simple single package setting, where it means
"assume we have configured and built, now install". The package manager
meaning is "configure, build and install this package, and all of its
dependencies".
The question is how we reconcile these two meanings. One might imagine
that we could tell if the package is already configured and not-
reconfigure. In general, for an arbitrary build system that's not really
possible.
Suggestions welcome.
Another option might be for `cabal install` to use the saved configuration
rather than a fresh configuration.
--
Ticket URL: <http://hackage.haskell.org/trac/hackage/ticket/645#comment:2>
Hackage <http://haskell.org/cabal/>
Hackage: Cabal and related projects