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:
parent
20f1c41ca7
commit
25e1b9e49c
36
Makefile.PL
36
Makefile.PL
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
@ -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__
|
||||
|
|
|
|||
Loading…
Reference in New Issue