Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [cdt-dev] Build Again

I agree with need to provide a simple tool-chain integration capability and to get scanner discovery under control.  I want MBS to use this information rather than requiring duplicate information to be specified and I want MBS to be able to contribute to the core information when necessary – e.g. paths and macro definitions users enter into MBS property pages. 

 

So, I’m thinking that tool-chains and builders are different, and can be mixed and matched to some extent, and this is the simple information that CDT needs from a tool-chain or builder in order to provide usable, default settings to new users.  Do it seem like too much?

 

Leo

Tool-chain

The tool-chain element will provide the following metadata:

·         Information describing the tool-chain to the user – name, supported host platforms, supported target platforms, …

·         Information for populating the CDT new project AppWizard framework.  This will enable the same support as the current MBS and core functionality do.

·         Information for setting up the build environment of the process created to run a build

·         Information needed by the CDT editing/code assistance/refactoring functionality – e.g. the paths and macro definitions currently provided by scanner discovery and other mechanisms.  Note that a builder (e.g. MBS) may also be involved in providing some of this information.  The tool-chain will be the CDT focal point for this information and may need to use builder specific mechanisms for gathering information from a builder that the tool-chain supports.

·         The builder(s) that the tool-chain works with.  There will be a “core builder“ “flavor” that can be used with any tool-chain that provides the core metadata.  Support for additional builders (which require builder specific metadata) can be specified.

·         The debugger(s) that the tool-chain is known to work with

·         The libraries that the tool-chain is known to work with

·         The default error parsers for the tools in the tool-chain

·         The build console(s) that the tool-chain is known to work with?  I don’t know whether build consoles are associated with a tool-chain or a builder or are simply a user preference setting.

The “known to work with” metadata will not provide an exclusive list of other elements that the tool-chain will work with.  Users may try other combinations at their own risk.

Builder

The builder element will provide the following metadata:

·         Information describing the builder to the user – name, supported host platforms, …

·         The default error parser(s) for the builder

·         Information for setting up the build environment of the process created for the build

·         Information for creating the command line for a build

·         Whether it requires additional metadata, and if so, the name of the extension point

 

 

From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx] On Behalf Of James Blackburn
Sent: Tuesday, April 27, 2010 12:37 PM
To: CDT General developers list.
Subject: Re: [cdt-dev] Build Again

 

Hi Doug,

 

I definitely feel the pain. We definitely need a scalable answer to path and symbol persistence in the core - one that isn't tied to any particular build system. Plugging in an extensible scanner discovery should be easy for extenders. And scanner discovery would be a first class citizen like a dwarf contributor, or sdk path contributor - or <your_buildsystem> contributed paths. Solving this once and for all would sort out what must be  one of the most frequently asked integraor questions on this list. Moreover it'll allow all the magic stuff the parsers and indexers do now to work. I believe this is the major cause behind source navigation not working out the box for users.

There's the common need to fix this and the pain associated. I think andrew made a fair bit of progress in 6. So soon after 7 lets see how far we can get if we continue this work and we all chip in. 

Cheers,

James

On 27 Apr 2010, at 20:09, Doug Schaefer <cdtdoug@xxxxxxxxx> wrote:

To Leo's point, have you ever tried to integrate a toolchain where you don't want MBS, but you do want standard build? The overhead in doing that and getting (or not getting which is the norm) a working scanner discovery is what brought me to this point. There is some overlap, but it is actually quite small. For the android toolchain, it's pretty much the PATH env var and the names of the compilers and a hook to the gcc scanner discovery. Unfortunately, I feel we've lost the ability to keep the simple things simple.

 

It's not clear to me how managed build calls the built-in discovery stuff. That's probably all part of my confusion with scanner discovery to begin with. But as I mentioned, I have no intentions of changing managed build. My suggestion is to reimplement a whole new build stack for standard build including a clone/reimplementation of scanner discovery, and a very simple build model.

 

 

On Tue, Apr 27, 2010 at 2:27 PM, Chris Recoskie <recoskie@xxxxxxxxxx> wrote:

