icsharp
icsharp copied to clipboard
Add instructions regarding compiling using mono in Wiki
Running ICSharp under Linux has huge benefits! For me: Easy command line deployment and monitoring. Docker Images, so if we had a Docker Image for ICSharp, then we would be up and rolling on Jupyter with ICSharp kernel in 10 keystrokes and 10 minutes.
The good news is: it all works under Linux!! It is just not yet very easy to do it.
My notes are under: https://docs.google.com/document/d/1UMN7WFRQ43KrF1yWcjsMDNqD6NcRe2x5fL99v2aRdPk/edit?usp=sharing
I setup a dedicated new debian 7.8 server. If anyone wants to experiment there the next couple of weesk, then I will send around the security key one needs to login.
WHAT TO ADD TO ICSHARP Project> I would add a couple of shell scripts that allow building ICSharp on mono. I put them into the above document (Basically my how to do it document to help me going)
1, installmono.sh Since Mono in itself is not so easy to install as under Windows, and one can very easily end up with a non working or old system, I would add installmono.sh
- compileScriptCS.sh Even if I would never need it, I would always compile ScriptCS as a standalone project first. because if this does not work, then it will be way more difficutl to detect it in ICSharp
- build.sh It works. But only with a trick. The build.sh of ScriptCS in the Engine directory needs to be compiled first. This is because of a StyleCop reference issue in ScriptCS.Contracts. I guess that we need to contact ScriptCS maintainers to fix this longterm. But With my trick it works.
- intallkernel.sh Working on this right now.
@awb99 Wow, this is very useful. I think we should create a wiki and add this information there so that anybody can easily look up from there.
FYI, related pythonnet project has good support for both .NET and Mono:
https://github.com/pythonnet/pythonnet/tree/develop
perhaps the builds should end up as conda or pip binary packages?
@awb99 I've added build.sh for building mono in commit d09ff5f58eec430fbef1a7b48aac27edca9c85b7 . I've tested it only in mac, let me know if it doesn't work in linux
@denfromufa for packaging in *nix? I will create another issue for packaging for *nix.
I see that Travis supports building docker images. At least that is what I understand having looked briefly at the site.
I will start making a docker image. Then we have a full charge based jupyter engine that we can deploy at the click of a button literally anywhere. And this without risking of fucking up a production server or añ important machine in any way.
To me this would allow me to do some development in a big c# project. Then explore how they work in a jupyter environment. A sort of interactive unit test. Or Web based debugging of a large scale project .
I am not a docker expert so this could take a couple of weeks.
@zabirauf I installed everything on a new Debian machine which does nothing else then test icsharp. My plan is to make as detailes notes as possible what worked and what didnt. Get icsharp completely running. Run a few notebooks. And then kill the server and reinstall a blank new debian image and then install everything via a install script with no human intervention. When I am there I will give feedback of it works or does not work. Right now my focus is on fixing the remaining icsharp bugs to get it running.
@zabirauf II. Happy to change my article.and put it to a wiki. Let me know where. Perhaps it can all be done with the markdown syntax in a new Readme.Unix file ?
Quick comment on new build.sh file: thousands of errors like this: (dont yet know why)
p: omitting directory ./Kernel/bin/Release/build/jsonschema/jsonschema/tests' cp: will not overwrite just-created./build/Release/bin/init.py' with ./Kernel/bin/Release/build/jsonschema/jsonschema/tests/__init__.py' cp: will not overwrite just-created./build/Release/bin/compat.py' with ./Kernel/bin/Release/build/jsonschema/jsonschema/tests/compat.py' cp: will not overwrite just-created./build/Release/bin/Common.dll' with ./Kernel/bin/Release/Common.dll' cp: will not overwrite just-created./build/Release/bin/Common.dll.mdb' with ./Kernel/bin/Release/Common.dll.mdb' cp: will not overwrite just-created./build/Release/bin/Common.Logging.dll' with ./Kernel/bin/Release/Common.Logging.dll' cp: will not overwrite just-created./build/Release/bin/Newtonsoft.Json.dll' with ./Kernel/bin/Release/Newtonsoft.Json.dll' cp: will not overwrite just-created./build/Release/bin/iCSharp.Messages.dll' with ./Messages/bin/Release/iCSharp.Messages.dll' cp: will not overwrite just-created./build/Release/bin/iCSharp.Messages.dll.mdb' with ./Messages/bin/Release/iCSharp.Messages.dll.mdb' cp: will not overwrite just-created./build/Release/bin/Newtonsoft.Json.dll' with `./Messages/bin/Release/Newtonsoft.Json.dll'
The find command is the problem.
- It lists duplicates of the dlls: /usr/local/bin/myjupytertest/icsharp# find .//bin/Release/.dll ./Common/bin/Release/Common.dll ./Kernel/bin/Release/Common.dll I would only copy the dlls from the Kernel folder. All referred dlls are copied by the compilation there automatically.
- I am not quite sure which files you want to copy. I think it is sufficent if
only dlls are copied.
cp $(find .//bin/Release/.dll) ./build/Release/bin The cp currenlty copies py files from ZMQ and C files, tonos of TXT files.