From: kootenai!swilson@chtm.eece.unm.edu (Scott Wilson)
Newsgroups: comp.soft-sys.khoros
Subject: (none)
Date: 4 Jan 93 20:12:45 GMT

From !MAILER-DAEMON  Mon Jan  4 09:41:11 1993
Received: by kootenai (5.65/1.35)
	id AA01022; Mon, 4 Jan 93 12:30:23 -0700
Message-Id: <9301041930.AA01022@kootenai>
Date: Mon, 4 Jan 93 09:41:11 -0700
From: !MAILER-DAEMON (Mail Delivery Subsystem)
Subject: Returned mail: Host unknown
To: swilson@kootenai
Status: R

   ----- Transcript of session follows -----
550 !olympus.engr.utk.edu.tcp... 550 Host unknown
550 mishi@!olympus.engr.utk.edu... Host unknown

   ----- Unsent message follows -----
Received: by chtm.eece.unm.edu (5.57/Ultrix3.0-C)
	id AA07315; Mon, 4 Jan 93 09:41:11 -0700
Received: by kootenai (5.65/1.35)
	id AA00874; Mon, 4 Jan 93 09:44:25 -0700
Date: Mon, 4 Jan 93 09:44:25 -0700
From: kootenai!swilson (Scott Wilson)
Message-Id: <9301041644.AA00874@kootenai>
To: mishi@!olympus.engr.utk.edu, swilson@chtm.eece.unm.edu
Subject: Re:  486 ISC binaries


Ahhhh. I know what your problem(s) are!

1. The UNIX library call "getwd" does not exist on ISC UNIX!!! This
is a poor implementation on the part of ISC. What you need to do is the 
following:

   Add definition #define getwd getcwd in src/xvroutines/Lib/xvutils/utils.c
   Add definition #define getwd getcwd in src/xvroutines/writer/lwriter.c

2. For the three undefined math routines - these do not exist in ISC either!
   They appear to exist only on ULTIRX. They do not show up in SunOS 4.0.
   What you need to do here is either make your own versions of these
   routines, or else:

   Add !defined(i386) to the lists of machines in xvparser.h
   that don't have rint, expm1, or log1p (note: TWO lists!).


That should fix you up. BUT - you aren't done yet! YOU have lots more
work to do. The following is what I had to do to get khoros to work
right on ISC UNIX 3.0 with gcc 2.2.2 and the standard ISC X stuff.
You will also find a problem in the scheduler in cantata that will
cause each glyph to require exactly 10 seconds to run. I fixed this problem
after I built the ISC/486 distribution on pprg - It's not documented yet.
I'll send it along if you need it.


Scott

==============================================================================
1. Had to remove extra close comment from i386.cf file.
2. Had to remove -fw from gcc compile arguments in i386.cf
3. Remove -fpu lib from lib list in i386.cf
4. Had to force __TIMEVAL__ to be defined in /usr/include/X11/Xos.h to prevent
   redeclaration.
5. Had to put all of /usr/include/sys/file.h inside #ifndef __FILEHD__
   (my own symbol) to prevent multiple include.
6. Added nsl_s to ExtraLibs in i386.cf
7. Added !defined(i386) to the lists of machines in xvparser.h
   that don't have rint, expm1, or log1p (note: TWO lists!).
8. Add definition #define getwd getcwd in src/xvroutines/Lib/xvutils/utils.c
9. Add definition #define getwd getcwd in src/xvroutines/writer/lwriter.c
10. Move EXTRA_LIBRARIES to end of LDLIBS list in 
    src/xvroutines/kraftsman/Imakefile
    because they are in the wrong order and it ends up with bogus
    undefined symbols.
11. Add definition #define getwd getcwd in src/Lib/vgparm/expandpath.c
12. In repos/fonts, Delete the bogus symbolic links, then rename the 
    font files so they can be found:
		ComplexRoman.v to ComplexR.vec
		DoubleRoman.ve DoubleR.vec
		SimplexRoman.v SimplexR.vec
		TimesRoman.vec TimesR.vec
		TimesItalics.v TimesI.vec
    and copy these files to the names:
		ComplexR.vec to ComplexR
		DoubleR.vec DoubleR
		SimplexR.vec SimplexR
		TimesR.vec TimesR
		TimesI.vec TimesI
		Symbols.vec Symbols
	Note: ComplexItalics.vec is gone! It got written over by the
	      symlink ComplexItalics which ends up being empty!
    and finally, copy
		DoubleR to DoubleRoman
    since this is hardwired as the default font filename in xprism, etc.
