ssi-schaefer / lcdsl

Eclipse Launch Configuration DSL (Xtext based)
Eclipse Public License 1.0
23 stars 12 forks source link

just prerequisites are "interesting projects" for a builder #56

Closed haubi closed 2 years ago

haubi commented 2 years ago

Only the particular project's prerequisites are "interesting projects" for this project's Xtext builder. Otherwise, we would end with dependency circles causing needless auto build runs. As the ToBeBuiltComputer already does add the "referenced projects", there is nothing left to do for addInterestingProjects().

haubi commented 2 years ago

@szarnekow @jukzi Was there a real reason for every Xtext project in the workspace to be "interesting" to every Xtext project's Xtext builder?

jukzi commented 2 years ago

I guess the idea behind was that it should not be needed to explicitly define dependencies to other lcdsl projects. Is that still the case after this patch?

haubi commented 2 years ago

I guess the idea behind was that it should not be needed to explicitly define dependencies to other lcdsl projects. Is that still the case after this patch?

Well, this was not supported anyway before 1fdcefd011e067ae59651b144c89665a20118a1b I guess? Honestly, not specifying dependencies while possible does not feel like the right thing to do.

szarnekow commented 2 years ago

Indeed the resource for this change was that the projects with the lcdsl files were supposed to be free to refer to any kind of other lcdsl files. This was already implemented for projects in the workspace, but didn't work for projects from the target platform.

The interested projects are used to return the projects for which the eclipse.core.resources are providing delta information to this builder. I'm not even sure if these do have an impact on the build order.

haubi commented 2 years ago

The interested projects are used to return the projects for which the eclipse.core.resources are providing delta information to this builder. I'm not even sure if these do have an impact on the build order.

It's not about the build order, but the decision whether the builder has to be invoked again for a particular project.

Also, there is nothing "broken" as such, because after enough iterations the auto build settles down. The problem here because of these reverse "interests" in our huge application is the duration for the auto build to settle when launching some application, and especially when performing some development - on Linux:

Trying to explain what I have discovered while debugging why - right after the successful full build - the auto build needs to compile a lot:

Suppose there's projects A, B, C, having dependencies A <- B <- C.

What does happen during the full build is:

So, again, there's nothing "broken", but circular dependencies don't feel correct in general, and the repeated yet needless auto builds do cause massive developer frustration here, ending up with developers disabling the auto build.

szarnekow commented 2 years ago

Understandable. Reverting this should not cause any harm. This will be taken into account for the next iteration of the work to support lcdsl files coming from the target platform.