Wiki source code of Running KEITH
Version 7.1 by Soeren Domroes on 2019/04/01 07:25
Hide last authors
author | version | line-number | content |
---|---|---|---|
![]() |
7.1 | 1 | = Running KEITH = |
![]() |
6.1 | 2 | |
![]() |
7.1 | 3 | |
4 | |||
![]() |
6.1 | 5 | {{toc/}} |
6 | |||
![]() |
5.1 | 7 | == Setting up your eclipse == |
![]() |
1.1 | 8 | |
![]() |
5.1 | 9 | For everything not mentioned here refer to [[Configuring Eclipse>>doc:KIELER.Configuring Eclipse||shape="rect"]] guide. |
![]() |
1.1 | 10 | |
![]() |
5.1 | 11 | Use the installer go to advanced mode, add the KIELER url. Then select first pragmatics and after that semantics (that is very important). |
![]() |
1.1 | 12 | |
![]() |
5.1 | 13 | Select the Theia stream for semantics and the Keith stream for pragmatics and use the latest eclipse if possible. Set the targetplatform to photon and finish. |
![]() |
1.1 | 14 | |
![]() |
5.1 | 15 | Wait till everything installs and the setup tasks finish. If you have any problems in this stage refer to the [[Configuring Eclipse>>doc:KIELER.Configuring Eclipse||shape="rect"]] guide. |
![]() |
1.1 | 16 | |
![]() |
5.1 | 17 | \\ |
![]() |
1.1 | 18 | |
![]() |
5.1 | 19 | The setup tasks for Modular Target will fail. Disable it after this happens and execute them again via //Help>Perform Setup Tasks//. Run //clean build//. Several pragmatics projects have error. Just close them and you will be fine. |
![]() |
1.1 | 20 | |
![]() |
5.1 | 21 | To run the language server go to //Run Configurations// create a new //eclipse application// run configuration and select //Run an application// and //de.cau.cs.kieler.language.server.LanguageServer// |
![]() |
1.1 | 22 | |
![]() |
5.1 | 23 | == [[image:attach:Screenshot from 2019-02-15 14-10-50.png]] == |
![]() |
1.1 | 24 | |
![]() |
5.1 | 25 | \\ |
![]() |
1.1 | 26 | |
![]() |
5.1 | 27 | You have to edit the arguments too. The Vm arguments host and port are added to connect the LS via socket. |
![]() |
1.1 | 28 | |
![]() |
5.1 | 29 | [[image:attach:Screenshot from 2019-02-15 14-13-34.png]] |
![]() |
1.1 | 30 | |
![]() |
5.1 | 31 | The default port to which KEITH tries to connect is 5007. |
![]() |
1.1 | 32 | |
33 | == Setting up a KEITH developer setup... == | ||
34 | |||
35 | General requirements: | ||
36 | |||
37 | * node | ||
38 | * npm (whatever node installs) | ||
39 | * yarn (latest version) | ||
40 | * Python (2.7.X) | ||
41 | * gcc, g++, and make (for native dependencies of some npm packages) | ||
42 | * [[Visual Studio Code>>url:https://code.visualstudio.com/||shape="rect"]] (latest version) | ||
43 | * a cloned [[keith >>url:https://git.rtsys.informatik.uni-kiel.de/projects/KIELER/repos/keith/browse||shape="rect"]]repository | ||
44 | |||
45 | == ... on linux: == | ||
46 | |||
47 | (Theia has a [[guide >>url:https://www.theia-ide.org/doc/authoring_extensions||shape="rect"]]for extension development that might be helpful) | ||
48 | |||
49 | install node 8: | ||
50 | |||
51 | {{code}} | ||
52 | curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash | ||
53 | nvm install 8 | ||
54 | {{/code}} | ||
55 | |||
56 | Install python if you haven't (remember: Python 2: , Python 3: ). | ||
57 | |||
58 | {{code language="none"}} | ||
59 | Install yarn (a package manager build on the package manager npm): | ||
60 | {{/code}} | ||
61 | |||
62 | {{{}}} | ||
63 | |||
64 | \\ | ||
65 | |||
66 | {{code}} | ||
67 | npm install -g yarn | ||
68 | {{/code}} | ||
69 | |||
70 | \\ | ||
71 | |||
72 | == ... on windows: == | ||
73 | |||
74 | Install [[node 8>>url:https://nodejs.org/download/release/v8.15.0/||shape="rect"]] for windows. I personally used the {{code language="none"}}.msi{{/code}}. | ||
75 | |||
76 | Use that to install windows-build-tools: | ||
77 | |||
78 | {{code}} | ||
79 | npm install -g windows-build-tools | ||
80 | {{/code}} | ||
81 | |||
82 | This installs make, gcc, g++, python and all this (I am not sure about yarn, anyway you can always install yarn the same way as in the linux description) | ||
83 | |||
84 | == ... on mac: == | ||
85 | |||
86 | Get a package manager, something like [[brew>>url:https://brew.sh/index_de||shape="rect"]]. | ||
87 | |||
88 | Use brew to install all necessary stuff. | ||
89 | |||
90 | Apparently there is an issue with xcode-select: [[Theia developers>>url:https://github.com/theia-ide/theia/blob/master/doc/Developing.md||shape="rect"]] recommend the following: | ||
91 | |||
92 | {{code}} | ||
93 | xcode-select --install | ||
94 | {{/code}} | ||
95 | |||
![]() |
5.1 | 96 | After doing this for your OS all that is missing is running KEITH (in developer setup) and setting up your eclipse for language server development). |
![]() |
1.1 | 97 | |
![]() |
5.1 | 98 | = Stuff that may help = |
![]() |
1.1 | 99 | |
![]() |
5.1 | 100 | == Running the already build LS == |
![]() |
1.1 | 101 | |
![]() |
5.1 | 102 | Go to the latest [[Bamboo build>>url:https://rtsys.informatik.uni-kiel.de/bamboo/browse/KISEMA-NSI||shape="rect"]] and go to Artifacts. |
![]() |
1.1 | 103 | |
![]() |
5.1 | 104 | [[image:attach:image2019-2-7_17-46-58.png]] |
![]() |
1.1 | 105 | |
![]() |
5.1 | 106 | Select Language Server Zip and download the LS and unpack it somewhere. |
107 | |||
108 | Locate the kieler.ini file. Depending on the OS it has a different location (linux; toplevel, windows, toplevel, mac: Content/Eclipse/kieler.ini) | ||
109 | |||
110 | Paste the following at the beginning of the ini-file: | ||
111 | |||
![]() |
1.1 | 112 | {{code language="bash"}} |
![]() |
5.1 | 113 | -application |
114 | de.cau.cs.kieler.language.server.LanguageServer | ||
115 | -noSplash | ||
![]() |
1.1 | 116 | {{/code}} |
117 | |||
![]() |
5.1 | 118 | Since an eclipse application is built, this is needed to start the LS without a splashscreen. |
![]() |
1.1 | 119 | |
![]() |
5.1 | 120 | If you want to connect that LS via socket to your Theia application (KEITH) add the following to the vmargs: |
![]() |
3.1 | 121 | |
![]() |
5.1 | 122 | {{code}} |
123 | -Dport=5007 | ||
124 | {{/code}} | ||
![]() |
1.1 | 125 | |
![]() |
5.1 | 126 | 5007 is the standard port KEITH is currently connecting to in socket mode. You can find this port in your Theia application at the following location: |
![]() |
1.1 | 127 | |
![]() |
5.1 | 128 | Assume you are in the [[keith >>url:https://git.rtsys.informatik.uni-kiel.de/projects/KIELER/repos/keith/browse||shape="rect"]]repository. Go to {{code language="none"}}keith-app{{/code}}, you should see something like this: |
![]() |
1.1 | 129 | |
![]() |
5.1 | 130 | [[image:attach:image2019-2-7_17-58-22.png]] |
![]() |
1.1 | 131 | |
![]() |
5.1 | 132 | Open the {{code language="none"}}package.json{{/code}}. In the{{code language="none"}} package.json{{/code}} are several scripts defined. |
![]() |
3.1 | 133 | |
![]() |
5.1 | 134 | [[image:attach:image2019-2-7_18-0-7.png]] |
![]() |
1.1 | 135 | |
![]() |
5.1 | 136 | The {{code language="none"}}LSP_PORT{{/code}} option is used to activate the connection via socket. It is also possible to specify a relative location to a LS via {{code language="none"}}LS_PATH=<path to LS>{{/code}}. |
![]() |
3.1 | 137 | |
![]() |
5.1 | 138 | You can also set these options for an already build [[keith electron app>>url:http://rtsys.informatik.uni-kiel.de/~~kieler/files/nightly/sccharts-integration/||shape="rect"]]. |
![]() |
3.1 | 139 | |
![]() |
1.1 | 140 | \\ |
141 | |||
![]() |
5.1 | 142 | == How run KEITH in developer setup (socket) == |
![]() |
3.1 | 143 | |
![]() |
5.1 | 144 | Run the following to build and run KEITH in its developer setup (in socket mode, so the LS has to be started separately) |
![]() |
3.1 | 145 | |
![]() |
5.1 | 146 | {{code language="bash"}} |
147 | yarn && cd keith-app && yarn run socket | ||
148 | {{/code}} | ||
149 | |||
150 | Per default the KEITH opens on localhost:3000. | ||
151 | |||
152 | It is required to restart the language server if KEITH is restarted, since the diagram view has a problem (since theia-sprotty is used) to reconnect after that. | ||
![]() |
7.1 | 153 | |
154 | = Developing for KEITH = | ||
155 | |||
156 | == Register an extension (on server side) == | ||
157 | |||
158 | == Register an extension (on client side) == | ||
159 | |||
160 | == How to send messages == | ||
161 | |||
162 | == How to write a widget == |