In our case, the only way we can get at the built-ins for the IBM compiler is to do a hidden build, similar to what is done for the GNU compilers. There's no Windows registry to rely upon on AIX or Linux that we could look up such things in. So we need to have the built-ins discovery run for managed build projects too. I'm not sure how you'd get around it.

We (IBM) have several compiler versions and languages that we support, on multiple platforms, and it would be an ugly problem of combinatoric complexity if we had to hardcode all the different combinations in the toolchain definitions, or even code it all in Java. It's even worse for the GNU tools.



===========================
Chris Recoskie
Team Lead, IBM CDT and RDT
IBM Toronto

<graycol.gif>Doug Schaefer ---04/27/2010 12:55:59 PM---Thanks, Chris, I think we're getting a lot of momentum and resourcing to address this. I can't wait

<ecblank.gif>
From:

<ecblank.gif>
Doug Schaefer <cdtdoug@xxxxxxxxx>

<ecblank.gif>
To:

<ecblank.gif>
"CDT General developers list." <cdt-dev@xxxxxxxxxxx>

<ecblank.gif>
Date:

<ecblank.gif>
04/27/2010 12:55 PM

<ecblank.gif>
Subject:

<ecblank.gif>
Re: [cdt-dev] Build Again

<ecblank.gif>
Sent by:

<ecblank.gif>
cdt-dev-bounces@xxxxxxxxxxx





Thanks, Chris, I think we're getting a lot of momentum and resourcing to address this. I can't wait to see what we can do.

I'd like to make sure we separate out scanner discovery from managed build. These are two separate areas that shouldn't overlap. Again my focus will be on resurrecting a separate standard build system where scanner discovery is an essential mechanism. Reusing it for managed build doesn't make sense to me and will probably simplify managed build if we remove it. For managed build, all you really want is get at the compiler built-ins and there are probably simpler mechanisms to accomplish that.

:D

On Tue, Apr 27, 2010 at 11:50 AM, James Blackburn <jamesblackburn@xxxxxxxxx> wrote:

Hi Chris,

I agree with your summary. I (thankfully) have got rid of scanner discovery here.  The major gripe here is the issue of merging & version controlling .cproject.  The XML model bears little resemblance to a user's intuitive understanding of the settings set. I've got a .cproject pretty printer which generates a human readable output from the config, but the fact that the .cproject changes seemingly randomly and non-obviously, after an innocuous change (e.g. flipping active configuration) is bad.

I'd like to help out improving this and the scalability issues. I've got some ideas on that front.

Cheers,
James



On 27 April 2010 16:31, Chris Recoskie <recoskie@xxxxxxxxxx> wrote:
I would have replied to this thread sooner but I was on vacation yesterday.

Rather than respond to all the different sub-threads, I'll summarize a few points here.

As I stated recently, I think I can get a significant amount of my time put towards build system work starting in the summer/fall, with the idea being to release whatever changes resulted in the June 2011 simultaneous release. Whether everything I would like to do can actually be accomplished in that time or not remains to be seen, but it should allow for a good start.

To give some background, we've just GA'ed our first product release based on our CDT/RDT remote development work... Rational Developer for Power Systems Software. Basically it's a remote development IDE for the Power platform. Some issues have come from our customers as a result during our beta program, most of which surrounded scalability, build, and scanner discovery. As such we've got the required momentum behind us to make some investment in these areas if it will address these pain points.

As others have stated, doing a complete rewrite of everything would be ideal in some ways but I'm not sure it's practical either given the resources. That being said. we can probably rewrite a few things, and in fact in some cases I think we'll need to if we want them fixed.

So, here are my main concerns and thoughts. A lot has been said by the rest of you that I would say I largely agree with... I won't rehash it all, I'll just add to it.

- Scalability of the build model is a big problem right now. We already had customers complaining that they have hundreds of projects in the workspace, which blows up the heap easily. Not only do we need to address the memory footprint, but the slowness of creating and persisting the C project description (and particularly the build model portion of it) needs to be addressed. This slowness gets even slower when you are working with remote projects, because remote I/O is expensive. I think the C project description implementation and the persistence mechanisms need a rewrite.

