You are not logged in.
hi. i´m trying to compile rlabplus.
here´s the PKGBUILD.
pkgname=rlab2
pkgver=2.2.9
pkgrel=1
pkgdesc="rlabplusis a continuation of work on an open-source scripting environment for scientific computations RLaB2"
url="http://rlabplus.sourceforge.net/index.html"
license=""
depends=('gsl' 'termcap-compat' 'ncurses' 'f2c')
makedepends=()
conflicts=()
replaces=()
backup=()
install=
source=(http://puzzle.dl.sourceforge.net/sourceforge/rlabplus/rlab-$pkgver.tgz)
#md5sums=('0cf6ea85bf74b5b34e34da1b6008dcde')
build() {
cd $startdir/src/rlab-2.2.9
./configure --prefix=/opt/rlabplus
make rlab || return 1
make prefix=$startdir/pkg/usr install
}
But it won´t finish. The first error that appears, is this one:
gcc -c -march=i686 -O2 -pipe -DHAVE_CONFIG_H -DASSERT_OFF -I./gc/include mdcf1.c
gcc -c -march=i686 -O2 -pipe -DHAVE_CONFIG_H -DASSERT_OFF -I./gc/include mdsf1.c
gcc -c -march=i686 -O2 -pipe -DHAVE_CONFIG_H -DASSERT_OFF -I./gc/include bltin2.c
bltin2.c:3850: warning: conflicting types for built-in function 'ccosh'
bltin2.c:3932: warning: conflicting types for built-in function 'csinh'
bltin2.c:4014: warning: conflicting types for built-in function 'ctanh'
bltin2.c:4257: warning: conflicting types for built-in function 'casinh'
gcc -c -DUSE_F2C -march=i686 -O2 -pipe -DHAVE_CONFIG_H -DASSERT_OFF -I./gc/include mdrf2.c
there are many error following,. I think they are all based on the error above.
g77 -Wl,-export-dynamic -Wl,-rpath /usr/local/lib -march=i686 -O2 -pipe -DHAVE_CONFIG_H -DASSERT_OFF -I./gc/include
main.o rlab.o lex.yy.o init.o code.o symbol.o list.o listnode.o op.o opapp.o opmat.o complex.o function.o rel.o util.o btree.o mm.o misc.o fpe.o ent.o mathl.o rfileio.o mdr.o class.o diss.o mdc.o mdr_mdc.o mds.o mdr_mds.o rfile.o bltin.o bltin1.o mdrf1.o print.o getline.o mdcf1.o mdsf1.o bltin2.o mdrf2.o ar.o mdcf2.o rfft.o sort.o r_plot.o rstring.o rdl.o odeb.o odesl.o chaos.o btreef1.o msr.o msrf1.o bltin3.o msc.o mscf1.o msrf2.o msrf3.o mscf2.o r_pgplot.o glpk_simplex.o gsl_levinu.o gsl_pdf.o gsl_spline.o gsl_diffint.o gsl_minimize.o gsl_rng.o gsl_stat.o gsl_findroot.o gsl_ndiff_md.o gsl_leastsquares.o gsl_nintegrate.o gsl_nintegrate_lt.o gsl_specfunc.o gsl_odeiv.o mdr_spf1.o claw1.o odr.o pz1rl.o pdecol.o dloess.o sprann.o bl.o lp.o ode.o acdc.o gcvspl.o 510.o claw1rl.o sleign2.o mirkdc.o coldae.o sparskit.o sparse.o ar1rl.o pzeros.o 688.o 579.o conmax2.o 811.o vode.o getopt.o getopt1.o ./gc/.libs/libgc.a -L/usr/local/lib -ldl -lc -lutil -L/usr/X11R6/lib/ -lX11 -L./pgplot -lpgplot -lcpgplot -lpthread -lblas -lgsl -lgslcblas -lreadline -lncurses -L/usr/lib -ltermcap -lieee -lm -lc -o rlab ./flibs/fftpack/libfftpack.a ./clibs/glpk/src/libglpk.a ./clibs/superlu/superlu.a ./clibs/umfpack/UMFPACK/Lib/libumfpack.a ./clibs/umfpack/AMD/Lib/libamd.a ./pgplot/libpgplot.a ./pgplot/libcpgplot.a ./flibs/sparskit2/libskit.a ./flibs/clawpack/libclaw.a ./flibs/odrpack/libodr.a ./clibs/cephes/libmd.a ./flibs/loess/libloess.a ./flibs/hompack/libhompack.a ./flibs/contin/libcontin.a ./flibs/odebim/libodebim.a ./flibs/arpack/libarpack.a ./flibs/bacol/libbacol.a ./flibs/minpack/libminpack.a ./flibs/genzpak/libgenzpak.a ./flibs/slatec/libslatec.a `[ -s "./clibs/sprannlib/lib/libsprann.a" ]&& echo "./clibs/sprannlib/lib/libsprann.a"` ./flibs/lapack/liblapack.a
bltin1.o: In function `Tmpnam':
bltin1.c:(.text+0x9cd): warning: the use of `tmpnam' is dangerous, better use `mkstemp'
acdc.o: In function `acdc_':
acdc.f:(.text+0x414): undefined reference to `f_open'
acdc.f:(.text+0x428): undefined reference to `s_wsle'
acdc.f:(.text+0x444): undefined reference to `do_lio'
acdc.f:(.text+0x45d): undefined reference to `do_lio'
acdc.f:(.text+0x462): undefined reference to `e_wsle'
acdc.f:(.text+0x470): undefined reference to `s_wsle'
acdc.f:(.text+0x486): undefined reference to `do_lio'
acdc.f:(.text+0x48e): undefined reference to `e_wsle'
acdc.f:(.text+0x4b8): undefined reference to `s_wsfe'
acdc.f:(.text+0x4d3): undefined reference to `do_fio'
acdc.f:(.text+0x4d8): undefined reference to `e_wsfe'
acdc.f:(.text+0x4e6): undefined reference to `s_wsfe'
acdc.f:(.text+0x4fb): undefined reference to `do_fio'
acdc.f:(.text+0x510): undefined reference to `do_fio'
acdc.f:(.text+0x515): undefined reference to `e_wsfe'
acdc.f:(.text+0x534): undefined reference to `s_wsfe'
acdc.f:(.text+0x546): undefined reference to `do_fio'
acdc.f:(.text+0x576): undefined reference to `do_fio'
acdc.f:(.text+0x5aa): undefined reference to `do_fio'
acdc.f:(.text+0x5cd): undefined reference to `do_fio'
acdc.f:(.text+0x5e1): undefined reference to `e_wsfe'
acdc.f:(.text+0x5f0): undefined reference to `s_wsfe'
acdc.f:(.text+0x623): undefined reference to `do_fio'
acdc.f:(.text+0x667): undefined reference to `do_fio'
acdc.f:(.text+0x67e): undefined reference to `do_fio'
acdc.f:(.text+0x695): undefined reference to `do_fio'
acdc.f:(.text+0x6ac): undefined reference to `do_fio'
acdc.o:acdc.f:(.text+0x6c1): more undefined references to `do_fio' follow
acdc.o: In function `acdc_':
acdc.f:(.text+0x6fb): undefined reference to `e_wsfe'
acdc.f:(.text+0x70a): undefined reference to `s_wsfe'
acdc.f:(.text+0x73d): undefined reference to `do_fio'
acdc.f:(.text+0x781): undefined reference to `do_fio'
acdc.f:(.text+0x798): undefined reference to `do_fio'
acdc.f:(.text+0x7af): undefined reference to `do_fio'
acdc.f:(.text+0x7cc): undefined reference to `do_fio'
acdc.o:acdc.f:(.text+0x7e1): more undefined references to `do_fio' follow
acdc.o: In function `acdc_':
acdc.f:(.text+0x81b): undefined reference to `e_wsfe'
acdc.f:(.text+0x85a): undefined reference to `do_fio'
acdc.f:(.text+0xbf5): undefined reference to `s_wsfe'
acdc.f:(.text+0xc07): undefined reference to `do_fio'
acdc.f:(.text+0xc19): undefined reference to `do_fio'
acdc.f:(.text+0xc1e): undefined reference to `e_wsfe'
acdc.f:(.text+0x10a1): undefined reference to `s_wsfe'
acdc.f:(.text+0x10b3): undefined reference to `do_fio'
acdc.f:(.text+0x10c5): undefined reference to `do_fio'
acdc.f:(.text+0x10ca): undefined reference to `e_wsfe'
acdc.f:(.text+0x13f2): undefined reference to `s_wsfe'
acdc.f:(.text+0x140a): undefined reference to `do_fio'
acdc.f:(.text+0x140f): undefined reference to `e_wsfe'
acdc.f:(.text+0x159e): undefined reference to `s_wsfe'
acdc.f:(.text+0x15b0): undefined reference to `do_fio'
acdc.f:(.text+0x15b5): undefined reference to `e_wsfe'
acdc.f:(.text+0x15fd): undefined reference to `s_wsfe'
acdc.f:(.text+0x1602): undefined reference to `e_wsfe'
acdc.f:(.text+0x167f): undefined reference to `s_wsfe'
acdc.f:(.text+0x1697): undefined reference to `do_fio'
acdc.f:(.text+0x169c): undefined reference to `e_wsfe'
acdc.f:(.text+0x1813): undefined reference to `s_wsfe'
acdc.f:(.text+0x182e): undefined reference to `do_fio'
acdc.f:(.text+0x1833): undefined reference to `e_wsfe'
acdc.f:(.text+0x1bb4): undefined reference to `s_wsfe'
acdc.f:(.text+0x1bc6): undefined reference to `do_fio'
acdc.f:(.text+0x1bcb): undefined reference to `e_wsfe'
acdc.f:(.text+0x1c88): undefined reference to `s_wsfe'
acdc.f:(.text+0x1ca0): undefined reference to `do_fio'
acdc.f:(.text+0x1ca5): undefined reference to `e_wsfe'
acdc.f:(.text+0x2664): undefined reference to `s_wsfe'
.
.
.
zhseqr.f:(.text+0xa1f): undefined reference to `s_cat'
./flibs/lapack/liblapack.a(zlahqr.o): In function `zlahqr_':
zlahqr.f:(.text+0x5c2): undefined reference to `z_sqrt'
./flibs/lapack/liblapack.a(ztrtri.o): In function `ztrtri_':
ztrtri.f:(.text+0x20f): undefined reference to `s_cat'
./flibs/lapack/liblapack.a(zunmbr.o): In function `zunmbr_':
zunmbr.f:(.text+0x334): undefined reference to `s_cat'
zunmbr.f:(.text+0x3d0): undefined reference to `s_cat'
zunmbr.f:(.text+0x470): undefined reference to `s_cat'
zunmbr.f:(.text+0x503): undefined reference to `s_cat'
./flibs/lapack/liblapack.a(zunmlq.o):zunmlq.f:(.text+0x281): more undefined references to `s_cat' follow
./pgplot/libpgplot.so: undefined reference to `f_inqu'
./pgplot/libpgplot.so: undefined reference to `G77_getenv_0'
collect2: ld returned 1 exit status
make: *** [rlab] Error 1
So anybody can help me?
[/code]
Offline
Add -lf2c in the linking stage
Offline
hi,
i´ve tried it with -ff2c.
I´ve edit the Makefile and changed g77 to gfortran -ff2c.
But the doesn´t help.
Offline
It´s me again.
I´ve installed gcc-3.4.3 and gcc-g77-3.4.3 and now i can compile the package.
Offline
Great!
Offline
But it would be better if the program would compil with gfortran.
Than it would be much easier to put the app to AUR.
Offline
Yes that's what I was trying to do.
To do so, you have to compile again all the sublibraries (because they are precompiled with gcc-g77 and thus need some libraries from gcc-g77 that are different to the ones in gcc-fortran), but I got some errors while doing this.
Offline
ok. i see.
So i will but a package to aur for gcc-g77-3.4.6.
There´s already on for gcc-3.4.6
They will be installed into /opt/gcc34.
Offline
That seems the best idea.
I hope rlabplus devs will move to gcc-fortran in their future release
Offline
OK.
I´ve got a working PKBUILD for gcc-g77 and rlab2 now.
I´ll upload all this to AUR later.
Offline
Yes that's what I was trying to do.
To do so, you have to compile again all the sublibraries (because they are precompiled with gcc-g77 and thus need some libraries from gcc-g77 that are different to the ones in gcc-fortran), but I got some errors while doing this.
I also got an error but I fixed it. I'm still working on it...
Offline
I got it to build and run (in the build directory) with gcc-fortran. I still need to check the installation part, clean PKGBUILD and check out various issues. I'll post the PKGBUILD when it'll be done.
Offline
Done.
pkgname=rlab2
pkgver=2.2.9
pkgrel=1
pkgdesc="rlabplusis a continuation of work on an open-source scripting environment for scientific computations RLaB2"
url="http://rlabplus.sourceforge.net/index.html"
license="GPL"
depends=('gsl' 'termcap-compat' 'pgplot' 'blas' 'gcc-fortran' 'libx11' 'readline')
source=(http://dl.sourceforge.net/sourceforge/rlabplus/rlab-$pkgver.tgz parzen.patch)
md5sums=('0cf6ea85bf74b5b34e34da1b6008dcde' '9ac00d11e44e6054ee5e34ecd525530d')
build() {
cd $startdir/src/rlab-2.2.9
# Clean objects files/libs
find . -name '*.o' -exec rm {} ;
find . -name '*.a' -exec rm {} ;
find . -name '*.so' -exec rm {} ;
# Patch code
sed -i 's/SIGN(.5,FACT-1.)/SIGN(dble(.5),dble(FACT-1.))/' 579.f
sed -i 's/DATA/ DATA/' flibs/slatec/src/i1mach.f
sed -i 's/ 1/1/' flibs/contin/src/{coqual.f,root.f}
patch -p1 -R < ../parzen.patch
cp lex.yy.c.orig lex.yy.c
./configure --prefix=/usr
sed -i 's|/usr/local/lib|/usr/lib|' Makefile
sed -i 's|./pgplot/|/usr/lib/|g' Makefile
cd clibs
for dir in cephes glpk superlu ;do
cd $dir; make LDFLAGS+=-lgfortran || return 1; cd ..
done
cd sprannlib/src; make || return 1; cd ../..
cd umfpack
for dir in AMD UMFPACK ;do
cd $dir; make || return 1; cd ..
done
cd ../../flibs
for dir in sparskit2 clawpack odrpack loess hompack contin odebim bacol minpack genzpak slatec lapack ;do
cd $dir; make F77="gfortran -c" FORTRAN=gfortran G77=gfortran FC=gfortran || return 1; cd ..
done
cd arpack; make F77="gfortran -c" FORTRAN=gfortran G77=gfortran FC=gfortran lib || return 1; cd ../..
make F77=gfortran G77=gfortran FCONV="-DUSE_F2C" || return 1
make prefix=$startdir/pkg/usr INSTALL=/bin/install install
chmod 644 $startdir/pkg/usr/lib/rlab-2.2.9/toolbox/spy.r
sed -i -e "s|RROOT="$startdir/pkg/usr"|RROOT="/usr"|" $startdir/pkg/usr/bin/rlab2
}
I've uploaded pgplot in AUR. For the blas dependency, the community package doesn't have the dynamic lib. Use this PKGBUILD:
# Contributor: William Rea <sillywilly>
pkgname=blas
pkgver=19980702
pkgrel=2
pkgdesc="Basic Linear Algebra Subprograms"
url="http://www.netlib.org/blas"
license="public-domain"
depends=('glibc')
makedepends=('gcc-fortran')
source=(http://www.netlib.org/blas/blas.tgz
Makefile)
md5sums=('5811e4b3dffa7a10956abf923cec1bd4' '497f389126aa0440754de491fec5ebae')
build() {
cd $startdir/src
FC="gfortran" FFLAGS="${CFLAGS}" make static shared
install -d $startdir/pkg/usr/lib
install -m644 libblas.a $startdir/pkg/usr/lib
install -m755 libblas.so.3.0.3 $startdir/pkg/usr/lib
ln -s libblas.so.3.0.3 $startdir/pkg/usr/lib/libblas.so
ln -s libblas.so.3.0.3 $startdir/pkg/usr/lib/libblas.so.3
}
And the patch (Legout: I can sen it to you if cut'n'pasting doesn't work):
--- rlab-2.2.9/clibs/sprannlib/src/stat/parzen.c 2006-07-08 14:23:46.000000000 -0400
+++ rlab-2.2.9/clibs/sprannlib/src/stat/parzen.c.orig 2006-07-08 14:16:20.000000000 -0400
@@ -408,37 +408,6 @@
}
/*
- * FUNC Calculate the criterion function.
- */
-
-static double func (double s)
-{
- double sk, fc, f, ff, p, dis;
- int i, j;
-
- sk = -1.0 / (2.0 * s * s);
- fc = 0.0;
-
- for (i = 0; i < size; i++)
- {
- for (f = ff = j = 0; j < size; j++)
- {
- if (i != j)
- {
- dis = d(i, j);
- p = exp((double) (sk * dis));
- f += p;
- ff += dis * p;
- }
- }
- fc += ff / (f * s * s);
- }
- fc -= (double) (size * dim);
-
- return fc;
-}
-
-/*
* PARZEN_BEST_S Calculate optimal value of parzen smoothing parameter s for
* a certain class. It uses the following inputs:
*
@@ -496,6 +465,37 @@
return s3;
}
+/*
+ * FUNC Calculate the criterion function.
+ */
+
+static double func (double s)
+{
+ double sk, fc, f, ff, p, dis;
+ int i, j;
+
+ sk = -1.0 / (2.0 * s * s);
+ fc = 0.0;
+
+ for (i = 0; i < size; i++)
+ {
+ for (f = ff = j = 0; j < size; j++)
+ {
+ if (i != j)
+ {
+ dis = d(i, j);
+ p = exp((double) (sk * dis));
+ f += p;
+ ff += dis * p;
+ }
+ }
+ fc += ff / (f * s * s);
+ }
+ fc -= (double) (size * dim);
+
+ return fc;
+}
+
#undef PARZEN
/*
Offline
The power of the TU!
That was really not an easy one, great job!
Offline
SNOWMAN YOU ARE THE BEST :-D
Thanks very much.
If it´s ok for you, i´ll send your patch to Marijan Kostrun.
I think he would be happy seeing your patch.
Offline
I´ve forgot one thing.
I´ve contaced the developer of rlab2, and asked him, if other blas-libraries will work fine with rlab2.
I´ll post his answer here:
I timed the matrix inverting operation on my machine in matlab and in
rlab. When I use goto's blas I get same timings on matlab as on rlab.
When using any other blas for rlab I get up to three times slower.
Goto's library (fortran) is free and I do not see problems in using it.
snowman, will you upload rlab2 to aur?[/code]
Offline
ok. tried the PKGBUILD and got an error:
bltin1.o: In function `Tmpnam':
bltin1.c:(.text+0xa0f): warning: the use of `tmpnam' is dangerous, better use `mkstemp'
/usr/lib/libpgplot.so: undefined reference to `png_set_text'
/usr/lib/libpgplot.so: undefined reference to `png_set_IHDR'
/usr/lib/libpgplot.so: undefined reference to `png_set_tRNS'
/usr/lib/libpgplot.so: undefined reference to `png_create_write_struct'
/usr/lib/libpgplot.so: undefined reference to `png_write_row'
/usr/lib/libpgplot.so: undefined reference to `png_write_info'
/usr/lib/libpgplot.so: undefined reference to `png_set_PLTE'
/usr/lib/libpgplot.so: undefined reference to `png_write_end'
/usr/lib/libpgplot.so: undefined reference to `png_create_info_struct'
/usr/lib/libpgplot.so: undefined reference to `png_destroy_write_struct'
/usr/lib/libpgplot.so: undefined reference to `png_init_io'
collect2: ld returned 1 exit status
make: *** [rlab] Error 1
Offline
1. patch: No problem. Wait before sending him the patch. This one is reversed. I'll make a better one.
2. blas: It was looking for a dynamic blas library. I just assumed that it wasn't included in rlab's tarball. I'll check to see if it's there and will use it instead of the community blas (netlib). Otherwise, I'll do a PKGBUILD for Goto's blas.
3. AUR: Unless you want to maintain it in AUR, I'll upload rlab in AUR once it's complete.
4. pgplot: Are you using pgplot 5.2.2-2 ? I think I know what happened. I updated pgplot and didn't tried to rebuild rlab afterwards. Either pgplot or rlab needs to be fixed. I'll check it out.
Offline
yes. i´ve used pgplot 5.2.2-2 from aur.
and no i won´t maintain the program. you´ve patched it and you´ve wrote the PKGBUILD. So i think rlab2 is in better hands if you´ll maintain it.
Offline
It should build with pgplot 5.2.2-3
OK, I'll put it in AUR when it'll be ready.
Offline
Offline
update:
I won't use goto's blas because of:
a) licensing issues. It it free but uses a strict licence (you even need to register to get it). That's why it wasn't in rlab's tarball. It can't go in community. A PKGBUILD in AUR could be OK but I'm not sure because of the registration part.
b) From what I could understand on rlab's home page, it uses different sources (or creates libs) that depends on the CPU type and cache size. That explains the high performance of goto blas. Rlab's site suggest to making a blas.so symlink but it might be difficult (impossible?) to make a PKGBUILD.
If you want to make extensive use of the blas functions and the performance gain with the goto lib would be significant, get the goto source. I'll help you building/settting it up.
The rlab's doc talks about running "make check" after building rlab. It basically runs "rlab test.r" to see if rlab works properly. The problems is that it seg faults. I've fixed 2 obvious bugs in the test.r file. It took me further in the tests but it's seg faulting again. As I don't know rlab's language (Legout: are you familiar with it?), I'm stuck. I don't know if it's another problem with the test.r file or with rlab itself.
We could just not do the "make check" step but what if there's a problem with rlab...
I could compile with flags that will give an actual error message but I don't have much time to do that and it might not help a lot.
Offline
hi,
first thanks again for this package.
I can see the problems you are talking about with goto´s blas. Building and linking is very easy. So everbody, that wanna use this blas can reinstall it itself.
Maybe and information in rlab.install would be useful.
And to your problems running the test.r i´ll contact the developer.
He alreday told me, that there were some changes between rlab 2.2.8 and 2.2.9, he´ll update the manual.
I´ve tested some of the examples in the rlab-test package that can be downloaded at rlab´s site. Most of them runs fine. But some segfaults.
Maybe u´ll contact the developer of rlab. I´ve wrote some mails with him, and he answers my questions fast and friendly. I think he´s happy that someone is interested in rlab. He´s a physicist like you and me (offical in half a year ).
And thanks again for rlab. I´m looking forward to do some simulations with rlab for my diploma. If it won´t work as i think, i´ll use octave or pyhton with scipy/numpy.
Offline
Snowman, i´ve sended your patch for parzen.c to the developer of rlabplus.
I´ll post his answer for you:
The patch for parzen is not needed as the content
of the patch is a change of indentation to a standard. Moreover, the
whole file, parzen.c, is not needed - I left it because I was lazy too
remove it - what is implemented in rlabplus is classify.parzen(..)
which uses the function gnu_dparzen.c in the same directory. I did
talk to the owners of the library and they gave me a green light to
incorporate parts of it in rlabplus.
Offline
snowman, i´m still missing rlab in AUR;)
Thanks again
Offline