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 21:24:07 +0100
User-agent: s-nail v14.9.24-343-g9e3ff607d5

Hello Paul Smith.

Paul Smith wrote in
 <07e283aabbe6e01cc56a8d9349257ab2f125f114.camel@gnu.org>:
 |On Mon, 2022-11-07 at 20:32 +0100, Steffen Nurpmeso wrote:
 |> 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
 |
 |I see.  I don't think any of us envisioned this idea of storing the
 |MAKEFLAGS from a previous run and using them in a subsequent run.  That
 |is an interesting use-case.

The users did not want to adjust the make.rc file.  Passing it via
command line is so much easier.

And then it is also that "config" fixates the -j statement, for me
personally.  Changing command line flags changes the configuration
and triggers rebuilds, which is a no-go in package builder recipes
which separate the different stages (config, build, test,
install..).  On the other hand want to pass the initial desire of
-j multiprocessing.  The way it is one then simply says "make"
and it scales up to the desire expressed when doing "config".

 |> 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?
 |
 |I agree that we should drop down to "jobserver unavailable" here rather
 |than having a fatal error.

That is great!  Thanks!

 |> 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'm not sure I understand what you are saying.  These values ARE passed
 |to the child clients through the environment.  That's what MAKEFLAGS
 |_is_, it's the environment variable that's used to allow a parent make
 |to provide information on options etc. to its sub-makes.
 |
 |The POSIX spec says (in the Rationale):
 |
 |> The environment [of the child processes] is the same as the
 |> environment to make except that MAKEFLAGS [...] are added

..ok.  Sorry.  I am definitely not in that matter.

 --End of <07e283aabbe6e01cc56a8d9349257ab2f125f114.camel@gnu.org>

What would interest me now.  Will there be GNU make 4.4.1?
(On the left and right i see quite some changes of projects to
become compatible with GNU make 4.4 though, CRUX Linux imported
a pretty lengthy glibc patch, and on the ports list of OpenBSD
there is also trouble..)

--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]