Neil Hopcroft

A digital misfit

Octave packages test results

Having set up a build of octave packages, I have now added a mechanism to test them. This is currently quite crude and probably doesn’t really reflect the actual state of the packages.

Package Maintained Version Successful Run Pass
actuarial No 1.1.0 Yes 16 0
ad No No 0 0
ann No No 0 0
audio No 1.1.4 Yes 12 3
benchmark No 1.1.1 Yes 16 0
bim Yes 1.1.4 Yes 53 9
bioinfo No 0.1.2 Yes 9 4
cgi Yes 1.0.1 Yes 5 0
civil-engineering No 1.0.7 Yes 7 0
communications Yes 1.2.1 Yes 100 52
control Yes 2.8.0 Yes 130 0
data-smoothing Yes 1.3.0 Yes 9 1
database Yes 2.3.1 Yes 13 0
dataframe Yes 1.1.0 Yes 6 0
dicom Yes 0.1.1 Yes 4 0
divand Yes 1.1.2 Yes 75 0
econometrics Yes 1.1.1 Yes 35 0
engine No 1.0.9 Yes 6 0
fem-fenics Yes No 0 0
fenv No 0.1.0 Yes 9 3
financial Yes 0.4.0 Yes 75 2
fits Yes 1.0.6 Yes 4 0
fixed No 0 0
fl-core Yes No 0 0
fpl Yes 1.3.4 Yes 15 2
fuzzy-logic-toolkit Yes 0.4.5 Yes 61 17
ga Yes 0.10.0 Yes 27 6
galois No 0 0
general Yes 1.3.4 Yes 14 3
generate_html Yes 0.1.7 Yes 13 0
generate_latex 0.0.1 Yes 8 0
geometry Yes 1.7.0 Yes 13 0
gnuplot No 1.0.3 Yes 32 2
graceplot No 0 0
graph 0.0.0 Yes 5 0
gsl No 1.1.0 Yes 11 0
image-acquisition Yes 0.2.1 Yes 12 0
image Yes 2.3.0 Yes 132 8
informationtheory No 0.1.8 Yes 32 26
instrument-control Yes 0.2.1 Yes 13 0
integration No 1.0.7 Yes 37 1
interval Yes 0.1.5 Yes 14 0
io Yes 2.2.7 Yes 42 0
irsa No 1.0.7 Yes 19 7
java Yes No 0 0
jhandles No 0 0
level-set Yes No 0 0
linear-algebra Yes 2.2.2 Yes 25 2
lssa Yes 0.1.2 Yes 14 0
ltfat Yes No 0 0
macosx No 0 0
mapping No 1.2.0 Yes 45 0
mechanics Yes 1.3.1 Yes 10 0
miscellaneous Yes 1.2.1 Yes 37 1
missing-functions No 1.0.2 Yes 9 0
mpi Yes No 0 0
msh Yes 1.0.10 Yes 25 7
multicore No 0.2.15 Yes 21 0
multi-precision No 0 0
mvn Yes 1.1.0 Yes 23 0
nan Yes No 0 0
ncarray Yes No 0 0
netcdf Yes 1.0.6 Yes 16 0
ngspice No 0 0
nlwing2 No 1.2.0 Yes 23 0
nnet No 0.1.13 Yes 35 0
nurbs Yes 1.3.10 Yes 73 18
ocs Yes 0.1.3 Yes 11 0
oct2mat No No 0 0
octcdf Yes No 0 0
octclip Yes 1.0.3 Yes 7 1
octgpr No 1.2.1 Yes 6 0
octproj Yes 1.1.2 Yes 11 0
ode 1.0.1 Yes 13 0
odebvp No 1.0.6 Yes 5 0
odepkg Yes 0.8.4 Yes 42 14
optics Yes 0.1.1 Yes 48 0
optim Yes No 0 0
optiminterp Yes No 0 0
outliers No 0.13.9 Yes 18 0
parallel Yes 2.2.1 Yes 19 0
pdb No No 0 0
perl No 0 0
plot No 1.1.0 Yes 14 4
project-web No 0 0
prony No 0 0
quaternion Yes 2.4.0 Yes 14 0
queueing Yes 1.2.3 Yes 108 3
real2rgb No 0 0
robotis 0.0.1 Yes 6 0
secs1d Yes No 0 0
secs2d Yes No 0 0
secs3d Yes 0.0.1 Yes 0 0
signal Yes 1.3.1 Yes 152 23
simp No 1.1.0 Yes 34 0
sockets Yes 1.2.0 Yes 4 0
soctcl No 0 0
sparsersb No 0 0
specfun Yes 1.1.0 Yes 28 4
special-matrix No 1.0.7 Yes 6 0
splines Yes 1.2.7 Yes 16 1
statistics Yes 1.2.4 Yes 119 8
stk Yes No 0 0
strings Yes 1.1.0 Yes 10 0
struct Yes 1.0.10 Yes 8 0
symband No 1.0.10 Yes 12 0
symbolic Yes No 0 0
system-identification No 0 0
tcl-octave No No 9 0
triangular No 0 0
tsa Yes No 0 0
video No No 0 0
vrml Yes 1.0.13 Yes 51 2
wavelet 0.1.0 Yes 9 0
windows Yes No 0 0
xraylib No No 0 0
zenity No No 14 0

