Ultrasonix snapshot 8/5/98 Author: Brian Sellden This is a public snapshot of Ultrasonix. Large chunks don't work, but large chunks do. After building the snapshot, you will be able to get spoken feedback from most X clients which: 1) were built with either Athena or Motif widgets 2) were dynamically linked Table of Contents ---------------------- Section 1: Building the Source Distribution Section 2: Installing the Binary Distribution Section 3: Finishing Up Section 1: Building the Source Distribution How Not to Build Ultrasonix If you have RedHat 5.0 and are using the stock development environment - STOP! It's broken. You'll notice that version 5.1 comes with the EGCS compiler. You'll need the EGCS compiler or equivalent. I'm using RH 5.0 with EGCS 1.0.3a. How to Build Ultrasonix Supporting Libraries 1. OSE Ultrasonix uses the OSE class library. Find it at http://www.dscpl.com.au Remember when building the OSE libs that Ultrasonix makes use of exceptions and templates. If you're using the EGCS compiler, Using OSE-5.2.x and setting the compiler tag in the OSE config files to GNU2.8.1 works pretty well. 2. Xtea and Rap Let's call the top-level directory - the place where you found this README file - USXDIR. Type USXDIR> xmkmf -a USXDIR> make all And to install the libraries in /usr/local/lib, the headers in /usr/local/include/X11, and the binaries in /usr/local/bin, type USXDIR> make install You've just installed libXtea - Xt External Agent library libRAPagnt - Remote Access Protocol, Agent libRAPclnt - Remote Access Protocol, Client dectalkd - Speech server used by Dectalk loadables 3. X Now let's talk X patches. I'm leaving out some details, here, about directions on building the X distribution, backing up and restoring the original libraries, and so on. If you don't know what any of this means, you probably shouldn't be installing this snapshot. If you still want to install, but would like to know more, send me an email and I'll go through it with you. The file 'xlibpatches.tar.gz' should be unpacked in the 'xc/lib' subdirectory of the X11R6.3 source distribution. This will place a couple of extra source files, along with a patch file, in each of xc/lib/X11 and xc/lib/Xt. Next, cd into these two dirs and apply the patches: > cd xc/lib/X11 > patch < libX11.patch > cd ../Xt > patch < libXt.patch Now build the X libraries as usual. The new libXt is linked against the libRAPclnt you installed above, which is linked against libXtea. Save the original X libraries so you can recover them if needed. Install the new libX11 and libXt. Now, that's a lot of building. To test what you've done, try this - > ldd /usr/X11R6/bin/xedit This gives you a list of the libraries which 'xedit' needs to run. Here's what I get: > ldd /usr/X11R6/bin/xedit libXaw.so.6 => /usr/X11R6/lib/libXaw.so.6 (0x40003000) libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x40037000) libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x40047000) libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x4008a000) libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40094000) libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x400a8000) libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x400b3000) libm.so.6 => /lib/libm.so.6 (0x4014a000) libc.so.6 => /lib/libc.so.6 (0x40163000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000) libRAPclnt.so.0 => /usr/local/lib/libRAPclnt.so.0 (0x40207000) libXtea.so.0 => /usr/local/lib/libXtea.so.0 (0x40210000) Notice the references to libRAPclnt and libXtea at the bottom - bingo! Take heart - we're nearly there! Ultrasonix binary On to building the Ultrasonix binary itself. Edit USXDIR/7.0/Makefile, to reflect your installation of the OSE libraries. Then, from USXDIR/7.0, type 7.0> make depend > make mercator > make DectalkX.so I don't know what the 'install' target does, so check it before you try to 'make install' in this directory. Section 2: Installing the Binary Distribution Supporting Libraries 1. OSE Ultrasonix uses the OSE class library. Find it at http://www.dscpl.com.au Remember when building the OSE libs that Ultrasonix makes use of exceptions and templates. If you're using the EGCS compiler, Using OSE-5.2.x and setting the compiler tag in the OSE config files to GNU2.8.1 works pretty well. 2. Xtea and Rap Let's call the top-level directory - the place where you found this README file - USXDIR. Type USXDIR> xmkmf -a And to install the libraries in /usr/local/lib, the headers in /usr/local/include/X11, and the binaries in /usr/local/bin, type USXDIR> make install You've just installed libXtea - Xt External Agent library libRAPagnt - Remote Access Protocol, Agent libRAPclnt - Remote Access Protocol, Client dectalkd - Speech server used by Dectalk loadables 3. X Let's talk about the patched X libraries found in the directory USXDIR/X11. These libraries were built for an X86-based Linux distribution. They were built from the sources for XFree86-3.3.1, which came with Redhat 5.0. Save the X libraries you are currently using. Install the patched libraries in place of the originals. make sure that the links to these libraries are maintained. To test what you've done, try this - > ldd /usr/X11R6/bin/xedit This gives you a list of the libraries which 'xedit' needs to run. Here's what I get: > ldd /usr/X11R6/bin/xedit libXaw.so.6 => /usr/X11R6/lib/libXaw.so.6 (0x40003000) libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x40037000) libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x40047000) libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x4008a000) libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40094000) libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x400a8000) libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x400b3000) libm.so.6 => /lib/libm.so.6 (0x4014a000) libc.so.6 => /lib/libc.so.6 (0x40163000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000) libRAPclnt.so.0 => /usr/local/lib/libRAPclnt.so.0 (0x40207000) libXtea.so.0 => /usr/local/lib/libXtea.so.0 (0x40210000) Notice the references to libRAPclnt and libXtea at the bottom - bingo! Take heart - we're nearly there! Section 3: Finishing Up User Configuration Find the files mercator.config and mercator.attrib in USXDIR/7.0. Edit the files to reflect the correct directories for your setup, rename them .mercator.config and .mercator.attrib respectively, and copy them into your home directory. The Payoff Now type USXDIR/7.0/ultrasonix and run like hell! Epilogue You may have had problems at many points along the way. This is the first version of this README, so I may have left out some things. If you're having trouble, send me an email and I'll try to help you figure out what went wrong. Contact You can find the Ultrasonix home page at http://www.henge.com/~brian And more docs at the Trace Center: http://trace.wisc.edu/world/computer_access/pusl/ You can email me at brian@henge.com. Acknowledgements Finally, none of this would be possible without the expertise and patience of Keith Edwards, Mark Novak, Will Walker, Terry Barnaby, Joel Zimba, and Marty Geier, among others. And I do all of my work in Emacspeak - thanks Raman!