revert fc1e9f253d
I don't know, if it made sense, but it definitely broke MSP patch creation in SUSE environment, so I reverted it. Change-Id: Ib6cea4a59993b4edadabfa1fdca42264a8eb2311
This commit is contained in:
parent
53cd03a533
commit
609583db3f
1 changed files with 0 additions and 196 deletions
|
@ -85,196 +85,6 @@ sub install_installation_sets
|
|||
return ($olddatabase, $newdatabase);
|
||||
}
|
||||
|
||||
#################################################################################
|
||||
# Collecting the destinations of all files with flag PATCH in a hash.
|
||||
#################################################################################
|
||||
|
||||
sub collect_patch_file_destinations
|
||||
{
|
||||
my ( $filesarray ) = @_;
|
||||
|
||||
my %patchfiledestinations = ();
|
||||
my %nopatchfiledestinations = ();
|
||||
my $patchcounter = 0;
|
||||
my $nopatchcounter = 0;
|
||||
|
||||
for ( my $i = 0; $i <= $#{$filesarray}; $i++ )
|
||||
{
|
||||
my $onefile = ${$filesarray}[$i];
|
||||
my $styles = "";
|
||||
|
||||
if ( $onefile->{'Styles'} ) { $styles = $onefile->{'Styles'} };
|
||||
|
||||
if ( $styles =~ /\bPATCH\b/ )
|
||||
{
|
||||
$patchfiledestinations{$onefile->{'destination'}} = 1;
|
||||
$patchcounter++;
|
||||
}
|
||||
else
|
||||
{
|
||||
$nopatchfiledestinations{$onefile->{'destination'}} = 1;
|
||||
$nopatchcounter++;
|
||||
}
|
||||
}
|
||||
|
||||
return (\%patchfiledestinations, \%nopatchfiledestinations, $patchcounter, $nopatchcounter);
|
||||
}
|
||||
|
||||
#################################################################################
|
||||
# Returning the first path segment of a path
|
||||
#################################################################################
|
||||
|
||||
sub get_first_path_segment
|
||||
{
|
||||
my ( $path ) = @_;
|
||||
|
||||
my $firstsegment = "";
|
||||
my $remainder = $path;
|
||||
|
||||
if ( $path =~ /^\s*(.*?)[\/\\](.*)\s*$/ )
|
||||
{
|
||||
$firstsegment = $1;
|
||||
$remainder = $2;
|
||||
}
|
||||
|
||||
return ($firstsegment, $remainder);
|
||||
}
|
||||
|
||||
#################################################################################
|
||||
# Finding the flexible path in the destinations, that are saved in
|
||||
# the hash $nopatchfiledestinations.
|
||||
#################################################################################
|
||||
|
||||
sub prepare_path_in_nopatchfilehash
|
||||
{
|
||||
my ($nopatchfiledestinations, $newpath) = @_;
|
||||
|
||||
my $infoline = "";
|
||||
my $flexiblepath = "";
|
||||
my $found = 0;
|
||||
my %checked_destinations = ();
|
||||
|
||||
foreach my $onedestination ( keys %{$nopatchfiledestinations} )
|
||||
{
|
||||
$flexiblepath = "";
|
||||
$found = 0;
|
||||
|
||||
my $found_first_segement = 1;
|
||||
my $firstsegement = "";
|
||||
my $fixedpath = $onedestination;
|
||||
my $testfile = $newpath . $installer::globals::separator . $fixedpath;
|
||||
|
||||
while (( ! -f $testfile ) && ( $found_first_segement ))
|
||||
{
|
||||
$firstsegement = "";
|
||||
( $firstsegement, $fixedpath ) = get_first_path_segment($fixedpath);
|
||||
|
||||
if ( $firstsegement ne "" )
|
||||
{
|
||||
$found_first_segement = 1;
|
||||
$flexiblepath = $flexiblepath . $firstsegement . $installer::globals::separator;
|
||||
}
|
||||
else
|
||||
{
|
||||
$found_first_segement = 0;
|
||||
}
|
||||
|
||||
$testfile = $newpath . $installer::globals::separator . $fixedpath;
|
||||
}
|
||||
|
||||
if ( -f $testfile ) { $found = 1; }
|
||||
|
||||
if ( $found ) { last; }
|
||||
}
|
||||
|
||||
if ( ! $found ) { installer::exiter::exit_program("ERROR: Could not determine flexible destination path for msp patch creation!", "prepare_path_in_nopatchfilehash"); }
|
||||
|
||||
$infoline = "Setting flexible path for msp creation: $flexiblepath\n";
|
||||
push( @installer::globals::logfileinfo, $infoline);
|
||||
|
||||
foreach my $onedestination ( keys %{$nopatchfiledestinations} )
|
||||
{
|
||||
$onedestination =~ s/^\s*\Q$flexiblepath\E//;
|
||||
$checked_destinations{$onedestination} = 1;
|
||||
}
|
||||
|
||||
return \%checked_destinations;
|
||||
}
|
||||
|
||||
#################################################################################
|
||||
# Synchronizing the two installed products in that way, that only
|
||||
# files with flag PATCH are different.
|
||||
#################################################################################
|
||||
|
||||
sub synchronize_installation_sets
|
||||
{
|
||||
my ($olddatabase, $newdatabase, $filesarray) = @_;
|
||||
|
||||
my $infoline = "\nSynchronizing installed products because of PATCH flag\n";
|
||||
push( @installer::globals::logfileinfo, $infoline);
|
||||
$infoline = "Old product: $olddatabase\n";
|
||||
push( @installer::globals::logfileinfo, $infoline);
|
||||
$infoline = "New product: $newdatabase\n";
|
||||
push( @installer::globals::logfileinfo, $infoline);
|
||||
|
||||
my ( $patchfiledestinations, $nopatchfiledestinations, $patchfilecounter, $nopatchfilecounter ) = collect_patch_file_destinations($filesarray);
|
||||
|
||||
$infoline = "Number of files with PATCH flag: $patchfilecounter\n";
|
||||
push( @installer::globals::logfileinfo, $infoline);
|
||||
|
||||
$infoline = "Number of files without PATCH flag: $nopatchfilecounter\n";
|
||||
push( @installer::globals::logfileinfo, $infoline);
|
||||
|
||||
foreach my $localfile ( sort keys %{$patchfiledestinations} )
|
||||
{
|
||||
$infoline = "\tPATCH file: $localfile\n";
|
||||
push( @installer::globals::logfileinfo, $infoline);
|
||||
}
|
||||
|
||||
my $oldpath = $olddatabase;
|
||||
if ( $^O =~ /cygwin/i ) { $oldpath =~ s/\\/\//g; }
|
||||
installer::pathanalyzer::get_path_from_fullqualifiedname(\$oldpath);
|
||||
$oldpath =~ s/\\\s*$//;
|
||||
$oldpath =~ s/\/\s*$//;
|
||||
|
||||
my $newpath = $newdatabase;
|
||||
if ( $^O =~ /cygwin/i ) { $newpath =~ s/\\/\//g; }
|
||||
installer::pathanalyzer::get_path_from_fullqualifiedname(\$newpath);
|
||||
$newpath =~ s/\\\s*$//;
|
||||
$newpath =~ s/\/\s*$//;
|
||||
|
||||
# The destination path is not correct. destinations in the hash contain
|
||||
# the flexible installation path, that is not part in the administrative installation
|
||||
$nopatchfiledestinations = prepare_path_in_nopatchfilehash($nopatchfiledestinations, $newpath);
|
||||
|
||||
foreach my $onedestination ( keys %{$nopatchfiledestinations} )
|
||||
{
|
||||
my $source = $oldpath . $installer::globals::separator . $onedestination;
|
||||
my $dest = $newpath . $installer::globals::separator . $onedestination;
|
||||
|
||||
if ( -f $source )
|
||||
{
|
||||
if ( -f $dest )
|
||||
{
|
||||
my $copyreturn = copy($source, $dest);
|
||||
# installer::systemactions::copy_one_file($source, $dest);
|
||||
# $infoline = "Synchronizing file: $source to $dest\n";
|
||||
# push( @installer::globals::logfileinfo, $infoline);
|
||||
}
|
||||
else
|
||||
{
|
||||
$infoline = "Not synchronizing. Destination file \"$dest\" does not exist.\n";
|
||||
push( @installer::globals::logfileinfo, $infoline);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$infoline = "Not synchronizing. Source file \"$source\" does not exist.\n";
|
||||
push( @installer::globals::logfileinfo, $infoline);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#################################################################################
|
||||
# Extracting all tables from a pcp file
|
||||
#################################################################################
|
||||
|
@ -1386,12 +1196,6 @@ sub create_msp_patch
|
|||
installer::logger::print_message( "... installing products ...\n" );
|
||||
my ($olddatabase, $newdatabase) = install_installation_sets($installationdir);
|
||||
|
||||
installer::logger::include_timestamp_into_logfile("\nPerformance Info: Starting synchronization of installation sets");
|
||||
|
||||
# Synchronizing installed products, allowing only different files with PATCH flag
|
||||
installer::logger::print_message( "... synchronizing installation sets ...\n" );
|
||||
synchronize_installation_sets($olddatabase, $newdatabase, $filesarray);
|
||||
|
||||
installer::logger::include_timestamp_into_logfile("\nPerformance Info: Starting pcp file creation");
|
||||
|
||||
# Create pcp file
|
||||
|
|
Loading…
Reference in a new issue