Looking more closely at pkg(), it is possible to get the list of functions each package contains. With this list we can call test() on each, and collate the results. This should give more representative results. I will have a go at replacing the above mechanism.


Becoming a maintainer of octave packages

I have asked the octave-maintainers@gnu.org mailing list which packages I should pick up if I wanted to maintain some packages. Any of the unmaintained packages could be a candidate, but I figured that it would be better to ask which anyone cared about rather than just wade in and start maintaining some of them. These are the unmaintained packages I’ve made successful builds of:

  • actuarial
  • audio
  • benchmark
  • bioinfo
  • civil-engineering
  • engine
  • fenv
  • gnuplot
  • gsl
  • information-theory
  • integration
  • irsa
  • mapping
  • missing-functions
  • multicore
  • nlwing2
  • nnet
  • octgpr
  • odebvp
  • outliers
  • plot
  • simp
  • special-matrix
  • symband

While I realise that making a successful build does not mean something is easy to get to a maintainable state, it is at least a good place to start from. I will take a closer look at these packages over the next few days.


Improving the octave build

Looking further at config.log and the output from configure, there are a few further improvements that could be made to make the build better.
Add –enable-jit option, although this causes a warning claiming to be a missing LLVM include file, but closer examination of the config.log file shows actually is caused by failure to use the required ‘–std=gnu++11’ option to the compiler. Including this option, however, causes other build failures. For the moment I will keep this option but not worry about the warning it generates.
Add –with-openssl option. This opened a can of worms. Starting with disabling the GUI, with a claim that it couldn’t find the OpenGL library. This was actually not the case, instead the OpenGL library was missing a TLS function (it remains unclear to me so far why a general purpose graphics library should use encryption, but such are the mysteries of open source software). Adding the –enable-glx-tls option to the mesa build should resolve that. Only, it doesn’t.
Turns out that what I am building is 64-bit software, so the libraries land in /usr/local/lib64 rather than the search path I had given of /usr/local/lib. Confusingly there appears to be duplicates of a number of libraries between the two directories and their versions are not necessarily in sync. Most of this is because I have built things, but I don’t think I’m responsible for all of it. I don’t yet understand how Linux handles thunking around between 32 and 64 bit. I’m guessing 64-bit software can easily thunk down to use 32-bit libraries, but that it is either difficult or impossible to go the other way. From what I remember, also, dependency handling for different versions is a bit of a mess, meaning it would be possible to have both 32-bit and 64-bit versions of the same library loaded by the same program and there would be no guarantee that they would be of the same code version and configuration. This could lead to some entertaining bugs where doing the same thing in slightly different ways within a program might lead to different behaviours. But that is not what I am considering here, I just want to build it at the moment.
Then using static data in 64-bit libraries causes a build error unless you are building with the -fPIC option – which was not the case for fltk, adding the –enable-shared option to the fltk build resolves that.
Examining the build configuration shows OSMesa and Sndfile are missing.
OSMesa can be enabled as part of the mesa build, but again there is a dependency on TLS support, which is not fulfilled – looking into this a bit more there are again two versions of libOSMesa.so in my system, this time I know it to be my fault as one is in /usr/lib, the other /usr/local/lib. The first step to resolving this is to ensure that there is only one version of libGL.so on the library path, then rebuilding mesa.
And I have set up a new Jenkins project for libSndFile, this in turn depends upon FLAC.


