[comp.windows.x] Building R3 with limited disk space

adrian@ora.UUCP (Adrian Nye ) (11/29/88)

Someone posted a few days ago asking for tips on building R3
with 55 meg free.  I just built the R3 core distribution on a Sun 
with a single 50 meg disk (less than 30 meg free).
The following is a workable (but probably not optimized)
procedure for building on a small disk.  It's not really that difficult, 
but this should anyone in this position some false starts.

1. Backup entire disk.

2. Erase everything that's not absolutely vital.  I was able to get
almost 29 meg free; that's what you need to get the
entire core tape on in one go.  I erased my old X server and clients 
completely to make space.  If you do this, you'll need another
terminal to work from on occasion.

3. util is last on the tar tape but it's the first thing 
you need when building, so you may have to delete some of 
the hardcopy as it comes in to make room for util.  Move the hardcopy version
of the release notes to your top directory and delete the rest after step 4.
Make doesn't expect the hardcopy directory to be there, as it does most others,
so this doesn't cause any problems.

4. Make a cpio backup of the distribution, so that you can easily 
restore single files after deleting them (using wildcards).  People 
say there's a way to do this with tar, but I've never figured it out.

5. Leave everything else in the tree on the system even if you think you don't
need it, because "make World", which propogates the configuration info 
through the distribution, will die if any directory that includes a 
Makefile has been erased.  One thing you can do to make some space is 
to move all the manpages (.man) into a different partition or erase them.

6.  Follow the configuration directions in the release notes.
The Sun directions tell you to make sure to set the pad flag for the font
compiler before doing make World.  It took me a while to figure out exactly
how to do this properly.  Add the following lines
to /util/imake.includes/Sun.macros (and change the OS version to whatever
yours is) before doing make World.

#ifndef FontCompilerFlags
#define FontCompilerFlags -t -p4
#endif

The p4 part is what these lines really change.
It wasn't that obvious that this was what to do.

7.  Then, do make World >& make.world& like the directions say.
Once it is through making all the makefiles, you can delete the
examples directory.  You might be able to erase util now
too, because imake is built and nothing else in there is needed immediately,
but I'm not sure.

8.  You might want to stop it at this point and continue using:
    %make >& make.out&
    %tail -f make.out&
This instructs make not to
continue after errors.  Otherwise, the compile will certainly continue
until the disk is full, and the last file written will be incomplete.
Unfortunately, make doesn't know that, and next time you make it will 
consider that incomplete file up-to-date.  This problem is usually caught
by the linker (for clients and servers) or ranlib (for libraries) anyway.
Once detected, you can fix the problem by recompiling the offending 
source file.  

Another reason to leave out -k is that otherwise
you will need to remove all the .o files for the compiles after the 
error to make space to continue.  It's easier to control the space
usage problem without the -k.

On the other hand, it might help in diagnosing problems to see
how the problem recurred throughout the build.

9.  Once the libraries and server have successfully built, make 
xterm and xinit in their own directories, move the server, xinit and 
xterm into one directory in your path, and test the server according 
to the directions in the release notes.
If everything works you can install the server and rm the server tree 
which should give you enough room to build the clients.  You can't 
remove the lib tree or X11 tree even after they are installed because 
the makefiles for the clients depend on finding the include files there.

10.  Once they compile and install, demos, fonts, and rgb can be 
removed.  Look through util to see if there is anything you need 
(like patch) or want and then remove util.

11.  Build the clients by moving to the clients directory and using:
   %make install
This way, you can make clean in the directories that successfully install
to make you more space for the later clients.  The clients take up the
most space as they compile.

How it went:
On my system, the definitions of timeval, tv_sec and tv_usec
were undefined in several compiles because /X11/sys
was linked to /usr/include/ instead of /usr/include/sys.
I don't know how this happened or if it is this way in the distribution.

Other than that, I had no problems.  It took about 24 hours altogether
on a Sun-3 (including several reruns to fix errors and much reading
and writing off tape).  About half of that time I was able to do other
things (but not on that system).
-- 
Adrian Nye (617) 527-4210
O'Reilly & Associates, Inc., Publishers of Nutshell Handbooks
981 Chestnut Street, Newton, MA 02164
UUCP:	uunet!ora!adrian   ARPA: adrian@ora.uu.net

jim@EXPO.LCS.MIT.EDU (Jim Fulton) (11/29/88)

> 6.  Follow the configuration directions in the release notes.
> The Sun directions tell you to make sure to set the pad flag for the font
> compiler before doing make World.  It took me a while to figure out exactly
> how to do this properly.  Add the following lines
> to /util/imake.includes/Sun.macros (and change the OS version to whatever
> yours is) before doing make World.

Unfortunately, as has been pointed out before, this is a bug in the Sun
README file.  Do not change FontCompilerFlags.


> On my system, the definitions of timeval, tv_sec and tv_usec
> were undefined in several compiles because /X11/sys

Nope, no X11/sys in the distribution.