Week 4: A Long Week

by Kapil Kumar — on

cover-image

GSOC’17 Fourth Week: 19 June 2017- 25 June 2017

This week I started work on docker support on Windows platform. As CommandLineTool that implement a functionality like ShellCommandRequirement we would be using docker container for such Tools/workflows. There were little problems like geteuid is not available on windows which were passing to docker and some major problem like, when passing commands to docker all files and volume were as per windows path notation and these commands are executed by docker engine which run on a slim linux environment provided by docker-machine and thus expects unix-style paths. Moreover you can’t put : in your path as for some region docker-engine uses : to separate different parts of filepath. In first half I solved these problems.

Later we decided to run conformance-tests on Windows, so we choose Appveyor for this. On some research I found that you can configure multiple Appveyor projects pointing to same github repository. So another appveyor project cwltool-conformance-test was created with a custom appveyor file. On Jenkins we use run-tests.sh to run conformance tests which won’t run on windows so we used cwltest command line to run tests. Here is the conformance test report. One problem is that we can’t show two appveyor status report on github and either the cwltool unit test or conformance test will be visible. Issue raised regarding this is here and here.

On conformance tests one of the reason behind test failure was unsupported Non Blocking I/O read for windows by select module. I tried with msvcrt, pywin32 and gevent but read/write operations from stdin/stdout was not allowed. Finally I used threads to implement this as a subprocess would be too heavy. I wrote a SO answer if anyone else faces such situation. here is the PR

This week I would continue to work on docker support on windows.

Comments