Notes: A DPS Extension version 0.0.1 24 January 2000 Juliusz Chroboczek <Juliusz.Chroboczek@ens.fr> Introduction ************ The tarball `dps-0.0.0.tar.gz' contains very preliminary code for a DPS extension for XFree86 based on Peter Deutsch's `GhostScript' PostScript interpreter. This code is currently too preliminary to be useful to anyone except people wanting to work on the extension itself. If you have an urgent need for a DPS implementation, the `dgs' implementation from GNUStep might serve your needs better. A significant problem is that the PostScript interpreter currently does not time-slice. This means that most applications will cause your X server to freeze. Please do not use this code unless you know how to deal with a hung X server. Please keep in mind that the performance and functionality of this alpha is in no way indicative of what it may become if all goes well. You will find more information on the current status of this code on http://dps.sourceforge.net Known problems ************** There is a large number of known problems with this version. Please consult the tasklist on http://dps.sourceforge.net/todo.html for an up-to-date list. Design ****** The DPS extension consists of three interdependent pieces of code: the extension, in directory `dps' (XFree86 module `dps'); the PostScript interpreter, in directory `dps/dpsi' (XFree86 module `dpsi'); and the rendering library, which currently consists of the single file `dps/dpsrender.c' (and is included in XFree86 module `dps'). The plan is that ultimately the rendering library will be split into a separate module which will be shared by the DPS extension and other rendering extensions. The three components communicate through well-defined interfaces. The extension doesn't know about the interpreter; it just uses the interface defined in `dps/dpsi.h' (implemented in `dps/dpsi/dpsgs.c'). The interpreter can use both the data structures of the extension (`dps/dpsext.h') and the rendering library (`dps/dpsrender.h'); I consider interpreter dependencies on the extension to be a bug. Finally, the rendering library doesn't know about either the extension or the interpreter, and only uses DIX interfaces (we hope to have DDX support for the rendering code at some point). Licensing issues **************** Note that the DPS extension consists of code under two distinct licenses. All the code written by me comes under the X11 license, which roughly speaking allows you to do anything with it except claiming that you wrote it. Aladdin GhostScript, the PostScript interpreter that we use, comes under the `Aladdin Free Public License' (AFPL), a license that forbids commercial redistribution, mandates dating and commenting all modifications, but, as far as I can see, doesn't seem to constrain linking in any way. Peter Deutsch, the author, maintainer, and copyright holder of GhostScript, has assured me (informally) that this version of GhostScript will be re-released under the GNU Public License (GPL) in roughly a year's time. This heterogeneous licensing means that we must be very careful about separating our code from GhostScript code. All new code must be put under the X11 license and accompanied with a suitable copyright notice. All code that is likely to be generally useful for XFree86 development must be in the `dps' directory, and thus isolated from AFPLd or GPLd code. This is especially important for rendering code, which we will be very likely to want to reuse for other parts of XFree86. Building and installation ************************* The following instructions assume that you have * an XFree86 3.9.17 source tree in `$SRC/xc'; * the GhostScript 5.94 beta sources in `$SRC/gs5.94'; this is available from http://www.cs.wisc.edu/~ghost/ (follow `testers'); * the DPS client library sources, dated 3 June 1996, in `$SRC/DPS'. It further assumes that you have successfully untarred the file `dps-0.0.1.tar.gz', which contains files calles `dps.tar', `dpsi.tar' and `dpsi.patch'. 0. Make the `DPS/XDPS.h' and `DPS/XDPSproto.h' include files available to server modules: mkdir /usr/src/xc/include/DPS cp $SRC/DPS/include/XDPS*.h $SRC/xc/include This step might not be necessary in later versions of XFree86 if we decide to include the DPS client library in the XFree86 source tree. 1. Untar the `dps.tar' tarball in $SRC. This will create a directory `$SRC/dps' and a directory `$SRC/dps/dpsi'. 2. Make a directory `$SRC/dps/dpsi' and copy the contents of the `$SRC/gs/src' directory into `$SRC/dps/dpsi'. 3. Untar the `dpsi.tar' tarball in `$SRC'. This will add some new files in `$SRC/dps/dpsi'. 4. Apply `gs_dpsi.patch' to the files in `$SRC/dps/dpsi'. You might need to use the `-p0' option to patch. 5. Edit `$SRC/dps/Imakefile' and `$SRC/dps/dpsi/Imakefile' so that XTOP points at `$SRC/xc'. Check whether the paths at the beginning of `$SRC/dps/dpsi/Imakefile' are suitable for your installation. 6. Build and install the extension. cd $SRC/dps xmkmf -a make su -c 'make install' Assuming a standard XFree86 installation, this should install the files /usr/X11R6/lib/modules/extensions/libdps.a /usr/X11R6/lib/modules/extensions/libdpsi.a 7. Copy the files `$SRC/gs/lib/gs_*.ps' into `/usr/X11R6/lib/X11/ghostscript/5.94/lib/' (this can be configured by editing `$SRC/dps/dpsi/Imakefile'). Apply `gs_init.patch' to these files. 8. Add the line Load "dps" to the "Module" section of your `XF86Config' file (the `dpsi' submodule will be loaded automatically), and restart your X server. Building the DPS client library is left as an exercise to the reader. The file `DPS.patch' might be helpful.
Copyright © 2009 Geeknet, Inc. All rights reserved. Terms of Use