| 2003-10-23 Bogdan Gheorghe |
| Updated the indexManager.perfomConcurrentJob call in MakefileGenerator |
| |
| 2003-10-03 Sean Evoy |
| Fix for critical bug 44134. |
| |
| The problem lies in how the makefile is generated when a build target |
| references other projects. The makefile creates a command to change to |
| the build directory of the referenced project and call $(MAKE) there, i.e. |
| cd <dep_project_build_dir>; $(MAKE) clean all |
| |
| The problem arises when the directory change fails. As of RC0, the command |
| after the semi-colon is evaluated. Unfortunately, it evaluates to a recursive |
| make call in the build directory of the build target and 'make' will keep |
| invoking more 'make's until Eclipse runs out of memory. With a manual build, |
| the user can still cancel the build. When autobuild is turned on, they cannot. |
| The only way to shut down Eclipse under that scenario is to kill it, and when |
| it restarts, autobuild is still enabled and the problem repeats. |
| |
| The solution is to NOT perform the 'make' command if the 'cd' fails, i.e. |
| cd <dep_project_build_dir> && $(MAKE) clean all |
| |
| When the dependencies are generated this way, the 'cd' will fail as will the |
| build. The final tweak is to ignore the 'cd' failure and allow the rest of |
| the build to continue, i.e. |
| -cd <dep_project_build_dir> && $(MAKE) clean all |
| |
| * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java |
| |
| 2003-10-01 Sean Evoy |
| Final fix for bugs 44020. |
| The problem lay with the way that new projects were being created when the |
| root configuration of the project had tool references overriding options. |
| What the new configuration should have been doing is making a personal copy |
| of the tool reference and its options. Instead, they were all sharing the |
| parents. Seems simple enough now that I found it. |
| |
| OptionReference provides a method to retreive its option (so new |
| OptionReferences can be cloned). |
| * src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java |
| |
| Configuration now behaves correctly when it is created from another configuration. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java |
| |
| 2003-10-01 Sean Evoy |
| Fix for bugs 43490 (trivial), 44020, and 43980. |
| Added a new field to the schema for a tool. The attribute manages a list of |
| project natures that the tool should be filtered against in the build model |
| and UI. |
| * schema/ManagedBuildTools.exsd |
| |
| Updated the ITool interface and its mplementors to pay attention to this new |
| attribute when loading from a plugin file. Clients can querry for a numeric |
| constant indicating the filter. |
| * src/org/eclipse/cdt/managedbuilder/core/ITool.java |
| * src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java |
| * src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java |
| |
| All the methods in managed build manager that access information stored in a tool |
| first check that the tool is valid for the project nature. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java |
| |
| Put a safety check in the option reference constructor when reading one in from |
| a project file. I the option reference is to an option not managed by the build |
| model, the constructor does not add itself to the runtime representation of the |
| model. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java |
| |
| In preparation for 44020, each new target created is assigned a truly random ID. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/Target.java |
| |
| 2003-09-30 Sean Evoy |
| Fix for bug 41826. |
| |
| Finished the use case for changing header files and triggering a build. I had |
| to add a new attribute to the build model schema to allow a build information |
| client to determine that a file is considered a header file. |
| * schema/ManagedBuildTools.exsd |
| |
| The ITool, and its implementors now have a method to test if an extension is |
| considered to belong to a header file. The Tool also pays attention to the new |
| attribute when it reads itself in from the plugin file. |
| * src/org/eclipse/cdt/managedbuilder/core/ITool.java |
| * src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java |
| * src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java |
| |
| There is a method for clients of this information on the BuildInfo interface and |
| its implementor. |
| * src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java |
| * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java |
| |
| The builder had to be tweaked in order to behave correctly on a build of an |
| empty project or non-managed projects. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java |
| |
| The makefile generator had to be tweaked to properly add folders that are effected |
| by header file changes. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java |
| |
| 2003-09-26 Sean Evoy |
| A partial implementation for bug 41826. This patch contains the logic to properly |
| respond in the face of the following project changes: |
| |
| 1. A generated project element, such as the build target or an intermediate file, |
| is deleted in the build project, or any projects it references. |
| 2. The build settings change in the build project or any projects it |
| references. |
| |
| In order to actually do this correctly, I had to stop being so precious during the |
| build. The makefile generator was was calculating the "build needed" state as it |
| walked the change delta. However, the Eclipse core has already determined that I |
| need to do a build. Further, as I discovered earlier, it doesn't always pass what |
| has changed in referenced projects as part of the delta. Essentially, that means I |
| will never be able to fully calculate the change set in the makefile generator's |
| delta visitor, and to even approximate a decent set of cases, the logic would quickly |
| bog down in complexity. |
| |
| The solution is to trust Eclipse and alway invoke make when my incremental builder |
| is called. At worst, if there is no significant change, make will execute and |
| report nothing to be done. |
| |
| The modified makefile builder no longer asks the makefile generator if it should |
| build. It also no longer cares if the change set is empty (make will report that). |
| Since it responds to changes in referenced project's build information, it also |
| scrubs all relevant projects after building. Since a build might involve building |
| referenced project elements, those projects get their project views refreshed after |
| build. The build markers for referenced projects are removed prior to build. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java |
| |
| The makefile generator has been simplified. The resource delta visitor logic no |
| longer trie to decide if a build should occur. The method to ask has been removed. |
| The class no longer throws an exception if the change set is empty. I am also a bit |
| more careful to call make with the right targets if a referenced project is built. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java |
| |
| 2003-09-26 Sean Evoy |
| I added a fix to the builder and makefile generator to properly handle the following case. |
| Project A depends on Project B. Something changes in project B and the user requests |
| that A be built. Inthis case, the incremental builder is invoked, but it is passed a |
| 0-length delta on the top resource. Now, the logic of the builder is to treat that case as a |
| build event that triggers no makefile regeneration, just an invocation of make. |
| |
| Now handles the case where there is no flag applied to the make command and just |
| passes the targets as arguments. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java |
| |
| The makefile generator now considers the case where the delta is for a project resource |
| and has no children. If so, it flags that a build is needed but no makefile generation |
| occurs. It also throws a new exception if the top makefile is not saved. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java |
| |
| 2003-09-25 Sean Evoy |
| A patch to resolve the problem with refreshing the project after a build, or |
| bug 42522 if you care about those sorts of things. The managed make builder was |
| calling refresh at inside a bad if statement. I corrected that and projects |
| refresh correctly. Of course, if you have the wrong binary parser selected you are |
| hosed. You will also notice that the string constants have been changed to |
| resolve to a different name. The standard builder uses this name and I wanted |
| to minimize the possibility of problems later. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java |
| |
| Prepended "Managed" to the externalized string identifiers to avoid future overlap |
| with the standard build system. Had to update the makefile generator to use the |
| new identifiers. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties |
| * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java |
| |
| Changed the signature of the 'getMakeArguments' to return a string instead of an |
| array so the builder can invoke make with the user-specified args. I also changed |
| the logic of the getMakeCommand method in the implementor so that it only returns |
| a string containing the command itself. |
| * src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java |
| * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java |
| |
| Explicitly trim all arrays to size before converting them to String[] for Options |
| and Tools. |
| *src/org/eclipse/cdt/managedbuilder/internal/core/Option.java |
| * src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java |
| |
| Fixed a missing bit of logic in the Configuration when a user-object option is |
| deleted. Now the build model really does get rid of the the value. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java |
| |
| 2003-09-25 Sean Evoy |
| This patch contains a lot of changes needed to implement fixes for 42648 and |
| 43122. |
| |
| For 42648, the schema for the the target had to be modified to include a |
| comma-separated list of valid host platforms. |
| * schema/ManagedBuildTools.exsd |
| |
| The target had to be updated to properly read in and understand this info, and |
| the interface had to be updated to return a list to the clients in the UI. The |
| target was also changed slightly. It now uses a safer accessor method to get at |
| the list of tools it maintains. I have also stopped persisting non-variant info |
| to the project file on serialize. There are elements of the target that are not |
| subject to change by the user (yet) so they should not be saved. |
| * src/org/eclipse/cdt/managedbuilder/core/ITarget.java |
| * src/org/eclipse/cdt/managedbuilder/internal/core/Target.java |
| |
| For 43122, I started by simply adding a tool reference to the configurations. |
| The tool reference had option references for debug and optimization levels. It |
| should have worked, but the model was not handling the inheritance properly. The |
| JUnit tests were not finding it because of how they were configured. It was most |
| evident in the UI. So, the way configurations and tool reference search for |
| overridden option references had to be modified. While I was in there, I cleaned |
| up some of the accessor and iteration code in ToolReference and OptionReference. |
| |
| For the configuration, the only significant change was a new search method to |
| find all option references for a given tool, no matter where they are stored. |
| The method had to consider what was overridden in a child config, what was added by |
| a child config, and what the parent (or parents) define. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java |
| |
| Option reference now pays attention to overidden values in the plugin file. Until |
| now, it only handled the overrides in the project file. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java |
| |
| The ToolReference now distinguishes between local option references which it |
| manages directly, and option references held by tool references in the parent(s) |
| of its owner. It only serializes its own references, but when asked for options |
| relating to the tool it references, it replies with all option references in its |
| hierarchy. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java |
| |
| |
| 2003-09-25 Bogdan Gheorghe |
| Modified ResourceDeltaVisitor.visit() to use the new mechanism to get the |
| projects that dependend a file. |
| |
| Modified addSourceDependencies() to use the new mechanism to perform a DependencyQueryJob |
| |
| * src/org/eclipse/cdt/managedbuilder/internal/core/MakeFileGenerator.java |
| |
| 2003-09-24 Sean Evoy |
| Changed the implementor of IScannerInfo to answer only absolute paths when asked for |
| includes paths. Users will specify the includes paths in the managed build UI in such a way |
| that the compiler will not complain. Either they will use absolute paths, or they will specify |
| them relative to the build directory. In the second case, it is easier for the managed builder |
| to convert the paths relative to this directory into absolute paths before replying tha it is for |
| the client to figure this out. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java |
| |
| 2003-09-23 Sean Evoy |
| All the work in this patch is for critical bug 43292. In order to manage |
| configurations, there had to be a method through ITarget to remove |
| configurations. Also, to support the naming of newly created configurations, |
| I added a name method to the IConfiguration interface. Finally, the ITarget |
| needed to support setting (and resetting) the make command to use when building. |
| * src/org/eclipse/cdt/managedbuilder/core/IConfiguration.java |
| * src/org/eclipse/cdt/managedbuilder/core/ITarget.java |
| * src/org/eclipse/cdt/managedbuilder/internal/core/Target.java |
| |
| 2003-09-19 Sean Evoy |
| Added a new field to the target specification in the build model to |
| hard-code the binary parser for project creation. There is a new getter |
| method in the interface and the implementor contains additional code to |
| extract the information from a project file or plugin manifest. The |
| interface also contains new strings to make changing the specification |
| easier in the future. |
| * schema/ManagedBuildTools.exsd |
| * src/org/eclipse/cdt/managedbuilder/core/ITarget.java |
| * src/org/eclipse/cdt/managedbuilder/internal/core/Target.java |
| |
| Fix for bug 41720: libraries are now found for Solaris and Linux |
| executables. The problem was the executable had no extension and |
| the client of the build model passed null instead of the empty string. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java |
| * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java |
| |
| 2003-09-16 Sean Evoy |
| Patch contains a fix for bug 43017. Renamed the "addDeps" method to a |
| more descriptive "addSourceDependencies". Added a flag when the |
| inter-project dependencies are calculated so that clean and all are |
| properly passed to the make invocation. Finally, I replaced the hard-coded |
| 'make' with $(MAKE) |
| * src/org/eclipse/cdt/managedbuilder/internal/core/MakefileGenerator.java |
| |
| It also contains some more work on 41826, specifically on the logic to |
| implement a rebuild when the build settings change. The builder checks for |
| a build model change whenever a build is requested and responds appropriately. |
| The make targets (i.e. 'clean' and 'all') are also calculated differently now. |
| * src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java |
| |
| The build model was modified to set a dirty flag when an option changes. I also |
| made a change to avoid an NPE when the build info was loaded. |
| * src/org/eclipse/cdt/managedbuilder/core/IManagedBuildInfo.java |
| * src/org/eclipse/cdt/managedbuilder/internal/core/ManagedBuildInfo.java |
| * src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java |
| |
| |
| 2003-09-15 Sean Evoy |
| First submission of code to new project. Moved the managed builder |
| source code out of the cdt.core project. This includes the code to |
| implement the build model, along with the shema and extension point |
| declaration. Moved the builder, scnanaer info provider and managed |
| nature definitions into the package as well. |
| |
| There are 2 new classes to handle the externalized strings: |
| * src/org/eclipse/cdt/managedbuilder/core/ManagedBuilderCorePlugin.java |
| * src/org/eclipse/cdt/managedbuilder/internal/core/PluginResources.properties |