[comp.sys.pyramid] make and archives

pack@acdpyr.ucar.edu (Dan Packman) (12/22/88)

In OSX4.0, make doesn't properly update library elements such as

                lib.a(foo.o)

This same construct in SUN OS4.0 properly finds the source file
(eg foo.c), recompiles it, archives the object file replacing
the old one, and then deletes the object file.  Is this fixed in OSX4.4?


Dan Packman     NCAR                         INTERNET: pack@acdpyr.UCAR.EDU
(303) 497-1427  P.O. Box 3000                   CSNET: pack@ncar.CSNET
                Boulder, CO  80307       DECNET  SPAN: 9.367::PACK

scott@questar.QUESTAR.MN.ORG (Scott Anderson) (12/23/88)

In article <1160@ncar.ucar.edu> pack@acdpyr.UCAR.EDU (Dan Packman) writes:
> In OSX4.0, make doesn't properly update library elements such as
>                 lib.a(foo.o)
> the old one, and then deletes the object file.  Is this fixed in OSX4.4?

Nope.  I switched to the ATT make for those particular libraries.  
Quite anoying.

Have not got this one in to RTOC yet, I have to put it on the waiting
list behind all of the other broken things... 1/2 :-)


-- 
Scott Anderson			UUCP: scott@Questar.MN.ORG,
Questar Data Systems			...!amdahl!bungia!questar!scott 
St. Paul, MN			 ATT: +1 612 688 0089

csg@pyramid.pyramid.com (Carl S. Gutekunst) (12/23/88)

In article <1160@ncar.ucar.edu> pack@acdpyr.UCAR.EDU (Dan Packman) writes:
>In OSX4.0, make doesn't properly update library elements such as
>
>                lib.a(foo.o)
>
>This same construct in SUN OS4.0 properly finds the source file....

RTFM, wrong universe. This facility does not exist in the 4.3BSD make(1), only
the System V make(1). (Actually, there are some broken stubs in 4.3BSD make(1)
for manipulating libraries, but they don't work as you'd like them to. SunOS
4.0 uses the System V make.) 

You can either compile your code in the att universe: 

	att make

or you can run the System V make in the ucb universe:

	ucb /.attbin/make

Note, this type of question is pretty straight-forward, and is much better
mailed to pyramid!bugs (RTOC) rather than being posted to the whole USENET.

<csg>

csg@pyramid.pyramid.com (Carl S. Gutekunst) (12/23/88)

In article <1160@ncar.ucar.edu> pack@acdpyr.UCAR.EDU (Dan Packman) writes:
>In OSX4.0, make doesn't properly update library elements...

In article <1951@questar.QUESTAR.MN.ORG> Scott Anderson writes:
>Nope.  I switched to the ATT make for those particular libraries.  
>
>Have not got this one in to RTOC yet....

And if you do, it will probably be returned from R&D with "user error." :-(
The 4.3BSD make works exactly as it is documented to work. (If this is really
important to you, though, by all means submit it as a bug anyway. You might
be able to change someone's mind. :-))

This is a fundamental philosophical principle of the dual port: you don't go
mixing features from the universes, even when those features are useful. The
ucb make(1) doesn't extract libraries any more than the att vi does handling
of SIGTSTP. Likewise, sockets aren't defined in the att universe, and shared
memory operations aren't defined in the ucb universe. The justification for
this is portability; if you write something that compiles and runs in the
Pyramid's ucb universe, it will also compile and run on a 4.3BSD VAX. If you
compile and run in the att universe, it will run on an SVR3 3B. If Pyramid's
ucb make(1) allowed library extractions, you would now have a variation that
was not portable to other systems. 

Of course, there is nothing from stopping you from using "/.attbin/make". But
then it becomes glaringly obvious that you are doing something non-portable.

I know a lot of people think that a "wall between the universes" is a pile of
dingo's kidneys, and certainly what Sun started in SunOS 3.2 is its very anti-
thesis. But a lot of other people (including me) who have to deal with a lot
of different UNIX systems have found it to be a real life saver. 

<csg>

david@sun.com (more handsome than your average prawn) (12/24/88)

In article <52130@pyramid.pyramid.com> csg@pyramid.pyramid.com (Carl S.
Gutekunst) writes:
>SunOS 4.0 uses the System V make.

Wrong.  SunOS 3.[2345] uses the System V make, with "SunPro make" optional
in 3.[45].  SunOS 4.0 uses "SunPro make", with System V make exiled to
/usr/old.

Why am I reading comp.sys.pyramid?