
#555: mandir is totally busted (wrong, and ignores --destdir)? ----------------------------+----------------------------------------------- Reporter: guest | Owner: Type: defect | Status: new Priority: normal | Milestone: Component: Cabal library | Version: 1.6.0.1 Severity: normal | Resolution: Keywords: mandir | Difficulty: unknown Ghcversion: 6.10.1 | Platform: Linux ----------------------------+----------------------------------------------- Old description:
Consider the following transcript. Why is Cabal ignoring --destdir, and why does mandir default to \$prefix/share/doc/foo-1 instead of \$prefix/share/man?
$ darcs get http://twb.ath.cx/tmp/tinc Finished getting. $ darcs check --test --repo tinc [...] + ./Setup copy --verbose --destdir=/tmp [...] Creating /usr/local/share/doc/foo-1/man1 (and its parents) Setup: /usr/local/share/doc: createDirectory: permission denied (Permission denied) Test failed!
In case my dummy repo goes away, it is quite simple:
== Setup.hs == import Distribution.Simple import Distribution.Simple.LocalBuildInfo import Distribution.Simple.Setup import Distribution.Simple.Utils import System.FilePath
{- Copy ./Setup.hs into $mandir/man1. $mandir *ought* to be $destdir/share/man. It sure as shit shouldn't be /usr/local if I set --destdir=/tmp, and it shouldn't be $destdir/share/doc/$package/man. -} main :: IO () main = defaultMainWithHooks simpleUserHooks { postCopy = \ _ flags pkg lbi -> copyFiles (fromFlag $ copyVerbosity flags) (mandir (absoluteInstallDirs pkg lbi NoCopyDest) > "man1") [(".", "Setup.hs")]} == foo.cabal == Name: foo version: 1 Build-Type: Custom Cabal-Version: >= 1.6
Executable Setup main-is: Setup.hs build-depends: base, filepath, Cabal changepref test
== test == set -ex; ghc -Wall --make Setup; ./Setup configure; ./Setup build; ./Setup copy --verbose --destdir=/tmp
New description: Consider the following transcript. Why is Cabal ignoring --destdir, and why does mandir default to \$prefix/share/doc/foo-1 instead of \$prefix/share/man? {{{ $ darcs get http://twb.ath.cx/tmp/tinc Finished getting. $ darcs check --test --repo tinc [...] + ./Setup copy --verbose --destdir=/tmp [...] Creating /usr/local/share/doc/foo-1/man1 (and its parents) Setup: /usr/local/share/doc: createDirectory: permission denied (Permission denied) Test failed! }}} In case my dummy repo goes away, it is quite simple: {{{ == Setup.hs == import Distribution.Simple import Distribution.Simple.LocalBuildInfo import Distribution.Simple.Setup import Distribution.Simple.Utils import System.FilePath {- Copy ./Setup.hs into $mandir/man1. $mandir *ought* to be $destdir/share/man. It sure as shit shouldn't be /usr/local if I set --destdir=/tmp, and it shouldn't be $destdir/share/doc/$package/man. -} main :: IO () main = defaultMainWithHooks simpleUserHooks { postCopy = \ _ flags pkg lbi -> copyFiles (fromFlag $ copyVerbosity flags) (mandir (absoluteInstallDirs pkg lbi NoCopyDest) > "man1") [(".", "Setup.hs")]} == foo.cabal == Name: foo version: 1 Build-Type: Custom Cabal-Version: >= 1.6 Executable Setup main-is: Setup.hs build-depends: base, filepath, Cabal changepref test == test == set -ex; ghc -Wall --make Setup; ./Setup configure; ./Setup build; ./Setup copy --verbose --destdir=/tmp }}} -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/555#comment:1 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects