mirror of
https://github.com/Gnucash/gnucash.git
synced 2024-11-26 02:40:43 -06:00
6290fdae4a
1) More meta data updates (.cvsignore updates, debian/* updates, gnucash.lsm) 2) Changes to make-gnucash-patch.in. I like the changes, but I don't know whether they would be universally liked, so pay attention to this one. Changes include: a) check out compared source from cvs b) use .cvsignore files to get a large part of the --exclude list. c) Keep track of past patches by not automatically overwriting old patches and put the patches in a directory to keep things neat. 3) Refactoring in src/engine/Transaction.c to remove the redundant code setting dates in transactions. 4) remove all the #if 0 blocks in src/engine/io-gnc{bin,xml}* (helped my see things more clearly when looking at the code. Again ignore it if this is inappropriate.) 5) append emacs local variable settings stuff to save file so it's known as an xml file. 6) Patch to cleanup startup some more. a) src/gnome/top-level.c: don't run load-account-file, split up startup into a couple of functions. b) src/gnome/window-main.h; src/gulie/gnc.gwp: add the new functions c) src/scm/main.scm: do the new startup sequence. d) All this so in a batch environment you can start up the gui system without bringing up the default window. 7) src/scm/report/budget-report.scm: some refactoring/cleanup done while looking at the code. Nothing functional different (at least there shouldn't be.) git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@3320 57a11ea4-9604-0410-9ed3-97b8803252fd
156 lines
3.4 KiB
Perl
156 lines
3.4 KiB
Perl
#!@-PERL-@ -w
|
|
# -*- perl -*-
|
|
#
|
|
# This perl script is used to make a patch for your GnuCash
|
|
# development work. All patches should be submitted to the
|
|
# mailing list gnucash-patches@gnucash.org. For more info
|
|
# consult the README.
|
|
#
|
|
# This script requires the programs 'makepatch', 'gzip',
|
|
# 'diff', and 'uuencode'.
|
|
#
|
|
# Author: Dave Peticolas <dave@krondo.com>
|
|
|
|
use strict;
|
|
|
|
use File::Basename;
|
|
|
|
###########################################################
|
|
# This section must be configured for your own setup. #
|
|
###########################################################
|
|
|
|
# The directory with the original gnucash sources
|
|
my $old = undef;
|
|
|
|
chomp(my $cwd = `pwd`);
|
|
|
|
my ($new, $gnc_home) = fileparse($cwd);
|
|
|
|
###########################################################
|
|
# This section should not need to be modified. #
|
|
###########################################################
|
|
|
|
# Allow the user to override the defaults with evnt vars.
|
|
|
|
if($ENV{'GNC_MAKEPATCH_OLD_DIR'}) {
|
|
$old = $ENV{'GNC_MAKEPATCH_OLD_DIR'};
|
|
}
|
|
|
|
if($ENV{'GNC_MAKEPATCH_NEW_DIR'}) {
|
|
$new = $ENV{'GNC_MAKEPATCH_NEW_DIR'};
|
|
}
|
|
|
|
if($ENV{'GNC_MAKEPATCH_HOME_DIR'}) {
|
|
$gnc_home = $ENV{'GNC_MAKEPATCH_HOME_DIR'};
|
|
}
|
|
|
|
|
|
# Switch to the home directory
|
|
print "Changing directory to $gnc_home\n";
|
|
chdir $gnc_home or die "Can't cd!\n";
|
|
|
|
if (not defined($old)) {
|
|
if (not -f "$new/CVS/Root") {
|
|
print "Source not checked out of CVS and no \$old set. Quitting...\n";
|
|
exit(1);
|
|
}
|
|
if (not -d "tmp") {
|
|
mkdir "tmp";
|
|
}
|
|
chdir "tmp";
|
|
system("cvs -d `cat ../$new/CVS/Root` co gnucash");
|
|
chdir "..";
|
|
$old = "tmp/gnucash";
|
|
}
|
|
|
|
chdir $gnc_home . "/" . $new or die "Can't cd!\n";
|
|
# Start out with our basic makepatch arguments
|
|
my @args = ('-verbose', '-diff', 'diff -u', '-exclude-vc');
|
|
|
|
# Add in the exclude patterns from the __DATA__ section
|
|
push_exclusions(\@args);
|
|
|
|
sub push_exclusions {
|
|
my $args = shift;
|
|
foreach my $pat (<DATA>) {
|
|
chomp($pat);
|
|
push(@{$args}, '-exclude', $pat) if $pat;
|
|
}
|
|
my @cvsignores = `find . -name '.cvsignore'`;
|
|
foreach my $one_ignore (@cvsignores) {
|
|
my ($name, $path) = fileparse($one_ignore);
|
|
open (IG, $one_ignore);
|
|
foreach my $fl (<IG>) {
|
|
chomp $fl;
|
|
$path =~ s/^\.\///;
|
|
push(@{$args}, '-exclude', $path . $fl) if $fl;
|
|
}
|
|
close (IG);
|
|
}
|
|
}
|
|
# Add the from and to directories for makepatch
|
|
push(@args, $old, $new);
|
|
print "Arguments are: " . join("; ", @args) . "\n";
|
|
|
|
chdir $gnc_home or die "Can't cd!\n";
|
|
|
|
# Erase the old files
|
|
#unlink('gnc.diff', 'gnucash.diff.gz', 'gnucash.diff.gz.uue');
|
|
|
|
if (not -d "diffs") {
|
|
mkdir "diffs";
|
|
}
|
|
|
|
my $date = `date '+%s'`;
|
|
chomp($date);
|
|
my $who = `whoami`;
|
|
chomp($who);
|
|
|
|
my $outfilename = "gnucash-$date-$who.diff";
|
|
|
|
# Invoke makepatch with standard out redirected to 'gnucash.diff'
|
|
open(OLDOUT, ">&STDOUT");
|
|
open(STDOUT, "> diffs/$outfilename") || die "Can't redirect stdout";
|
|
system('makepatch', @args);
|
|
close(STDOUT);
|
|
open(STDOUT, ">&OLDOUT");
|
|
print "makepatch done\n";
|
|
|
|
# Compress the patch
|
|
if (-f "diffs/$outfilename") {
|
|
system("gzip", "-9vf", "diffs/$outfilename");
|
|
}
|
|
|
|
# UU encode the compressed patch
|
|
# 'gnucash.diff.gz.uue' is the file you send.
|
|
if (-f "diffs/$outfilename.gz") {
|
|
system("uuencode diffs/$outfilename.gz $outfilename.gz > diffs/$outfilename.gz.uue");
|
|
}
|
|
|
|
print "diffs/$outfilename.gz.uue\n";
|
|
|
|
exit(0);
|
|
|
|
__DATA__
|
|
|
|
#*#
|
|
*.a
|
|
*.bak
|
|
*.bin
|
|
*.diff
|
|
*.diffs
|
|
*.gmo
|
|
*.lo
|
|
*.log
|
|
*.mo
|
|
*.moc
|
|
*.o
|
|
*.orig
|
|
*.patch
|
|
*.rej
|
|
*.tar.gz
|
|
*.wrap
|
|
*.xac.*.xac
|
|
*~
|
|
.#*
|