Anyone installed 1.3.2 on Solaris?

Richard A. O'Keefe ok@atlas.otago.ac.nz
Wed, 3 Mar 1999 13:19:31 +1300 (NZDT)


Gert Veldhuijzen van Zanten <veldhvz@ipo.tue.nl> wrote

	I got this problem, and fixed it using some advice from the Clean team.
	
	> There are two different install programs on Solaris. 
	> The Clean compiler should be installed with /usr/ucb/install. 
	> You are probably using /sbin/install

Well, yes.  That _is_ the normal 'install' on Solaris these days.

	> The easiest way to get the right install program, is to change 
	> the PATH so that /usr/ucb comes before /sbin in your PATH, 
	> before installing Clean.
	
Um, like most people, I don't have /usr/ucb _anywhere_ in my PATH.
Makefiles for ***Solaris*** should not assume /usr/ucb utilities have
even been _installed_, let alone are the default.

May I request, as a matter of urgency, that this advice be added to
the README file and highlighted?  And that it be augmented to advise
that people make sure the UCB compatibility package is installed
before installing Clean?

However, this advice is NOT sufficient.

    % sh
    % PATH=/usr/ucb:$PATH
    % export PATH
    % make
==>
    Usage: ln [-f] [-s] f1
           ln [-f] [-s] f1 f2
           ln [-f] [-s] f1 ... fn d1
    *** Error code 1
    The following command caused the error:
    rm -f <cwd>/lib/stdenv/Clean\ System\ Files/libCleanxv.a; \
    if test -f ../../iolib/libCleanvx.a; \
            then ln -fs ../../iolib/libCleanxv.a <cwd>/lib/stdenv/\
		Clean\ System\ Files/libCleanxv.a; \
    else touch ../../libCleanxv.a; ln -fs ../../iolib/libCleanxv.a; \
	        rm ../../libCleanxv.a; \
    fi

That's just the beginning of it.

I note with some puzzlement the check for
    ../../iolib/libClean>>>vx<<<.a
followed by the attempt to create a link to
    ../../iolib/libClean>>>xv<<<.a

I note with some horror the words of the (ucb) on-line manual:

    -f   Force a hard link to a directory.
	 This option is only available to the super-user,
	 and should be used with EXTREME CAUTION.

I note with bafflement that iolib/libCleanxv.a
is an >>ar archive<<, not a directory, so that the -f option
could have no possible relevance in any case.

AH!

The problem is that the Clean makefile
    *MUST* have /usr/ucb/install
	in preference to the normal Solaris install, but
    MUST *NOT* have /usr/ucb/ln
	but must have the normal Solaris ln

So it is not at all sufficient to have /usr/ucb before /usr/sbin;
you must also have /usr/bin ahead of /usr/ucb.  It appears that
the advice in the README file should read

    You must have the following directories in the following order
    in your $PATH when you 'make' Clean:
	/bin /usr/bin /usr/ucb /usr/sbin

or whatever the actual necessary order is.