[Hackage] #208: Support program prefixes and suffixes

Hackage trac at galois.com
Thu Jan 17 14:36:54 EST 2008


#208: Support program prefixes and suffixes
----------------------------+-----------------------------------------------
  Reporter:  duncan         |        Owner:         
      Type:  enhancement    |       Status:  new    
  Priority:  normal         |    Milestone:         
 Component:  Cabal library  |      Version:  1.2.3.0
  Severity:  normal         |     Keywords:         
Difficulty:  normal         |   Ghcversion:  6.8.2  
  Platform:  Linux          |  
----------------------------+-----------------------------------------------
 GNU autoconf has these configure flags:

 {{{
 `--program-prefix=prefix'
     Specifies a prefix which should be added to the name of a program when
     installing it. For example, using `--program-prefix=g' when
 configuring
     a program normally named `tar' will cause the installed program to be
     named `gtar' instead.

 `--program-suffix=suffix'
     Specifies a suffix which should be appended to the name of a program
     when installing it.
 }}}

 This would be handy for appending program versions to allow installing
 multiple versions of the same program. For example:

 {{{
 cabal configure --program-prefix='$version'
 }}}

 So I can end up with `haddock-0.9` and `haddock-2.0.0.0` in my `~/bin`
 dir.

 Distros that use 'alternatives' systems might like to use this feature.

 This should be fairly easy to implement, as the prefix/suffix can be
 parsed and represented as a `PathTemplate`, which handles `$version` vars
 etc. The prefix/suffix would need to be propagated into the
 `LocalBuildInfo` (and probably var-substituted into an ordinary `String`
 at that point) and then used when generating the binary name.

 This would be particularly handy in combination with a cabal-install
 feature to symlink newly-installed versions of programs into an
 alternative directory. For example we might install versioned binaries
 into ~/.cabal/bin by default and symlink the latest into ~/bin. Or we
 might symlink versioned links to each version, and an unversioned link to
 the latest one that got installed. Anyway, there's room for exploration
 there as to the best default.

-- 
Ticket URL: <http://hackage.haskell.org/trac/hackage/ticket/208>
Hackage <http://haskell.org/cabal/>
Hackage: Cabal and related projects


More information about the cabal-devel mailing list