r1684: *** empty log message ***
[clsql.git] / doc / intro.sgml
index bc663236ce0ebd7f4b43097bb78fe54d8a22c500..4ee389efd7bb264db0537600f8b90353c089f74d 100644 (file)
@@ -16,10 +16,28 @@ structure of &clsql; is based on the
     <title>History</title>
     <para>
       &clsql; is written by Kevin M. Rosenberg and based substantially
-on Pierre R. Mai's excellent &maisql; package. The main changes have
-been to port the &ffi; to &uffi;, add to Allegro's ODBC interface as a
-supported database, add a compatibility layer for &cmucl; specific
-code, and make the code more robust in terms of &mysql; support.
+on Pierre R. Mai's excellent &maisql; package. The main changes from &maisql;
+are:
+<itemizedlist>
+<listitem>
+<para>port from the &cmucl; FFI to &uffi;.</para>
+</listitem>
+<listitem>
+<para>new &acl; ODBC interface back-end.</para>
+</listitem>
+<listitem>
+<para>compatibility layer for &cmucl; specific code.</para>
+</listitem>
+<listitem>
+<para>much improved robustness for the &mysql; back-end.</para>
+</listitem>
+<listitem>
+<para>improved system loading.</para>
+</listitem>
+<listitem>
+<para>improved packages and symbol export.</para>
+</listitem>
+</itemizedlist>
     </para>
   </sect1>
 
@@ -30,10 +48,10 @@ code, and make the code more robust in terms of &mysql; support.
       <title>&defsystem;</title>
       <para> &clsql; uses &defsystem to compile and load its
 components.  &defsystem; is included in the <ulink
-url="http://clocc.sourceforge.net"><citetitle>&clocc;</citetitle></ulink>. The
-defsystem version in the pre-packaged distribution is rather old and
+url="http://clocc.sourceforge.net"><citetitle>&clocc;</citetitle></ulink> collection. The
+version in the pre-packaged distribution is rather old and
 may not function well. The version in CVS tree tree works quite
-well. For convenience, a copy of the latest defsystem at the FTP
+well. For convenience, a copy of the latest &defsystem; at the FTP
 <ulink
 url="ftp://ftp.med-info.com/pub/defsystem/"><citetitle>site</citetitle></ulink>
 of &clsql;.
@@ -42,7 +60,7 @@ of &clsql;.
 
     <sect2>
       <title>&uffi;</title>
-      <para> &clsql; uses <ulink
+      <para>&clsql; uses <ulink
 url="http://uffi.med-info.com/"><citetitle>&uffi;</citetitle></ulink>
 as a <emphasis>Foreign Function Interface</emphasis> (<glossterm
 linkend="gloss-ffi">FFI</glossterm>) to support multiple &cl;
@@ -54,6 +72,16 @@ are zip files for Microsoft Windows systems and gzipped tar files for
 other systems.</para>
     </sect2>
 
+    <sect2>
+      <title>XPTest (optional)</title>
+      <para>The test suite for &clsql; uses the onShore Development's
+XPTest package. onShore has graciously put the package in the public
+domain. You can download the package from onShore's web <ulink
+url="http://alpha.onshored.com/lisp-software/"><citetitle>site</citetitle></ulink>.
+This package is not required except if you wish to run the &clsql;
+test suite.</para>
+    </sect2>
+
     <sect2>
       <title>Supported Common Lisp Implementation</title>
       <para>
@@ -89,47 +117,72 @@ the following implementations are supported:
       <title>Ensure &defsystem; is loaded</title>
       <para>
        Simply load the file <filename>defsystem.lisp</filename>.
-<computeroutput>
+        <programlisting>
 (load "defsystem.lisp")
-</computeroutput>
+        </programlisting>
       </para>
     </sect2>
 
     <sect2>
-      <title>Build <filename>clsql-mysql</filename> helper library</title>
-      <para>&mysql; uses functions that require 64-bit integer
+      <title>Build &c; helper libraries</title>
+      <para>&clsql; uses functions that require 64-bit integer
 parameters and return values. The &ffi; in most &clsql;
