[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