User:Andy1978: Difference between revisions
(→Core) |
|||
(36 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
== ToDo == | == ToDo == | ||
=== Core === | === Core === | ||
* fix imread bug with opaque images, see https://savannah.gnu.org/bugs/?func=detailitem&item_id=36820 | * <strike>fix imread bug with opaque images, see https://savannah.gnu.org/bugs/?func=detailitem&item_id=36820</strike> Thanks Carne | ||
* remove removed but still referenced function in "seealso" blocks | * <strike>FFTW multithreaded</strike> hg.savannah.gnu.org/hgweb/octave/rev/bde7731b2b83 | ||
* <strike> | * <strike>remove removed but still referenced function in "seealso" blocks</strike> | ||
* Add swisdom (single prec.) to /libinterp/dldfcn/fftw.cc documentation | |||
* linguist-qt4: octave-src/libgui$ "lupdate -recursive -no-obsolete -locations relative src qterminal graphics -ts languages/*ts" | |||
=== GUI === | |||
<strike>When opening and closing the GUI HDF5: infinite loop closing library</strike> [http://hg.savannah.gnu.org/hgweb/octave/rev/9c03b071fd7b] | |||
No icons in qt4 GUI? | |||
gconftool-2 --type boolean --set /desktop/gnome/interface/buttons_have_icons true | |||
gconftool-2 --type boolean --set /desktop/gnome/interface/menus_have_icons true | |||
=== Forge === | === Forge === | ||
==== signal or fltk plotting? ==== | |||
pkg load signal | |||
t=0:1/4e4:12; | |||
y=chirp(t,100,5,18000); | |||
graphics_toolkit fltk | |||
specgram(y) | |||
-> r300: Implementation error: Render targets are too big in r300_set_framebuffer_state, refusing to bind framebuffer state! | |||
==== video ==== | |||
<strike>fix build, see http://octave.1599824.n4.nabble.com/quot-package-video-is-empty-quot-td4656346.html</strike> | |||
==== signal ==== | |||
* findpeaks.m, print error if data is not a column vector (error: vertical dimensions mismatch (1x10000 vs 1x1) | |||
==== image ==== | ==== image ==== | ||
* implement [http://en.wikipedia.org/wiki/SURF SURF], integralImage is cumsum(cumsum(a,1),2) | * implement [http://en.wikipedia.org/wiki/SURF SURF], integralImage is cumsum(cumsum(a,1),2) | ||
* implement impixelinfo http://stackoverflow.com/questions/23706937/displaying-pixel-values-of-an-image-in-octave | |||
* implement getpixelposition, axes2pix, pix2map, map2pix | |||
===== corner/cornermetric, harris ===== | ===== corner/cornermetric, harris ===== | ||
First post on mailing list in 12.01.2013 http://octave.1599824.n4.nabble.com/corner-cornermetric-equivalent-in-octave-td4648802.html | First post on mailing list in 12.01.2013 http://octave.1599824.n4.nabble.com/corner-cornermetric-equivalent-in-octave-td4648802.html | ||
== Snippets == | == Snippets == | ||
Line 34: | Line 56: | ||
mtimes(num2cell(m,[1,2]){:}) | mtimes(num2cell(m,[1,2]){:}) | ||
mtimes(s{:}) | mtimes(s{:}) | ||
=== commands from which I regularly doesn't find the name === | |||
* octave_config_info () | |||
* merge (C's (a)? b: c); syntax | |||
=== libgraphicsmagick++3 quantum-depth === | |||
in debian wheezy | |||
sudo apt-get build-dep libgraphicsmagick++3 | |||
apt-get source libgraphicsmagick++3 | |||
edit debian/rules | |||
--with-quantum-depth=16 \ | |||
works without problems | |||
--with-quantum-depth=32 \ | |||
shows one error: | |||
UYVY format ... | |||
mean-error=0.0209018218321559, maximum-error=0.816509137487552 | |||
not ok 77 | |||
Failed 1/77 subtests | |||
debuild -i -us -uc -b | |||
dpkg -i .... | |||
== Tracking octave bugs with hg bisect== | == Tracking octave bugs with hg bisect== | ||
I had a strange problem when loading gzip compressed ascii files in octave. It failed dependent on the integer values. After some stripping I made a minimalistic test script (min_testcase_fails.m) which always fails in a current dev (88616c872933): | I had a [http://savannah.gnu.org/bugs/?39652 strange problem] when loading gzip compressed ascii files in octave. It failed dependent on the integer values. After some stripping I made a minimalistic test script (min_testcase_fails.m) which always fails in a current dev (88616c872933): | ||
fn="file2.txt" | fn="file2.txt" | ||
fid = fopen (fn,"w"); | fid = fopen (fn,"w"); | ||
Line 117: | Line 163: | ||
$BUILDDIR/run-octave -q ~/src/min_testcase_fails.m || exit 1 | $BUILDDIR/run-octave -q ~/src/min_testcase_fails.m || exit 1 | ||
exit 0 | exit 0 | ||
After making it executable, let hg bisect use it | |||
~/src/octave-src$ hg bisect -c ../bisect-loadsave.sh | |||
Now sit back and relax, this could last some hours... Finally: | |||
<pre>Änderungssatz 16554:03a28487fa9d: good | |||
Die erste fehlerhafte Revision ist: | |||
Änderung: 16555:04fb96f4bea1 | |||
Nutzer: John W. Eaton <jwe@octave.org> | |||
Datum: Tue Apr 23 12:57:16 2013 -0400 | |||
Zusammenfassung: allow double-click in file browser to load data files</pre> | |||
=== bisect bug 42612 === | |||
For bug #42612 I created a minimal script which fails: clf_fails_42612.m | |||
subplot (2,1,1); | |||
plot (1:5); | |||
legend ('hello', 'location', 'northwestoutside'); | |||
clf | |||
And the script which runs it, bisect_clf.sh: | |||
#!/bin/bash | |||
SRCDIR=~/src/octave-untouched-src | |||
BUILDDIR=~/src/bisect_build | |||
cd $BUILDDIR | |||
## Try a simple build first | |||
if ! make -j 6 | |||
then | |||
# make failed, run bootstrap and configure | |||
cd $SRCDIR | |||
./bootstrap || exit 127 | |||
cd $BUILDDIR | |||
$SRCDIR/configure FFLAGS=-g CFLAGS=-g CXXFLAGS=-g --enable-bounds-check --disable-java --disable-gui --disable-docs|| exit 127 | |||
make -j 7|| exit 127 | |||
fi | |||
cd $SRCDIR | |||
$BUILDDIR/run-octave -q clf_fails_42612.m | |||
ret=$? | |||
echo $(hg id) $ret >> clf_fails_42612.log | |||
exit $ret | |||
=== show bisect history === | |||
hg log -r "bisect(good) or bisect(bad)" --template "{rev}:{node|short} {bisect}\n" | |||
== Links == | |||
* [http://hg.code.sf.net/p/octave/image hgweb on sourceforge] | |||
* [http://mywiki.wooledge.org/BashFAQ/073 bash parameter expansion] |
Latest revision as of 20:09, 5 October 2016
ToDo[edit]
Core[edit]
fix imread bug with opaque images, see https://savannah.gnu.org/bugs/?func=detailitem&item_id=36820Thanks CarneFFTW multithreadedhg.savannah.gnu.org/hgweb/octave/rev/bde7731b2b83remove removed but still referenced function in "seealso" blocks
- Add swisdom (single prec.) to /libinterp/dldfcn/fftw.cc documentation
- linguist-qt4: octave-src/libgui$ "lupdate -recursive -no-obsolete -locations relative src qterminal graphics -ts languages/*ts"
GUI[edit]
When opening and closing the GUI HDF5: infinite loop closing library [1]
No icons in qt4 GUI?
gconftool-2 --type boolean --set /desktop/gnome/interface/buttons_have_icons true gconftool-2 --type boolean --set /desktop/gnome/interface/menus_have_icons true
Forge[edit]
signal or fltk plotting?[edit]
pkg load signal t=0:1/4e4:12; y=chirp(t,100,5,18000); graphics_toolkit fltk specgram(y)
-> r300: Implementation error: Render targets are too big in r300_set_framebuffer_state, refusing to bind framebuffer state!
video[edit]
fix build, see http://octave.1599824.n4.nabble.com/quot-package-video-is-empty-quot-td4656346.html
signal[edit]
- findpeaks.m, print error if data is not a column vector (error: vertical dimensions mismatch (1x10000 vs 1x1)
image[edit]
- implement SURF, integralImage is cumsum(cumsum(a,1),2)
- implement impixelinfo http://stackoverflow.com/questions/23706937/displaying-pixel-values-of-an-image-in-octave
- implement getpixelposition, axes2pix, pix2map, map2pix
corner/cornermetric, harris[edit]
First post on mailing list in 12.01.2013 http://octave.1599824.n4.nabble.com/corner-cornermetric-equivalent-in-octave-td4648802.html
Snippets[edit]
chain matrix multiplication[edit]
a=[1 2; 3 4]; b=[4 2; 8 1]; c=[2 3; 1 -1]; m=cat(3,a,b,c); s=cell(3,1); s{1}=a;s{2}=b; s{3}=c; a*b*c s{1}*s{2}*s{3} mtimes(num2cell(m,[1,2]){:}) mtimes(s{:})
commands from which I regularly doesn't find the name[edit]
- octave_config_info ()
- merge (C's (a)? b: c); syntax
libgraphicsmagick++3 quantum-depth[edit]
in debian wheezy
sudo apt-get build-dep libgraphicsmagick++3 apt-get source libgraphicsmagick++3
edit debian/rules
--with-quantum-depth=16 \
works without problems
--with-quantum-depth=32 \
shows one error:
UYVY format ... mean-error=0.0209018218321559, maximum-error=0.816509137487552 not ok 77 Failed 1/77 subtests
debuild -i -us -uc -b dpkg -i ....
Tracking octave bugs with hg bisect[edit]
I had a strange problem when loading gzip compressed ascii files in octave. It failed dependent on the integer values. After some stripping I made a minimalistic test script (min_testcase_fails.m) which always fails in a current dev (88616c872933):
fn="file2.txt" fid = fopen (fn,"w"); fprintf(fid, "%i %i %i %i\n",639, 25, 160, 978160); fprintf(fid, "%i %i %i %i\n",687, 25, 171, 978160); fprintf(fid, "%i %i %i %i\n",663, 31, 173, 978161); fprintf(fid, "%i %i %i %i\n",663, 15, 154, 978161); fprintf(fid, "%i %i %i %i\n",655, 21, 151, 978161); fclose(fid); ## gzip it! fn_gz=strcat(fn, ".gz"); cmd=cstrcat("gzip ",fn," -c > ",fn_gz) system(cmd); c=load("file2.txt.gz") #this fails in newer versions
When run:
$ octave -q min_testcase_fails.m fn = file2.txt cmd = gzip file2.txt -c > file2.txt.gz error: value on right hand side of assignment is undefined error: called from: error: /home/andy/src/octave-bugs/min_testcase_fails.m at line 17, column 2
If line 4 with "663, 15, 154, 978161" is changed to ""663, 16, 154, 978161", load works as expected. Strange, isn't it? I also had an old build (dev ab1c6e6d1be6 from Sun Oct 28 21:48:02 2012) and "load" worked in this version.
Running bisect[edit]
I decided to make a fresh clone in a separate directory:
cd ~/src hg clone http://www.octave.org/hg/octave octave-src cd octave-src hg bisect -b 88616c872933 hg bisect -g ab1c6e6d1be6
After this hg bisect uses a binary search strategy to test revisions:
Teste Änderungssatz 16428:f016a5342e19 (1380 Änderungssätze verbleiben, ~10 Tests)
So after checkout I had to compile the source tree (used ccache in the hope of faster checkout-compile cycles).
./bootstrap cd .. && mkdir octave-build && cd octave-build export CXX="ccache g++" export CC="ccache gcc" ../octave-src/configure make -j 7
After compilation I tried my test min_testcase_fails.m:
~/src/octave-build$ ./run-octave -q ../min_testcase_fails.m fn = file2.txt cmd = gzip file2.txt -c > file2.txt.gz c = 639 25 160 978160 687 25 171 978160 663 31 173 978161 663 15 154 978161 655 21 151 978161
So this is apparently a good one. Tell it hg bisect!
cd ../octave-src && hg bisect -g
After this you try make again, bootstrap && configure if make fails, rerun the testscript, tell hg bisect if it's good or bad and repeat this until the revision which introduced the problem is found. Or you can use "hg bisect --command", see next point.
hg bisect --command[edit]
I used Jordis bisect script for bug 32818 and modified it to my needs:
~/src$ cat bisect-loadsave.sh #!/bin/bash SRCDIR=~/src/octave-src BUILDDIR=~/src/octave-build cd $SRCDIR ## Try a simple build first if ! make -j 7 then cd $SRCDIR ./bootstrap || exit 127 #rm -rf $BUILDDIR #mkdir $BUILDDIR cd $BUILDDIR $SRCDIR/configure || exit 127 make -j 7|| exit 127 fi $BUILDDIR/run-octave -q ~/src/min_testcase_fails.m || exit 1 exit 0
After making it executable, let hg bisect use it
~/src/octave-src$ hg bisect -c ../bisect-loadsave.sh
Now sit back and relax, this could last some hours... Finally:
Änderungssatz 16554:03a28487fa9d: good Die erste fehlerhafte Revision ist: Änderung: 16555:04fb96f4bea1 Nutzer: John W. Eaton <jwe@octave.org> Datum: Tue Apr 23 12:57:16 2013 -0400 Zusammenfassung: allow double-click in file browser to load data files
bisect bug 42612[edit]
For bug #42612 I created a minimal script which fails: clf_fails_42612.m
subplot (2,1,1); plot (1:5); legend ('hello', 'location', 'northwestoutside'); clf
And the script which runs it, bisect_clf.sh:
#!/bin/bash SRCDIR=~/src/octave-untouched-src BUILDDIR=~/src/bisect_build cd $BUILDDIR ## Try a simple build first if ! make -j 6 then # make failed, run bootstrap and configure cd $SRCDIR ./bootstrap || exit 127 cd $BUILDDIR $SRCDIR/configure FFLAGS=-g CFLAGS=-g CXXFLAGS=-g --enable-bounds-check --disable-java --disable-gui --disable-docs|| exit 127 make -j 7|| exit 127 fi cd $SRCDIR $BUILDDIR/run-octave -q clf_fails_42612.m ret=$? echo $(hg id) $ret >> clf_fails_42612.log exit $ret
show bisect history[edit]
hg log -r "bisect(good) or bisect(bad)" --template "{rev}:{node|short} {bisect}\n"