* Bug #10784 fixed - Scilab built on an Ubuntu 11.10, javasci was failing to 65/6565/2
Sylvestre Ledru [Thu, 1 Mar 2012 15:52:24 +0000 (16:52 +0100)]
                     load with an undefined symbol

Change-Id: I8b0c2dace587cd0d096a72c44d525febe6b9d06f

scilab/CHANGES_5.4.X
scilab/config/ltmain.sh
scilab/modules/graphics/macros/contourf.sci

index b45772f..63e5d4f 100644 (file)
@@ -112,9 +112,17 @@ Scinotes
 
 * Add shortcuts META+(UP|DOWN) to navigate between paragraphs
 
-* Bug #10442 fixed : Sometimes a crash occured at startup when Scinotes was
+* Bug #10442 fixed - Sometimes a crash occured at startup when Scinotes was
                      restoring.
 
+* Bug #10647 fixed - An error message did not repect Scilab localization standard.
+
+
+api_scilab
+==========
+
+* Construction of any type of lists is now way faster (300x in some cases).
+
 
 Javasci
 =======
@@ -125,6 +133,9 @@ a sparse but not to send it to Scilab).
 * Javasci supports struct datatypes under the form of an MList  (Javasci is
 able to retrieve a struct but not to send it to Scilab).
 
+* Bug #10784 fixed - Scilab built on an Ubuntu 11.10, javasci was failing to
+                     load with an undefined symbol
+
 
 CACSD & Signal Processing
 =========================
index d8447d5..832fbc4 100755 (executable)
@@ -4921,6 +4921,11 @@ func_mode_link ()
        arg=$func_stripname_result
        ;;
 
+      -Wl,--as-needed|-Wl,--no-as-needed)
+       deplibs="$deplibs $arg"
+       continue
+       ;;
+
       -Wl,*)
        func_stripname '-Wl,' '' "$arg"
        args=$func_stripname_result
@@ -5274,6 +5279,15 @@ func_mode_link ()
        lib=
        found=no
        case $deplib in
+       -Wl,--as-needed|-Wl,--no-as-needed)
+         if test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$deplib $compile_deplibs"
+           finalize_deplibs="$deplib $finalize_deplibs"
+         else
+           deplibs="$deplib $deplibs"
+         fi
+         continue
+         ;;
        -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
          if test "$linkmode,$pass" = "prog,link"; then
            compile_deplibs="$deplib $compile_deplibs"
index 10d9074..029c324 100644 (file)
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
 function contourf(x,y,z,nv,style,strf,leg,rect,nax)
