Chapter 4. Format of the Rules files

Every rules file is preprocessed with M4, see $VAR/template/group/rules-master for example. M4 is documented in section 4.

Every file/directory/symlink/device in the source directory is searched top to bottom in the rules file associated with the source directory. The first matching entry is used and the rest are ignored.


--- [type] pattern@package
|||   |      |       |- optional - match entire list of files in Debian package
|||   |      |
|||   |    =string - match constant string
|||   |	   other   - match perl regular expression.
|||   |
|||   |- optional - [dir] only match directories
|||               - [symlink] only match symlinks
|||               - [device] only match devices
|||               - [file] only match normal files
|||
|||-C allow converting this file using M4 filter
||
||- c allow copying of this file
||
|-- d if matching file is a directory, then descend into it. (Note:
      if directory doesn't have c set, then either dir must be
      found in another source dir or destination must already
      exist).
    

If both a pattern and a package are specified, then the file must match both.

Also supported are (these are parsed *before* the rules above):

Table 4-1. Rules Commands

@rename =$src=$dst= Use with extreme caution, renaming individual files is OK, using substitution is OK, however may cause problems.
@ignore $src Source file is not copied, even if it exists in a source directory with higher priority.

Potential problems with rename:

Table 4-2. Pitfalls with rename

@rename =(.*)=/etc$1= Should put all files from this source under the etc dir, but will complain if this dir doesn't exist, or doesn't exist in time.
@rename =(.*)=$1.old= This is pure evil. DO NOT DO IT! For example, consider:

/      ===>  /.old
/a     ===>  /a.old
/a/b   ===>  /a/b.old
/a/b/c ===>  /a/b/c.old
This is probably not intended, and will fail if the /a/b directory doesn't already exist.

Do not use quotes in from expression, is the result is determined through "eval", and quotes will mess this up. There may be other things to watch out for.