[Pkg-mono-svn-commits] rev 2718 - in mono/trunk/debian: . patches
Mirco Bauer
meebey-guest at costa.debian.org
Sun Sep 17 10:47:47 UTC 2006
Author: meebey-guest
Date: 2006-09-17 10:47:46 +0000 (Sun, 17 Sep 2006)
New Revision: 2718
Added:
mono/trunk/debian/libmono-system1.0-cil.clideps-override
mono/trunk/debian/libmono-system2.0-cil.clideps-override
mono/trunk/debian/libmono-winforms1.0-cil.clideps-override
mono/trunk/debian/libmono-winforms2.0-cil.clideps-override
mono/trunk/debian/patches/arm_support_larger_stack_r65218.dpatch
Modified:
mono/trunk/debian/changelog
mono/trunk/debian/control
mono/trunk/debian/dh_clideps
mono/trunk/debian/mono-common.postinst
mono/trunk/debian/patches/00list
mono/trunk/debian/rules
mono/trunk/debian/shlibs.local
Log:
- Mono 1.1.17.1-3 release, contains a lot of love! (specially dh_clideps)
Modified: mono/trunk/debian/changelog
===================================================================
--- mono/trunk/debian/changelog 2006-09-16 17:17:27 UTC (rev 2717)
+++ mono/trunk/debian/changelog 2006-09-17 10:47:46 UTC (rev 2718)
@@ -1,3 +1,33 @@
+mono (1.1.17.1-3) unstable; urgency=high
+
+ * Mirco 'meebey' Bauer:
+ + debian/patches/arm_support_larger_stack_r65218.dpatch:
+ - Should fix ARM FTBFS, taken from upstream SVN, thus urgency=medium.
+ + debian/dh_clideps:
+ - Synced from cli-common package, contains bugfix for dependencies on
+ libmono0 and other packages.
+ + debian/control:
+ - Added "Suggests: ${cli:Suggests}" to libmono-system{1,2}.0-cil and
+ libmono-winforms{1,2}.0-cil.
+ - Added libxml-dom-perl to build-deps (needed by debian/dh_clideps)
+ + libmono-system2.0-cil.clideps-override
+ libmono-winforms1.0-cil.clideps-override
+ libmono-system1.0-cil.clideps-override
+ libmono-winforms2.0-cil.clideps-override:
+ - Added, used to override specific Depends to Suggests for assembly
+ references.
+ + debian/shlibs.local:
+ - Updated
+ + debian/mono-common.postinst:
+ - Removed old /usr/share/dotnet/mono to /usr/lib/mono transition code.
+ - Added removal of unneeded /usr/share/dotnet/mono symlink.
+ (Closes: #387277)
+ + debian/rules:
+ - Honor noopt in DEB_BUILD_OPTIONS.
+ (thanks to Timo Lindfors <lindi at kurp.hut.fi>, Closes: #380617)
+
+ -- Debian Mono Group <pkg-mono-group at lists.alioth.debian.org> Mon, 4 Sep 2006 22:44:55 +0200
+
mono (1.1.17.1-2) unstable; urgency=high
* Mirco 'meebey' Bauer:
Modified: mono/trunk/debian/control
===================================================================
--- mono/trunk/debian/control 2006-09-16 17:17:27 UTC (rev 2717)
+++ mono/trunk/debian/control 2006-09-17 10:47:46 UTC (rev 2718)
@@ -3,7 +3,7 @@
Priority: optional
Maintainer: Debian Mono Group <pkg-mono-group at lists.alioth.debian.org>
Uploaders: Eduard Bloch <blade at debian.org>, Mirco Bauer <meebey at meebey.net>, Sebastian Dröge <slomo at ubuntu.com>
-Build-Depends: debhelper (>= 5.0.0), libglib2.0-dev (>= 2.4), bison, libtool, dpatch, libxslt1-dev, dc, libx11-dev, libxt-dev, libgc-dev [kfreebsd-i386]
+Build-Depends: debhelper (>= 5.0.0), libglib2.0-dev (>= 2.4), bison, libtool, dpatch, libxml-dom-perl, libxslt1-dev, dc, libx11-dev, libxt-dev, libgc-dev [kfreebsd-i386]
Standards-Version: 3.7.2
Package: mono-common
@@ -231,6 +231,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)
+Suggests: ${cli:Suggests}
Depends: ${cli:Depends}
Description: Mono System libraries (1.0)
Mono is a platform for running and developing applications based on the
@@ -245,6 +246,7 @@
Section: libs
Architecture: all
Replaces: mono-classlib-2.0 (<< 1.1.13.6-1), mono-classlib-2.0-dbg (<< 1.1.13.6-1)
+Suggests: ${cli:Suggests}
Depends: ${cli:Depends}
Description: Mono System libraries (2.0)
Mono is a platform for running and developing applications based on the
@@ -455,6 +457,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)
+Suggests: ${cli:Suggests}
Depends: ${cli:Depends}
Description: Mono System.Windows.Forms library
Mono is a platform for running and developing applications based on the
@@ -469,6 +472,7 @@
Section: libs
Architecture: all
Replaces: mono-classlib-2.0 (<< 1.1.13.6-1), mono-classlib-2.0-dbg (<< 1.1.13.6-1)
+Suggests: ${cli:Suggests}
Depends: ${cli:Depends}
Description: Mono System.Windows.Forms library
Mono is a platform for running and developing applications based on the
Modified: mono/trunk/debian/dh_clideps
===================================================================
--- mono/trunk/debian/dh_clideps 2006-09-16 17:17:27 UTC (rev 2717)
+++ mono/trunk/debian/dh_clideps 2006-09-17 10:47:46 UTC (rev 2718)
@@ -66,7 +66,7 @@
my $cli = '/usr/bin/cli';
my $cli_version = `$cli --version 2>&1`;
my $cli_parser;
-my $pwd=`pwd`;
+my $pwd = `pwd`;
chomp $pwd;
if (defined($ARGV[0]) && $ARGV[0] eq "internal-mono") {
@@ -123,24 +123,45 @@
}
my $fh;
-my %libdata;
+
+verbose_print("Loading clilibs...");
+my %clilibdata;
open($fh, "cat /var/lib/dpkg/info/*.clilibs debian/*/DEBIAN/clilibs 2> /dev/null |");
while (<$fh>) {
/(\S+)\s+(\S+)\s+(\w.*)\n?/;
- $libdata{"$1/$2"} = $3;
+ $clilibdata{"$1/$2"} = $3;
}
+close($fh);
+
+verbose_print("Loading shlibs...");
my %shlibdata;
+open($fh, "cat /var/lib/dpkg/info/*.shlibs $pwd/debian/shlibs.local $pwd/debian/*/DEBIAN/shlibs 2> /dev/null |");
+while (<$fh>) {
+ /(\S+)\s+(\S+)\s+(\w.*)\n?/;
+ my ($soname, $soversion, $dependency);
+ #chomp;
+ #my($soname, $soversion, $dependency) = split(/\s+/, $_, 3);
+ $soname = $1;
+ $soversion = $2;
+ $dependency = $3;
+ $shlibdata{"$soname.so.$soversion"} = $dependency;
+}
+close($fh);
foreach my $package (@{$dh{DOPACKAGES}}) {
my $tmp = tmpdir($package);
- my %deps;
- my @depkgs;
+ my %refs = ( depends => [],
+ recommends => [],
+ suggests => [] );
my $found_exe = 0;
my $needs_net_1_0 = 0;
my $needs_net_2_0 = 0;
- delsubstvar($package, "cli:Depends"); # for idempotency
+ # for idempotency
+ delsubstvar($package, "cli:Depends");
+ delsubstvar($package, "cli:Suggests");
+ delsubstvar($package, "cli:Recommends");
# find binaries
find (sub {
@@ -150,6 +171,14 @@
if (/\.exe$/) {
$found_exe = 1;
}
+
+ verbose_print("Package: $package Assembly: $file");
+
+ my %shlibRefs = resolveShlibRefs($package, $file);
+ push(@{$refs{depends}}, @{$shlibRefs{depends}});
+ push(@{$refs{recommends}}, @{$shlibRefs{recommends}});
+ push(@{$refs{suggests}}, @{$shlibRefs{suggests}});
+
my (undef, $tmpfile) = File::Temp::tempfile("/tmp/".basename($0).".XXXX", UNLINK => 1);
my $command = "LANG=C $cli_parser --assemblyref $file 2>&1 > $tmpfile";
@@ -167,9 +196,6 @@
return;
}
- if (my $extra = extraDeps($file)) {
- push(@depkgs, $extra);
- }
our($vers, $name, $key);
local *F;
open(F, $tmpfile);
@@ -185,10 +211,10 @@
$key =~ s/\ //g;
$key = $vers . "__" . lc($key);
my $compat = "$name/$key";
- if (!defined($libdata{$compat})) {
+ if (!defined($clilibdata{$compat})) {
warning("Warning: No Debian dependency data for $name ($key)!");
} else {
- push(@depkgs, $libdata{$compat});
+ push(@{$refs{depends}}, $clilibdata{$compat});
}
#print "ok, ".$deps{ "$name/$vers" . "__" . lc($key) };
@@ -208,100 +234,222 @@
close(F);
}, $tmp);
- my %depkgsFiltered;
- for (@depkgs) {
- for (split(/\s*,\s*/, $_ )) {
- # filter dupes and don't depend on this package
- /^(\S+)/;
- if ($1 ne $package) {
- $depkgsFiltered{$_} = 1;
- }
- }
- }
-
- # now filter the dupes coming from shlibs
- if (defined($dh{D_FLAG})) {
- if (open($fh, "< $pwd/debian/$package.substvars" )) {
- while (<$fh>) {
- if (/^shlibs:Depends=(.*)\n?/) {
- for (split(/\s*,\s*/, $1)) {
- delete $depkgsFiltered{$_};
- }
- }
- }
- } else {
- verbose_print("Could not read $pwd/debian/$package.substvars");
- }
- }
+ $refs{depends} = filterDuplicates($package, $refs{depends});
+ $refs{recommends} = filterDuplicates($package, $refs{recommends});
+ $refs{suggests} = filterDuplicates($package, $refs{suggests});
- my $deps;
+ my $vm_ref = "";
if (!defined($dh{R_FLAG}) && $found_exe) {
if ($clr eq "mono") {
if ($needs_net_2_0) {
- $deps = "mono-runtime (>= 1.1.8.1)";
+ $vm_ref = "mono-runtime (>= 1.1.8.1), ";
} elsif ($needs_net_1_0) {
- $deps = "mono-runtime (>= 1.0)";
+ $vm_ref = "mono-runtime (>= 1.0), ";
} else {
- $deps = "mono-runtime (>= $cli_version)";
+ $vm_ref = "mono-runtime (>= $cli_version), ";
}
} elsif ($clr eq "pnet") {
- $deps = "pnet-interpreter (>= $cli_version)";
+ $vm_ref = "pnet-interpreter (>= $cli_version), ";
}
}
if (-f "$tmp/usr/share/cli-common/packages.d/$package.installcligac") {
- $deps .= ", " if defined $deps && $deps ne '';
- $deps .= "cli-common (>= 0.4.0)";
+ $vm_ref .= "cli-common (>= 0.4.0), ";
}
- $deps .= join(", ", "",
- sort {
- # beautify the sort order, requested by meebey
- my $apkg;
- $a =~ /^\S+/;
- $apkg=$&;
- $b =~ /^\S+/;
- if($apkg eq $&) {
- return -1 if( ($a=~/>=/) && ($b=~/<</));
- return 1 if( ($b=~/>=/) && ($a=~/<</));
- }
- $a cmp $b;
- } (keys %depkgsFiltered)
- );
+ #$deps .= join(", ", "",
+ # sort {
+ # # beautify the sort order, requested by meebey
+ # my $apkg;
+ # $a =~ /^\S+/;
+ # $apkg=$&;
+ # $b =~ /^\S+/;
+ # if($apkg eq $&) {
+ # return -1 if( ($a=~/>=/) && ($b=~/<</));
+ # return 1 if( ($b=~/>=/) && ($a=~/<</));
+ # }
+ # $a cmp $b;
+ # } (keys %depkgsFiltered)
+ #);
+
+ @{$refs{depends}} = sort(@{$refs{depends}});
+ @{$refs{recommends}} = sort(@{$refs{recommends}});
+ @{$refs{suggests}} = sort(@{$refs{suggests}});
- addsubstvar($package, "cli:Depends", $deps);
+ addsubstvar($package, "cli:Depends", $vm_ref . join(", ", @{$refs{depends}}));
+ addsubstvar($package, "cli:Recommends", join(", ", @{$refs{recommends}}));
+ addsubstvar($package, "cli:Suggests", join(", ", @{$refs{suggests}}));
}
-sub extraDeps {
- my $config=$_[0].".config";
- return undef if (! -r $config);
- my $ret=undef;
+sub filterDuplicates {
+ my $package = shift;
+ my $packages = shift;
+
+ my %packagesFiltered;
+ for (@{$packages}) {
+ # filter dupes and don't depend on this package
+ /^(\S+)/;
+ if ($1 ne $package) {
+ $packagesFiltered{$_} = 1;
+ }
+ }
- if (!%shlibdata) {
- open($fh, "cat /var/lib/dpkg/info/*.shlibs $pwd/debian/shlibs.local $pwd/debian/*/DEBIAN/shlibs 2>/dev/null |");
+ # now filter the dupes coming from shlibs
+ if (defined($dh{D_FLAG})) {
+ my $fh;
+ if (open($fh, "< $pwd/debian/$package.substvars" )) {
while (<$fh>) {
- /(\S+)\s+(\S+)\s+(\w.*)\n?/;
- my ($soname, $soversion, $dependency);
- #chomp;
- #my($soname, $soversion, $dependency) = split(/\s+/, $_, 3);
- $soname = $1;
- $soversion = $2;
- $dependency = $3;
- $shlibdata{"$soname.so.$soversion"} = $dependency;
+ if (/^shlibs:Depends=(.*)\n?/) {
+ for (split(/\s*,\s*/, $1)) {
+ delete $packagesFiltered{$_};
+ }
+ }
}
+ close($fh);
+ } else {
+ verbose_print("Could not read $pwd/debian/$package.substvars");
+ }
+ }
+
+ return [ keys %packagesFiltered ];
+}
+
+sub loadDllMap {
+ my $filename = shift;
+ our $dllmapdata = shift;
+ if (!-f $filename) {
+ verbose_print("loadDllMap(): DLL map $filename not found, ignoring...");
+ return;
}
+
+ use XML::DOM;
+ my $parser = new XML::DOM::Parser;
+ my $doc = $parser->parsefile($filename, whitespace => 'strip');
+ my $root = $doc->getDocumentElement();
+ my @mapentries = $root->getElementsByTagName("dllmap");
+ foreach my $mapentry (@mapentries) {
+ my $dll = $mapentry->getAttribute("dll");
+ my $target = $mapentry->getAttribute("target");
+ #verbose_print("DLL map: '$dll' target: '$target'");
+ $dllmapdata->{$dll} = $target;
+ }
+}
- $config = `cat $config`;
- while ($config =~ s/\Wtarget\W*=\W*(\w[\w.\-\d]+\.so\.\d+)//) {
- verbose_print("found $config: '$1'");
- if (defined($shlibdata{$1})) {
- $ret .= ", ".$shlibdata{$1};
+sub resolveShlibRefs {
+ my $package = shift;
+ my $assembly_filename = shift;
+ my $config_filename = $assembly_filename.".config";
+ my %ret = ( depends => [],
+ recommends => [],
+ suggests => [] );
+ if (-r $config_filename) {
+ verbose_print("Found DLL map: $config_filename");
+ } else {
+ verbose_print("Found no specific DLL map, but resolving modulerefs anyway");
+ }
+
+ # load dll maps
+ verbose_print("Loading DLL maps for: $assembly_filename...");
+ my %dllmapdata;
+ loadDllMap("/etc/mono/config", \%dllmapdata);
+ loadDllMap("$pwd/debian/tmp/etc/mono/config", \%dllmapdata);
+ loadDllMap($config_filename, \%dllmapdata);
+
+ # load clideps overrides
+ verbose_print("Loading clideps-override...");
+ my %clideps_override;
+ open($fh, "cat $pwd/debian/$package.clideps-override 2> /dev/null |");
+ while (<$fh>) {
+ /(\S+)\s+(\S+)(?:\s+(\(\S+\s+\S+\)))?\n?/;
+ my ($type, $package, $version);
+ $type = $1;
+ $package = $2;
+ $version = $3 if defined($3);
+ if ($version) {
+ $clideps_override{$package} = $type." ".$version;
+ } else {
+ $clideps_override{$package} = $type;
+ }
+ }
+ close($fh);
+
+ # parse modulerefs
+ my (undef, $tmpfile) = File::Temp::tempfile("/tmp/".basename($0).".XXXX", UNLINK => 1);
+ my $command = "LANG=C $cli_parser --moduleref $assembly_filename 2>&1 > $tmpfile";
+
+ system($command);
+ if ($?) {
+ my $output;
+ {
+ local *F;
+ open(F, $tmpfile);
+ local $/;
+ $output = <F>;
+ close(F);
+ }
+ error("cli_parser call failed: '".$command."' rc: $? output: $output");
+ return;
+ }
+
+ local *F;
+ open(F, $tmpfile);
+ while (<F>) {
+ my $name = $1 if /\d+:\s+(.*)\n/;
+ if (!defined($name)) {
+ next;
+ }
+ my $target = $dllmapdata{$name};
+
+ if (defined($target)) {
+ verbose_print("Resolved moduleref via DLL map: $name to: $target");
+ } elsif (defined($shlibdata{$name})) {
+ verbose_print("Resolved moduleref via direct match in shlibs");
+ } else {
+ warning("Warning: Could not resolve moduleref: $name for: $assembly_filename!");
+ next;
+ }
+
+ my $pkgref;
+ if (defined($target) && defined($shlibdata{$target})) {
+ $pkgref = $shlibdata{$target};
+ } elsif (defined($shlibdata{$name})) {
+ $pkgref = $shlibdata{$name};
+ } elsif (defined($target) && defined($shlibdata{$target.".0"})) {
+ # for DLL maps that have an unversioned library as target
+ $pkgref = $shlibdata{$target.".0"};
+ } else {
+ warning("Warning: Missing shlibs entry: $target or $name for: $assembly_filename!");
+ next;
+ }
+
+ my $type = "depends";
+ my $pkg = $pkgref;
+ $pkgref =~ m/(\S+)(?:\s+(\(\S+\s+\S+\)))?/;
+ my $pkgname = $1;
+ if (defined($clideps_override{$pkgname})) {
+ verbose_print("Found clideps-overidde: $pkgname for: $package");
+
+ my $override = $clideps_override{$pkgname};
+ $override =~ m/(\S+)(?:\s+(\(\S+\s+\S+\)))?/;
+ if ($1 eq "suggests" ||
+ $1 eq "recommends") {
+ $type = $1;
+ } elsif ($1 eq "ignores") {
} else {
- warning("Warning: Missing shlibs entry for $1!");
+ warning("Warning: unknown override type: $1 in: '$override' for: $package!");
}
- }
- $ret =~ s/^, // if $ret;
- return $ret;
+
+ if (defined($2)) {
+ $pkg = "$pkgname $2";
+ } else {
+ $pkg = $pkgref;
+ }
+ }
+ push(@{$ret{$type}}, $pkg);
+ }
+ close(F);
+
+ return %ret;
}
=head1 SEE ALSO
Added: mono/trunk/debian/libmono-system1.0-cil.clideps-override
===================================================================
--- mono/trunk/debian/libmono-system1.0-cil.clideps-override (rev 0)
+++ mono/trunk/debian/libmono-system1.0-cil.clideps-override 2006-09-17 10:47:46 UTC (rev 2718)
@@ -0,0 +1,3 @@
+suggests libfam0
+suggests libgamin0
+suggests libx11-6
Added: mono/trunk/debian/libmono-system2.0-cil.clideps-override
===================================================================
--- mono/trunk/debian/libmono-system2.0-cil.clideps-override (rev 0)
+++ mono/trunk/debian/libmono-system2.0-cil.clideps-override 2006-09-17 10:47:46 UTC (rev 2718)
@@ -0,0 +1,3 @@
+suggests libfam0
+suggests libgamin0
+suggests libx11-6
\ No newline at end of file
Added: mono/trunk/debian/libmono-winforms1.0-cil.clideps-override
===================================================================
--- mono/trunk/debian/libmono-winforms1.0-cil.clideps-override (rev 0)
+++ mono/trunk/debian/libmono-winforms1.0-cil.clideps-override 2006-09-17 10:47:46 UTC (rev 2718)
@@ -0,0 +1 @@
+suggests libgtk2.0-0
Added: mono/trunk/debian/libmono-winforms2.0-cil.clideps-override
===================================================================
--- mono/trunk/debian/libmono-winforms2.0-cil.clideps-override (rev 0)
+++ mono/trunk/debian/libmono-winforms2.0-cil.clideps-override 2006-09-17 10:47:46 UTC (rev 2718)
@@ -0,0 +1 @@
+suggests libgtk2.0-0
Modified: mono/trunk/debian/mono-common.postinst
===================================================================
--- mono/trunk/debian/mono-common.postinst 2006-09-16 17:17:27 UTC (rev 2717)
+++ mono/trunk/debian/mono-common.postinst 2006-09-17 10:47:46 UTC (rev 2718)
@@ -4,25 +4,9 @@
/usr/sbin/update-binfmts --import cli
fi
-if [ configure = "$1" ] && [ -d /usr/share/dotnet/mono/ ] && ! [ -L /usr/share/dotnet/mono ]; then
- if [ -L /usr/lib/mono ]; then
- # it's a symlink
- rm /usr/lib/mono
- fi
- if ! ( mkdir -p /usr/lib/mono && cp -af /usr/share/dotnet/mono/. /usr/lib/mono/ ); then
- # unwind in case of error
- rm -rf /usr/lib/mono
- ln -s ../share/dotnet/mono /usr/lib/mono
- exit 1
- fi
- rm -rf /usr/share/dotnet/mono
- ln -s ../../lib/mono /usr/share/dotnet/mono
+if [ configure = "$1" ] && [ -d /usr/share/dotnet/mono/ ] && [ -L /usr/share/dotnet/mono ]; then
+ # it's a symlink
+ rm /usr/share/dotnet/mono
fi
-if [ configure = "$1" ] && ! [ -L /usr/share/dotnet/mono ]; then
- # it's not a symlink
- mkdir -p /usr/share/dotnet
- ln -s ../../lib/mono /usr/share/dotnet/mono
-fi
-
#DEBHELPER#
Modified: mono/trunk/debian/patches/00list
===================================================================
--- mono/trunk/debian/patches/00list 2006-09-16 17:17:27 UTC (rev 2717)
+++ mono/trunk/debian/patches/00list 2006-09-17 10:47:46 UTC (rev 2718)
@@ -1,2 +1,4 @@
remove_broken_dllmap_from_mono-shlib-cop.dpatch
console-no-utf8-bom.dpatch
+arm_support_larger_stack_r65218.dpatch
+
Added: mono/trunk/debian/patches/arm_support_larger_stack_r65218.dpatch
===================================================================
--- mono/trunk/debian/patches/arm_support_larger_stack_r65218.dpatch (rev 0)
+++ mono/trunk/debian/patches/arm_support_larger_stack_r65218.dpatch 2006-09-17 10:47:46 UTC (rev 2718)
@@ -0,0 +1,89 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## arm_support_larger_stack_r65218.dpatch by Mirco Bauer <meebey at meebey.net>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+ at DPATCH@
+diff -urNad mono-1.1.17.1~/mono/mini/ChangeLog mono-1.1.17.1/mono/mini/ChangeLog
+--- mono-1.1.17.1~/mono/mini/ChangeLog 2006-08-25 21:35:16.000000000 +0200
++++ mono-1.1.17.1/mono/mini/ChangeLog 2006-09-11 21:01:36.000000000 +0200
+@@ -1,3 +1,6 @@
++Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus at ximian.com>
++
++ * mini-arm.c: support larger stack frames (bug #79272).
+
+ Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus at ximian.com>
+
+diff -urNad mono-1.1.17.1~/mono/mini/mini-arm.c mono-1.1.17.1/mono/mini/mini-arm.c
+--- mono-1.1.17.1~/mono/mini/mini-arm.c 2006-07-05 23:55:50.000000000 +0200
++++ mono-1.1.17.1/mono/mini/mini-arm.c 2006-09-11 21:01:36.000000000 +0200
+@@ -100,16 +100,26 @@
+ arm_patch (code - 4, start_loop);
+ return code;
+ }
+- g_assert (arm_is_imm12 (doffset));
+- g_assert (arm_is_imm12 (doffset + size));
+- g_assert (arm_is_imm12 (soffset));
+- g_assert (arm_is_imm12 (soffset + size));
+- while (size >= 4) {
+- ARM_LDR_IMM (code, ARMREG_LR, sreg, soffset);
+- ARM_STR_IMM (code, ARMREG_LR, dreg, doffset);
+- doffset += 4;
+- soffset += 4;
+- size -= 4;
++ if (arm_is_imm12 (doffset) && arm_is_imm12 (doffset + size) &&
++ arm_is_imm12 (soffset) && arm_is_imm12 (soffset + size)) {
++ while (size >= 4) {
++ ARM_LDR_IMM (code, ARMREG_LR, sreg, soffset);
++ ARM_STR_IMM (code, ARMREG_LR, dreg, doffset);
++ doffset += 4;
++ soffset += 4;
++ size -= 4;
++ }
++ } else if (size) {
++ code = emit_big_add (code, ARMREG_R0, sreg, soffset);
++ code = emit_big_add (code, ARMREG_R1, dreg, doffset);
++ doffset = soffset = 0;
++ while (size >= 4) {
++ ARM_LDR_IMM (code, ARMREG_LR, ARMREG_R0, soffset);
++ ARM_STR_IMM (code, ARMREG_LR, ARMREG_R1, doffset);
++ doffset += 4;
++ soffset += 4;
++ size -= 4;
++ }
+ }
+ g_assert (size == 0);
+ return code;
+@@ -2810,8 +2820,13 @@
+ }
+ break;
+ case 2:
+- g_assert (arm_is_imm8 (inst->inst_offset));
+- ARM_STRH_IMM (code, ainfo->reg, inst->inst_basereg, inst->inst_offset);
++ if (arm_is_imm8 (inst->inst_offset)) {
++ ARM_STRH_IMM (code, ainfo->reg, inst->inst_basereg, inst->inst_offset);
++ } else {
++ code = mono_arm_emit_load_imm (code, ARMREG_IP, inst->inst_offset);
++ ARM_ADD_REG_REG (code, ARMREG_IP, ARMREG_IP, inst->inst_basereg);
++ ARM_STRH_IMM (code, ainfo->reg, ARMREG_IP, 0);
++ }
+ break;
+ case 8:
+ g_assert (arm_is_imm12 (inst->inst_offset));
+@@ -2838,8 +2853,13 @@
+ break;
+ case 2:
+ ARM_LDR_IMM (code, ARMREG_LR, ARMREG_SP, (prev_sp_offset + ainfo->offset));
+- g_assert (arm_is_imm8 (inst->inst_offset));
+- ARM_STRH_IMM (code, ARMREG_LR, inst->inst_basereg, inst->inst_offset);
++ if (arm_is_imm8 (inst->inst_offset)) {
++ ARM_STRH_IMM (code, ARMREG_LR, inst->inst_basereg, inst->inst_offset);
++ } else {
++ code = mono_arm_emit_load_imm (code, ARMREG_IP, inst->inst_offset);
++ ARM_ADD_REG_REG (code, ARMREG_IP, ARMREG_IP, inst->inst_basereg);
++ ARM_STRH_IMM (code, ARMREG_LR, ARMREG_IP, 0);
++ }
+ break;
+ case 8:
+ g_assert (arm_is_imm12 (inst->inst_offset));
Property changes on: mono/trunk/debian/patches/arm_support_larger_stack_r65218.dpatch
___________________________________________________________________
Name: svn:executable
+ *
Modified: mono/trunk/debian/rules
===================================================================
--- mono/trunk/debian/rules 2006-09-16 17:17:27 UTC (rev 2717)
+++ mono/trunk/debian/rules 2006-09-17 10:47:46 UTC (rev 2718)
@@ -1,6 +1,6 @@
#!/usr/bin/make -f
-#export DH_VERBOSE=1
+export DH_VERBOSE=1
export MONO_SHARED_DIR=$(CURDIR)
VERSION = $(shell dpkg-parsechangelog | grep ^Vers | cut -d\ -f2)
@@ -32,6 +32,10 @@
GC = --with-gc=included
endif
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+ CFLAGS += -O0
+endif
+
# Include dpatch stuff.
include /usr/share/dpatch/dpatch.make
@@ -41,7 +45,7 @@
build: patch build-stamp
build-stamp: cli-wrapper
dh_testdir
- ./configure $(confflags) --prefix=/usr \
+ CFLAGS=$(CFLAGS) ./configure $(confflags) --prefix=/usr \
--mandir=\$${prefix}/share/man \
--infodir=\$${prefix}/share/info --sysconfdir=/etc \
--with-sigaltstack=no $(GC) \
@@ -55,6 +59,7 @@
dh_testdir
dh_testroot
rm -f build-stamp
+ rm -f install-stamp
-$(MAKE) distclean
# distclean misses stuff
find -name "*.mdb" | xargs rm -f
@@ -63,7 +68,8 @@
rm -rf $(MONO_SHARED_DIR)/.wapi
dh_clean
-install: build
+install: build install-stamp
+install-stamp:
dh_testdir
dh_testroot
dh_clean -k
@@ -96,6 +102,7 @@
cd debian && find -type f -name "*.exe" | xargs chmod +x
# Late GAC
install -D -m 755 debian/mono.runtime-script debian/tmp/usr/share/cli-common/runtimes.d/mono
+ touch install-stamp
binary-indep: build install
dh_testdir -i
Modified: mono/trunk/debian/shlibs.local
===================================================================
--- mono/trunk/debian/shlibs.local 2006-09-16 17:17:27 UTC (rev 2717)
+++ mono/trunk/debian/shlibs.local 2006-09-17 10:47:46 UTC (rev 2718)
@@ -1,5 +1,6 @@
-libgdiplus 0 libgdiplus (>= 1.1.13.4)
+libgdiplus 0 libgdiplus (>= 1.1.17)
libcairo 2 libcairo2 (>= 1.0.2-2)
libfbembed 1 libfbembed1
libsqlite 0 libsqlite0 (>= 2.8.16)
libsqlite3 0 libsqlite3-0 (>= 3.2.8)
+libMonoPosixHelper 0 libmono0 (>= 1.1.17.1)
More information about the Pkg-mono-svn-commits
mailing list