PBS::Digest -


        #within a Pbsfile
        AddFileDependencies('/usr/bin/gcc') ;
        AddEnvironmentDependencies('PROJECT') ;
        AddSwitchDependencies('-D*', '-u*') ;
        AddVariableDependencies('gcc_version' => GetGccVersion()) ;
        AddNodeFileDependencies(qr/^.\/file_name$/, 'pbs.html') ;


This module handle s all the digest functionality of PBS. It also make available, to the user, a set of functions that can be used in Pbsfiles to add information to the node digest generated by PBS


All the node specific functions take a regular expression (string or qr) as a first argument. only nodes matching that regex will be dependent on the rest of the arguments.

        # make all the nodes dependent on the compiler
        # including documentation, libraries, text files and whatnot
        AddVariableDependencies(compiler => GetCompilerInfo()) ;

        # c files only depend on the compiler
        AddNodeVariableDependencies(qr/\.c$/, compiler => GetCompilerInfo()) ;

AddFileDependencies, AddNodeFileDependencies: this function is given a list of file names.

AddEnvironmentDependencies, AddNodeEnvironmentDependencies: takes a list of environnement variables.

AddVariableDependencies, AddNodeVariableDependency: takes a list of tuples (variable_name => value).

AddConfigVariableDependencies AddNodeConfigVariableDependencies: takes a list of tuples (variable_name). the variable's value is extracted from the node's config when generating the digest.

AddSwitchDependencies, AddNodeSwitchDependencies: handles command line switches -D and -u. AddNodeSwitchDependencies('node_which_uses_my_user_switch_regex' => '-u my_user_switch) ; AddSwitchDependencies('-D gcc'); # all node depend on the '-D gcc' switch. AddSwitchDependencies('-D*') ; # all nodes depend on all'-D' switches.

ExcludeFromDigestGeneration('rule_name', $regex): the nodes matching $regex will not have any digest attached. Digests are for nodes that PBS can build. Source files should not have any digest. 'rule_name' is displayed by PBS for your information. # extracted from the 'Rules/C' module ExcludeFromDigestGeneration( 'c_files' => qr/\.c$/) ; ExcludeFromDigestGeneration( 's_files' => qr/\.s$/) ; ExcludeFromDigestGeneration( 'h_files' => qr/\.h$/) ; ExcludeFromDigestGeneration( 'libs' => qr/\.a$/) ;

ForceDigestGeneration('rule_name', $regex): forces the generation of a digest for nodes matching the regex. This is usefull if you generate a node that has been excluded via ExcludeFromDigestGeneration.


Khemir Nadim ibn Hamouda.