ldc-developers / ldc

The LLVM-based D Compiler.
http://wiki.dlang.org/LDC
Other
1.21k stars 262 forks source link

Test dlang/phobos with LDC #1686

Open wilzbach opened 8 years ago

wilzbach commented 8 years ago

As you all know contributors at Phobos silently broke LDC by checking in new, fancy changes. Now that we have an easy to adapt CI in place, we should be able to tackle this problem and warn the reviewers. Doing this is simply one more job in the queue and I think no one will bother if it doesn't break all the time, so the crucial thing here is to get it right from the beginning, s.t. people don't complain.

I have played a bit around with your build setup and everything seems straight-forward, except for the most-important bit: merging dlang/phobos with ldc-developers/phobos

Why is this so problematic? With "342 commits ahead" merge conflict arise pretty quickly (with master there are currently five files conflicting) and a CI can't auto-resolve those conflicts intelligently.

So imho the only way we can make this happen is cutting down all the modifications and in the best case moving all modifications over to dlang/phobos and dropping the repo.

What's your opinion on this?

For the time being we could also just run the LDC test-suite at Phobos, but always return 0 and send a message to a mailing list. However I am not sure whether that's worth it then :7

dnadlinger commented 8 years ago

We need to finally take the plunge and push for automatic frontend merges first in either case. Phobos generally requires the latest frontend.

dnadlinger commented 8 years ago

As fas as Phobos in particular goes: 342 commits sounds much worse than the situation actually is, since our fork has existed for quite some time. The actual diff is quite manageable, and mostly consist of back-ported upstream fixed that are absolutely required for LDC, and some code for platforms not supported upstream.

Ideally, we'd just include the upstream repository as a submodule. The first barrier is of course to get commit access for all the all the LDC devs, etc. But working that situation out would only get us to having an LDC branch in dlang/phobos. Directly using master is illusionary as long as the projects aren't completely in sync.

wilzbach commented 8 years ago

We need to finally take the plunge and push for automatic frontend merges first in either case. Phobos generally requires the latest frontend.

Hmm I looked at Phobos first, because DMD is a lot more active and likely to break LDC. How do you envision automatic merges? I think the same point as above applies: if it errors too often (like Travis), Walter will probably either ignore it or turn it off completely.

Ideally, we'd just include the upstream repository as a submodule.

:+1:

The first barrier is of course to get commit access for all the all the LDC devs, etc.

Chances are good that this isn't going to happen soon, but I think for now we should raise the awareness of LDC (and the complications) slowly. Two weeks ago Walter wrote on a DMD PR that he thought LDC and GDC are already automatically tested with Travis, so we need to bridge this gap first.

As fas as Phobos in particular goes: 342 commits sounds much worse than the situation actually is, since our fork has existed for quite some time. The actual diff is quite manageable, and mostly consist of back-ported upstream fixed that are absolutely required for LDC, and some code for platforms not supported upstream.

How are your chances of getting all those compatibility fixes into upstream? I presume you have already tried this? (the PRs I have seen weren't rejected, but just got stalled)

But working that situation out would only get us to having an LDC branch in dlang/phobos. Directly using master is illusionary as long as the projects aren't completely in sync.

I think even a LDC branch in dlang/phobos is illusionary atm, the only thing that's realistic for now would be dlang/ldc, dlang/druntime-ldc, dlang/phobos-ldc, but considering that DMD usually already exceeds the free quota for Travis, I am not sure anymore whether it's worth it.

wilzbach commented 7 years ago

We need to finally take the plunge and push for automatic frontend merges first in either case. Phobos generally requires the latest frontend.

Yeah and any solution would need need to be enabled for all three repos. How could I help to make this happen?

https://github.com/Dicebot/dlangci https://github.com/dlang-test/phobos/blob/master/Jenkinsfile https://github.com/Dicebot/dlangci/blob/7f11c4284f0623412e3287f4446d0d785dab7fef/pipeline.groovy

The first barrier is of course to get commit access for all the all the LDC devs, etc.

Since PRs at Phobos now required require a review and passing CI, I think gaining "commit access" should be a lot easier as it's rather "approval rights". If someone requires it, he/she should ping Andrei and ask him (he doesn't bite!).