cling icon indicating copy to clipboard operation
cling copied to clipboard

Cling continuous integration pipeline for windows...

Open tapika opened this issue 5 years ago • 3 comments

Hi !

Has anyone tried to set up continuous build pipeline for windows ? I would prefer to use vs2019, but vs2017 will do as well. What I have initially checked - .travis.yml of cling does not have "os: windows", also tried to check whether there exists any clang continuous build chains, found one here: https://github.com/vovkos/llvm-package-travis

but it also does not have any "os: windows".

I find out that in theory it's possible to support windows & vs2019, see https://github.com/offscale/liboffkv/tree/ci-windows

(ci-windows branch),

but .travis.yml is configured there only for windows - to my best understanding commands being executed needs to be platform neutral / independent, and mixing multiple platforms in same yaml config file is not possible. (Correct me if I'm wrong now).

What I have tested by myself - some cling projects does not compile out of box on windows (linkage differences between os's), and to compile whole llvm + clang + cling takes huge amount of disk space (~ 65 Gb) - I would prefer to take .lib/.exe/.dll/.pdb as precompiled at least for clang for different types of builds.

If however I want to go deeper into source code, I think it should be possible to take latest build from git and be sure that it works 100%, which in a turn means that continuous build pipeline needs to be set up.

Have you analyzed any deeper what setting up this pipeline would mean in practice ?

tapika avatar Sep 07 '19 08:09 tapika

And by reading this article:

https://blog.esciencecenter.nl/travis-caching-and-incremental-builds-6518b89ee889

I've realized I knew nothing about subject.

But using bash shell script is indeed possible, and in windows we do have tortoise bash script, but somehow I've decided to use python - code syntax is more or less the same, but slightly simpler.

Compiler cache is indeed possible to use, but for windows there exists only this code https://github.com/frerich/clcache - and I was not entirely sure will it work or not.

Also noticed that you have in ccache statistics some misses, so suspect something is still triggering those compilation even thus nothing has changed.

I've performed multiple git clone's and set timestamps of each file.

So far I was building using only one core, in later version managed to upgrade to multicore (2) build, and specified more focused target - cling.

Still waiting for build results, will also retry them after timeout.

But here is whole git repository (targeted for cling & clang compilation), should be compatible with linux and windows.

https://github.com/tapika/test_travis_ci

Would it be possible to copy some of ideas into potential windows build environment ?

tapika avatar Sep 19 '19 15:09 tapika

The disk space is huge "only" for debug builds.

We'd be happy to receive a contribution here to improve the Windows CI part. (We have it running outside of Travis; github is only part of our Q&A infra.)

Axel-Naumann avatar Sep 23 '19 12:09 Axel-Naumann

Do you need any help on integrating my changes, or you can just take them ?

My initial idea is that python could be just intermediate helper for clang / cling, for longer term target me/we/someone should target to python replacement - so everything what is needed by build is performed by c++ code, preferably cling scripts.

I have one item which I have raised to travis ci team: https://travis-ci.community/t/no-output-has-been-received-in-the-last-10m0s-while-trying-to-restore-cache/5153

But not sure how they will react on this one.

tapika avatar Sep 23 '19 13:09 tapika