1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
|
This directory includes files required to build TeX and related
programs with the DJGPP port of GNU tools for MS-DOS and MS-Windows.
DJGPP produces 32-bit protected-mode programs which run on all
Microsoft platforms. On plain MS-DOS they need a DPMI server (a free
server is available as v2misc/csdpmiNb.zip that can be downloaded from
DJGPP archives on SimTel.NET mirrors). MS-Windows have DPMI services
built into them. When run on Windows 9X, the DJGPP-compiled programs
support long file names.
Building the package from sources
---------------------------------
- The following tools are REQUIRED to build and install Web2c
programs (the parentheses list filenames of binary distributions
you can download from DJGPP archives if you don't have a
particular package):
Bash (bsh1147b.zip)
Fileutils (fil316b.zip)
Textutils (txt122b.zip)
Grep (grep22b.zip)
Patch (pat25b.zip)
Sh-utils (shl112b.zip)
Sed (sed302b.zip)
Diffutils (dif2721b.zip)
Findutils (find41b.zip)
Ed (ed-02b.zip)
Gawk (gwk303b.zip)
Bison (bsn125b.zip)
Flex (flx254b.zip)
All of these are available from the v2gnu directory on the usual
DJGPP sites, e.g. ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/.
The above tools are IN ADDITION to the basic DJGPP development
environment that is required to compile and link C programs.
Consult the file v2/readme.1st and the DJGPP FAQ list in
v2/faqNNNb.zip, for details about the basic package.
- Unzip the downloaded Web2c and Texmflib distributions from the
root of your DJGPP installation tree. If you are doing this on
Windows 9x, use an unzip program that supports long filenames.
This will create the top directory and unpack the sources
into the relevant subdirectories. It will also create the
`share/texmf' directory and unpack the contents of Texmflib
library there.
- At this point, I suggest you to read the file
`kpathsea/INSTALL.txt'. It includes a detailed yet very
readable description of the various options available to you at
build and installation time.
- Make sure your TMPDIR environment variable points to a drive
with enough free space. Many DJGPP installations set this
variable to a RAM disk for performance reasons. Since RAM disks
tend to be small (a few Megabytes), a complex shell script may
fill it with temporary files, typically from pipes and `command`
expansions, after which point programs run by that shell will
start to fail. The TeX build process runs some very long and
complicated shell scripts which require around 4MB of free space
on TMPDIR filesystem (it failed for me when I had only 2.5MB).
If you cannot enlarge your RAM disk, point TMPDIR to a real disk
(the effect on the overall build time is insignificant, since
GCC will have hard time compiling some of the larger programs
with -O2 switch). TMPDIR is usually set on the DJGPP.ENV file,
but you can override it by setting TMPDIR from the DOS prompt.
- The default 256KB stack size limit of DJGPP programs is too
small for compiling some of the TeX programs. Make sure your
cc1.exe program has at least 768KB of stack. Here's how:
stubedit cc1.exe minstack=768k
(`stubedit' is part of the basic DJGPP development
environment).
- To configure the package for DJGPP, run the `config.bat' batch
file in the djgpp subdirectory. This sets some environment
variables and then invokes Bash to run the configuration script
with necessary arguments. (You can edit the batch file if you
want to run the script with different arguments.) The command
is this:
djgpp\config
- It is possible to configure and build Web2c from a directory
other than where the sources reside (useful when you cannot
write to that directory, like if it's on a CD-ROM). In that
case, you need to invoke `config.bat' with a single argument
which is the full pathname of the source directory. For
example:
f:\gnu\web2c-7.2\djgpp\config f:/gnu/web2c-7.2
Note that you MUST use Unix-style forward slashes in the
argument you pass to `config.bat', or else it will fail.
- The configure script will run for a while and recursively
configure the programs in subdirectories.
- After running `config', just say "make".
Building the full Web2c package takes a while (about 2 hours
on a 486/DX2-66, 35 minutes on a Pentium-166), so you might go
for a cup of coffee while it compiles.
- To build the emulation programs in the `contrib' directory,
chdir into that directory and say "make". Compiling `regex.c'
triggers several warning messages about variables that ``might
be used uninitialized''; you can safely disregard these
warnings.
- If you are building Texk more than 18 months since it was
released, you might see a warning message while LaTeX is built
which complains about old sources. In general, you can press
[Enter] in response to that message and let the build continue,
since the message is just a precaution. However, if you do care
to have the latest stuff, you will need to download the
latex/base directory from one of the CTAN mirrors and replace
with it the files in latex/base which come with tmflib74.zip.
- If you have changed some of the programs in the package, it is a
good idea to run tests on them. The Makefile in the web2c
directory has a large number of xxx-check targets, where xxx is
the name of a program; you can run these one by one by going
into web2c and saying like so:
make gftopk-check
You can also run all of them together by saying "make check" in
the top-level directory.
Some of the tests appear to fail (`diff' prints some actual
differences between the test results and the reference files
that come with the package. In most cases, this is normal
behavior (the programs were changed since the canonical results
were computed); the file `web2c/tests/check.log' includes the
output you should see for each test. If your results coincide
with `check.log' (except for the version of the package that the
programs print), you are doing fine.
- Before installing, if you already have a previous version of
Texk installed, review your `texmf.cnf' configuration file (in
%TEXMF%/web2c directory). If you have changed it from the
original, you might want the installation process to leave it
alone and not overwrite it with the fresh copy from the
distribution. In that case, edit `texmf.cnf' and remove the
word "original" from its first line. This tells the
installation process to refrain from replacing that file.
- To install the programs, say "make install" in the top
directory. This will create missing directories and copy the
programs and auxiliary files to their places. The programs
inside `contrib' need to be installed manually (typically, into
the same directory where the executable programs go).
Troubleshooting
---------------
I do NOT intend here to replace the various chapters in the docs
which explain how to solve problems and report bugs. Please read
the docs whenever you see any seemingly abnormal behavior. What's
below is intended to mention a few DOS- and DJGPP-specific
problems that you might see, and how to get around them.
First, a word of warning. Web2c is a tremendously large and
complex package, with dozens of different programs, some of them
with many different options. While porting it, I've made a good-
faith effort to test everything I could, including using it to
generate printed versions of various TeX and Texinfo documents.
However, some bugs might still be there. Please treat this port
accordingly and report possible bugs to the DJGPP news group
(comp.os.msdos.djgpp) first.
One possible problem you could see is due to insufficient number
of available file handles. `Dvilj' is particularly prone to this
problem. If you ever see an error message to the effect that a
program has no more handles, edit your CONFIG.SYS and enlarge the
FILES= setting there. (Don't forget to reboot so the new setting
is in effect.)
Another related problem manifests itself by an error message like
so:
c:\djgpp\bin/mf.exe: cannot open
This usually happens when a DVI driver finds a missing font and
invokes the MetaFont program to generate them on the fly. Due to
peculiarities of file handles inheritance from parent to child
processes, the child process can sometimes fail to start because
the stub cannot open the .exe file. I think I've fixed these
problems, so you shouldn't see such messages, but if you do,
please report the details.
If the font-creation fails, a file named `missfont.log' is created
in the current directory, with the commands you should issue to
make these fonts. Many times, invoking that file as a batch file
will create the missing fonts, so you could then invoke the DVI
driver again and it will work.
Happy TeXing!
Eli Zaretskii <eliz@is.elta.co.il>
|