
On Tue, Mar 12, 2013 at 3:10 PM, Tycho Andersen
On Tue, Mar 12, 2013 at 03:28:08PM -0400, Brandon Allbery wrote:
"cabal install" unpacks a package into /tmp in order to build it. My guess is your OS has /tmp mounted noexec. I don't know offhand how you override this in cabal.
Yep, you're exactly right. Thank you! I also couldn't figure out a way to override it.
I ran into this once. I suppose it’s a bit of a dirty workaround, but you can patch `Cabal` or `directory` to avoid this problem by either hard-coding a different path for temporary files. `System.Directory.getTemporaryDirectory` in the `directory` package has `/tmp` kind-of hardcoded in UNIX. Or you could hack the places where it’s used in `Cabal`. It’s used in these locations in the latest version: * `./Distribution/Simple/GHC.hs`, line 342 * `./Distribution/Simple/Utils.hs`, line473 * `./Distribution/Simple/Configure.hs`, line 945 * `./Distribution/Simple/LHC.hs`, line 203 I say it’s kind-of hardcoded because it actually seems to try taking the value of the environment variable `TMPDIR`, so you may be able to override that path quite simply by defining that in your environment. I have not tested this, though — I didn’t notice it when I faced this problem a few months ago. This, of course, would be the best solution.