summaryrefslogtreecommitdiff
path: root/iserv/src
Commit message (Collapse)AuthorAgeFilesLines
* Move `iserv` into `utils` and change package name from `iserv-bin` to `iserv`Moritz Angermann2018-06-075-343/+0
| | | | | | | | | | | | | | | | | | This is done for consistency. We usually call the package file the same name the folder has. The move into `utils` is done so that we can move the library into `libraries/iserv` and the proxy into `utils/iserv-proxy` and then break the `iserv.cabal` apart. This will make building the cross compiler with TH simpler, because we can build the library and proxy as separate packages. Test Plan: ./validate Reviewers: bgamari, goldfire, erikd Reviewed By: bgamari Subscribers: rwbarton, thomie, carter Differential Revision: https://phabricator.haskell.org/D4436
* Revert "Move `iserv` into `utils` and change package nameBen Gamari2018-02-205-0/+343
| | | | | | See Phab:D4377 for the rationale. We will try this again. This reverts commit 7c173b9043f7a9a5da46c5b0cc5fc3b38d1a7019.
* Move `iserv` into `utils` and change package name from `iserv-bin` to `iserv`Moritz Angermann2018-02-155-343/+0
| | | | | | | | | | | | | | | | This is done for consistency. We usually call the package file the same name the folder has. The move into `utils` is done so that we can move the library into `libraries/iserv` and the proxy into `utils/iserv-proxy` and then break the `iserv.cabal` apart. This will make building the cross compiler with TH simpler, because we can build the library and proxy as separate packages. Reviewers: bgamari, simonmar, goldfire, erikd Reviewed By: simonmar Subscribers: tdammers, rwbarton, thomie, carter Differential Revision: https://phabricator.haskell.org/D4377
* Typo in output of remote slave startup [merge cand]Gabor Greif2017-06-061-1/+1
| | | | | | | | | The output is not being checked in the test suite. However other tools may check it for obtaining the status of the remote slave. So I'd suggest to merge this to 8.2 branch, in order to not fragment the tooling's checks.
* [iserv] move forkIOMoritz Angermann2017-06-021-4/+6
| | | | | | | | | | | | | | This moves the forkIO into the `startSlave` function from the `startSlave'` function, such that this allows consumers to call `forkSlave'` if they want the blocking behaviour. Reviewers: bgamari, austin Reviewed By: bgamari Subscribers: Ericson2314, ryantrinkle, rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D3601
* Typos [ci skip]Gabor Greif2017-05-121-1/+1
|
* [iserv] fix loadDLLMoritz Angermann2017-05-111-11/+30
| | | | | | | | | | | | | | | | When we load non absolute pathed .so's this usually implies that we expect the system to have them in place already, and hence we should not need to ship them. Without the absolute path to the library, we are also unable to open and send said library. Thus we'll do library shipping only for libraries with absolute paths. Reviewers: austin, bgamari, simonmar Reviewed By: simonmar Subscribers: simonmar, rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D3469
* [iserv] drop cryptonite dependency.Moritz Angermann2017-04-172-16/+7
| | | | | | | | | | Reviewers: bgamari, austin Reviewed By: bgamari Subscribers: rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D3462
* Enter iserv-proxyMoritz Angermann2017-04-104-63/+250
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With the introduction of -fexternal-interpreter we are now able to compile template haskell via an extern iserv process. This however is restricted to the same host, and can therefore not be used with crosscompilers where the iserv slave process needs to run on a different machine than the cross compiling haskell compiler. This diff breaks up iserv into a library and the iserv-bin binary. It also introduces the iserv-proxy, a proxy instance that the haskell compiler can talk to, and which forwards the calls to the iserv slave on a different machine, as well as providing some extra functionarily (sending files that are not available on the machine the slave runs on), as well as forwarding from the slave to the haskell compiler, when the slave needs to interrogate the haskell compiler. The iserv library now also exports the startSlave function to be called by the application that implements the slave on the target. The simplest such app would probably look something like: ``` extern void startServ(bool, const char *); int main(int argc, char * argv[]) { hs_init(NULL, NULL); startServ(false,"/tmp"); while(1); } ``` Special thanks to Shea Levy for the first draft of the iserv-remote, from which I took some inspiration. The `Buildable` flags are due to ghc-cabal not being able to build more than a single target. Please note that only the stock iserv-bin is supposed to be built *with* ghc. The library and proxy are supposed to be built outside of ghc. Yet I believe that this code should live together with iserv. Reviewers: simonmar, ezyang, goldfire, austin, rwbarton, bgamari Reviewed By: simonmar Subscribers: luite, ryantrinkle, shlevy, thomie Differential Revision: https://phabricator.haskell.org/D3233
* iserv: Show usage message on argument parse failureBen Gamari2016-08-311-4/+22
| | | | | | | | | | | | | | Test Plan: validate Reviewers: simonmar, erikd, austin Reviewed By: simonmar, erikd Subscribers: thomie, erikd Differential Revision: https://phabricator.haskell.org/D2494 GHC Trac Issues: #12491
* Have addModFinalizer expose the local type environment.Facundo Domínguez2016-07-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | Summary: This annotates the splice point with 'HsSpliced ref e' where 'e' is the result of the splice. 'ref' is a reference that the typechecker will fill with the local type environment. The finalizer then reads the ref and uses the local type environment, which causes 'reify' to find local variables when run in the finalizer. Test Plan: ./validate Reviewers: simonpj, simonmar, bgamari, austin, goldfire Reviewed By: goldfire Subscribers: simonmar, thomie, mboes Differential Revision: https://phabricator.haskell.org/D2286 GHC Trac Issues: #11832
* Remote GHCi: comments onlySimon Marlow2016-06-241-0/+11
| | | | | | | | | | | | Summary: Add more Notes and signposts across the codebase to help navigation. Test Plan: validate Reviewers: goldfire, simonpj, austin, ezyang, hvr, bgamari, erikd Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2358
* Remote GHCi: separate out message typesSimon Marlow2016-06-241-8/+4
| | | | | | | | | | | | | | | | | Summary: From a suggestion by @goldfire: clean up the message types, so that rather than one Message type with all the messages, we have a separate THMessage type for messages sent back to GHC during TH execution. At the same time I also removed the QDone/QFailed/QException messages into their own type, and made the result type of RunTH more accurate. Test Plan: validate Reviewers: goldfire, ezyang, austin, niteria, bgamari, erikd Subscribers: thomie, goldfire Differential Revision: https://phabricator.haskell.org/D2356
* Enable RemoteGHCi on WindowsTamar Christina2016-01-272-0/+119
Makes the needed changes to make RemoteGHCi work on Windows. The approach passes OS Handles areound instead of the Posix Fd as on Linux. The reason is that I could not find any real documentation about the behaviour of Windows w.r.t inheritance and Posix FDs. The implementation with Fd did not seem to be able to find the Fd in the child process. Instead I'm using the much better documented approach of passing inheriting handles. This requires a small modification to the `process` library. https://github.com/haskell/process/pull/52 Test Plan: ./validate On Windows x86_64 Reviewers: thomie, erikd, bgamari, simonmar, austin, hvr Reviewed By: simonmar Subscribers: #ghc_windows_task_force Differential Revision: https://phabricator.haskell.org/D1836 GHC Trac Issues: #11100