-       
-       [nout,nin]=argn(0);
-       
-       if nin == 0 then   // demo
-               t = -%pi:0.1:%pi;
-               m = sin(t)'*cos(t);
-               contourf(t,t,m);
-               return;
-  end
-
-if nin <= 0 then x=1:10;end
-if nin <= 1 then y=1:10;end
-if nin <= 2 then z=rand(size(x,'*'),size(y,'*'));end
-if nin <= 3 then zmin=min(z);zmax=max(z);nv = zmin + (1:10)*(zmax-zmin)/(11);end
-if nin <= 5 then strf="021";end
-if nin <= 6 then leg=" ";end
-if nin <= 7 then rect=[0,0,1,1];end
-if nin <= 8 then nax=[1,10,1,10];end
-if x==[] then x=1:size(z,'r');end 
-if y==[] then y=1:size(z,'c');end 
-
-nvs=size(nv,'*') ;
-if nvs==1 then nvs=nv;zmin=min(z);zmax=max(z);nv = zmin + (1:nvs)*(zmax-zmin)/(nvs+1);end;
-if nin <= 4 then style = -1*ones(1,nvs);end
-if nin <= 7 then rect=[min(x),min(y),max(x),max(y)]; end 
-nv1=nv
-[mz,nz] = size(z);
-minz = min(z);
-maxz = max(z);
-// Surround the matrix by a very low region to get closed contours, and
-// replace any NaN with low numbers as well.
-zz=[ %nan*ones(1,nz+2); %nan*ones(mz,1),z,%nan*ones(mz,1);%nan*ones(1,nz+2)];
-kk=find(isnan(zz(:)));
-zz(kk)=minz-1e4*(maxz-minz)+zeros(kk);
-
-xx = [2*x(1)-x(2); x(:); 2*x(mz)-x(mz-1)];
-yy = [2*y(1)-y(2); y(:); 2*y(nz)-y(nz-1)];
-
-// Internal call to get the contours 
-[x1,y1]=contour2di(xx,yy,zz,nv);
-CS=[x1;y1];
-// Find the indices of the curves in the c matrix, and get the
-// area of closed curves in order to draw patches correctly. 
-ii = 1;
-ncurves = 0;
-I = [];
-Area=[];
-
-while (ii < size(CS,2)),
-  nl=CS(2,ii);
-  ncurves = ncurves + 1;
-  I(ncurves) = ii;
-  xp=CS(1,ii+(1:nl));  // First patch
-  yp=CS(2,ii+(1:nl));
-  Area(ncurves)=sum( mtlb_diff(xp).*(yp(1:nl-1)+yp(2:nl))/2 );
-  ii = ii + nl + 1;
-end
-
-lp=xget('lastpattern');
-
-if size(nv,'*') > 1 // case where nv is a vector defining the level curve values
-  if  size(nv,'*') > lp ; write(%io(2),'Colormap too small');return ;end 
-else
-  if nv > lp ; write(%io(2),'Colormap too small');return ;end 
-end
-
-min_nv=min(nv);
-max_nv=max(nv);
-
-plot2d([min(xx);max(xx)],[min(yy);max(yy)],0,strf,leg,rect,nax);
-
-// Plot patches in order of decreasing size. This makes sure that
-// all the lev1es get drawn, not matter if we are going up a hill or
-// down into a hole. When going down we shift levels though, you can
-// tell whether we are going up or down by checking the sign of the
-// area (since curves are oriented so that the high side is always
-// the same side). Lowest curve is largest and encloses higher data
-// always.
-
-draw_min=1;
-H=[];
-[FA,IA]=gsort(abs(Area));
-
-  drawlater(); // postpon the drawing here
-  a=gca();
-  old_foreground = a.foreground;
-  pat=xget('pattern');
-  for jj=IA',
-    nl=CS(2,I(jj));
-    lev1=CS(1,I(jj));
-    if (lev1 ~= minz | draw_min),
-      xp=CS(1,I(jj)+(1:nl));  
-      yp=CS(2,I(jj)+(1:nl)); 
-      pat=size(find( nv <= lev1),'*');
-      xset("pattern",pat);
-      xfpoly(xp,yp)
+
+    [nout,nin]=argn(0);
+
+    if nin == 0 then   // demo
+        t = -%pi:0.1:%pi;
+        m = sin(t)' * cos(t);
+        contourf(t,t,m);
+        return;
+    end
+
+    if nin <= 0 then
+        x=1:10;
+    end
+    if nin <= 1 then
+        y=1:10;
+    end
+    if nin <= 2 then
+        z=rand(size(x,'*'), size(y,'*'));
+    end
+    if nin <= 3 then
+        zmin=min(z);
+        zmax=max(z);
+        nv = zmin + (1:10) * (zmax-zmin)/(11);
+    end
+    if nin <= 5 then
+        strf="021";
+    end
+    if nin <= 6 then
+        leg=" ";
+    end
+    if nin <= 7 then
+        rect=[0,0,1,1];
+    end
+    if nin <= 8 then
+        nax=[1,10,1,10];
+    end
+    if x==[] then
+        x=1:size(z,'r');
+    end 
+    if y==[]then
+        y=1:size(z,'c');
+    end 
+
+    nvs=size(nv,'*') ;
+    if nvs==1 then
+        nvs=nv;
+        zmin=min(z);
+        zmax=max(z);
+        nv = zmin + (1:nvs)*(zmax-zmin)/(nvs+1);
     end;
