Build avoidance

Learn how clearmake attempts to avoid rebuilding derived objects.

If an appropriate Derived Object (DO) exists in the view, clearmake reuses that DO. If there is no appropriate DO in the view, clearmake looks for an existing DO built in another view that can be winked in to the current view. The search process is called shopping.

The process of qualifying a candidate DO is called configuration lookup. It involves matching information in the VOB from the Configuration Record (CR) of the candidate DO against the current build configuration of the user. This process guarantees correct results in a parallel development environment, which the standard time-stamp based algorithm used by make cannot do. Even if an object module is newer than a particular version of its source file, the module may have been built using a different version. Actually, reusing object modules and executables built recently is likely to be incorrect when rebuilding a previous release of an application from old sources. The configuration lookup algorithm that DevOps Code ClearCase® uses guarantees that your builds are both correct (inappropriate objects are not reused) and optimal (appropriate objects are always reused).

For a DO to be reused or winked in, the build configuration documented in its configuration record must match the build configuration of the current view. The build configuration consists of two items:

The search ends when clearmake finds a DO whose configuration matches the current build configuration of the view exactly. In general, a configuration lookup can have three outcomes:

Reuse and winkin take place only if clearmake determines that a newly built derived object is identical to the existing one. Winkin takes place when two or more views select the same versions of source elements used in a build. For example, you can create another view that has the same configuration as an existing view. Initially, the new view sees all the sources but contains no derived objects. Running clearmake winks in many derived objects from the existing view.