[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#768305: marked as done (unblock: mono/3.2.8+dfsg-8 & fsharp/3.1.1.26+dfsg2-3)



Your message dated Thu, 06 Nov 2014 16:07:52 +0000
with message-id <a223303503611f843c4ad0ea4dd0d72c@hogwarts.powdarrmonkey.net>
and subject line Re: Bug#768305: unblock: mono/3.2.8+dfsg-8 & fsharp/3.1.1.26+dfsg2-3
has caused the Debian Bug report #768305,
regarding unblock: mono/3.2.8+dfsg-8 & fsharp/3.1.1.26+dfsg2-3
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
768305: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=768305
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Package: release.debian.org
User: release.debian.org@packages.debian.org
Usertags: unblock
Severity: normal

Please unblock packages mono & fsharp

This is a 2-part fix to resolve bugs 767507 and 767265 (changes were
required in both Mono and FSharp to resolve the FSharp bugs), which
both render FSharp-compiled applications unable to execute (the
interpreter still works, and the compiler still runs)

Debdiffs attached. Diffstat info:

Mono:
 changelog              |    7 +++
 mono.runtime-script    |   98
++++++++++++++++++++++++++++++++++++++++---------
 patches/debian-changes |    7 ++-
 3 files changed, 91 insertions(+), 21 deletions(-)

FSharp:
 changelog                           |   14 ++++++++++++++
 control                             |    2 +-
 fsharp.installcliframework          |    6 +++---
 libfsharp-core4.3-cil.install       |    3 ++-
 libfsharp-core4.3-cil.installcligac |    5 +++++
 5 files changed, 25 insertions(+), 5 deletions(-)

unblock mono/3.2.8+dfsg-8
unblock fsharp/3.1.1.26+dfsg2-3

- -- System Information:
Debian Release: jessie/sid
  APT prefers trusty-updates
  APT policy: (500, 'trusty-updates'), (500, 'trusty-security'), (500,
'trusty'), (100, 'trusty-backports')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.13.0-39-generic (SMP w/4 CPU cores)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJUW1n7AAoJEMkPnLkOH60MznsH/AnpTdDI/HvRLvNS01CyYD2b
NaDMZ0mvyPhGWMoGSswwDTEo4G0T/9uLjiXMRgZrClfs+p/W7KJ045kUPMMg37b8
eauDjjQLuzsHWtA8kVcSL6vBX/cYbzWmbu/tH5wNKPnRI2ZweCpsWyC0uiTItBPq
eJ8YwKxP6Lwg85wWsYfO9BfNNlv+5LmwnvTrZyfDvgjd2RHASybLSMCpu2fHSat5
VAFR4A3kS0rqhAtyMj5lBzkUUw+uia1324xEky1Ly3K5prml6jRukiVdxtSJSAVG
YKXgsOHMWiMLx6Xpi0K2yWkotuKD3rz+BxB1IQZc2rEc9Ca3C3EKbqinFj3KPYk=
=OaVi
-----END PGP SIGNATURE-----
diff -Nru fsharp-3.1.1.26+dfsg2/debian/changelog fsharp-3.1.1.26+dfsg2/debian/changelog
--- fsharp-3.1.1.26+dfsg2/debian/changelog	2014-10-15 14:44:51.000000000 +0100
+++ fsharp-3.1.1.26+dfsg2/debian/changelog	2014-11-06 10:33:13.000000000 +0000
@@ -1,3 +1,17 @@
+fsharp (3.1.1.26+dfsg2-3) unstable; urgency=medium
+
+  * [a6804b5] Install sigdata/optdata into the GAC. (Closes: #767507)
+  * [52f8ffb] Depend on Mono 3.2.8+dfsg-8 for installation, since that 
+    is the minimum version to support sigdata/optdata in the GAC.
+
+ -- Jo Shields <jo.shields@xamarin.com>  Thu, 06 Nov 2014 10:26:05 +0000
+
+fsharp (3.1.1.26+dfsg2-2) unstable; urgency=medium
+
+  * [f082a28] Ensure 4.3.0 assembly gets installed (Closes: #767265)
+
+ -- Jo Shields <jo.shields@xamarin.com>  Fri, 31 Oct 2014 12:55:19 +0000
+
 fsharp (3.1.1.26+dfsg2-1) unstable; urgency=medium
 
   * [f28700d] Actually delete unneeded binaries from +dfsg.orig.tar.gz
diff -Nru fsharp-3.1.1.26+dfsg2/debian/control fsharp-3.1.1.26+dfsg2/debian/control
--- fsharp-3.1.1.26+dfsg2/debian/control	2014-10-15 09:45:49.000000000 +0100
+++ fsharp-3.1.1.26+dfsg2/debian/control	2014-11-06 10:33:13.000000000 +0000
@@ -34,7 +34,7 @@
   ${cli:Depends},
   ${shlibs:Depends},
   ${misc:Depends},
-  mono-runtime-common | mono-runtime,
+  mono-runtime-common (>= 3.2.8+dfsg-8~) | mono-runtime (>= 3.2.8+dfsg-8~),
 Description: functional-first programming language - core runtime library
  F# is a multi-paradigm programming language, supporting functional,
  imperative, and object-oriented structures.
diff -Nru fsharp-3.1.1.26+dfsg2/debian/fsharp.installcliframework fsharp-3.1.1.26+dfsg2/debian/fsharp.installcliframework
--- fsharp-3.1.1.26+dfsg2/debian/fsharp.installcliframework	2014-10-14 19:26:02.000000000 +0100
+++ fsharp-3.1.1.26+dfsg2/debian/fsharp.installcliframework	2014-10-31 12:54:12.000000000 +0000
@@ -1,7 +1,7 @@
 # Core library
-40 /usr/lib/cli/FSharp.Core-4.3/FSharp.Core.dll
-40 /usr/lib/cli/FSharp.Core-4.3/FSharp.Core.sigdata
-40 /usr/lib/cli/FSharp.Core-4.3/FSharp.Core.optdata
+40 /usr/lib/cli/FSharp.Core-4.3/4.0/FSharp.Core.dll
+40 /usr/lib/cli/FSharp.Core-4.3/4.0/FSharp.Core.sigdata
+40 /usr/lib/cli/FSharp.Core-4.3/4.0/FSharp.Core.optdata
 
 45 /usr/lib/cli/FSharp.Core-4.3/FSharp.Core.dll
 45 /usr/lib/cli/FSharp.Core-4.3/FSharp.Core.sigdata
diff -Nru fsharp-3.1.1.26+dfsg2/debian/libfsharp-core4.3-cil.install fsharp-3.1.1.26+dfsg2/debian/libfsharp-core4.3-cil.install
--- fsharp-3.1.1.26+dfsg2/debian/libfsharp-core4.3-cil.install	2014-10-14 19:26:02.000000000 +0100
+++ fsharp-3.1.1.26+dfsg2/debian/libfsharp-core4.3-cil.install	2014-10-31 12:53:45.000000000 +0000
@@ -1,2 +1,3 @@
-usr/lib/mono/gac/FSharp.Core/4.3*/*       /usr/lib/cli/FSharp.Core-4.3
+usr/lib/mono/gac/FSharp.Core/4.3.0.*/*       /usr/lib/cli/FSharp.Core-4.3/4.0/
+usr/lib/mono/gac/FSharp.Core/4.3.1.*/*       /usr/lib/cli/FSharp.Core-4.3/
 usr/lib/mono/gac/policy.*.FSharp.Core/*   /usr/lib/cli/FSharp.Core-4.3     
diff -Nru fsharp-3.1.1.26+dfsg2/debian/libfsharp-core4.3-cil.installcligac fsharp-3.1.1.26+dfsg2/debian/libfsharp-core4.3-cil.installcligac
--- fsharp-3.1.1.26+dfsg2/debian/libfsharp-core4.3-cil.installcligac	2014-10-14 19:26:02.000000000 +0100
+++ fsharp-3.1.1.26+dfsg2/debian/libfsharp-core4.3-cil.installcligac	2014-11-06 10:24:58.000000000 +0000
@@ -1,4 +1,9 @@
 /usr/lib/cli/FSharp.Core-4.3/FSharp.Core.dll
+/usr/lib/cli/FSharp.Core-4.3/FSharp.Core.sigdata
+/usr/lib/cli/FSharp.Core-4.3/FSharp.Core.optdata
+/usr/lib/cli/FSharp.Core-4.3/4.0/FSharp.Core.dll
+/usr/lib/cli/FSharp.Core-4.3/4.0/FSharp.Core.sigdata
+/usr/lib/cli/FSharp.Core-4.3/4.0/FSharp.Core.optdata
 /usr/lib/cli/FSharp.Core-4.3/0.0.0.0__b03f5f7f11d50a3a/policy.2.0.FSharp.Core.dll
 /usr/lib/cli/FSharp.Core-4.3/0.0.0.0__b03f5f7f11d50a3a/policy.2.3.FSharp.Core.dll
 /usr/lib/cli/FSharp.Core-4.3/0.0.0.0__b03f5f7f11d50a3a/policy.4.0.FSharp.Core.dll
diff -Nru mono-3.2.8+dfsg/debian/changelog mono-3.2.8+dfsg/debian/changelog
--- mono-3.2.8+dfsg/debian/changelog	2014-07-10 11:19:47.000000000 +0100
+++ mono-3.2.8+dfsg/debian/changelog	2014-11-05 11:45:24.000000000 +0000
@@ -1,3 +1,10 @@
+mono (3.2.8+dfsg-8) unstable; urgency=medium
+
+  * [835c4ca] Add support for non-assembly files installed to the GAC. 
+    This is the first half of a fix to bug #767507.
+
+ -- Jo Shields <jo.shields@xamarin.com>  Wed, 05 Nov 2014 11:44:40 +0000
+
 mono (3.2.8+dfsg-7) unstable; urgency=medium
 
   * [10016c2] Build libmono-2.0-1 and libmono-2.0-dev for mipsel
diff -Nru mono-3.2.8+dfsg/debian/mono.runtime-script mono-3.2.8+dfsg/debian/mono.runtime-script
--- mono-3.2.8+dfsg/debian/mono.runtime-script	2014-07-10 11:19:47.000000000 +0100
+++ mono-3.2.8+dfsg/debian/mono.runtime-script	2014-11-05 11:25:09.000000000 +0000
@@ -12,6 +12,8 @@
 # Figure out the mode
 my $mode = shift @ARGV;
 
+my $framework_prefix = "/usr/lib/mono";
+
 if (!defined $mode)
 {
     print STDERR "E: You must supply a mode\n";
@@ -36,7 +38,6 @@
 # the (framework version×10, full path) pairs
 if ($mode eq "install-framework")
 {
-    my $framework_prefix = "/usr/lib/mono";
     # TODO: We could detect this ourselves
     my %runtime_versions = (20 => "$framework_prefix/2.0",
 			    35 => "$framework_prefix/3.5",
@@ -130,10 +131,44 @@
 	{
 		my $assembly = $_;
 		chomp($assembly);
-		my $cmd = "/usr/bin/gacutil -u $assembly > /dev/null";
-		my $res = system($cmd);
-		if ($res > 0) {
+		# The uninstall file can contain two formats - full paths to non-assembly entries
+		# (i.e. FSharp sigdata/optdata files), or assembly signature stuff in the format
+		# "name, Version=x.x.x.x, Culture=neutral, PublicKeyToken=yyyyyyyyyyyyy"
+		#
+		# We can switch behaviour, based on whether it is a path or not (if it is a path,
+		# it has a leading /)
+		#
+		# If it's not a path, pass the entry to gacutil to uninstall
+		if ($assembly !~ /^\//)
+		{
+		    my $cmd = "/usr/bin/gacutil -u $assembly > /dev/null";
+		    my $res = system($cmd);
+		    if ($res > 0) {
 			print STDERR "W: removing assembly: $assembly failed!\n";
+		    }
+		}
+		# If it is a path, unlink.
+		#
+		# This is often not actually needed - if a parent assembly is uninstalled
+		# from the GAC, the sigdata/optdata files are cleaned automatically
+		#
+		# We manually unlink if these files are specifically named anyway, in case
+		# we ever want to keep companion files in different packages (where they would
+		# not be uninstalled by the same GAC cleaning run)
+		else
+		{
+		    # Definitely a link, unlink it please
+		    if (-l "$assembly")
+		    {
+			unlink $assembly;
+		    }
+		    # The file exists, but is not a link, which means we didn't put it
+		    # there, so panic!
+		    elsif (-f "$assembly")
+		    {
+			print STDERR "W: removing non-assembly file: $assembly failed!\n";
+		    }
+		    # If the file doesn't exist, we do nothing - we don't WANT it to exist
 		}
 	}
 
@@ -175,20 +210,47 @@
 	exit 1;
     }	
     
-    # Figure out the mono's precise name
-    my $fullname = get_full_name($dll);
-    
-    # Write out the uninstall file
-    print UNINSTALL "$fullname\n";
-    
-    # Install the file. We use the "../../../.." to make it a
-    # relative path to this program (since gacutil doesn't like
-    # absolute paths). There isn't a problem of doing too many
-    # since we typically run from the root context.
-    my $cmd = "(cd `dirname $dll` && "
-    	. "/usr/bin/gacutil -i `basename $dll`"
-	   . " > /dev/null)";
-    system($cmd) == 0 or die "E: installing Assembly $dll failed\n";
+    # Split the provided assembly path into its components - folder, basename, and suffix.
+    # All three are useful
+    my($assemblyfilename, $assemblypath, $assemblysuffix) = (fileparse($dll, qr/\.[^.]*/));
+
+    # If the suffix is .dll, assume this is a simple CLI assembly, and use gacutil for
+    # processing
+    if (( $assemblysuffix eq ".dll" ) || ( $assemblysuffix eq ".exe" ))
+    {
+	# Figure out the mono's precise name
+	my $fullname = get_full_name($dll);
+
+	# Write out the uninstall file
+	print UNINSTALL "$fullname\n";
+
+	# Install the file. We use the "../../../.." to make it a
+	# relative path to this program (since gacutil doesn't like
+	# absolute paths). There isn't a problem of doing too many
+	# since we typically run from the root context.
+	my $cmd = "(cd `dirname $dll` && "
+	    . "/usr/bin/gacutil -i `basename $dll`"
+	    . " > /dev/null)";
+	system($cmd) == 0 or die "E: installing Assembly $dll failed\n";
+    }
+    else
+    {
+	# If the extension is not .dll, this is some other file format (e.g. FSharp
+	# sigdata/optdata) and we cannot use gacutil.
+	#
+	# First, we determine the path of the assembly which accompanies this data file
+	my $parentassembly = "$assemblypath$assemblyfilename.dll";
+	# Then extract the assembly information from this "parent" assembly, such as the
+	# version and signing token
+	my $fullname = get_full_name($parentassembly);
+	my($parentname, $parentver, $parentculture, $parenttoken) = split(/, [a-zA-z]*=/, $fullname);
+	# And finally, we construct a path to where we know Mono will GAC-install the
+	# parent assembly, and put a symlink in there
+	my $targetpath = "$framework_prefix/gac/$parentname/$parentver\__$parenttoken/$assemblyfilename$assemblysuffix";
+	symlink($dll, $targetpath);
+	# And write the path to the symlink into the uninstall file
+	print UNINSTALL "$targetpath\n";
+    }
 }
 
 close CLIGAC;