Fixing the octave build break

As I noted before, the ‘clean build’ option was not set in the Octave build, setting this option and resolving the errors caused by it – I had manually copied groff.enc into the build tree, which now needs to be done automatically – makes the build work. This brings up a couple of points, it seems that the Jenkins default configuration for ‘freestyle’ projects is not to clean when launching a new build. I will need to check the other projects to make sure they are set to clean too. It also makes me think that Jenkins ‘freestyle’ build configurations are not under change control. The way to resolve this is to have a build script which is under change control and call that and only that from the Jenkins build. I don’t think what I am doing here is significant enough to warrant that, so I will leave my configuration as is, but it is something to think about on more complex configurations.


Putting the Continuous Integration into the octave CI build

The whole point of a CI server is to do continuous integration, that is making sure everything still works whenever there are any changes upstream as well as any changes to a projects own code. Looking at the dependencies for the octave build, there are a number of things I had to build myself to get the build working on the AWS server I’m using. I have taken that as a list of packages to build in the CI server. The dependencies look like this:

  • octave-packages
    • octave
      • arpack
      • fltk
      • librsvg
        • pango
      • mesa
        • libxcb
          • xorg-macros
      • qhull
      • qrupdate

None of these projects appear to be under significant development at the moment so I have set them to poll for updates daily, and the dependencies are set up within Jenkins such that any rebuild will build all of the projects that depend upon it.
There is one significant omission from this list: QT. Although I found a number of places that give links to the QT 4.8 active development branch, none of them are working for me.


Octave build break in CI build

My Octave CI build has broken with this change:

“Changeset 19439:57b6e06ed811 by Mike Miller :
maint: update library version numbers for upcoming release

* libgui/Makefile.am (liboctgui_current): Bump to 1.
* libinterp/Makefile.am (liboctinterp_current): Bump to 3.
* liboctave/Makefile.am (liboctave_current): Bump to 3.
* configure.ac (OCTAVE_API_VERSION): Bump to api-v50+.”

This break lead to an error during tests:

libinterp/corefcn/tsearch.cc-tst ……………………….error: ‘nargin’ undefined near line 35 column 7
error: called from
__unimplemented__ at line 35 column 3
__run_test_suite__ at line 113 column 7
./fntests.m at line 57 column 1
error: scope not found!

Followed by a core dump:

