external/onlineupdate/UnpackedTarball_onlineupdate.mk | 1 + external/onlineupdate/inifiles.patch | 11 +++++++++++ 2 files changed, 12 insertions(+)
New commits: commit a31f334d36b5735ba6fc8d0f89e834a73bdcc561 Author: Stephan Bergmann <stephan.bergm...@allotropia.de> AuthorDate: Fri Jan 12 14:00:35 2024 +0100 Commit: Stephan Bergmann <stephan.bergm...@allotropia.de> CommitDate: Fri Jan 12 17:26:49 2024 +0100 Windows MAR update issues with program/{setup,version}.ini At least on Windows, our MSI install sets differ from our archive install sets in that their program/setup.ini and program/version.ini files have differing content: For one, they have ProductCode, UpdateCode, and MsiProductVersion (the latter only in version.ini) lines that have empty values in archive install sets and non-empty values in MSI install sets. For another, setup.ini in MSI install sets has additional ALLUSERS, BASISINSTALLLOCATION, FINDPRODUCT, INSTALLLOCATION, OFFICEINSTALLLOCATION, and UREINSTALLLOCATION lines that are completely missing in archive install sets. This is a problem when building MAR updates with create-partial-info: Both ini files contain the buildid, so will always change between builds, so will always be recorded in MAR updates. But when they are recorded as "patch", actually applying the MAR update file (generated from archive install sets) to an installation (originating from an MSI install set) will fail, as the size of the ini file in the installation doesn't match the expected size recorded in the MAR update file. I naively but strongly assume that those differences in ini file content are historic junk by now that have no practical consequences (i.e., I assume that no code actually makes use of those ini file entries). Which would mean that it should actually be harmless to replace an installation's (MSI-originating) ini files with smaller (archive-originating) ones during an update. So for now I work around that problem by always forcing these two files to be recorded as a full "add" rather than as a "patch" in the generated MAR update file. In parallel, I will look into the history of all those problematic ini file entries, and will try to verify that they are indeed unused junk, and will try to clean that up. (So that ultimately there will be no more differences between MSI and archive versions.) Change-Id: I9b22bd83889b569598162c37f9bf1a0857177063 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161974 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergm...@allotropia.de> diff --git a/external/onlineupdate/UnpackedTarball_onlineupdate.mk b/external/onlineupdate/UnpackedTarball_onlineupdate.mk index 166ede0a6b9b..43c189b84a18 100644 --- a/external/onlineupdate/UnpackedTarball_onlineupdate.mk +++ b/external/onlineupdate/UnpackedTarball_onlineupdate.mk @@ -21,6 +21,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,onlineupdate, \ ifeq ($(OS),WNT) $(eval $(call gb_UnpackedTarball_add_patches,onlineupdate, \ external/onlineupdate/cygpath.patch \ + external/onlineupdate/inifiles.patch \ )) endif diff --git a/external/onlineupdate/inifiles.patch b/external/onlineupdate/inifiles.patch new file mode 100644 index 000000000000..1d285f09af1b --- /dev/null +++ b/external/onlineupdate/inifiles.patch @@ -0,0 +1,11 @@ +--- tools/update-packaging/make_incremental_update.sh ++++ tools/update-packaging/make_incremental_update.sh +@@ -226,7 +227,7 @@ + patchsize=$(get_file_size "$patchfile") + fullsize=$(get_file_size "$workdir/$f") + +- if [ $patchsize -lt $fullsize ]; then ++ if [ $patchsize -lt $fullsize ] && [ "$f" != program/setup.ini ] && [ "$f" != program/version.ini ]; then + make_patch_instruction "$f" "$updatemanifestv3" + mv -f "$patchfile" "$workdir/$f.patch" + rm -f "$workdir/$f"