Opened 14 years ago

Last modified 10 years ago

#29595 new request

Port of Scilab

Reported by: sylvestre@… Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: petrus.hyvonen@…, cooljeanius (Eric Gallager), mojca (Mojca Miklavec), locober@…, petrrr, Schamschula (Marius Schamschula)
Port:

Description

Hello,

It would be nice to have Scilab available in MacPorts. It supports Mac OS X and I can provide help in the packaging.

Thanks Sylvestre

Attachments (5)

config.log (237.4 KB) - added by cooljeanius (Eric Gallager) 12 years ago.
config.log from failure to find lapack
config.2.log (236.0 KB) - added by sylvestre@… 12 years ago.
Working config.log
configure.ac.rej (411 bytes) - added by cooljeanius (Eric Gallager) 12 years ago.
rejects from failed patch after updating 5.4.0 to 5.4.1
Portfile (13.1 KB) - added by cooljeanius (Eric Gallager) 11 years ago.
Portfile for Scilab
files.zip (31.1 KB) - added by cooljeanius (Eric Gallager) 11 years ago.
zip of ${filespath} directory (to be placed next to Portfile)

Download all attachments as: .zip

Change History (49)

comment:1 Changed 13 years ago by raiyan.kabir@…

I also need Scilab in MacPort. I hope it will be added in a future update.

comment:2 Changed 13 years ago by sylvestre@…

Is there anyway to pay some consultants to see that happen ? (it is officially supported by upstream)

comment:3 Changed 13 years ago by petrus.hyvonen@…

Cc: petrus.hyvonen@… added

Cc Me!

comment:4 Changed 12 years ago by cooljeanius (Eric Gallager)

Cc: egall@… added

Cc Me!

comment:5 Changed 12 years ago by cooljeanius (Eric Gallager)

It might be helpful to use Fink's package for Scilab as a reference when creating this portfile: http://fink.cvs.sourceforge.net/fink/dists/10.4/stable/main/finkinfo/sci/scilab.info?view=markup

comment:6 Changed 12 years ago by sylvestre@…

The fink package is an (very) old version of Scilab.

By the way, as upstream, I tested the build of Scilab using MacPorts dependencies and it works fine out of the box (beside some java packages missing).

comment:7 in reply to:  6 Changed 12 years ago by cooljeanius (Eric Gallager)

Replying to sylvestre@…:

By the way, as upstream, I tested the build of Scilab using MacPorts dependencies and it works fine out of the box (beside some java packages missing).

Really? Did you do this manually? If so, which flags did you have to set to get it to work (if any)?

comment:8 Changed 12 years ago by sylvestre@…

If manually=no using macports packaging format, yes.

Otherwise, besides the Java dependencies, the plain configure with normal options should work (just need --without-tk).

I am available for support.

Version 1, edited 12 years ago by sylvestre@… (previous) (next) (diff)

comment:9 Changed 12 years ago by sylvestre@…

FYI, Scilab has a GSoC proposal about a macports package if anyone is interested to package Scilab + its dependencies. http://wiki.scilab.org/GSoC_project_proposal

comment:10 Changed 12 years ago by cooljeanius (Eric Gallager)

ok, I'm working on it. Atlas takes a while to build so I can't really start testing until after that finishes, seeing as it's a dependency...

comment:11 Changed 12 years ago by sylvestre@…

