[Pkg-mono-devel] Introducing virtual .shlibs

Eduard Bloch blade@debian.org
Sun, 6 Jun 2004 15:07:59 +0200


--TB36FDmn/VVEgNH/
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by mailgate1.uni-kl.de id i56D80Hd018765

Hello,

currently some people complain about libgdiplus, assuming it to be the
reason for mono-uninstallable-status. That is not true - it appears as
the libgdiplus problem when apt/dpkg try to install the _old_ version,
forced by finding only the OLD version of mono-assemblies-arch. In fact,
the depency chain would be pretty consistent if the updated mcs packages
(mono-assemblies-*, mono-mcs, mono-jay) would make their way into the
archive, but they unfortunately did not make it because of the usual
slowdown due to FTP maintainer's performance.

I have to admit that we could have it done better. In future, we should
always put at least the one, first release of a new upstream version
inot the experimental tree to make things settle down before moving them
to Unstable. Please take my appologies for this little mistake.

Now, the fact: a while ago, we decided to set strict version
dependencies in the .shlibs file of libmono to make sure that new new
upstrem release breaks newer/older packages. However, this seems to be
not very practical since every release must be synchronized with winelib
and libgdiplus and other packages depending on libmono. To work around
this lack of flexibility, I suggest to introduce "virtual .shlibs". This
is done by adding a "Provides: libmono-<upstreamCompatVersion>" field to
the libmono package and changing its .shlibs file to offer this package
name to the dependency resolver. upstreamCompatVersion would currently
be 0.91 and change when compatibility breaks (maybe 0.95 later, not
tested beta2 yet) or kept when the ABI compatibility is guaranteed.

The additional goodie is the nicer way to set Build-Dependencies in some
other packages. Currently, they use something like:

Build-Depends: libmono-dev (>> 0.91)
Build-Conflicts: libmono-dev (<< 0.92)

which is unprecise and ugly. With the virtual package above, it would be
shortened to:

Build-Depends: libmono-dev, libmono-0.91

and obiously this pair would match any version that is marked as
compatible via Provides: libmono-0.91.

Comments? Improvements? Please tell us. I made the changes in my local
working directory and they seem to work very well (patch attached).

Regards,
Eduard.
--=20
Um sich von einer zu gro=DFen Liebe oder Duldsamkeit f=FCr etwas zu
heilen, mu=DF man nicht die Feinde davon lesen, sondern die Freunde.
Lavater
		-- Jean Paul

--TB36FDmn/VVEgNH/
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=diffs

Index: mono/debian/control
===================================================================
--- mono/debian/control	(revision 888)
+++ mono/debian/control	(working copy)
@@ -84,6 +84,7 @@
 Architecture: i386 powerpc s390
 Depends: ${shlibs:Depends}
 Conflicts: libmint0
+Provides: libmono-${mono:upversion}
 Description: libraries for the Mono interpreter
  Shared libraries for Mono, used for embedding/hosting of the
  JIT. The package also contains libmono-profiler-cov used for
Index: mono/debian/rules
===================================================================
--- mono/debian/rules	(revision 888)
+++ mono/debian/rules	(working copy)
@@ -12,6 +12,7 @@
 
 # include /usr/share/dpatch/dpatch.make
 VERSION = $(shell dpkg-parsechangelog | grep ^Vers | cut -d\  -f2)
+UPVERSION = $(shell echo $(VERSION) | sed 's,-.*,,')
 
 cli-wrapper: debian/cli-wrapper.c
 	$(CC) -o cli-wrapper debian/cli-wrapper.c `pkg-config glib-2.0 --cflags --libs`
@@ -111,7 +112,8 @@
 	dh_strip -s
 	dh_compress -s
 	dh_fixperms -s
-	if test -d debian/libmono0 ; then dh_makeshlibs -plibmono0 -V 'libmono0 (= $(VERSION))' ;fi
+	echo "mono:upversion=$(UPVERSION)" >> $(CURDIR)/debian/libmono0.substvars
+	if test -d debian/libmono0 ; then dh_makeshlibs -plibmono0 -V 'libmono-$(UPVERSION)' ;fi
 	#dh_makeshlibs -plibmint0 -V 'libmint0 (= $(VERSION))'
 	dh_installdeb -s
 	dh_shlibdeps -s -Xlibmono-profiler-cov
