Commit Graph

1443 Commits

Author SHA1 Message Date
Daniel Gröber
82bb0090c0 Refactoring to use cabal-helper-wrapper
This turned out to be quite involved but save for this huge commit it's
actually quite awesome and squashes quite a few bugs and nasty
problems (hopefully). Most importantly we now have native cabal
component support without the user having to do anything to get it!

To do this we traverse imports starting from each component's
entrypoints (library modules or Main source file for executables) and
use this information to find which component's options each module will
build with. Under the assumption that these modules have to build with
every component they're used in we can now just pick one.

Quite a few internal assumptions have been invalidated by this
change. Most importantly the runGhcModT* family of cuntions now change
the current working directory to `cradleRootDir`.
2015-03-05 17:35:24 +01:00
Daniel Gröber
7438539ca5 Change primary license to AGPL-3 2015-03-03 21:09:18 +01:00
Daniel Gröber
52e3233f44 Introducing cabal-helper-wrapper
The idea here is to build cabal-helper with whatever version of Cabal
the user happens to be using (which we find by looking at
dist/setup-config) at runtime.

This way we can support literally any version of Cabal as long as the
actual cabal-helper still compiles.

I tried to only use interfaces in Cabal that have been there since at
least 1.16 so I'm hoping this shouldn't break too much.
2015-03-03 21:06:58 +01:00
Daniel Gröber
48563a435e Use crazy TemplateHaskell magic for Setup.hs backwards compatibility 2015-03-01 05:03:04 +01:00
Daniel Gröber
ef96b926c7 Use cabal-helper to support Cabal >= 1.22 with any version of ghc 2015-02-08 12:43:35 +01:00
Daniel Gröber
844bdea3db Move symbolCache to PathsAndFiles 2015-02-08 12:43:35 +01:00
Daniel Gröber
1c5a1c8b3e Add util function for finding libexec binaries 2015-02-08 12:43:35 +01:00
Daniel Gröber
405b814726 Add cabal-helper for decoding Cabal-1.22 setup-configs
.. without having to worry about Cabal version conflicts
2015-02-08 12:43:35 +01:00
Daniel Gröber
471a3ec358 Fix ghc-7.4 2015-02-08 12:43:35 +01:00
Daniel Gröber
36ed081d54 Bring test suite up to date 2015-02-08 12:43:35 +01:00
Daniel Gröber
417cacbf81 Fix finding sandbox in sandbox only projects 2015-02-08 12:43:35 +01:00
Daniel Gröber
11562b4fe7 Cleanup cabal file using extentions 2015-02-08 12:43:35 +01:00
Daniel Gröber
bc476649ed Add support for some crazy X-* fields to Setup.hs
X-Install-Target:
    Since cabal doesn't have builtin support for installing executables
    to locations other than $bindir yet this allows me to install stuff
    into $libexec or any other directory.

X-Build-Depends-Like:
    Duplicating the dependencies of the main library for every test
    suite is getting annoying this allows me to copy the final resolved
    external dependencies of a component.
2015-02-08 12:43:35 +01:00
Daniel Gröber
2b4fd77c28 Add GHC-7.10 support 2015-02-08 12:43:35 +01:00
Daniel Gröber
27c1eb1eb3 Add custom Setup.hs code to warn users about unsupported environments 2015-02-08 12:43:35 +01:00
Daniel Gröber
45d6b7d67a Guess right sandbox pkg-db path on ghc version mismatch
If cabal.sandbox.config contains a "package-db:" declaration with the
wrong path and only the ghc version is wrong, for example:

```
package-db: <DIR>/.cabal-sandbox/x86_64-linux-ghc-7.8.3-packages.conf.d
```

Even though the user is using 7.10.0.20141222 `cabal repl` will correct
this and pass

```
-package-db <DIR>/.cabal-sandbox/x86_64-linux-ghc-7.10.0.20141222-packages.conf.d
```

to ghci, so obviously Cabal/cabal-install is doing some magic.

Conflicts:
	Language/Haskell/GhcMod/PathsAndFiles.hs
