EDS: updated syncevolution.org packages, incompatible with EDS 3.6

The EDS backend in the syncevolution.org packages are compiled
for the API in EDS <= 3.4. With some tricks (dynamically
loading libs) it works across a range of libecal and libebook
releases.

Now the syncevolution-evolution meta package declares that
it depends on one of these libecal/ebook libraries (was missing
earlier), to ensure that the libs get installed on a system
which did not have them already.

The dynamic loading will no longer attempt to work with
EDS 3.6. For EDS 3.6 it will be necessary to update the EClient
variant of the EDS backend and compile the syncevolution.org
binaries differently.
This commit is contained in:
Patrick Ohly 2012-07-10 07:12:27 +00:00
parent af9ec74339
commit 7feed6634a
2 changed files with 21 additions and 7 deletions

View File

@ -197,9 +197,24 @@ endif
PLATFORM_FILES_evolution = platformgnome syncecal syncebook
PLATFORM_FILES_kde = platformkde syncakonadi
# Additional parameters for syncevolution-kde/evolution.deb.
# Fake conflicts/replaces works around a bug in CheckInstall,
# which creates empty, invalid entries for those unless
# something is given.
# something is given. For Evolution we hard-code dependencies
# (because with EDS compatibility turned on, several
# alternatives will work at runtime) and conflict with
# EDS 3.6, because that breaks the API and does not work for us
# at the moment.
SYNCEVOLUTION_kde_DEB_ARGS = \
--conflicts=syncevolution-foobar \
--replaces=syncevolution-foobar
SYNCEVOLUTION_evolution_DEB_ARGS = \
--conflicts="'evolution-data-server (>= 3.6), libebook-1.2-14 (>= 3.6), libecal-1.2.12 (>= 3.6)'" \
--replaces=syncevolution-foobar
SYNCEVOLUTION_evolution_DEB_REQUIRES = \
, libebook-1.2-5 | libebook-1.2-6 | libebook-1.2-7 | libebook-1.2-8 | libebook-1.2-9 | libebook-1.2-10 | libebook-1.2-11 | libebook-1.2-12 \
, libecal-1.2-3 | libecal-1.2-4 | libecal-1.2-5 | libecal-1.2-6 | libecal-1.2-7 | libecal-1.2-8 | libecal-1.2-9 | libecal-1.2-10 | libecal-1.2-11
syncevolution-%-deb: checkinstall/dist/$(distdir) checkinstall/dist/debian/control
(echo "SyncEvolution - meta package for $*" && cat $(srcdir)/description) >checkinstall/description-pak
tmpdir=`mktemp -d $$HOME/syncevolution.XXXXXXXXXX` && \
@ -212,11 +227,10 @@ syncevolution-%-deb: checkinstall/dist/$(distdir) checkinstall/dist/debian/contr
--nodoc \
--pkgversion=$(PLATFORM_DEB_VERSION) \
--pkgrelease=$(PLATFORM_DEB_RELEASE) \
$(SYNCEVOLUTION_$*_DEB_ARGS) \
--pkgname=syncevolution-$* \
--pkgarch=all \
--requires="'$(shell set -x; cd checkinstall/dist; LD_LIBRARY_PATH=$(distdir)/usr/lib:$(distdir)/usr/lib/syncevolution dpkg-shlibdeps -L$(srcdir)/src/shlibs.local --ignore-missing-info -O $$(for i in $(patsubst %,$(distdir)/usr/lib/syncevolution/backends/%.so,$(PLATFORM_FILES_$*)); do if file $$i | grep ELF >/dev/null; then echo $$i; fi; done) | sed $(REQUIRES_SED_KDE) -e 's/[^=]*=//'), $(PKGNAME) (= $(VERSION_deb)-$(RELEASE))'" \
--conflicts=syncevolution-foobar \
--replaces=syncevolution-foobar \
--requires="'$(shell set -x; cd checkinstall/dist; LD_LIBRARY_PATH=$(distdir)/usr/lib:$(distdir)/usr/lib/syncevolution dpkg-shlibdeps -L$(srcdir)/src/shlibs.local --ignore-missing-info -O $$(for i in $(patsubst %,$(distdir)/usr/lib/syncevolution/backends/%.so,$(PLATFORM_FILES_$*)); do if file $$i | grep ELF >/dev/null; then echo $$i; fi; done) | sed $(REQUIRES_SED_KDE) -e 's/[^=]*=//'), $(PKGNAME) (= $(VERSION_deb)-$(RELEASE))$(SYNCEVOLUTION_$*_DEB_REQUIRES)'" \
--maintainer="'Patrick Ohly <patrick.ohly@gmx.de>'" \
--pkgsource='http://syncevolution.org' \
--pkggroup='$*' \

View File

@ -185,7 +185,7 @@ extern "C" void EDSAbiWrapperInit()
# ifdef HAVE_EDS
edshandle =
findSymbols("libedataserver-1.2.so", 7, 16,
FIND_SYMBOLS_NEED_ALL|FIND_SYMBOLS_LENIENT_MAX_VERSION, NULL,
FIND_SYMBOLS_NEED_ALL, NULL,
&EDSAbiWrapperSingleton.e_source_get_type, "e_source_get_type",
&EDSAbiWrapperSingleton.e_source_get_uri, "e_source_get_uri",
&EDSAbiWrapperSingleton.e_source_group_get_type, "e_source_group_get_type",
@ -201,7 +201,7 @@ extern "C" void EDSAbiWrapperInit()
libebookMaxVersion = 13;
ebookhandle =
findSymbols("libebook-1.2.so", libebookMinVersion, libebookMaxVersion,
FIND_SYMBOLS_NEED_ALL|FIND_SYMBOLS_LENIENT_MAX_VERSION, NULL,
FIND_SYMBOLS_NEED_ALL, NULL,
&EDSAbiWrapperSingleton.e_book_add_contact, "e_book_add_contact",
&EDSAbiWrapperSingleton.e_book_authenticate_user, "e_book_authenticate_user",
&EDSAbiWrapperSingleton.e_book_commit_contact, "e_book_commit_contact",
@ -242,7 +242,7 @@ extern "C" void EDSAbiWrapperInit()
libecalMaxVersion = 11;
ecalhandle =
findSymbols("libecal-1.2.so", libecalMinVersion, libecalMaxVersion,
FIND_SYMBOLS_NEED_ALL|FIND_SYMBOLS_LENIENT_MAX_VERSION, NULL,
FIND_SYMBOLS_NEED_ALL, NULL,
&EDSAbiWrapperSingleton.e_cal_add_timezone, "e_cal_add_timezone",
&EDSAbiWrapperSingleton.e_cal_component_get_icalcomponent, "e_cal_component_get_icalcomponent",
&EDSAbiWrapperSingleton.e_cal_component_get_last_modified, "e_cal_component_get_last_modified",