/* * aegis - project change supervisor * Copyright (C) 1991-1996, 1998, 2001, 2002, 2004-2008 Peter Miller * Copyright (C) 2007 Walter Franzini * * 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 3 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, see * . */ configuration_directory = "aegis.conf.d"; /* * how to build the project * mandatory */ build_command = "PATH=${path_reduce /usr/local/bin:${env PATH}} " "SHELL=${sh} " "cook -b ${source etc/Howto.cook} -nl -st " "project=$project " "change=$change " "version=$version " "arch=$uname " "search_path=$search_path " "autoconf=${Project_Specific autoconf} " "autoheader=${Project_Specific autoheader} " "configure_args=${Project_Specific configure_args} " "${uname}_c++=${Project_Specific ${uname}_c++} " "c++=${Project_Specific c++} " "${uname}_c++_flags=${Project_Specific ${uname}_c++_flags} " "${uname}_ld_flags=${Project_Specific ${uname}_ld_flags} " "${uname}_libs=${Project_Specific ${uname}_libs} " "primary_arch=${Project_Specific primary_arch} " ; /* * 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-*/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. * We don't want to execute an empty rm, but xargs -r is not portable, * so use a while read loop. */ build_time_adjust_notify_command = "set +e; " "find . -name .cook.fp -print | while read f;do rm -f ${$}f;done; " "cook -nl -st --fp-update" ; /* * create a new history * always executed as the project owner */ history_create_command = "fhist ${quote ${basename $history}} -cr -cu -i ${quote $input} \ -p ${quote ${dirname $history}} -r"; /* * get a file from history * may be executed by developers */ history_get_command = "fhist ${quote ${basename $history}} -e ${quote $edit} \ -o ${quote $output} -p ${quote ${dirname $history}} -v 0"; /* * add a new change to the history * always executed as the project owner */ history_put_command = "fhist ${quote ${basename $history}} -cr -cu -i ${quote $input} \ -p ${quote ${dirname $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 ${quote ${basename $history}} -l 0 \ -p ${quote ${dirname $history}} -q"; /* * difference of 2 files */ diff_command = "fcomp -w -s ${quote $original} ${quote $input} -o ${quote $output}"; patch_diff_command = "set +e; " "diff -u -L ${quote $index} -L ${quote $index} " "${quote $original} ${quote $input} > ${quote $output}; " "test $? -le 1"; /* * difference of 3 files */ merge_command = "fmerge -ignore_identical_conflicts " "${quote $original} ${quote $mostrecent} ${quote $input} " "-o ${quote $output} -c ${quote $output,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"; /* * make sure the filenames are OK with Windows. */ windows_filename_required = true; /* * watch out for these */ trojan_horse_suspect = [ "*.awk", "*.cook", "*.sh", ]; /* * Limit filenames to 15 characters. * * For a while the Aegis sources could be compiled on old V7 14 * character filename systems, however that hasn't be true for some * time (due to all sorts of files being constructed at build time, all * of which were longer than the source files). * * When the langauge was change from C to C++, the file name length * increased to 15. Any limit could have been chosen, including 255, * but I have this feeling that shorter filenames are better. */ maximum_filename_length = 15; posix_filename_charset = true; filename_pattern_reject = [ /* No Aegis-special file names. */ "*,*", /* No C source files */ "*.c", /* No C++ files with upper case letters in their names. */ "*[A-Z]*.cc" "*[A-Z]*.h" /* No alternative C++ file names. */ "*.C", "*.CC", "*.[cC][xX][xX]", "*.H", "*.[hH][hH]", "*.[hH][xX][xX]", ]; /* * new file templates */ file_template = [ { pattern = [ "*.[cyl]" ]; body = "${read_file ${source etc/template/c abs}}"; }, { pattern = [ "*.cc" ]; body = "${read_file ${source etc/template/cc 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 = [ "*.rpt" ]; body = "${read_file ${source etc/template/report abs}}"; }, { pattern = [ "*.so", "*.ms", "*.me" ]; body = "${read_file ${source etc/template/ms abs}}"; }, { pattern = [ "*.po" ]; body = "${read_file ${source etc/template/po abs}}"; }, { pattern = [ "*" ]; body = "${read_file ${source etc/template/generic abs}}"; } ]; 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 \ etc/cook/change_files* \ etc/cook/project_files* \ etc/version.so \ common/patchlevel.h \ bl blbl blblbl blblblbl \ "; test_command = "AEGIS_SEARCH_PATH=$search_path " "EXEC_SEARCH_PATH=${search_path_exe} " "PATH=${path_reduce ${addpathsuffix $arch/bin ${search_path_exe}} " "/usr/local/bin ${env PATH}} " # for shared library, eventually... # "LD_LIBRARY_PATH=${path_reduce " # "${addpathsuffix $arch/libaegis/.libs ${search_path_exe}} " # " ${env LD_LIBRARY_PATH} /lib /usr/lib} " "$shell ${quote $filename} ${quote $arch}"; new_test_filename = "test/" "${zpad $hundred 2}/" "t${zpad $number 4}${left $type 1}-${left $user 4}.sh" ; project_specific = [ { name = "html:body-begin"; value = @ @; }, { name = "html:body-end"; value = @
Using the aeget interface, you can set HTML headers and footers for this listing separately for each project using the “html:body-begin” and “html:body-end” project specific attributes, see aeget(1) for more information.@; }, ]; /* * Add Signed-Off-By: lines to all change sets as they flow through the * process. */ signed_off_by = true;