Bug 331031 - Build should use new Platform build configurations
Summary: Build should use new Platform build configurations
Status: NEW
Alias: None
Product: CDT
Classification: Tools
Component: cdt-build (show other bugs)
Version: 8.0   Edit
Hardware: PC All
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: cdt-build-inbox@eclipse.org CLA
QA Contact: Jonah Graham CLA
URL:
Whiteboard:
Keywords:
Depends on: 330197
Blocks: 309769 331027 333992
  Show dependency tree
 
Reported: 2010-11-24 10:31 EST by James Blackburn CLA
Modified: 2020-09-04 15:19 EDT (History)
13 users (show)

See Also:


Attachments
wip 1 (225.80 KB, patch)
2011-05-30 12:43 EDT, James Blackburn CLA
jamesblackburn+eclipse: iplog-
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description James Blackburn CLA 2010-11-24 10:31:42 EST
For CDT 8 we will configure the platform build configurations (to match CDT build configurations) and use the delta from them to optimise multi-configuration managed build.
Comment 1 James Blackburn CLA 2011-05-30 12:43:11 EDT
Created attachment 196920 [details]
wip 1

This is first cut patch extracted from our build and rebased against today's HEAD.  I've smoke tested it - it compiles and uses Platform build configurations and seems to build simple projects with references.
It does a number of important things:
  - Update CDT to allow references to multiple configurations (Bug 317229) (cdt's RefsTab isn't updated to use the new API).
  - BuildConfigReconciler creates platform build configurations from the CDT Build Configurations
  - CommonBuilder no longer builds references - the platform orchestrates this. 

I'm sure this patch will rot pretty quickly, so the following repos contain the in context:
https://github.com/jamesblackburn/cdt-core
https://github.com/jamesblackburn/cdt-ui
https://github.com/jamesblackburn/cdt-mbs-core
https://github.com/jamesblackburn/cdt-mbs-ui
Comment 2 John Cortell CLA 2012-05-30 13:40:50 EDT
I will likely take this on after Juno
Comment 3 Doug Schaefer CLA 2012-05-31 22:07:23 EDT
Most excellent. Thanks John! :)
Comment 4 John Cortell CLA 2012-06-21 18:55:28 EDT
Heads up. I've started working on this (again, for post-Juno), and James' solution  technically breaks API compatibility, meaning we're looking at CDT 9.0 for next June if we use it as-is.

The breaks I've seen so far are probably benign in practice. E.g., public interface ICConfigurationDescription is given some new methods. This is an interface clients aren't supposed to extend or implement, and clients probably aren't doing so. Unfortunately, it was never marked with @noextend and @noimplement. James solution adds those annotations, but of course, that in and of itself is considered an API breaking change.

Naturally, there's probably a way to do this without breaking API--it'll just end up being a lot uglier and client-unfriendly. 

Does anyone foresee other changes that will require a major version bump in June 2013?
Comment 5 Andrew Gvozdev CLA 2012-06-22 12:40:31 EDT
I would be in favor of marking ICConfigurationDescription with @noextend and @noimplement and bumping major version. If we begin using the new platform API introducing platform build configuration that is by itself may warrant bumping. It is likely it could change behavior of core/build CDT APIs related to configurations.
Comment 6 James Blackburn CLA 2012-06-22 16:15:40 EDT
I don't see that a version upgrade is necessary over this, as iirc I don't think it's possible to extend that interface. So really it's jus documentation, not breakage (and an API filter will suffice). 

Do let me know of any issues / if I can help in anyway.
Comment 7 John Cortell CLA 2012-06-22 16:30:13 EDT
(In reply to comment #6)
> I don't see that a version upgrade is necessary over this, as iirc I don't
> think it's possible to extend that interface. So really it's jus documentation,
> not breakage (and an API filter will suffice). 
I suggested exactly that (see parallel email thread on cdt-list), but so far it's gotten a luke warm response. It comes down to how much confidence we can claim that the interface hasn't been extended or implemented by a client. You say it's not possible, but do you truly mean that or do you mean it's very unlikely? Big difference.

> Do let me know of any issues / if I can help in anyway.
Thanks. I may have questions for you at some point.
Comment 8 Doug Schaefer CLA 2012-06-22 16:34:43 EDT
I agree with James on this (great to hear from you James!). Someone would have to be crazy to implement or extend ICConfigurationDescription. I think an API filter would be fine.
Comment 9 John Cortell CLA 2012-06-22 16:40:28 EDT
(In reply to comment #8)
> I agree with James on this (great to hear from you James!). Someone would have
> to be crazy to implement or extend ICConfigurationDescription. I think an API
> filter would be fine.

My day is getting better.
Comment 10 John Cortell CLA 2012-06-22 17:25:19 EDT
Another example of API breakage the solution calls for silencing: protected field ChangeConfigAction.fProjects has been removed. I think the assumption here is that the field's protected qualification was inadvertent and unnecessary, and that clients have not taken advantage of it.

I'll put together a complete list of these things at the end of my merge. Just wanted to give another example of the sort of things the solution will call for silencing.
Comment 11 Sergey Prigogin CLA 2012-06-22 18:09:00 EDT
(In reply to comment #10)
I agree with James and Doug and don't think that ChangeConfigAction.fProjects changes the situation.
Comment 12 Jonah Graham CLA 2019-12-30 18:54:28 EST
This bug was assigned and targeted at a now released milestone (or Future or Next that isn't being used by CDT). As that milestone has now passed, the milestone field has been cleared. If this bug has been fixed, please set the milestone to the version it was fixed in and mark the bug as resolved.