-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Package: release.debian.org User: release.debian....@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.shie...@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.shie...@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.shie...@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 <la...@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.shie...@xamarin.com> --- The information above should follow the Patch Tagging Guidelines, please