Last Update: max-unix-3.03b, Thu Jun 12 00:17:12 EDT 2003 Status: Getting there. This archive contains Maximus/UNIX v3.03 and Squish/UNIX v1.11. Maximus and Squish are Copyright (c) 1989-2003 by Lanius Corporation and Scott J. Dudley. These sources have been released under the terms of the GNU Public Licence. Please see the file LICENSE in this directory for the text of the GNU Public Licence (GPL). Maximus/UNIX and Squish/UNIX are ports for use by UNIX and UNIX-like (Linux, Mac OS/X) operating systems, by Wes Garland -- email me as wes@ninja250.kingston.net. You might also be able to reach me via routed netmail at 1:249/128. Note: I am very delinquent about checking my e-mail, because I get tonnes of spam and have a rather busy life. If you need to get ahold of me.. well, try every few days. Make sure you put "MAXIMUS" in the subject line. If you are a developer hacking on Maximus, you can give me a call at home, between the hours of 7:00pm and 8:30pm, Eastern Standard Time (GMT +0500). Don't bother asking for my phone number, if you aren't smart enough to figure it out, I don't want to talk to you. What's in the archive? Lots of stuff, here are the highlights: 00-README.1ST: This file :) docs/MaximusSourceDoc.doc: Some notes from sjd. Read before hacking. HACKING: Some notes from me (Wes). Read before hacking. docs/max_mast.doc: Latest Maximus docs in MS-Word 8 format. install_tree/docs/max_mast.pdf: Maximus 3.02 docs inPDF format (Thanks AC) MANIFEST: A list of what-file-is-where QUICKSTART: How to get up and running quickly. You should have also gotten max-3.03-etc.tar.gz, which should have been untarred in the same directory as the archive this file is in. In that archive, you will find: docs/max_mast.txt: Maximus docs as a text plain text (suitable for printing) sample/binkd.cfg: My BinkD configs (binkd 0.9.4) dist/arj-3.10g.tar.gz: The ARJ program I used for my compress.cfg dist/arc521e.tar.gz: The ARC program I used for my compress.cfg install_tree: A template installation (config files, etc) Q: How did you build this release? A1: Machine: Linux alpha 2.0.35 #1 Fri Oct 9 01:10:55 EDT 1998 alpha unknown CPU Type: Little Endian, 64-bits (64 bit long, 32 bit int, 16 bit short, 8 bit char) Compiler: egcs-2.90.29 980515 (egcs-1.0.3 release) Make: GNU Make version 3.76.1 Yacc: bison (Primary development platform) A2: Machine: SunOS sun 5.8 Generic sun4u sparc SUNW,Ultra-5_10 CPU Type: Big Endian, 32-bits Compiler: gcc version 2.95.2 19991024 (release) Make: GNU Make version 3.79.1 Yacc: /usr/ccs/bin/yacc (SUNWbtoo?) A3: Machine: Linux penguin.home.alexburke.ca 2.4.18-19.8.0 #1 Thu Dec 12 05:39:29 EST 2002 i686 i686 i386 GNU/Linux CPU Type: Little Endian, 32-bits Compiler: gcc (GCC) 3.2 20020903 (Red Hat Linux 8.0 3.2-7) Make: GNU Make version 3.79.1 Yacc: bison (GNU Bison) 1.35 Q: What do I need to build this release? A: Good question. I'd guess, GCC 2.72+, GNU Make 3.79+, Bison/Yacc, and a few megs of disk space. Make sure you installed the G++ stuff when you did GCC. This should be automatic for GCC 2.95 and later releases. Q: How many people are running this software? A: The current count is zero. Well, maybe two (Bo Simonsen and I, but neither are "production") Q: How well tested is it? A: Not as well as the 1979 Ford Pinto gas tank. Q: What works? A: Squish is a good canditate for that description. Bo Simonsen has been testing it and verifying its behaviour against Squish bases produced by HPT (The Husky Project). Bo has a Debian Linux box running on an Intel CPU. Most of the utilities (maid, silt, ansi2bbs, etc) seem to work. Maximus seems to work, but the Mex VM is BROKEN. Broken, broken, broken. Busted. I'd recommend just removing all your mex files for now. Q: How do I install Squish and Maximus? A: # tar -zxvf max-unix-stable.tar.gz # tar -zxvf max-3.03-etc.tar.gz # cd maximus # ./configure # make build # make install This is actually covered a little more in-depth in the QUICKSTART file. Q: How do I install just Squish? A: # tar -zxvf max-unix-stable.tar.gz # tar -zxvf max-3.03-etc.tar.gz # cd maximus # ./configure # make squish # make squish_install # mkdir -p /var/max/etc # cp install_tree/spool install_tree/etc/squish.cfg /var/max/etc Q: How do I install just Maximus? A: # tar -zxvf max-unix-stable.tar.gz # tar -zxvf max-3.03-etc.tar.gz # cd maximus # ./configure # make max # make max_install # cp -rp install_tree/* /var/max # rm /var/max/etc/squish.cfg Q: Where can I expect problems with this release? A: Everywhere! Q: No, more specifically! A: Oh. - You may have a hard time building it. Feeback, please. - Big Endian machines will not read fido packets, and probably a whole horde of other things will blow up. - File locking semantics might be broken, so multinode systems might randomly destroy things and frighten users. - Semaphores aren't turned on, and besides, your UNIX mailer probably doesn't know about Squish, anyhow. So, uh, just have the mailer call Squish, like in the bad old DOS days. Don't make it a cron job. And make sure your mailer won't call two Squishes at once. - There is no serial support yet. YET. Q: What do I do if I find a bug? A: Check the Bug Tracker at maximus.sourceforge.net. If it's not set up yet (or you can't access the internet), post your findings on the FidoNet MUFFIN echo. Q: I made some changes; how do I send you the diffs? A: Hopefully you're using CVS: # cvs diff max/changedfile1.c slib/changedfile2.h | /usr/lib/sendmail wes@ninja250.kingston.net Q: I don't like installing my stuff in /var/max A: Change vars.mk, or specify a new prefix on the configure command line. Actually, the latter is probably much wiser. Q: How can I set up the Binkd mailer to work with Squish? A: See sample/binkd. If you have a better config, please send it to me. Q: I'm not building under LINUX. What do I do? A: Read HACKING, notice what configure complains about, and fix it. The send me the diffs. Q: Hey! I tried to build your sources under Windows and nothing works! A: Duh. If you are feeling really resourceful, you can fix everything I broke. I'll even help by contributing a makefile which makes GNU Make 3.79 interoperate with MSVC 5.0 (and eVc 3.0 + celib if you're a crazy masochist) by providing default rules for the command line compiler. This way we'd only need to maintain one set of makefiles, although it would force Windows developers to install CygWin in order to build Windows-native binaries. But that's good, maybe they will see the light. Q: Hey! I tried to build your sources under DOS/DJGPP, and nothing works! A: Well, at least I sort of feel sorry for you. If you get it working, let me know what you had to change, and send in some diffs. Q: Hey! I tried to build your sources under OS/2 with Watcom C, and nothing works! A: Somebody still has those tools? Cool! Once you get it working, Let me know what I broke, and I'll fix it. Q: Hey! I tried to build your sources under OS/2 with GCC and EMX, and nothing works! A: That doesn't surprise me, I don't know anything about OS/2, except how to spell it (and how to make a wall clock out of the IBM OS/2 2.1 Beta CD). If it doesn't take you much to fix it, let me know, and I'll merge the patches in. Q: Why are your Makefiles a mess? A: They're not, check out those makefile.mk things! Okay, they're not actually messy, just odd. But now you know why mine are a mess, I was in hurry to get things working. (Later note: dmake makefile.mk files have been moved to the CVS attic). Q: Can I use GNU AutoConf to help me build Maximus/Squish? A: Download AutoConf. Come up with the Makefile templates, etc. Get everything compiling and linking, and send me your .in files. They'd better be good, because I'm not much of an Autoconf fan (too tricky for me ;) Q: Hey, I have an Intel box, and think it would be neat if I could compile the assembly code and make use of it somehow. A: Good for you, so get to work. I don't have an Intel UNIX box, and Maximus doesn't need to run under DOS with 8250 UARTs on a 1024K 386 running DESQview 2.51 anymore. Q: So, how did you get around all that assembly? A: Direct Video Vid* routines implemented using the OS/2 C code as a base. Some OS/2 Vio* routines were replaced wholesale; in other cases the Vid* routines were replaced. In either case, I used curses. The com routines were based on the Windows NT com code. Other things weren't needed. Some things were probably left out at great peril. Q: You keep talking about locking semantics being a problem. A: Yeah, I need docs for the OS/2 DosSem* calls. Not the 32-bit mutex calls, the 16-bit ones. Ditto for sopen(). These are both in src/unix (libcompat.so). Q: What can I do to help? A: - Test by using - Fix the C++ code in btree to compile cleanly with a modern compiler. (Later note: You'll have to remove -fpermissive from CXXFLAGS to see most of the whining). - Unit test the tricky-looking stuff in src/unix. - Do something nice with the tui. My hackish approach for the installer was just a quick attempt to see what would happen. A full curses port should only be a 10-12 hour effort. (Later note: tui was so bad I "unreleased" it) - Write some endian-proof struct packing code (nice tidy libraries, please) and throw it at the fido packet stuff. My current (poor) solution is to make the compiler pack the structs itself, and hope like hell we're running on a little endian platform. Grep for __attribute.*packed to find where I've done this. (Later note: Bo scooped some from Husky, good for him. That helps Squish a lot) (Later note again: I'll be stealing a bunch more from xmsgapi, it's just what I need) - If it cores, send me a stack backtrace (gdb, bt). Keep the core, source, binary and libraries around for a while, I may need more input. - Write a com library based on ntcomm.c which uses the POSIX termios interface. - If it just won't do something, send me a system call trace, about 500 lines around the problem area. If you use truss for the trace, trap the entry/exit points for the DLLs in /var/max/lib. (truss = SYSV, ktrace = BSD, strace = Linux) - If you are a door developer, port your code, or send it to me. Especially if your door is in C, C++, Perl, MECCA, MEX, Pascal, or BASIC. VB and QB don't count as BASIC, but some QB code might be usable if your door is really good. Q: What do I do if I didn't understand this document? A: Wait until I get an alpha release candidate ready. If you can't understand this, then you're not ready to run a release in this state. Actually, maybe you could convince all of your hacker friends to help you out, and publish their changes. -- Wes Garland, 1:249/128 wes@ninja250.kingston.net