-#!/bin/perl
+#!/usr/bin/env perl
#
# makeDist: Build a BackupPC distribution
#
#
# Often the language files are not up to date, and makeDist
# exits after complaining about the lang files being inconsistent.
-# Use the -l option to turn off that behavior.
+# Use the -nolangCheck option to turn off that behavior.
#
# AUTHOR
# Craig Barratt <cbarratt@users.sourceforge.net>
#
# COPYRIGHT
-# Copyright (C) 2001-2006 Craig Barratt
+# Copyright (C) 2001-2010 Craig Barratt
#
# 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
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#========================================================================
-#
use strict;
use File::Path;
use File::Copy;
-use Getopt::Std;
+use Getopt::Long;
+use Data::Dumper;
+
use lib "./lib";
use BackupPC::Lib;
use BackupPC::Config::Meta qw(:all);
umask(0022);
-my $Version = "3.0.0";
-my $ReleaseDate = "28 Jan 2007";
-my $DistDir = "dist/BackupPC-$Version";
-
my @PerlSrc = qw(
bin/BackupPC
bin/BackupPC_archive
bin/BackupPC_archiveHost
+ bin/BackupPC_archiveStart
bin/BackupPC_attribPrint
bin/BackupPC_dump
bin/BackupPC_fixupBackupSummary
bin/BackupPC_tarExtract
bin/BackupPC_tarCreate
bin/BackupPC_tarPCCopy
- bin/BackupPC_compressPool
bin/BackupPC_zipCreate
bin/BackupPC_zcat
lib/BackupPC/Attrib.pm
lib/BackupPC/CGI/Summary.pm
lib/BackupPC/CGI/View.pm
lib/BackupPC/Config/Meta.pm
+ lib/BackupPC/Lang/cz.pm
lib/BackupPC/Lang/de.pm
lib/BackupPC/Lang/en.pm
lib/BackupPC/Lang/es.pm
lib/BackupPC/Lang/fr.pm
lib/BackupPC/Lang/it.pm
lib/BackupPC/Lang/nl.pm
+ lib/BackupPC/Lang/pl.pm
lib/BackupPC/Lang/pt_br.pm
+ lib/BackupPC/Lang/zh_CN.pm
lib/BackupPC/Storage/Text.pm
+ lib/BackupPC/Xfer.pm
lib/BackupPC/Xfer/Archive.pm
- lib/BackupPC/Xfer/BackupPCd.pm
- lib/BackupPC/Xfer/Smb.pm
- lib/BackupPC/Xfer/Tar.pm
+ lib/BackupPC/Xfer/Ftp.pm
+ lib/BackupPC/Xfer/Protocol.pm
lib/BackupPC/Xfer/Rsync.pm
lib/BackupPC/Xfer/RsyncDigest.pm
lib/BackupPC/Xfer/RsyncFileIO.pm
+ lib/BackupPC/Xfer/Smb.pm
+ lib/BackupPC/Xfer/Tar.pm
lib/BackupPC/Zip/FileMember.pm
+ lib/Net/FTP/AutoReconnect.pm
+ lib/Net/FTP/RetrHandle.pm
cgi-bin/BackupPC_Admin
);
my %opts;
-if ( !getopts("l", \%opts) || @ARGV != 0 ) {
- print("usage: $0 [-l]\n");
+$opts{langCheck} = 1;
+$opts{syntaxCheck} = 1;
+if ( !GetOptions(
+ \%opts,
+ "langCheck!",
+ "syntaxCheck!",
+ "version=s",
+ "releasedate=s",
+ ) || @ARGV != 0
+ || !defined($opts{version})
+ ) {
+ print STDERR <<EOF;
+usage: $0 [--nolangCheck] [--nosyntaxCheck] [--releasedate 'DD MMM YYYY'] --version X.Y.Z
+EOF
exit(1);
}
+my($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime();
+$year += 1900;
+
+my @month_abbr = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
+
+my $Version = $opts{version} || "3.2.0";
+my $ReleaseDate = $opts{releasedate} || "$mday $month_abbr[$mon] $year";
+my $DistDir = "dist/BackupPC-$Version";
+
#
# Check config parameters
#
$ConfVars->{ConfDir} = 2;
$ConfVars->{InstallDir} = 2;
$ConfVars->{CgiImageDir} = 2;
+$ConfVars->{ClientCharsetLegacy} = 2; # actually used
#
# These config parameters are used in the code to be backward compatible,
$ConfVars->{BlackoutWeekDays} = 2;
$ConfVars->{RsyncLogLevel} = 2;
+if ( $opts{syntaxCheck} ) {
+ system("perl -Ilib -c conf/config.pl >& /dev/null")
+ && die("$0: conf/config.pl contains a syntax error (or someone killed me)\n");
+}
foreach my $file ( @PerlSrc ) {
+ if ( $opts{syntaxCheck} ) {
+ system("perl -Ilib -c $file >& /dev/null")
+ && die("$0: $file contains a syntax error (or someone killed me)\n");
+ }
+ #
+ # Skip checking of bundled libraries not explicitly part of
+ # BackupPC
+ #
+ next if ( $file =~ m/lib\/Net\/FTP/ );
$errCnt += CheckConfigParams($file, $ConfVars, 1);
}
-if ( !$opts{l} ) {
+if ( !$opts{langCheck} ) {
$errCnt += CheckLangUsage();
$errCnt += CheckLangTags();
}
rmtree($DistDir, 0, 0);
mkpath($DistDir, 0, 0777);
-foreach my $dir ( qw(bin doc conf images init.d/src cgi-bin
+foreach my $dir ( qw(bin doc conf images init.d/src cgi-bin httpd/src
lib/BackupPC/CGI
lib/BackupPC/Config
lib/BackupPC/Lang
lib/BackupPC/Storage
lib/BackupPC/Xfer
lib/BackupPC/Zip
+ lib/Net/FTP
) ) {
mkpath("$DistDir/$dir", 0, 0777);
}
my %ConfName;
my $ConfPod = config2pod();
+
rmtree("doc", 0, 0);
mkpath("doc", 0, 0777);
InstallFile("doc-src/BackupPC.pod", "doc/BackupPC.pod");
foreach my $file ( (@PerlSrc,
<images/*.gif>,
<images/*.png>,
+ <images/*.ico>,
qw(
conf/config.pl
conf/hosts
conf/BackupPC_stnd.css
conf/BackupPC_stnd_orig.css
+ conf/sorttable.js
init.d/README
init.d/src/debian-backuppc
+ init.d/src/freebsd-backuppc
+ init.d/src/freebsd-backuppc2
init.d/src/gentoo-backuppc
init.d/src/gentoo-backuppc.conf
init.d/src/linux-backuppc
init.d/src/slackware-backuppc
init.d/src/solaris-backuppc
init.d/src/suse-backuppc
+ httpd/src/BackupPC.conf
doc/BackupPC.pod
doc/BackupPC.html
README
my($file, $dest) = @_;
unlink($dest) if ( -d $dest );
- if ( $file =~ /\.gif/ || $file =~ /\.png/ ) {
+ if ( $file =~ /\.gif/ || $file =~ /\.png/ || $file =~ /\.ico/ ) {
die("can't copy($file, $dest)\n") unless copy($file, $dest);
} else {
open(FILE, $file) || die("can't open $file for reading\n");
#
# fixup for conf links
#
- if ( !/A NAME="item_(%|_)conf/i ) {
+ if ( !/a name="_conf/i ) {
s/\$Conf{([^}]*)}/
defined($ConfName{$1})
- ? "\L<a href=\"#$ConfName{$1}\">\E\$Conf{$1}<\/A>"
+ ? "\L<a href=\"#$ConfName{$1}\">\E\$Conf{$1}<\/a>"
: "\$Conf{$1}"/eg;
}
s/^<DD>/<DD><P>/;
print OUT "$1'__TOPDIR__'$2\n";
} elsif ( $file =~ /Lib.pm/ && /^(\s*\$installDir\s*=\s*)'.*'(\s*if\s.*)/ ) {
print OUT "$1'__INSTALLDIR__'$2\n";
+ } elsif ( $file =~ /Lib.pm/ && /^(\s*ConfDir\s*=\>\s*\$confDir eq.*)'.*'(.*)/ ) {
+ print OUT "$1'__CONFDIR__'$2\n";
} elsif ( $file =~ /Lib.pm/ && /^(\s*my \$useFHS\s*=\s*)\d;/ ) {
print OUT "${1}0;\n";
} elsif ( $file =~ /Lib.pm/ && /(.*Version *=> .*)'[\w\d\.]+',/ ) {
push(@conf, $_);
my $text = "_conf_${var}_";
$text =~ s{[\W\s]}{_}g;
- $ConfName{$var} = "item_$text";
+ $ConfName{$var} = "$text";
} elsif ( /^$/ ) {
if ( $str ne "" && @conf ) {
$out .= "=item " . join("\n\n=item ", @conf) . "\n\n";
my($en, $enVars) = LangParse("lib/BackupPC/Lang/en.pm");
my($errors);
- foreach my $lang ( qw(fr.pm de.pm es.pm it.pm nl.pm pt_br.pm) ) {
+ foreach my $lang ( qw(cz.pm fr.pm de.pm es.pm it.pm nl.pm pl.pm pt_br.pm zh_CN.pm) ) {
my($d, $dVars) = LangParse("lib/BackupPC/Lang/$lang");
foreach my $v1 ( @$en ) {
my $v2 = shift(@$d);