/* * 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";