[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Mash for Linux + Notes
Woohoo.
Mash compiling notes:
Here are some things that must be done to get mash to compile on Redhat 6.1
./configure --enable-share
This produces *.so files, mash wants *.a files so don't use --enable-share
osfcn.h -> unistd.h in various files (net/tcpchan.cc ps/ps.cc ps/ps-file.cc
from top mash dir)
tcl/tk/mash MUST have the code layed out from a "make install" otherwise
they won't be happy.
Linux systems have a scc.h file, so you CAN'T reliably use the existing
"configure" scc video detection scheme. thus when configuring use
"--disable-sccvideo"
Add "-ldl" to the MISCLIBS line in the main Makefile, apparently the mash
configure file detects dl fine, but doesn't mention it in the Makefile!
My current setup:
/n/vid5/emase/ # top directory, everything's a sub dir of this dir
tcl8.0.5 # directory where the tcl SOURCES are
tk8.0.5 # directory where the tk SOURCES are
tcl805 # directory where tcl & tk INSTALLED FILES are located
tclcl # directory where tclcl is, apparently it comes bundled with mash-1
otcl-1.0a5 # directory where otcl is, note: version 5
gsm-1.0-pl10 # directory where gsm is
mash-1 # main mash directory
How I compiled it (in painstaking detail)
1. Tcl
unpack the tcl package
change the "prefix" variable in the ./configure file to match where you
want to PUT tcl. In my case it's "/n/vid5/emase/tcl805"
./configure ; make ; make install
2. Tk
unpack the tk package
change the "prefix" variable in the ./configure file to match where you
want to PUT tk. In my case it's "/n/vid5/emase/tcl805"
./configure --with-tcl=TCLSOURCE_LOCATION # note: replace
TCLSOURCE_LOCATION with where the tcl sources. In my case it's
"/n/vid5/emase/tcl8.0.5/unix" note the "unix" part!
make ; make install
3. otcl
unpack the otcl package
./configure --with-tcl=TCLFILE_LOCATION --with-tk=TKFILE_LOCATION # replace
the *FILE_LOCATION strings with the appropriate place. both of my strings
are "/n/vid5/emase/tcl805"
make ; make install
4. tclcl
this one came packaged with mash
I've forgotten whether I compiled it or not, in any case go to this
directory and type "make"
if it says nothing to do, continue to 5. gsm, otherwise run ./configure ; make
I've also tried this with compiling tclcl-1.0b9-current. Just do the
unpack, ./configure --with-tcl... --with-otcl... --with-tk... ; make with
the appropriated replacements.
5. gsm
unpack it
./configure ; make ; make install
6. mash
unpack mash
change all instances of "osfcn.h" to "unistd.h" in these files
(net/tcpchan.cc ps/ps.cc ps/ps-file.cc from top mash dir)
add "-ldl" to the MISCLIBS line in the main Makefile if it's not there
./configure --disable-sccvideo --with-tcl=/n/vid5/emase/tcl805
--with-tk=/n/vid5/emase/tcl805 --with-gsm=/n/vid5/emase/gsm-1.0-pl10
--with-otcl=/n/vid5/emase/otcl-1.0a5 --with-tclcl=/n/vid5/emase/tclcl
make
the mash binary is sitting in mash-1/bin
7. notify
Email me at emase@bmrc.berkeley.edu to say "hurray it worked" or "nuts! it
didn't work!"
P.S. all this is pretty loco. Me thinks for something this compicated, we
find a stable/feature correct set of tcl*, freeze it, and then keep
statically compiled versions of it around to distribute with mash (like in
the contrib section for those of you familiar with the form.) I realize
that this a) makes for a pretty large distribution and b) totally goes
against software reuse, but it brings some sanity to the situation. Your
thoughts?
P.S.S. What is osfcn.h anyways?
--Mason