playing with the VAX 6460

From: Gunther Schadow <gunther_at_aurora.regenstrief.org>
Date: Tue Mar 19 01:19:42 2002

Hi,

this was my first 5 hours trying to do just some useful work
with the VAX 6460 (phicus) under Ultrix 4.5, now that the
worries are beyond getting it booted and getting free from
VMS, I remember again how hard UNIX can be in terms of
compatibility (of course that's all nothing as compared to
how hard it would be on VMS :-).

I was going to build the essentials of the amenities of the
modern times, like gzip, GNU tar, bash and less, and Emacs
and gcc and GNU make.

All I did accomplish was to make Ultrix's date(1) Y2K complient
warping my system time from 1976 up to 2002 :-). The patch
is attached for those who have the sources. That was easy.

Now gzip would build and install without remaking everything
all the time because of my system time being decades behind :-).
Gzip was easy too.

Next was tar, and here came the first problems. The fact that
Ultrix' cc is a k&r compiler and cpp is somehow not up to date
is causing great pains. Lots of stuff fails because of this.
I did try the VAX C compiler (vcc), which supposedly is ANSI-C,
but it made the confusion worse.

Some locale stuff was a common theme of stuff failing, which
of course I hate. I never cared for locales, and I get
upset if some locale crap goes in the way of getting things
to work. But I figured, I needed to fast-forward my build-
efforts to GCC.

I have GCC-2.9x.3 (latest before 3.0) with an eye on making
NetBSD from that platform. First I had to make GNU make,
because the GCC installation procedure has become more
sophisticated. Building make almost failed too had I not
applied some broad strokes to make cpp and the locale stuff
happy.

Now with GNU make, that GCC build would still fail quite early
for some strange syntax errors reported by cpp.
I could actually build cpp and cpp0 without all the rest,
but putting GNU cpp in front of Ultrix cc didn't do much good
at all. Of course there may be lots of other things wrong, for
I doubt anyone at GNU/Cygnus has tested the autoconf process
on Ultrix/VAX lately :-).

So, I decided I have to get some super old version of GCC,
like 1.42 or earlier, that has a chance of having been tested
on Ultrix back then. From that platform I might be able to
move on to a more recent GCC version.

Tried to build at least bash, but once again cpp woes in
the lib/readline build (and readline is really my main reason
for wanting bash!)`That's where I gave up on GNU stuff for
today.

Tried some kernel making again, on Ultrix, both 4.5 binary
and 4.2 source. I think config(8) is indeed doing the symlinks
to the BINARY objects, so doconfig should not be required
indeed.

However, I cannot seem to be able to bump up my MAXUSERS
variable effectively. I have set maxusers to 128 but when
I try my 3rd telnet connection I am being sent away. I
somewhere read that Ultrix had some hard restriction to
cut more money out of per-user licenses. Any idea what I
might be doing wrong in terms of maxusers?

Tried to build the Ultrix-4.2 kernel from sources. Need to
supply the -s option to the config(8) command (to use
sources instead of binary symlinks.) However, the 4.2
sources seem to be incomplete!!! I am missing at least
sys/kern_lmf.c. Has anyone here ever built successfully
from the Ultrix-4.2 sources? kern_lmf.c seems critical
and cannot be optioned out.

Tried to play with 4.3BSD sources, Tahoe and Quasijarus.
I must have FTPed the Quasijarus files in ASCII mode or
Michael is using a strange compress format, as neither
Ultrix compress nor gzip recognizes it as theirs. Noticed
that the TUHS archive's Tahoe version has some broken
files (as noted in BROKEN) that's sad. Tried to un-tar
the src.tar.gz of Tahoe to get to 4.3BSD's config(8)
tool (it's a good idea of Ultrix to put the config(8)
tool into the sys/ tree rather than the usr.(s)bin/
tree.) That's where I noticed that the src.tar.gz
is broken very early in the process. May be with GNU
tar it could find a point to continue after the error,
but then I need to build GNU tar first.

Ah, the worries of UNIX. But it was always fun and never
so frustrating as to make me want to throw hammers
like I want to when I am stuck with VMS. Of course I
appreciate tips as to how modern GNU stuff is built
on Ultrix.

regards,
-Gunther

-- 
Gunther Schadow, M.D., Ph.D.                    gschadow_at_regenstrief.org
Medical Information Scientist      Regenstrief Institute for Health Care
Adjunct Assistant Professor        Indiana University School of Medicine
tel:1(317)630-7960                         http://aurora.regenstrief.org
-------------- next part --------------
*** date_broken.c	Sun Oct  7 09:39:19 1990
--- date.c	Mon Mar 18 22:30:14 2002
***************
*** 80,86 ****
  
  static	int	dmsize[12] =
      { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
! static char *usage = "usage: date [-c | -u] [+format] [[yy[mm[dd]]]hhmm[.ss][-tttt][z]]\n";
  
  
  #define	MONTH	itoa(tp->tm_mon+1,cp,2)
--- 80,86 ----
  
  static	int	dmsize[12] =
      { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
! static char *usage = "usage: date [-c | -u] [+format] [[[cc]yy[mm[dd]]]hhmm[.ss][-tttt][z]]\n";
  
  
  #define	MONTH	itoa(tp->tm_mon+1,cp,2)
***************
*** 213,220 ****
  /*
   * Parse the date setting string.
   *
!  *	Format  [[[yy]MM]dd]hhmm[.ss][-tttt][z]
!  *	Where:	yy year
   *		MM month
   *		dd day
   *		hh hour
--- 213,221 ----
  /*
   * Parse the date setting string.
   *
!  *	Format  [[[[cc]yy]MM]dd]hhmm[.ss][-tttt][z]
!  *	Where:	cc century
!  *		yy year
   *		MM month
   *		dd day
   *		hh hour
***************
*** 226,232 ****
   */
  gtime()
  {
! 	register int i, year, month;
  	int day, hour, mins, secs, itz;
  	int east_greenwich = 0;		/* Set to 1 if "west of Greenwich" */
  	struct tm *L;
--- 227,233 ----
   */
  gtime()
  {
! 	register int i, century, year, month;
  	int day, hour, mins, secs, itz;
  	int east_greenwich = 0;		/* Set to 1 if "west of Greenwich" */
  	struct tm *L;
***************
*** 319,324 ****
--- 320,326 ----
  	day = gp(L->tm_mday);
  	month = gp(L->tm_mon+1);
  	year = gp(L->tm_year);
+ 	century = gp(19);
  	if (*sp)
  		return (1);
  	/*
***************
*** 339,345 ****
  	/*
  	 * Added up the seconds since the epoch
  	 */
! 	year += 1900;
  	for (i = 1970; i < year; i++)
  		tv.tv_sec += dysize(i);
  	/* 
--- 341,347 ----
  	/*
  	 * Added up the seconds since the epoch
  	 */
! 	year += century * 100;
  	for (i = 1970; i < year; i++)
  		tv.tv_sec += dysize(i);
  	/* 
Received on Tue Mar 19 2002 - 01:19:42 GMT

This archive was generated by hypermail 2.3.0 : Fri Oct 10 2014 - 23:35:12 BST