- The elements in the current build model/MBS model themselves are not necessarily bad as they do a pretty good job of modeling arbitrary toolchain setups. Those elements can probably be tweaked to help to help address the use cases where we are still lacking, without throwing the baby out with the bathwater. I think even if I were to think about redesigning the build model, I'd probably end up in a similar spot to where it ended up, with a few sins corrected. So I don't think it's worth it to blow that all away and start fresh. Most of our ISVs integrate to the build system using the MBS extension points, so keeping that similar is something I'd consider necessary.

- Autotools support. Some of our bigger customers are using Autotools with the IBM compilers. Building with them using a standard make project is really clunky, and scanner discovery doesn't handle the autotools output properly. I need to look at what the Redhat folks/Linux Tools folks have done to see how that currently integrates. Does the autotools integration work with any compiler right now or just GNU? Did they solve the scanner discovery problem? I don't know.

- Scanner discovery in general is a complete mess and personally I would like to raze it to the ground and salt the earth upon which it stood so nothing ever grows there again. I got scanner discovery "sort of" working for our product but it is rather hacky and doesn't work that great. Per file and per folder settings don't currently work at all, and our customers care about that (see: Autotools). The scalability of it sucks as the hidden build to get at the compiler built-ins still gets invoked way too often for arcane reasons I have not fully deciphered yet. Part of the problem is the scanner discovery stuff is entangled in the mess that is the CProjectDescription and its henchmen, so even if you sort of figure out your scanner discovery parsers and info collectors, getting the data into the IDE properly is a nightmare.

- Scanner discovery working properly is REALLY important for us. Our customers have all told us that our big differentiator that makes our product attractive compared to vi/Emacs and the like is that we have all these great source-aware features driven by the index. Our customers have really big projects though, with lots of third party libraries, and they are pretty much unwilling to configure the scanner info manually. The big customers pretty much all have existing build processes that they are unwilling to switch away from, which means none of them will be switching to Managed Build when our product supports it.. So scanner discovery has to work right.

===========================
Chris Recoskie
Team Lead, IBM CDT and RDT
IBM Toronto

<graycol.gif>Doug Schaefer ---04/24/2010 11:06:29 AM---Hey gang, FYI, As I mentioned on the last call, I've been asked to play a more active role

 

<ecblank.gif>
From:

<ecblank.gif>
Doug Schaefer <cdtdoug@xxxxxxxxx>

<ecblank.gif>
To:

<ecblank.gif>
"CDT General developers list." <cdt-dev@xxxxxxxxxxx>

<ecblank.gif>
Date:

<ecblank.gif>
04/24/2010 11:06 AM

<ecblank.gif>
Subject:

<ecblank.gif>
[cdt-dev] Build Again

<ecblank.gif>
Sent by:

<ecblank.gif>
cdt-dev-bounces@xxxxxxxxxxx






Hey gang, FYI,


As I mentioned on the last call, I've been asked to play a more active role in TCF and help build a community for it and work with you to bring it to maturity. That's taking most of my time these days as I get up to speed and figure out what we need to do with it.


In my spare time, I'm working on bringing the CDT to the Android community to help build native libraries for that platform. The focus is on one of my dream projects, building a game engine out of open source parts, in this case for Android, but I have eyes on iPhone and MeeGo too. Part of doing that is getting the Android gnu toolchain working well with CDT. And that's brought me back into the CDT build nightmare. Once again, I am having a hell of a time getting scanner discovery working for these seemingly simple Makefile projects. Just look at a stack trace sometime and you'll see, today, the CDT build system is the opposite of simple.


So I am urging myself to get back into working on a new build system. We need to put the architecture back to the way it was, with managed build being an add-on, not having everything driven by managed build. Obviously, I'm not going to have much time to spend on it, so by definition, I'll have to keep it simple. And I'll have to do it as a separate stack, not as an evolution of what we have.


Over the next few days, I'll jot down some more ideas here 
http://wiki.eclipse.org/CDT/NextGenBuild. And I'll recreate cdt.build.* plug-ins, this time in a separate folder to avoid confusion. And as always help is appreciated and hopefully, I'll have new found vested interest in bringing it to completion, especially since I want to get back working on the Android project.

Cheers,

Doug_______________________________________________

cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev



_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev



_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev

_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev


_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev

 

_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev


Back to the top