For building, you could use refblas (I don't know how it is called in Macports). Slow at runtime but same ABI to Scilab will behave the same.

comment:12 in reply to:  11 Changed 12 years ago by cooljeanius (Eric Gallager)

Replying to sylvestre@…:

For building, you could use refblas (I don't know how it is called in Macports). Slow at runtime but same ABI to Scilab will behave the same.

Hm, port search refblas doesn't turn anything up... anyway you can see my progress so far at https://github.com/cooljeanius/LocalPorts/blob/master/science/scilab/Portfile

(I haven't managed to get it to build yet so that's why I'm not actually submitting it as an actual attachment yet... I think I know what I still need to do though.)

comment:13 Changed 12 years ago by sylvestre@…

Sounds great.

Let me know if you want me to apply some of the changes in the configure.ac

Some comments:

  • libgtkhtml, readline, Xaw3d, cairo, glitz, gtk2, libpng, pango, pixman, imake, tk and vte should not be necessary
  • xmkmf is not used
  • --with-gfortran is not necessary

You will likely have to package some java packages too...

comment:14 in reply to:  13 Changed 12 years ago by cooljeanius (Eric Gallager)

Replying to sylvestre@…:

Let me know if you want me to apply some of the changes in the configure.ac

Most of those are just to make autoscan happy; I haven't actually made any of the changes to the fink_prefix argument to work with MacPorts instead yet, and that was why I had started to edit it in the first place.

Some comments:

  • libgtkhtml, readline, Xaw3d, cairo, glitz, gtk2, libpng, pango, pixman, imake, tk and vte should not be necessary

libgtkhtml, readline, Xaw3d, cairo, glitz, gtk2, libpng, pango, pixman, and vte were all listed as dependencies for the Fink package, so that's why I included them here. tk is because Fink has tcltk as a single package so included each of its pieces. As for imake, see my note about xmkmf below.

  • xmkmf is not used

I included that because ./configure --help said it was an influential environment variable...

  • --with-gfortran is not necessary

Again, I just took that from the Fink package..

comment:15 Changed 12 years ago by cooljeanius (Eric Gallager)

OK, I worked past my previous problems; now I'm having some trouble getting the configure script to figure out how to link against lapack correctly...

comment:16 Changed 12 years ago by sylvestre@…

What is the error message you are getting ?

comment:17 Changed 12 years ago by cooljeanius (Eric Gallager)

I'll attach my latest config.log. How about you attach your config.log from when you said you managed to get Scilab to build against MacPorts libraries?

Changed 12 years ago by cooljeanius (Eric Gallager)

Attachment: config.log added

config.log from failure to find lapack

comment:18 Changed 12 years ago by sylvestre@…

Looks like atlas has been compiled as static:

_ATL_ilaenv in liblapack.a(ATL_ilaenv.o)

I will send you the config.log tomorrow.

comment:19 in reply to:  18 Changed 12 years ago by cooljeanius (Eric Gallager)

Replying to sylvestre@…:

Looks like atlas has been compiled as static:

_ATL_ilaenv in liblapack.a(ATL_ilaenv.o)

That's just one of the libs that atlas installs:

gl00b05047:macportsscripts root# port contents atlas | grep lib
  /opt/local/lib/libatlas.a
  /opt/local/lib/libcblas.a
  /opt/local/lib/libf77blas.a
  /opt/local/lib/liblapack.a
  /opt/local/lib/libptcblas.a
  /opt/local/lib/libptf77blas.a
  /opt/local/lib/libsatlas.dylib
  /opt/local/lib/libtatlas.dylib

Should I be telling it to link against a different one of them?

comment:20 in reply to:  18 Changed 12 years ago by cooljeanius (Eric Gallager)

Replying to sylvestre@…:

I will send you the config.log tomorrow.

So... tomorrow has come and passed...

comment:21 Changed 12 years ago by sylvestre@…

Sorry, I haven't receive it yet (I did it on a computer friend)

Changed 12 years ago by sylvestre@…

Attachment: config.2.log added

Working config.log

comment:22 Changed 12 years ago by sylvestre@…

Sorry about the delay. The config.2.log​ should have most of the information.

comment:23 Changed 12 years ago by cooljeanius (Eric Gallager)

hm, I'm still having problems with atlas... someone should cc vince@… on this, seeing as he's the maintainer for atlas.

comment:24 Changed 12 years ago by sylvestre@…

@egall any news about the atlas issue ?

comment:25 in reply to:  24 Changed 12 years ago by cooljeanius (Eric Gallager)

Replying to sylvestre@…:

@egall any news about the atlas issue ?

Well it turns out there are actually a lot of atlas issues:

https://trac.macports.org/report/16?PORT=atlas

(some of them are preventing atlas from building for me currently)

Last edited 12 years ago by cooljeanius (Eric Gallager) (previous) (diff)

comment:26 Changed 12 years ago by cooljeanius (Eric Gallager)

ok, atlas issues are mostly worked out now, although now I have to update the portfile to 5.4.1... doing so broke my patch for configure.ac, so I'm commenting that out for now...

Changed 12 years ago by cooljeanius (Eric Gallager)

Attachment: configure.ac.rej added

rejects from failed patch after updating 5.4.0 to 5.4.1

comment:27 Changed 11 years ago by cooljeanius (Eric Gallager)

now arpack has some issues that would probably have to be worked out first: #39365

comment:28 Changed 11 years ago by mojca (Mojca Miklavec)

Just a note: if I compile the failing program from your config.log:

/* Define cheev_ to an innocuous variant, in case <limits.h> declares cheev_.
   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
#define cheev_ innocuous_cheev_

/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char cheev_ (); below.
    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
    <limits.h> exists even on freestanding compilers.  */

#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif

#undef cheev_

/* Override any GCC internal prototype to avoid an error.
   Use char because int might match the return type of a GCC
   builtin and then its argument prototype would still apply.  */
#ifdef __cplusplus
extern "C"
#endif
char cheev_ ();
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined __stub_cheev_ || defined __stub___cheev_
choke me
#endif

int
main ()
{
return cheev_ ();
  ;
  return 0;
}

then

clang config.log -llapack

works (it takes the library from /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib), but

clang conftest.c -llapack -L/opt/local/lib

fails. See also #40317.

comment:29 Changed 11 years ago by mojca (Mojca Miklavec)

Cc: mojca@… added

Cc Me!

comment:30 in reply to:  28 Changed 11 years ago by cooljeanius (Eric Gallager)

Replying to mojca@…:

then

clang config.log -llapack

works (it takes the library from /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib), but

clang conftest.c -llapack -L/opt/local/lib

fails. See also #40317.

Wait I don't get why this happens... is the file you're compiling in each case (config.log and conftest.c) actually the same in each case, just with different names?

comment:31 Changed 11 years ago by mojca (Mojca Miklavec)

I'm sorry. The first line should have been

clang conftest.c -llapack

of course.

comment:32 Changed 11 years ago by mojca (Mojca Miklavec)

> clang conftest.c -llapack
# OK

> clang conftest.c -llapack -L/opt/local/lib
Undefined symbols for architecture x86_64:
  "_ATL_cGetNB", referenced from:
      _ATL_ilaenv in liblapack.a(ATL_ilaenv.o)
  "_ATL_dGetNB", referenced from:
      _ATL_ilaenv in liblapack.a(ATL_ilaenv.o)
  "_ATL_sGetNB", referenced from:
      _ATL_ilaenv in liblapack.a(ATL_ilaenv.o)
  "_ATL_sscal", referenced from:
      _ATL_clacgv in liblapack.a(ATL_clacgv.o)
  "_ATL_zGetNB", referenced from:
      _ATL_ilaenv in liblapack.a(ATL_ilaenv.o)
  "__gfortran_compare_string", referenced from:
      _ilaenv_ in liblapack.a(ilaenv.o)
  "_caxpy_", referenced from:
      _chetd2_ in liblapack.a(chetd2.o)
      _clatrd_ in liblapack.a(clatrd.o)
  "_cblas_ccopy", referenced from:
      _ATL_clarfb in liblapack.a(ATL_clarfb.o)
  "_cblas_cdotc_sub", referenced from:
      _ATL_clarftFC in liblapack.a(ATL_clarft.o)
      _ATL_clarftBC in liblapack.a(ATL_clarft.o)
      _ATL_clarftFR in liblapack.a(ATL_clarft.o)
      _ATL_clarftBR in liblapack.a(ATL_clarft.o)
  "_cblas_cdotu_sub", referenced from:
      _ATL_clarftFC in liblapack.a(ATL_clarft.o)
      _ATL_clarftBC in liblapack.a(ATL_clarft.o)
      _ATL_clarftFR in liblapack.a(ATL_clarft.o)
      _ATL_clarftBR in liblapack.a(ATL_clarft.o)
  "_cblas_cgemm", referenced from:
      _ATL_clarfb in liblapack.a(ATL_clarfb.o)
      _ATL_clarft_blockFC in liblapack.a(ATL_clarft.o)
      _ATL_clarft_blockFR in liblapack.a(ATL_clarft.o)
      _ATL_clarft_blockBC in liblapack.a(ATL_clarft.o)
      _ATL_clarft_blockBR in liblapack.a(ATL_clarft.o)
  "_cblas_ctrmm", referenced from:
      _ATL_clarfb in liblapack.a(ATL_clarfb.o)
      _ATL_clarft_blockFC in liblapack.a(ATL_clarft.o)
      _ATL_clarft_blockFR in liblapack.a(ATL_clarft.o)
      _ATL_clarft_blockBC in liblapack.a(ATL_clarft.o)
      _ATL_clarft_blockBR in liblapack.a(ATL_clarft.o)
  "_cdotc_", referenced from:
      _chetd2_ in liblapack.a(chetd2.o)
      _clatrd_ in liblapack.a(clatrd.o)
  "_cgemv_", referenced from:
      _clatrd_ in liblapack.a(clatrd.o)
      _clarf_ in liblapack.a(clarf.o)
  "_cgerc_", referenced from:
      _clarf_ in liblapack.a(clarf.o)
  "_chemv_", referenced from:
      _chetd2_ in liblapack.a(chetd2.o)
      _clatrd_ in liblapack.a(clatrd.o)
  "_cher2_", referenced from:
      _chetd2_ in liblapack.a(chetd2.o)
  "_cher2k_", referenced from:
      _chetrd_ in liblapack.a(chetrd.o)
  "_cscal_", referenced from:
      _clatrd_ in liblapack.a(clatrd.o)
      _clarfg_ in liblapack.a(clarfg.o)
      _cung2l_ in liblapack.a(cung2l.o)
      _cung2r_ in liblapack.a(cung2r.o)
  "_csscal_", referenced from:
      _clarfg_ in liblapack.a(clarfg.o)
  "_cswap_", referenced from:
      _csteqr_ in liblapack.a(csteqr.o)
  "_lsame_", referenced from:
      _cheev_ in liblapack.a(cheev.o)
      _chetrd_ in liblapack.a(chetrd.o)
      _clanhe_ in liblapack.a(clanhe.o)
      _clascl_ in liblapack.a(clascl.o)
      _csteqr_ in liblapack.a(csteqr.o)
      _cungtr_ in liblapack.a(cungtr.o)
      _ilaenv_ in liblapack.a(ilaenv.o)
      ...
  "_scnrm2_", referenced from:
      _clarfg_ in liblapack.a(clarfg.o)
  "_sscal_", referenced from:
      _cheev_ in liblapack.a(cheev.o)
  "_xerbla_", referenced from:
      _cheev_ in liblapack.a(cheev.o)
      _chetrd_ in liblapack.a(chetrd.o)
      _clascl_ in liblapack.a(clascl.o)
      _csteqr_ in liblapack.a(csteqr.o)
      _cungtr_ in liblapack.a(cungtr.o)
      _ssterf_ in liblapack.a(ssterf.o)
      _chetd2_ in liblapack.a(chetd2.o)
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

comment:33 Changed 11 years ago by cooljeanius (Eric Gallager)

Well I can't exactly go removing -L${prefix}/lib from the configure.ldflags... ld needs to look in there for other things...

comment:34 Changed 11 years ago by mojca (Mojca Miklavec)

All I wanted to say is that there is something suspicious going on with atlas.

comment:35 in reply to:  34 Changed 11 years ago by sylvestre@…

Replying to mojca@…:

All I wanted to say is that there is something suspicious going on with atlas.

Yes, looks like the liblapack library has not been compiled with an explicit -lblas.

Adding -lblas to the command

clang conftest.c -llapack

should fix the problem.

comment:36 Changed 11 years ago by cooljeanius (Eric Gallager)

Yay, I finally have a working portfile! Gosh, Scilab contains a lot of stuff:

Local-Admins-MacBook-Pro:~ root# port contents scilab | wc -l
   12536

Anyway, I'll attach the portfile in a little bit...

comment:37 Changed 11 years ago by sylvestre@…

Scilab is indeed a big baby! Well done for the portfile! I am looking forward to it.

comment:38 Changed 11 years ago by sylvestre@…

egall: can you share the portfile ? thanks

comment:39 in reply to:  38 Changed 11 years ago by cooljeanius (Eric Gallager)

Replying to sylvestre@…:

egall: can you share the portfile ? thanks

I'm actually still working on it, there are a few more things I want to add support for...

Edit: also I've found out that Fink is working on an update to their Scilab package, so I'm trying to incorporate some of the changes they're making: http://cvs.snaggledworks.com/viewvc.cgi/fink/3rdparty/main/finkinfo/sci/scilab.info?view=markup

Last edited 11 years ago by cooljeanius (Eric Gallager) (previous) (diff)

comment:40 Changed 11 years ago by sylvestre@…

Sure. It is just that I could help :)

Changed 11 years ago by cooljeanius (Eric Gallager)

Attachment: Portfile added

Portfile for Scilab

Changed 11 years ago by cooljeanius (Eric Gallager)

Attachment: files.zip added

zip of ${filespath} directory (to be placed next to Portfile)

comment:41 in reply to:  40 Changed 11 years ago by cooljeanius (Eric Gallager)

Replying to sylvestre@…:

Sure. It is just that I could help :)

OK, I've attached the latest version... Even though I'm now copying the java stuff into the build directory, I still have to end up turning it off with some configure flags though, because otherwise I still end up running into errors... Even though the entire thing builds and works with java turned off, I'll probably want to get it turned on before it would be ready to commit to trunk...

comment:42 Changed 11 years ago by locober@…

Cc: locober@… added

Cc Me!

comment:43 Changed 11 years ago by petrrr

Cc: Peter.Danecek@… added

Cc Me!

comment:44 Changed 10 years ago by Schamschula (Marius Schamschula)

Cc: mschamschula@… added

Cc Me!

Note: See TracTickets for help on using tickets.