Subject: "make" diagnostic trying to build "xrn" 7.03 on NetBSD 1.0
To: None <netbsd-users@NetBSD.ORG>
From: Greg Earle <earle@isolar.tujunga.ca.us>
List: netbsd-users
Date: 04/07/1995 16:50:33
I'm not too familar with the vaguarities of NetBSD's "pmake" yet, so I was
wondering if someone could interpret this diagnostic:

netbsd4me# pwd
/usr/X11R6/src/contrib/programs/xrn-7.03

netbsd4me# xmkmf -a
mv -f Makefile Makefile.bak
imake -DUseInstalled -I/usr/X11R6/lib/X11/config
make Makefiles
"Makefile", line 530: Inconsistent operator for xrn.man
Fatal errors encountered -- cannot continue

netbsd4me# grep -w -n xrn.man Makefile
...
528:all:: xrn.man
530:xrn.man: xrn-man.src xrn-man.sed
531:    -rm -f xrn-man.tmp
532:    sed -f xrn-man.sed xrn-man.src > xrn-man.tmp
533:    -rm -f xrn.man
534:    mv xrn-man.tmp xrn.man
537:    $(RM) xrn-man.tmp* xrn-man.c xrn-man.sed xrn.man

I've looked in /usr/src/usr.bin/make/parse.c (UTS,L!) and I see

/*-
 *---------------------------------------------------------------------
 * ParseDoOp  --
 *      Apply the parsed operator to the given target node. Used in a
 *      Lst_ForEach call by ParseDoDependency once all targets have
 *      been found and their operator parsed. If the previous and new
 *      operators are incompatible, a major error is taken.
 *
 * Results:
 *      Always 0
 *
 * Side Effects:
 *      The type field of the node is altered to reflect any new bits in
 *      the op.
 *---------------------------------------------------------------------
 */
static int
ParseDoOp (gnp, opp)
    ClientData     gnp;         /* The node to which the operator is to be
                                 * applied */
    ClientData     opp;         /* The operator to apply */
{ 
    GNode          *gn = (GNode *) gnp;
    int             op = *(int *) opp;
    /*  
     * If the dependency mask of the operator and the node don't match and
     * the node has actually had an operator applied to it before, and
     * the operator actually has some dependency information in it, complain.
     */
    if (((op & OP_OPMASK) != (gn->type & OP_OPMASK)) &&
        !OP_NOP(gn->type) && !OP_NOP(op))
    {
        Parse_Error (PARSE_FATAL, "Inconsistent operator for %s", gn->name);
        return (1);
    }   

Parse_Error: I don't parse this  :-)

Is it complaining because "xrn.man" was a dependancy of "all" or what?
Or is it because "xrn.man" depends on "xrn-man.src" and "xrn-man.sed", and
there is a dependancy rule for "xrn-man.sed" but none for "xrn-man.src"
(which is just a plain file, anyway)?  I'm confused ...

	- Greg