We do depend on libsoup-2.4 after all: the API and ABI
changed considerably between 2.2->2.4.
Building D-Bus service depends on xsltproc. Added
to README and added an AC_ERROR in configure, to avoid
compile errors later on.
when user sets password in UI, "-" gets written to the config
as password (meaning AskPassword() should be used). This
shouldn't be done if the user does not modify the password in UI:
this way cli client and gtk ui can both be used for same configs.
Fixes#4217
These tests are both slow and tend to fail with these servers
because of deficiencies in the servers. Disabled these tests
as discussed in Bugzilla #4282.
distcheck is useful to ensure that all files are distributed,
the result builds and cleans up properly. Doing this with
building of the GUI is important to avoid surprises during
packaging.
Several files created as part of the GUI build were not
properly removed during "make clean". Found with distcheck
when using DISTCHECK_CONFIGURE_FLAGS=--enable-gui
distcheck also complained about an untranslated .xml file
that it found after building the GUI. The .xml is
generated from .glade, which is translated, so the .xml
file can be ignored via POTFILES.skip.
The only way that I found not to execute a test was not to register
it in CPPUnit. FilterTest() does this by replacing a valid test
or test group with a dummy one, SkipTest, which just prints the
test name and that it is skipped.
Registering tests has to be intercepted at multiple levels:
- CPPUNIT_TEST in test suites
- ADD_TEST in ClientTest
- addTest in ClientTest
Not currently intercepted are complete test suites (CPPUNIT_TEST_SUITE).
The main purpose of this patch is to avoid running the time consuming
suspend and interrupt tests, but this feature might also be useful for
other tests, which is why it was implemented in a more general way.
This is currently broken because opening the default system
addressbook depends on e_cal_new_system_memos(), which is
not available in all Evolution versions.
It could be added, but first we should sort out issue #3732.
The main reason for this is that libtoolize gets confused when it
finds files from a more recent libtool, which can happen when
running autogen.sh on one distro and then again on an older one,
using the same source directory.
- when libsoup is used (as on Moblin), the configure script sets
a default search for the SSLServerCertificates option which works
on Debian and Red Hat:
/etc/ssl/certs/ca-certificates.crt:/usr/share/ssl/certs/ca-bundle.crt
- with libcurl the library's own default is used; SSLServerCertificates
is empty, but can be set to override the default
- libsoup enables checking when either SSLVerifyServer or SSLVerifyHost
is on (does not support more control over checking), refuses to work
if no CA certificates file was found
- libcurl supports both strict checking (both options on) and less
strict checking (only check certificate, but not hostname)
Did real sync tests (ical20 + vcard30 testItems) with Ubuntu 8.04,
valgrind valgrind-3.4.1.SVN-9098-1883, 64 bit mode. Some issues in
libsynthesis could be fixed, others (like writing uninitialized
data into binfiles) hopefully can be ignored.
First, there was a memory leak in EvolutionSyncSource::nextItem().
Second, the item constructed there needlessly was filled with the
item content even if the Synthesis engine only needed the UID.
From valgrind:
==27587== 4 bytes in 4 blocks are definitely lost in loss record 1 of 47
==27587== at 0x4C232CB: malloc (vg_replace_malloc.c:207)
==27587== by 0x6ED017: StrAllocN (SDK_util.c:145)
==27587== by 0x6ED065: StrAlloc (SDK_util.c:154)
==27587== by 0x67D421: SyncEvolution_ReadNextItemAsKey (SynthesisDBPlugin.cpp:623)
==27587== by 0x793603: sysync::TDB_Api::ReadNextItemAsKey(sysync::TDB_Api_ItemID&, sysync::KeyType*, int&, bool) (dbapi.cpp:1705)
The leak occurs because our caller ignores the item ID in the EOF case.
The bridge used to return a dup of the empty luid. Now it returns NULL
for all empty luids.
Catch fatal signals (SIGSEGV, SIGABRT, SIGBUS) and in the signal
handler, flush and process output.
Flushing is done each time redirection is removed and thus
also catches output that is pending in either C or C++ output
streams during a normal application shutdown.
The abort-redirect test program covers such a scenario. It does
a double free, which depending on libc causes a segfault or
error message. The source is in "test" (like the rest of the
test programs) while the binary is built with "make abort-redirect"
in "src". It would be nicer if the test folder was a subdirectory of
src and wouldn't require its own Makefile, but that's a different issues...
Note that glib's double free report is written to the console
regardless whether stdout/stderr redirection is enabled. It seems
that glibc does not use FDs 1 or 2 for that, redirecting them in
the shell has no effect either. Catching the signal and flushing
is useful nevertheless.
The environment variable SYNCEVOLUTION_DEBUG is checked by
LogRedirect itself (instead of in its caller) so that all
users of the class behave identically. The value of the variable
currently doesn't matter. Later it might also be used to enable
or disable specific debugging aspects.
glib messages are recognized and logged at DEV level with a "glib" prefix.
Other, unclassified stderr messages use DEBUG and "stderr" prefix. The
Synthesis HTML log currently ignores the prefix, though.
Added a LogRedirect class which intercepts file descriptors
1 and 2 and channels the data through either a UDP or Unix Domain
datagram socket (UDP being the default, see patch) into the
normal log.
EvolutionSyncClient has to call the parent logger instead of
creating its own LogStdout to get messages to the user.
Currently LogRedirect is not actually used, because it is
a bit too effective (intercepts much of the normal syncevolution
output) and that output is split into different messages (cout
does lots of small writes).
The SyncEvolution debug levels are translated to "hot" messages (WARNING, INFO,
appear as bold in HTML) and "error" messages (ERROR, in red). DEV, DEBUG are
normal log lines.
The other information is not currently used by the engine.
client.log is gone completely. All of the messages written to that
file now also appear in the .html log. The Synthesis engine is told
to write just one log file for global events and the session, using
the new <logsessionstoglobal> option.
The way logging works now is that as soon as possible, SyncEvolution
creates a Synthesis engine without datastores but with correct debug log
settings. Latter that engine is re-initialized with a more complete
XML config which also defines datastores.
The LogDir class implements the SyncEvolution logging base class
and registers itself as the the active logger. It prints to stdout
out and in addition, also into the Synthesis log if one is currently
available via the EvolutionSyncClient.
Compiling the GUI only works if the dbus library was built first,
so changed the default of --enable-dbus-service to "yes" if the GUI
is enabled. Added error check for conflicting configure options.
Documented dependency on GNOME keyring.
Install a translated sync.desktop derived from a sync.desktop.in.
The two strings are marked with an underscore; somehow they are already
translated even though the sync.desktop file was not listed in po/POTFILES.in.
Tested with local tests (Client::Source SyncEvolution), valgrind 3.4.1.SVN-9098-1883,
Evolution 2.22.3.1, on Ubuntu 8.04 in 64 bit mode. Some stack backtraces were
slightly different, some problems are new. None seem to be caused by us.
First, fabricate a dummy unified diff header to keep "patch" happy.
It worked before, but printed a warning.
Second, make testcase2patch depend on generating the patched files
first. Avoids potential problems in parallel build.
This patch fully automates all work when running make inside the
src directory. It achieves that by not letting make check dependencies.
Instead shell commands check what needs to be updated. By using
touch with the patched file as reference, the regenerated patch
is never newer than it, thus cycles of repeatedly writing files
is avoided.
One drawback is that client-test is needlessly rebuilt, because
it now depends on a phony target. This is not optimal, but better
than not rebuilding files that have to be rebuild, as before.
support isConsumerReady in dbus api (GetServers, GetTemplates
and also in the options in GetServerConfig). Use the flag in
sync-ui to hide non-ready templates.
Fix#3336
A property of server template configs. True if the server is
ready for use by "normal" users (everyone can get an account
and some kind of support, we have tested the server well
enough, ...).
Currently the ScheduleWorld and Funambol configs qualify.
Synthesis is not generally available, Memotoo has to be retested
and included in the nightly regression testing.
Without that information, the wrong files are compared, leading to false
test failures. Because getItems() is also called indirectly via import(),
this change ripples through several functions.
We were using the same set of test cases for different server, this
is a bit limited; now importItem will first check a server specific
test case file and will fallback to the general case file if failed.
The makefile is also changed.
With the links to our and Funambol's bug tracker it is easier
for someone who only has the README to verify what the current
status is. The ACTION issue was not mentioned in the README.
Added some curly brackets, in order to be consistent with the rest
of SyncEvolution. The rationale is that a) always using them
avoids mistakes and b) keeps patches shorter when brackets become
necessary later.