13. Install f2c. Install the "fc" script that comes with f2c as "f77" in
    /usr/local/bin. Then just turn on Has Fortran and maks sure I77 and
    F77 are in the load list. It all works!
14. Put the following fortran code in a file called cdabs.f in 
    src/public_domain/linpack:

	function cdabs(x)
	double precision cdabs
	complex*16 x
c
c	Compute the double precision magnitude of a double precision complex
c	number. This function is here 'cause f2c doesn't have a cdabs().
c
c	Scott Wilson 17 Aug 1992
c
	complex*16 prod
	double precision ans

	prod = x*dconjg(x)
	ans = sqrt(prod)
	cdabs = ans
	return
	end
	
and then do 

make Imakefile; makemake

in the linpack directory. This is necessary because f2c doesn't supply a
cdabs() function in its library or standard functions. Several of the
routines in num_analysis use cdabs() so I had to make a homebrew version.

15. Put the following code in src/Lib/vgparm/gethostname.c:

/*

	gethostname.c

	This routine is a kluge to get around the fact that the real
	gethostname() is missing from ISC UNIX 3.2.2. It is fortunate that
	"localhost" will work for any machine. It may not be too convenient,
	but it should work in all cases.

	Scott Wilson 17 Aug 1992
*/

#include <stdio.h>
int
gethostname(string,len)
char *string;
int len;
  {
    if (string == NULL)
      {
        return(-1);
      }
    else if (len < 10)
      {
        return(-1);
      }
    else
      {
        strcpy(string,"localhost");
        return(0);
      }
  }

then edit the Imakefile BY HAND (it can't be auto updated) and add
gethostname.c and gethostname.o in the proper places, and then do:

makemake ; make install

in src/Lib/vgparm. This is all 'cause ISC UNIX 3.2.2 doesn't have a
gethostname() function!
16. groff-1.05.90 or groff-1.06 seem to work well with Khoros, at least
at first inspection. Note that 1.05-90 is a Beta test for 1.06 and was
released on 16 May 1992 from ftp.uu.net:/tmp/groff-1.05.90.tar.Z by 
James Clark jjc@jclark.com. It will by default install a macro
package in /usr/local/lib/groff/tmac called tmac.gs which needs to
be copied as tmac.s in order for the normal "-ms" macro specification
to by found. Also, there is no S font in the ascii font tables in the
distribution. Unfortunately, it is needed by some of the man pages. A
hack fix is to copy the R font to the S font and edit the new S font, fisrt
line, to claim it is S instead or R. This will at least shut up the errors.
17. IN src/xvroutines/warpimage, the file "run_warpimage.c" is
truncated to  "run_warpimage." which causes the installation to
fail. Rename run_warpimage. as runwarpimage.c, do imkmf, makemake,
make depend, and make install. Be more careful!
18. PLEASE! Use the "o" option to tar when the tarfiles are created! This
prevents lots of hassles when they are untarred. The o option used during
extract SHOULD handle the problem, but often this is partially broken
(I have seen two machines that are this way!).
19. On ISC, all instances of "cp -i" must be removed since there is no
"-i" option. So far I have only found "cp -i" in src/tools/scripts/kdinstall_csh
and src/tools/scripts/kinstall_csh.
20. In src/tools/scripts/kinstall_csh, the line that mails the
results of the kinstall to the user reads:
    mail -s "kinstall $PROGRAM" $KHOROS_MAIL < /tmp/kinstall.$$
whereas on ISC it must read:
    mail $KHOROS_MAIL < /tmp/kinstall.$$
because the mail command on ISC Unix has no "-s" option. Instead, it
ignored the "-s" and tries to send mail to "kinstall" and "$PROGRAM" as
well as to the user! Not harmful, but annoying.
NOTE: JUST USE "mailx" instead of mail and even the -s is OK!