-implementations do not support 64-bit integers. Thus, C helper
-library is required to break these 64-bit integers into two compatible
+implementations do not support 64-bit integers. Thus, C helper
+libraries are required to break these 64-bit integers into two compatible
 32-bit integers.</para>
 
-<para><filename>Makefile</filename>'s for Microsoft Windows and GNU/Solaris systems
-are supplied to build this library. In addition, the <type>DLL</type> and <type>LIB</type>
+<para>Makefiles for Microsoft Windows and GNU/Solaris systems
+are supplied to build the libraries. Since many Microsoft Windows
+users don't have access to a compiler, the <type>DLL</type> and <type>LIB</type>
 files for Microsoft Windows are supplied with the distribution.</para>
 
-<para>To build the library, first move to the directory
-<filename>interfaces/mysql</filename> directory. You may need to
-edit <filename>Makefile</filename> or <filename>Makefile.msvc</filename> to
-correctly specify the location of your &mysql; installation. On UNIX systems, use
-the command:
-<programlisting>make</programlisting>. On a Microsoft Windows system,
-use the command: <programlisting>nmake /f
-Makefile.msvc</programlisting>.</para>
-    </sect2>
+<para>To build the libraries on a GNU or Solaris, use the shell and
+change to the root directory of &clsql;. You may need to edit the file
+<filename>interfaces/mysql/Makefile</filename> to specify the location of your
+MySQL installation. Then, you can give the command
+<programlisting>
+make libs
+</programlisting>
+in the root directory of &clsql; to build the libraries 
+<filename>interfaces/mysql/clsql-mysql.so</filename> and
+<filename>interfaces/clsql-uffi/clsql-uffi.so</filename>.
+</para>
+      </sect2>
 
     <sect2>
       <title>Load &uffi;</title>
       <para>
-       Unpack the appropriate &uffi; version for your system which creates a directory
-for the &uffi; files. Add that directory to &defsystem; <varname>*central-registry*</varname>.
+       Unzip or untar the &uffi; distribution which creates a directory
+for the &uffi; files. Add that directory to Defsystem's <varname>mk:*central-registry*</varname>.
 You can do that by either pushing the pathname of the directory onto this variable, or
 use the new <function>add-registry-location</function> present in the newest versions of
-&defsystem;. The below example code assumes the &uffi; files reside in the
+&defsystem;. The following example code assumes the &uffi; files reside in the
 <filename>/usr/local/src/lisp/uffi</filename> directory.
-       <computeroutput>
-       (mk:add-registry-location #P"/usr/local/src/lisp/uffi")
-       (mk:load-system :uffi)
-        </computeroutput>
+       <programlisting>
+(mk:add-registry-location #P"/usr/local/src/lisp/uffi")
+(mk:load-system :uffi)
+        </programlisting>
+      </para>
+    </sect2>
+
+    <sect2>
+      <title>Load &clsql; modules</title>
+      <para>
+       Unzip or untar the &clsql; distribution which creates a directory
+for the &clsql; files. Add that directory to Defsystem's <varname>mk:*central-registry*</varname>.
+You can do that by either pushing the pathname of the directory onto this variable, or
+use the new <function>add-registry-location</function> present in the newest versions of
+&defsystem;. The following example code assumes the &clsql; files reside in the
+<filename>/usr/local/src/lisp/clsql</filename> directory. You need to load, at a minimum,
+the main <symbol>:clsql</symbol> system and at least one interface system.
+       <programlisting>
+(mk:add-registry-location #P"/usr/local/src/lisp/clsql")
+(mk:load-system :clsql)              ; main clsql package
+(mk:load-system :clsql-mysql)       ; MySQL interface
+(mk:load-system :clsql-postgresql)  ; PostgreSQL interface
+(mk:load-system :clsql-postgresql-socket) ; Socket PGSQL interface
+(mk:load-system :clsql-aodbc)       ; Allegro ODBC interface
+        </programlisting>
       </para>
     </sect2>