86 lines (74 with data), 3.8 kB
This project is licensed under the GNU General Public License, version
2.0. The contents of the bin/ directory have mostly been ripped
wholesale from the checks/ directory of the GiNaC 1.3.0 tarball. All
other components are Copyright (c) 2004 Jonathan Brandmeyer.
This version is patched to work with the current GiNaC by Vladimir V. Kisil.
--- Portability ---
PyGiNaC itself only uses ISO C++. GiNaC and CLN, upon which GiNaC is
built, can be build on OS-X or MS Windows. Look the GiNaC web site
(http://www.ginac.de), MoebInv Wiki
(https://sourceforge.net/p/moebinv/wiki/Mac%20installation/) and the Web
for further advises.
Each dependancy includes the name of the package in Debian Sid and Sarge that
satisfies the requirement.
Dependencies:
Python 2.2 or higher, 2.7.11 recommended (python2.7-dev)
The Boost libraries 1.31.0 or higher (libboost-python-dev)
GiNaC 1.3.0 or higher, tested with 1.6.7-1.7.0 (libginac-dev)
(pyGiNaC v.1.2 is the last version working with GiNaC version prior 1.5)
Build dependencies (only needed to build PyGiNaC):
Scons (scons)
GNU G++ 3.2 or higher (5.3.1 tested) (g++-5)
Lotsa RAM. The compiler takes a _lot_ of memory to build PyGiNaC, although
you will not generally need nearly as much to run it.
Building:
Once you have all of the dependencies and build-dependencies installed on
your system, you only need to run one command:
$ scons
This will build the extension module in-place. "scons install" is not
yet supported, since this extension is very young.
Usage:
You can use the "run" script to start an interactive session of Python that will be
able to use PyGiNaC:
$ ./run python
or
$ ./run python bin/some_script_file.py
It is better to use some wrapper of Python, e.g. iPython, idle or pyzo. In the case
of iPython the above example shall look like:
$ ./run ipython
Files:
src/*: C++ source files to bind Python to the C++ GiNaC library.
src/check: C++ source files of tests included with GiNaC, to be ported
to PyGiNaC and placed in bin/
include/: C++ header files
site-packages/ginac/*: Python source files
site-packages/: Location for in-place construction of the target shared
object.
bin/*: Standalone Python scripts. These scripts are all tests or demos
of the PyGiNaC interface.
SConstruct: The file which controls the build. See scons(1).
INSTALL: This file
run: An executable Bourne shell script that sets up environment variables
for running PyGiNaC-using scripts against a freshly built version of
PyGiNaC in-place.
linux-symbols.map: A linker version script for GNU ld on ELF. By making
all symbols other than the import function local, the dynamic symbol
table is much smaller. (Note that Boost.Python uses a lot of
templates, which makes for a _large_ number of _really_long_ symbols).
This makes loading the extension module much faster, and the size
of the shared object is reduced by roughly 50%. This will probably be
replaced in the future with GCC 4.0's -fvisibility option.
TODO: These were high-level projects of the original developers. The
current maintainer does not have resources and abilities to
complete them. Feel free to send your patches for these and
other improvements.
* Write Python versions of the tests found in src/tests
* Create a map_function system, probably based on python function
objects
* Wrap more of the GiNaC classes and objects.
* Add extra member access functions for higher-level access of containerish
types, like power.basis() and power.exponent(), for example.
* Make every func capable of taking more than one argument also take args
in keyword form.
* Port the documentation examples to talk about PyGiNaC's interface rather
than ginsh or GiNaC C++.