Resurrecting --enable-online-update-mar

Stephan Bergmann stephan.bergmann at allotropia.de
Fri Dec 15 12:53:07 UTC 2023


Hi all,

I've recently started to look into resurrecting the off-by-default 
Mozilla MAR-based updating functionality, to make it work at least on 
Windows (and somewhat bravely targeting LO 24.2 with that).  (It used to 
be behind an --enable-online-update=mar configure option, but has now 
moved to a dedicated --enable-online-update-mar configure option that 
is, at least technically, orthogonal to the traditional 
--enable-online-update option.)  I've also given the Mozilla community a 
heads-up about my activities here, and 
<https://discourse.mozilla.org/t/libreoffice-re-using-mozillas-mar-based-updating-functionality/125314> 
"LibreOffice re-using Mozilla’s MAR-based updating functionality" might 
serve as a good overview also for people here.

A Windows (or Linux, mostly for testing purposes) build that configures 
--enable-online-update-mar will now generate a build that includes the 
relevant code and UI, but, lacking further 
--with-online-update-mar-...=... configure options, will not provide 
that feature in a working form.  Recent Windows nightly builds generated 
from distro-configs/LibreOfficeWin64.conf should be in that state, with 
the UI to "Enable automatic upate" at "Tools - Options... - LibreOffice 
- Online Update".  (For non-GTK VCL backends, there's still a bug that 
the "Automatic Update" section on that options page is mixed into the 
traditional --enable-online-update options at the top of the page, 
instead of down at the bottom; fixing of 
cui/uiconfig/ui/optonlineupdatepage.ui welcome...)

To have a working feature, one would at least need to provide additional 
--enable-online-update-mar-certificateder=... and 
--enable-online-update-mar-channel=... configure options.  (In the past, 
such additional configuration data had to be provided in an ini file 
referenced by a --with-update-config=... configure option.  I have 
dropped the need for that additional ini file now, turning its entries 
into individual --enable-online-update-mar-...=... configure options.) 
The certificateder option's value must be the pathname of an existing 
certificate in DER format (that will be compiled into the code) (what 
the certificte-der=... line used to specify in the --with-update-config 
ini file).  The channel option's value must match the channel name under 
which updates are available on the server (see below).

@Cloph:  We'll need to find a way to specify a certificate there for TDF 
builds that enable that feature.

The server that is contacted by LO is still hardcoded (in 
officecfg/registry/schema/org/openoffice/Office/Update.xcs) to 
<http://vm195.documentfoundation.org/> (but can be overridden with a 
LIBO_UPDATER_URL env var for testing).  On that server, LO expects to 
find a /update/check/1/LibreOffice/$SHA/$PLATFORM/$CHANNEL file 
containing the relevant update information (where $SHA is the LO 
installation's buildid, i.e., git SHA, $PLATFORM is e.g. Windows_X86_64, 
and $CHANNEL is the above --albne-online-update-mar-channel value). 
There apparently still are old Makefile.in targets (create-mar et al) to 
create such files and the actual mar files they reference, but those 
also appear to have rotten, and I still need to look into them deeper.

@Cloph:  We'll need to set up a server (and update its URL in 
Update.xcs) and set up a process to generate mar files.  It would be 
great if you find time to help me with that.


More information about the LibreOffice mailing list