summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HACKING74
-rw-r--r--Makefile-gen.am23
-rw-r--r--README856
-rw-r--r--configure-pre.in14
4 files changed, 109 insertions, 858 deletions
diff --git a/HACKING b/HACKING
index af25ee7e..c7b087a6 100644
--- a/HACKING
+++ b/HACKING
@@ -1,3 +1,77 @@
+Compiling from Source
+---------------------
+
+To compile the code the source or an installation of the Synthesis
+SyncML engine is needed. A compatible snapshot of it is included in
+SyncEvolution source packages and will be used automatically.
+The section _`Checking out the source` explains how to work
+with sources obtained via the git repositories.
+
+Also needed are the Evolution and Boost (>= 1.35) development
+files. For HTTP, either Curl or libsoup can be used.
+
+On Debian based systems the required packages can be installed with
+ apt-get install evolution-data-server-dev \
+ libecal1.2-dev libebook1.2-dev \
+ libsoup2.4-dev \
+ libboost-dev
+
+libboost-dev >= 1.34, available as libboost1.35-dev backport for Debian Etch.
+
+Necessary on some distros due to bad dependencies (not needed by SyncEvolution itself):
+ apt-get install libdb3-dev
+
+Optional (enables reading proxy settings from GNOME preferences):
+ apt-get install libsoup-gnome2.4-dev
+
+Optional (enables direct sync with phones):
+ apt-get install libopenobex-dev libbluetooth-dev
+
+Optional (only used for SHA-256 when glib is not already a dependency):
+ apt-get install libnss3-dev
+
+For compiling libsynthesis:
+ apt-get install libpcre3-dev libsqlite3-dev libexpat-dev libz-dev
+
+This was copied from the libsynthesis README.
+
+The test framework also requires CPPUnit:
+ apt-get install libcppunit-dev
+
+For the GUI and its D-Bus based service backend:
+ apt-get install libdbus-glib-1-dev \
+ xsltproc \
+ libglib2.0-dev \
+ libgtk2.0-dev libglade2-dev \
+ libgnome-keyring-dev \
+ libgconf2-dev libgnomevfs2-dev
+
+Optional packages for GUI:
+ apt-get install libunique-dev
+
+libunique = ensure that GTK GUI only runs once per user
+
+Optional packages for GNOME Bluetooth Panel plugin:
+ apt-get install libgnome-bluetooth-dev
+
+The plugin adds a button to invoke sync-UI after a device
+was paired which supports SyncML.
+
+The build system is the normal autotools system. See INSTALL for
+general instructions how to use that and "./configure --help" for
+SyncEvolution specific options.
+
+Note that compiling without the Evolution development files is
+possible. But because this is usually not what people want,
+the configure script needs explicit --disable-ecal --disable-ebook
+parameters, otherwise it will refuse to compile without Evolution
+support.
+
+When compiling from a git checkout, remember to run "./autogen.sh".
+It depends on:
+ apt-get install libtool intltool automake
+
+
Checking out the Source
-----------------------
diff --git a/Makefile-gen.am b/Makefile-gen.am
index 96e35e43..bc3326ba 100644
--- a/Makefile-gen.am
+++ b/Makefile-gen.am
@@ -2,11 +2,15 @@
ACLOCAL_AMFLAGS = -I m4 -I m4-repo
+man_MANS =
dist_doc_DATA =
SUBDIRS = src
if COND_CORE
SUBDIRS += po test
dist_doc_DATA += README NEWS COPYING $(TEST_README_FILES)
+if COND_MAN_PAGES
+man_MANS += syncevolution.1
+endif
endif
DIST_SUBDIRS = src po test
@@ -14,6 +18,7 @@ EXTRA_DIST = \
HACKING \
LICENSE.txt \
LICENSE.LGPL-21 \
+ README.rst \
description \
configure-pre.in \
configure-post.in \
@@ -43,7 +48,7 @@ distbin : README NEWS COPYING $(TEST_README_FILES) INSTALL-tar-gz all
for i in `find $(distdir) -type d | sort -r`; do rmdir $$i 2>/dev/null || true; done
mkdir -p $(distdir)/usr/share/doc/syncevolution
cp $(srcdir)/INSTALL-tar-gz $(distdir)/INSTALL
- cp $(srcdir)/README $(srcdir)/NEWS $(srcdir)/COPYING $(TEST_README_FILES) $(distdir)/usr/share/doc/syncevolution
+ cp README $(srcdir)/NEWS $(srcdir)/COPYING $(TEST_README_FILES) $(distdir)/usr/share/doc/syncevolution
tar zcf $(distdir)-$(BINSUFFIX).tar.gz $(distdir)
rm -rf $(distdir)
else
@@ -56,7 +61,7 @@ distbin : README NEWS COPYING all
echo removing developer files and empty directories
rm -rf $(call DEV_FILE_PATTERN,$(distdir),/)
for i in `find $(distdir) -type d | sort -r`; do rmdir $$i 2>/dev/null || true; done
- cp $(srcdir)/README $(srcdir)/NEWS $(srcdir)/COPYING $(TEST_README_FILES) $(distdir)
+ cp README $(srcdir)/NEWS $(srcdir)/COPYING $(TEST_README_FILES) $(distdir)
tar zcf $(distdir)-$(BINSUFFIX).tar.gz $(distdir)
rm -rf $(distdir)
endif
@@ -212,3 +217,17 @@ installcheck-local:
fi \
done
endif
+
+# patch README.rst properties on-the-fly with sed expressions
+PATCH_README = -e "s/^:Version: .*/:Version: $(VERSION)/" -e "s/:Date: .*/:Date: `date +%Y-%m-%d`/"
+
+# produce man pages
+syncevolution.1: README.rst
+ sed $(PATCH_README) $< | $(RST2MAN) --exit-status=3 - >$@
+CLEANFILES += syncevolution.1
+
+# README is the traditional name in the distribution,
+# continue using it instead of README.rst.
+README: README.rst
+ sed $(PATCH_README) $< >$@
+CLEANFILES += README
diff --git a/README b/README
deleted file mode 100644
index 7d5b8e39..00000000
--- a/README
+++ /dev/null
@@ -1,856 +0,0 @@
-Introduction
-------------
-
-SyncEvolution synchronizes personal information management (PIM) data
-like contacts, calendars, tasks and memos via the SyncML information
-synchronization standard. It supports all of these for GNOME's
-Evolution and contacts for the system address book of the Nokia
-Internet Tablets, Mac OS X and (at one point, but not anymore) the
-iPhone. The command-line tool 'syncevolution' (compiled separately for
-each of these platforms) executes the synchronization. On platforms
-with GTK, the 'sync-ui' provides a graphical user interface. The
-project 'Genesis' (available separately) implements a graphical
-frontend that sits in the system tray.
-
-The items are exchanged in the vCard 2.1/3.0, iCalender 2.0/vCalendar 1.0
-and textual format via the open source Synthesis SyncML engine,
-which makes SyncEvolution compatible with the majority of SyncML
-servers. Full, one-way and incremental synchronization of items are
-supported.
-
-Normally, SyncEvolution does not synchronize with another SyncML
-capable device or another computer directly. A SyncML server that that
-device and SyncEvolution can talk to is needed. There are several
-options for that:
-- using a web service like ScheduleWorld or myFUNAMBOL which store
- the data to be synchronized on a server and provide access to it
- via SyncML
-- installing a SyncML server like the free one from Funambol on
- one's own server
-- installing a SyncML server on the desktop
-
-Since 1.0, SyncEvolution is also capable of synchronizing with another
-device via Bluetooth directly. There is also a SyncEvolution HTTP
-server which works for single-user scenarios. This is both still a bit
-experimental and not explained further here.
-
-The recommended solution is ScheduleWorld because it is easier than
-setting up a server and provides better support for vCard and
-iCalendar data than the stock Funambol server installation. Setting up
-a server on the desktop has the additional problem that not all mobile
-devices can communicate with the desktop via HTTP.
-
-All SyncML synchronization modes are supported by SyncEvolution:
-- exchanging just the changes between client and server ("two-way")
-- sending just the changes in one direction ("one-way-from-client/server")
-- replacing all items with the ones stored in the peer
- ("refresh-from-client/server")
-- a full synchronization where all items are sent to the server and
- the server then decides which items need to be deleted, added or
- updated on the client ("slow")
-
-The remainder of this document assumes that either Funambol's
-myFUNAMBOL service or ScheduleWorld are used: because ScheduleWorld is
-based on the Funambol server, configuration and usage are often
-similar.
-
-With a server that fully supports SyncML and vCard/iCalender
-the following works:
-- copy a complete database to the server and restore it
- from the server later
-- delete or modify an item locally, then make the same change
- on the server
-- delete, modify or add items on the server (by synchronizing with
- another client or using a web interface), then apply the same
- change locally
-- conflict resolution (where two clients modify the same item,
- then sync with the server) is handled by the server, but
- SyncEvolution has support which ensures that no data is lost
- by creating duplicates (see "Conflict Resolution" below)
-
-For conflict resolution and synchronization between clients which
-support different attributes of items the server needs an
-understanding of the format of items. The Funambol server supports
-that for contacts, but not yet for the calendar events and tasks that
-SyncEvolution sends; see "Configuration with Funambol" below for more
-information. ScheduleWorld also works with SyncEvolution for
-calendars plus tasks.
-
-
-Installation
-------------
-
-To install SyncEvolution, just unpack an archive with a precompiled
-binary for your platform in a directory of your choice or install one
-of the packages. Then create a configuration as described below under
-"Configuration". No special environment variables are needed, although
-one might want to add the directory which contains the "syncevolution"
-binary to the shell's PATH variable.
-
-When a binary packages is not available for the target system
-and/or is not up-to-date, compiling from source can also be used
-to produce a binary. See below in "Compiling from Source" for details.
-
-Although all of the features are covered by unit testing and
-have been verified to work, it is highly recommended that you
-make a backup of your
- $HOME/.evolution/addressbook
- $HOME/.evolution/calendar
- $HOME/.evolution/tasks
- $HOME/.evolution/memos
-directories before running SyncEvolution for the first time with
-Evolution. In older Evolution versions the same data is found in
-$HOME/evolution.
-
-Configuration templates for SyncML peers are searched in the following
-order:
-- $SYNCEVOLUTION_TEMPLATE_DIR
-- "/usr/share/syncevolution/templates" (prefix may be different,
- depending on compilation)
-- built-in templates
-
-The properties defined in a template override the default properties,
-so usually only those properties which specifically need to be set for
-a certain peer should be listed in its template config. Don't copy
-these files, they are not complete! Use the command line or a GUI
-instead, which reads the files and produces complete configurations.
-
-
-Usage
------
-
-Currently SyncEvolution comes as a simple command line tool which is
-configured via files. The general synopsis of the command line
-parameters is:
-
- syncevolution [<options>] [<config>] [<source> ...]
-
-The <config> and the <source> strings are used to find the
-configuration files which determine how synchronization is going to
-proceed. Each source corresponds to one local address book, calendar,
-task list or set of memos and the corresponding database on the
-peer. Depending on which parameters are given, different operations
-are executed.
-
-Starting with SyncEvolution 1.0, <config> strings can have different
-meanings. Typically, a simple string like "scheduleworld" refers to
-the configuration for that peer, as it did in previous releases. A
-peer is either a SyncML server (the traditional usage of
-SyncEvolution) or a client (the new feature in 1.0).
-
-Each peer configuration exists inside a specific context, typically
-the "@default" context. All peers in the same context share some parts
-of their configuration, for example, which local databases are to be
-synchronized. In that sense, a configuration context can be seen as a
-set of local databases plus the peer configurations that are
-synchronized against those databases.
-
-When different peers are meant to synchronize different local
-databases, then different contexts have to be used when setting up the
-peers by appending a context name after the "at" sign, as in
-"scheduleworld2@other-context". Later on, if "scheduleworld2" is
-unique, the "@other-context" suffix becomes optional.
-
-Sometimes it is also useful to change configuration options of a
-context, without modifying a specific peer. This can be done by using
-"@default" (or some other context name) without anything before the
-"at" sign. The empty string "" is the same as "@default".
-
- syncevolution
-
-If no arguments are given, then SyncEvolution will list all available
-data sources regardless whether there is a configuration file for them
-or not. The output includes the identifiers which can then be used to
-select those sources in a configuration file. For each source one can
-set a different synchronization mode in its configuration file.
-
- syncevolution <config>
-
-Without the optional list of sources all sources which are enabled in
-their configuration file are synchronized.
-
- syncevolution <config> <source> ...
-
-Otherwise only the ones mentioned on the command line are active. It
-is possible to configure sources without activating their
-synchronization: if the synchronization mode of a source is set to
-"none", the source will be ignored. Explicitly listing such a source
-will synchronize it in "two-way" mode once.
-
-Progress and error messages are written into a log file that is
-preserved for each synchronization run. Details about that is found in
-the "Automatic Backups and Logging" section below. All errors and
-warnings are printed directly to the console in addition to writing
-them into the log file. Before quitting SyncEvolution will print a
-summary of how the local data was modified. This is done with the
-"synccompare" utility script described in the "Exchanging Data"
-section.
-
-When the "logdir" option is enabled (since v0.9 done by default for
-new configurations), then the same comparison is also done before the
-synchronization starts.
-
-In case of a severe error the synchronization run is aborted
-prematurely and SyncEvolution will return a non-zero value. Recovery
-from failed synchronization is done by forcing a full synchronization
-during the next run, i.e. by sending all items and letting the SyncML
-server compare against the ones it already knows. This is avoided
-whenever possible because matching items during a slow synchronization
-can lead to duplicate entries.
-
-After a successful synchronization the server's configuration file is
-updated so that the next run can be done incrementally. If the
-configuration file has to be recreated e.g. because it was lost, the
-next run recovers from that by doing a full synchronization. The risk
-associated with this is that the server might not recognize items that
-it already has stored previously which then would lead to duplication
-of items.
-
- syncevolution --configure <options for configuration> <config> [<source> ...]
-
-Options in the configuration can be modified via the command
-line. Source properties are changed for all sources unless sources are
-listed explicitly. Some source properties have to be different for
-each source, in which case syncevolution must be called multiple times
-with one source listed in each invocation.
-
- syncevolution --remove <config>
-
-Deletes the configuration. If the <config> refers to a specific
-peer, only that peer's configuration is removed. If it refers to
-a context, that context and all peers inside it are removed.
-
-Note that there is no confirmation question. Neither local data
-referenced by the configuration nor the content of log dirs are
-deleted.
-
- syncevolution --run <options for run> <config> [<source> ...]
-
-Options can also be overridden for just the current run, without
-changing the configuration. In order to prevent accidentally running a
-sync session when a configuration change was intended, either
---configure or --run must be given explicitly if options are specified
-on the command line.
-
- syncevolution --status <config> [<source> ...]
-
-Prints what changes were made locally since the last synchronization.
-Depends on access to database dumps from the last run, so using the
-"logdir" option is recommended.
-
- syncevolution --print-servers|--print-configs|--print-peers
- syncevolution --print-config [--quiet] <config> [main|<source> ...]
- syncevolution --print-sessions [--quiet] <config>
-
-These commands print information about existing configurations. When
-printing a configuration a short version without comments can be
-selected with --quiet. When sources are listed, only their
-configuration is shown. "Main" instead or in combination with sources
-lists only the main peer configuration.
-
-With --print-session information about previous synchronization
-sessions for the selected peer or context are printed. This depends on
-the "logdir" option. The information includes the log directory name
-(useful for --restore) and the synchronization report. In combination
-with --quiet, only the paths are listed.
-
- syncevolution --restore <session directory> --before|--after [--dry-run] <config> <source> ...
-
-This restores local data from the backups made before or after a
-synchronization session. The --print-sessions command can be used to
-find these backups. The source(s) have to be listed explicitly. There
-is intentionally no default, because as with --remove there is no
-confirmation question. With --dry-run, the restore is only simulated.
-
-The session directory has to be specified explicitly with its path
-name (absolute or relative to current directory). It does not have to
-be one of the currently active log directories, as long as it contains
-the right database dumps for the selected sources.
-
-A restore tries to minimize the number of item changes (see section
-"Item Changes and Data Changes"). This means that items that are
-identical before and after the change will not be transmitted anew to
-the server during the next synchronization. If the server somehow
-needs to get a clean copy of all items on the client then, use "--sync
-refresh-from-client" in the next run.
-
-
-Here is a full description of all <options> that can be put in front
-of the server name. Whenever an option accepts multiple values, a
-question mark can be used to get the corresponding help text and/or
-a list of valid values.
-
---sync|-s <mode>
---sync|-s ?
- Temporarily synchronize the active sources in that mode. Useful
- for a "refresh-from-server" or "refresh-from-client" sync which
- clears all data at one end and copies all items from the other.
-
---print-servers|--print-configs|--print-peers
- Prints the names of all configured peers to stdout. There is no
- difference between these options, the are just aliases.
-
---print-config|-p
- Prints the complete configuration for the selected <config>
- to stdout, including up-to-date comments for all properties. The
- format is the normal .ini format with source configurations in
- different sections introduced with [<source>] lines. Can be combined
- with --sync-property and --source-property to modify the configuration
- on-the-fly. When one or more sources are listed after the <config>
- name on the command line, then only the configs of those sources are
- printed. "main" selects the main configuration instead of source
- configurations. Using --quiet suppresses the comments for each property.
- When setting a --template, then the reference configuration for
- that peer is printed instead of an existing configuration.
-
---configure|-c
- Modify the configuration files for the selected peer. If no such
- configuration exists, then a new one is created using one of the
- template configurations (see --template option). When creating
- a new configuration only the active sources will be set to active
- in the new configuration, i.e. "syncevolution -c scheduleworld addressbook"
- followed by "syncevolution scheduleworld" will only synchronize the
- address book. The other sources are created in a disabled state.
- When modifying an existing configuration and sources are specified,
- then the source properties of only those sources are modified.
-
---run|-r
- To prevent accidental sync runs when a configuration change was
- intended, but the "--configure" option was not used, "--run" must be
- specified explicitly when sync or source properties are selected
- on the command line and they are meant to be used during a sync
- session triggered by the invocation.
-
---migrate
- In older SyncEvolution releases a different layout of configuration files
- was used. Using --migrate will automatically migrate to the new
- layout and rename the <config> into <config>.old to prevent accidental use
- of the old configuration. WARNING: old SyncEvolution releases cannot
- use the new configuration!
-
- The switch can also be used to migrate a configuration in the current
- configuration directory: this preserves all property values, discards
- obsolete properties and sets all comments exactly as if the configuration
- had been created from scratch. WARNING: custom comments in the
- configuration are not preserved.
-
- --migrate implies --configure and can be combined with modifying
- properties.
-
---sync-property|-y <property>=<value>
---sync-property|-y ?
---sync-property|-y <property>=?
- Overrides a source-independent configuration property for the
- current synchronization run or permanently when --configure is used
- to update the configuration. Can be used multiple times. Specifying
- an unused property will trigger an error message.
-
- When using the configuration layout introduced with 1.0, some of the
- sync properties are shared between peers, for example the directory
- where sessions are logged. Permanently changing such a shared
- property for one peer will automatically update the property for all
- other peers in the same context because the property is stored in a
- shared config file. When printing a config in verbose mode, a summary
- comment shows which properties are shared in which way.
-
---source-property|-z <property>=<value>
---source-property|-z ?
---source-property|-z <property>=?
- Same as --sync-property, but applies to the configuration of all active
- sources. "--sync <mode>" is a shortcut for "--source-property sync=<mode>".
-
- When combined with "--configure", the configuration of all sources is
- modified. Properties cannot be specified differently for different
- sources, so if you want to change a source property of just one specific
- sync source, then use "--configure --source-property ... <server> <source>".
-
- As with sync properties, some properties are shared between peers,
- in particular the selection of which local data to synchronize.
-
---template|-l <peer name>|default|?<device>
- Can be used to select from one of the built-in default configurations
- for known SyncML peers. Defaults to the <config> name, so --template
- only has to be specified when creating multiple different configurations
- for the same peer, or when using a template that is named differently
- than the peer. "default" is an alias for "scheduleworld" and can be
- used as the starting point for servers which do not have a built-in
- template.
-
- Each template contains a pseudo-random device ID. Therefore setting the
- "deviceId" sync property is only necessary when manually recreating a
- configuration or when a more descriptive name is desired.
-
- The available templates for different known SyncML servers are listed when
- using a single question mark instead of template name. When using the
- ?<device> format, a fuzzy search for a template that might be
- suitable for talking to such a device is done. The matching works best
- when using <device> = <Manufacturer>_<Model>. If you don't know the
- manufacturer, you can just keep it as empty. The output in this mode
- gives the template name followed by a short description and a rating how well
- the template matches the device (higher is better).
-
---status|-t
- The changes made to local data since the last synchronization are
- shown without starting a new one. This can be used to see in advance
- whether the local data needs to be synchronized with the server.
-
---quiet|-q
- Suppresses most of the normal output during a synchronization. The
- log file still contains all the information.
-
---keyring|-k
- Save or retrieve passwords from the GNOME keyring when modifying the
- configuration or running a synchronization. Note that using this option
- applies to *all* passwords in a configuration, so setting a single
- password as follows moves the other passwords into the keyring, if
- they were not stored there already:
- --keyring --configure --sync-property proxyPassword=foo
-
- When passwords were stored in the keyring, their value is set to "-"
- in the configuration. This means that when running a synchronization
- without the --keyring argument, the password has to be entered
- interactively. The --print-config output always shows "-" instead of
- retrieving the password from the keyring.
-
---help|-h
- Prints usage information.
-
---version
- Prints the SyncEvolution version.
-
-Use Cases
----------
-
-Migrate a configuration from the <= 0.7 format to the current one
-and/or updates the configuration so that it looks like configurations
-created anew with the current syncevolution:
- $ syncevolution --migrate scheduleworld
-
-Deactivate all sources:
- $ syncevolution --configure \
- --source-property sync=none \
- scheduleworld
-
-Activate address book synchronization again, using the --sync shortcut:
- $ syncevolution --configure \
- --sync two-way \
- scheduleworld addressbook
-
-Change the password for a configuration:
- $ syncevolution --configure \
- --sync-property password=foo \
- scheduleworld
-
-Set up another configuration for scheduleworld under a different name:
- $ syncevolution --configure \
- --sync-property username=joe \
- --sync-property password=foo \
- --template scheduleworld \
- scheduleworld_joe
-
-
-Configuration
--------------
-
-The configuration file of a certain <peer>@<context> is stored in
- $XDG_CONFIG_HOME/syncevolution/<context>/peers/<peer>/config.ini
-with " $HOME/.config" as fallback if XDG_CONFIG_HOME is not
-set. The per-peer data source properties are configured in
- $XDG_CONFIG_HOME/syncevolution/<context>/peers/<peer>/sources/<source>/config.ini
-
-The shared properties are in:
- $XDG_CONFIG_HOME/syncevolution/config.ini
- $XDG_CONFIG_HOME/syncevolution/<context>/config.ini
- $XDG_CONFIG_HOME/syncevolution/<context>/sources/
-
-There are also some hidden .synthesis, .internal.ini and
-.server.ini directories resp. files. These are used internally
-and are not meant to be edited manually.
-
-The configuration of older SyncEvolution releases in the
-following directory is also still supported for reading and
-updating, but cannot be created anymore from scratch:
- $HOME/.sync4j/evolution/<server>/spds/syncml/config.txt
- $XDG_CONFIG_HOME/syncevolution/<server>/
-
-The format is a simple list of
- <property> = <value>
-pairs with one pair per line. Leading spaces and space around the
-equals character and at the end of the line are skipped. In other words,
-values can neither start or end with spaces nor contain line breaks. Do not
-put quotation marks around <value>, they would be treated as part of the
-value itself. Lines starting with a hash (#) after optional leading
-spaces are treated as comments and skipped.
-
-All supported properties are listed in the template configurations.
-Those which have reasonable defaults do not have to be set and are
-commented out in the template configurations. Normally at least the
-following configuration options need to be adapted:
- <peer>/config.ini
- syncURL
- username
- password
- <peer>/sources/*/config.ini
- uri
- type
-
-See "syncevolution --sync-property ?" for options in the peer
-configuration and "syncevolution --source-property ?"
-for options in each data source configuration.
-
-Each data source corresponds to one database at the SyncML peer.
-The local data source is determined by the type of data given in
-"type" and uniquely identified with the "evolutionsource" property.
-To get a list of available data sources, run SyncEvolution with no
-arguments. "evolutionsource" can be set to either the name or URL
-of a data source that SyncEvolution prints then.
-
-The "uri" property is used to identify with which database on the
-SyncML server the local data is to be synchronized. Each server
-usually documents what needs to be configured here. The template
-configurations already have this set correctly.
-
-One can synchronize with multiple server databases in one run, but the
-same server database can only be accessed once. To synchronize the
-same server database with multiple local data sources, one
-has to setup two independent configurations with different "deviceId"
-settings and synchronize them separately. To create such a setup simply
-copy the whole configuration context, e.g.:
- cp -r ~/.config/syncevolution/localhost ~/.config/syncevolution/localhost_copy
-and then edit ~/.config/syncevolution/localhost_copy/config.ini
-to update the "deviceId" and the sources/*/config.ini files to update
-the "evolutionsource".
-
-If an Evolution data source requires authentication, the
-"evolutionuser" and "evolutionpassword" are used as credentials.
-In this case the directory that contains the source's config.ini should
-only be accessible by the user. Usually these fields can be left
-empty. Specifying a single hyphen ("-") as value for a password
-instructs SyncEvolution to look for the password in an encrypted
-keyring (see --keyring) or to ask for the password at runtime. The
-value "${<name of environment variable>}" takes the password from
-the named environment variable. Entering the password manually
-is the most secure method.
-
-***
-*** Warning: setting evolutionuser/password in cases where it is not
-*** needed as with local calendars and addressbooks can cause
-*** the Evolution backend to hang.
-***
-
-SSL encryption of the HTTP connection is supported if the underlying
-platform supports it. In order to enable it, use a syncURL with https
-instead of http prefix. Not all servers support this, though. In the
-default configuration, servers must present a trusted certificate
-where the host name of the certificate matches the host name of the
-URL. Configuration settings can be used to relax this checking, but
-this makes the connection less secure and is not recommended.
-
-If you get errors about a missing certificate file under
-/etc/ssl/certs, then check whether the system packages which provide
-that file are installed. On Debian/Ubuntu the package is called
-"ca-certificates". Alternatively it is possible to specify a different
-location of a custom certificate file in the configuration.
-
-
-Automatic Backups and Logging
------------------------------
-
-To support recovery from a synchronization which damaged the
-local data or modified it in an unexpected way, SyncEvolution
-can create the following files during a synchronization:
-- a dump of the data in a format which can be imported
- back into Evolution, e.g. .vcf for address books
-- a full log file with debug information
-- a dump of the data after the synchronization for
- automatic comparison of the before/after state with
- "synccompare"
-
-If the server configuration option "logdir" is set, then
-a new directory will be created for each synchronization
-in that directory, using the format
- <peer>-<yyyy>-<mm>-<dd>-<hh>-<mm>[-<seq>]
-with the various fields filled in with the time when the
-synchronization started. The sequence suffix will only be
-used when necessary to make the name unique. By default,
-SyncEvolution will never delete any data in that log
-directory unless explicitly asked to keep only a limited
-number of previous log directories.
-
-This is done by setting the "maxlogdirs" limit to something
-different than the empty string and 0. If a limit is set,
-then SyncEvolution will only keep that many log directories
-and start removing the oldest ones when it reaches the limit.
-This cleanup is only done after a successful synchronization
-and is limited to directories that match the pattern for
-SyncEvolution log directory names, so it is safe to put other
-files or directories into the configured log directory.
-
-To avoid writing any additional log file or database dumps during
-a synchronization the "logdir" can be set to "none". To reduce
-the verbosity of the log, set "loglevel". If not set or 0, then
-the verbosity is set to 3 = DEBUG when writing to a log file and
-2 = INFO when writing to the console directly.
-
-
-Configuration with ScheduleWorld
---------------------------------
-
-It is recommended to sync against the new vCard 3.0 URI (card3) and
-iCalendar 2.0 URIs (cal2, task2), using the "text/vcard", "text/calendar"
-and "text/x-todo" type setting respectively. These are the native formats of
-Evolution and a lot of effort went into ensuring that they store as
-much Evolution data as possible. The "note" URI and "text/x-journal" type
-can be used to synchronize memos.
-
-SyncEvolution is primarily tested against ScheduleWorld. The
-"scheduleworld" configuration template is ready to be used with these
-URIs, one only has to fill in the real username and password.
-
-
-Configuration with Funambol
----------------------------
-
-A default Funambol installation already contains databases which
-SyncEvolution can synchronize with Evolution address books and
-calendars. They are adressed in a source config with
- uri = card
-for contacts and
- uri = cal
-for calendars. Tasks (aka todos) are supported but not shown on
-the myFUNAMBOL web site.
-
-At some point the Funambol server started supporting iCalendar 2.0 for
-calendars. This is the more capable (and recommended!) format, but the
-server does not suggest it as "preferred". Therefore the client's
-configuration must use the exclamation qualifier to pick the
-2.0 format (part of the current template):
- type = calendar:text/calendar!
-
-
-Exchanging Data
----------------
-
-SyncEvolution transmits address book entries as vCard 2.1 or 3.0
-depending on the type chosen in the configuration. Evolution uses
-3.0 internally, so SyncEvolution converts between the two formats
-as needed. Calendar items and tasks can be sent and received
-in iCalendar 2.0 as well as vCalendar 1.0, but vCalendar 1.0 should
-be avoided if possible because it cannot represent all data that
-Evolution stores.
-
-How the server stores the items depends on its implementation and
-configuration. In the default Funambol server installation, contacts
-and calendar items are converted into an internal format, but at
-least for contacts it preserves most of the properties used by
-Evolution whereas iCalendar 2.0 items are not preserved properly
-in Funambol 6.0. ScheduleWorld uses the same format as Evolution for
-calendars and tasks and thus requires no conversion.
-
-To check which data is preserved, one can use this procedure
-(described for contacts, but works the same way for calendars and
-tasks):
-1. synchronize the address book with the server
-2. create a new address book in Evolution and view it in Evolution
- once (the second step is necessary in at least Evolution 2.0.4
- to make the new address book usable in SyncEvolution)
-3. add a configuration for that second address book and the
- same URI on the SyncML server
-4. synchronize again, this time using the other data source
-
-Now one can either compare the address books in Evolution or do that
-automatically, described here for contacts:
-- save the complete address books: mark all entries, save as vCard
-- invoke synccompare with two file names as arguments and it will
- normalize and compare them automatically
-
-Normalizing is necessary because the order of cards and their
-properties as well as other minor formatting aspects may be
-different. The output comes from a side-by-side comparison, but
-is augmented by the script so that the context of each change
-is always the complete item that was modified. Lines or items
-following a ">" on the right side were added, those on the
-left side followed by a "<" were removed, and those with
-a "|" between text on the left and right side were modified.
-
-The automatic unit testing (see HACKING) contains a "testItems"
-test which verifies the copying of special entries using the
-same method.
-
-Modifying one of the address books or even both at the same time and
-then synchronizing back and forth can be used to verify that
-SyncEvolution works as expected. If you do not trust SyncEvolution or
-the server, then it is prudent to run these checks with a copy of the
-original address book. Make a backup of the .evolution/addressbook
-directory.
-
-
-Item Changes and Data Changes
------------------------------
-
-SyncML clients and servers consider each entry in a database as one
-item. Items can be added, removed or updated. This is the item change
-information that client and server exchange during a normal,
-incremental synchronization.
-
-If an item is saved, removed locally, and reimported, then this is
-usually reported to a peer as "one item removed, one added" because
-the information available to SyncEvolution is not sufficient to
-determine that this is in fact the same item. One exception are
-iCalendar 2.0 items with their globally unique ID: the modification
-above will be reported to the server as "one item updated".
-
-That is better, but still not quite correct because the content of the
-item has not changed, only the meta information about it which is used
-to detect changes. This cannot be avoided without creating additional
-overhead for normal synchronizations.
-
-SyncEvolution reports "item changes" (the number of added, removed and
-updated items) as well as data changes. These data changes are
-calculated by comparing database dumps. Because this data comparison
-ignores information about which data belongs to which item, it is able
-to detect that re-adding an item that was removed earlier does not
-change the data, in contrast to the item changes. On the other hand,
-removing one item and adding a different one may look like updating
-just one item, which is not quite correct.
-
-
-Conflict Resolution
--------------------
-
-If two clients make changes to the same item, the first one to
-synchronize will copy its changes to the server. The second one
-then runs into a conflict when it tries to push its own changes
-into the server.
-
-The SyncML server now has to decide how to proceed. Some decide
-to preserve both conflicting items, leading to duplicates which
-have to be merged manually later. Other servers merge automatically
-and throw away conflicting data based on heuristics; this may
-remove valid data. The client has no control over the method
-chosen by the server.
-
-Merging items on the server is difficult because the SyncML protocol
-does not specify which parts of a conflicting item were updated.
-In general a server can only make more or less educated guesses
-which might lead to data loss. It is better to avoid this situation
-in the first place by synchronizing before making changes.
-
-
-Known Problems + Support
-------------------------
-
-Please visit http://syncevolution.org/ for up-to-date
-information about known problems and links to places where further
-help can be found.
-
-
-Compiling from Source
----------------------
-
-To compile the code the source or an installation of the Synthesis
-SyncML engine is needed. A compatible snapshot of it is included in
-SyncEvolution source packages and will be used
-automatically. Instructions for working with upstream Synthesis
-sources directly are contained in the HACKING document.
-
-Also needed are the Evolution and Boost (>= 1.35) development
-files. For HTTP, either Curl or libsoup can be used.
-
-On Debian based systems the required packages can be installed with
- apt-get install evolution-data-server-dev \
- libecal1.2-dev libebook1.2-dev \
- libsoup2.4-dev \
- libboost-dev
-
-libboost-dev >= 1.34, available as libboost1.35-dev backport for Debian Etch.
-
-Necessary on some distros due to bad dependencies (not needed by SyncEvolution itself):
- apt-get install libdb3-dev
-
-Optional (enables reading proxy settings from GNOME preferences):
- apt-get install libsoup-gnome2.4-dev
-
-Optional (enables direct sync with phones):
- apt-get install libopenobex-dev libbluetooth-dev
-
-Optional (only used for SHA-256 when glib is not already a dependency):
- apt-get install libnss3-dev
-
-For compiling libsynthesis:
- apt-get install libpcre3-dev libsqlite3-dev libexpat-dev libz-dev
-
-This was copied from the libsynthesis README.
-
-The test framework also requires CPPUnit:
- apt-get install libcppunit-dev
-
-For the GUI and its D-Bus based service backend:
- apt-get install libdbus-glib-1-dev \
- xsltproc \
- libglib2.0-dev \
- libgtk2.0-dev libglade2-dev \
- libgnome-keyring-dev \
- libgconf2-dev libgnomevfs2-dev
-
-Optional packages for GUI:
- apt-get install libunique-dev
-
-libunique = ensure that GTK GUI only runs once per user
-
-Optional packages for GNOME Bluetooth Panel plugin:
- apt-get install libgnome-bluetooth-dev
-
-The plugin adds a button to invoke sync-UI after a device
-was paired which supports SyncML.
-
-The build system is the normal autotools system. See INSTALL for
-general instructions how to use that and "./configure --help" for
-SyncEvolution specific options.
-
-Note that compiling without the Evolution development files is
-possible. But because this is usually not what people want,
-the configure script needs explicit --disable-ecal --disable-ebook
-parameters, otherwise it will refuse to compile without Evolution
-support.
-
-When compiling from a git checkout, remember to run "./autogen.sh".
-It depends on:
- apt-get install libtool intltool automake
-
-
-Supporting SyncEvolution
-------------------------
-
-SyncEvolution is free software: available free of charge and you have
-the freedom of modifying and distributing it. If you are a software
-developer, the best way to support SyncEvolution is to port it to
-other backends and systems. Get in touch if you want to hear more
-about this.
-
-If you are a (hopefully happy) user of SyncEvolution, then you can
-make your appreciation or suggestions for improvements known in
-several ways. Although SyncEvolution is free, this does not mean that
-its development did not cost much effort - quite the opposite, a lot
-of time went into it.
-
-- Send a postcard to the author (see main page).
-- Leave comments on the author's blog (http://www.estamos.de/blog).
-- Donations are not necessary and cannot be accepted either.
-
-
-Authors
--------
-
-Patrick Ohly
-patrick.ohly@intel.com
-http://www.estamos.de/
-
-... plus several others:
-http://syncevolution.org/about/contributors
-
-To contact the project publicly (preferred):
-syncevolution@syncevolution.org
-
-For confidential emails there is a team mailing list:
-syncevolution@lists.intel.com
diff --git a/configure-pre.in b/configure-pre.in
index 6fdddef0..e62530fa 100644
--- a/configure-pre.in
+++ b/configure-pre.in
@@ -477,6 +477,20 @@ AC_SUBST(GUI_DESKTOP_FILES)
# as Debian Etch backport.
AX_BOOST_BASE(1.34)
+# need rst2man for man pages
+AC_ARG_WITH(rst2man,
+ AS_HELP_STRING([--with-rst2man=<path to reStructuredText to man converter>],
+ [Specifies an explicit path to the utility if not found in PATH.
+ An explicit --without-rst2man or not having it installed turn off
+ building of man pages.]),
+ [RST2MAN=$withval
+ if test "$RST2MAN" == "yes"; then
+ AC_PATH_PROG(RST2MAN, rst2man, "no")
+ fi
+ test "$RST2MAN" == "no" || test -x "$RST2MAN" || AC_ERROR([--with-rst2man=$RST2MAN: tool not found])],
+ [AC_PATH_PROG(RST2MAN, rst2man, "no")])
+AM_CONDITIONAL([COND_MAN_PAGES], [test "$RST2MAN" != "no"])
+
# absolute patch to source of Synthesis client library
SYNTHESIS_SRC=no-synthesis-source
AC_SUBST(SYNTHESIS_SRC)