Title: Compiling Jython

<h3>Compiling Jython</h3>

<P>Most users of Jython will never be required to look at the
contents of the source directories, or try and recompile any of the files
in the org.python package. All of these files have been precompiled in
jython.jar.</P>

<P>For those people who do want to rebuild Jython from the source,
for whatever reason, the following offers a few tips to keep in
mind.</P>

<ul>
<li>The source directories from CVS or the nightly buils contain both
makefiles and a build.xml file. Only the build.xml is updated at this time.
We are using ant to compile the sources and create the .jar file.
<p>
The build.xml file will search for a properties file called
<code>ant.properties</code> which can contain values to control paths
and local options. My <code>ant.properties</code> file look like this:

<blockquote><pre>
# javaccHome is needed when making modification to the grammar.
javaccHome = d:\\box\\javacc-3.0

# PyXmlHome is needed when running the installXML ant task to
# copy PyXML files to jython.
PyXmlHome = d:\\python\\PyXML-0.6.6

#build.compiler = classic
build.compiler = jikes
debug=on

# python.home is needed when building the documentation and installing
# PyXML sources.
python.home=d:\\python\\python211

# Needed when building documentation.
ht2html.dir=d:\\jython\\ht2html-1.1
jython.home=d:\\jython\\CVS

# Needed when installing documentation.
scp.command=scp
scp.user=bckfnn

# Needed for building PyServlet support.
servlet.jar=d:/java/servlet/servlet.jar

# Needed for building Readline support.
readline.jar=d:/java/java_readline-0.6/java_readline.jar

# Needed for building zxJDBC DataHandlers
# If missing, the appropriate DataHandler will not be built
oracle.jar=d:/java/lib/classes12.zip
mysql.jar=d:/java/lib/mm.mysql-2.0.6.jar
informix.jar=d:/java/lib/ifxjdbc.jar;d:/java/lib/ifxjdbcx.jar
postgresql.jar=d:/java/lib/postgresql.jar
jdbc.jar=d:/java/lib/jdbc2_0-stdext.jar
</pre></blockquote>
<p>

<li>Some of the sources in the org.python.parser package are generated
from python.jtt file by the JavaCC parser generator. If you need to
make changes to the grammar file you will need to download this
JavaCC. The generated files are also in the distribution, so usually
this is not necessary.

<P>To regenerate the parser from the grammar, run jjtree on python.jjt,
and then run javacc on the resulting python.jj. This should produce all
of the required source files to build the org.python.parser package.
The build.xml file already contain the needed entries to run the JavaCC
program when the python.jjt is modified.
<p>

<li>The source directories contain several files that require Java2. These
files are normally easily recoqnizable because they have the number "2"
in their name.

<P>When compiling jython with Java1 compiler (like the JDK1.1), these
java2 files can be safely ignored. Jython will work even when these classes
files are missing.
The build.xml file have a conditional check and will not try to compile
the Java2 sources when using a Java1 compiler.
<p>

<li>One of the sources depends on the servlet classes and can only compile
when servlet.jar is included on the classpath. Again, the build.xml have
a conditional check and will not compile the PyServlet class if the
servlet classes isn't available during compilation.
<p>

<li>The CVS only contain a few of the standard python modules. The rest
most come from a CPython installation. Setting this up can be performed by
creating a file ".jython" in your home directory and including a line like
this:
<blockquote><pre>
python.path=d:\\python\\Python-2.1\\Lib
</pre></blockquote>

<li>The PyXML sources (the content of ./Lib/xml) is not included in the
CVS repository. This is mainly because PyXML is developed and released in its
own time cycle. To install PyXML support in a CVS version, the ant properties
<code>PyXmlHome</code> and <code>python.home</code> must be configured and
the ant task <code>installXML</code> must be executed.
</ul>

<P>If you have further interest in the Jython source and Jython's
continued development, you can read the archives for the
<a href="http://www.geocrawler.com/lists/3/SourceForge/7018/0/">
Jython-dev mailing list</a> or you can
<a href="http://lists.sourceforge.net/mailman/listinfo/jython-dev">join</a>
the list.

<P>

<hr>

Suggested tools and support software:

<ul>
<li> <A HREF="http://javacc.dev.java.net/">JavaCC</A>
<li> <A HREF="http://jakarta.apache.org/ant/">Ant</A>
<li> <A HREF="http://java.sun.com/products/servlet/index.html">Servlet classes</A>
<li> <A HREF="http://mmmysql.sourceforge.net/">MySQL JDBC Driver</A>
<li> <A HREF="http://www.informix.com/evaluate/">Informix JDBC Driver</A>
<li> <A HREF="http://jdbc.postgresql.org/">Postgresql JDBC Driver</A>
<li> <A HREF="http://otn.oracle.com/software/tech/java/sqlj_jdbc/content.html">Oracle JDBC Driver</A>
</ul>

