syncevolution/AUTOTOOLS-TODO
Patrick Ohly 15f2d03184 autotools: ensure that link lines are complete
As mentioned by Tino Keitel on the mailing list, some libs and
executables were only implicitly linked against libraries that they
called directly. This happened to work by chance because these libraries
ended up in the running executable anyway, due to indirect loading.

To catch such problems, the "make installcheck" was extended:
dpkg-shlibdeps is run, if available, and the error output is scanned
for the messages which indicate that a symbol is used without linking
to the right library (example output below).

Had to fix quite a few _LIBADD lines to pass the test.
Some exceptions are allowed:
- libsmltk depends on the caller providing SySync logging support.
- libneon is intentionally not linked explicitly for syncevolution.org
  binaries, to make resulting binaries work with GNUTLS and OpenSSL.

dpkg-shlibdeps: warning: debian/syncevolution-libs/usr/lib/syncevolution/backends/syncdav.so contains an unresolvable reference to symbol icalparameter_new_from_value_string: it's probably a plugin.
dpkg-shlibdeps: warning: 51 other similar warnings have been skipped (use -v to see them all).
...
dpkg-shlibdeps: warning: symbol dlsym used by debian/libsyncevolution0/usr/lib/libsyncevolution.so.0.0.0 found in none of the libraries.
dpkg-shlibdeps: warning: symbol dlerror used by debian/libsyncevolution0/usr/lib/libsyncevolution.so.0.0.0 found in none of the libraries.
dpkg-shlibdeps: warning: symbol dlopen used by debian/libsyncevolution0/usr/lib/libsyncevolution.so.0.0.0 found in none of the libraries.
2012-07-12 16:11:33 +00:00

110 lines
3 KiB
Plaintext

REGRESSIONS:
- Port ActiveSync backend to non-recursive Automake.
IMPROVEMENTS:
- Add a check for qt-mobility for QtContacts backend.
- Probably client test should be built only when unit tests or integration tests
are enabled.
- Review CLEANFILES, DISTCLEANFILES, MAINTAINERCLEANFILES and MOSTLYCLEANFILES.
That is - check which files should be assigned to which of CLEAN variables.
- Check why distcheck outputs:
==================
All 0 tests passed
==================
There should have been at least one test being run. The same behavior exists
in old build system.
This is because neither unit tests nor integration tests are enabled by
default. If we would want to enable them then we should add
--enable-unit-tests and --enable-integration-tests into
DISTCHECK_CONFIGURE_FLAGS in toplevel Makefile.am.
- Check why there are so many failed tests when running `make check' explicitly.
The same number of failures exists in old build system:
Run: 583 Failure total: 528 Failures: 206 Errors: 322
- Tidy up configure.ac and some .am files.
- Maybe write scripts generating configs_xml.am, templates.am and profiles.am.
QUESTIONS:
- None.
PERSISTENT:
- Hunt for common variables clobbering.
- Silence more verbose output if found.
NITPICKS:
- Check if SyncEvolutionXML.c should always be recreated, patches always checked
and test-client always relinked.
- Maybe do not create /share/man/man1 directory if we do not put there anything.
- If backends are static libraries then do not create /lib/syncevolution,
because nothing is put here.
- Change $(foo) to @foo@ for all variables substituted by configure script. This
might be useful when looking for actual value of variable appearing out of
nowhere in .am file. Maybe make also all configure variables UPPER_CASE
and all local Automake variables lower_case.
- Lower autoreconf's warnings level later. Namely - don't warn about some
portability issues. The warnings about obsolete stuff should rather remain.
For now only some glib macros are using obsolete features.
- Should stamp files be marked as intermediate or rather as secondary files?
- Check why 'copying selected object files to avoid basename conflicts...' is
displayed between linking src/dbus/server/libsyncevodbusserver.la
and compiling src/gdbus/src_gdbus_libgdbussyncevo_la-debug.lo. This is
probably harmless.
TRACKING:
- Handle nobase prefixes. Link to track:
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9289
- Explanation why make -jX used to fail:
It failed because usually Automake generates dependencies of a library/program
by looking at its _LIBADD/_LDADD variable. But this generation doesn't work
correctly when _LIBADD/_LDADD variable has AC_SUBSTed variable - automake then
just discards them and resulting _DEPENDENCIES variable does not contain them.
As a workaround _DEPENDENCIES variable have to be written explicitly. Link to
track:
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9320