[Box Backup-dev] COMMIT r692 - in box/chris/general: infrastructure lib/common lib/server
Ben Summers
boxbackup-dev@fluffy.co.uk
Sun, 30 Jul 2006 14:43:50 +0100
I'm not totally convinced this is a good idea. Those scripts are
already too complex.
Ben
On 26 Jul 2006, at 20:10, subversion@fluffy.co.uk wrote:
> Author: chris
> Date: 2006-07-26 19:10:10 +0000 (Wed, 26 Jul 2006)
> New Revision: 692
>
> Modified:
> box/chris/general/infrastructure/BoxPlatform.pm.in
> box/chris/general/infrastructure/makebuildenv.pl.in
> box/chris/general/lib/common/makeexception.pl.in
> box/chris/general/lib/server/makeprotocol.pl.in
> Log:
> * infrastructure/BoxPlatform.pm.in
> * infrastructure/makebuildenv.pl.in
> * lib/server/makeprotocol.pl.in
> * lib/common/makeexception.pl.in
> - Don't rewrite auto-generated files unless they have changed, to
> prevent
> unnecessary rebuilds
>
>
> Modified: box/chris/general/infrastructure/BoxPlatform.pm.in
> ===================================================================
> --- box/chris/general/infrastructure/BoxPlatform.pm.in 2006-07-26
> 19:09:05 UTC (rev 691)
> +++ box/chris/general/infrastructure/BoxPlatform.pm.in 2006-07-26
> 19:10:10 UTC (rev 692)
> @@ -1,7 +1,7 @@
> package BoxPlatform;
> use Exporter;
> @ISA = qw/Exporter/;
> -@EXPORT = qw/$build_os $build_cpu $target_os $make_command
> $bsd_make $platform_define $platform_cpu $gcc_v3 $product_version
> $product_name $install_into_dir $sub_make_options
> $platform_compile_line_extra $platform_link_line_extra
> $platform_lib_files $platform_exe_ext $target_windows/;
> +@EXPORT = qw/$build_os $build_cpu $target_os $make_command
> $bsd_make $platform_define $platform_cpu $gcc_v3 $product_version
> $product_name $install_into_dir $sub_make_options
> $platform_compile_line_extra $platform_link_line_extra
> $platform_lib_files $platform_exe_ext $target_windows
> update_if_changed/;
>
> BEGIN
> {
> @@ -110,5 +110,34 @@
> return $_[0].'=1';
> }
>
> +sub update_if_changed ($)
> +{
> + my ($file) = @_;
> + die "$file.new: not found" unless -r "$file.new";
> +
> + if (-r $file)
> + {
> + die "$file.new: not found" unless -r "$file.new";
> + if (system("diff -u $file $file.new") == 0)
> + {
> + unlink "$file.new";
> + return;
> + }
> + }
> +
> + if (system("cp $file.new $file") != 0)
> + {
> + die "failed to copy $file.new to $file";
> + }
> +
> + if (system("diff --brief $file $file.new") != 0)
> + {
> + die "$file and $file.new are still different";
> + }
> +
> + unlink "$file.new";
> + return;
> +}
> +
> 1;
>
>
> Modified: box/chris/general/infrastructure/makebuildenv.pl.in
> ===================================================================
> --- box/chris/general/infrastructure/makebuildenv.pl.in 2006-07-26
> 19:09:05 UTC (rev 691)
> +++ box/chris/general/infrastructure/makebuildenv.pl.in 2006-07-26
> 19:10:10 UTC (rev 692)
> @@ -114,7 +114,7 @@
> print "done\n\n";
>
>
> -# open test mail program template file
> +# open test main program template file
> my $test_template_file = 'infrastructure/buildenv-testmain-
> template.cpp';
> open FL,$test_template_file or die "Can't open test template file\n";
> my $test_template;
> @@ -296,7 +296,8 @@
> }
>
> # write a list of all the modules we've configured to use
> -open CONFIGURED_MODS,'>local/modules.h' or die "Can't write
> configured modules list";
> +open CONFIGURED_MODS,'>local/modules.h.new' or die
> + "Can't write configured modules list";
> print CONFIGURED_MODS <<__E;
> // automatically generated file, do not edit
> #ifndef _CONFIGURED_MODULES__H
> @@ -312,8 +313,8 @@
> #endif // _CONFIGURED_MODULES__H
> __E
> close CONFIGURED_MODS;
> +update_if_changed("local/modules.h");
>
> -
> # now make a list of all the .h files we can find, recording which
> module they're in
> my %hfiles;
> for my $mod (@modules, @implicit_deps)
> @@ -393,15 +394,19 @@
> {
> my $testmain = $test_template;
> $testmain =~ s/TEST_NAME/$name/g;
> - open TESTMAIN,">$mod/_main.cpp" or die "Can't open test main
> file for $mod for writing\n";
> + open TESTMAIN,">$mod/_main.cpp.new" or die
> + "Can't open test main file for $mod for writing\n";
> print TESTMAIN $testmain;
> close TESTMAIN;
> + update_if_changed("$mod/_main.cpp");
>
> # test file...
> sub writetestfile
> {
> my ($filename,$runcmd,$module) = @_;
> - open TESTFILE,">$filename" or die "Can't open test script file
> for $module for writing\n";
> + open TESTFILE,">$filename.new" or die
> + "Can't open test script file for $module " .
> + "for writing\n";
> print TESTFILE "#!/bin/sh\necho TEST: $module\n";
> if(-d "$module/testfiles")
> {
> @@ -420,6 +425,7 @@
> }
> print TESTFILE "$runcmd\n";
> close TESTFILE;
> + update_if_changed($filename);
> }
>
> writetestfile("$mod/_t",
> @@ -487,7 +493,8 @@
>
> # start the makefile
> my $mk_name_extra = ($bsd_make)?'':'X';
> - open MAKE,">$mod/Makefile".$mk_name_extra or die "Can't open
> Makefile for $mod\n";
> + open MAKE,">$mod/Makefile".$mk_name_extra.".new" or die
> + "Can't open Makefile for $mod\n";
> my $debug_link_extra = ($target_is_library)?'':'../../debug/lib/
> debug/debug.a';
>
> my $release_flags = "-O2";
> @@ -785,8 +792,8 @@
> if(!$bsd_make)
> {
> # need to post process this into a GNU makefile
> - open MAKE,">$mod/Makefile";
> - open MAKEB,"$mod/MakefileX";
> + open MAKE,">$mod/Makefile.new" or die $!;
> + open MAKEB,"$mod/MakefileX.new" or die $!;
>
> while(<MAKEB>)
> {
> @@ -798,8 +805,10 @@
>
> close MAKEB;
> close MAKE;
> - unlink "$mod/MakefileX";
> + unlink "$mod/MakefileX.new";
> }
> +
> + update_if_changed("$mod/Makefile");
> }
>
> print "\nType 'cd <module_dir>; $make_command' to build a module\n
> \n";
>
> Modified: box/chris/general/lib/common/makeexception.pl.in
> ===================================================================
> --- box/chris/general/lib/common/makeexception.pl.in 2006-07-26
> 19:09:05 UTC (rev 691)
> +++ box/chris/general/lib/common/makeexception.pl.in 2006-07-26
> 19:10:10 UTC (rev 692)
> @@ -1,9 +1,11 @@
> #!@PERL@
>
> +use lib "../../infrastructure";
> +use BoxPlatform;
> +
> # global exception list file
> my $global_list = '../../ExceptionCodes.txt';
>
> -
> my @exception;
> my @exception_desc;
> my $class;
> @@ -46,8 +48,8 @@
> # write the code
> print "Generating $class exception...\n";
>
> -open CPP,">autogen_${class}Exception.cpp" or die "Can't open cpp
> file for writing";
> -open H,">autogen_${class}Exception.h" or die "Can't open h file
> for writing";
> +open CPP,">autogen_${class}Exception.cpp.new" or die "Can't open
> cpp file for writing";
> +open H,">autogen_${class}Exception.h.new" or die "Can't open h
> file for writing";
>
> # write header file
> my $guardname = uc 'AUTOGEN_'.$class.'EXCEPTION_H';
> @@ -200,6 +202,9 @@
> close H;
> close CPP;
>
> +update_if_changed("autogen_${class}Exception.cpp");
> +update_if_changed("autogen_${class}Exception.h");
> +
> # update the global exception list
> my $list_before;
> my $list_after;
>
> Modified: box/chris/general/lib/server/makeprotocol.pl.in
> ===================================================================
> --- box/chris/general/lib/server/makeprotocol.pl.in 2006-07-26
> 19:09:05 UTC (rev 691)
> +++ box/chris/general/lib/server/makeprotocol.pl.in 2006-07-26
> 19:10:10 UTC (rev 692)
> @@ -170,8 +170,8 @@
>
> # open files
> my $h_filename = 'autogen_'.$protocol_name.'Protocol'.$type.'.h';
> -open CPP,'>autogen_'.$protocol_name.'Protocol'.$type.'.cpp';
> -open H,">$h_filename";
> +open CPP,'>autogen_'.$protocol_name.'Protocol'.$type.'.cpp.new';
> +open H,">$h_filename.new";
>
> print CPP <<__E;
>
> @@ -915,6 +915,8 @@
> close H;
> close CPP;
>
> +update_if_changed('autogen_'.$protocol_name.'Protocol'.$type.'.cpp');
> +update_if_changed($h_filename);
>
> sub obj_is_type
> {
>
> _______________________________________________
> Boxbackup-dev mailing list
> Boxbackup-dev@fluffy.co.uk
> http://lists.warhead.org.uk/mailman/listinfo/boxbackup-dev