Chapter 3. Building Your Roll

In this section, we'll show you how to build your roll and we'll examine some of the files that are created when you build your roll.

Building your roll is rather simple. To build the example Valgrind Roll that we developed in the previous section, execute:

# cd /export/src/roll/valgrind
# make roll

This will take several minutes to build. When it completes, the most important file is valgrind-1.0-0.x86_64.disk1.iso -- this is the Valgrind Roll in an ISO image. You can burn this ISO to a CD/DVD or you can transport it to a frontend and install it like you would any other roll.

When you execute "make roll", it will descend into the src directory and try to build every package. In the case of the Valgrind Roll, there are two subdirectories under src: usersguide and valgrind. The "make roll" process will go into each of those directories and execute "make rpm", and as decribed in the section Create an RPM from a Source Code Tarball, the resulting RPMs will be placed in /export/src/roll/valgrind/RPMS/x86_64.

Also, all the node XML files and the graph XML file will be bundled into a package called roll-valgrind-kickstart-1.0-0.noarch.rpm. To see this, execute:

# cd /export/src/roll/valgrind
# rpm -qlp RPMS/noarch/roll-valgrind-kickstart-1.0-0.noarch.rpm 
/export/profile
/export/profile/graphs
/export/profile/graphs/default
/export/profile/graphs/default/valgrind.xml
/export/profile/nodes
/export/profile/nodes/valgrind-base.xml
/export/profile/nodes/valgrind-client.xml
/export/profile/nodes/valgrind-server.xml
/export/profile/roll-valgrind.xml

Above we see the graph XML file ( /export/profile/graphs/default/valgrind.xml) and the node XML files: (/export/profile/nodes/valgrind-base.xml, /export/profile/nodes/valgrind-client.xml, /export/profile/nodes/valgrind-server.xml). The file /export/profile/roll-valgrind.xml contains info that describes how the roll was built.

After the Roll is built, you can add a file to the Valgrind Roll that will help you determine if all the expected packages were built. We do this with the "manifest-check.py" program.

The "manifest-check.py" program looks at file called "manifest" in the base directory of the Roll and then looks at the RPMs under the directory "disk1". The "manifest-check.py" program expects that only the RPMs listed in "manifest" will be present. If there is an entry in "manifest" and if the RPM doesn't exist under "disk1", you will see an error message like:

ERROR - the following packages were not built:
        roll-condor-usersguide

And if there is package that was built, but there is no entry in "manifest" for it, you'll see an error message like:

ERROR - the following packages were built but not in manifest:
        foundation-perl-Statistics-Descriptive
        foundation-perl-Spreadsheet-ParseExcel

For the Valgrind Roll, create a file named "manifest":

# cd /export/src/roll/valgrind
# vi manifest

Then put the following package names in it:

roll-valgrind-kickstart
roll-valgrind-usersguide
valgrind

Now run "manifest-check.py" to verify that all the expected packages have been built:

# /opt/rocks/share/devel/src/roll/bin/manifest-check.py

Note

Everytime you add a new package to your Roll, make sure to add the package's base name to the "manifest" file.