Packaging Information for KOffice.
----------------------------------

We recommend building several binary packages from the KOffice source.

Splitting KOffice into packages: 
 * gives users a better choice of which components they have
   installed;
 * allows users to install just the applications without unnecessary
   dependencies;
 * helps to reduce packaging conflicts for users with non-standard
   package selections.


Table Of Contents
-----------------

1. Database drivers (MySQL, PostgreSQL)
2. Development files
 2.1. KexiDB development files
 2.2. Chalk development files 
3. Scripting support
4. Microsoft Access Import (optional, recommended)
5. Quick command-line tests of Kexi installation



1. Database drivers
-------------------

Kexi provides database drivers for MySQL and PostgreSQL.  We suggest
putting each driver in a separate package, and that installation of
these packages be optional.  Each driver package may then depend on
the corresponding 'native' libraries: libmysqlclient for MySQL; and
and libpqxx for PostgreSQL (libpqxx in turn depends on libpq).

Thus, the MySQL driver package could contain:
 lib/trinity/kexidb_mysqldriver.so
 lib/trinity/kexidb_mysqldriver.la
 lib/trinity/keximigrate_mysql.so
 lib/trinity/keximigrate_mysql.la
 share/services/kexidb_mysqldriver.desktop
 share/services/keximigrate_mysql.desktop

The PostgreSQL driver package consists of the following files:
 lib/trinity/kexidb_pqxxsqldriver.so
 lib/trinity/kexidb_pqxxsqldriver.la
 lib/trinity/keximigrate_pqxx.so
 lib/trinity/keximigrate_pqxx.la
 share/services/kexidb_pqxxsqldriver.desktop
 share/services/keximigrate_pqxx.desktop

Note that you SHOULD NOT care about SQLite database driver or adding 
dependencies for SQLite, because SQLite support is built into Kexi 
using a fork of SQLite source code.


2. Development files
--------------------

2.1. KexiDB development files

Location: koffice/kexi/kexiutils, koffice/kexi/kexidb, koffice/kexi/migration

KexiDB, the database abstraction library used in Kexi, installs some
development files which are required for building external plugins,
such as the MS Access import plugin described below.

We recommend providing KexiDB development files in a separate package.
The files are:
  include/kexidb/*.h
  include/kexiutils/*.h
  lib/libkexidb.la
  lib/libkexidb.so
  lib/libkexidbparser.so
  lib/libkexidbparser.la

The installation can be tested by building the MS Access import plugin
as described in the Microsoft Access import plugin section below.

2.2. Chalk development files 

Location: koffice/chalk/core, koffice/chalk/sdk,
koffice/chalk/chalkcolor, koffice/chalk/ui

These directories contain header files that are installed and can be
used by plugin developers to extend Chalk with new tools, colorspaces,
paint-ops and more.  If your distribution packages development files
separately, it may be a good idea to make a package with these headers.


3. Scripting support
--------------------

Preliminary support for Ruby and Python scripting is available for
Chalk and Kexi.
It can be disabled by passing the '--disable-scripting' option to
'configure'.

The 'Kross' scripting library (koffice/lib/kross) provides access to
the Python and Ruby scripting languages by the dynamically loaded
plugins.

Build time dependencies:
  Python and Ruby development packages need to be installed in order
  to build KOffice with full scripting support.  In addition, the Ruby
  interpreter is also required at build time.

Run time dependencies:
  Kross detects which of these libraries is installed dynamically, at
  run-time.  Therefore, KOffice packages need not have any run-time
  dependencies on any scripting interpreter.

The scripting language plugins can be found in:
  koffice/lib/kross/python; and
  koffice/lib/kross/ruby.
They install as:
  lib/trinity/krosspython.{la,so}; and
  lib/trinity/krossruby.{la,so}

It is recommended to put each interpreter plugin into a separate
package, and the user decide if they would like support for each
language individually.

For example, the Python scripting package may contain:
  lib/trinity/krosspython.so
  lib/trinity/krosspython.la
  share/apps/kexi/scripts/exportxhtml/ExportXHTML.py
  share/apps/kexi/scripts/exportxhtml/ExportXHTML.rc
  share/apps/kexi/scripts/importxhtml/ImportXHTML.py
  share/apps/kexi/scripts/importxhtml/ImportXHTML.rc
  share/apps/kexi/scripts/projectdocumentor/ProjectDocumentor.py
  share/apps/kexi/scripts/projectdocumentor/ProjectDocumentor.rc
  share/apps/chalk/scripts/invert.py
  share/apps/chalk/scripts/reshapehisto.py

and the Ruby scripting package may contain:
  lib/trinity/krossruby.so
  lib/trinity/krossruby.la
  share/apps/chalk/scripts/ruby/invert.rb
  share/apps/chalk/scripts/ruby/changecs.rb
  share/apps/chalk/scripts/ruby/randompaint.rb


4. Microsoft Access Import (optional, recommended)
-------------------------------------

A plugin to allow the import of MS Access (.mdb) files is available
for packaging separately.  It is called KexiMDB.

This package is based on a stripped-down and modified version of
mdbtools: http://mdbtools.sf.net/
The package should be built after KOffice.  It requires GLib, and the
Kexi development files as described above.

The version of the plugin for use with KOffice 1.5 should be available
from:
ftp://ftp.kde.org/pub/kde/stable/apps/KDE3.x/database/keximdb-1.0.tar.gz

Alternatively, it can be found in the KDE Subversion repository.  It
can be built as follows:
  svn export svn://anonsvn.kde.org/home/kde/branches/work/keximdb/koffice-1.5 keximdb-1.0
  cd keximdb-1.0
  make -f Makefile.cvs
  ./configure --enable-debug=full
  make
  make install

Configure may need to be informed of the location of the KexiDB
headers using the --with-kexidb-includes=... and the
--with-kexidb-libraries=... options.


5. Quick command-line tests of Kexi installation
------------------------------------------------

If you don't want to click through Kexi interface but still want 
to make (almost) sure the application is properly packaged, please 
install it and type the following from the command line:

 kexi --create-opendb --drv sqlite3 --new form testdb

(ignore possible warning message)
This will:
- create a new empty database file "testdb",
- open it,
- create a new empty form
