3 # Script that generates a patch file for BackupPC.
11 my $BaseVersion = "3.2.0";
12 my $PatchLevel = "pl0";
13 my $PatchVersion = "$BaseVersion$PatchLevel";
15 my $Base = "/home/craig/admin/packages/BackupPC-$BaseVersion";
16 my $TmpDir = "patch.tmp";
17 my $OutFile = "BackupPC-$PatchVersion.diff";
19 find({wanted => \&CopyFile, no_chdir => 1}, $Base);
23 open(OUT, ">", $OutFile) || die("can't open OutFile\n");
29 # $OutFile: BackupPC patch file generated
32 # This patch file should be applied to a cleanly unpacked BackupPC
33 # version $BaseVersion. Do not apply any old patch files; each
34 # patch file accumulates all previous changes.
38 # # fetch BackupPC-$BaseVersion.tar.gz
40 # tar zxvf BackupPC-$BaseVersion.tar.gz
41 # cd BackupPC-$BaseVersion
42 # patch -p0 < ../$OutFile
51 foreach my $dir ( qw(bin lib cgi-bin) ) {
52 open(DIFF, "diff -ur -I '^# Version .*, released ' $Base/$dir $TmpDir/$dir|")
53 || die("can't run diff\n");
55 next if ( /^Only/ || /^diff / );
56 s/^--- \Q$Base\//--- /;
57 s/^\+\+\+ \Q$TmpDir\//+++ /;
65 (my $file = $File::Find::name) =~ s{\Q$Base}{};
66 (my $dir = $file) =~ s{(.*)/.*}{$1};
69 #print("Got dir = $TmpDir/$dir, file = $file\n");
70 return if ( !-f $file );
71 mkpath("$TmpDir/$dir", 0, 0755) if ( !-d "$TmpDir/$dir" );
73 || die("Can't open $file for input\n");
74 open(OUT, ">", "$TmpDir/$file")
75 || die("Can't open $TmpDir/$file for output\n");
77 if ( /^use lib ".*BackupPC[\d.]*\/lib";/
78 || /^use lib "\/home\/pcbackup\/install\/lib";/ ) {
79 print OUT "use lib \"__INSTALLDIR__/lib\";\n";
80 } elsif ( $file =~ /Lib.pm/ && /(.*TopDir *=> .*)'.*',/ ) {
81 print OUT "$1'__TOPDIR__',\n";
82 } elsif ( $file =~ /Lib.pm/ && /(.*BinDir *=> .*)'.*',/ ) {
83 print OUT "$1'__INSTALLDIR__',\n";
84 } elsif ( $file =~ /Lib.pm/ && /(.*LibDir *=> .*)'.*',/ ) {
85 print OUT "$1'__INSTALLDIR__',\n";
86 } elsif ( $file =~ /Lib.pm/ && /(.*Version *=> .*)'.*',/ ) {
87 print OUT "$1'$PatchVersion',\n";
88 } elsif ( $file =~ /BackupPC_Admin/ && /(my *\$installDir *= *)'.*'/
90 print OUT "$1'__INSTALLDIR__/lib';\n";