From daae94742a991be5d2aff39e7e29265b46138157 Mon Sep 17 00:00:00 2001 From: David Rose Date: Fri, 4 Jun 2004 06:54:10 +0000 Subject: [PATCH] add python stuff, CONFIGRC_DIR, etc. --- doc/INSTALL | 151 +++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 120 insertions(+), 31 deletions(-) diff --git a/doc/INSTALL b/doc/INSTALL index 6a4b2c3f69..ef03992f48 100644 --- a/doc/INSTALL +++ b/doc/INSTALL @@ -132,7 +132,7 @@ before it. The packages are, in order: panda - this is the bulk of the C++ Panda code. It contains the 3-D engine itself, as well as supporting C++ interfaces like networking, audio, and device interfaces. Expect this package to - take from one to two hours to build from scratch. You must build + take from 30 to 60 minutes to build from scratch. You must build and install dtool before you can build panda. direct - this is the high-level Python interface to Panda. Although @@ -213,7 +213,7 @@ root of the dtool package. Many of these variables will already have definitions that are sensible for you; some will not. You must customize these variables before you run ppremake. -Normally, rather than modifying dtool/Config.pp directly, you would +Normally, rather than modifying dtool/Config.pp directly, you should create your own, empty Config.pp file in a safe place (for instance, in your personal home directory) and define just the variables you need there. The definitions you give in your personal Config.pp file @@ -221,8 +221,9 @@ will override those in the source directory. You will need to set an environment variable PPREMAKE_CONFIG to the full filename path of your personal Config.pp (more on this in the platform-specific installation notes, below). It is also possible simply to modify dtool/Config.pp, -but this is not recommended as it makes it difficult to install -updated versions of Panda. +but this is not recommended as it makes it difficult to remember which +customizations you have made, and makes installing updated versions of +Panda problematic. The syntax of the Config.pp file is something like a cross between the C preprocessor and Makefile syntax. The full syntax of ppremake @@ -269,7 +270,9 @@ find useful are: Python header files, if Python is installed on your system. As of Python version 2.0, compiling Python interfaces doesn't require linking with any special libraries, so normally PYTHON_LPATH and - PYTHON_LIBS are left empty. + PYTHON_LIBS are left empty. You definitely need to set + PYTHON_IPATH, however, if you wish to compile Panda so that it can + be used from Python. NSPR_IPATH / NSPR_LPATH / NSPR_LIBS - the full pathname to NSPR header and library files, and the name of the NSPR library, if @@ -308,6 +311,9 @@ itself. Generally, you do something like the following: make make install +If the configure script does not already exist, read the document +BUILD_FROM_CVS.txt in the ppremake source directory. + By default, ppremake will install itself in /usr/local/panda/bin, the same directory that the other Panda binaries will install themselves to. If you prefer, you can install it in another directory by doing @@ -315,7 +321,7 @@ something like this: ./configure --prefix=/my/install/directory -If you do this, you will also want to redefine INSTALL_DIR in your +If you do this, you will probably also want to redefine INSTALL_DIR in your Config.pp to be the same directory (see above). Wherever you install it, you should make sure the bin directory is included on your search path, and the corresponding lib directory (e.g. /usr/local/panda/lib) @@ -355,8 +361,12 @@ When you run ppremake within the dtool directory, it will generate a file, dtool_config.h (as well as all of the Makefiles). This file will be included by all of the Panda3D sources, and reveals the settings of many of the options you have configured. You should -examine this file to ensure that your settings have been made the way -you expect. +examine this file now to ensure that your settings have been made the +way you expect. + +Note that ppremake will also try to create several subdirectories in +the install directory, so you must have write access to the install +directory in order for ppremake to run successfully. Now you can build the Panda3D sources. Begin with dtool (the current directory): @@ -379,13 +389,18 @@ now installed and configured correctly. However, you must set up a Configrc file to set your runtime configuration options before you can run Panda and open up a graphics window. See HOW TO RUN PANDA, below. -If you wish, you may also build direct or pandatool: +If you wish, you may also build direct. You only need to build this +if you intend to use the Python interfaces. cd ~/panda3d/direct ppremake make make install +And you may build pandatool. You only need to build this if you want +to take advantage of model conversion utilities for Panda like +maya2egg and egg2bam. + cd ~/panda3d/pandatool ppremake make @@ -468,6 +483,7 @@ In tcsh: or in bash: PANDA_ROOT='C:\Cygwin' + export PANDA_ROOT Follow the instructions under HOW TO BUILD PANDA FOR A UNIX ENVIRONMENT, above. @@ -542,23 +558,23 @@ Now you should be able to build dtool. And then build panda. - c: cd \panda3d\panda ppremake make make install -And (optionally) build direct. +And (optionally) build direct. You only need to build this if you +intend to use the Python interfaces. - c: cd \panda3d\direct ppremake make make install -And (optionally) build pandatool. +And (optionally) build pandatool. You only need to build this if you +want to take advantage of model conversion utilities for Panda like +maya2egg and egg2bam. - c: cd \panda3d\pandatool ppremake make @@ -614,26 +630,99 @@ add instead the line: Later you may add additional lines here to control the default behavior of Panda in other ways. -If you do not specify otherwise, Panda will look for the Configrc file -in the current directory, so for now try to run pview from within the -same directory as your Configrc file. If all goes well, it should -open up a window with a blue triangle. You can use the mouse to move -the triangle around. You can also pass the name of an egg file, if -you have one (look in the models directory for some sample egg files), -on the command line, and pview will load up and display the egg file. +If you do not specify otherwise (and you did not redefine +DEFAULT_CONFIGRC_DIR in your Config.pp file), Panda will look for the +Configrc file in the current directory, so for now try to run pview +from within the same directory as your Configrc file. If all goes +well, it should open up a window with a blue triangle. You can use +the mouse to move the triangle around. You can also pass the name of +an egg file, if you have one (look in the models directory for some +sample egg files), on the command line, and pview will load up and +display the egg file. -If you want to load the Configrc from other than the current -directory, set the following two environment variables: +If you want to load the Configrc from other than the compiled-in +default directory, set the environment variable: - CONFIG_CONFIG=:configpath=CFG_PATH - CFG_PATH=/my/home/directory + CONFIGRC_DIR=/my/home/directory Where /my/home/directory is the name of your home directory (or -wherever you put the Configrc file). Note that forward slashes should -be used, according to the Panda convention. Also note that on -Windows, the path you specify is relative to the directory named by -PANDA_ROOT, unless it begins with a single-letter directory name (see -the explanation of how Panda maps its internal filenames to Windows -filenames, above.) +wherever you put the Configrc file). + + + +HOW TO BUILD THE PYTHON INTERFACES + +You may stop now if you only intend to use Panda as a C++ library. +However, if you wish to use Panda within Python, you must now generate +the Python interfaces. + +There are two parts to the Python interface for Panda. The first part +is a series of wrapper functions that are compiled into the Panda +libraries themselves, along with associated *.in files that describe +the class hierarchy. If you defined PYTHON_IPATH correctly in your +Config.pp file, then Python should have been detected by ppremake, and +it would have generated makefiles to build these wrappers +automatically. (You would have seen the program "interrogate" running +within each directory as panda was building, and you will have a +number of *.in files installed into $INSTALL_DIR/etc.) + +If, for some reason, the interrogate program did not run, perhaps +because you defined an invalid directory in PYTHON_IPATH, you can go +back and fix this now, and simply re-run ppremake and make install +again in each of dtool, panda, and direct. + +The second part to the Python interface is a series of Python wrapper +classes that are generated, for each C++ class detected by +interrogate. These classes must be generated after all of the C++ +code has been compiled and installed. Execute the following command: + + genPyCode + +This is a script that was installed into $INSTALL_DIR/bin as part of +the build of direct. It invokes Python to read the *.in files +generated by interrogate, and generates the appropriate wrapper +functions, which are written into $INSTALL_DIR/lib/pandac. (There +will be several hundred generated Python modules; these are normally +"squeezed" into a single file called PandaModules.pyz using +PythonWare's SqueezeTool. This squeeze step gives a significant +runtime performance advantage, especially on Windows; but if it causes +problems, you can use the option -n, e.g. 'genPyCode -n', to avoid +it.) + +You will need to re-run this script only if the Panda interface +changes, e.g. if a class is added or a method's parameters change. +You should certainly re-run it any time you update and install a new +version of Panda. + +To make Panda accessible to Python, you will need to add +$INSTALL_DIR/lib to your PYTHONPATH variable, e.g.: + + setenv PYTHONPATH ${PYTHONPATH}:/usr/local/panda/lib + +Or, on Windows: + + set PYTHONPATH=%PYTHONPATH%;c:\panda3d\lib + +We recommend this approach for most users, since it collects all of +the Panda libraries in one directory and doesn't clutter up the Python +distribution. However, if you only intend to use Panda from Python, +and especially if you want to make it accessible to multiple users, it +may be more attractive to install the Panda libraries as a standard +Python module, so that it is not necessary to modify your PYTHONPATH +variable. To do this, you should add the following line to your +Config.pp: + + #define INSTALL_LIB_DIR /usr/lib/python2.2/site-packages + +Where you give the actual path to the site-packages directory for your +installation of Python. On Windows, this will probably be something +like this: + + #define INSTALL_LIB_DIR C:\Python22\Lib\site-packages + +Then go back and re-run ppremake and make install in each of dtool, +panda, and direct, and then re-run genPyCode, to install the Panda +libraries and Python files directly into the Python site-packages +directory.