KLH notes on MM building/installation Quick build summary: (1) Build CCMD. - Connect to "ccmd" dir. cd ccmd - Clean up old stuff if necessary make realclean (or make clean) - Examine Makefile to see which systems are supported, then make the appropriate one if necessary. Check machdep.h if porting! make (2) Build MM. - Connect to "mm" dir. cd mm - Clean up old stuff if necessary make clean - See which systems are already supported: ls -l sysh - Select one or edit one to create a new port. - Create a new "config.h" for your installation, which includes the sysh/s-XXX.h file above. Use existing config.h files as models; refer to config.h-generic for some documentation. --> ln -s config.h-cunix config.h - Make it with: make --> make fdc-solaris ------------------------------------- A2-02-28: MM: Flushed "getmail.c" - not used by anything, appears to have been an early version of "movemail.c". MM: Flushed "localfile.c" - not used by anything, appears to have been absorbed into "file.c". A2-02-23: MM now merged. MM: Merged FDC's latest stuff with KLH's. MM: Some re-organization of config stuff. Some parameters moved from s-xxx.h files into config.h. Some but not all s-xxx.h files modified accordingly. The updated ones: s-sun40.h s-linux.h s-bsd44.h s-decosf.h s-sun58.h MM: Revised Makefile to be more like CCMD's. Now say "make " rather than "make all". A2-02-19: CCMD: Massive re-write of ccmdlib.h and machdep.h to use new OS-dep definition scheme, plus many source tweaks to conform to new regime. CCMD BUG: The auto-generated cmfnc.h, which ccmd.h includes, contains OSD conditionals that are not defined by the time a ccmd client attempts to compile! In particular CCMD_OS_UNIX is not defined. A2-02-18: Start merge with FDC's latest stuff, CCMD first. CCMD: Ensured all public patches (y2k, y2k1) and Panix mods merged, then merged with FDC's latest. CCMD: Did NOT add msleep() from fdc's ccmd/datime.c; it belongs in MM, not CCMD. CCMD: Fixed all HAVE_ macros to ensure always defined 0 or 1 and tested accordingly. CCMD: Attempted to put all OSD feature defs into machdep.h, and all portability compensation defs into ccmdlib.h. But the overall structure of ccmdlib.h, machdep.h, and site.h, while improved, is still a mess. : Ported to Solaris and Linux. CCMD: Added TERMIOS support. CCMD/MM: Changed signal handling definitions to allow using sigsets. A0-01-01: Port to FreeBSD. CCMD: Lots of port stuff. OSD header files are still a big mess, should clean up machdep.h, site.h, ccmdlib.h. Flushed use of sys_errlist[] for strerror(). Replaced setkey by mmsetkey to avoid conflict with setkey(3) Replaced use of ftime() with gettimeofday() in dates.c. Fixed bug in mm-trans; will need re_comp replaced by newer regex stuff. MUST FIX: use of int for time_t. 94-02-02: MM crashed due to bug in CCMD; parse() found a char with value 0214 and passed it to checkbrk() which used it to index into _cmact and jumped into oblivion. In general, code seems to use "char", which is susceptible to sign-extension, rather than "unsigned char" or masks, and is highly vulnerable to meta-chars that have bit 0200 set. Sigh. 93-06-28: Applied all patches up to and including patch.04. Modified s-sun40.h to reflect Oracle environment. Original saved as s-sun40.h-orig. Modified config.h for personal MM pathnames (/private/mm, not /usr/local/lib/mm). Modified Makefile so that "make install" would put things in right places per above. It doesn't work very well, though; the chmod 2752 of movemail in particular requires appropriate access to work. Also it's not clear if the group should be "mail" as specified, or "daemon" as used on swamp.us.oracle.com. Trying daemon for now. Notes on MM configuration parameters: - config.h is intended to the repository of ALL installation-specific parameters (as opposed to OS-specific). There are only a few things that are not defaulted by anything else, which are listed in the file config.h-generic. - config.h is the only thing that includes the s-*.h files. This inclusion should be done first, so the body of config.h can change anything done by s-*.h (even if this requires doing undefs). This is simpler than conditionalizing all the s-*.h parameters (not possible anyway given that most are only tested for def/undef rather than value). - pathnames.h is only included by mm.h and comes after config.h, so any definition in config.h will override the defaults in pathnames.h. Notes on configuration pathnames in pathnames.h: The defaults can all be redefined in config.h. This is most important for those which are noted as unchangeable by the user (using the "Set" command to change a parameter); these are marked with [*]. * TMPDIR "/usr/tmp" Unchangeable; for temp files fed to gnuemacs. "Set temp-directory" can be used to direct all other temp files, which otherwise default to $HOME or /tmp. * SPOOL_DIRECTORY "/usr/spool/mail" Unchangeable: only used by newmail.c to check for new mail. EDITOR "emacs" "Set editor" can set this. Defaults to EDITOR env variable. PAGER "more" "Set crt-filter" can set this. Defaults to #defined value. SPELLER "ispell" "Set speller" can set this. Defaults to #defined value. BUGSTO "bug-mm" Unchangeable: bug address, only in sendcmds.c, misc.c But note "bug-mm" can be vectored with the "define" command, as in "define bug-mm ". This should be set up in the SYSINIT file. -- The following files should all be vectored off LIBDIR but aren't. -- * LIBDIR "/usr/local/lib/mm" Unchangeable: used to find user-group init file on startup, by init.c (pathname of "LIBDIR/.ini") This seems to be its ONLY use! Sigh. * SYSINIT "/usr/local/lib/mm/mm.conf" Unchangeable: specifies system-wide init file on startup, used by init.c. Also used by sys-prof.c (interactive standalone to generate this init file). HELPFILE "/usr/local/lib/mm/mm.help" "Set help-file" can set this. Defaults to #defined value. This variable doesn't appear to be actually used by any code, although this file does exist! Maybe an artifact of old versions. HELPDIR "/usr/local/lib/mm/help" "Set help-dir" can set this. Defaults to #defined value. Used to find help files, by help.c. MMAIL_PATH "/usr/local/lib/mm/mmail.el" "Set mmail-path" can set this. Defaults to #defined value. Used as path to gnuemacs mmail mode elisp file, if "gnuemacs-mmail" is "yes". MOVEMAIL "/usr/local/lib/mm/movemail" "Set movemail-path" can set this. Defaults to #defined value. Used as path for program to move mail from spool directory. * USAGEFILE "/usr/local/lib/mm/usage.log" Only if USAGE conditional defined. Unchangeable: specifies location to append MM usage info on exit.