diff -Nru mono-3.2.8+dfsg/debian/patches/debian-changes mono-3.2.8+dfsg/debian/patches/debian-changes
--- mono-3.2.8+dfsg/debian/patches/debian-changes	2014-07-10 11:20:24.000000000 +0100
+++ mono-3.2.8+dfsg/debian/patches/debian-changes	2014-11-05 11:48:58.000000000 +0000
@@ -5,10 +5,11 @@
  information below has been extracted from the changelog. Adjust it or drop
  it.
  .
- mono (3.2.8+dfsg-7) unstable; urgency=medium
+ mono (3.2.8+dfsg-8) unstable; urgency=medium
  .
-   * [10016c2] Build libmono-2.0-1 and libmono-2.0-dev for mipsel
-Author: Iain Lane <laney@debian.org>
+   * [835c4ca] Add support for non-assembly files installed to the GAC.
+     This is the first half of a fix to bug #767507.
+Author: Jo Shields <jo.shields@xamarin.com>
 
 ---
 The information above should follow the Patch Tagging Guidelines, please

--- End Message ---
--- Begin Message ---
On 2014-11-06 11:22, Jo Shields wrote:
Please unblock packages mono & fsharp

This is a 2-part fix to resolve bugs 767507 and 767265 (changes were
required in both Mono and FSharp to resolve the FSharp bugs), which
both render FSharp-compiled applications unable to execute (the
interpreter still works, and the compiler still runs)

Unblocked, thanks.

--
Jonathan Wiltshire                                      jmw@debian.org
Debian Developer                         http://people.debian.org/~jmw

4096R: 0xD3524C51 / 0A55 B7C5 1223 3942 86EC  74C3 5394 479D D352 4C51

<directhex> i have six years of solaris sysadmin experience, from
            8->10. i am well qualified to say it is made from bonghits
			layered on top of bonghits

--- End Message ---

Reply to: