FriCAS Code
Brought to you by:
whebisch
Quick installation:
FriCAS now tries to support standard GNU build/installation
conventions. So if you have sources and all prerequisities
just:
configure && make && make install
should work. The above will install FriCAS files in
/usr/local/lib/fricas directory and put fricas command in
/usr/local/bin directory, you can give arguments to configure
to change those locations.
NOTE!! If you use svn (minimal version) the above will install broken
HyperDoc pages -- all graphic examples will be missing (and trying to access
them will crash hypertex).
The get working graphic examples login into X and replace 'make' above by
the following:
make
cd src/paste
make gphts
cd ../..
make
Important: building graphic examples accesses the X server, so it will
not work on text console. During build drawings will temporarly
appear on the screen. Redirecting X via ssh should work fine,
but may be slow.
It is also possible to use xvfb-run program, replacing 'make gphts'
above by:
xvfb-run --server-args="-screen 0 1024x768x24" --auto-servernum -n 0 make gphts
--------------------------------------------------------
Prerequisities:
- Lisp, one of:
* GCL, 2.6.7 or prerelease 2.6.8
* sbcl, 1.0.7 or later
* clisp, 2.41 or later
* Closure CL (former openmcl), starting from openmcl 1.1 prerelase
070512
* ECL, 0.9j or later
GCL currently is best tested, but on some platforms there are known
build problems. All Lisp impementations should give essentially
the same functionality. Gcl sources are included in full+gcl distribution
tarball.
- noweb literate programing tool (http://www.eecs.harvard.edu/~nr/noweb/).
Noweb sources are included in full distribution tarball.
- X libraries and headers (includig Xpm library).
On debian (or Ubuntu) you probably need: libx11-dev, libxt-dev, libice-dev,
libsm-dev, libxau-dev, libxdmcp-dev, libxpm-dev.
- Extra libraries needed by gcl. If you use Debian gcl you probably
need libreadline5-dev, libncurses5-dev, libgmp3-dev, libxmu-dev and
libxaw7-dev.
Known problems:
- On Gentoo system installed gcl probably will not work, one need to
build own one.
- Older version of gcl are incompatible with Fedora "exec-shield" and
strong address space randomization (setting randomize_va_space to 2).
Newest CVS version of 2.6.8 branch of gcl fixes this problem.
- gcl needs bfd library. Many Linux systems include version of bfd
library which is incompatible with gcl. Using the following configure
line should fix this problem:
./configure --disable-xgcl --disable-dynsysbfd --disable-statsysbfd --enable-locbfd
- Boehm garbage collector included in ECL (version 6.8) is incompatible
with Fedora strong address space randomization (setting randomize_va_space
to 2). Using newer version of Boehm garbage collector (7.0 or 7.1)
should solve this problem.
- ECL 0.9j has serious performance problems. ECL version 0.9l is much
faster.
- ECL up to version 0.9l may segfault at exit. This is usually harmless,
but may cause build to hang (for example when generating ug13.pht). Using
CVS version should fix this problem.
- In general, any error when generating documentation will cause build to hang.
- Closure CL earlier than release 1.2 (former Openmcl) has a bug in Lisp
printer. This bug causes incorrect printing of FriCAS types. Also,
Closure CL earlier than release 1.2 has bug in compex
cosine function. Those bugs are fixed in release 1.2. If you want to
use earlier version you can work around the bugs applying
the 'contib/omcl.diff' patch and recompiling the compiler (see the patch
or Closure CL documentation for instructions).
--------------------------------------------------------
Getting Lisp.
To build FriCAS you need to install Lisp first. You need
_one_ of the following:
- sbcl
http://sbcl.sourceforge.net/platform-table.html
- Closure CL
http://ccl.clozure.com/manual/chapter2.2.html#id357702
ftp://ftp.clozure.com/pub/release/1.2
- ECL
http://ecls.sourceforge.net
- gcl, older versions have various problems, CVS version is
better. To get latest stable version from CVS use the
following command
cvs -d:pserver:anonymous@cvs.savannah.gnu.org:/cvsroot/gcl co -r Version_2_6_8pre -d gcl-2.6.8pre gcl
In case of build problems try the following configure line
./configure --disable-xgcl --disable-dynsysbfd --disable-statsysbfd --enable-locbfd
- clisp
http://clisp.cons.org
--------------------------------------------------------
Step by step instructions for first time users:
Latest (developement) version of FriCAS is available only
via svn, so you need svn client (see http://subversion.tigris.org/).
You also need Lisp -- see links in section "Getting Lisp" and
follow instructions.
0) Change to a directory with enough (1.2 GB) free space
1) Fetch sources:
svn co https://fricas.svn.sourceforge.net/svnroot/fricas/trunk fricas
2) Fetch nonstandard prerequisities:
cd fricas
mkdir zips
cd zips
wget https://axiom.svn.sourceforge.net/svnroot/axiom/trunk/axiom/zips/noweb-2.10a.tgz
2a) Go back to first directory
cd ../..
3) Create build directory and change to it:
mkdir ax-build
cd ax-build
4) Configure. Assuming that you want fricas files to be installed in
/tmp/usr
../fricas/configure --with-lisp=/path/to/your/lisp --prefix=/tmp/usr
where /path/to/your/lisp is name of your Lisp (for example sbcl)
5) Build and install:
make
make install
If you want graphic examples read the note before.
--------------------------------------------------------
Extra information about installation:
The preferred way to build FriCAS is to use already installed
Lisp and noweb. Also, it is preferable to use a separate build
directory. Assuming that source tree is in fricas subdirectory,
you build in ax-build subdirectory and your Lisp is called sbcl
the following should just work:
cd ax-build
../fricas/configure --with-lisp=sbcl && make && make install
Alternatively, if you use gcl you can just put gcl sources as a
subdirectory (called gcl) of fricas directory -- in this case the build
process should automatically build gcl and later use the freshly
build gcl.
Currently --with-lisp option accepts all supported lisp variants, namely
sbcl, clisp, ecl, gcl and Closure CL (openmcl). Build machinery
must know which Lisp variant is in use. gcl, sbcl, clisp and ecl
can be autodetected, for Closure CL (openmcl) one has to give an
extra argument --with-lisp-flavor=openmcl (you can also specify
flavor for other Lisps, but this argument is required only for
Closure CL (openmcl)).