If you are using Base ClearCase, you could use the following procedure to create the build tools directory structure.
Create a Build Tools VOB
First, I recommend creating a new VOB (called JavaTools) to contain only the build tools; this can be achieved using the commands shown in Listing 3.1.
Listing 3.1. Creating a Base ClearCase JavaTools VOB
You are prompted for your ClearCase Registry password after the first command because a "public" VOB accessible by everyone is being created. The mount command is required only if you will use dynamic views to access the VOB.
Create a Build Tools View
Next, to be able to import data into the VOB, you should create and configure a ClearCase view (in this case a snapshot view); this can be achieved using the commands shown in Listing 3.2.
Listing 3.2. Creating a Base ClearCase JavaTools View
This creates a view called javatools_int. Because it is a snapshot view, the view root (or access point) is on the local file system at C:\Views\javatools_int. The view is also configured to load the contents of the JavaTools VOB.
Create the Build Tools Directories
Next, you should create the basic directory in the JavaTools VOB. This can be achieved using the commands shown in Listing 3.3.
Listing 3.3. Creating the JavaTools Directory Structure
This creates the following component directories:
This list of directories is not prescriptive; you might want to create more or fewer directories depending on your exact tools and requirements.
Import the Build Tools
The build tools view can now be used to import the build tools and add them to version control. Chapters 4 and 6 discuss how to compile and install Ant and CruiseControl; however, the process is the same irrespective of the tool being imported. Because you will probably have a significant amount of data to import, I recommend that you use the ClearCase clearfsimport. For example, if you wanted to import a version of the JDK into the JavaTools VOB, if the JDK was currently located on the file system at C:\j2sdk_1.4.12, you could use the following commands to import it into the VOB:
>cd C:\Views\javatools_int\JavaTools\j2sdk >clearfsimport -recurse C:\j2sdk_1.4.12\* .
This imports and version-controls every file under C:\j2sdk_1.4.12 into the JavaTools j2sdk directory.
Label the Build Tools
Finally, after the import, you should place a label on all the elements that are in the VOB and lock the label so that it can't be moved. This can be achieved using the commands shown in Listing 3.4.
Listing 3.4. Creating a Base ClearCase JavaTools Label
In this example a label is placed across the complete JavaTools directory structure. However, if you wanted to manage the build tools at a lower level, you could create the labels on the relevant component directory. For example, to label just the JDK directory, you could carry out the following commands:
>cd C:\Views\javatools_int\JavaTools >cleartool mklbtype -nc J2SDK_02 >cleartool mklabel -recurse J2SDK_02 j2sdk >cleartool mklabel J2SDK .
Notice that to be able to access this label from the top-level JavaTools directory, the label must be placed on the root directory as well.
Alternatively, you can use the ClearCase Apply Label wizard, shown in Figure 3.2, which is available in the ClearCase programs folder. You can enter the details about the label to be created.
Figure 3.2. Applying a label using the ClearCase Apply Label wizard
Make the Build Tools Directory Available to Your Users
After the JavaTools structure has been created and labeled, it can be made available to other projects. This can be achieved by adding the following additional line to each of the user's config specs:
element JavaTools/... JAVATOOLS_01 -nocheckout
The -nocheckout option ensures that the users cannot check out and edit any of the build tools. Additionally, if you have labeled at the component directory level, such as the j2sdk directory, you could amend the config spec as follows:
element JavaTools/j2sdk/... J2SDK_02 -nocheckout element JavaTools/... JAVATOOLS_01 -nocheckout
In this example, since the entry for the j2sdk directory is first, the label J2SDK_02 is matched and the later version picked up. Subsequently, the evaluation of the config spec matches any of the rest of the directory structure using the older JAVATOOLS_01 label.