summaryrefslogtreecommitdiff
path: root/bin/update
AgeCommit message (Collapse)Author
2024-06-06mar: allow parallel creation of diff packagesChristian Lohmaier
also include the version number in the base-URL for the mar files in the json-file Change-Id: I613ac7c1cf3aeb1eff856c58f00a67151267606c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168100 Tested-by: Jenkins Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
2024-03-28tdf#158803 remove unused path.convert_to_unix importLeSasse
Change-Id: I01b8626c95bc234db38c76ee2fc6a17c91aad477 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165374 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-03-28tdf#158803 fix fstringLeSasse
Change-Id: I5443341ce308ea0f9906b54c02c51785aa624e6f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165375 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-03-28tdf#158803 statement ends with an unnessary semicolonLeSasse
Change-Id: Id67e1a7f944f0aa1aaa5d598305727c913d823cb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165376 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-01-22Create MAR updates from msi rather than from archiveStephan Bergmann
...as the former is more convenient for release engineering (see the discussion in the comments at <https://gerrit.libreoffice.org/c/core/+/162157/1#message-8d7ebbcc64a87ee8e4a073ae1a05e3b74f5a3d6a> "Also enable --with-package-format=archive for LibreOfficeWin64.conf"). Instead of ONLINEUPDATE_MAR_OLDARCHIVE and ONLINEUPDATE_MAR_OLDMETADATA make variables, the create-partial-info target now only needs an ONLINEUPDATE_MAR_OLDMSI make variable. TODO: There are two issues when comparing the content of msi files (extracted with msiexec /a), which the old code comparing the content of archives had tried to somewhat (but not fully) address with the metadata files that I had invented (and now reverted): For one, msiexec /a also extracts content that would normally be installed somewhere else in the system (e.g., it extracts Fonts, System, and System64 directories). Differences in those directories will cause a MAR update to create those directories in the installation directory, rather than to update the corresponding files in their actual locations. For another, optional components are not recognized as such, but their content must be added to the MAR file as add/patch-if, not as plain add/patch. To work around that, for now *all* files are added as add/patch-if, conditional on the files themselves. Thus, addition of files will cause a MAR update to miss them. (As they now exclusively operate on msi files, the create-update-info and create-partial-info targets are no longer meaningful for non-Windows platforms, so drop the non-Windows bin/update/create_full_mar_for_languages.py part.) Change-Id: Ifb55b5e7d1a201b4f50a27cb449a634b96c2e29b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162399 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-01-16Remove unused `make upload-update-info`Stephan Bergmann
Change-Id: Ifdec48aaf53b0444c2d7ceef554f64795e2f2c38 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162172 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-01-12Further adapting of create-partial-infoStephan Bergmann
...along the lines of what had already been done for create-update-info, passing files to the mar executable with an -f files.txt instead of on the command line (which could grow too long for Windows), and taking the archive metadata into account. For the latter, `make create-partial-info` now expects a second make variable, ONLINEUPDATE_MAR_OLDMETADATA, in addition to ONLINEUPDATE_MAR_OLDARCHIVE. And there is a new TODO in update/create_partial_update.py that the old and new metadata should be compared for problematic changes. (For now, any such changes would just get lost by an update.) Change-Id: Ide45adedb72958fc32c5b26aa7ebb01530ccf3d7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161972 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-01-11Fix `make create-partial-info` (for Windows, at least)Stephan Bergmann
I got lost trying to figure out how the original bin/update/create_partial_update.py code was meant to obtain old and new installation trees to diff, so I simplified that down to the create-partial-info make target now expecting an ONLINEUPDATE_MAR_OLDARCHIVE make variable that points at the old archive install set. (And the --with-online-update-mar-serverurl configure option is gone for good again.) The remaining changes are similar to what was needed in 28bad382face10be75af3875e44dde89fbc78108 "Fix `make create-update-info` (for Windows, at least)". (And the mbsdiff and mar tools expect Windows-style pathnames, but mktemp returns a Unix-style pathname in cygwin shell scripts, so this needed an additional Windows-only external/onlineupdate/cygpath.patch.) Change-Id: I40690210d62e3f26fb2d574914a0dd4323e6cd62 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161924 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-01-11Make create-update-info handle conditional contentStephan Bergmann
That make target operates on an archive, but generates data to be applied to an msi installation, so suffers from any mismatch between archive and msi install sets. Two such mismatches, at least on Windows, are: 1 Files that msi will install outside the LibreOffice installation itself (but which for an archive install set are included under LibreOffice/). This covers (at least) .Net assemblies and associated files that are installed in the GAC (scp2 styles ASSEMBLY and ASSIGNCOMPONENT) and fonts (scp2 style FONT). 2 Files that msi will only install conditionally. This covers optional components (many of which in scp2 are assigned to gid_Module_Optional_... modules) and user interface languages (which in scp2 are assigned to gid_Module_Langpack_... modules). The approach taken here is to create a workdir/installation/LibreOffice/archive/install/metadata file while building an archive install set, and to record any files matching 1 (as "skip" lines) or 2 (as "cond" lines). Then, the create-update-info target uses that metadata file to act accordingly on those files: 1 Files from "skip" lines are simply removed for now from the extracted archive that is passed to Mozilla's make_full_update.sh script. (TODO: That means that changes to such files will not be updated with the MAR update mechanism. This would apparently need some extra processing during the MAR update.) 2 Files from "cond" lines shall be recorded as add-if in the mar file manifest. Mozilla's make_full_update.sh script already has support for emitting add-if vs. plain add, but only for files under distribution/extensions/, which doesn't match our needs. So we generate from the metadata file an ifs file that we pass into the make_full_update.sh script, and patch that script to also take that ifs file into account. (Each line in the ifs file is of the form "testfile" "file" which works as long as none of the pathnames contains double quote characters. The Mozilla script code appears to be confused about the arguments to make_add_instruction(), where this ifs file will be needed: There are calls to make_add_instruction() with two or three arguments across make_full_update.sh and make_incremental_update.sh, but make_add_instruction() checks $1, $2, and $4 (but not $3), so leave that mess alone and pass the ifs file as a global IFSFILE variable instead.) The mar file manifest `add-if "testfile" "file"` adds "file" only if "testfile" is already present, and those two can be different files. TODO: However, for simplicity, for now I always use "file" also as the "testfile" (so that an add-if file only gets updated if it was already present). That avoids having to identify a specific "key file" for each optional component and for each user interface language, where that key file would be used as the add-if testfile. But on the other hand, it means that if an optional component or a user interface language will bring along a completely new file in the future, we will not install that file during a MAR update. What obviously remains to be done is to properly assign each add-if file to a specific key file. (And the current way of identifying add-if files by gid_Module_... names appears to be too simplistic too. For example, there are some gid_Module_Optional_... that are installed unconditionally for msi; but it should be harmless that those files are recorded as add-if rather than as plain add.) Change-Id: I2fdeed92604f3a2d8a0b500b9e3fa421cfb6a9cc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161917 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-01-10Adapt create-update-info to --with-langStephan Bergmann
...where, depending on --without-lang/--with-lang=fu ba bz/--with-lang=ALL, the directory and archive file names appear to vary wildly, so go with a glob approach instead of trying to guess the exact matching names here Change-Id: I07355724f28eea66e619eb8d3d83c3e74217f54f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161885 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-01-05Fix `make create-update-info` also for non-WindowsStephan Bergmann
Change-Id: I83a44d0cb563b1caf9459dddec7c6409af6ac0f4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161693 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-01-05Fix `make create-update-info` (for Windows, at least)Stephan Bergmann
* The shell scripts that had once been copied from Mozilla to bin/update/*.sh are now included in onlineupdate-c003be8b9727672e7d30972983b375f4c200233f-2.tar.xz (which is still generated from the same <https://github.com/mozilla/gecko-dev/commit/c003be8b9727672e7d30972983b375f4c200233f> that was used for the original tarball in 3a445cb49795fabe0d8caaf12bfc38eb9e12d5fc "Turn onlineupdate into external/onlineupdate"). * The additional modifications in external/onlineupdate/lo.patch are: ** Allowing to pass the list of files into the mar tool via -f instead of on the command line, to avoid "command line too long" errors on Windows, inspired by the modifications once made directly in our old downstream sources with 4165dd4e465a86ba6abe9afb3abfda5ef72493ea "add a way to create mar file from file", 8e4d49340bd235a7db8fde1d24dd1d63ddc4d571 "use the new file based approach for the mar creation", and fb13ed6955cd66017e5348b915af371a184ea633 "add the manifest file to the mar file". (To keep things simple for now, it still uses a hard-coded maximum of 10000 lines in the file, marked with a TODO.) ** Not failing when "precomplete file is missing!" (There is a comment // Applications aren't required to have a precomplete manifest. The mar // generation scripts enforce the presence of a precomplete manifest. in workdir/UnpackedTarball/onlineupdate/onlineupdate/source/update/updater/updater.cpp and it appears to be OK that we don't have such a precomplete manifest file and just skip that test.) * In the Makefile.gbuild create-update-info, the create_full_mar.py script needs to be called with a Unix pathname on Windows, or else the #!/usr/bin/env python3 shebang in that script would get confused. * The related Makefile.gbuild targets upload-update-info and create-partial-info have not been addressed yet. Change-Id: Iab4e083ddbe99e07d846e202f20c6031e2983e1b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161656 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2023-12-29tdf#158803 Remove unused imports from binBogdan B
Used pyflakes to find unused imports from bin/ folder. Then, removed those unused imports. Change-Id: I439dbc443d6da6d82700ff9caf2f4f2677f46b5f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158819 Reviewed-by: Hossein <hossein@libreoffice.org> Tested-by: Hossein <hossein@libreoffice.org>
2023-12-12Split --with-update-config=... into many --with-online-update-mar-...=...Stephan Bergmann
...and allow each of them to be left off, for debug purposes, even if that may render the resulting --enable-online-update-mar feature non-functional. This change tracked each item that was potentially read from the --with-update-config ini file, and turned each of them into a new --with-online-update-mar-... option. The only exception and remaining TODO is bin/update/upload_build_config.py (called from Makefile.gbuild). distro-configs/Jenkins/LibreOfficeLinuxUpdater.conf (which might well be dead) set --with-update-config=~/updater.ini with an ini file of unknown content. So that no items are silently missing if we ever resurrect that distro-config, I set all of the new options to =TODO there for now. Change-Id: I17a13e0d190a868436bac10c1b0a6675d8c704c0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160622 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2023-12-07mkdir_p still needed by make create-partial-infoStephan Bergmann
157298bb808a943616991927f9370a86c1f2ca48 "android and bin/update: make pythonic" had removed it, so that `make create-partial-info` would now fail at least with > Traceback (most recent call last): > File "bin/update/create_partial_update.py", line 10, in <module> > from path import UpdaterPath, mkdir_p, convert_to_unix, convert_to_native > ImportError: cannot import name 'mkdir_p' from 'path' (bin/update/path.py) (and no idea if that make target would still do anything useful, beyond this initial hurdle) Change-Id: Ib1be3304e2b3468dc187c1b5e24041e68a3677fc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160397 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2023-12-06Fix apparent typo in make create-update-infoStephan Bergmann
157298bb808a943616991927f9370a86c1f2ca48 "android and bin/update: make pythonic" had introduced this apparent typo, so that `make create-update-info` would now fail (and no idea if that make target would still do anything useful, beyond this initial hurdle) Change-Id: I63c4e87e06370d99e5d036ce5c7f2a5bda3c1554 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160398 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2022-06-22android and bin/update: make pythonicLukas
Change-Id: Iaf791bfa8d9822843b26f2a2f2c3d94c55a60a0b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133358 Reviewed-by: Arkadiy Illarionov <qarkai@gmail.com> Tested-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org> Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2021-08-20Make some scripts more portableIlmari Lauhakangas
Change-Id: Ia89059eea51ca396a7c74143625ac9a6706de198 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120773 Tested-by: Jenkins Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2020-07-13Don't rely on Python's treatment of unrecognized escape sequencesMike Kaganski
According to [1]: > Changed in version 3.6: Unrecognized escape sequences produce a DeprecationWarning. > In a future Python version they will be a SyntaxWarning and eventually a SyntaxError. [1] https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals Change-Id: Ia4f79f17ccb121f423f35b1e1306d5ae285e8762 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98321 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2019-11-24Fix 'is' operator for comparisonJens Carl
The 'is' operator should not be used for comparison on some types of literals. In CPython this works by accident and CPython 3.8 introduced a SyntaxWarning (see https://bugs.python.org/issue34850). Change-Id: I5cb7470132b26d87848c2bdc382b05477eb56afb Reviewed-on: https://gerrit.libreoffice.org/83032 Tested-by: Jenkins Reviewed-by: Jens Carl <j.carl43@gmx.de>
2017-11-16updater: improve message for failed update generationMarkus Mohrhard
Change-Id: Iadfcdd58ca77d0906583c63ff81170f54c8c0ecd
2017-09-28updater: make sure the target dir exists while writing update infoMarkus Mohrhard
Change-Id: I6cafdb28468d0023a0a1ea8cc2c051e9b84a1c6c
2017-09-28fix the command line argument limit problem for incremental build generationMarkus Mohrhard
Change-Id: I934c8196e260573cd0bc4f74066ea6082ab3c6c3
2017-08-20updater: move the update channel info from the config to versionrcMarkus Mohrhard
Change-Id: Id19578a889de51cacac869d7ec681c5c18c40cf9 Reviewed-on: https://gerrit.libreoffice.org/41365 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2017-08-20updater: another place needs to handle additional dir level on windowsMarkus Mohrhard
Change-Id: I04f784d317b8cfeea25932728f03c92b0b73c70e
2017-08-20updater: replace whitespace in dir names and strip the extra win dir layerMarkus Mohrhard
Change-Id: I543b903157d44038468eb4d92261dfd0d8b2909b
2017-08-06updater: fix small python issueMarkus Mohrhard
Change-Id: I0834a088af1527e4ed0d181f9e3a63ee82d0e980
2017-08-06updater: handle paths with spaces correctlyMarkus Mohrhard
Change-Id: I8089f1e2b46a242562608431e56c5da4c63fdb01
2017-08-06Fix typos in codeAndrea Gelmini
Change-Id: I49bcc55e1f91ee88cffafbe408f9d5f9e7ed0d16 Reviewed-on: https://gerrit.libreoffice.org/40796 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2017-08-05updater: disable lang pack handling for windowsMarkus Mohrhard
Change-Id: Ie3005a3fd4bc491cea0dd965931a7c0ac7ef813e Reviewed-on: https://gerrit.libreoffice.org/40781 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2017-08-05updater: abort if there are not enough command line parametersMarkus Mohrhard
Change-Id: Ifb982aa4a0c496e1e21f762bd4e20241e41d4ea2 Reviewed-on: https://gerrit.libreoffice.org/40780 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2017-08-05updater: convert to unix path in another placeMarkus Mohrhard
Change-Id: I07ab2d69891975c93ab1824410eacc30eb98fcb5 Reviewed-on: https://gerrit.libreoffice.org/40779 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2017-08-04updater: get the partial update generation working on windowsMarkus Mohrhard
Change-Id: I01d8958801e7c5b2d08dd79b0469dfab1f6dee72 Reviewed-on: https://gerrit.libreoffice.org/40757 Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com> Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2017-08-04updater: handle windows path in cygwin correctlyMarkus Mohrhard
This is a huge mess. Any windows executable does not understand cygwin paths but for example the bash script only understands unix paths. Additionally, os.path is unixpath so it is not able to correctly handle windows paths. We therefore convert everything that we need to handle to unix paths and only the few paths that are passed in the end to windows executables back to the native format. We selected mixed mode (windows path with forward slash) to allow the unix scripts to manipulate paths. Change-Id: Ic443415ff5e8277bf0bb8704bbafd35f50767288 Reviewed-on: https://gerrit.libreoffice.org/40755 Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com> Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2017-08-04updater: check that access to mandatory externals is workingMarkus Mohrhard
Change-Id: Ica68488f4e39c958a913936573cee67c1ff69175 Reviewed-on: https://gerrit.libreoffice.org/40754 Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com> Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2017-08-04updater: initial working on windows support for mar file generationMarkus Mohrhard
Change-Id: Ia91724afbb258c7667dd18e76a32be24bff369ef Reviewed-on: https://gerrit.libreoffice.org/40753 Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com> Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2017-06-17updater: expand ~ to $HOME in config path of uploader scriptMarkus Mohrhard
Change-Id: I8c5ce1a2c256fbaf046fbe73e5574d48cd3f3a7a
2017-05-27fix construction of directory pathMarkus Mohrhard
Change-Id: I5fa7ce762ae7e429f685a52b0fed1a1f120da8dd
2017-05-19take the update server url from the configMarkus Mohrhard
Change-Id: I9960cbc0b0c9037a1c9cf0ef7a9699bb09ad054e
2017-05-19fix errors in upload scriptsMarkus Mohrhard
Change-Id: I0ee9fbef7b80e5d37800b4fb9daff7e8ba46d65d
2017-05-19integrate the partial update info into the uploaded infoMarkus Mohrhard
Change-Id: I1b6fc7970d3010c63ae910d55103efb504e15b53
2017-05-19use file instead of complete for the key of the partial update infoMarkus Mohrhard
Change-Id: Ifbb482a4fd9c1c92e9cdd7769d4b16160de14a86
2017-05-19add missing fileMarkus Mohrhard
Change-Id: I7cd9d541b90f4f6b38aa5e36e295e7677bb22f58
2017-05-19use the shared signing codeMarkus Mohrhard
Change-Id: Ica0fad83820569623f3cc2f0217ac9cd8ee19257
2017-05-19simplify path handling in the updater scriptsMarkus Mohrhard
Change-Id: Idcf7f9cedc2368f6a4e4e10c2852cc9b1125b712
2017-05-19create valid partial language updates and write partial update infoMarkus Mohrhard
Change-Id: I4000523cfc944657714267958836dd3ce4ec3b0d
2017-05-19extract the mar signing codeMarkus Mohrhard
Change-Id: I007b0b68a61242b7255a1a58a3637e3307d675aa
2017-05-19extract mar file name generationMarkus Mohrhard
Change-Id: If928cae4c722354d5c3e415e7cb8426a3a4412f7
2017-05-19reuse the new extract mar code for the partial update generationMarkus Mohrhard
Change-Id: Ie8c92472631034935e73e55c934ce128c7b6ecd2
2017-05-19ignore the precomplete file at least for nowMarkus Mohrhard
Change-Id: I997bdc38f705d7536a99a168815ece93dcf0c0de