/*
* quickie - a small fast C++ Wiki Wiki
* Copyright (C) 2005, 2006 Peter Miller
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
*
* MANIFEST: project configuration for Quickie, tell Aegis whay to do
*/
/*
* The build_command field of the config file is used to invoke the relevant
* build command. The following command tells cook where to find the recipes.
* The ${s Howto.cook} expands to a path into the baseline during development
* if the file is not in the change. Look in aesub(5) for more information
* about command substitutions.
*/
build_command =
"cook -b ${s etc/Howto.cook} project=$p change=$c version=$v "
"arch=$arch -nl -st search_path=$search_path";
/*
* The recipes in the User Guide will all remove their targets before
* constructing them, which qualifies them to use the following entry in
* the config file. The targets MUST be removed first if this field is
* true, otherwise the baseline would cease to be self-consistent.
*/
link_integration_directory = true;
/*
* RCS uses a slightly different model than aegis wants, so some
* maneuvering is required. The command strings in this section assume
* that the RCS commands ci and co and rcs and rlog are in the command
* search PATH, but you may like to hard-wire the paths, or set PATH at
* the start of each. You should also note that the strings are always
* handed to the Bourne shell to be executed, and are set to exit with
* an error immediately a sub-command fails.
*
* In these commands, the RCS file is kept unlocked, since only the owner will
* be checking changes in. The RCS functionality for coordinating shared
* access is not required.
*
* One advantage of using RCS version 5.6 or later is that binary files are
* supported, should you want to have binary files in the baseline.
*/
/*
* This command is used to create a new file history.
* This command is always executed as the project owner.
* The following substitutions are available:
*
* ${Input}
* absolute path of the source file
* ${History}
* absolute path of the history file
*
* The "ci -f" option is used to specify that a copy is to be checked-in even
* if there are no changes.
* The "ci -u" option is used to specify that an unlocked copy will remain in
* the baseline.
* The "ci -d" option is used to specify that the file time rather than the
* current time is to be used for the new revision.
* The "ci -M" option is used to specify that the mode date on the original
* file is not to be altered.
* The "ci -t" option is used to specify that there is to be no description
* text for the new RCS file.
* The "ci -m" option is used to specify that the change number is to be stored
* in the file log if this is actually an update (typically from aenf
* after aerm on the same file name).
* The "rcs -U" option is used to specify that the new RCS file is to have
* unstrict locking.
*/
history_create_command =
"ci -f -u -d -M -m$c -t/dev/null $i $h,v; rcs -U $h,v";
/*
* This command is used to get a specific edit back from history.
* This command is always executed as the project owner.
* The following substitutions are available:
*
* ${History}
* absolute path of the history file
* ${Edit}
* edit number, as given by history_\%query_\%command
* ${Output}
* absolute path of the destination file
*
* The "co -r" option is used to specify the edit to be retrieved.
* The "co -p" option is used to specify that the results be printed on the
* standard output; this is because the destination filename will never
* look anything like the history source filename.
*/
history_get_command =
"co -r'$e' -p $h,v > $o";
/*
* This command is used to add a new "top-most" entry to the history file.
* This command is always executed as the project owner.
* The following substitutions are available:
*
* ${Input}
* absolute path of source file
* ${History}
* absolute path of history file
*
* The "ci -f" option is used to specify that a copy is to be checked-in even
* if there are no changes.
* The "ci -u" option is used to specify that an unlocked copy will remain in
* the baseline.
* The "ci -d" option is used to specify that the file time rather than the
* current time is to be used for the new revision.
* The "ci -M" option is used to specify that the mode date on the original
* file is not to be altered.
* The "ci -m" option is used to specify that the change number is to be stored
* in the file log, which allows rlog to be used to find the change
* numbers to which each revision of the file corresponds.
*
* It is possible for a a very cautious approach has been taken, in which case
* the history_put_command may be set to the same string specified above for
* the history_create_command.
*/
history_put_command =
"ci -f -u -d -M -m$c $i $h,v";
/*
* This command is used to query what the history mechanism calls the top-most
* edit of a history file. The result may be any arbitrary string, it need not
* be anything like a number, just so long as it uniquely identifies the edit
* for use by the history_get_command at a later date. The edit number is to
* be printed on the standard output. This command is always executed as the
* project owner.
*
* The following substitutions are available:
*
* ${History}
* absolute path of the history file
*/
history_query_command =
"rlog -r $h,v | awk '/^head:/ {print $$2}'";
/*
* RCS also provides a merge program, which can be used to provide a three-way
* merge. It has an ouput format some sites prefer to the fmerge output.
*
* This command is used by aed(1) to produce a difference listing when a file
* in the development directory is out of date compared to the current version
* in the baseline.
*
* All of the command substitutions described in aesub(5) are available.
* In addition, the following substitutions are also available:
*
* ${ORiginal}
* The absolute path name of a file containing the common ancestor
* version of ${MostRecent} and {$Input}. Usually the version originally
* copied into the change. Usually in a temporary file.
* ${Most_Recent}
* The absolute path name of a file containing the most recent version.
* Usually in the baseline.
* ${Input}
* The absolute path name of the edited version of the file. Usually in
* the development directory.
* ${Output}
* The absolute path name of the file in which to write the difference
* listing. Usually in the development directory.
*
* An exit status of 0 means successful, even of the files differ (and they
* usually do). An exit status which is non-zero means something is wrong.
*
* The "merge -L" options are used to specify labels for the baseline and the
* development directory, respecticvely, when conflict lines are inserted
* into the result.
* The "merge -p" options is used to specify that the results are to be printed
* on the standard output.
*/
merge_command =
"set +e; \
merge -p -L baseline -L C$c $mr $orig $in > $out; \
test $? -le 1";
/*
* Compare two files using fcomp. The -w option produces an output of the
* entire file, with insertions an deletions marked by "change bars" in the
* left margin. This is superior to context difference, as it shows the entire
* file as context. The -s option could be added to compare runs of white
* space as equal.
*
* This command is used by aed(1) to produce a difference listing when file in
* the development directory was originally copied from the current version in
* the baseline.
*
* All of the command substitutions described in aesub(5) are available.
* In addition, the following substitutions are also available:
*
* ${ORiginal}
* The absolute path name of a file containing the version originally
* copied. Usually in the baseline.
* ${Input}
* The absolute path name of the edited version of the file. Usually in
* the development directory.
* ${Output}
* The absolute path name of the file in which to write the difference
* listing. Usually in the development directory.
*
* An exit status of 0 means successful, even of the files differ (and they
* usually do). An exit status which is non-zero means something is wrong.
*
* The non-zero exit status may be used to overload this command with extra
* tests, such as line length limits. The difference files must be produced
* in addition to these extra tests.
*/
diff_command = "fcomp -w -s $original $input -o $output";
architecture =
[
{
name = "linux-i486";
pattern = "Linux*86*";
}
];
test_command = "$shell $filename $arch";
/*
* whenever files are added to or removed from the change,
* execute the following command.
*
* The project files are wiped, too, because a removed file will alter
* the project file list.
*/
change_file_command = "rm -f etc/cook/change_files.* etc/cook/project_files.*";
project_file_command = "rm -f etc/cook/project_files.*";
file_template =
[
{
pattern = [ "*.cc" ];
body = "${read_file ${source etc/template/cc abs}}";
},
{
pattern = [ "*.c" ];
body = "${read_file ${source etc/template/c abs}}";
},
{
pattern = [ "*.h", "*.g", "*.hh" ];
body = "${read_file ${source etc/template/h abs}}";
},
{
pattern = [ "test/*/*.sh" ];
body = "${read_file ${source etc/template/test abs}}";
},
{
pattern = [ "*.sh" ];
body = "${read_file ${source etc/template/sh abs}}";
},
{
pattern = [ "*.[1-9]" ];
body = "${read_file ${source etc/template/man abs}}";
},
{
/* This one must be last. */
pattern = [ "*" ];
body = "${read_file ${source etc/template/generic abs}}";
}
];
develop_begin_command = "ln -s $bl bl";
/*
* Remove these files before we start integrating, to ensure that they
* will be rebuild containing the correct version information.
*/
integrate_begin_command =
"rm -f \
.cook.fp \
etc/cook/change_files* \
etc/cook/project_files* \
etc/new.so \
etc/version.so \
include/patchlevel.h \
";
symlink_exceptions =
[
".cook.fp",
"etc/new.so",
"etc/version.so",
"include/patchlevel.h",
"install-sh",
];
maximum_filename_length = 30;
filename_pattern_reject = [ "*.[cC]", "*.[cC]++" ];
project_specific =
[
{
name = "html:body-begin";
value =
@ 
@;
},
];
/*
* Add Signed-Off-By: lines to all change sets as they flow through the
* process.
*/
signed_off_by = true;
develop_end_policy_command = "aede-policy -p $project -c $change all";