65026bd0f7
git-svn-id: https://zeitsenke.de/svn/SyncEvolution/trunk@85 15ad00c4-1369-45f4-8270-35d70d36bdcd
98 lines
3.6 KiB
Text
98 lines
3.6 KiB
Text
Checking out the Source
|
|
-----------------------
|
|
|
|
SyncEvolution is hosted at sf.net. If you want to work
|
|
on the code, just let me know what your SF account is
|
|
and I can provide access to the developers CVS. The
|
|
anonymous CVS mirrors the sources automatically, but
|
|
sometimes is lacking a bit behind. Before using sources
|
|
checked out from CVS, invoke "sh autogen.sh" with
|
|
appropriate autotools packages installed.
|
|
|
|
The most recent version of the Sync4j C++ client library
|
|
is available from CVS, checkout the "3x" module from the CVS at
|
|
http://forge.objectweb.org/projects/sync4j
|
|
You'll need the files in 3x/client-api/native.
|
|
|
|
The recommended way to make that library available is by
|
|
installing it into its own directory with shared libraries disabled:
|
|
configure --prefix=<dir> --disable-shared; make; make install
|
|
and then pointing the configure of SyncEvolution towards it:
|
|
configure --with-sync4j=<dir> --disable-shared
|
|
Shared versions of the libraries are not recommended at the moment
|
|
because the client libraries API is not expected to be stable.
|
|
|
|
Alternatively SyncEvolution can work with a source snapshot of
|
|
the client library directly:
|
|
configure --with-sync4j-src=<dir>
|
|
where <dir> points towards the contents of the 3x/client-api/native
|
|
directory. This mode is required to generate source distributions
|
|
because those are meant to contain a copy of the client library
|
|
code.
|
|
|
|
|
|
Working with the Code
|
|
---------------------
|
|
|
|
The code follows the code formatting of the Funambol
|
|
Sync4j C++ client library. Just emulate the existing
|
|
code when possible.
|
|
|
|
Exceptions are used to report errors, but not in code
|
|
which is called from inside the Sync4j library because
|
|
that library does not handle exceptions for compatibility
|
|
reasons. In that case special case must be taken to not
|
|
forget that an error occurred (EvolutionSyncSource::m_hasFailed).
|
|
|
|
"make check" in the src directory compiles and runs unit
|
|
tests. Those tests were written inside the CppUnit
|
|
[http://cppunit.sourceforge.net/cppunit-wiki] framework
|
|
and so they (and just they) require that "cppunit-config"
|
|
is in the shell search path. Before running them, setup
|
|
your Evolution and ~/.sync4j configuration as described
|
|
in the README section 'Exchanging Data' (create address
|
|
books 'SyncEvolution test #1/2', etc).
|
|
|
|
Running the test with the environment variable TEST_EVOLUTION_LOG
|
|
set to the server's log file ensures that for each
|
|
individual sync session both the client and the corresponding
|
|
server log are stored in individual files in the src
|
|
directory. The filenames are derived from the tests and
|
|
the steps executed for each of them.
|
|
|
|
The basic configuration is chosen via TEST_EVOLUTION_SERVER;
|
|
the default is "localhost".
|
|
|
|
If the server needs a certain delay between syncs, that
|
|
can be set via TEST_EVOLUTION_DELAY=<seconds>. The Sync4j
|
|
2.3 server needs a delay of around 20 seconds to work
|
|
correctly.
|
|
|
|
The first parameter of the "test" program can be used
|
|
to select specific tests, like this:
|
|
./TestEvolution ContactSync::testItems
|
|
|
|
"make valgrind" runs the same tests inside valgrind
|
|
[http://www.valgrind.org]. A suppression file is
|
|
used to hide errors inside system libraries which
|
|
are not caused by SyncEvolution or Sync4j C++
|
|
library code. Most likely the suppressions will only
|
|
work on Debian GNU/Linux 3.1 ("Sarge") - feel free
|
|
to add more for your system.
|
|
|
|
|
|
CVS
|
|
---
|
|
|
|
Please add your changes to the ChangeLog file. The
|
|
Emacs vc-update-change-log = C-x v a command collects
|
|
the latest CVS commit messages and adds them automatically.
|
|
|
|
|
|
Building a Release
|
|
------------------
|
|
|
|
- increase version number in configure.in/AM_INIT_AUTOMAKE
|
|
- ensure ChangeLog and NEW are up-to-date
|
|
- make distcheck
|
|
- compile binary packages
|