[Pkg-mono-svn-commits] rev 3679 - in mono/trunk/debian: . patches

Mirco Bauer meebey at alioth.debian.org
Tue Jul 8 21:04:22 UTC 2008


Author: meebey
Date: 2008-07-08 21:04:21 +0000 (Tue, 08 Jul 2008)
New Revision: 3679

Added:
   mono/trunk/debian/patches/fix_Dictionary_preventing_GC_r102114.dpatch
   mono/trunk/debian/patches/fix_TdsConnectionPool_svn.dpatch
Modified:
   mono/trunk/debian/changelog
   mono/trunk/debian/control
   mono/trunk/debian/libmono-system2.0-cil.install
   mono/trunk/debian/patches/00list
   mono/trunk/debian/rules
   mono/trunk/debian/shlibs.local
   mono/trunk/debian/update-shlibs.local.sh
Log:
  * debian/shlibs.local:
    + Updated for the Mono 1.9 release.
  * debian/rules:
    debian/libmono-system2.0-cil.install:
    + Added System.Xml.Linq library but with the correct compiler-directory.
      (Closes: #487996)
  * debian/rules:
    + Removed --list-missing from dh_install call, it's useless in the current
      implementation.
  * debian/control:
    + Added libdiplus to dependencies of libmono-system-web1.0-cil and
      libmono-system-web2.0-cil as System.Web.UI.WebControls.WebColorConverter
      invokes it (which is needed by most web applications). (Closes: #479683)
  * debian/patches/fix_Dictionary_preventing_GC_r102114.dpatch:
    Clear empty slots in keySlots and valueSlots. Otherwise the garbage
    collector cannot reclaim the referenced key/value.
    (patch taken from upstream SVN revision 102114)
  * debian/patches/fix_TdsConnectionPool_svn.dpatch:
    Remove unnecessary locks and code refactoring.
    Update according to the new return type of
    TdsConnectionPool.GetConnectionPool().
    Added member to keep track of pool status.
    Do not call tds.Reset () as it is already done in the connection pool.
    Honor timeout and throw appropriate exception when connections are not
    available.
    When pooled connection cannot be reset, remove it from pool and allow slot
    to be re-used for a newly established.
    When pool is full, and no connection becomes available before the connect
    timeout has elapsed, then throw an InvalidOperationException.
    (patch taken from upstream SVN revisions 105424, 105432, 105433, 105719,
     106448 and 107325)



Modified: mono/trunk/debian/changelog
===================================================================
--- mono/trunk/debian/changelog	2008-07-08 12:16:44 UTC (rev 3678)
+++ mono/trunk/debian/changelog	2008-07-08 21:04:21 UTC (rev 3679)
@@ -1,3 +1,39 @@
+mono (1.9.1+dfsg-3~pre1) unstable; urgency=low
+
+  * debian/shlibs.local:
+    + Updated for the Mono 1.9 release.
+  * debian/rules:
+    debian/libmono-system2.0-cil.install:
+    + Added System.Xml.Linq library but with the correct compiler-directory.
+      (Closes: #487996)
+  * debian/rules:
+    + Removed --list-missing from dh_install call, it's useless in the current
+      implementation.
+  * debian/control:
+    + Added libdiplus to dependencies of libmono-system-web1.0-cil and
+      libmono-system-web2.0-cil as System.Web.UI.WebControls.WebColorConverter
+      invokes it (which is needed by most web applications). (Closes: #479683)
+  * debian/patches/fix_Dictionary_preventing_GC_r102114.dpatch:
+    Clear empty slots in keySlots and valueSlots. Otherwise the garbage
+    collector cannot reclaim the referenced key/value.
+    (patch taken from upstream SVN revision 102114)
+  * debian/patches/fix_TdsConnectionPool_svn.dpatch:
+    Remove unnecessary locks and code refactoring.
+    Update according to the new return type of
+    TdsConnectionPool.GetConnectionPool().
+    Added member to keep track of pool status.
+    Do not call tds.Reset () as it is already done in the connection pool.
+    Honor timeout and throw appropriate exception when connections are not
+    available.
+    When pooled connection cannot be reset, remove it from pool and allow slot
+    to be re-used for a newly established.
+    When pool is full, and no connection becomes available before the connect
+    timeout has elapsed, then throw an InvalidOperationException.
+    (patch taken from upstream SVN revisions 105424, 105432, 105433, 105719,
+     106448 and 107325)
+
+ -- Mirco Bauer <meebey at debian.org>  Wed, 18 Jun 2008 01:05:00 +0200
+
 mono (1.9.1+dfsg-2) unstable; urgency=medium
 
   * Urgency set to medium as this release contains important bugfixes for

Modified: mono/trunk/debian/control
===================================================================
--- mono/trunk/debian/control	2008-07-08 12:16:44 UTC (rev 3678)
+++ mono/trunk/debian/control	2008-07-08 21:04:21 UTC (rev 3679)
@@ -425,7 +425,7 @@
 Section: libs
 Architecture: all
 Replaces: mono-classlib-1.0 (<< 1.1.13.6-1), mono-classlib-1.0-dbg (<< 1.1.13.6-1)
-Depends: ${cli:Depends}, mono-jit (>= ${mono:upversion}), mono-jit (<< ${mono:next-upversion})
+Depends: ${cli:Depends}, mono-jit (>= ${mono:upversion}), mono-jit (<< ${mono:next-upversion}), libgdiplus
 Description: Mono System.Web library
  Mono is a platform for running and developing applications based on the
  ECMA/ISO Standards. Mono is an open source effort led by Novell.
@@ -439,7 +439,7 @@
 Section: libs
 Architecture: all
 Replaces: mono-classlib-2.0 (<< 1.1.13.6-2), mono-classlib-2.0-dbg (<< 1.1.13.6-1)
-Depends: ${cli:Depends}, mono-jit (>= ${mono:upversion}), mono-jit (<< ${mono:next-upversion})
+Depends: ${cli:Depends}, mono-jit (>= ${mono:upversion}), mono-jit (<< ${mono:next-upversion}), libgdiplus
 Suggests: ${cli:Suggests}
 Description: Mono System.Web Library
  Mono is a platform for running and developing applications based on the

Modified: mono/trunk/debian/libmono-system2.0-cil.install
===================================================================
--- mono/trunk/debian/libmono-system2.0-cil.install	2008-07-08 12:16:44 UTC (rev 3678)
+++ mono/trunk/debian/libmono-system2.0-cil.install	2008-07-08 21:04:21 UTC (rev 3679)
@@ -9,6 +9,7 @@
 debian/tmp/usr/lib/mono/2.0/System.ServiceProcess.dll
 debian/tmp/usr/lib/mono/2.0/System.Transactions.dll
 debian/tmp/usr/lib/mono/2.0/System.Xml.dll
+debian/tmp/usr/lib/mono/2.0/System.Xml.Linq.dll
 debian/tmp/usr/lib/mono/2.0/System.dll
 debian/tmp/usr/lib/mono/gac/CustomMarshalers/2.0.0.0__*/
 debian/tmp/usr/lib/mono/gac/System.Configuration.Install/2.0.0.0__*/
@@ -21,4 +22,5 @@
 debian/tmp/usr/lib/mono/gac/System.ServiceProcess/2.0.0.0__*/
 debian/tmp/usr/lib/mono/gac/System.Transactions/2.0.0.0__*/
 debian/tmp/usr/lib/mono/gac/System.Xml/2.0.0.0__*/
+debian/tmp/usr/lib/mono/gac/System.Xml.Linq/3.5.0.0__*/
 debian/tmp/usr/lib/mono/gac/System/2.0.0.0__*/

Modified: mono/trunk/debian/patches/00list
===================================================================
--- mono/trunk/debian/patches/00list	2008-07-08 12:16:44 UTC (rev 3678)
+++ mono/trunk/debian/patches/00list	2008-07-08 21:04:21 UTC (rev 3679)
@@ -12,4 +12,6 @@
 fix_softfloat_r105848
 fix_stack_alignment_r105650_r105651
 fix_xen_support_r103474_r103475
+fix_Dictionary_preventing_GC_r102114
+fix_TdsConnectionPool_svn
 99_autoreconf

Added: mono/trunk/debian/patches/fix_Dictionary_preventing_GC_r102114.dpatch
===================================================================
--- mono/trunk/debian/patches/fix_Dictionary_preventing_GC_r102114.dpatch	                        (rev 0)
+++ mono/trunk/debian/patches/fix_Dictionary_preventing_GC_r102114.dpatch	2008-07-08 21:04:21 UTC (rev 3679)
@@ -0,0 +1,35 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## fix_Dictionary_preventing_GC_r102114.dpatch by Mirco Bauer <meebey at debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: * Dictionary.cs (Clear, Remove): Clear empty slots in keySlots 
+## DP: and valueSlots. Otherwise the garbage collector cannot reclaim 
+## DP: the referenced key/value. Fixes bug #384723.
+
+ at DPATCH@
+diff -urNad mono-1.9.1+dfsg~/mcs/class/corlib/System.Collections.Generic/Dictionary.cs mono-1.9.1+dfsg/mcs/class/corlib/System.Collections.Generic/Dictionary.cs
+--- mono-1.9.1+dfsg~/mcs/class/corlib/System.Collections.Generic/Dictionary.cs	2007-11-08 23:13:53.000000000 +0100
++++ mono-1.9.1+dfsg/mcs/class/corlib/System.Collections.Generic/Dictionary.cs	2008-07-08 14:13:04.000000000 +0200
+@@ -383,7 +383,10 @@
+ 		{
+ 			count = 0;
+ 			// clear the hash table
+-			Array.Clear(table, 0, table.Length);
++			Array.Clear (table, 0, table.Length);
++			// clear key and value arrays
++			Array.Clear (keySlots, 0, keySlots.Length);
++			Array.Clear (valueSlots, 0, valueSlots.Length);
+ 
+ 			// empty the "empty slots chain"
+ 			emptySlot = NO_SLOT;
+@@ -510,6 +513,10 @@
+ 			linkSlots [cur].Next = emptySlot;
+ 			emptySlot = cur;
+ 			
++			// clear empty key and value slots
++			keySlots [cur] = default (TKey);
++			valueSlots [cur] = default (TValue);
++
+ 			generation++;
+ 			return true;
+ 		}


Property changes on: mono/trunk/debian/patches/fix_Dictionary_preventing_GC_r102114.dpatch
___________________________________________________________________
Name: svn:executable
   + *

Added: mono/trunk/debian/patches/fix_TdsConnectionPool_svn.dpatch
===================================================================
--- mono/trunk/debian/patches/fix_TdsConnectionPool_svn.dpatch	                        (rev 0)
+++ mono/trunk/debian/patches/fix_TdsConnectionPool_svn.dpatch	2008-07-08 21:04:21 UTC (rev 3679)
@@ -0,0 +1,397 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## fix_TdsConnectionPool_r105424_r106448_107325.dpatch by Mirco Bauer <meebey at debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Backport of upstream SVN trunk to fix connection pool leaks/stalls, see:
+## DP: https://bugzilla.novell.com/show_bug.cgi?id=360157
+## DP: r105424:
+## DP: Remove unnecessary locks and code refactoring
+## DP: r105432:
+## DP: Update according to the new return type of TdsConnectionPool.GetConnectionPool()
+## DP: r105433:
+## DP: Member to keep track of pool status
+## DP: r105719:
+## DP: Do not call tds.Reset () as it is already done in the connection pool.
+## DP: r106448:
+## DP: Honor timeout and throw appropriate exception when connections are not available
+## DP: r107325:
+## DP: TdsConnectionPool.cs: When pooled connection cannot be reset, remove
+## DP: it from pool and allow slot to be re-used for a newly established
+## DP: connection. Fixes part of bug #360157. When pool is full, and no
+## DP: connection becomes available before the connect timeout has elapsed,
+## DP: then throw an InvalidOperationException instead of a SqlException.
+
+ at DPATCH@
+diff -urNad mono-1.9+dfsg~/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds.cs mono-1.9+dfsg/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds.cs
+--- mono-1.9+dfsg~/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds.cs	2008-01-29 23:04:15.000000000 +0100
++++ mono-1.9+dfsg/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds.cs	2008-07-08 21:15:49.000000000 +0200
+@@ -102,6 +102,8 @@
+ 		bool isResultRead = false;
+ 		bool LoadInProgress = false;
+ 
++		internal int poolStatus = 0;
++
+ 		#endregion // Fields
+ 
+ 		#region Properties
+diff -urNad mono-1.9+dfsg~/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsConnectionPool.cs mono-1.9+dfsg/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsConnectionPool.cs
+--- mono-1.9+dfsg~/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsConnectionPool.cs	2007-11-08 23:11:23.000000000 +0100
++++ mono-1.9+dfsg/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsConnectionPool.cs	2008-07-08 21:15:49.000000000 +0200
+@@ -3,6 +3,7 @@
+ //
+ // Author:
+ //   Lluis Sanchez Gual (lluis at ximian.com)
++//   Christian Hergert (christian.hergert at gmail.com)
+ //
+ // Copyright (C) 2004 Novell, Inc.
+ //
+@@ -28,16 +29,23 @@
+ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ //
+ 
+-using Mono.Data.Tds.Protocol;
+ using System;
++#if NET_2_0
++using System.Collections.Generic;
++#else
+ using System.Collections;
++#endif
+ using System.Threading;
+ 
+ namespace Mono.Data.Tds.Protocol 
+ {
+ 	public class TdsConnectionPoolManager
+ 	{
++#if NET_2_0
++		Dictionary <string, TdsConnectionPool> pools = new Dictionary <string, TdsConnectionPool> ();
++#else
+ 		Hashtable pools = new Hashtable ();
++#endif
+ 		TdsVersion version;
+ 		
+ 		public TdsConnectionPoolManager (TdsVersion version)
+@@ -49,7 +57,12 @@
+ 		{
+ 			lock (pools)
+ 			{
+-				TdsConnectionPool pool = (TdsConnectionPool) pools [connectionString];
++				TdsConnectionPool pool = null;
++#if NET_2_0
++				pools.TryGetValue (connectionString, out pool);
++#else
++				pool = (TdsConnectionPool) pools [connectionString];
++#endif
+ 				if (pool == null) {
+ 					pool = new TdsConnectionPool (this, info);
+ 					pools [connectionString] = pool;
+@@ -58,12 +71,13 @@
+ 			}
+ 		}
+ 		
+-		public Hashtable GetConnectionPool ()
++#if NET_2_0
++		public IDictionary <string, TdsConnectionPool> GetConnectionPool ()
++#else
++		public IDictionary GetConnectionPool ()
++#endif
+ 		{
+-			lock (pools)
+-			{
+-				return pools;
+-			}
++			return pools;
+ 		}
+ 		
+ 		public virtual ITds CreateConnection (TdsConnectionInfo info)
+@@ -102,20 +116,34 @@
+ 		public int PoolMinSize;
+ 		public int PoolMaxSize;
+ 	}
+-	
++
+ 	public class TdsConnectionPool
+ 	{
+-		ArrayList list = new ArrayList ();
++		ITds[] list;
+ 		TdsConnectionInfo info;
+-		bool initialized;
+ 		bool pooling = true;
+-		int activeConnections = 0;
+ 		TdsConnectionPoolManager manager;
+-
++		ManualResetEvent connAvailable;
++		
+ 		public TdsConnectionPool (TdsConnectionPoolManager manager, TdsConnectionInfo info)
+ 		{
++			int n = 0;
++			
+ 			this.info = info;
+ 			this.manager = manager;
++			list = new ITds[info.PoolMaxSize];
++			
++			// Placeholder for future connections are at the beginning of the array.
++			for (; n < info.PoolMaxSize - info.PoolMinSize; n++)
++				list [n] = null;
++
++			// Pre-populate with minimum number of connections
++			for (; n < list.Length; n++) {
++				list [n] = CreateConnection ();
++			}
++			
++			// Event that notifies a connection is available in the pool
++			connAvailable = new ManualResetEvent (false);
+ 		}
+ 
+ 		public bool Pooling {
+@@ -128,110 +156,118 @@
+ 		public ITds GetConnection ()
+ 		{
+ 			ITds connection = null;
+-			lock (list)
+-			{
+-				if (!initialized) 
+-				{
+-					for (int n = 0; n < info.PoolMinSize; n++)
+-						list.Add (CreateConnection ());
+-					initialized = true;
+-				}
+-				do {
+-					if (list.Count > 0)
+-					{
+-						// There are available connections
+-						connection = (ITds) list [list.Count - 1];
+-						list.RemoveAt (list.Count - 1);
++			int index;
++
++		retry:
++			// Reset the connection available event
++			connAvailable.Reset ();
++
++			index = list.Length - 1;
++			
++			do {
++				connection = list [index];
++
++				if (connection == null) {
++					// Attempt take-over of array position
++					connection = CreateConnection ();
++					(connection as Tds).poolStatus = 1;
++#if NET_2_0
++					if (Interlocked.CompareExchange<ITds> (ref list [index], connection, null) != null) {
++#else
++					if (Interlocked.CompareExchange (ref (list as object[]) [index], connection, null) != null) {
++#endif
++						// Someone beat us to the punch
++						connection = null;
++					} else {
++						continue;
++					}
++				} else {
++					if (Interlocked.CompareExchange (ref (connection as Tds).poolStatus, 1, 0) != 0) {
++						// Someone else owns this connection
++						connection = null;
++					} else {
+ 						if (!connection.Reset ()) {
+-							try {
+-								connection.Disconnect ();
+-							} catch {}
+-							connection = null;
++							ThreadPool.QueueUserWorkItem (new WaitCallback (DestroyConnection), connection);
++							// remove connection from pool
++							list [index] = connection = null;
++							// allow slot be re-used in same run
++							continue;
++						} else {
+ 							continue;
+ 						}
+ 					}
++				}
++				
++				index--;
++				
++				if (index < 0) {
++					// TODO: Maintain a list of indices of released connection to save some loop over
++					// Honor timeout - if pool is full, and no connections are available within the 
++					// timeout period - just throw the exception
++					if (info.Timeout > 0 
++						&& !connAvailable.WaitOne (new TimeSpan (0, 0, info.Timeout), true))
++							throw new InvalidOperationException (
++								"Timeout expired. The timeout period elapsed before a " +
++								"connection could be obtained. A possible explanation " +
++								"is that all the connections in the pool are in use, " +
++								"and the maximum pool size is reached.");
++					goto retry;
++				}
+ 
+-					if (connection == null && activeConnections < info.PoolMaxSize)
+-					{
+-						// No connections available, but the connection limit
+-						// has not been reached yet, so a new one can be created
+-						connection = CreateConnection();
+-					}
+-
+-					// No available connections in the pool
+-					// Wait for somewone to release one.
+-					if (connection == null)
+-					{
+-						Monitor.Wait (list);
+-					}
+-				} 
+-				while (connection == null);
+-			}
++			} while (connection == null);
+ 
+ 			return connection;
+ 		}
+ 
+-		public void ReleaseConnection (ITds tds)
++		public void ReleaseConnection (ITds connection)
+ 		{
+-			lock (list)
+-			{
+-				list.Add (tds);
+-				Monitor.Pulse (list);
+-			}
++			((Tds) connection).poolStatus = 0;
++			connAvailable.Set ();
+ 		}
+ 
+ #if NET_2_0
+-		public void ReleaseConnection (ref ITds tds)
++		public void ReleaseConnection (ref ITds connection)
+ 		{
+-			lock (list)
+-			{
+-				if (pooling == false) {
+-					try {
+-						tds.Disconnect ();
+-					} catch {}
+-					tds = null;
+-				} else {
+-					list.Add (tds);
+-					Monitor.Pulse (list);
+-				}
++			if (pooling == false) {
++				int index = Array.IndexOf (list, connection);
++				ThreadPool.QueueUserWorkItem (new WaitCallback (DestroyConnection), connection);
++				list [index] = connection = null;
++			} else {
++				((Tds) connection).poolStatus = 0;
+ 			}
++			connAvailable.Set ();
+ 		}
+ 
+ 		public void ResetConnectionPool ()
+ 		{
+-			lock (list)
++			ITds connection = null;
++			int index = list.Length - 1;
++
++			while (index >= 0)
+ 			{
+-				ITds connection = null;
+-				while (list.Count > 0) {
+-					// There are available connections
+-					connection = (ITds) list [list.Count - 1];
+-					list.RemoveAt (list.Count - 1);
++				connection = list [index];
++
++				if (Interlocked.CompareExchange (ref ((Tds) connection).poolStatus, 1, 0) == 0) {
+ 					if (!connection.Reset ()) {
+-						try {
+-							connection.Disconnect ();
+-						} catch {}
+-						connection = null;
++						ThreadPool.QueueUserWorkItem (new WaitCallback (DestroyConnection), connection);
++						list [index] = connection = null;
++						connAvailable.Set ();
+ 					}
+ 				}
++
++				index--;
+ 			}
+ 		}
+ 
+ 		public void ResetConnectionPool (ITds connection)
+ 		{
+-			lock (list)
+-			{
+-				if (list.Count > 0) {
+-					// There are available connections
+-					int index = list.IndexOf (connection);
+-					if (index != -1) {
+-						list.RemoveAt (index);
+-						if (!connection.Reset ()) {
+-							try {
+-								connection.Disconnect ();
+-							} catch {}
+-							connection = null;
+-						}
+-					}
++			int index = Array.IndexOf (list, connection);
++
++			if (index != -1) {
++				if (connection != null && !connection.Reset ()) {
++					ThreadPool.QueueUserWorkItem (new WaitCallback (DestroyConnection), connection);
++					list [index] = connection = null;
++					connAvailable.Set ();
+ 				}
+ 			}
+ 		}
+@@ -239,10 +275,21 @@
+ 		
+ 		ITds CreateConnection ()
+ 		{
+-			activeConnections++;
+ 			return manager.CreateConnection (info);
+ 		}
+ 		
++		void DestroyConnection (object state)
++		{
++			ITds connection = state as ITds;
++			if (connection != null) {
++				try {
++					connection.Disconnect ();
++				} finally {
++					connection = null;
++				}
++			}
++		}
++		
+ 		#endregion // Methods
+ 	}
+ }
+diff -urNad mono-1.9+dfsg~/mcs/class/System.Data/System.Data.SqlClient/SqlConnection.cs mono-1.9+dfsg/mcs/class/System.Data/System.Data.SqlClient/SqlConnection.cs
+--- mono-1.9+dfsg~/mcs/class/System.Data/System.Data.SqlClient/SqlConnection.cs	2007-11-08 23:13:07.000000000 +0100
++++ mono-1.9+dfsg/mcs/class/System.Data/System.Data.SqlClient/SqlConnection.cs	2008-07-08 21:16:16.000000000 +0200
+@@ -51,6 +51,9 @@
+ using System.Net.Sockets;
+ using System.Text;
+ using System.Xml;
++#if NET_2_0
++using System.Collections.Generic;
++#endif
+ 
+ namespace System.Data.SqlClient {
+ 	[DefaultEvent ("InfoMessage")]
+@@ -570,8 +573,6 @@
+ 						pool.ReleaseConnection (tds);
+ 					throw;
+ 				}
+-			} else if (connectionReset) {
+-				tds.Reset ();
+ 			}
+ 
+ 			disposed = false; // reset this, so using () would call Close ().
+@@ -1684,7 +1685,11 @@
+ 
+ 		public static void ClearAllPools ()
+ 		{
++#if NET_2_0
++			IDictionary <string, TdsConnectionPool> pools = SqlConnection.sqlConnectionPools.GetConnectionPool ();
++#else			
+ 			Hashtable pools = SqlConnection.sqlConnectionPools.GetConnectionPool ();
++#endif
+ 			foreach (TdsConnectionPool pool in pools.Values) {
+ 				if (pool != null) {
+ 					pool.ResetConnectionPool ();

Modified: mono/trunk/debian/rules
===================================================================
--- mono/trunk/debian/rules	2008-07-08 12:16:44 UTC (rev 3678)
+++ mono/trunk/debian/rules	2008-07-08 21:04:21 UTC (rev 3679)
@@ -182,6 +182,9 @@
 	   $(CURDIR)/debian/tmp/usr/share/man/man1/ilasm2.1
 	cp $(CURDIR)/debian/tmp/usr/share/man/man1/resgen.1 \
 	   $(CURDIR)/debian/tmp/usr/share/man/man1/resgen2.1
+	# move System.Xml.Linq.dll symlink to the correct directory
+	mv $(CURDIR)/debian/tmp/usr/lib/mono/3.5/System.Xml.Linq.dll \
+	   $(CURDIR)/debian/tmp/usr/lib/mono/2.0/
 	touch install-indep-stamp
 
 binary: binary-arch binary-indep
@@ -207,7 +210,7 @@
 	rm -f debian/tmp/usr/lib/mono/1.0/Mono.Mozilla.dll
 
 	# that exclude list are programs for arch-dep packages
-	dh_install -i --list-missing -Xbin/monodis -Xbin/monograph -Xbin/mono-find-provides -Xbin/mono-find-requires -Xbin/pedump -Xbin/jay
+	dh_install -i -Xbin/monodis -Xbin/monograph -Xbin/mono-find-provides -Xbin/mono-find-requires -Xbin/pedump -Xbin/jay
 
 	# Late GAC
 	install -D -m 755 debian/mono.runtime-script debian/mono-gac/usr/share/cli-common/runtimes.d/mono

Modified: mono/trunk/debian/shlibs.local
===================================================================
--- mono/trunk/debian/shlibs.local	2008-07-08 12:16:44 UTC (rev 3678)
+++ mono/trunk/debian/shlibs.local	2008-07-08 21:04:21 UTC (rev 3679)
@@ -1,9 +1,9 @@
-libMonoPosixHelper 0 libmono0 (>= 1.2.6)
-libgdiplus 0 libgdiplus (>= 1.2.6)
-libgluezilla 0 libgluezilla (>= 1.2.6)
-libcairo 2 libcairo2 (>=1.4.0)
-libfbclient 2 libfbclient2
+libMonoPosixHelper 0 libmono0 (>= 1.9.1)
+libgdiplus 0 libgdiplus (>= 1.9)
+libgluezilla 0 libgluezilla (>= 1.9)
+libcairo 2 libcairo2 (>= 1.6.0)
+libfbclient 2 libfbclient2 (>= 2.0.4)
 libsqlite 0 libsqlite0 (>= 2.8.17)
-libsqlite3 0 libsqlite3-0 (>= 3.4.2)
-libasound 2 libasound2 (>> 1.0.14)
+libsqlite3 0 libsqlite3-0 (>= 3.5.9)
+libasound 2 libasound2 (>> 1.0.16)
 libgda-2 3 libgda2-3

Modified: mono/trunk/debian/update-shlibs.local.sh
===================================================================
--- mono/trunk/debian/update-shlibs.local.sh	2008-07-08 12:16:44 UTC (rev 3678)
+++ mono/trunk/debian/update-shlibs.local.sh	2008-07-08 21:04:21 UTC (rev 3679)
@@ -1,7 +1,7 @@
 #!/bin/sh -e
 
 VERSION=$(dpkg-parsechangelog | grep ^Vers | cut -d\  -f2)
-UPVERSION=$(echo $VERSION | sed 's,-.*,,')
+UPVERSION=$(echo $VERSION | sed 's,-.*,,' | sed 's,+dfsg,,')
 
 echo -n "Updating shlibs.local for Mono $UPVERSION..."
 




More information about the Pkg-mono-svn-commits mailing list