The design of the build auditing capability makes it ideal for use with tools that build derived objects from scratch. Because newly created objects have no history, ClearCase can learn everything it needs to know at build time. But this reliance on build-time file-system-level auditing can cause ClearCase to record incomplete information for objects that are updated incrementally, which do have a history.
In ClearCase, incremental updating means that an object is updated partially during the builds of multiple makefile targets, instead of generated completely by the build of one target. By default, omake and clearmake do not update an existing CR incrementally when they build a target. Instead, they do the following:
Each time a build script incrementally updates an object's file system data, omake and clearmake write a completely new CR, which describes only the most recent update, not the entire build history.
The new CR does not match the desired build configuration for any of the other targets that update the object incrementally.
This results in a situation that is both unstable and incorrect: all incremental-update targets are rebuilt each time that omake (or clearmake) is invoked; when the build is finished, the DO has the correct file system data, but its CR may not describe the DO's configuration accurately.
omake and clearmake provide a special makefile target .INCREMENTAL_TARGET, which can be used to guarantee correct CR information for incremental updates. The following sections give examples of how to use .INCREMENTAL_TARGET.
If your makefile is structured properly, configuration records are not likely to lose information during incremental links.
Incremental linkers typically work by determining which object files have changed since the last link, and relinking those objects only. Because the linker may read only some of the objects each time it links, a CR can, in theory, lose information as repeated links are made. However, in practice, because all dependencies of the link are listed in the build script, the build script does not change from one link invocation to the next. And, because you typically list the objects or predefined dependencies of the link, those dependencies are included in the CR.
You may encounter incremental updating in other situations, as well. For example, Visual C++ supports a program database file (PDB) that contains debugging information and is updated incrementally as different targets are built. ClearCase includes special makefile rules to work around problems associated with incremental files produced by Visual C++. For more information, see Chapter 7, Using ClearCase to Build C++ Programs.
|
Feedback on the documentation in this site? We welcome any comments!
Copyright © 2001 by Rational Software Corporation. All rights reserved. |