*** Error in `/usr/share/tomcat7/.jenkins/workspace/octave/src/.libs/lt-octave-cli’: free(): invalid pointer: 0x00007f9c9c235400 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x7d19d)[0x7f9c94cd219d]
/usr/share/tomcat7/.jenkins/workspace/octave/liboctave/.libs/liboctave.so.3(_ZN12octave_shlib9shlib_repD0Ev+0xc3)[0x7f9c9bdd8e03]
/lib64/libc.so.6(+0x38e59)[0x7f9c94c8de59]
/lib64/libc.so.6(+0x38ea5)[0x7f9c94c8dea5]
/usr/share/tomcat7/.jenkins/workspace/octave/libinterp/.libs/liboctinterp.so.3(octave_execute_interpreter+0x5f2)[0x7f9c9c76e7f2]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7f9c94c76af5]
/usr/share/tomcat7/.jenkins/workspace/octave/src/.libs/lt-octave-cli[0x400ba1]

Given the nature of the change I would guess that some dependency information hasn’t been updated somewhere, either because there is another source change needed or because my build hasn’t been properly cleaned between builds – I noticed the Jenkins ‘clean build’ option was not set.


Octave CI build test results

Now that the CI build is set up, it is worth reviewing the test results. The ‘make check’ step of the build runs the test suite and displays the results (from build 127 on my Jenkins server):
Summary:

PASS 12717
FAIL 10
XFAIL 14
SKIPPED 270
...
208 (of 875) .m files have no tests

Where PASS means the test ran successfully, FAIL means it failed, XFAIL means an expected failure (that is probably a known bug or error in the test) and SKIPPED means a test that is not applicable to the current configuration.
Drilling a bit more into these results, FAIL and SKIPPED are the interesting results.

Test name Pass Fail Skipped
libinterp/corefcn/graphics.cc-tst 35 3 0
libinterp/dldfcn/audiodevinfo.cc-tst 0 0 4
libinterp/dldfcn/convhulln.cc-tst 0 0 4
libinterp/octave-value/ov-class.cc-tst 48 0 2
libinterp/octave-value/ov-java.cc-tst 0 0 2
libinterp/octave-value/ov-typeinfo.cc-tst 56 0 1
scripts/audio/@audioplayer/audioplayer.m 0 0 4
scripts/audio/@audiorecorder/audiorecorder.m 0 0 4
scripts/audio/wavwrite.m 4 0 7
scripts/deprecated/delaunay3.m 0 0 1
scripts/general/fieldnames.m 2 0 3
scripts/general/methods.m 1 0 1
scripts/geometry/convhull.m 0 0 1
scripts/geometry/delaunay.m 9 0 6
scripts/geometry/delaunayn.m 1 0 2
scripts/geometry/griddata.m 13 0 1
scripts/geometry/griddata3.m 0 0 2
scripts/geometry/griddatan.m 0 0 2
scripts/geometry/voronoi.m 6 0 2
scripts/gui/uimenu.m 0 3 0
scripts/image/imfinfo.m 0 0 1
scripts/image/imformats.m 0 0 5
scripts/image/imread.m 0 0 4
scripts/image/imwrite.m 9 0 10
scripts/java/javachk.m 5 0 1
scripts/java/usejava.m 5 0 1
scripts/plot/util/allchild.m 2 1 0
scripts/plot/util/copyobj.m 1 0 1
scripts/plot/util/findall.m 0 1 0
scripts/plot/util/graphics_toolkit.m 0 2 0
scripts/plot/util/hgsave.m 3 0 1
scripts/sparse/eigs.m 5 0 149
scripts/sparse/svds.m 1 0 5
scripts/testfun/test.m 57 0 1
jit.tst 0 0 42

From this there are two significant areas of functionality being skipped, eigs and jit. confgure gives these warnings: “WARNING: ARPACK library found, but does not seem to work properly — disabling eigs function” and “WARNING: Missing LLVM file TargetData.h. JIT compiler is disabled.”
Looking in the config.log file, I notice that configure is having trouble loading some relevant libraries during its testing, a number of these libraries are installed in /usr/local/lib, which isn’t on the library search path. Adding LD_LIBRARY_PATH=/usr/local/lib to the beginning of the configure line seems to improve things somewhat, but the build including that change is still in progress.
Further investigation of the LLVM failure shows that llvm/IR/Function.h requires support for ISO C++ 2011 standard in the compiler, which is not included in the gcc 4.8.2 I am using. This seems like a problem for another day.


Octave Packages CI build dependencies

Getting the CI build of Octave Packages working I have encountered a number of dependencies.

Package Maintained Version Successful Dependencies
actuarial No 1.1.0 Yes
ad No No Build error
ann No No Build error
audio No 1.1.4 Yes miscellaneous>=1.1.0
benchmark No 1.1.1 Yes
bim Yes 1.1.4 Yes fpl, msh
bioinfo No 0.1.2 Yes
cgi Yes 1.0.1 Yes
civil-engineering No 1.0.7 Yes
communications Yes 1.2.1 Yes signal >= 1.1.3
control Yes 2.8.0 Yes
data-smoothing Yes 1.3.0 Yes optim >= 1.0.3
database Yes 2.3.1 Yes
dataframe Yes 1.1.0 Yes
dicom Yes 0.1.1 Yes
divand Yes 1.1.2 Yes
econometrics Yes 1.1.1 Yes optim
engine No 1.0.9 Yes
fem-fenics Yes No Build error
fenv No 0.1.0 Yes
financial Yes 0.4.0 Yes io >= 1.0.18
fits Yes 1.0.6 Yes cfitsio pkg-config
fixed No Build error
fl-core Yes No Build error
fpl Yes 1.3.4 Yes
fuzzy-logic-toolkit Yes 0.4.5 Yes
ga Yes 0.10.0 Yes
galois No signal >= 1.0.0, build error
general Yes 1.3.4 Yes
generate_html Yes 0.1.7 Yes
generate_latex 0.0.1 Yes
geometry Yes 1.7.0 Yes general >= 1.3.0
gnuplot No 1.0.3 Yes
graceplot No io >= 1.0.0, general, Build error
graph 0.0.0 Yes
gsl No 1.1.0 Yes gsl pkg-config
image-acquisition Yes 0.2.1 Yes
image Yes 2.3.0 Yes
informationtheory No 0.1.8 Yes
instrument-control Yes 0.2.1 Yes
integration No 1.0.7 Yes
interval Yes 0.1.5 Yes mpfr pkg-config
io Yes 2.2.7 Yes
irsa No 1.0.7 Yes
java Yes
jhandles No java, Java support
level-set Yes
linear-algebra Yes 2.2.2 Yes general >= 1.3.0
lssa Yes 0.1.2 Yes
ltfat Yes
macosx No Invalid package name
mapping No 1.2.0 Yes
mechanics Yes 1.3.1 Yes linear-algebra >= 2.0.0, general >= 1.2.2, geometry >= 1.2.1
miscellaneous Yes 1.2.1 Yes general >= 1.3.1
missing-functions No 1.0.2 Yes
mpi Yes No mpic++ pkg-config
msh Yes 1.0.10 Yes splines
multicore No 0.2.15 Yes
multi-precision No Build error
mvn Yes 1.1.0 Yes
nan Yes No Invalid package name
ncarray Yes No Invalid package name
netcdf Yes 1.0.6 Yes netcdf pkg-config
ngspice No ngspice pkg-config
nlwing2 No 1.2.0 Yes
nnet No 0.1.13 Yes
nurbs Yes 1.3.10 Yes Build error
ocs Yes 0.1.3 Yes odepkg
oct2mat No No io >= 1.0.0, build error
octcdf Yes No netcdf pkg-config
octclip Yes 1.0.3 Yes
octgpr No 1.2.1 Yes
octproj Yes 1.1.2 Yes
ode 1.0.1 Yes
odebvp No 1.0.6 Yes
odepkg Yes 0.8.4 Yes patch pkg-config
optics Yes 0.1.1 Yes
optim Yes No struct >= 1.0.10, build error
optiminterp Yes No Build error
outliers No 0.13.9 Yes
parallel Yes 2.2.1 Yes
pdb No No Build error
perl No Build error
plot No 1.1.0 Yes
project-web No Build error
prony No Build error
quaternion Yes 2.4.0 Yes
queueing Yes 1.2.3 Yes
real2rgb No Build error
robotis 0.0.1 Yes quarternions_oo
secs1d Yes No bim, Build error
secs2d Yes No Build error
secs3d Yes 0.0.1 Yes bim, fpl
signal Yes 1.3.1 Yes control >= 2.4.5, general >= 1.3.2
simp No 1.1.0 Yes
sockets Yes 1.2.0 Yes
soctcl No Build error
sparsersb No rsb pkg-config
specfun Yes 1.1.0 Yes
special-matrix No 1.0.7 Yes
splines Yes 1.2.7 Yes
statistics Yes 1.2.4 Yes io >= 1.0.18
stk Yes No Build error
strings Yes 1.1.0 Yes
struct Yes 1.0.10 Yes
symband No 1.0.10 Yes
symbolic Yes
system-identification No Build error
tcl-octave No No Build error
triangular No Build error
tsa Yes No Build error
video No No Build error
vrml Yes 1.0.13 Yes linear-algebra, miscellaneous, struct, statistics
wavelet 0.1.0 Yes
windows Yes No Invalid package name
xraylib No No libxrl pkg-config
zenity No No general >= 1.3.0

Octave Packages Continuous Integration Build

Having set up a CI build for Octave and determined the available packages, the next step was to set up a CI build for the packages.
The packages themselves come from two sources, mercurial and subversion. I didn’t want a proliferation of Jenkins projects, so I set up a single project that polls the subversion code and triggers following the main Octave build. This project also updates the mercurial code when it launches. The frequency of builds this setup generates should be adequate at the moment, but can be reviewed later.
Once the code has been updated the build creates the octave packages, runs a package build, then attempts to install the package.
There are three kinds of issues I’ve encountered using this approach:

  • Octave package dependencies
  • Dependencies external to Octave
  • Incorrect package naming

Octave packages

There is a list of Octave packages, split as maintained and unmaintained packages. Most of the source code for these packages can be found in two places:

  • svn://svn.code.sf.net/p/octave/code/trunk/octave-forge
  • hg clone http://hg.code.sf.net/p/octave/*
Package Maintained Source
actuarial No http://hg.code.sf.net/p/octave/actuarial
ad No svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/ad
ann No svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/main/ann
audio No http://hg.code.sf.net/p/octave/audio
benchmark No http://hg.code.sf.net/p/octave/benchmark
bim Yes svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/bim
bioinfo No http://hg.code.sf.net/p/octave/bioinfo
cgi Yes svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/cgi
civil-engineering No svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/civil
communications Yes http://hg.code.sf.net/p/octave/communications
control Yes http://hg.code.sf.net/p/octave/control
data-smoothing Yes http://hg.code.sf.net/p/octave/data-smoothing
database Yes svn://svn.code.sf.net/p/octave/code/trunk/octave-forge
dataframe Yes http://hg.code.sf.net/p/octave/dataframe
dicom Yes http://hg.code.sf.net/p/octave/dicom
divand Yes http://hg.code.sf.net/p/octave/divand
econometrics Yes http://hg.code.sf.net/p/octave/econometrics
engine No svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/engine
fem-fenics Yes http://hg.code.sf.net/p/octave/fem-fenics
fenv No http://hg.code.sf.net/p/octave/fenv
financial Yes http://hg.code.sf.net/p/octave/financial
fits Yes http://hg.code.sf.net/p/octave/fits
fixed http://hg.code.sf.net/p/octave/fixed
fl-core Yes http://hg.code.sf.net/p/octave/fl-core
fpl Yes svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/fpl
fuzzy-logic-toolkit Yes http://hg.code.sf.net/p/octave/fuzzy-logic-toolkit
ga Yes http://hg.code.sf.net/p/octave/ga
galois http://hg.code.sf.net/p/octave/galois
general Yes http://hg.code.sf.net/p/octave/general
generate_html Yes http://hg.code.sf.net/p/octave/generate_html
generate_latex svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/generate_latex
geometry Yes http://hg.code.sf.net/p/octave/geometry
gnuplot No svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/gnuplot
graceplot svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/graceplot
graph http://hg.code.sf.net/p/octave/graph
gsl No http://hg.code.sf.net/p/octave/gsl
image-acquisition Yes http://hg.code.sf.net/p/octave/image-acquisition
image Yes http://hg.code.sf.net/p/octave/image
informationtheory No http://hg.code.sf.net/p/octave/info-theory
instrument-control Yes http://hg.code.sf.net/p/octave/instrument-control
integration No http://hg.code.sf.net/p/octave/integration
interval Yes http://hg.code.sf.net/p/octave/interval
io Yes http://hg.code.sf.net/p/octave/io
irsa No svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/main/irsa
java Yes
jhandles svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/jhandles
level-set Yes
linear-algebra Yes http://hg.code.sf.net/p/octave/linear-algebra
lssa Yes http://hg.code.sf.net/p/octave/lssa
ltfat Yes
macosx svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/MacOSX
mapping No http://hg.code.sf.net/p/octave/mapping
mechanics Yes http://hg.code.sf.net/p/octave/mechanics
miscellaneous Yes http://hg.code.sf.net/p/octave/miscellaneous
missing-functions No svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/main/missing-functions
mpi Yes http://hg.code.sf.net/p/octave/mpi
msh Yes svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/msh
multicore No svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/multicore
multi-precision http://hg.code.sf.net/p/octave/multi-precision
mvn Yes http://hg.code.sf.net/p/octave/mvn
nan Yes svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/NaN
ncarray Yes svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/ncArray
netcdf Yes svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/main/netcdf
ngspice http://hg.code.sf.net/p/octave/ngspice
nlwing2 No svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/nlwing2
nnet No svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/main/nnet
nurbs Yes svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/nurbs
ocs Yes svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/ocs
oct2mat No svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/oct2mat
octcdf Yes svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/main/octcdf
octclip Yes http://hg.code.sf.net/p/octave/octclip
octgpr No svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/main/octgpr
octproj Yes http://hg.code.sf.net/p/octave/octproj
ode svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/ode
odebvp No svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/main/odebvp
odepkg Yes http://hg.code.sf.net/p/octave/odepkg
optics Yes http://hg.code.sf.net/p/octave/optics
optim Yes http://hg.code.sf.net/p/octave/optim
optiminterp Yes http://hg.code.sf.net/p/octave/optiminterp
outliers No http://hg.code.sf.net/p/octave/outliers
parallel Yes http://hg.code.sf.net/p/octave/parallel
pdb No svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/pdb
perl svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/perl
plot No svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/main/plot
project-web http://hg.code.sf.net/p/octave/project-web
prony http://hg.code.sf.net/p/octave/prony
quaternion Yes http://hg.code.sf.net/p/octave/quaternion
queueing Yes svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/main/queueing
real2rgb svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/main/real2rgb
robotis svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/robotics
secs1d Yes svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/secs1d
secs2d Yes svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/secs2d
secs3d Yes svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/secs3d
signal Yes http://hg.code.sf.net/p/octave/signal
simp No http://hg.code.sf.net/p/octave/simp
sockets Yes http://hg.code.sf.net/p/octave/sockets
soctcl svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/soctcl
sparsersb svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/main/sparsersb
specfun Yes http://hg.code.sf.net/p/octave/specfun
special-matrix No http://hg.code.sf.net/p/octave/special-matrix
splines Yes http://hg.code.sf.net/p/octave/splines
statistics Yes http://hg.code.sf.net/p/octave/statistics
stk Yes http://hg.code.sf.net/p/octave/stk
strings Yes http://hg.code.sf.net/p/octave/strings
struct Yes http://hg.code.sf.net/p/octave/struct
symband No svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/symband
symbolic Yes
system-identification svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/main/system-identification
tcl-octave No svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/tk_octave
triangular svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/triangular
tsa Yes svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/tsa
video No http://hg.code.sf.net/p/octave/video
vrml Yes http://hg.code.sf.net/p/octave/vrml
wavelet http://hg.code.sf.net/p/octave/wavelet
windows Yes svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/windows
xraylib No svn://svn.code.sf.net/p/octave/code/trunk/octave-forge/extra/xraylib
zenity No http://hg.code.sf.net/p/octave/zenity