bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 4.4: embeds volatile information in MAKEFLAGS


From: Steffen Nurpmeso
Subject: Re: 4.4: embeds volatile information in MAKEFLAGS
Date: Mon, 07 Nov 2022 20:32:57 +0100
User-agent: s-nail v14.9.24-343-g9e3ff607d5

Hello.

Steffen Nurpmeso wrote in
 <20221105231048.8w3Mb%steffen@sdaoden.eu>:
 |Steffen Nurpmeso wrote in
 | <20221105230326.qIjDR%steffen@sdaoden.eu>:
 ||Dmitry Goncharov wrote in
 || <CAG+Z0CtJ_U4X8OTmD-yn5-eo4QHzfXhPYCa4E0MGqWF4PT1EtA@mail.gmail.com>:
 |||On Sat, Nov 5, 2022 at 6:24 PM Steffen Nurpmeso <steffen@sdaoden.eu> \
 |||wrote:
 |||>   make[1]: *** Cannot open jobserver /tmp/GMfifo31074: No such file \
 |||>   or directory.  Stop.
 |||
 |||Can you please tell us how to reproduce?

        mkdir /tmp/t
        cd /tmp/t
        cat > makefile <<'EOT'
        .NOTPARALLEL:
        .WAIT: # Luckily BSD make supports specifying this as target, too
        config:
                @{ echo MAKE=\"$(MAKE)\";echo MAKEFLAGS=\"$(MAKEFLAGS)\"; } > 
./au;echo config
        all:
                . ./au;echo all;$${MAKE} internal_
        internal_:
                @echo MAKE=$(MAKE), MAKEFLAGS=$(MAKEFLAGS)
        EOT

If you run this

  #?2|kent:y$ make -j4 config OPT_POP3=y;make all;../x/make-4.4/make -j4 config 
OPT_POP3=y;make all
  config
  . ./au;echo all;${MAKE} internal_
  all
  make[1]: warning: jobserver unavailable: using -j1.  Add '+' to parent make 
rule.
  make[1]: Entering directory '/tmp/y'
  MAKE=make, MAKEFLAGS=w -j1 -- OPT_POP3=y
  make[1]: Leaving directory '/tmp/y'
  config
  . ./au;echo all;${MAKE} internal_
  all
  make[1]: Entering directory '/tmp/y'
  make[1]: *** Cannot open jobserver /tmp/GMfifo17790: No such file or 
directory.  Stop.
  make[1]: Leaving directory '/tmp/y'
  make: *** [makefile:6: all] Error 2

I mean, _if_ the FIFO does not exist then "the server exited
gracefully", which it would not do upon crash, no?  Just ignore
ENOENT thus?  What do you say?
Btw if it would be me, i would pass that via environment
variables, which makes a natural connection to a server and its
child clients.  I mean, Linux and GNU LibC now make (some aspects
of) environment inaccessible for root aka SUID i think (E?UID
mismatches, issetuid or what-do-i-know, but this hardly is
a problem for GNU make.

I want to point out that this build system works with _all_ known
environments back to Y2K (*BSD, Linux, Solaris, [UnixWare 7.1.4]).

--steffen
|
|Der Kragenbaer,                The moon bear,
|der holt sich munter           he cheerfully and one by one
|einen nach dem anderen runter  wa.ks himself off
|(By Robert Gernhardt)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]