[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