118 lines
3.9 KiB
Text
118 lines
3.9 KiB
Text
LibreOffice On-Line WebSocket server
|
|
====================================
|
|
|
|
Dependencies
|
|
------------
|
|
|
|
LibreOffice On-Line WebSocket server has the following dependencies:
|
|
|
|
* libpng
|
|
* Poco library: http://pocoproject.org/index.html.
|
|
* libcap-progs
|
|
|
|
Poco can be built with ./configure --prefix=/opt/poco && make install, but
|
|
distro packages exist too.
|
|
|
|
On openSUSE, you can use:
|
|
|
|
zypper ar http://download.opensuse.org/repositories/devel:/libraries:/c_c++/openSUSE_13.2/devel:libraries:c_c++.repo
|
|
zypper in poco-devel libcap-progs
|
|
|
|
Building
|
|
--------
|
|
|
|
loolwsd uses autoconf/automake, so build using the usual:
|
|
|
|
autoreconf
|
|
automake --add-missing
|
|
./configure --enable-silent-rules --with-lokit-path=<MASTER>/include
|
|
make
|
|
|
|
where <MASTER> is the location of the LibreOffice source tree.
|
|
|
|
Note that the loolwsd program needs the CAP_SYS_CHROOT capability,
|
|
thus you will be asked the root password when running make as it
|
|
invokes sudo to run /sbin/setcap.
|
|
|
|
If you have self-built Poco, add the following to ./configure:
|
|
|
|
--with-poco-includes=<POCOINST>/include --with-poco-libs=<POCOINST>/lib
|
|
|
|
where <POCOINST> means the Poco installation location.
|
|
|
|
If you have the Poco debugging libraries (eg. you have a self-built
|
|
Poco), you can add --enable-debug to the configure options for
|
|
additional debugging.
|
|
|
|
For Windows, a proper VS2013 project is needed.
|
|
|
|
There is still unconditional debugging output etc. This is a work in
|
|
progress.
|
|
|
|
Running
|
|
-------
|
|
|
|
Now you need to set up a minimal chroot system, and directory for the jails:
|
|
|
|
./setup-sys-chroot <SYSTEMPLATE> <MASTER>/instdir
|
|
mkdir <ROOTFORJAILS>
|
|
|
|
To run loolwsd the way it is supposed to eventually be run "for real", you can
|
|
now do:
|
|
|
|
./loolwsd --systemplate=<SYSTEMPLATE> --lotemplate=<MASTER>/instdir --childroot=<ROOTFORJAILS>
|
|
|
|
and connect loleaflet to that (see loleaflet/README for more info).
|
|
|
|
Again, <MASTER> is location of the LibreOffice source tree with a built
|
|
LibreOffice. This is work in progress, and consequently needs the latest
|
|
LibreOffice master.
|
|
|
|
The <SYSTEMPLATE> is a directory tree set up using the
|
|
setup-sys-chroot script here. It is intended to contain the runtime
|
|
environment needed by the LibreOffice dynamic libraries used through
|
|
LibreOfficeKit. Improvements to that script are very likely needed on
|
|
various distros.
|
|
|
|
The <ROOTFORJAILS> directory above is a presumably initially empty
|
|
directory under which loolwsd will create chroot jails for editing
|
|
each specific document.
|
|
|
|
As loolwsd uses hardlinks to "copy" the contents of both <SYSTEMPLATE>
|
|
and the <MASTER>/instdir directories into each chroot jail,
|
|
<SYSTEMPLATE> and <ROOTFORJAILS> need to be on the same file system as
|
|
<MASTER>/instdir.
|
|
|
|
If you plan to hack on loolwsd, you probably want to familiarize
|
|
yourself with loolwsd's --test and --numprespawns switches, and the
|
|
'connect' test program.
|
|
|
|
For interactive testing, you can use the loolwsd --test switch, or you
|
|
can use the 'connect' program. Both accept "commands" from the
|
|
protocol on standard input. You can either used them tuly
|
|
interactively, or edit input lines into a file, or use shell
|
|
scripting, etc. For instance:
|
|
|
|
(echo load /some/where/foo.odt; echo tile width=500 height=500 tileposx=0 tileposy=0 tilewidth=10000 tileheight=10000; sleep 10) |
|
|
./loolwsd --test --systemplate=/home/tml/lo/master/lool-sys-template --lotemplate=/home/tml/lo/master/instdir --childroot=/home/tml/lo/master/lool-child-root
|
|
|
|
Debugging
|
|
---------
|
|
|
|
When debugging, you want to add --numprespawns=1 to the loolwsd parameters to
|
|
limit the amount of concurrently running processes.
|
|
|
|
When the crash happens too early, you also want to
|
|
|
|
export SLEEPFORDEBUGGER=<number of seconds>
|
|
|
|
so that you have time to attach to the process.
|
|
|
|
Then run loolwsd, and attach your debugger to the process you are interested
|
|
in.
|
|
|
|
Protocol description
|
|
--------------------
|
|
|
|
See protocol.txt for a description of the protocol to be used over the
|
|
websocket.
|