Index: winelib/debian/changelog
===================================================================
--- winelib/debian/changelog	(revision 892)
+++ winelib/debian/changelog	(working copy)
@@ -1,6 +1,10 @@
 winelib (0.2-2) unstable; urgency=low
 
-  * Conflict with old mono-assemblies-arch package
+  * Conflict with the old mono-assemblies-arch package
+  * This package, when accepted in this century, will close the wine-related
+    mcs bugs (closes: #243029, #249185)
+  * setting build-dependency on libmono-0.91 to use the virtual soname
+    dependency
 
  -- Eduard Bloch <blade@debian.org>  Mon, 31 May 2004 11:56:18 +0200
 
Index: gtk-sharp/debian/control
===================================================================
--- gtk-sharp/debian/control	(revision 892)
+++ gtk-sharp/debian/control	(working copy)
@@ -3,7 +3,7 @@
 Priority: optional
 Maintainer: Debian Mono Group <pkg-mono-group@lists.alioth.debian.org>
 Uploaders: Eduard Bloch <blade@debian.org>, Mirco 'meebey' Bauer <mail@meebey.net>, Michael Schiansky <ms@debian.org>
-Build-Depends: debhelper (>= 4.1.87), autoconf, automake1.4, mono-mcs (>= 0.90) | c-sharp-compiler, mono-gac, monodoc-base (>> 0.13) | monodoc-browser, libmono-dev, libtool, libglib2.0-dev (>= 2.2.0), libgtk2.0-dev, libpango1.0-dev, libatk1.0-dev, libfreetype6-dev, libxml2-dev, libgda2-dev (>= 1.0.0), libglade2-dev (>= 2.0.0), librsvg2-dev (>= 2.0.1), libgnomedb2-dev (>= 1.0.0), libgail-dev, libgtkhtml3.1-dev, libgnomeui-dev (>= 2.2.0), libgnomecanvas2-dev (>= 2.2.0), libgnomeprint2.2-dev, libgnomeprintui2.2-dev (>= 2.2.0), libart-2.0-dev (>= 2.2.0), libvte-dev (>= 0.11.10)
+Build-Depends: debhelper (>= 4.1.87), autoconf, automake1.4, mono-mcs (>= 0.90) | c-sharp-compiler, mono-gac, monodoc-base (>> 0.13) | monodoc-browser, libmono-dev, libtool, libglib2.0-dev (>= 2.2.0), libgtk2.0-dev, libpango1.0-dev, libatk1.0-dev, libfreetype6-dev, libxml2-dev, libgda2-dev (>= 1.0.0), libglade2-dev (>= 2.0.0), librsvg2-dev (>= 2.0.1), libgnomedb2-dev (>= 1.0.0), libgail-dev, libgtkhtml3.1-dev, libgnomeui-dev (>= 2.2.0), libgnomecanvas2-dev (>= 2.2.0), libgnomeprint2.2-dev, libgnomeprintui2.2-dev (>= 2.2.0), libart-2.0-dev (>= 2.2.0), libvte-dev (>= 0.11.10), libmono-0.91
 Build-Conflicts: libgtkhtml3.0-2, libart-2.0-dev (= 2.3.16-3)
 Standards-Version: 3.6.1
 
Index: gtk-sharp/debian/changelog
===================================================================
--- gtk-sharp/debian/changelog	(revision 892)
+++ gtk-sharp/debian/changelog	(working copy)
@@ -1,3 +1,9 @@
+gtk-sharp (0.91.1-2) unstable; urgency=low
+
+  * Testing with new virtual sonames
+
+ -- Eduard Bloch <blade@debian.org>  Sun,  6 Jun 2004 14:23:13 +0200
+
 gtk-sharp (0.91.1-1) unstable; urgency=low
 
   * Mirco 'meebey' Bauer

--TB36FDmn/VVEgNH/--