Description
This is a bit of a follow-up to #5837 (which is intended to provide an incremental pain remedy for 2.4.x) which is expected to result in the following situation for v2-install:
We have two bindir "install" paths settings,
--symlink-bindir=DIR
(used when--bindir-method=symlink
)--bindir=DIR
(used when--bindir-method=copy
)
This is mostly for historical reasons as cabal has had these two configuration properties for about a decade.
However, it doesn't seem to make much sense in the nix-style paradigm to have two separate folders; instead I suggest to redesign this for cabal 3.0 to
- deprecate
--symlink-bindir=DIR
- Use a single
--bindir=DIR
configuration field - Use
--bindir-method={copy,symlink,auto}
to control how executables are "installed" into the folder denoted by--bindir
This would IMO be a less confusing UI as you need to be careful which bindir field you set; there's now only one!
So e.g. if you're preparing some binary dist for an executable (for which you know it is relocatable as it doesn't have any ties to the nix-style store), you can just say
cabal install --bindir=./bindist/bin --bindir-method=copy mypackage
and if you instead want to prepare some local bin
-folder with symlinks to some build tools, you can instead say
cabal install --bindir=${HOME}/buildtools-bin --bindir-method=symlink alex happy
and if you use the auto
method (i.e. try to use symlinks
and fallback to copy
if not possible), now you can say
cabal install --bindir=${HOME}/buildtools-bin --bindir-method=auto alex happy
With the UI as implemented for #5837 for cabal 2.4 however, you'd have to use the following incantations respectively:
cabal v2-install --bindir=./bindist/bin --bindir-method=copy mypackage
cabal v2-install --symlink-bindir=${HOME}/buildtools-bin --bindir-method=symlink alex happy
# NB: we need to set both bindir locations!
cabal v2-install --bindir=${HOME}/buildtools-bin --symlink-bindir=${HOME}/buildtools-bin --bindir-method=auto alex happy