   Notes on Rebuilding X11R7.2/OS2 from ScratchHolgerVeitLast
   modified March 8th, 2000PrefaceX11 was initially developed on
   Unix-based systems. Usually Unix systems provide a rich number
   of tools and utilities to get certain things done. Under OS/2,
   these tools are not installed, but ports are available which
   are sometimes functionally equivalent to Unix utilities with
   the same name, but also differ sometimes in a subtle way. This
   guide will give you hints if you intend to rebuild the system
   from scratch under OS/2.Please also read README.OS2 for
   end-user information, and set at least the environment
   variables described there.At the current time, the most recent
   version available is X11R7.2 This is a full and unrestricted
   version which comes with complete source code. 4.0 is a highly
   experimental release, so many features that might have worked
   in earlier versions, may now no longer work, or work
   differently. Be aware that for OS/2, X11R7.2 is considered to
   be alpha software.Tools requiredI have tried to reduce the
   number of external tools, but when looking back it seems I were
   not very successful. At least I managed to get everything
   working with the native CMD.EXE shell only. However, there is
   still plenty of software required. Most of this software is
   available from hobbes.nmsu.edu or ftp.leo.org via anonymous
   FTP. The following shopping list shows what you will need: gcc
   EMX/gcc emx 0.9C patch4 or later (0.9d preferred!)gzip GNU
   zip/unziptar GNU tarpatch Larry Wall's patch utility
   (attention: incompatible tool with same name in OS/2)install
   BSD/GNU installrm,mv,cp GNU file utilitiestee,.. GNU shell
   utilitiesgroff GNU nroff/troffsed GNU sed stream editorgrep GNU
   grepgawk GNU awkmake GNU make 3.71/3.72 (use the one from
   Xprog.zip!)flex GNU flexbison GNU bisonm4 GNU m4find GNU find
   (attention: incompatible tool with the same name in OS/2) If
   there is no version number given, any new version will do.
   Particularly critical is only EMX/gcc and GNU make. Note that
   the second GCC implementation which might still be available
   from some archives is NOT compatible.Furthermore, you need the
   X11R7.2 sources. These are available from the common X.Org
   repositories. Look into a directory which is often named
   /pub/R7.1.Compiling and InstallingYou need about 300MB of free
   HPFS space for the whole system. This does not include space
   for the postscript and troff documentation files. I have never
   installed them. Nor did I install the test subtree. Install all
   the above utilities. Refer to the corresponding documentation.
   Verify that everything works well, particularly EMX.It is a
   good idea to use the same or a similar structure I have. I have
   made a directory \x11 on the partition for compiling and have
   put everything below this tree. I found that a clean tree
   occupies less than the half space of the disk, this gives me
   the opportunity to rename this tree to \x11old and copy a new
   version to the same disk to produce diffs. Last time the
   complete tree was arranged under the root directory xc, this
   would become \x11\xc then.To unpack the files you would usually
   execute the command gzip -dc file.tar.gz | tar xvf - in the
   \x11 directory. At the end you will usually see the irritating,
   but non-fatal message "gzip: stdout Broken pipe". Ignore
   it.After that, is is likely necessary to apply some patches,
   either from the X.Org Foundation. Before you do this, enter
   chmod -R a+rw \x11\xc to make certain files in the tree
   writable.There should be a file added-XXX accompanying the
   patch file which lists the files that are newly created. The
   patch program has a problem with creating new directories, so
   we need to create them on advance. For each added-XXX file you
   find, execute from \x11 xc\config\util\added added-XXX If there
   is no added-XXX file available, you can make one with the
   following instructions: grep "\*\*\* xc/" patchfile >added-file
   Edit added-file with a text editor and remove the *** at the
   beginning and the time stamp at the end (search for a TAB and
   erase to the end of the line). You get a list of file paths,
   one in a line, which is the input to the added utility.After
   that you can apply the patches in the right order. Usually this
   is done by a command patch -p -E <patchfile 2>&1 | tee patchlog
   from the \x11 directory. Be aware to use the right patch - OS/2
   has a utility with the same name and different functionality.
   Don't use the recommended -s option, this makes patch quiet,
   and you won't see problems in the patchlog file. Use find \x11
   -name *.rej -print find \x11 -name *# -print to find any
   rejects and unapplied patches (attention: yet another OS/2
   program with wrong functionality). Normally there shouldn't be
   any problems of this kind, else you have made a mistake.
   Finally remove the original files with find \x11 -name *.orig
   -print -exec rm {} ; Go to the xc/config/cf directory and edit
   the xorgsite.def file to match your requirements (you probably
   don't want to compile all X servers). Certain changes must be
   set to the following values: Disable if not already done any
   PC98 server; PC98 (Japanese X11R7.2) does not work yet. Porters
   from Japan are welcome!#define WacomSupport NO #define
   ElographicsSupport NO Both options are not yet supported.Tcl*
   and Tk* don't need to be set explicitly. Reasonable defaults
   are in the other config files, provided you have a complete
   X11R7.2/OS2 binary tree with the tcl/tk runtime support
   installed.#define BuildDynamicLoading NO This does not work. Go
   to the directory xc\util\compress and make compress.exe there.
   Install the program produced there in your path. I stumbled
   more than once on half-ported compress programs on OS/2 ftp
   servers that are defective w.r.t. reading and writing
   stdin/stdout. In some stage (font compression) otherwise you
   will get a core dump of mkfontdir, because all compressed fonts
   are corrupt.Set the environment variable X11ROOT to something
   different than it is; otherwise the installation process will
   overwrite your original X11R7.2/OS2 installation. If you have
   not set this variable, go back to the prefix section of this
   document: you have forgotten something.Copy the file
   xc/programs/Xserver/hw/xfree86/etc/bindist/OS2/host.def.os2 to
   the location xc/config/cf/host.def. Use this file to do any
   specific modifications to imake variables, rather than editing
   the file xorg.cf, imake.tmpl, or os2.cf directly.Copy the file
   xc/config/util/buildos2.cmd into the xc directory. If this is a
   second or later attempt, you might need to copy the saved
   toplevel Makefile.os2 back to Makefile.Execute this
   buildos2.cmd command in the xc directory; it will produce a
   logfile buildxc.log in this directory.Go have a bucket of
   coffee, or better, buy new coffee - in Colombia! The compile
   will need between 2 and 20 hours, depending on your selections,
   and the horse power of your hardware.When finished, view the
   logfile for errors, and fix the problems if there are some. I
   have managed to compile the whole system flawlessly, so there
   is at least one configuration that works.Finally, from the xc
   dir, execute xmake install xmake install.man There are a few
   minor glitches in the installation: The xdm and linkkit
   directories will fail in compile and installation. This is no
   problem and has no effect on the rest of the system.The
   imake.exe which is installed in \X11R7.2\bin is usually
   defective. The one which was built initially and installed in
   the root directory of the drive where you have the source tree
   is okay. So simply copy this \imake.exe to the \X11R7.2\bin
   directory manually. Some day this might be fixed. Well, you
   see, this was quite easy :-)
