/* * cook - file construction tool * Copyright (C) 1993-1995, 1997-1999, 2001, 2005-2007 Peter Miller; * All rights reserved. * * 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: instructions to aegis, per-project configuration */ /* * how to build the project * (actually, how to do an integration build) * mandatory */ build_command = "cook -b ${source etc/Howto.cook} project=$project \ change=$change version=$version arch=$arch -nl -st search_path=$search_path"; /* * When do -Integrate_Begin, link the baseline to the integration directory, * rather than copying it.. This should be much faster. * * There is a gotcha: all the recipes in Howto.cook must unlink their targets * before re-creating them, otherwise the baseline will be trashed. */ link_integration_directory = true; /* don't link/copy the bin dir */ integrate_begin_exceptions = [ "linux-i486/bin/*" ]; /* * At integrate pass time, the modification times of the files are * updated. This commands gives cook a channce to get the fingerprints * back in sync, which in turn speeds up development builds. */ build_time_adjust_notify_command = "set +e; \ find . -name .cook.fp -print | xargs rm; \ cook -nl -st --fp-update"; /* * create a new history * always executed as the project owner */ history_create_command = "fhist ${b $history} -cr -cu -i $input -p ${d $history} -r"; /* * get a file from history * may be executed by developers */ history_get_command = "fhist ${b $history} -e '$edit' -o $output -p ${d $history}"; /* * add a new change to the history * always executed as the project owner */ history_put_command = "fhist ${b $history} -cu -cr -i $input -p ${d $history} -r"; /* * query the topmost edit of a history file * Result to be printed on stdout. * may be executed by developers */ history_query_command = "fhist ${b $history} -l 0 -p ${d $history} -q"; /* * difference of 2 files */ diff_command = "fcomp -w -s $original $input -o $output"; /* * merge two competing edits * * fmerge -iic <-- ignore identical conflicts */ merge_command = "fmerge -iic $original $mostRecent $input -o $output -c $input,C"; /* * 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.$version etc/cook/project_files.$version"; project_file_command = "rm -f etc/cook/project_files.$version"; /* *o new file templates */ file_template = [ { pattern = [ "*.[cyl]" ]; body = "${read_file ${source etc/template/c abs}}"; }, { pattern = [ "*.h" ]; 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 = [ "*.man", "*.[12345678]" ]; body = "${read_file ${source etc/template/man abs}}"; }, { pattern = [ "*.so", "*.ms", "*.me" ]; body = "${read_file ${source etc/template/ms abs}}"; }, { pattern = [ "*" ]; body = "${read_file ${source etc/template/generic abs}}"; } ]; /* * Create a symbolic link to the baseline. * Note that Howto.cook now assumes its existence. */ develop_begin_command = "ln -s $baseline 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/version.so \ common/patchlevel.h \ bl blbl blblbl blblblbl \ "; symlink_exceptions = [ ".cook.fp", "etc/cook/change_files", "etc/cook/project_files", "etc/version.so", "common/patchlevel.h", "install-sh", "bl", "blbl", "blblbl", "blblblbl", ]; /* * list of architectures on which each change must build and test */ architecture = [ { name = "linux-i486"; pattern = "Linux-*-*-i[4-9]86"; } ]; /* * how to run tests * they need to know which arctitecture */ test_command = "$shell $filename $arch"; /* * limitations on project filenames */ maximum_filename_length = 14; /* * The develop_end_policy_command may be used to impose additional * policy before the aede command will complete successfully. */ develop_end_policy_command = "aede-policy"; project_specific = [ { name = "aede-policy"; value = "all no-tabs line-length white-space"; } ];