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.