-  end
-  
-  if style(1)<>-1 then 
-    contour2d(xx,yy,zz,nv,style,"000",leg,rect,nax);
-  end
-  a.foreground = old_foreground;
-  drawnow(); // draw all now!
+    if nin <= 4 then
+        style = -1*ones(1, nvs);
+    end
+    if nin <= 7 then
+        rect=[min(x), min(y), max(x), max(y)];
+    end 
+    nv1=nv
+    [mz,nz] = size(z);
+    minz = min(z);
+    maxz = max(z);
+
+    // Surround the matrix by a very low region to get closed contours, and
+    // replace any NaN with low numbers as well.
+    zz=[ %nan * ones(1,nz+2);
+    %nan*ones(mz,1), z, %nan*ones(mz,1);
+    %nan*ones(1,nz+2)];
+
+    kk=find(isnan(zz(:)));
+
+    zz(kk)=minz-1e4*(maxz-minz)+zeros(kk);
+
+    xx = [2*x(1)-x(2);
+    x(:); 
+    2*x(mz)-x(mz-1)];
+
+    yy = [2*y(1)-y(2);
+    y(:); 
+    2*y(nz)-y(nz-1)];
+
+    // Internal call to get the contours
+    [x1,y1]=contour2di(xx,yy,zz,nv);
+    CS=[x1;y1];
+    // Find the indices of the curves in the c matrix, and get the
+    // area of closed curves in order to draw patches correctly.
+    ii = 1;
+    ncurves = 0;
+    I = [];
+    Area=[];
+
+    while (ii < size(CS,2)),
+        nl=CS(2,ii);
+        ncurves = ncurves + 1;
+        I(ncurves) = ii;
+        xp=CS(1,ii+(1:nl));  // First patch
+        yp=CS(2,ii+(1:nl));
+        Area(ncurves)=sum( mtlb_diff(xp).*(yp(1:nl-1)+yp(2:nl))/2 );
+        ii = ii + nl + 1;
+    end
+
+    lp=xget('lastpattern');
+
+    if size(nv,'*') > 1 // case where nv is a vector defining the level curve values
+        if  size(nv,'*') > lp
+            error(msprintf(gettext("%s: Colormap too small"),"contourf"));
+        end 
+    else
+        if nv > lp
+            error(msprintf(gettext("%s: Colormap too small"),"contourf"));
+            return ;
+        end 
+    end
+
+    min_nv=min(nv);
+    max_nv=max(nv);
+
+    plot2d([min(xx);max(xx)],[min(yy);max(yy)],0,strf,leg,rect,nax);
+
+    // Plot patches in order of decreasing size. This makes sure that
+    // all the lev1es get drawn, not matter if we are going up a hill or
+    // down into a hole. When going down we shift levels though, you can
+    // tell whether we are going up or down by checking the sign of the
+    // area (since curves are oriented so that the high side is always
+    // the same side). Lowest curve is largest and encloses higher data
+    // always.
+
+    draw_min=1;
+    H=[];
+    [FA,IA]=gsort(abs(Area));
+
+    drawlater(); // postpon the drawing here
+    a=gca();
+    old_foreground = a.foreground;
+    pat=xget('pattern');
+    for jj=IA',
+        nl=CS(2,I(jj));
+        lev1=CS(1,I(jj));
+        if (lev1 ~= minz | draw_min),
+            xp=CS(1,I(jj)+(1:nl));
+            yp=CS(2,I(jj)+(1:nl)); 
+            pat=size(find( nv <= lev1),'*');
+            xset("pattern",pat);
+            xfpoly(xp,yp)
+        end;
+    end
+
+    if style(1)<>-1 then
+        contour2d(xx,yy,zz,nv,style,"000",leg,rect,nax);
+    end
+    a.foreground = old_foreground;
+    drawnow(); // draw all now!
 
 endfunction