installer: added 'make upgrade' target

INTRANET_TMPL_DIR
INTRANET_WWW_DIR
OPAC_TMPL_DIR
OPAC_WWW_DIR
KOHA_CONF_DIR
OPAC_TMPL_DIR
OPAC_WWW_DIR
PAZPAR2_CONF_DIR
ZEBRA_CONF_DIR

For each directory on the list, if an existing file
installed file is different from the version
coming from the new package, it is copied to a backup file
whose name will have the suffix "_koha_<old_version_number>"
or "_upgrade_backup", depending on whether
the --prev-install-log option was used or not
during 'perl Makefile.PL'.

The directories whose files were backed up were
chosen because they contain configuration and
HTML files that a non-programmer Koha user
is likely to change.  Consequently, the backup
files produced by 'make upgrade' are not a substitute
for doing a complete backup of one's Koha
installation before upgrading.

Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
This commit is contained in:
Galen Charlton 2008-02-15 21:04:35 +13:00 committed by Joshua Ferraro
parent 20f1c41ca7
commit 25e1b9e49c
3 changed files with 125 additions and 1 deletions

View File

@ -751,6 +751,7 @@ sub get_install_log_values {
next if /^#/ or /^\s*$/;
next if /^=/;
next unless m/=/;
s/\s+$//g;
my ($key, $value) = split /=/, $_, 2;
$values->{$key} = $value;
}
@ -1355,6 +1356,8 @@ install :: all install_koha warn_koha_env_vars
$install .= _update_zebra_conf_target();
}
$install .= upgrade();
return $install;
}
@ -1378,6 +1381,39 @@ sub _update_zebra_conf_target {
return $target;
}
sub upgrade {
my $upgrade = "";
my $backup_suffix;
if (exists $install_log_values{'KOHA_INSTALLED_VERSION'}) {
my $version = $install_log_values{'KOHA_INSTALLED_VERSION'};
$version =~ s/\./_/g;
$backup_suffix = "_koha_$version";
} else {
$backup_suffix = "_upgrade_backup";
}
$upgrade .= qq/
MOD_BACKUP = \$(ABSPERLRUN) -Minstall_misc::UpgradeBackup -e 'backup_changed_files({\@ARGV}, '$backup_suffix', '\''\$(VERBINST)'\'', '\''\$(UNINST)'\'');' --
upgrade :: make_upgrade_backup install
\t\$(NOECHO) \$(NOOP)
make_upgrade_backup ::
\t\$(NOECHO) umask 022; \$(MOD_BACKUP) \\
\t\t\$(KOHA_INST_KOHA_CONF_DIR) \$(KOHA_DEST_KOHA_CONF_DIR) \\
\t\t\$(KOHA_INST_INTRANET_TMPL_DIR) \$(KOHA_DEST_INTRANET_TMPL_DIR) \\
\t\t\$(KOHA_INST_INTRANET_WWW_DIR) \$(KOHA_DEST_INTRANET_WWW_DIR) \\
\t\t\$(KOHA_INST_OPAC_TMPL_DIR) \$(KOHA_DEST_OPAC_TMPL_DIR) \\
\t\t\$(KOHA_INST_OPAC_WWW_DIR) \$(KOHA_DEST_OPAC_WWW_DIR) \\
\t\t\$(KOHA_INST_OPAC_TMPL_DIR) \$(KOHA_DEST_OPAC_TMPL_DIR) \\
\t\t\$(KOHA_INST_OPAC_WWW_DIR) \$(KOHA_DEST_OPAC_WWW_DIR) \\
\t\t\$(KOHA_INST_PAZPAR2_CONF_DIR) \$(KOHA_DEST_PAZPAR2_CONF_DIR) \\
\t\t\$(KOHA_INST_ZEBRA_CONF_DIR) \$(KOHA_DEST_ZEBRA_CONF_DIR)
/;
return $upgrade;
}
sub postamble {
# put directory mappings into Makefile
# so that Make will export as environment

View File

@ -0,0 +1,88 @@
package install_misc::UpgradeBackup;
# Copyright (C) 2008 LibLime
#
# This file is part of Koha.
#
# Koha is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
# Suite 330, Boston, MA 02111-1307 USA
use strict;
use File::Compare qw(compare);
use Cwd qw(cwd);
use File::Copy;
use File::Find;
use File::Spec;
use Exporter;
use vars qw(@ISA @EXPORT $VERSION);
@ISA = ('Exporter');
@EXPORT = ('backup_changed_files');
$VERSION = '3.00';
=head1 NAME
install_misc::UpgradeBackup
=head1 DESCRIPTION
This is a helper module used during a 'make upgrade' that
creates backups of files updated during an upgrade.
=cut
sub backup_changed_files {
my $from_to = shift;
my $suffix = shift;
my $verbose = shift;
my $inc_uninstall = shift;
my $cwd = cwd();
foreach my $sourceroot (sort keys %$from_to) {
my $targetroot = $from_to->{$sourceroot};
my $currdir = File::Spec->catdir($cwd, $sourceroot);
next unless -d $currdir;
chdir $currdir or die "could not change to $currdir: $!";
# expand path
find(sub {
return unless -f $_;
my $filename = $_;
my $targetdir = File::Spec->catdir($targetroot, $File::Find::dir);
my $targetfile = File::Spec->catfile($targetdir, $filename);
my $sourcedir = File::Spec->catdir($currdir, $File::Find::dir);
my $sourcefile = File::Spec->catfile($sourcedir, $filename);
if (-f $targetfile) {
my ($size) = (stat $sourcefile)[7];
my $backup = $targetfile . $suffix;
unless (-s $targetfile == $size and not compare($sourcefile, $targetfile)) {
print "Backed up $targetfile to $backup\n";
File::Copy::copy($targetfile, $backup);
}
}
}, ".");
}
}
=head1 AUTHOR
Galen Charlton <galen.charlton@liblime.com>
=cut
1;

View File

@ -3,7 +3,7 @@
# It is meant for use during future
# upgrades of Koha, and should not
# be edited.
KOHA_INSTALLED_VERSION=__KOHA_INSTALLED_VERSION__
KOHA_INSTALLED_VERSION=__KOHA_INSTALLED_VERSION__
LOG_DIR=__LOG_DIR__
DB_TYPE=__DB_TYPE__
DB_NAME=__DB_NAME__