2015-02-08 12:43:25 +01:00
Daniel Gröber
0eaa3d23d8 Fix documentation for root command 2015-02-07 15:22:10 +01:00
Daniel Gröber
129fe92de2 Improve error reporting for invalid command line arguments 2015-02-07 15:22:10 +01:00
Daniel Gröber
ce61f38f4d Remove a bunch of dead code 2015-01-03 00:36:12 +01:00
Daniel Gröber
f5ab347c03 Add bump.sh script to master branch too 2014-12-31 22:57:53 +01:00
Daniel Gröber
76180ca73a "modules" command was missing from ghc-mod usage 2014-12-24 22:35:21 +01:00
klapaucius
fc7ce47e93 fix for varid bug in showExports & processExports 2014-12-24 22:17:36 +01:00
Dimitri 'phaazon' Sabadie
f023f4fc06 Fixed #422. 2014-12-24 22:12:36 +01:00
Daniel Gröber
782f234981 Fix ghc-mod tempdirs not being removed on exit 2014-12-24 21:34:57 +01:00
Daniel Gröber
80e826a199 Prefix ghc-mod tmpdirs with "ghc-mod" 2014-12-24 21:34:39 +01:00
Daniel Gröber
6e6c0d99e2 Add installation note about Nix 2014-12-16 21:34:04 +01:00
Kazu Yamamoto
af7b910394 Merge pull request #409 from iquiw/master
Update extract module regexp for unicode quotes
2014-12-01 11:48:42 +09:00
Kazu Yamamoto
bf085ce8f1 Yet another fix for #405. 2014-12-01 11:44:39 +09:00
Kazu Yamamoto
fb2dc5fca5 Fixing a race (#405). 2014-11-29 12:57:23 +09:00
Iku Iwasa
3a88db6c2b Update extract module regexp for unicode quotes
GHC-7.8.x uses U+2018 and U+2019 for quotes.

Also do not call ghc-resolve-document-path if module cannot be extracted
in case of local functions.
2014-11-29 12:11:06 +09:00
Kazu Yamamoto
e487a366d8 Merge pull request #408 from iquiw/master
Remove timeout from loop in ghc-sync-process
2014-11-27 10:25:48 +09:00
Iku Iwasa
7c4765bdef Remove timeout from loop in ghc-sync-process
This fixes the possibility that ghc-process-running was left non-nil
after timeout.
Quit still can abort the loop.
2014-11-26 23:34:20 +09:00
Kazu Yamamoto
44a38782d8 Avoid use of discard-input. Fix #405. 2014-11-19 09:09:10 +09:00
Kazu Yamamoto
4f768a8bdf adding docs in the piki format. 2014-11-19 09:07:34 +09:00
Daniel Gröber
dbd94c4765 Revert ""expand" specifies "-b"."
No idea what this was supposed to do, there's no mention of
any -b option anywhere that I can find.

This reverts commit f23b0db4df.
2014-11-03 00:45:56 +01:00
Daniel Gröber
9a8a3651d0 Fix findCabalFile 2014-11-03 00:45:27 +01:00
Daniel Gröber
506cf18885 Don't use fromJust 2014-11-03 00:33:23 +01:00
Rob Everest
56cc237e26 Support where clauses, let bindings and case expressions in case splitting (fixes #395) 2014-11-03 00:15:12 +01:00
Daniel Gröber
833d9ce058 $HOME/.cabal is not a cabal file 2014-11-03 00:04:15 +01:00
Daniel Gröber
94a60350c8 docs 2014-11-02 21:43:49 +01:00
Daniel Gröber
0cdbcb247b Fix warning 2014-11-02 19:27:57 +01:00
Daniel Gröber
2af3383fad Really fix newTempDir on Windows 2014-11-02 19:02:05 +01:00
Daniel Gröber
37af8e368d Refactoring World, etc. and fix #387 2014-11-02 01:19:27 +01:00
Daniel Gröber
14ee81e300 Allow GhcModError as an Exception and catch it in GhcModT's liftIO 2014-10-31 22:23:48 +01:00
Daniel Gröber
f55c264d67 Set version to "0" in master 2014-10-31 12:45:16 +01:00
Daniel Gröber
1797a53800 Fix newTempDir on Windows 2014-10-31 12:42:03 +01:00
Daniel Gröber
ff75811a76 Start migrating ghc-modi code to src/GHCMod.hs 2014-10-30 01:11:10 +01:00
Daniel Gröber
34dd9de83c Add Show instance for Options 2014-10-30 01:11:10 +01:00
Daniel Gröber
9ac128aa6f Fix #387, Pattern match failure in GhcPkg 2014-10-30 01:10:56 +01:00
Daniel Gröber
dbe66cbaa3 Fix #386, ghc-mod version should not check cabal configure 2014-10-20 22:33:58 +02:00