                  Notes on Rebuilding X11R7.2/OS2 from Scratch

            -------------------------------------------------------

   Table of Contents

   [1]Preface

   [2]Tools required

   [3]Compiling and Installing

Preface

   X11 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 [4]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 required

   I 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/unzip

     * tar GNU tar

     * patch Larry Wall's patch utility (attention: incompatible tool with
       same name in OS/2)

     * install BSD/GNU install

     * rm,mv,cp GNU file utilities

     * tee,.. GNU shell utilities

     * groff GNU nroff/troff

     * sed GNU sed stream editor

     * grep GNU grep

     * gawk GNU awk

     * make GNU make 3.71/3.72 (use the one from Xprog.zip!)

     * flex GNU flex

     * bison GNU bison

     * m4 GNU m4

     * find 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 Installing

   You 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.



    1. Install all the above utilities. Refer to the corresponding
       documentation. Verify that everything works well, particularly EMX.

    2. 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.

    3. 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.

    4. 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.

    5. 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.

    6. 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 {} ;




    7. 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.


    8. 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.

    9. 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.

   10. 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.

   11. 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.

   12. Execute this buildos2.cmd command in the xc directory; it will produce
       a logfile buildxc.log in this directory.

   13. 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.

   14. 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.

   15. Finally, from the xc dir, execute

             xmake install
             xmake install.man




   16. There are a few minor glitches in the installation:

         a. 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.

         b. 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 :-)

References

   Visible links
   1. file:///tmp/html-qk3364#AEN8
   2. file:///tmp/html-qk3364#AEN14
   3. file:///tmp/html-qk3364#AEN55
   4. file:///tmp/OS2.html
