diff options
author | Tor Lillqvist <tml@iki.fi> | 2013-01-08 23:47:02 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@suse.cz> | 2013-01-10 09:32:36 +0000 |
commit | 26c142ca5f2b405b02ab5701dfaeab7bf281a727 (patch) | |
tree | 5f13ab387169c4a17ce6c1304430e23eb49f868d /solenv | |
parent | add rule for generating fresh pot (po template) files (diff) | |
download | core-26c142ca5f2b405b02ab5701dfaeab7bf281a727.tar.gz core-26c142ca5f2b405b02ab5701dfaeab7bf281a727.zip |
Kill the ancient StarOffice "patch" concept
For Windows, superseded by Windows Installer patching (i.e., creating
.msp files), which is something completely different. (And quite hard
to get working... but still a saner approach, I think.)
For Linux, many distros use delta RPMs or similar, so no home-grown
LO-specific patching mechanism is needed.
Remove the -patch and -patchinc command-line options to
make_installer.pl and all code that was invoked only when using those.
Remove the PATCH and PATCH_ONLY flags in scp2.
Remove the patchmsi.dll Windows Installer custom action.
Change-Id: I09e949e601a969f88eff60067faa2352f4f89537
Reviewed-on: https://gerrit.libreoffice.org/1605
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Tested-by: Miklos Vajna <vmiklos@suse.cz>
Diffstat (limited to 'solenv')
22 files changed, 69 insertions, 1590 deletions
diff --git a/solenv/bin/modules/installer.pm b/solenv/bin/modules/installer.pm index 76455f1c84ee..4df3bc759b42 100644 --- a/solenv/bin/modules/installer.pm +++ b/solenv/bin/modules/installer.pm @@ -298,7 +298,6 @@ sub run { my $dirsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Directory"); if ( $installer::globals::languagepack ) { installer::scriptitems::use_langpack_hostname($dirsinproductarrayref); } - if ( $installer::globals::patch ) { installer::scriptitems::use_patch_hostname($dirsinproductarrayref); } if ( $allvariableshashref->{'SHIFT_BASIS_INTO_BRAND_LAYER'} ) { $dirsinproductarrayref = installer::scriptitems::shift_basis_directory_parents($dirsinproductarrayref); } if ( $allvariableshashref->{'OFFICEDIRECTORYNAME'} ) { installer::scriptitems::set_officedirectory_name($dirsinproductarrayref, $allvariableshashref->{'OFFICEDIRECTORYNAME'}); } @@ -329,11 +328,6 @@ sub run { $filesinproductarrayref = installer::scriptitems::remove_Helppacklibraries_from_Installset($filesinproductarrayref); } - if (! $installer::globals::patch) - { - $filesinproductarrayref = installer::scriptitems::remove_patchonlyfiles_from_Installset($filesinproductarrayref); - } - installer::logger::print_message( "... analyzing scpactions ... \n" ); my $scpactionsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "ScpAction"); @@ -341,7 +335,6 @@ sub run { if ( $installer::globals::languagepack ) { installer::scriptitems::use_langpack_copy_scpaction($scpactionsinproductarrayref); } if ( $installer::globals::helppack ) { installer::scriptitems::use_langpack_copy_scpaction($scpactionsinproductarrayref); } if ( $allvariableshashref->{'PRODUCTNAME'} eq "LibO-dev" ) { installer::scriptitems::use_devversion_copy_scpaction($scpactionsinproductarrayref); } - if ( $installer::globals::patch ) { installer::scriptitems::use_patch_copy_scpaction($scpactionsinproductarrayref); } installer::scriptitems::change_keys_of_scpactions($scpactionsinproductarrayref); @@ -442,12 +435,6 @@ sub run { installer::logger::print_message( "------------------------------------\n" ); installer::logger::print_message( "... languages $$languagestringref ... \n" ); - if ( $installer::globals::patch ) - { - $installer::globals::addlicensefile = 0; # no license files for patches - $installer::globals::makedownload = 0; - } - if ( $installer::globals::languagepack ) { $installer::globals::addsystemintegration = 0; @@ -743,7 +730,7 @@ sub run { my $profilesinproductlanguageresolvedarrayref; my $profileitemsinproductlanguageresolvedarrayref; - if ((!($installer::globals::is_copy_only_project)) && (!($installer::globals::product =~ /ada/i )) && (!($installer::globals::languagepack)) && (!($installer::globals::helppack))) + if ((!($installer::globals::is_copy_only_project)) && (!($installer::globals::languagepack)) && (!($installer::globals::helppack))) { installer::logger::print_message( "... creating profiles ...\n" ); @@ -757,6 +744,8 @@ sub run { installer::scriptitems::replace_setup_variables($profileitemsinproductlanguageresolvedarrayref, $languagestringref, $allvariableshashref); + # Note that patch_user_dir is not related to the killed + # ancient (not MSP) "patch" thing, I think. if ( $installer::globals::patch_user_dir ) { installer::scriptitems::replace_userdir_variable($profileitemsinproductlanguageresolvedarrayref); @@ -878,32 +867,6 @@ sub run { } - # Collecting all files without flag PATCH (for maintenance reasons) - if ( $installer::globals::patch ) { installer::worker::collect_all_files_without_patch_flag($filesinproductlanguageresolvedarrayref); } - - # Patch projects can now start to select the required information - if (( $installer::globals::patch ) && (( $installer::globals::issolarispkgbuild ) || ( $installer::globals::iswindowsbuild ))) - { - $filesinproductlanguageresolvedarrayref = installer::worker::select_patch_items($filesinproductlanguageresolvedarrayref, "File"); - $scpactionsinproductlanguageresolvedarrayref = installer::worker::select_patch_items($scpactionsinproductlanguageresolvedarrayref, "ScpAction"); - $linksinproductlanguageresolvedarrayref = installer::worker::select_patch_items($linksinproductlanguageresolvedarrayref, "Shortcut"); - $unixlinksinproductlanguageresolvedarrayref = installer::worker::select_patch_items($unixlinksinproductlanguageresolvedarrayref, "Unixlink"); - $folderitemsinproductlanguageresolvedarrayref = installer::worker::select_patch_items($folderitemsinproductlanguageresolvedarrayref, "FolderItem"); - # @{$folderitemsinproductlanguageresolvedarrayref} = (); # no folderitems in languagepacks - - if ( $installer::globals::iswindowsbuild ) - { - $registryitemsinproductlanguageresolvedarrayref = installer::worker::select_patch_items_without_name($registryitemsinproductlanguageresolvedarrayref, "RegistryItem"); - - installer::worker::prepare_windows_patchfiles($filesinproductlanguageresolvedarrayref, $languagestringref, $allvariableshashref); - - # For Windows patches, the directories can now be collected again - ($directoriesforepmarrayref, $alldirectoryhash) = installer::scriptitems::collect_directories_from_filesarray($filesinproductlanguageresolvedarrayref); - - @$directoriesforepmarrayref = sort { $a->{"HostName"} cmp $b->{"HostName"} } @$directoriesforepmarrayref; - } - } - ######################################################### # Collecting all scp actions ######################################################### @@ -1012,8 +975,6 @@ sub run { my $shellscriptsfilename = ""; if ( $onepackage->{'script'} ) { $shellscriptsfilename = $onepackage->{'script'}; } - # no scripts for Solaris patches! - if (( $installer::globals::patch ) && ( $installer::globals::issolarispkgbuild )) { $shellscriptsfilename = ""; } ########################### # package name @@ -1101,22 +1062,6 @@ sub run { next; # next package, end of loop ! } - ################################################################# - # nothing to do for Linux patches, if no file has flag PATCH - ################################################################# - - # Linux Patch: The complete RPM has to be built, if one file in the RPM has the flag PATCH (also for DEBs) - if (( $installer::globals::patch ) && (( $installer::globals::isrpmbuild ) || ( $installer::globals::isdebbuild ))) - { - my $patchfiles = installer::worker::collect_all_items_with_special_flag($filesinpackage ,"PATCH"); - if ( ! ( $#{$patchfiles} > -1 )) - { - $infoline = "\n\nLinux Patch: No patch file in package: $packagename \-\> Skipping\n\n"; - push(@installer::globals::logfileinfo, $infoline); - next; - } - } - ########################################### # Stripping libraries ########################################### @@ -1152,18 +1097,6 @@ sub run { my $epmheaderref = installer::epmfile::create_epm_header($allvariableshashref, $filesinproductlanguageresolvedarrayref, $languagesarrayref, $onepackage); installer::epmfile::adding_header_to_epm_file(\@epmfile, $epmheaderref); - if (( $installer::globals::patch ) && ( $installer::globals::issolarispkgbuild )) - { - $filesinpackage = installer::worker::analyze_patch_files($filesinpackage); - - if ( ! ( $#{$filesinpackage} > -1 )) - { - $infoline = "\nNo file in package: $packagename \-\> Skipping\n"; - push(@installer::globals::logfileinfo, $infoline); - next; # next package, end of loop ! - } - } - # adding directories, files and links into epm file installer::epmfile::put_directories_into_epmfile($dirsinpackage, \@epmfile, $allvariableshashref, $packagerootpath); @@ -1292,10 +1225,6 @@ sub run { # Creating installation set for Unix help packs, that are not part of multi lingual installation sets if ( ( $installer::globals::helppack ) && ( ! $installer::globals::debian ) && ( ! $installer::globals::makedownload ) ) { installer::helppack::build_installer_for_helppack($installer::globals::epmoutpath, $allvariableshashref, $includepatharrayref, $languagesarrayref, $languagestringref); } - # Finalizing patch installation sets - if (( $installer::globals::patch ) && ( $installer::globals::issolarispkgbuild )) { installer::epmfile::finalize_patch($installer::globals::epmoutpath, $allvariableshashref); } - if (( $installer::globals::patch ) && ( $installer::globals::isrpmbuild )) { installer::epmfile::finalize_linux_patch($installer::globals::epmoutpath, $allvariableshashref, $includepatharrayref); } - chdir($currentdir); # changing back into start directory } @@ -1731,7 +1660,6 @@ sub run { my $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "downloadname"); if ( $installer::globals::languagepack ) { $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "langpackdownloadname"); } if ( $installer::globals::helppack ) { $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "helppackdownloadname"); } - if ( $installer::globals::patch ) { $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "patchdownloadname"); } if ( $$downloadname ne "" ) { $create_download = 1; } if ( $installer::globals::iswindowsbuild ) diff --git a/solenv/bin/modules/installer/archivefiles.pm b/solenv/bin/modules/installer/archivefiles.pm index bd26953f7c4a..11498f836de9 100644 --- a/solenv/bin/modules/installer/archivefiles.pm +++ b/solenv/bin/modules/installer/archivefiles.pm @@ -212,18 +212,6 @@ sub resolving_archive_flag my $select_patch_files = 0; my $patchlistfiles = ""; my @keptpatchflags = (); - if (( $styles =~ /\bPATCH\b/ ) && ( $onefile->{'Patchfiles'} ) && ( $installer::globals::patch )) - { - $select_patch_files = 1; # special handling if a Patchlist is defined - $patchlistfiles = get_patch_file_list( $onefile->{'Patchfiles'} ); - $infoline = "Patch file list defined at file: $onefile->{'Name'} :\n"; - push( @installer::globals::logfileinfo, $infoline); - for ( my $k = 0; $k <= $#{$patchlistfiles}; $k++ ) - { - $infoline = "\"${$patchlistfiles}[$k]\"\n"; - push( @installer::globals::logfileinfo, $infoline); - } - } if ( $onefile->{'Patchfiles'} ) { $onefile->{'Patchfiles'} = ""; } # Patch file list no longer required @@ -398,24 +386,6 @@ sub resolving_archive_flag } } - if ( $select_patch_files ) - { - # Is this file listed in the Patchfile list? - # $zipname (filename including path in zip file has to be listed in patchfile list - - if ( ! grep {$_ eq $zipname} @{$patchlistfiles} ) - { - $newfile{'Styles'} =~ s/\bPATCH\b//; # removing the flag PATCH - $newfile{'Styles'} =~ s/\,\s*\,/\,/; - $newfile{'Styles'} =~ s/\(\s*\,/\(/; - $newfile{'Styles'} =~ s/\,\s*\)/\)/; - } - else - { - push( @keptpatchflags, $zipname); # collecting all PATCH flags - } - } - if ( $rename_to_language ) { my $newzipname = put_language_into_name($zipname, $onelanguage); @@ -484,43 +454,6 @@ sub resolving_archive_flag } - # Comparing the content of @keptpatchflags and $patchlistfiles - # Do all files from the patch list have a PATCH flag ? - # @keptpatchflags contains only files included in $patchlistfiles. But are all - # files from $patchlistfiles included in @keptpatchflags? - - if ( $select_patch_files ) - { - my $number = $#{$patchlistfiles} + 1; - $infoline = "PATCHLIST: Number of files in patch list: $number\n"; - push( @installer::globals::logfileinfo, $infoline); - $number = $#keptpatchflags + 1; - $infoline = "PATCHLIST: Number of kept PATCH flags: $number\n"; - push( @installer::globals::logfileinfo, $infoline); - - for ( my $k = 0; $k <= $#keptpatchflags; $k++ ) - { - $infoline = "KEPT PATCH FLAGS: $keptpatchflags[$k]\n"; - push( @installer::globals::logfileinfo, $infoline); - } - - my @warningfiles = (); - - for ( my $k = 0; $k <= $#{$patchlistfiles}; $k++ ) - { - if ( ! grep {$_ eq ${$patchlistfiles}[$k]} @keptpatchflags ) - { - push(@warningfiles, ${$patchlistfiles}[$k]); - } - } - - for ( my $k = 0; $k <= $#warningfiles; $k++ ) - { - $infoline = "WARNING: $warningfiles[$k] did not keep PATCH flag (does not exist in zip file)!\n"; - push( @installer::globals::logfileinfo, $infoline); - } - } - if ( $unziperror ) { installer::logger::print_warning( "Repeating to unpack $sourcepath! \n" ); diff --git a/solenv/bin/modules/installer/control.pm b/solenv/bin/modules/installer/control.pm index 3f88c472ec22..6baced7633c3 100644 --- a/solenv/bin/modules/installer/control.pm +++ b/solenv/bin/modules/installer/control.pm @@ -484,7 +484,6 @@ sub set_addsystemintegration if ( $allvariables->{'ADDSYSTEMINTEGRATION'} ) { $installer::globals::addsystemintegration = 1; } - if ( $installer::globals::patch ) { $installer::globals::addsystemintegration = 0; } if ( $installer::globals::languagepack ) { $installer::globals::addsystemintegration = 0; } if ( $installer::globals::helppack ) { $installer::globals::addsystemintegration = 0; } if (( $installer::globals::packageformat eq "native" ) || ( $installer::globals::packageformat eq "portable" )) { $installer::globals::addsystemintegration = 0; } diff --git a/solenv/bin/modules/installer/epmfile.pm b/solenv/bin/modules/installer/epmfile.pm index fa66fd91db8e..58fe27d4bab0 100644 --- a/solenv/bin/modules/installer/epmfile.pm +++ b/solenv/bin/modules/installer/epmfile.pm @@ -487,16 +487,16 @@ sub create_epm_header my $replaces = ""; - if (( $installer::globals::issolarispkgbuild ) && ( ! $installer::globals::patch )) + if ( $installer::globals::issolarispkgbuild ) { $replaces = "solarisreplaces"; # the name in the packagelist } - elsif (( $installer::globals::islinuxbuild ) && ( ! $installer::globals::patch )) + elsif ( $installer::globals::islinuxbuild ) { $replaces = "linuxreplaces"; # the name in the packagelist } - if (( $replaces ) && ( ! $installer::globals::patch )) + if ( $replaces ) { if ( $onepackage->{$replaces} ) { @@ -549,13 +549,6 @@ sub create_epm_header $provides = "freebsdprovides"; # the name in the packagelist $requires = "freebsdrequires"; # the name in the packagelist } - elsif (( $installer::globals::isrpmbuild ) && - ( $installer::globals::patch ) && - ( exists($onepackage->{'linuxpatchrequires'}) )) - { - $provides = "provides"; # the name in the packagelist - $requires = "linuxpatchrequires"; # the name in the packagelist - } else { $provides = "provides"; # the name in the packagelist @@ -1008,124 +1001,6 @@ sub set_revision_in_pkginfo } ######################################################## -# Setting Patch information for Respin versions -# into pkginfo file. This prevents Respin versions -# from patching. -######################################################## - -sub set_patchlist_in_pkginfo_for_respin -{ - my ($changefile, $filename, $allvariables, $packagename) = @_; - - my $patchlistname = "SOLSPARCPATCHLISTFORRESPIN"; - if ( $installer::globals::issolarisx86build ) { $patchlistname = "SOLIAPATCHLISTFORRESPIN"; } - - if ( $allvariables->{$patchlistname} ) - { - # patchlist separator is a blank - my $allpatchesstring = $allvariables->{$patchlistname}; - my @usedpatches = (); - - # Analyzing the patchlist - # Syntax: 120186-10 126411-01(+core-01) -> use 126411-01 only for core-01 - # Syntax: 120186-10 126411-01(-core-01) -> use 126411-01 for all packages except for core-01 - my $allpatches = installer::converter::convert_whitespace_stringlist_into_array(\$allpatchesstring); - - for ( my $i = 0; $i <= $#{$allpatches}; $i++ ) - { - my $patchdefinition = ${$allpatches}[$i]; - - my $patchid = ""; - my $symbol = ""; - my $constraint = ""; - my $isusedpatch = 0; - - if ( $patchdefinition =~ /^\s*(.+)\(([+-])(.+)\)\s*$/ ) - { - $patchid = $1; - $symbol = $2; - $constraint = $3; - } - elsif (( $patchdefinition =~ /\(/ ) || ( $patchdefinition =~ /\)/ )) # small syntax check - { - # if there is a bracket in the $patchdefinition, but it does not - # match the if-condition, this is an erroneous definition. - installer::exiter::exit_program("ERROR: Unknown patch string: $patchdefinition", "set_patchlist_in_pkginfo_for_respin"); - } - else - { - $patchid = $patchdefinition; - $isusedpatch = 1; # patches without constraint are always included - } - - if ( $symbol ne "" ) - { - if ( $symbol eq "+" ) - { - if ( $packagename =~ /^.*\Q$constraint\E\s*$/ ) { $isusedpatch = 1; } - } - - if ( $symbol eq "-" ) - { - if ( ! ( $packagename =~ /^.*\Q$constraint\E\s*$/ )) { $isusedpatch = 1; } - } - } - - if ( $isusedpatch ) { push(@usedpatches, $patchid); } - } - - if ( $#usedpatches > -1 ) - { - my $patchstring = installer::converter::convert_array_to_space_separated_string(\@usedpatches); - - my $newline = "PATCHLIST=" . $patchstring . "\n"; - add_one_line_into_file($changefile, $newline, $filename); - - # Adding patch info for each used patch in the patchlist - - for ( my $i = 0; $i <= $#usedpatches; $i++ ) - { - my $patchid = $usedpatches[$i]; - my $key = "PATCH_INFO_" . $patchid; - $key =~ s/\s*$//; - - if ( ! $allvariables->{$key} ) { installer::exiter::exit_program("ERROR: No Patch info available in zip list file for $key", "set_patchlist_in_pkginfo"); } - my $value = set_timestamp_in_patchinfo($allvariables->{$key}); - $newline = $key . "=" . $value . "\n"; - - add_one_line_into_file($changefile, $newline, $filename); - } - } - } -} - -######################################################## -# Solaris requires, that the time of patch installation -# must not be empty. -# Format: Mon Mar 24 11:20:56 PDT 2008 -# Log file: Tue Apr 29 23:26:19 2008 (04:31 min.) -# Replace string: ${TIMESTAMP} -######################################################## - -sub set_timestamp_in_patchinfo -{ - my ($value) = @_; - - my $currenttime = localtime(); - - if ( $currenttime =~ /^\s*(.+?)(\d\d\d\d)\s*$/ ) - { - my $start = $1; - my $year = $2; - $currenttime = $start . "CET " . $year; - } - - $value =~ s/\$\{TIMESTAMP\}/$currenttime/; - - return $value; -} - -######################################################## # Setting MAXINST=1000 into the pkginfo file. ######################################################## @@ -1662,126 +1537,6 @@ sub contains_extension_dir } ############################################################ -# A Solaris patch contains 7 specific scripts -############################################################ - -sub add_scripts_into_prototypefile -{ - my ($prototypefile, $prototypefilename, $languagestringref, $staticpath) = @_; - - # The files are stored in the directory $installer::globals::patchincludepath - # The file names are available via @installer::globals::solarispatchscripts - - my $path = $installer::globals::patchincludepath; - $path =~ s/\/\s*$//; - $path = $path . $installer::globals::separator; - - my @newlines = (); - my $is_extension_package = contains_extension_dir($prototypefile); - - if ( $is_extension_package ) - { - for ( my $i = 0; $i <= $#installer::globals::solarispatchscriptsforextensions; $i++ ) - { - my $sourcefilename = $path . $installer::globals::solarispatchscriptsforextensions[$i]; - my $destfile = $installer::globals::solarispatchscriptsforextensions[$i]; - - # If the sourcepath has "_extension" in its name, this has to be removed - $destfile =~ s/_extensions\s*$//; # hard coded renaming of script name - - # Creating unique directory name with $prototypefilename - my $extensiondir = installer::systemactions::create_directories("extensionscripts", $languagestringref); - - if ( $prototypefilename =~ /\/(\S*?)\s*$/ ) { $prototypefilename = $1; } - $prototypefilename =~ s/\./_/g; - my $destdir = $extensiondir . $installer::globals::separator . $prototypefilename; - if ( ! -d $destdir ) { installer::systemactions::create_directory($destdir); } - my $destpath = $destdir . $installer::globals::separator . $destfile; - if ( -f $destpath ) { unlink($destpath); } - - # Reading file - my $scriptfile = installer::files::read_file($sourcefilename); - - # Replacing variables - my $oldstring = "PRODUCTDIRECTORYNAME"; - replace_variables_in_shellscripts_for_patch($scriptfile, $destpath, $oldstring, $staticpath); - - # Saving file - installer::files::save_file($destpath, $scriptfile); - - # Writing file destination into prototype file - my $line = "i $destfile=" . $destpath . "\n"; - push(@newlines, $line); - } - } - else - { - for ( my $i = 0; $i <= $#installer::globals::solarispatchscripts; $i++ ) - { - my $line = "i $installer::globals::solarispatchscripts[$i]=" . $path . $installer::globals::solarispatchscripts[$i] . "\n"; - push(@newlines, $line); - } - } - - # Including the new lines after the last line starting with "i" - - for ( my $i = 0; $i <= $#{$prototypefile}; $i++ ) - { - if ( ${$prototypefile}[$i] =~ /^\s*i\s+copyright/ ) - { - splice(@{$prototypefile}, $i, 1); # ignoring old copyright text, using patch standard - next; - } - if ( ${$prototypefile}[$i] =~ /^\s*i\s+/ ) { next; } - splice(@{$prototypefile}, $i, 0, @newlines); - last; - } -} - -############################################################ -# Adding patch infos in pkginfo file -############################################################ - -sub include_patchinfos_into_pkginfo -{ - my ( $changefile, $filename, $variableshashref ) = @_; - - # SUNW_PATCHID=101998-10 - # SUNW_OBSOLETES=114999-01 113999-01 - # SUNW_PKGTYPE=usr - # SUNW_PKGVERS=1.0 - # SUNW_REQUIRES=126411-01 - - my $patchidname = "SOLSPARCPATCHID"; - if ( $installer::globals::issolarisx86build ) { $patchidname = "SOLIAPATCHID"; } - - if ( ! $variableshashref->{$patchidname} ) { installer::exiter::exit_program("ERROR: Variable $patchidname not defined in zip list file!", "include_patchinfos_into_pkginfo"); } - - my $newline = "SUNW_PATCHID=" . $variableshashref->{$patchidname} . "\n"; - add_one_line_into_file($changefile, $newline, $filename); - - my $patchobsoletesname = "SOLSPARCPATCHOBSOLETES"; - if ( $installer::globals::issolarisx86build ) { $patchobsoletesname = "SOLIAPATCHOBSOLETES"; } - - my $obsoletes = ""; - if ( $variableshashref->{$patchobsoletesname} ) { $obsoletes = $variableshashref->{$patchobsoletesname}; } - $newline = "SUNW_OBSOLETES=" . $obsoletes . "\n"; - add_one_line_into_file($changefile, $newline, $filename); - - my $patchrequiresname = "SOLSPARCPATCHREQUIRES"; - if ( $installer::globals::issolarisx86build ) { $patchrequiresname = "SOLIAPATCHREQUIRES"; } - - if ( $variableshashref->{$patchrequiresname} ) - { - my $requires = $variableshashref->{$patchrequiresname}; - $newline = "SUNW_REQUIRES=" . $requires . "\n"; - add_one_line_into_file($changefile, $newline, $filename); - } - $newline = "SUNW_PATCH_PROPERTIES=\n"; - add_one_line_into_file($changefile, $newline, $filename); -} - -############################################################ # Setting the correct Solaris locales ############################################################ @@ -1848,53 +1603,6 @@ sub include_languageinfos_into_pkginfo } ############################################################ -# Collecting all files included in patch in -# @installer::globals::patchfilecollector -############################################################ - -sub collect_patch_files -{ - my ($file, $packagename, $prefix) = @_; - - # $file is the spec file or the prototypefile - - $prefix = $prefix . "/"; - my $packagenamestring = "Package " . $packagename . " \:\n"; - push(@installer::globals::patchfilecollector, $packagenamestring); - - for ( my $i = 0; $i <= $#{$file}; $i++ ) - { - my $line = ${$file}[$i]; - - if ( $installer::globals::isrpmbuild ) - { - # %attr(0444,root,root) "/opt/openofficeorg20/program/about.bmp" - - if ( $line =~ /^\s*\%attr\(.*\)\s*\"(.*?)\"\s*$/ ) - { - my $filename = $1 . "\n"; - $filename =~ s/^\s*\Q$prefix\E//; - push(@installer::globals::patchfilecollector, $filename); - } - } - - if ( $installer::globals::issolarispkgbuild ) - { - # f none program/msomrl.rdb=/ab/SRC680/unxsols4.pro/bin/msomrl.rdb 0444 root bin - - if ( $line =~ /^\s*f\s+\w+\s+(.*?)\=/ ) - { - my $filename = $1 . "\n"; - push(@installer::globals::patchfilecollector, $filename); - } - } - } - - push(@installer::globals::patchfilecollector, "\n"); - -} - -############################################################ # Including package names into the depend files. # The package names have to be included into # packagelist. They are already saved in @@ -1983,7 +1691,6 @@ sub prepare_packages set_license_in_specfile($changefile, $variableshashref); set_tab_into_datafile($changefile, $filesref); installer::files::save_file($completefilename, $changefile); - if ( $installer::globals::patch ) { collect_patch_files($changefile, $packagename, $localrelocatablepath); } } # removing the relocatable path in prototype file @@ -1994,8 +1701,6 @@ sub prepare_packages set_maxinst_in_pkginfo($changefile, $filename); set_solaris_parameter_in_pkginfo($changefile, $filename, $variableshashref); if ( $installer::globals::issolarisx86build ) { fix_architecture_setting($changefile); } - if ( ! $installer::globals::patch ) { set_patchlist_in_pkginfo_for_respin($changefile, $filename, $variableshashref, $packagename); } - if ( $installer::globals::patch ) { include_patchinfos_into_pkginfo($changefile, $filename, $variableshashref); } if (( $onepackage->{'language'} ) && ( $onepackage->{'language'} ne "" ) && ( $onepackage->{'language'} ne "en-US" )) { include_languageinfos_into_pkginfo($changefile, $filename, $languagestringref, $onepackage, $variableshashref); } installer::files::save_file($completefilename, $changefile); @@ -2012,10 +1717,7 @@ sub prepare_packages installer::files::save_file($completefilename, $changefile); } - if ( $installer::globals::patch ) { add_scripts_into_prototypefile($prototypefile, $prototypefilename, $languagestringref, $staticpath); } - installer::files::save_file($prototypefilename, $prototypefile); - if ( $installer::globals::patch ) { collect_patch_files($prototypefile, $packagename, ""); } # Adding package names into depend files for Solaris (not supported by epm) my $dependfilename = $packagename . ".depend"; @@ -2817,170 +2519,6 @@ sub analyze_rootpath } -###################################################### -# Replacing one variable in patchinfo file -###################################################### - -sub replace_one_variable_in_file -{ - my ( $file, $placeholder, $value ) = @_; - - for ( my $i = 0; $i <= $#{$file}; $i++ ) - { - ${$file}[$i] =~ s/$placeholder/$value/g; - } -} - -###################################################### -# Setting variables in the patchinfo file -###################################################### - -sub set_patchinfo -{ - my ( $patchinfofile, $patchid, $allvariables ) = @_; - - # Setting: PATCHIDPLACEHOLDER and ARCHITECTUREPLACEHOLDER and PATCHCORRECTSPLACEHOLDER - - replace_one_variable_in_file($patchinfofile, "PATCHIDPLACEHOLDER", $patchid); - - my $architecture = ""; - if ( $installer::globals::issolarissparcbuild ) { $architecture = "sparc"; } - if ( $installer::globals::issolarisx86build ) { $architecture = "i386"; } - - replace_one_variable_in_file($patchinfofile, "ARCHITECTUREPLACEHOLDER", $architecture); - - if ( ! $allvariables->{'SOLARISPATCHCORRECTS'} ) { installer::exiter::exit_program("ERROR: No setting for PATCH_CORRECTS in zip list file!", "set_patchinfo"); } - my $patchcorrects = $allvariables->{'SOLARISPATCHCORRECTS'}; - - replace_one_variable_in_file($patchinfofile, "PATCHCORRECTSPLACEHOLDER", $patchcorrects); - - # Setting also PATCH_REQUIRES in patch info file, if entry in zip list file exists - my $requiresstring = ""; - if ( $installer::globals::issolarissparcbuild ) { $requiresstring = "SOLSPARCPATCHREQUIRES"; } - if ( $installer::globals::issolarisx86build ) { $requiresstring = "SOLIAPATCHREQUIRES"; } - - if ( $allvariables->{$requiresstring} ) - { - my $newline = "PATCH_REQUIRES=\"" . $allvariables->{$requiresstring} . "\"" . "\n"; - push(@{$patchinfofile}, $newline); - } -} - -###################################################### -# Finalizing patch: Renaming directory and -# including additional patch files. -###################################################### - -sub finalize_patch -{ - my ( $newepmdir, $allvariables ) = @_; - - my $patchidname = "SOLSPARCPATCHID"; - if ( $installer::globals::issolarisx86build ) { $patchidname = "SOLIAPATCHID"; } - - if ( ! $allvariables->{$patchidname} ) { installer::exiter::exit_program("ERROR: Variable $patchidname not defined in zip list file!", "finalize_patch"); } - my $patchid = $allvariables->{$patchidname}; - installer::systemactions::rename_directory($newepmdir, $patchid); - - # Copying all typical patch files into the patch directory - # All patch file names are stored in @installer::globals::solarispatchfiles - # Location of the file is $installer::globals::patchincludepath - - my $sourcepath = $installer::globals::patchincludepath; - $sourcepath =~ s/\/\s*$//; - - for ( my $i = 0; $i <= $#installer::globals::solarispatchfiles; $i++ ) - { - my $sourcefile = $sourcepath . $installer::globals::separator . $installer::globals::solarispatchfiles[$i]; - my $destfile = $patchid . $installer::globals::separator . $installer::globals::solarispatchfiles[$i]; - installer::systemactions::copy_one_file($sourcefile, $destfile); - } - - # And editing the patchinfo file - - my $patchinfofilename = $patchid . $installer::globals::separator . "patchinfo"; - my $patchinfofile = installer::files::read_file($patchinfofilename); - set_patchinfo($patchinfofile, $patchid, $allvariables); - installer::files::save_file($patchinfofilename, $patchinfofile); -} - -###################################################### -# Finalizing Linux patch: Renaming directory and -# including additional patch files. -###################################################### - -sub finalize_linux_patch -{ - my ( $newepmdir, $allvariables, $includepatharrayref ) = @_; - - # Copying the setup into the patch directory - # and including the list of RPMs into it - - print "... creating patch setup ...\n"; - - installer::logger::include_header_into_logfile("Creating Linux patch setup:"); - - # find and read setup script template - - my $scriptfilename = "linuxpatchscript.sh"; - my $scriptref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$scriptfilename, $includepatharrayref, 0); - if ($$scriptref eq "") { installer::exiter::exit_program("ERROR: Could not find patch script template $scriptfilename!", "finalize_linux_patch"); } - my $scriptfile = installer::files::read_file($$scriptref); - - my $infoline = "Found script file $scriptfilename: $$scriptref \n"; - push( @installer::globals::logfileinfo, $infoline); - - # Collecting all RPMs in the patch directory - - my $fileextension = "rpm"; - my $rpmfiles = installer::systemactions::find_file_with_file_extension($fileextension, $newepmdir); - if ( ! ( $#{$rpmfiles} > -1 )) { installer::exiter::exit_program("ERROR: Could not find rpm in directory $newepmdir!", "finalize_linux_patch"); } - for ( my $i = 0; $i <= $#{$rpmfiles}; $i++ ) { installer::pathanalyzer::make_absolute_filename_to_relative_filename(\${$rpmfiles}[$i]); } - - # Searching packagename containing -core01 - my $found_package = 0; - my $searchpackagename = ""; - for ( my $i = 0; $i <= $#{$rpmfiles}; $i++ ) - { - if ( ${$rpmfiles}[$i] =~ /-core01-/ ) - { - $searchpackagename = ${$rpmfiles}[$i]; - $found_package = 1; - if ( $searchpackagename =~ /^\s*(.*?-core01)-.*/ ) { $searchpackagename = $1; } - last; - } - } - - if ( ! $found_package ) { installer::exiter::exit_program("ERROR: No package containing \"-core01\" found in directory \"$newepmdir\"", "finalize_linux_patch"); } - - # Replacing the searchpackagename - for ( my $j = 0; $j <= $#{$scriptfile}; $j++ ) { ${$scriptfile}[$j] =~ s/SEARCHPACKAGENAMEPLACEHOLDER/$searchpackagename/; } - - # Setting the PRODUCTDIRECTORYNAME to $installer::globals::officedirhostname - for ( my $j = 0; $j <= $#{$scriptfile}; $j++ ) { ${$scriptfile}[$j] =~ s/PRODUCTDIRECTORYNAME/$installer::globals::officedirhostname/; } - - # Replacing the productname - my $productname = $allvariables->{'PRODUCTNAME'}; - $productname = lc($productname); - $productname =~ s/ /_/g; # abc office -> abc_office - - $infoline = "Adding productname $productname into Linux patch script\n"; - push( @installer::globals::logfileinfo, $infoline); - - for ( my $j = 0; $j <= $#{$scriptfile}; $j++ ) { ${$scriptfile}[$j] =~ s/PRODUCTNAMEPLACEHOLDER/$productname/; } - - # Saving the file - - my $newscriptfilename = "setup"; - installer::files::save_file($newscriptfilename, $scriptfile); - - $infoline = "Saved Linux patch setup $newscriptfilename \n"; - push( @installer::globals::logfileinfo, $infoline); - - # Setting unix rights 755 - chmod 0755, $newscriptfilename; -} - ################################################ # Defining the English license text to add # it into Solaris packages. diff --git a/solenv/bin/modules/installer/globals.pm b/solenv/bin/modules/installer/globals.pm index 23ac86e304ee..45aa11bab4b7 100644 --- a/solenv/bin/modules/installer/globals.pm +++ b/solenv/bin/modules/installer/globals.pm @@ -192,12 +192,9 @@ BEGIN $patch_user_dir = 0; $languagepack = 0; $helppack = 0; - $patch = 0; - $patchincludepath = ""; $refresh_includepaths = 0; $include_paths_read = 0; @patchfilecollector = (); - $nopatchfilecollector = ""; @userregistrycollector = (); $addeduserregitrykeys = 0; $desktoplinkexists = 0; @@ -256,9 +253,6 @@ BEGIN $postprocess_standardepm = 0; $mergemodules_analyzed = 0; - @solarispatchscripts = ("checkinstall", "copyright", "patch_checkinstall", "patch_postinstall", "postinstall", "preinstall", "i.none"); - @solarispatchscriptsforextensions = ("checkinstall", "copyright", "patch_checkinstall", "patch_postinstall_extensions", "postinstall_extensions", "preinstall", "i.none"); - @solarispatchfiles = (".diPatch", "patchinfo"); @packagelistitems = ("module", "solarispackagename", "packagename", "copyright", "vendor", "description" ); @languagepackfeature =(); @helppackfeature =(); diff --git a/solenv/bin/modules/installer/parameter.pm b/solenv/bin/modules/installer/parameter.pm index 609f7b41d819..2aa0a2806271 100644 --- a/solenv/bin/modules/installer/parameter.pm +++ b/solenv/bin/modules/installer/parameter.pm @@ -66,8 +66,6 @@ The following parameter are needed: -copyproject : is set for projects that are only used for copying (optional) -languagepack : do create a languagepack, no product pack (optional) -helppack : do create a helppack, no product pack (optional) --patch : do create a patch (optional) --patchinc: Source for the patch include files (Solaris only) -strip: Stripping files (Unix only) -log : Logging all available information (optional) @@ -137,12 +135,10 @@ sub getparameter elsif ($param eq "-dontcallepm") { $installer::globals::call_epm = 0; } elsif ($param eq "-msitemplate") { $installer::globals::idttemplatepath = shift(@ARGV); } elsif ($param eq "-msilanguage") { $installer::globals::idtlanguagepath = shift(@ARGV); } - elsif ($param eq "-patchinc") { $installer::globals::patchincludepath = shift(@ARGV); } elsif ($param eq "-buildid") { $installer::globals::buildid = shift(@ARGV); } elsif ($param eq "-copyproject") { $installer::globals::is_copy_only_project = 1; } elsif ($param eq "-languagepack") { $installer::globals::languagepack = 1; } elsif ($param eq "-helppack") { $installer::globals::helppack = 1;} - elsif ($param eq "-patch") { $installer::globals::patch = 1; } elsif ($param eq "-debian") { $installer::globals::debian = 1; } elsif ($param eq "-strip") { $installer::globals::strip = 1; } elsif ($param eq "-destdir") # new parameter for simple installer @@ -477,31 +473,6 @@ sub control_required_parameter } ####################################### - # Patch currently only available - # for Solaris packages and Linux - ####################################### - - if (( $installer::globals::patch ) && ( ! $installer::globals::issolarispkgbuild ) && ( ! $installer::globals::isrpmbuild ) && ( ! $installer::globals::isdebbuild ) && ( ! $installer::globals::iswindowsbuild ) && ( ! $installer::globals::ismacdmgbuild )) - { - installer::logger::print_error( "Sorry, Patch flag currently only available for Solaris pkg, Linux RPM and Windows builds!" ); - usage(); - exit(-1); - } - - if (( $installer::globals::patch ) && ( $installer::globals::issolarispkgbuild ) && ( ! $installer::globals::patchincludepath )) - { - installer::logger::print_error( "Solaris patch requires parameter -patchinc !" ); - usage(); - exit(-1); - } - - if (( $installer::globals::patch ) && ( $installer::globals::issolarispkgbuild ) && ( $installer::globals::patchincludepath )) - { - make_path_absolute(\$installer::globals::patchincludepath); - $installer::globals::patchincludepath = installer::converter::make_path_conform($installer::globals::patchincludepath); - } - - ####################################### # Testing existence of files # also for copy-only projects ####################################### @@ -560,7 +531,6 @@ sub outputparameter if ((!($installer::globals::idtlanguagepath eq "")) && (!($installer::globals::iswindowsbuild))) { push(@output, "msi language path will be ignored for non Windows builds!\n"); } if ((!($installer::globals::iswindowsbuild)) && ( $installer::globals::call_epm )) { push(@output, "Calling epm\n"); } if ((!($installer::globals::iswindowsbuild)) && (!($installer::globals::call_epm))) { push(@output, "Not calling epm\n"); } - if ( $installer::globals::patchincludepath ) { push(@output, "Patch include path: $installer::globals::patchincludepath\n"); } if ( $installer::globals::strip ) { push(@output, "Stripping files\n"); } else { push(@output, "No file stripping\n"); } if ( $installer::globals::debian ) { push(@output, "Linux: Creating Debian packages\n"); } @@ -578,7 +548,6 @@ sub outputparameter if ( $installer::globals::is_copy_only_project ) { push(@output, "This is a copy only project!\n"); } if ( $installer::globals::languagepack ) { push(@output, "Creating language pack!\n"); } if ( $installer::globals::helppack ) { push(@output, "Creating help pack!\n"); } - if ( $installer::globals::patch ) { push(@output, "Creating patch!\n"); } push(@output, "########################################################\n"); # output into shell and into logfile diff --git a/solenv/bin/modules/installer/scriptitems.pm b/solenv/bin/modules/installer/scriptitems.pm index 3f32f9488622..77fa1d3619b9 100644 --- a/solenv/bin/modules/installer/scriptitems.pm +++ b/solenv/bin/modules/installer/scriptitems.pm @@ -516,21 +516,6 @@ sub use_langpack_hostname # Using different HostName for language packs ################################################################################ -sub use_patch_hostname -{ - my ($dirsref) = @_; - - for ( my $i = 0; $i <= $#{$dirsref}; $i++ ) - { - my $onedir = ${$dirsref}[$i]; - if (( $onedir->{'PatchHostName'} ) && ( $onedir->{'PatchHostName'} ne "" )) { $onedir->{'HostName'} = $onedir->{'PatchHostName'}; } - } -} - -################################################################################ -# Using different HostName for language packs -################################################################################ - sub use_langpack_copy_scpaction { my ($scpactionsref) = @_; @@ -558,21 +543,6 @@ sub use_devversion_copy_scpaction } ################################################################################ -# Using different HostName for language packs -################################################################################ - -sub use_patch_copy_scpaction -{ - my ($scpactionsref) = @_; - - for ( my $i = 0; $i <= $#{$scpactionsref}; $i++ ) - { - my $onescpaction = ${$scpactionsref}[$i]; - if (( $onescpaction->{'PatchCopy'} ) && ( $onescpaction->{'PatchCopy'} ne "" )) { $onescpaction->{'Copy'} = $onescpaction->{'PatchCopy'}; } - } -} - -################################################################################ # Shifting parent directories of URE and Basis layer, so that # these directories are located below the Brand layer. # Style: SHIFT_BASIS_INTO_BRAND_LAYER @@ -728,7 +698,6 @@ sub replace_setup_variables $value =~ s/\<alllanguages\>/$languagesstring/; $value =~ s/\<productmajor\>/$localbuild/; $value =~ s/\<productminor\>/$localminor/; - $value =~ s/\<productbuildid\>/$installer::globals::buildid/; $value =~ s/\<sourceid\>/$installer::globals::build/; $value =~ s/\<updateid\>/$updateid/; $value =~ s/\<pkgformat\>/$installer::globals::packageformat/; @@ -1616,42 +1585,6 @@ sub remove_Helppacklibraries_from_Installset } ############################################################################ -# Removing all files with flag PATCH_ONLY from installation set. -# This function is not called during patch creation. -############################################################################ - -sub remove_patchonlyfiles_from_Installset -{ - my ($itemsarrayref) = @_; - - my $infoline; - - my @newitemsarray = (); - - for ( my $i = 0; $i <= $#{$itemsarrayref}; $i++ ) - { - my $oneitem = ${$itemsarrayref}[$i]; - my $styles = ""; - if ( $oneitem->{'Styles'} ) { $styles = $oneitem->{'Styles'}; } - - if ( $styles =~ /\bPATCH_ONLY\b/ ) - { - $infoline = "Removing file with flag PATCH_ONLY $oneitem->{'gid'} from the installation set.\n"; - push( @installer::globals::globallogfileinfo, $infoline); - - next; - } - - push(@newitemsarray, $oneitem); - } - - $infoline = "\n"; - push( @installer::globals::globallogfileinfo, $infoline); - - return \@newitemsarray; -} - -############################################################################ # Some files cotain a $ in their name. epm conflicts with such files. # Solution: Renaming this files, converting "$" to "$$" ############################################################################ diff --git a/solenv/bin/modules/installer/simplepackage.pm b/solenv/bin/modules/installer/simplepackage.pm index 5bc319d4222b..c9ce580c5b9c 100755 --- a/solenv/bin/modules/installer/simplepackage.pm +++ b/solenv/bin/modules/installer/simplepackage.pm @@ -301,7 +301,7 @@ sub create_package my $localtempdir = $tempdir; - if (( $installer::globals::languagepack ) || ( $installer::globals::helppack ) || ( $installer::globals::patch )) + if (( $installer::globals::languagepack ) || ( $installer::globals::helppack )) { $localtempdir = "$tempdir/$packagename"; if ( $installer::globals::helppack ) { $volume_name = "$volume_name Help Pack"; } @@ -311,12 +311,6 @@ sub create_package $volume_name_classic = "$volume_name_classic Language Pack"; $volume_name_classic_app = "$volume_name_classic_app Language Pack"; } - if ( $installer::globals::patch ) - { - $volume_name = "$volume_name Patch"; - $volume_name_classic = "$volume_name_classic Patch"; - $volume_name_classic_app = "$volume_name_classic_app Patch"; - } # Create tar ball named tarball.tar.bz2 # my $appfolder = $localtempdir . "/" . $volume_name . "\.app"; @@ -362,7 +356,6 @@ sub create_package my $scriptfilename = ""; if ( $installer::globals::languagepack ) { $scriptfilename = "osx_install_languagepack.applescript"; } if ( $installer::globals::helppack ) { $scriptfilename = "osx_install_helppack.applescript"; } - if ( $installer::globals::patch ) { $scriptfilename = "osx_install_patch.applescript"; } my $scripthelpersolverfilename = "mac_install.script"; # my $scripthelperrealfilename = $volume_name; my $scripthelperrealfilename = $volume_name_classic_app; @@ -508,7 +501,6 @@ sub create_simple_package $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "downloadname"); if ( $installer::globals::languagepack ) { $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "langpackdownloadname"); } if ( $installer::globals::helppack ) { $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "helppackdownloadname"); } - if ( $installer::globals::patch ) { $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "patchdownloadname"); } $packagename = installer::download::resolve_variables_in_downloadname($allvariables, $$downloadname, \$locallanguage); } } @@ -574,8 +566,6 @@ sub create_simple_package my $onefile = ${$filesref}[$i]; if (( $onefile->{'Styles'} ) && ( $onefile->{'Styles'} =~ /\bBINARYTABLE_ONLY\b/ )) { next; } - if (( $installer::globals::patch ) && ( $onefile->{'Styles'} ) && ( ! ( $onefile->{'Styles'} =~ /\bPATCH\b/ ))) { next; } - if (( $installer::globals::patch ) && ( $installer::globals::packageformat eq "dmg" )) { push(@installer::globals::patchfilecollector, "$onefile->{'destination'}\n"); } my $source = $onefile->{'sourcepath'}; my $destination = $onefile->{'destination'}; @@ -627,8 +617,6 @@ sub create_simple_package { my $onelink = ${$linksref}[$i]; - if (( $installer::globals::patch ) && ( $onelink->{'Styles'} ) && ( ! ( $onelink->{'Styles'} =~ /\bPATCH\b/ ))) { next; } - my $destination = $onelink->{'destination'}; $destination = $subfolderdir . $installer::globals::separator . $destination; my $destinationfile = $onelink->{'destinationfile'}; @@ -644,8 +632,6 @@ sub create_simple_package { my $onelink = ${$unixlinksref}[$i]; - if (( $installer::globals::patch ) && ( $onelink->{'Styles'} ) && ( ! ( $onelink->{'Styles'} =~ /\bPATCH\b/ ))) { next; } - my $target = $onelink->{'Target'}; my $destination = $subfolderdir . $installer::globals::separator . $onelink->{'destination'}; diff --git a/solenv/bin/modules/installer/systemactions.pm b/solenv/bin/modules/installer/systemactions.pm index 22d83fb6058b..e2c11ff6ba94 100644 --- a/solenv/bin/modules/installer/systemactions.pm +++ b/solenv/bin/modules/installer/systemactions.pm @@ -230,7 +230,6 @@ sub create_directories if ( $installer::globals::languagepack ) { $path = $path . $localproductname . "_languagepack" . $installer::globals::separator; } elsif ( $installer::globals::helppack ) { $path = $path . $localproductname . "_helppack" . $installer::globals::separator; } - elsif ( $installer::globals::patch ) { $path = $path . $localproductname . "_patch" . $installer::globals::separator; } else { $path = $path . $localproductname . $installer::globals::separator; } create_directory($path); diff --git a/solenv/bin/modules/installer/windows/createfolder.pm b/solenv/bin/modules/installer/windows/createfolder.pm index 5f42ee71c74a..d43961bb0360 100644 --- a/solenv/bin/modules/installer/windows/createfolder.pm +++ b/solenv/bin/modules/installer/windows/createfolder.pm @@ -88,10 +88,8 @@ sub get_createfolder_component # containing the file $allvariableshashref->{'GLOBALFILEGID'} if ( ! $allvariableshashref->{'GLOBALFILEGID'} ) { installer::exiter::exit_program("ERROR: GLOBALFILEGID must be defined in list file!", "get_createfolder_component"); } - if (( $installer::globals::patch ) && ( ! $allvariableshashref->{'GLOBALFILEGID'} )) { installer::exiter::exit_program("ERROR: GLOBALPATCHFILEGID must be defined in list file!", "get_createfolder_component"); } my $globalfilegid = $allvariableshashref->{'GLOBALFILEGID'}; - if ( $installer::globals::patch ) { $globalfilegid = $allvariableshashref->{'GLOBALPATCHFILEGID'}; } my $onefile; if ( $installer::globals::languagepack ) { $onefile = get_languagepack_file($filesref, $onedir); } diff --git a/solenv/bin/modules/installer/windows/directory.pm b/solenv/bin/modules/installer/windows/directory.pm index 92cb9209393d..97b9937611bb 100644 --- a/solenv/bin/modules/installer/windows/directory.pm +++ b/solenv/bin/modules/installer/windows/directory.pm @@ -253,8 +253,7 @@ sub check_sourcedir_addon { my ( $onedir, $allvariableshashref ) = @_; - if (($installer::globals::patch) || - ($installer::globals::languagepack) || + if (($installer::globals::languagepack) || ($installer::globals::helppack) || ($allvariableshashref->{'CHANGETARGETDIR'})) { @@ -407,7 +406,7 @@ sub add_root_directories my $oneline = ""; - if (( ! $installer::globals::patch ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack ) && ( ! $allvariableshashref->{'DONTUSESTARTMENUFOLDER'} )) + if (( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack ) && ( ! $allvariableshashref->{'DONTUSESTARTMENUFOLDER'} )) { my $productname; diff --git a/solenv/bin/modules/installer/windows/feature.pm b/solenv/bin/modules/installer/windows/feature.pm index c22b8646523b..d8ead0336ec3 100644 --- a/solenv/bin/modules/installer/windows/feature.pm +++ b/solenv/bin/modules/installer/windows/feature.pm @@ -141,7 +141,6 @@ sub get_feature_level if ( $localdefault eq "NO" ) # explicitly set Default = "NO" { $level = "200"; # deselected in default installation, base is 100 - if ( $installer::globals::patch ) { $level = "20"; } } # special handling for Java and Ada diff --git a/solenv/bin/modules/installer/windows/idtglobal.pm b/solenv/bin/modules/installer/windows/idtglobal.pm index b29004e4fb55..de80cef62016 100644 --- a/solenv/bin/modules/installer/windows/idtglobal.pm +++ b/solenv/bin/modules/installer/windows/idtglobal.pm @@ -760,23 +760,6 @@ sub prepare_language_idt_directory { installer::systemactions::create_directory($destinationdir . $installer::globals::separator . "Binary"); installer::systemactions::copy_directory($installer::globals::idttemplatepath . $installer::globals::separator . "Binary", $destinationdir . $installer::globals::separator . "Binary"); - - if ((( $installer::globals::patch ) && ( $allvariables->{'WINDOWSPATCHBITMAPDIRECTORY'} )) || ( $allvariables->{'WINDOWSBITMAPDIRECTORY'} )) - { - my $bitmapdir = ""; - if ( $allvariables->{'WINDOWSPATCHBITMAPDIRECTORY'} ) { $bitmapdir = $allvariables->{'WINDOWSPATCHBITMAPDIRECTORY'}; } - if ( $allvariables->{'WINDOWSBITMAPDIRECTORY'} ) { $bitmapdir = $allvariables->{'WINDOWSBITMAPDIRECTORY'}; } - - my $newsourcedir = $installer::globals::unpackpath . $installer::globals::separator . $bitmapdir; # path setting in list file dependent from unpackpath !? - $infoline = "\nOverwriting files in directory \"" . $destinationdir . $installer::globals::separator . "Binary" . "\" with files from directory \"" . $newsourcedir . "\".\n"; - push( @installer::globals::logfileinfo, $infoline); - if ( ! -d $newsourcedir ) - { - my $currentdir = cwd(); - installer::exiter::exit_program("ERROR: Directory $newsourcedir does not exist! Current directory is: $currentdir", "prepare_language_idt_directory"); - } - installer::systemactions::copy_directory($newsourcedir, $destinationdir . $installer::globals::separator . "Binary"); - } } installer::systemactions::create_directory($destinationdir . $installer::globals::separator . "Icon"); @@ -1714,18 +1697,6 @@ sub addcustomactions if ( $customaction->{$key} ) { $value = $customaction->{$key}; - - # in a patch the Assignment can be overwritten by a PatchAssignment - if ( $installer::globals::patch ) - { - $patchkey = "PatchAssignment" . $j; - if ( $customaction->{$patchkey} ) - { - $value = $customaction->{$patchkey}; - $key = $patchkey; - } - } - } else { last; } diff --git a/solenv/bin/modules/installer/windows/inifile.pm b/solenv/bin/modules/installer/windows/inifile.pm index d13fafc26fd6..1b4fd5c64efe 100644 --- a/solenv/bin/modules/installer/windows/inifile.pm +++ b/solenv/bin/modules/installer/windows/inifile.pm @@ -49,23 +49,6 @@ sub get_profile_for_profileitem } #################################################### -# Checking whether profile is included in patch -#################################################### - -sub profile_has_patch_flag -{ - my ($profile) = @_; - - my $in_patch = 0; - - my $styles = ""; - if ( $profile->{'Styles'} ) { $styles = $profile->{'Styles'}; } - if ( $styles =~ /\bPATCH\b/ ) { $in_patch = 1; } - - return $in_patch; -} - -#################################################### # Checking whether profile is part of product #################################################### @@ -117,8 +100,6 @@ sub create_inifile_table my $profile = get_profile_for_profileitem($profileid, $filesref); - if (( $installer::globals::patch ) && ( ! profile_has_patch_flag($profile) )) { next; } - my %inifile = (); $inifile{'IniFile'} = $profileitem->{'Inifiletablekey'}; diff --git a/solenv/bin/modules/installer/windows/mergemodule.pm b/solenv/bin/modules/installer/windows/mergemodule.pm index f4e5951150cd..40ad40474bf3 100755 --- a/solenv/bin/modules/installer/windows/mergemodule.pm +++ b/solenv/bin/modules/installer/windows/mergemodule.pm @@ -51,7 +51,7 @@ sub merge_mergemodules_into_msi_database my ($mergemodules, $filesref, $msifilename, $languagestringref, $allvariables, $includepatharrayref, $allupdatesequences, $allupdatelastsequences, $allupdatediskids) = @_; my $domerge = 0; - if (( $#{$mergemodules} > -1 ) && ( ! $installer::globals::patch ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack )) { $domerge = 1; } + if (( $#{$mergemodules} > -1 ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack )) { $domerge = 1; } if ( $domerge ) { diff --git a/solenv/bin/modules/installer/windows/msiglobal.pm b/solenv/bin/modules/installer/windows/msiglobal.pm index 0a898edfc34c..6087d1dfb428 100644 --- a/solenv/bin/modules/installer/windows/msiglobal.pm +++ b/solenv/bin/modules/installer/windows/msiglobal.pm @@ -1369,19 +1369,11 @@ sub set_global_code_variables $installer::globals::productcode = "\{" . ${$guidref}[0] . "\}"; } - if ( $installer::globals::patch ) # patch upgrade codes are defined in soffice.lst - { - if ( $allvariableshashref->{'PATCHUPGRADECODE'} ) { $installer::globals::upgradecode = $allvariableshashref->{'PATCHUPGRADECODE'}; } - else { installer::exiter::exit_program("ERROR: PATCHUPGRADECODE not defined in list file!", "set_global_code_variables"); } - } - else - { - # UpgradeCode can take english as default, if not defined in specified language + # UpgradeCode can take english as default, if not defined in specified language - $searchstring = "UPGRADECODE"; # searching in the codes.txt file - $codeblock = installer::windows::idtglobal::get_language_block_from_language_file($searchstring, $codefile); - $installer::globals::upgradecode = installer::windows::idtglobal::get_language_string_from_language_block($codeblock, $onelanguage, ""); - } + $searchstring = "UPGRADECODE"; # searching in the codes.txt file + $codeblock = installer::windows::idtglobal::get_language_block_from_language_file($searchstring, $codefile); + $installer::globals::upgradecode = installer::windows::idtglobal::get_language_string_from_language_block($codeblock, $onelanguage, ""); if ( $installer::globals::upgradecode eq "" ) { installer::exiter::exit_program("ERROR: UpgradeCode not defined in $installer::globals::codefilename !", "set_global_code_variables"); } diff --git a/solenv/bin/modules/installer/windows/property.pm b/solenv/bin/modules/installer/windows/property.pm index 56f4ba5da0cb..58435d6e130e 100644 --- a/solenv/bin/modules/installer/windows/property.pm +++ b/solenv/bin/modules/installer/windows/property.pm @@ -56,13 +56,6 @@ sub get_arpcomments_for_property_table if ( $installer::globals::languagepack ) { $comment = $comment . " " . "Language Pack"; } elsif ( $installer::globals::helppack ) { $comment = $comment . " " . "Help Pack"; } - if ( $installer::globals::patch ) - { - if ( ! $allvariables->{'WINDOWSPATCHLEVEL'} ) { installer::exiter::exit_program("ERROR: No Patch level defined for Windows patch: WINDOWSPATCHLEVEL", "get_arpcomments_for_property_table"); } - my $patchstring = "Product Update" . " " . $allvariables->{'WINDOWSPATCHLEVEL'}; - $comment = $comment . " " . $patchstring; - } - my $languagestring = $$languagestringref; $languagestring =~ s/\_/\,/g; @@ -181,13 +174,6 @@ sub get_productname_for_property_table($$) $productname = $name . " " . $version . " Help Pack" . " " . $langstring; } - if ( $installer::globals::patch ) - { - if ( ! $allvariables->{'WINDOWSPATCHLEVEL'} ) { installer::exiter::exit_program("ERROR: No Patch level defined for Windows patch: WINDOWSPATCHLEVEL", "get_productname_for_property_table"); } - my $patchstring = "Product Update" . " " . $allvariables->{'WINDOWSPATCHLEVEL'}; - $productname = $productname . " " . $patchstring; - } - # Saving this name in hash $allvariables for further usage $allvariables->{'PROPERTYTABLEPRODUCTNAME'} = $productname; my $infoline = "Defined variable PROPERTYTABLEPRODUCTNAME: $productname\n"; @@ -217,23 +203,6 @@ sub get_productversion_for_property_table } ####################################################### -# Setting all feature names as Properties. This is -# required for the Windows patch process. -####################################################### - -sub set_featurename_properties_for_patch -{ - ($propertyfile) = @_; - - for ( my $i = 0; $i <= $#installer::globals::featurecollector; $i++ ) - { - my $onepropertyline = $installer::globals::featurecollector[$i] . "\t" . "1" . "\n"; - push(@{$propertyfile}, $onepropertyline); - } - -} - -####################################################### # Setting some important properties # (for finding the product in deinstallation process) ####################################################### @@ -329,12 +298,6 @@ sub set_important_properties push(@{$propertyfile}, $onepropertyline); } - if ( $installer::globals::patch ) - { - my $onepropertyline = "ISPATCH" . "\t" . "1" . "\n"; - push(@{$propertyfile}, $onepropertyline); - } - if ( $installer::globals::languagepack ) { my $onepropertyline = "ISLANGUAGEPACK" . "\t" . "1" . "\n"; @@ -503,9 +466,6 @@ sub update_property_table # Setting variables into propertytable set_important_properties($propertyfile, $allvariables, $languagestringref); - # Setting feature names as properties for Windows patch mechanism - if ( $installer::globals::patch ) { set_featurename_properties_for_patch($propertyfile); } - # Setting variables for register for ms file types set_ms_file_types_properties($propertyfile); diff --git a/solenv/bin/modules/installer/windows/upgrade.pm b/solenv/bin/modules/installer/windows/upgrade.pm index 547bc4ce7bf1..91f5f71c6080 100644 --- a/solenv/bin/modules/installer/windows/upgrade.pm +++ b/solenv/bin/modules/installer/windows/upgrade.pm @@ -65,67 +65,64 @@ sub create_upgrade_table $newline = $installer::globals::upgradecode . "\t" . $installer::globals::msimajorproductversion . "\t" . $installer::globals::msiproductversion . "\t" . "\t" . "769" . "\t" . "\t" . "OLDPRODUCTSSAMEMAJOR" . "\n"; push(@upgradetable, $newline); - if ( ! $installer::globals::patch ) - { - # preventing downgrading - $newline = $installer::globals::upgradecode . "\t" . $installer::globals::msiproductversion . "\t" . $ooomaxnew . "\t" . "\t" . "2" . "\t" . "\t" . "NEWPRODUCTS" . "\n"; + # preventing downgrading + $newline = $installer::globals::upgradecode . "\t" . $installer::globals::msiproductversion . "\t" . $ooomaxnew . "\t" . "\t" . "2" . "\t" . "\t" . "NEWPRODUCTS" . "\n"; + push(@upgradetable, $newline); + + # $newline = $installer::globals::upgradecode . "\t" . $installer::globals::msiproductversion . "\t" . $ooomaxnew . "\t" . "\t" . "258" . "\t" . "\t" . "SAMEPRODUCTS" . "\n"; + # push(@upgradetable, $newline); + + if ( $include_ooo_fix ) + { + $newline = $installer::globals::upgradecode . "\t" . "35.0.0" . "\t" . "36.0.0" . "\t" . "\t" . "1" . "\t" . "\t" . "OLDPRODUCTS2" . "\n"; + push(@upgradetable, $newline); + } + + # if (( $allvariableshashref->{'PATCHUPGRADECODE'} ) && ( ! $installer::globals::languagepack )) + # { + # $newline = $allvariableshashref->{'PATCHUPGRADECODE'} . "\t" . "\t" . $installer::globals::msiproductversion . "\t" . "\t" . "1" . "\t" . "\t" . "OLDPRODUCTSPATCH" . "\n"; + # push(@upgradetable, $newline); + # + # $newline = $allvariableshashref->{'PATCHUPGRADECODE'} . "\t" . $installer::globals::msiproductversion . "\t" . "\t" . "\t" . "2" . "\t" . "\t" . "NEWPRODUCTSPATCH" . "\n"; + # push(@upgradetable, $newline); + # + # $newline = $allvariableshashref->{'PATCHUPGRADECODE'} . "\t" . $installer::globals::msiproductversion . "\t" . "\t" . "\t" . "258" . "\t" . "\t" . "SAMEPRODUCTSPATCH" . "\n"; + # push(@upgradetable, $newline); + # } + + # also searching for the beta + + if (( $allvariableshashref->{'BETAUPGRADECODE'} ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack )) + { + $newline = $allvariableshashref->{'BETAUPGRADECODE'} . "\t" . "1.0" . "\t" . "\t" . "\t" . "1" . "\t" . "\t" . "BETAPRODUCTS" . "\n"; push(@upgradetable, $newline); + } - # $newline = $installer::globals::upgradecode . "\t" . $installer::globals::msiproductversion . "\t" . $ooomaxnew . "\t" . "\t" . "258" . "\t" . "\t" . "SAMEPRODUCTS" . "\n"; - # push(@upgradetable, $newline); - - if ( $include_ooo_fix ) - { - $newline = $installer::globals::upgradecode . "\t" . "35.0.0" . "\t" . "36.0.0" . "\t" . "\t" . "1" . "\t" . "\t" . "OLDPRODUCTS2" . "\n"; - push(@upgradetable, $newline); - } - - # if (( $allvariableshashref->{'PATCHUPGRADECODE'} ) && ( ! $installer::globals::languagepack )) - # { - # $newline = $allvariableshashref->{'PATCHUPGRADECODE'} . "\t" . "\t" . $installer::globals::msiproductversion . "\t" . "\t" . "1" . "\t" . "\t" . "OLDPRODUCTSPATCH" . "\n"; - # push(@upgradetable, $newline); - # - # $newline = $allvariableshashref->{'PATCHUPGRADECODE'} . "\t" . $installer::globals::msiproductversion . "\t" . "\t" . "\t" . "2" . "\t" . "\t" . "NEWPRODUCTSPATCH" . "\n"; - # push(@upgradetable, $newline); - # - # $newline = $allvariableshashref->{'PATCHUPGRADECODE'} . "\t" . $installer::globals::msiproductversion . "\t" . "\t" . "\t" . "258" . "\t" . "\t" . "SAMEPRODUCTSPATCH" . "\n"; - # push(@upgradetable, $newline); - # } - - # also searching for the beta - - if (( $allvariableshashref->{'BETAUPGRADECODE'} ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack )) - { - $newline = $allvariableshashref->{'BETAUPGRADECODE'} . "\t" . "1.0" . "\t" . "\t" . "\t" . "1" . "\t" . "\t" . "BETAPRODUCTS" . "\n"; - push(@upgradetable, $newline); - } - - # also searching for the stub - - if (( $allvariableshashref->{'STUBUPGRADECODE'} ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack )) - { - $newline = $allvariableshashref->{'STUBUPGRADECODE'} . "\t" . "1.0" . "\t" . "\t" . "\t" . "1" . "\t" . "\t" . "STUBPRODUCTS" . "\n"; - push(@upgradetable, $newline); - } - - # searching for all older patches and languagepacks (defined in a extra file) - - if (( $allvariableshashref->{'REMOVE_UPGRADE_CODE_FILE'} ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack )) - { - my $filename = $allvariableshashref->{'REMOVE_UPGRADE_CODE_FILE'}; - my $langpackcodefilename = $installer::globals::idttemplatepath . $installer::globals::separator . $filename; - if ( ! -f $langpackcodefilename ) { installer::exiter::exit_program("ERROR: Could not find file \"$langpackcodefilename\".", "create_upgrade_table"); } - - my $filecontent = installer::files::read_file($langpackcodefilename); - my $newlines = analyze_file_for_upgrade_table($filecontent); - - for ( my $i = 0; $i <= $#{$newlines}; $i++ ) { push(@upgradetable, ${$newlines}[$i]); } - } - } + # also searching for the stub + + if (( $allvariableshashref->{'STUBUPGRADECODE'} ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack )) + { + $newline = $allvariableshashref->{'STUBUPGRADECODE'} . "\t" . "1.0" . "\t" . "\t" . "\t" . "1" . "\t" . "\t" . "STUBPRODUCTS" . "\n"; + push(@upgradetable, $newline); + } + + # searching for all older patches and languagepacks (defined in a extra file) + + if (( $allvariableshashref->{'REMOVE_UPGRADE_CODE_FILE'} ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack )) + { + my $filename = $allvariableshashref->{'REMOVE_UPGRADE_CODE_FILE'}; + my $langpackcodefilename = $installer::globals::idttemplatepath . $installer::globals::separator . $filename; + if ( ! -f $langpackcodefilename ) { installer::exiter::exit_program("ERROR: Could not find file \"$langpackcodefilename\".", "create_upgrade_table"); } + + my $filecontent = installer::files::read_file($langpackcodefilename); + my $newlines = analyze_file_for_upgrade_table($filecontent); + + for ( my $i = 0; $i <= $#{$newlines}; $i++ ) { push(@upgradetable, ${$newlines}[$i]); } + } # No upgrade for Beta versions! - if (( $allvariableshashref->{'PRODUCTEXTENSION'} eq "Beta" ) && ( ! $installer::globals::patch ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack )) + if (( $allvariableshashref->{'PRODUCTEXTENSION'} eq "Beta" ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack )) { @upgradetable = (); installer::windows::idtglobal::write_idt_header(\@upgradetable, "upgrade"); diff --git a/solenv/bin/modules/installer/worker.pm b/solenv/bin/modules/installer/worker.pm index f860f632df76..9a122e46f255 100644 --- a/solenv/bin/modules/installer/worker.pm +++ b/solenv/bin/modules/installer/worker.pm @@ -44,57 +44,6 @@ use installer::scriptitems; use installer::systemactions; use installer::windows::language; -################################################# -# Writing some global information into -# the list of files without flag PATCH -################################################# - -sub write_nopatchlist_header -{ - my ( $content ) = @_; - - my @header = (); - my $infoline = "This is a list of files, that are defined in scp-projects without\n"; - push(@header, $infoline); - $infoline = "flag \"PATCH\". Important: This does not mean in any case, that \n"; - push(@header, $infoline); - $infoline = "this files are included into or excluded from a patch. \n\n"; - push(@header, $infoline); - $infoline = "Exception Linux: A patch rpm is a complete rpm. This means that all \n"; - push(@header, $infoline); - $infoline = "files are included into a patch rpm, if only one file of the rpm has the \n"; - push(@header, $infoline); - $infoline = "style \"PATCH\". \n\n"; - push(@header, $infoline); - - for ( my $i = 0; $i <= $#header; $i++ ) { push(@{$content},$header[$i]); } -} - -################################################# -# Creating the content of the list of files -# without flag PATCH. -# All files are saved in -# @{$installer::globals::nopatchfilecollector} -################################################# - -sub create_nopatchlist -{ - my @content =(); - - write_nopatchlist_header(\@content); - - for ( my $i = 0; $i <= $#{$installer::globals::nopatchfilecollector}; $i++ ) - { - my $onefile = ${$installer::globals::nopatchfilecollector}[$i]; - my $oneline = $onefile->{'destination'}; - if ( $onefile->{'zipfilename'} ) { $oneline = $oneline . " (" . $onefile->{'zipfilename'} . ")"; } - $oneline = $oneline . "\n"; - push(@content, $oneline); - } - - return \@content; -} - ######################################### # Saving the patchlist file ######################################### @@ -109,14 +58,6 @@ sub _save_patchlist_file installer::files::save_file($installpatchlistdir . $installer::globals::separator . $patchlistfilename, \@installer::globals::patchfilecollector); installer::logger::print_message( "... creating patchlist file $patchlistfilename \n" ); - if (( $installer::globals::patch ) && ( ! $installer::globals::creating_windows_installer_patch )) # only for non-Windows patches - { - $patchlistfilename =~ s/patchfiles\_/nopatchfiles\_/; - my $nopatchlist = create_nopatchlist(); - installer::files::save_file($installpatchlistdir . $installer::globals::separator . $patchlistfilename, $nopatchlist); - installer::logger::print_message( "... creating patch exclusion file $patchlistfilename \n" ); - } - } ############################################################### @@ -221,7 +162,7 @@ sub analyze_and_save_logfile installer::files::save_file($installlogdir . $installer::globals::separator . $numberedlogfilename, \@installer::globals::logfileinfo); # Saving the list of patchfiles in a patchlist directory in the install directory - if (( $installer::globals::patch ) || ( $installer::globals::creating_windows_installer_patch )) { _save_patchlist_file($installlogdir, $numberedlogfilename); } + if ( $installer::globals::creating_windows_installer_patch ) { _save_patchlist_file($installlogdir, $numberedlogfilename); } if ( $installer::globals::creating_windows_installer_patch ) { $installer::globals::creating_windows_installer_patch = 0; } @@ -313,20 +254,6 @@ sub collect_all_items_with_special_flag } ############################################################## -# Collecting all files without patch flag in -# $installer::globals::nopatchfilecollector -############################################################## - -sub collect_all_files_without_patch_flag -{ - my ($filesref) = @_; - - my $newfiles = collect_all_items_without_special_flag($filesref, "PATCH"); - - for ( my $i = 0; $i <= $#{$newfiles}; $i++ ) { push(@{$installer::globals::nopatchfilecollector}, ${$newfiles}[$i]); } -} - -############################################################## # Collecting all items without a defined flag ############################################################## @@ -489,63 +416,6 @@ sub install_simple ($$$$$$) } ########################################################### -# Selecting patch items -########################################################### - -sub select_patch_items -{ - my ( $itemsref, $itemname ) = @_; - - installer::logger::include_header_into_logfile("Selecting items for patches. Item: $itemname"); - - my @itemsarray = (); - - for ( my $i = 0; $i <= $#{$itemsref}; $i++ ) - { - my $oneitem = ${$itemsref}[$i]; - - my $name = $oneitem->{'Name'}; - if (( $name =~ /\bLICENSE/ ) || ( $name =~ /\bREADME/ )) - { - push(@itemsarray, $oneitem); - next; - } - - # Items with style "PATCH" have to be included into the patch - my $styles = ""; - if ( $oneitem->{'Styles'} ) { $styles = $oneitem->{'Styles'}; } - if ( $styles =~ /\bPATCH\b/ ) { push(@itemsarray, $oneitem); } - } - - return \@itemsarray; -} - -########################################################### -# Selecting patch items -########################################################### - -sub select_patch_items_without_name -{ - my ( $itemsref, $itemname ) = @_; - - installer::logger::include_header_into_logfile("Selecting RegistryItems for patches"); - - my @itemsarray = (); - - for ( my $i = 0; $i <= $#{$itemsref}; $i++ ) - { - my $oneitem = ${$itemsref}[$i]; - - # Items with style "PATCH" have to be included into the patch - my $styles = ""; - if ( $oneitem->{'Styles'} ) { $styles = $oneitem->{'Styles'}; } - if ( $styles =~ /\bPATCH\b/ ) { push(@itemsarray, $oneitem); } - } - - return \@itemsarray; -} - -########################################################### # Selecting langpack items ########################################################### @@ -596,257 +466,6 @@ sub select_helppack_items } ########################################################### -# Searching if LICENSE and README, which are not removed -# in select_patch_items are really needed for the patch. -# If not, they are removed now. -########################################################### - -sub analyze_patch_files -{ - my ( $filesref ) = @_; - - installer::logger::include_header_into_logfile("Analyzing patch files"); - - my @filesarray = (); - - for ( my $i = 0; $i <= $#{$filesref}; $i++ ) - { - my $onefile = ${$filesref}[$i]; - my $styles = ""; - if ( $onefile->{'Styles'} ) { $styles = $onefile->{'Styles'}; } - if ( !( $styles =~ /\bPATCH\b/) ) { next; } # removing all files without flag PATCH (LICENSE, README, ...) - - if ( $installer::globals::iswindowsbuild ) - { - # all files of the Windows patch belong to the root module - $onefile->{'modules'} = $installer::globals::rootmodulegid; - } - - push(@filesarray, $onefile); - } - - return \@filesarray; -} - -########################################################### -# reorganizing the patchfile content, -# sorting for directory to decrease the file size -########################################################### - -sub reorg_patchfile -{ - my ($patchfiles, $patchfiledirectories) = @_; - - my @patchfilesarray = (); - my $line = ""; - my $directory = ""; - - # iterating over all directories, writing content into new patchfiles list - - for ( my $i = 0; $i <= $#{$patchfiledirectories}; $i++ ) - { - $directory = ${$patchfiledirectories}[$i]; - $line = "[" . $directory . "]" . "\n"; - push(@patchfilesarray, $line); - - for ( my $j = 0; $j <= $#{$patchfiles}; $j++ ) - { - if ( ${$patchfiles}[$j] =~ /^\s*(.*?)\s*\tXXXXX\t\Q$directory\E\s*$/ ) - { - $line = $1 . "\n"; - push(@patchfilesarray, $line); - } - } - } - - return \@patchfilesarray; -} - -########################################################### -# One special file has to be the last in patchfile.txt. -# Controlling this file, guarantees, that all files were -# patch correctly. Using version.ini makes it easy to -# control this by looking into the about box -# -> shifting one section to the end -########################################################### - -sub shift_section_to_end -{ - my ($patchfilelist) = @_; - - my @patchfile = (); - my @lastsection = (); - my $lastsection = "program"; - my $notlastsection = "Basis\\program"; - my $record = 0; - - for ( my $i = 0; $i <= $#{$patchfilelist}; $i++ ) - { - my $line = ${$patchfilelist}[$i]; - - if (( $record ) && ( $line =~ /^\s*\[/ )) { $record = 0; } - - if (( $line =~ /^\s*\[\Q$lastsection\E\\\]\s*$/ ) && ( ! ( $line =~ /\Q$notlastsection\E\\\]\s*$/ ))) { $record = 1; } - - if ( $record ) { push(@lastsection, $line); } - else { push(@patchfile, $line); } - } - - if ( $#lastsection > -1 ) - { - for ( my $i = 0; $i <= $#lastsection; $i++ ) - { - push(@patchfile, $lastsection[$i]); - } - } - - return \@patchfile; -} - -########################################################### -# One special file has to be the last in patchfile.txt. -# Controlling this file, guarantees, that all files were -# patch correctly. Using version.ini makes it easy to -# control this by looking into the about box -# -> shifting one file of the last section to the end -########################################################### - -sub shift_file_to_end -{ - my ($patchfilelist) = @_; - - my @patchfile = (); - my $lastfilename = "version.ini"; - my $lastfileline = ""; - my $foundfile = 0; - - # Only searching this file in the last section - my $lastsectionname = ""; - - for ( my $i = 0; $i <= $#{$patchfilelist}; $i++ ) - { - my $line = ${$patchfilelist}[$i]; - if ( $line =~ /^\s*\[(.*?)\]\s*$/ ) { $lastsectionname = $1; } - } - - my $record = 0; - for ( my $i = 0; $i <= $#{$patchfilelist}; $i++ ) - { - my $line = ${$patchfilelist}[$i]; - - if ( $line =~ /^\s*\[\Q$lastsectionname\E\]\s*$/ ) { $record = 1; } - - if (( $line =~ /^\s*\"\Q$lastfilename\E\"\=/ ) && ( $record )) - { - $lastfileline = $line; - $foundfile = 1; - $record = 0; - next; - } - - push(@patchfile, $line); - } - - if ( $foundfile ) { push(@patchfile, $lastfileline); } - - return \@patchfile; -} - -########################################################### -# Renaming Windows files in Patch and creating file -# patchfiles.txt -########################################################### - -sub prepare_windows_patchfiles -{ - my ( $filesref, $languagestringref, $allvariableshashref ) = @_; - - my @patchfiles = (); - my %patchfiledirectories = (); - my $patchfilename = "patchlist.txt"; - my $patchfilename2 = "patchmsi.dll"; - - if ( ! $allvariableshashref->{'WINDOWSPATCHLEVEL'} ) { installer::exiter::exit_program("ERROR: No Windows patch level defined in list file (WINDOWSPATCHLEVEL) !", "prepare_windows_patchfiles"); } - my $windowspatchlevel = $installer::globals::buildid; - - for ( my $i = 0; $i <= $#{$filesref}; $i++ ) - { - my $onefile = ${$filesref}[$i]; - - my $filename = $onefile->{'Name'}; - if (( $filename eq $patchfilename ) || ( $filename eq $patchfilename2 )) { next; } - - my $styles = ""; - if ( $onefile->{'Styles'} ) { $styles = $onefile->{'Styles'}; } - if ( $styles =~ /\bDONTRENAMEINPATCH\b/ ) { next; } - - # special handling for files with flag DONTSHOW. This files get the extension ".dontshow" to be filtered by dialogs. - my $localwindowspatchlevel = $windowspatchlevel; - if ( $styles =~ /\bDONTSHOW\b/ ) { $localwindowspatchlevel = $localwindowspatchlevel . "\.dontshow"; } - - my $olddestination = $onefile->{'destination'}; - my $newdestination = $olddestination . "." . $localwindowspatchlevel; - my $localfilename = $olddestination; - installer::pathanalyzer::make_absolute_filename_to_relative_filename(\$localfilename); # file name part - my $line = "\"" . $localfilename . "\"" . "=" . "\"" . "\." . $localwindowspatchlevel . "\""; - $onefile->{'destination'} = $newdestination; - - my $newfilename = $onefile->{'Name'} . "." . $localwindowspatchlevel; - $onefile->{'Name'} = $newfilename; - - # adding section information (section is the directory) - my $origolddestination = $olddestination; - installer::pathanalyzer::get_path_from_fullqualifiedname(\$olddestination); # directory part - if ( ! $olddestination ) { $olddestination = "_root"; } - if ( ! exists($patchfiledirectories{$olddestination}) ) { $patchfiledirectories{$olddestination} = 1; } - $line = $line . "\tXXXXX\t" . $olddestination . "\n"; - - push(@patchfiles, $line); - - # also collecting all files from patch in @installer::globals::patchfilecollector - my $patchfileline = $origolddestination . "\n"; - push(@installer::globals::patchfilecollector, $patchfileline); - } - - my $winpatchdirname = "winpatch"; - my $winpatchdir = installer::systemactions::create_directories($winpatchdirname, $languagestringref); - - my ($patchlistfile) = grep {$_->{Name} eq $patchfilename} @{$filesref}; - if (! defined $patchlistfile) { - installer::exiter::exit_program("ERROR: Could not find file $patchfilename in list of files!", "prepare_windows_patchfiles"); - } - - # reorganizing the patchfile content, sorting for directory to decrease the file size - my $sorteddirectorylist = [ sort keys %patchfiledirectories ]; - my $patchfilelist = reorg_patchfile(\@patchfiles, $sorteddirectorylist); - - # shifting version.ini to the end of the list, to guarantee, that all files are patched - # if the correct version is shown in the about box - $patchfilelist = shift_section_to_end($patchfilelist); - $patchfilelist = shift_file_to_end($patchfilelist); - - # saving the file - $patchfilename = $winpatchdir . $installer::globals::separator . $patchfilename; - installer::files::save_file($patchfilename, $patchfilelist); - - my $infoline = "\nCreated list of patch files: $patchfilename\n"; - push( @installer::globals::logfileinfo, $infoline); - - # and assigning the new source - $patchlistfile->{'sourcepath'} = $patchfilename; - - # and finally checking the file size - if ( -f $patchfilename ) # test of existence - { - my $filesize = ( -s $patchfilename ); - $infoline = "Size of patch file list: $filesize\n\n"; - push( @installer::globals::logfileinfo, $infoline); - installer::logger::print_message( "... size of patch list file: $filesize Byte ... \n" ); - } - -} - -########################################################### # Replacing %-variables with the content # of $allvariableshashref ########################################################### diff --git a/solenv/bin/modules/installer/ziplist.pm b/solenv/bin/modules/installer/ziplist.pm index c9ba2388ae92..aa15ba02061d 100644 --- a/solenv/bin/modules/installer/ziplist.pm +++ b/solenv/bin/modules/installer/ziplist.pm @@ -852,8 +852,7 @@ sub add_variables_to_allvariableshashref $variableshashref->{'LCPRODUCTEXTENSION'} = ""; } - if ( $installer::globals::patch ) { $variableshashref->{'PRODUCTADDON'} = $installer::globals::patchaddon; } - elsif ( $installer::globals::languagepack ) { $variableshashref->{'PRODUCTADDON'} = $installer::globals::languagepackaddon; } + if ( $installer::globals::languagepack ) { $variableshashref->{'PRODUCTADDON'} = $installer::globals::languagepackaddon; } elsif ( $installer::globals::helppack ) { $variableshashref->{'PRODUCTADDON'} = $installer::globals::helppackpackaddon; } else { $variableshashref->{'PRODUCTADDON'} = ""; } diff --git a/solenv/bin/oochkpatch b/solenv/bin/oochkpatch deleted file mode 100755 index 4e5a9051dac8..000000000000 --- a/solenv/bin/oochkpatch +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# -# This file is part of the LibreOffice project. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# -# This file incorporates work covered by the following license notice: -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed -# with this work for additional information regarding copyright -# ownership. The ASF licenses this file to you under the Apache -# License, Version 2.0 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.apache.org/licenses/LICENSE-2.0 . -# -if [ x${SOLARENV}x = xx ]; then - echo No environment found, please use 'configure' or 'setsolar' - exit 1 -fi -exec perl -w $SOLARENV/bin/oochkpatch.pl "$@" diff --git a/solenv/bin/oochkpatch.pl b/solenv/bin/oochkpatch.pl deleted file mode 100644 index 82a7d7b5a761..000000000000 --- a/solenv/bin/oochkpatch.pl +++ /dev/null @@ -1,292 +0,0 @@ -: - eval 'exec perl -S $0 ${1+"$@"}' - if 0; -# -# This file is part of the LibreOffice project. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# -# This file incorporates work covered by the following license notice: -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed -# with this work for additional information regarding copyright -# ownership. The ASF licenses this file to you under the Apache -# License, Version 2.0 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.apache.org/licenses/LICENSE-2.0 . -# -# -# oochkpatch - check patch flags against CWS modules -# - -require File::Temp; -require File::Find; -require Getopt::Long; -require Pod::Usage; -use Pod::Usage; -use Getopt::Long; -use File::Temp qw/ tempfile tempdir /; -use File::Find; - - -# configuration goes here -########################################################## - -# uncomment this, if in pure OOo environment -#my $toplevel_module = "instsetoo_native"; -#my $scp_module = "scp2"; -#my $setup_file = "setup_osl"; - -# uncomment this, if within the StarOffice environment -my $toplevel_module = "instset_native"; -my $scp_module = "scp2so"; -my $setup_file = "setup"; - -my $deliver = "solenv/bin/deliver.pl"; -my $build = "solenv/bin/build.pl"; - -# list of hardcoded exceptions (files that are _never_ considered -# missing from the patch) -my %hardcoded_exceptions = ('build.lst' => 1); - - -# no configuration below this point, please! -########################################################## - -# defaults -my $from_module = ""; -my $verbose = ''; -my $help = ''; -my $man = ''; -my $modules = ''; -my $from = ''; -my $perl = ''; - -GetOptions('help|?' => \$help, - 'man' => \$man, - 'verbose' => \$verbose, - 'from=s' => \$from_module ) or pod2usage(2); -pod2usage(1) if $help; -pod2usage(-exitstatus => 0, -verbose => 2) if $man; - -# process remaining args -print "Processing args...\n" if $verbose; -foreach my $argument (@ARGV) -{ - print " Checking module ", $argument, "\n" if $verbose; - push @modules, $argument; -} - -# platform-dependent stuff -if( $^O eq 'MSWin32' ) -{ - $perl = "$ENV{COMSPEC} -c $ENV{PERL}"; - $setup_file = $setup_file . ".inf"; -} -else -{ - $perl = 'perl'; - $setup_file = $setup_file . ".ins"; -}; - -# read some SOLAR stuff from env -my $SRC_ROOT = $ENV{"SRC_ROOT"}; -my $INPATH = $ENV{"INPATH"}; - -# process --from modules -if( $from_module ) -{ - print "Checking all modules upwards and including ", $from_module, "\n" if $verbose; - - # append build.pl-generated list of modules - chdir "$SRC_ROOT/$toplevel_module" or - chdir "$SRC_ROOT/$toplevel_module.lnk" or die "ERROR: cannot cd to $SRC_ROOT/$toplevel_module!"; - open(ALLMODULES, - "$perl $SRC_ROOT/$build --all:$from_module --show 2>&1 |") or die "ERROR: cannot build --show!\n"; - while(<ALLMODULES>) - { - if( /Building project/ ) - { - my @module = split( /\s+/, $_ ); - print " which is ", $module[2], "\n" if $verbose; - push(@modules,$module[2]); - } - } -} - -die "ERROR: no modules to check!\n" if !@modules; - -$tempdir = tempdir( TMPDIR => 1, CLEANUP => 1); - -# generate list of files with PATCH flag -print "Generating list of files which have the PATCH flag...\n" if $verbose; - -my $path_to_setup_file = $SRC_ROOT."/".$scp_module."/".$INPATH."/bin/osl/".$setup_file; -my $alternate_path_to_setup_file = $SRC_ROOT."/".$scp_module.".lnk/".$INPATH."/bin/osl/".$setup_file; -my $in_file_block=0; -my $patch_flag=0; -my $file_name=''; -my $base; -my $ext; -my %pack_files; -open(SETUP, "<".$path_to_setup_file) or - open(SETUP, "<".$alternate_path_to_setup_file) or die "ERROR: cannot open $path_to_setup_file!\n"; -while(<SETUP>) -{ - if( /^File\s+/ && !$in_file_block ) - { - $in_file_block = 1; - $patch_flag=0; - $file_name=''; - } - elsif( /^End/ && $file_name ne '' && $in_file_block ) - { - $file_name =~ s/["']//g; - $pack_files{$file_name} = $patch_flag; - - if( $patch_flag ) - { - print( " File $file_name included in patch\n") if $verbose; - } - else - { - print( " File $file_name NOT included in patch\n") if $verbose; - } - - $in_file_block = 0; - } - elsif( /^\s+Styles\s*=\s*.*PATCH/ && $in_file_block ) - { - $patch_flag = 1; - } - elsif( ($res) = /^\s+Name\s*=\s*(.*);/ ) - { - $file_name = $res; - } -} - -# generate list of delivered files -print "Generating list of delivered libs...\n" if $verbose; - -# first, deliver all modules to tempdir -foreach my $module (@modules) -{ - print " dummy-delivering $module...\n" if $verbose; - chdir "$SRC_ROOT/$module" or - chdir "$SRC_ROOT/$module.lnk" or die "ERROR: cannot cd to $SRC_ROOT/$module!"; - `$perl $SRC_ROOT/$deliver $tempdir`; -} - -# now, check all files in delivered dirs for containedness in PATCH -# set -print "Checking against delivered files...\n" if $verbose; -find(\&wanted, $tempdir ); - -sub wanted -{ - my $fname; - - if( -f ) - { - $fname = $_; - if( !exists $pack_files{$fname} ) - { - print " File $fname is not packed.\n" if $verbose; - } - elsif( $pack_files{$fname} == 0 ) - { - if( !$hardcoded_exceptions{ $fname } ) - { - # file not in patch set, and not in exception list - print " File $fname is packed, but NOT included in patch set and part of delivered output\n" if $verbose; - print "$fname\n" if !$verbose; - } - else - { - print " File $fname is NOT included in patch set, but member of hardcoded exception list\n" if $verbose; - } - } - elsif( $pack_files{$fname} == 1 ) - { - print " File $fname packed and patched.\n" if $verbose; - } - } -} - - -__END__ - -=head1 NAME - -oochkpatch.pl - Verify patch flags against module libraries - -=head1 SYNOPSIS - -oochkpatch.pl [options] [module-name ...] - - Options: - --help|-h brief help message - --man|-m full documentation - --verbose|-v tell what's happening - --from=module check all modules from - given one upwards - -=head1 OPTIONS - -=over 8 - -=item B<--help> - -Print a brief help message and exits. - -=item B<--man> - -Prints the manual page and exits. - -=item B<--verbose> - -Verbosely tell what's currently happening - -=item B<--from=module> - -Assumes OOo was built incompatibly from given module -upwards, and check against all libs from all upwards modules. -Further modules can be given at the command line, which are merged -with the ones generated from this option - -=back - -=head1 DESCRIPTION - -B<This program> will compare all libs delivered from the specified modules -against the set of files marked with the B<patch> flag in scp2. Useful to check -if the patch set is complete. Please note that this program needs to be run in -a solar shell, i.e. the OOo build environment needs to be set up in the shell. - -There's kind of a heuristic involved, to determine exactly which files -to check against includedness in the patch set (since e.g. all headers -are delivered, but clearly need not be checked against patch -flags). It works by first collecting all files that are mentioned in -the pack master file, and then checking all files delivered from the -specified modules against that pack list: if the file is not packed, -or if it's packed and has the patch flag set, all is well. Otherwise, -the file in question potentially misses the patch flag (because one of -the modified modules contains it). - -=head1 EXAMPLE - -To determine the set of libs not yet carrying the patch flag for a CWS -containing sfx2, svx, and vcl, which is incompatible from sfx2 -upwards, use something like this: - -oochkpatch.pl --from=sfx2 `cwsquery modules` - -This puts every module upwards and including sfx2 in the check list, -plus vcl. Note that with this approach, you'll usually get a larger -set of files for the patch than necessary - but at least you get all -files that might have changed theoretically. - -=cut |