|
Hello Octave users and maintainers,
I have succesfully compiled octave-3.4.3 (src downloaded from ftp://ftp.gnu.org/gnu/octave/octave-3.4.3.tar.gz) with mingw, using Tatsuro's OctaveLibs and gplibs. Many thanks to Tatsuro Matsuoka and Philip Nienhuis who have contributed their knowledge and experience. I had to fix 2 source files in order for them to compile successfully - see my notes regarding the src fixes at the end of this post. Finally, I have constructed and uploaded binaries and they are available for testing (Tatsuro, can you please update your OctaveForWidows WIKI). There are two separate 7z files: a. Basic Octave binaries and documentation with all required environment for compiling oct/mex files (see included readme and shortcut files) Octave3.4.3_gcc4.5.2_20111022.7z - MD5:83E2664CCAC3D5B3C384F5A99DCCF271 - http://www.multiupload.com/LAJ26VC8SB b. Compiled OctaveForge packages tree which can be easily added (see included readme and pkgs list files) Octave3.4.3_gcc4.5.2_pkgs_20111022.7z - MD5:AE3872AEB3C42CEF37E9A3642D1F8EE3 - http://www.multiupload.com/S7YF7Y9L8Z I have tested these on my win7-x64 systems but it should be noted that my testing is limited. Runnig fntests with this binaries tree (including loaded pkgs) produce the following failures (see also my notes regarding the failures at the end of this post): ############################################################## Integrated test scripts: c:\OctaveB\octave-3.4.3\src\data.cc .................... PASS 620/622 FAIL 2 c:\OctaveB\octave-3.4.3\src\ov-fcn-handle.cc ........... PASS 2/3 FAIL 1 c:\OctaveB\octave-3.4.3\scripts/help\get_first_help_sentence.m PASS 6/7 FAIL 1 Fixed test scripts: test_system.m .......................................... PASS 83/84 FAIL 1 Summary: PASS 7048 FAIL 5 There were 2 expected failures (see fntests.log for details). ############################################################## fntest.log for non-expected: ############################################################## >>>>> processing c:\OctaveB\octave-3.4.3\src\data.cc ***** test [f, e] = log2 ([0,-1; 2,-4; Inf,-Inf]); assert (f, [0,-0.5; 0.5,-0.5; Inf,-Inf]); assert (e(1:2,:), [0,1;2,3]) !!!!! test failed assert (f,[0, -0.5; 0.5, -0.5; Inf, -Inf]) expected 0.00000 -0.50000 0.50000 -0.50000 Inf -Inf but got 0.00000 -0.50000 0.50000 -0.50000 NaN NaN NaNs don't match ***** test [f, e] = log2 (complex (zeros (3, 2), [0,-1; 2,-4; Inf,-Inf])); assert (f, complex (zeros (3, 2), [0,-0.5; 0.5,-0.5; Inf,-Inf])); assert (e(1:2,:), [0,1; 2,3]); !!!!! test failed assert (f,complex (zeros (3, 2), [0, -0.5; 0.5, -0.5; Inf, -Inf])) expected 0.00000 + 0.00000i 0.00000 - 0.50000i 0.00000 + 0.50000i 0.00000 - 0.50000i 0.00000 + Infi 0.00000 - Infi but got 0.00000 + 0.00000i 0.00000 - 0.50000i 0.00000 + 0.50000i 0.00000 - 0.50000i NaN - NaNi NaN - NaNi NaNs don't match >>>>> processing c:\OctaveB\octave-3.4.3\src\ov-fcn-handle.cc ***** test x = {".**", "power"; ".'", "transpose"; ".+", "plus"; ".-", "minus"; ".*", "times"; "./", "rdivide"; ".^", "power"; ".\\", "ldivide"; "<=", "le"; "==", "eq"; ">=", "ge"; "~=", "ne"; "!=", "ne"; "**", "mpower"; "~", "not"; "!", "not"; "\'", "ctranspose"; "+", "plus"; "-", "minus"; "*", "mtimes"; "/", "mrdivide"; "^", "mpower"; "\\", "mldivide"; "<", "lt"; ">", "gt"; "&", "and"; "|", "or"}; for i = 1:rows (x) assert (functions (str2func (x{i,1})).function, x{i,2}) endfor !!!!! test failed parse error near line 32 of file C:\Octave\Octave3.4.3_gcc4.5.2\share\octave\packages\linear-algebra-2.0.0\@kronprod\mldivide.m syntax error >>> error ("mldivide: nonconformant arguments (op1 is %dx%d, op2 is %dx%d)", ^ >>>>> processing c:\OctaveB\octave-3.4.3\scripts/help\get_first_help_sentence.m ***** assert (strcmp (get_first_help_sentence('get_first_help_sentence'), "Return the first sentence of a function's help text.")); !!!!! test failed assert (strcmp (get_first_help_sentence ('get_first_help_sentence'), "Return the first sentence of a function's help text.")) failed >>>>> processing test_system ***** testif HAVE_GETPWUID x = getpwuid (getuid ()); assert((strcmp (x.dir, tilde_expand ("~")) && strcmp (x.dir, tilde_expand (sprintf ("~%s", x.name))) && strcmp ("foobar", tilde_expand ("foobar")))); ----- skipped test ***** testif HAVE_GETPGRP assert(getpgrp () > 0); ----- skipped test ***** testif HAVE_GETPPID assert(getppid () > 0); ----- skipped test ***** assert(strcmp (getenv ("HOME"), tilde_expand ("~"))); !!!!! test failed assert (strcmp (getenv ("HOME"), tilde_expand ("~"))) failed ***** testif HAVE_GETPWENT s = getpwent (); endpwent (); assert((isstruct (s) && isfield (s, "name") && isfield (s, "passwd") && isfield (s, "uid") && isfield (s, "gid") && isfield (s, "gecos") && isfield (s, "dir") && isfield (s, "shell"))); ----- skipped test ***** testif HAVE_GETPWUID x = getpwent (); y = getpwuid (x.uid); endpwent (); assert(strcmp (x.name, y.name) && x.uid == y.uid && x.gid == y.gid); ----- skipped test ***** testif HAVE_GETPWNAM x = getpwent (); y = getpwnam (x.name); endpwent (); assert(strcmp (x.name, y.name) && x.uid == y.uid && x.gid == y.gid); ----- skipped test ***** testif HAVE_SETPWENT x = getpwent (); setpwent (); y = getpwent (); endpwent (); assert(strcmp (x.name, y.name) && x.uid == y.uid && x.gid == y.gid); ----- skipped test ***** testif HAVE_GETGRENT x = getgrent (); endgrent (); assert((isstruct (x) && isfield (x, "name") && isfield (x, "passwd") && isfield (x, "gid") && isfield (x, "mem"))); ----- skipped test ***** testif HAVE_GETGRGID x = getgrent (); y = getgrgid (x.gid); endgrent (); assert(strcmp (x.name, y.name) && x.gid == y.gid); ----- skipped test ***** testif HAVE_GETGRNAM x = getgrent (); y = getgrnam (x.name); endgrent (); assert(strcmp (x.name, y.name) && x.gid == y.gid); ----- skipped test ***** testif HAVE_SETGRENT x = getgrent (); setgrent (); y = getgrent (); endgrent (); assert(strcmp (x.name, y.name) && x.gid == y.gid); ----- skipped test ############################################################## My notes regarding the failures: 1. ov-fcn-handle.cc fails only if linear-algebra-2.0.0 is loaded due to its mldivide overloading internal function 4. get_first_help_sentence fails since it calls __makeinfo__.m which executes msys makeinfo on a file opened with mkstemp and written by fwrite. msys makeinfo returns bad string probably because the file has been opened as atext file and newline chars ('\n') are written as windows <CR><LF> causing msys makeinfo to make a faulty parsing 3. test_system.m doesn't fail under MSYS since HOME env var is set there My notes regarding src fixes: The 3 errors I have got were due to a property not a part of gnulib ! in octave-3.4.3\liboctave\oct-env.cc:449 - I had to change gnulib::gethostname to gethostname in octave-3.4.3\src\file-io.cc:128 - I had to change gnulib::unlink to unlink in src\oct-hist.cc:443 - I had to change gnulib::unlink to unlink I do not know how to patch these fixes such that will not effect other systems ! Regards Nitzan Arazi |
Good, thank you. I'll try 3.4.3 this weekend. I also had it compiled early this week, I got more FAILS in the tests than you. Well, my contribution is not so big. Tatsuro did 99.9% of all the work before you took over. Will you still make a description of what files you put where in the subdir hierarchy? Anyway: 1. The packages lib contains Octave3.4.2_gcc4.5.2 rather than Octave3.4.3_gcc4.5.2 as base dir. Unwary users may copy it to the wrong directory 2. Did you also include the (some, or all) Java class libs required for spreadsheet I/O? If not, perhaps you can make a note in the README about where these can be downloaded. Benjamin included them in the 3.2.4 MinGW binary; they have GPL-compatible licenses. 3. In the packages README, please also mention to do a pkg rebuild -noauto oct2mat. oct2mat is known to severely affect Octave operation, a.o., plotting. Philip |
|
In reply to this post by nitnit
> Good, thank you. > I'll try 3.4.3 this weekend. I also had it compiled early this week, I got more FAILS in the tests than you. > Well, my contribution is not so big. Tatsuro did 99.9% of all the work before you took over. > > Will you still make a description of what files you put where in the subdir hierarchy? Yes, I have documented what I have done. I will try to edit it in a way that others will be able to understand and use it and will post it later.
There are also several changes I had to make to some octaveforge packages in order to build them with mingw. These are are also waiting for me to post them. > Anyway: > > 1. The packages lib contains Octave3.4.2_gcc4.5.2 rather than Octave3.4.3_gcc4.5.2 as base dir. Unwary users > may copy it to the wrong directory
I will fix that.
> 2. Did you also include the (some, or all) Java class libs required for spreadsheet I/O? > If not, perhaps you can make a note in the README about where these can be downloaded. > Benjamin included them in the 3.2.4 MinGW binary; they have GPL-compatible licenses. I haven't tested the io functions so I have not noticed that there are missing jars. I will add them. > 3. In the packages README, please also mention to do a pkg rebuild -noauto oct2mat. > oct2mat is known to severely affect Octave operation, a.o., plotting. I have experienced the oct2mat effect on octave plotting with Benjamins 3.2.4 version. I have not experienced any such plotting problems with oct2mat with Octave 3.4.2/3.4.3, at least on the two machines I am using. On win7-64bit octave loading and plotting is faster than on XP-SP3 but even on my XP-SP3 machine the slow plotting response is not effected by oct2mat.
Have you or anyone else experienced such problems (with octave 3.4.2 or 3.4.3) that are effected by oct2mat ?
In any case I can mention that in the README.
I will try to do all these fixes later today or tomorrow.
Nitzan |
|
Hi Nitzan:
For your convenience, or perhaps for inclusion in the pkgs README (at your discretion): The relevant jar files are these: * Apache POI (for .xls I/O), see: http://poi.apache.org/download.html poi-3.7-20101029.jar poi-ooxml-3.7-20101029.jar poi-ooxml-schemas-3.7-20101029.jar -plus- dom4j-1.6.1.jar (http://sourceforge.net/projects/dom4j/files/dom4j/) xbean.jar (part of xmlbeans, http://apache.xl-mirror.nl/xmlbeans/binaries/) * JExcelAPI (for .xls I/O, also BIFF5) jxl.jar (http://sourceforge.net/projects/jexcelapi/files/jexcelapi/) * OpenXLS (.xls I/O, though writing xls with OXS, while implemented, has been disabled due to bugs in OpenXLS itself so perhaps OpenXLS may not be useful enough to be included. Yet for .xls *reading* OpenXLS is the fastest Java (~cross-platform) option) OpenXLS-6.0.6.jar (http://sourceforge.net/projects/openxls/) * ODF Toolkit (for .ods I/O) odfdom-java-0.8.7.jar (http://odftoolkit.org/projects/odfdom/pages/Home) xercesImpl.jar (http://xerces.apache.org/mirrors.cgi#binary). WATCH OUT here, the newest version (Nov 26, 2010) doesn't work, an older version (Sep 14, 2007) works OK. A bit typical of the unstable situation of ODF Toolkit :-( * jOpenDOcument (for .ods I/O) jOpenDocument-1.2.jar (http://www.jopendocument.org/downloads.html) If you do include them (~18 MB extra in the pkgs download), I'd suggest to also add a section on java.opts (to increase the Java JVM memory allocation) and classpath.txt (to set the Java search path): File "java.opts" can be put in the /share/.../java-1.2.8 subdir, or in the user's home dir, and might contain just the line: -Xmx512m (here setting the default JVM to max 512 MB, to avoid out-of-memory errors with large spreadsheets) File classpath.txt can also be put in the user's home dir, or in the java pkg script file dir (share/.../java-1.2.8/ ) Contents of file "classpath.txt": (Note: Adapt path settings to your system!) X:\Octave\Octave3.4.3_gcc4.5.2\lib\poi-3.7-20101029.jar X:\Octave\Octave3.4.3_gcc4.5.2\lib\poi-ooxml-3.7-20101029.jar X:\Octave\Octave3.4.3_gcc4.5.2\lib\xbean.jar X:\Octave\Octave3.4.3_gcc4.5.2\lib\poi-ooxml-schemas-3.7-20101029.jar X:\Octave\Octave3.4.3_gcc4.5.2\lib\dom4j-1.6.1.jar X:\Octave\Octave3.4.3_gcc4.5.2\lib\jxl.jar X:\Octave\Octave3.4.3_gcc4.5.2\lib\OpenXLS-6.0.6.jar X:\Octave\Octave3.4.3_gcc4.5.2\lib\odfdom-java-0.8.7.jar X:\Octave\Octave3.4.3_gcc4.5.2\lib\xercesImpl.jar X:\Octave\Octave3.4.3_gcc4.5.2\lib\jOpenDocument-1.2.jar This will load the java class libs required for spreadsheet I/O in the static javaclasspath. Alternatively, the io pkg function "chk_spreadsheet_support.m" can do this too but then in the dynamic javaclasspath. The help-octave ML is sprinkled with posts of people who got trapped by this. oct2mat really is only useful for porting Octave code to ML, I really think it is better to have it unloaded by default. Thanks, Philip |
I can't find the Sep 14, 2007 xercesImpl.jar in that link ! (I can get there only the Xerces2-J-bin.2.11.0.zip from Nov 30, 2010) By simple googling I could find xercesImpl-2.9.1.jar which is dated as Sep 14, 2007 but I am not sure whether this a 'clean' version. Can you provide more specific link or any signature (such as MD5) for this file ? |
|
In reply to this post by PhilipNienhuis
What will happen if I will simply put these jars in the /share/.../java-1.2.8 or the /lib/octave/packages/java-1.2.8 ? In that case, do I still need a classpath.txt ? In any case I think that running chk_spreadsheet_support is easier since a simple 1-2 lines script can set the prefix and the correct class. Other wise, in order for the installation to remain portable, the classpath.txt should be generated as a 'post install' procedure ! |
|
In reply to this post by nitnit
xerces_2_9_1 should be OK. In MSYS shell: Philip@DESKPRN /x/octave/Octave3.4.3_gcc4.5.2/lib $ md5sum xercesImpl.jar da09b75b562ca9a8e9a535d2148be8e4 *xercesImpl.jar If I am not mistaken it is also included in the octave-3.2.4_MinGW binary by Benjamin on SF. BTW 1: It was a bit of a surprise for me today to find out that newer xercesImpl versions don't work anymore with ODF Toolkit. BTW 2: I just filed a bug report for 3.4.3-MinGW (actually for all 3.3.90+ MinGW versions) related to plotting (bug #34631). This bug is a bit of a showstopper for me. Can you try what results you get, please? Instructions are in the bug report Philip |
|
In reply to this post by nitnit
Nitnit,
thanks a lot for your efforts. Here is a small problem I noticed: plot(1:10) generates a lot of warning messages like "warning: ft_render: skipping missing glyph for character `0'" This happens on my Win 7 (64bit) machine, but not on my Win 7 (32 bit machine). I also happened with Matsuoka's 4.3.2 binary. Best, Paul Söderlind |
|
In reply to this post by nitnit
On my Mandriva system I find lots of .jar files in /usr/lib. Not unexpected as these files *are* libraries. That's why I've put them in (msys) /lib. Another reason is that -theoretically- these files may need to be used by other progs. As to classpath.txt / chk_spreadsheet_support: - classpath.txt is for more static environments. - chk_spreadsheet-support is easier, but you'd still have to check if the java package is loaded (!), then infer the directory where the jar files reside during startup of Octave, process this into some string, and feed that string to chk_spreadsheet_support. It's doable, but perhaps too involved. - You can also have a look at how it is done in the 3.2.4 MinGW binary. Benjamin also put the jars in /lib, and used PKG_ADD to add them to the javaclasspath; have a look in /libexec/octave/packages/java-1.2.7 to see how he did it. Once your binaries have ripened enough we could think of building an installer out of it. That installer could figure out what packages to install, and set up all paths & javaclasspath & classpath.txt. Such tasks are ideally done in an installer. A while ago (several months) I saw a message in one of the Octave MLs by someone who offered to volunteer for helping out with building an installer Philip |
|
In reply to this post by nitnit
nitnit <nitnit <at> gmail.com> writes:
> > Hello Octave users and maintainers, > > I have succesfully compiled octave-3.4.3 (src downloaded from > ftp://ftp.gnu.org/gnu/octave/octave-3.4.3.tar.gz) with mingw, using > Tatsuro's OctaveLibs and gplibs. I am running it currently and I will report back if there are any problems. The only thing is that with fltk, I get funky fonts in my plots. I ran into this with Tatsuro's distribution too, and just used gnuplot instead. I can't attach files from gmane, or I would send a screen shot. I don't know if I need to install a font package, or if there is some way to bundle up the required fonts into the download (for which I am immensely grateful!) It might be a little bit off-putting to new users. |
|
In reply to this post by nitnit
nitnit <nitnit <at> gmail.com> writes:
> > Hello Octave users and maintainers, > > I have succesfully compiled octave-3.4.3 (src downloaded from > ftp://ftp.gnu.org/gnu/octave/octave-3.4.3.tar.gz) with mingw, using > Tatsuro's OctaveLibs and gplibs. Oh -- and this extremely minor thing: warning: missing semicolon near line 48, column 11 in file `stuff\share\octave\3.4.3\m\plot\private\__axes_limits__.m' |
|
In reply to this post by forkandwait
Try to set default fonts (such as Arial) by running set(0,"defaulttextfontname","Arial"), set(0,"defaultaxesfontname","Arial"); You can set this on octaverc |
|
In reply to this post by Paul Soderlind
Try to set default fonts (such as Arial) by running set(0,"defaulttextfontname","Arial"), set(0,"defaultaxesfontname","Arial"); You can set this on octaverc |
|
>set(0,"defaulttextfontname","Arial"), set(0,"defaultaxesfontname","Arial");
Nitnit, thanks. That solved it. /Paul Söderlind |
|
In reply to this post by nitnit
nitnit <nitnit <at> gmail.com> writes:
> Try to set default fonts (such as Arial) by running > > set(0,"defaulttextfontname","Arial"), set(0,"defaultaxesfontname","Arial"); Works perfect. Thanks! |
|
Administrator
|
In reply to this post by PhilipNienhuis
On 23-Oct-2011, PhilipNienhuis wrote:
| The help-octave ML is sprinkled with posts of people who got trapped by | this. | oct2mat really is only useful for porting Octave code to ML, I really think | it is better to have it unloaded by default. Please don't even allow oct2mat to be easily installed in Octave unless it is fixed so that it does not install the functions that are intended as replacements for Octave functions that don't exist in Matlab. As I understand it, those functions are supposed to be used to allow Octave code to run in Matlab. They are not needed in Octave because Octave already provides them, and they cause trouble if they are present in Octave. (That alone seems like a bug, since I would expect a replacement function derived from Octave to provide the same functionality, but apparently those functions do not.)n jwe |
|
Administrator
|
In reply to this post by forkandwait
On 24-Oct-2011, fork wrote:
| nitnit <nitnit <at> gmail.com> writes: | | > | > Hello Octave users and maintainers, | > | > I have succesfully compiled octave-3.4.3 (src downloaded from | > ftp://ftp.gnu.org/gnu/octave/octave-3.4.3.tar.gz) with mingw, using | > Tatsuro's OctaveLibs and gplibs. | | Oh -- and this extremely minor thing: | | warning: missing semicolon near line 48, column 11 in file | `stuff\share\octave\3.4.3\m\plot\private\__axes_limits__.m' I fixed this problem on stable and merged with default. Thanks, jwe |
|
In reply to this post by PhilipNienhuis
Benjamin has put all the jars in the bin subdir and it looks OK to me since I have put there other dlls which are required for other OF packages. Regarding classpath.txt, I can use Benjamin's solution but it requires a change in java pkg in order to support the io pkg. It looks more logical to me to implement similar lines or alternative chk_spreadsheet_support calls as an PKG_ADD of the io pkg. This way maintenance of those pkgs will be much more independent. What do you think ?
|
|
In reply to this post by John W. Eaton
If and when we will have an installer, we can leave this pkg unloaded. In the meantime I can drop it completely. Nitzan |
|
Administrator
|
On 24-Oct-2011, nitnit wrote:
| If and when we will have an installer, we can leave this pkg unloaded. In | the meantime I can drop it completely. I would leave it out until it is fixed to not install functions that should not be used with Octave. Otherwise, we are just going to see more people who install it and load it anyway, thinking they want every available package. Then when Octave can't even make a simple plot, they probably conclude that Octave is junk because it can't even make a simple plot. Sometimes they may search the web or ask on the mailing list and find a solution for the problem, but wouldn't it be better to completely avoid the whole problem by not providing this package at all unless it is fixed? jwe |
| Powered by Nabble | Edit this page |
