summaryrefslogtreecommitdiff
path: root/Makefile.am
diff options
context:
space:
mode:
authorPatrick Ohly <patrick.ohly@intel.com>2012-03-09 13:07:18 +0000
committerPatrick Ohly <patrick.ohly@intel.com>2012-03-12 07:50:14 +0000
commitc44d3f375440e76df04e21197cbc802a67b226bb (patch)
tree122a75534f89709755571442eafdf5d4d2317e2d /Makefile.am
parentedd3b187719b07ee8805a011891e78ebc08f0827 (diff)
packaging: added evolution and kde meta .deb packages
The traditional "syncevolution-evolution" .deb package will be replaced with "syncevolution-bundle". A meta "syncevolution-evolution" package depends on it, to support seamless updates for users who have "syncevolution-evolution" installed. Binary dependencies of the main .deb are ignored for backends because loading them is optional. The new "syncevolution-kde" package has the right dependencies for KDE/Akonadi, while "syncevolution-evolution" mostly just lists standard libs if the "EDS compatibility" mode is used, where libebook/libecal are loaded dynamically.
Diffstat (limited to 'Makefile.am')
-rw-r--r--Makefile.am57
1 files changed, 47 insertions, 10 deletions
diff --git a/Makefile.am b/Makefile.am
index 3afb0774..05bd531a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -119,12 +119,14 @@ TYPE_rpm = -R
# Dependency calculation is intentionally incomplete:
# - don't force dependency on specific EDS libs via backends, their versions change too much (handled via --enable-evolution-compatibility and dynamic loading of the backends)
# - ignore client-test dependencies (because users typically don't run it)
+# - ignore backend dependencies (should never prevent installing the bundle)
# - be more flexible about kdelibs5 than dpkg-shlibdeps: it is found as package
# for libkdeui.so.5 and libkdecore.so.5 on Ubuntu Lucid, but after Debian
# Squeeze the package was replaced by individual library packages. On such
# distros, libkdeui5 is what we need.
# - same for kdepimlibs5 -> libakonadi-kde4
-REQUIRES_deb = --requires="'$(shell set -x; cd 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 $$(find $(distdir) -type f -perm /u+x | grep -v -e client-test -e lib/syncevolution/sync); do if file $$i | grep ELF >/dev/null; then echo $$i; fi; done) | sed -e 's/kdelibs5 ([^,]*),/kdelibs5 | libkdeui5,/g' -e 's/kdepimlibs5 ([^,]*),/kdepimlibs5 | libakonadi-kde4,/g' -e 's/[^=]*=//')$(REQUIRES_deb_neon)'"
+REQUIRES_SED_KDE = -e 's/kdelibs5 ([^,]*),/kdelibs5 | libkdeui5,/g' -e 's/kdepimlibs5 ([^,]*),/kdepimlibs5 | libakonadi-kde4,/g'
+REQUIRES_deb = --requires="'$(shell set -x; cd 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 $$(find $(distdir) -type f -perm /u+x | grep -v -e client-test -e lib/syncevolution/backends/); do if file $$i | grep ELF >/dev/null; then echo $$i; fi; done) | sed $(REQUIRES_SED_KDE) -e 's/[^=]*=//')$(REQUIRES_deb_neon)'"
if NEON_COMPATIBILITY
# --enable-neon-compatibility in src/backends/webdav:
# replace dependencies from linking with hard-coded dlopen() dependencies
@@ -156,7 +158,8 @@ PKGS = $(addprefix syncevolution-evolution-, 2.6 2.8 2.12)
# system libs. The assumption is that the system library is named
# after the lib and its major version, which holds for libsmltk and
# libsynthesis in Debian.
-deb rpm : dist/$(distdir) dist/debian/control description-pak
+deb rpm : dist/$(distdir) dist/debian/control
+ (echo "SyncEvolution - synchronizing personal information management data" && cat $(srcdir)/description) >description-pak
conflicts=`ls -1 dist/$(distdir)/usr/lib/*.so.[0123456789] | sed -e 's;.*/;;' -e 's/\.so\.//' -e 's/$$/, /'` && \
tmpdir=`mktemp -d $$HOME/syncevolution.XXXXXXXXXX` && \
trap "rm -rf $$tmpdir" EXIT && \
@@ -171,14 +174,52 @@ deb rpm : dist/$(distdir) dist/debian/control description-pak
--pkgarch=$(PKGARCH) \
--provides=syncevolution \
--replaces="'syncevolution, `echo $(filter-out $(PKGNAME), $(PKGS)) | sed -e 's/ */ (<< 1:0.8.1-2), /g'` (<< 1:0.8.1-2)'" \
- --conflicts="'$${conflicts}syncevolution, `echo $(filter-out $(PKGNAME), $(PKGS)) | sed -e 's/ */ (<< 1:0.8.1-2), /g'` (<< 1:0.8.1-2)'" \
+ --conflicts="'$${conflicts}syncevolution, `echo $(filter-out $(PKGNAME), $(PKGS)) | sed -e 's/ */ (<< 1:0.8.1-2), /g'` (<< 1:0.8.1-2)', libsmltk0, libsyncevolution0, libsynthesis0, syncevolution-common, syncevolution-libs" \
--maintainer="'Patrick Ohly <patrick.ohly@gmx.de>'" \
- --pkgsource='http://sourceforge.net/project/showfiles.php?group_id=146288' \
- --pkgaltsource='http://www.estamos.de/projects/SyncML/' \
- --pkggroup='gnome' \
+ --pkgsource='http://syncevolution.org' \
+ --pkggroup='$*' \
+ --pkggroup='comm' \
cp -r `pwd`/$</usr/* /usr
if [ $@ = "rpm" ]; then cp /usr/src/rpm/RPMS/*/${PKGNAME}-${VERSION}-2.*.rpm .; fi
+# Pseudo platform .deb packages:
+# only depend on PKGNAME = syncevolution-$(BINSUFFIX) (usually syncevolution-bundle).
+# Version number is only bumped when changing the packaging rules here.
+PLATFORM_DEB_VERSION = $(VERSION_deb)
+PLATFORM_DEB_RELEASE = 1
+if ENABLE_MODULES
+deb : syncevolution-kde-deb
+deb : syncevolution-evolution-deb
+endif
+
+# define which files are relevant for each platform
+PLATFORM_FILES_evolution = platformgnome syncecal syncebook
+PLATFORM_FILES_kde = platformkde syncakonadi
+
+# Fake conflicts/replaces works around a bug in CheckInstall,
+# which creates empty, invalid entries for those unless
+# something is given.
+syncevolution-%-deb: dist/$(distdir) dist/debian/control
+ (echo "SyncEvolution - meta package for $*" && cat $(srcdir)/description) >description-pak
+ tmpdir=`mktemp -d $$HOME/syncevolution.XXXXXXXXXX` && \
+ trap "rm -rf $$tmpdir" EXIT && \
+ fakeroot checkinstall </dev/null \
+ $(TYPE_deb) \
+ --fstrans=yes \
+ --strip=no \
+ --nodoc \
+ --pkgversion=$(PLATFORM_DEB_VERSION) \
+ --pkgrelease=$(PLATFORM_DEB_RELEASE) \
+ --pkgname=syncevolution-$* \
+ --pkgarch=all \
+ --requires="'$(shell set -x; cd 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 \
+ --maintainer="'Patrick Ohly <patrick.ohly@gmx.de>'" \
+ --pkgsource='http://syncevolution.org' \
+ --pkggroup='$*' \
+ sh -c 'mkdir -p touch /usr/share/doc/syncevolution-$* && echo "SyncEvolution platform pseudo-package for $*" >/usr/share/doc/syncevolution-$*/README'
+
all_phonies += dist/$(distdir) clean_dist
dist/$(distdir): all
rm -rf $@
@@ -194,10 +235,6 @@ dist/debian/control:
mkdir -p ${dir $@}
touch $@
-# for checkinstall
-description-pak : description
- cp $< $@
-
# Build "html" inside the build dir, using source files
# from the SyncEvolution source directory and (if built)
# the installed client-api.build directory.