Re: [PATCH] Add the --nice argument to make

2019-09-16 Thread Philip Guenther
On Mon, Sep 16, 2019 at 4:17 PM Palmer Dabbelt  wrote:

> I call make quite regularly, and I almost always want to invoke it with
> at least a bit of nice to avoid it eating my whole machine.  Since I can
> stick "-j$(nproc)" in my shell's default MAKEFLAGS I frequently end up
> being lazy and just typing "make", which I then have to kill in order to
> re-run as "nice -n10 make".
>

This sounds like a perfect case to use a shell alias or function in your
shell's rcfile, or a shell script in your person bin directory.  i.e.,
something like
alias make='nice -n10 make'
or maybe
make() { nice -n10 /usr/bin/make "$@"; }


Philip Guenther
___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


[PATCH] Add the --nice argument to make

2019-09-16 Thread Palmer Dabbelt
I call make quite regularly, and I almost always want to invoke it with
at least a bit of nice to avoid it eating my whole machine.  Since I can
stick "-j$(nproc)" in my shell's default MAKEFLAGS I frequently end up
being lazy and just typing "make", which I then have to kill in order to
re-run as "nice -n10 make".

That's a lot of typing, so this patch adds a "--nice" argument that,
when stuck in my makeflags, allows me to be lazy and avoid trashing my
whole machine.  I've never contributed to make before, so I'm not sure
what to do in terms of collateral -- I've just modified the usage text
and make.1.

* main.c (arg_nice): New variable.
  (usage): Add --nice argument.
  (switches): Add --nice argument.
  (main): Check arg_nice, and call nice() on POSIX systems.  Print a
  warning on non-POSIX systems or when nice() had no effect.
---
 doc/make.1 |  5 +
 src/main.c | 20 
 2 files changed, 25 insertions(+)

diff --git a/doc/make.1 b/doc/make.1
index c9b60a3..33faeb2 100644
--- a/doc/make.1
+++ b/doc/make.1
@@ -264,6 +264,11 @@ Do not run any commands, or print anything; just return an 
exit status
 that is zero if the specified targets are already up to date, nonzero
 otherwise.
 .TP 0.5i
+\fB\-\-nice\fR=\fIincrement\fR
+Runs this
+.BR make
+instance with the given nice increment.
+.TP 0.5i
 \fB\-r\fR, \fB\-\-no\-builtin\-rules\fR
 Eliminate use of the built\-in implicit rules.
 Also clear out the default list of suffixes for suffix rules.
diff --git a/src/main.c b/src/main.c
index 04d6ba5..abc8faf 100644
--- a/src/main.c
+++ b/src/main.c
@@ -47,6 +47,9 @@ this program.  If not, see .  */
 #ifdef HAVE_FCNTL_H
 # include 
 #endif
+#ifdef HAVE_UNISTD_H
+# include 
+#endif
 
 #ifdef _AMIGA
 int __stack = 2; /* Make sure we have 20K of stack space */
@@ -325,6 +328,9 @@ struct variable shell_var;
 
 char cmd_prefix = '\t';
 
+/* The value make will nice itself to. */
+static int arg_nice = 0;
+
 
 /* The usage output.  We write it this way to make life easier for the
translators, especially those trying to translate to right-to-left
@@ -381,6 +387,10 @@ static const char *const usage[] =
   -p, --print-data-base   Print make's internal database.\n"),
 N_("\
   -q, --question  Run no recipe; exit status says if up to 
date.\n"),
+#ifdef HAVE_UNISTD_H
+N_("\
+  --nice  Set a nice value.\n"),
+#endif
 N_("\
   -r, --no-builtin-rules  Disable the built-in implicit rules.\n"),
 N_("\
@@ -464,6 +474,7 @@ static const struct command_switch switches[] =
 { CHAR_MAX+7, string, _mutex, 1, 1, 0, 0, 0, "sync-mutex" },
 { CHAR_MAX+8, flag_off, _flag, 1, 1, 0, 0, _silent_flag, 
"no-silent" },
 { CHAR_MAX+9, string, _auth, 1, 0, 0, 0, 0, "jobserver-fds" },
+{ CHAR_MAX+10, positive_int, _nice, 1, 0, 0, 0, 0, "nice" },
 { 0, 0, 0, 0, 0, 0, 0, 0, 0 }
   };
 
@@ -1483,6 +1494,15 @@ main (int argc, char **argv, char **envp)
   arg_job_slots = env_slots;
   }
 
+  /* Nice ourselves, if requested. */
+  if (arg_nice)
+{
+#ifdef HAVE_UNISTD_H
+  if (nice(0) == nice(arg_nice))
+#endif
+O (error, NILF, _("warning: unable to nice"));
+}
+
   /* Set a variable specifying whether stdout/stdin is hooked to a TTY.  */
 #ifdef HAVE_ISATTY
   if (isatty (fileno (stdout)))
-- 
2.21.0


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: "make check" failure on Solaris 10 with make 4.2.91

2019-09-16 Thread Paul Smith
On Mon, 2019-09-16 at 12:23 -0700, Paul Eggert wrote:
> > Can you run this and tell me what it prints:
> > 
> >perl -we 'use File::Spec::Functions qw(splitpath); my @o =
> splitpath("../make"); print "@o\n"'
> 
> A single line " ../make".

Ugh, that's wrong.  It should be " ../ make" (note the space before
"make").  File::Spec is not correctly splitting the directory from the
file, apparently.  Bogus!!  Can you try this one:

  perl -we 'use File::Spec; my @o = File::Spec->splitpath("../make"); print 
"@o\n"'

and see what that says?

> > and also this:
> > 
> >perl -we 'use File::Spec; print "$File::Spec::VERSION\n";'
> 
> A single line "0.87".

Hm.  This should be OK.  I must admit I'm not really familiar with the
full history of File::Spec and what was/wasn't supported.

Regarding your errors:

I'm not sure about the output-sync tests.  Could be timing, could be
something else.  I'd be a little surprised if it was timing; I thought
I had made those timeouts more than long enough; they're supposed to
just be sanity checks.  If you want you can up them by changing:

  $tmout = 30;

in tests/scipts/features/output-sync.

The vpathplus difference is due to endian issues; our hash function
returns a different order between big/little endian.  There's a patch
out there to test this in Perl and adjust the expected output.  I'm
still thinking about it.

The wildcard one is probably because Solaris struct dirent doesn't have
a d_type field, or else autoconf can't find it.  Google makes me
suspect the former.

In that situation our current glob library just doesn't try to tell the
difference between files and directories, rather than falling back to
an explicit stat() or something, and so some of these wildcard tests
fail.  I may not fix this before the 4.3 release... it's not a
regression; these tests would fail with the 4.2.1 release as well.  I
may wait until the next release and pull in the latest gnulib glob code
instead of continuing to keep a local, old and crusty version.

The downside is gnulib glob yanks in A LOT of extra stuff and that
makes the non-POSIX ports (native Windows, VMS, DOS, etc.) much more
difficult.  Maybe I should keep the old glob code for those platforms. 
Hm.


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: "make check" failure on Solaris 10 with make 4.2.91

2019-09-16 Thread Paul Eggert

On 9/16/19 11:20 AM, psm...@nuodb.com wrote:

On Mon, 2019-09-16 at 11:04 -0700, Paul Eggert wrote:

syntax error at ./run_make_tests.pl line 473, near "or continue"


Ugh.  Can you change this line:

   -x $prog or continue;

to this:

   -x $prog or next;


Thanks, that got the tests to start up. However, 6 tests failed, with 
diagnostics reported below.



Can you run this and tell me what it prints:

   perl -we 'use File::Spec::Functions qw(splitpath); my @o = splitpath("../make"); print 
"@o\n"'


A single line " ../make".


and also this:

   perl -we 'use File::Spec; print "$File::Spec::VERSION\n";'


A single line "0.87".


The failures were the following:

features/vpathplus .. FAILED (3/4 
passed)
functions/shell . FAILED (7/8 
passed)
functions/wildcard .. FAILED (8/9 
passed)


plus the following three timeouts in features/output-sync, perhaps 
because the hardware is reasonably old and slow (a circa-2005 Sun Fire 
280R with 750 MHz UltraSPARC III CPUs).


features/output-sync 
Test timed out after 30 seconds
Error running /var/run/rpc_door/eggert/make-4.2.91/tests/../make 
(expected 0; got 14): /var/run/rpc_door/eggert/make-4.2.91/tests/../make 
-f work/features/output-sync.mk -j -Orecurse


Caught signal 14!

Test timed out after 30 seconds
Error running /var/run/rpc_door/eggert/make-4.2.91/tests/../make 
(expected 0; got 14): /var/run/rpc_door/eggert/make-4.2.91/tests/../make 
-f work/features/output-sync.mk.1 -j --output-sync=target


Caught signal 14!

Test timed out after 30 seconds
Error running /var/run/rpc_door/eggert/make-4.2.91/tests/../make 
(expected 0; got 14): /var/run/rpc_door/eggert/make-4.2.91/tests/../make 
-f work/features/output-sync.mk.1 -j --output-sync=target x=


Caught signal 14!
FAILED (12/15 passed)


I'm attaching a copy of the *.*diff* files.
::
tests/work/functions/shell.diff.7
::
*** work/functions/shell.base.7 Mon Sep 16 12:14:33 2019
--- work/functions/shell.log.7  Mon Sep 16 12:14:33 2019
***
*** 1 
! SIG=130
--- 1 
! SIG=208
::
tests/work/functions/wildcard.diff.6
::
*** work/functions/wildcard.base.6  Mon Sep 16 12:14:33 2019
--- work/functions/wildcard.log.6   Mon Sep 16 12:14:33 2019
***
*** 1,13 
  hellod hellof
! hellod/
  hellod/worldd hellod/worldf
! hellod/worldd/
  hellod hellof hellod/worldd hellod/worldf
! hellod/ hellod/worldd/
  hellod/worldd hellod/worldf
! hellod/worldd/
  hellod/worldd hellod/worldf
  hellod/worldd/
! hellod/worldd/kend1/ hellod/worldd/kend2/
  hellod/worldd/kend1 hellod/worldd/kend2 hellod/worldd/kenf1 
hellod/worldd/kenf2
! hellod/worldd/kend1/ hellod/worldd/kend2/
--- 1,13 
  hellod hellof
! hellod/ hellof
  hellod/worldd hellod/worldf
! hellod/worldd/ hellod/worldf
  hellod hellof hellod/worldd hellod/worldf
! hellod/ hellof hellod/worldd/ hellod/worldf
  hellod/worldd hellod/worldf
! hellod/worldd/ hellod/worldf
  hellod/worldd hellod/worldf
  hellod/worldd/
! hellod/worldd/kend1/ hellod/worldd/kend2/ hellod/worldd/kenf1 
hellod/worldd/kenf2
  hellod/worldd/kend1 hellod/worldd/kend2 hellod/worldd/kenf1 
hellod/worldd/kenf2
! hellod/worldd/kend1/ hellod/worldd/kend2/ hellod/worldd/kenf1 
hellod/worldd/kenf2
::
tests/work/features/output-sync.diff
::
*** work/features/output-sync.base  Mon Sep 16 12:13:07 2019
--- work/features/output-sync.log   Mon Sep 16 12:12:37 2019
***
*** 1,12 
- /var/run/rpc_door/eggert/make-4.2.91/tests/../make -C foo
- make[1]: Entering directory '/var/run/rpc_door/eggert/make-4.2.91/tests/foo'
- foo: start
- foo: end
- make[1]: Leaving directory '/var/run/rpc_door/eggert/make-4.2.91/tests/foo'
- /var/run/rpc_door/eggert/make-4.2.91/tests/../make -C bar
- make[1]: Entering directory '/var/run/rpc_door/eggert/make-4.2.91/tests/bar'
- bar: start
- bar: end
- baz: start
- baz: end
- make[1]: Leaving directory '/var/run/rpc_door/eggert/make-4.2.91/tests/bar'
--- 0 
::
tests/work/features/output-sync.diff.1
::
*** work/features/output-sync.base.1Mon Sep 16 12:13:37 2019
--- work/features/output-sync.log.1 Mon Sep 16 12:13:09 2019
***
*** 4,14 
  bar: start
  bar: end
  make[1]: Leaving directory '/var/run/rpc_door/eggert/make-4.2.91/tests/bar'
- make[1]: Entering directory '/var/run/rpc_door/eggert/make-4.2.91/tests/foo'
- foo: start
- foo: end
- make[1]: Leaving directory '/var/run/rpc_door/eggert/make-4.2.91/tests/foo'
- make[1]: Entering directory '/var/run/rpc_door/eggert/make-4.2.91/tests/bar'
- baz: start
- baz: end
- make[1]: Leaving directory '/var/run/rpc_door/eggert/make-4.2.91/tests/bar'
--- 4,6 
::
tests/work/features/output-sync.diff.2
::
*** work/features/output-sync.base.2Mon Sep 16 12:14:08 2019
--- 

Re: "make check" failure on Solaris 10 with make 4.2.91

2019-09-16 Thread Paul Smith
On Mon, 2019-09-16 at 11:04 -0700, Paul Eggert wrote:
> syntax error at ./run_make_tests.pl line 473, near "or continue"

Ugh.  Can you change this line:

  -x $prog or continue;

to this:

  -x $prog or next;

?  That's a dumb syntax error.  Too many different languages.

However, I don't think we should ever be in this situation.  The only
way we can ever get here is if you ran with "-make make" but you
clearly ran with "-make ../make" so we can't get into this loop.

Can you run this and tell me what it prints:

  perl -we 'use File::Spec::Functions qw(splitpath); my @o =
splitpath("../make"); print "@o\n"'

and also this:

  perl -we 'use File::Spec; print "$File::Spec::VERSION\n";'

Thanks!




___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


[bug #56895] Cannot build make due to compiler warnings/failures

2019-09-16 Thread David A. Wheeler
Follow-up Comment #4, bug #56895 (project make):

Excellent, I will check it out (literally). Thank you!

___

Reply to this item at:

  

___
  Message sent via Savannah
  https://savannah.gnu.org/


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


"make check" failure on Solaris 10 with make 4.2.91

2019-09-16 Thread Paul Eggert
On Solaris 10 sparc, "make check" fails with the attached output. 
Solaris 10 has Perl v5.8.4 (with 46 registered patches), which is still 
maintained by Oracle (most recently updated in 2016).


I guess the GNU Make test procedure currently requires a later version 
of Perl. If so, it'd be helpful for it to skip tests that require a 
newer version of Perl than what's installed. Or if it's easy to port to 
v5.8.4 that'd be good too.
$ make check
Making check in lib
make  check-recursive
Making check in po
Making check in doc
make  check-local
cd tests && perl ./run_make_tests.pl -srcdir 
/var/run/rpc_door/eggert/make-4.2.91 -make ../make 
syntax error at ./run_make_tests.pl line 473, near "or continue"
Execution of ./run_make_tests.pl aborted due to compilation errors.
*** Error code 255
The following command caused the error:
if test -f './tests/run_make_tests'; then \
  ulimit -n 128; \
  if perl -v >/dev/null 2>&1; then \
case `cd '.'; pwd` in `pwd`) : ;; \
  *) test -d tests || mkdir tests; \
 rm -f srctests; \
 if ln -s './tests' srctests; then \
   for f in run_make_tests run_make_tests.pl test_driver.pl scripts 
jhelp.pl; do \
 rm -f tests/$f; ln -s ../srctests/$f tests; \
   done; fi ;; \
esac; \
echo "cd tests && perl ./run_make_tests.pl -srcdir 
/var/run/rpc_door/eggert/make-4.2.91 -make ../make "; \
cd tests && perl ./run_make_tests.pl -srcdir 
'/var/run/rpc_door/eggert/make-4.2.91' -make '../make' ; \
  else \
echo "Can't find a working Perl (perl); the test suite requires Perl."; \
  fi; \
else \
  echo "Can't find the GNU Make test suite (./tests)."; \
fi
make: Fatal error: Command failed for target `check-regression'
Current working directory /var/run/rpc_door/eggert/make-4.2.91
*** Error code 1
make: Fatal error: Command failed for target `check-am'
Current working directory /var/run/rpc_door/eggert/make-4.2.91
*** Error code 1
The following command caused the error:
fail=; \
if (target_option=k; case ${target_option-} in  ?) ;;  *) echo 
"am__make_running_with_option: internal error: invalid"  "target option 
'${target_option-}' specified" >&2;  exit 1;;  esac;  has_opt=no;  
sane_makeflags=$MAKEFLAGS;  if {  if test -z ''; then  false;  elif test -n 
'sparc-sun-solaris2.10'; then  true;  elif test -n '' && test -n ''; then  
true;  else  false;  fi;  }; then  sane_makeflags=$MFLAGS;  else  case 
$MAKEFLAGS in  *\\[\ \  ]*)  bs=\\;  sane_makeflags=`printf '%s\n' "$MAKEFLAGS" 
 | sed "s/$bs$bs[$bs $bs]*//g"`;;  esac;  fi;  skip_next=no;  
strip_trailopt ()  {  flg=`printf '%s\n' "$flg" | sed "s/$1.*$//"`;  };  for 
flg in $sane_makeflags; do  test $skip_next = yes && { skip_next=no; continue; 
};  case $flg in  *=*|--*) continue;;  -*I) strip_trailopt 'I'; skip_next=yes;; 
 -*I?*) strip_trailopt 'I';;  -*O) strip_trailopt 'O'; skip_next=yes;;  -*O?*) 
strip_trailopt 'O';;  -*l) strip_trailopt 'l'; skip_next=yes;;  -*l?*) 
strip_trailopt 'l';;  -[dEDm]) skip_next=yes;;  -[JT]) skip_next=yes;;  esac;  
case $flg in  *$target_option*) has_opt=yes; break;;  esac;  done;  test 
$has_opt = yes); then \
  failcom='fail=yes'; \
else \
  failcom='exit 1'; \
fi; \
dot_seen=no; \
target=`echo check-recursive | sed s/-recursive//`; \
case "check-recursive" in \
  distclean-* | maintainer-clean-*) list='lib po doc' ;; \
  *) list='lib po doc' ;; \
esac; \
for subdir in $list; do \
  echo "Making $target in $subdir"; \
  if test "$subdir" = "."; then \
dot_seen=yes; \
local_target="$target-am"; \
  else \
local_target="$target"; \
  fi; \
  (CDPATH="${ZSH_VERSION+.}:" && cd $subdir && make  $local_target) \
  || eval $failcom; \
done; \
if test "$dot_seen" = "no"; then \
  make  "$target-am" || exit 1; \
fi; test -z "$fail"
make: Fatal error: Command failed for target `check-recursive'
___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: vpathplus test 2 patch

2019-09-16 Thread Andreas Schwab
On Sep 16 2019, Paul Smith  wrote:

> On Thu, 2019-09-12 at 09:33 +0200, Andreas Schwab wrote:
>> On Sep 11 2019, Dmitry Goncharov  wrote:
>> > On Wed, Sep 11, 2019 at 2:51 AM Andreas Schwab  wrote:
>> > > > The new hashing mechanism hashes differently on big vs little
>> > > > endian.
>> > > 
>> > > Should this be considered as a bug?
>> > 
>> > I don't think the order or removal of intermediate files was
>> > specified.
>> 
>> The testsuite obviously is depending on it.
>
> The test suite simply matches output strings, it's not very intelligent
> about stuff like that (unfortunately).
>
> I didn't apply this change because I'm not exactly sure where I want to
> go with this yet.  I'm not excited about tweaking the test suite based
> on the endianness of the underlying system but it seems silly to reduce
> the performance of the hash to make it consistent across endianness as
> well.

If the hash implementation is not defined, then the testsuite should
match any order, and not just based on endianess.

Andreas.

-- 
Andreas Schwab, SUSE Labs, sch...@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."

___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: patch realpath on aix

2019-09-16 Thread Paul Smith
On Fri, 2019-09-13 at 21:42 -0400, Dmitry Goncharov via Bug reports and
discussion for GNU make wrote:
> aix implementation of realpath returns a path with a trailing slash
> given a path with 2 or more trailing slashes. This makes realpath test
> fail.

This one didn't make it into the current RC but I'll address it before
4.3.


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: vpathplus test 2 patch

2019-09-16 Thread Paul Smith
On Thu, 2019-09-12 at 09:33 +0200, Andreas Schwab wrote:
> On Sep 11 2019, Dmitry Goncharov  wrote:
> > On Wed, Sep 11, 2019 at 2:51 AM Andreas Schwab  wrote:
> > > > The new hashing mechanism hashes differently on big vs little
> > > > endian.
> > > 
> > > Should this be considered as a bug?
> > 
> > I don't think the order or removal of intermediate files was
> > specified.
> 
> The testsuite obviously is depending on it.

The test suite simply matches output strings, it's not very intelligent
about stuff like that (unfortunately).

I didn't apply this change because I'm not exactly sure where I want to
go with this yet.  I'm not excited about tweaking the test suite based
on the endianness of the underlying system but it seems silly to reduce
the performance of the hash to make it consistent across endianness as
well.

Will fix this before 4.3 is released though.


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


GNU make 4.2.91 release candidate available

2019-09-16 Thread Paul Smith

GNU make is a tool which controls the generation of executables and
other non-source files of a program from the program's source files.

You can learn more at: https://www.gnu.org/software/make/


A new release candidate for GNU make 4.3 is available now for download:

7f4b83d3cab5fcf94784f08eb055c1e8  make-4.2.91.tar.bz2
aeac9b47022df1c3c25c94a0190b643e  make-4.2.91.tar.gz

You can obtain a copy from:  https://alpha.gnu.org/gnu/make/

- NEWS 

Version 4.2.91 (16 Sep 2019)

A complete list of bugs fixed in this version is available here:

http://sv.gnu.org/bugs/index.php?group=make_id=111_release_id=108=custom

* WARNING: Backward-incompatibility!
  Number signs (#) appearing inside a macro reference or function invocation
  no longer introduce comments and should not be escaped with backslashes:
  thus a call such as:
foo := $(shell echo '#')
  is legal.  Previously the number sign needed to be escaped, for example:
foo := $(shell echo '\#')
  Now this latter will resolve to "\#".  If you want to write makefiles
  portable to both versions, assign the number sign to a variable:
H := \#
foo := $(shell echo '$H')
  This was claimed to be fixed in 3.81, but wasn't, for some reason.
  To detect this change search for 'nocomment' in the .FEATURES variable.

* WARNING: Backward-incompatibility!
  Previously appending using '+=' to an empty variable would result in a value
  starting with a space.  Now the initial space is only added if the variable
  already contains some value.  Similarly, appending an empty string does not
  add a trailing space.

* WARNING: Backward-incompatibility!
  On Linux, and any other systems that provide a /proc/loadavg with similar
  syntax, the -l/--load-average option will consult that file to determine how
  many CPUs are busy at that moment and compare that value to the load value
  requested.  This allows usage such as "-j -lN" for N-processor systems
  without fear of overload during initial startup.
  Patch provided by Sven C. Dack 

* WARNING: Backward-incompatibility!
  Contrary to the documentation, suffix rules with prerequisites were being
  treated BOTH as simple targets AND as pattern rules.  Behavior now matches
  the documentation, and pattern rules are no longer created in this case.

* New feature: Grouped explicit targets
  Pattern rules have always had the ability to generate multiple targets with
  a single invocation of the recipe.  It's now possible to declare that an
  explicit rule generates multiple targets with a single invocation.  To use
  this, replace the ":" token with "&:" in the rule.  To detect this feature
  search for 'grouped-target' in the .FEATURES special variable.
  Implementation contributed by Kaz Kylheku 

* Makefiles can now specify the '-j' option in their MAKEFLAGS variable and
  this will cause make to enable that parallelism mode.

* GNU make will now use posix_spawn() on systems where it is available.
  If you prefer to use fork/exec even on systems where posix_spawn() is
  present, you can use the --disable-posix-spawn option to configure.  Aron
  Barath  provided the basic implementation.

* Error messages printed when invoking non-existent commands have been cleaned
  up and made consistent.

* The previous limit of 63 jobs under -jN on MS-Windows is now
  increased to 4095.  That limit includes the subprocess started by
  the $(shell) function.

* A new option --no-silent has been added, that cancels the effect of the
  -s/--silent/--quiet flag.

* A new option -E has been added as a short alias for --eval.

* All wildcard expansion within GNU make, including $(wildcard ...), will sort
  the results.  See https://savannah.gnu.org/bugs/index.php?52076

* Interoperate with newer GNU libc and musl C runtime libraries.

* Performance improvements provided by Paolo Bonzini 

GNU make Developer News

* Import the GNU standard bootstrap script to replace the hand-rolled
  "make update" method for building code from a GNU make Git repository.

* Rework the source distribution to move source files into the src/*
  subdirectory.  This aligns with modern best practices in GNU.

* Replace local portability code with Gnulib content.  Unfortunately due to a
  problem with Gnulib support for getloadavg, this forces a requirement on
  Automake 1.16 or above in order to build from Git.  See README.git.


signature.asc
Description: This is a digitally signed message part
___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


[bug #56895] Cannot build make due to compiler warnings/failures

2019-09-16 Thread Paul D. Smith
Update of bug #56895 (project make):

  Status:None => Fixed  
 Assigned to:None => psmith 
 Open/Closed:Open => Closed 
   Fixed Release:None => SCM
   Triage Status:None => Small Effort   

___

Follow-up Comment #3:

I pushed changes to git that should fix some compile issues and also some docs
to README.git with more advice for compiling from git.

To build a "final" GNU make from Git on a system which doesn't have a full GNU
environment, you can use:


  make MAKE_MAINTAINER_MODE= MAKE_CFLAGS=


___

Reply to this item at:

  

___
  Message sent via Savannah
  https://savannah.gnu.org/


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: [bug #56892] toxic combination of -include and match-anything rules

2019-09-16 Thread Edward Welbourne
David Boyce (14 September 2019 22:28) wrote, on 
:
> I'm not saying this is a bug necessarily but want to submit it for
> some sort of resolution. I an into an infinite loop situation
> recently. On my advice, in a very old and complex recursive makefile
> suite (not of my design or under my ownership) a co-worker added a
> construct like the following:
>
> -include foobar.mk
> foobar ?= XYZ
>
> The idea is that foobar.mk would be a one-line include file which
> assigns the "foobar" variable if it exists and if not we fall back to
> the default value "XYZ". This is simple and solved his problem in unit
> testing but when plugged into the large old suite it resulted in an
> infinite loop.
>
> The reason is twofold: (a) if an included makefile doesn't exist make
> will try to run a recipe to create it and (b) somewhere deep in this
> makefile suite was a match-anything rule. From here it's obvious: make
> went looking for a recipe that claimed to be able to make foobar.mk,
> landed on the match-anything rule which does a recursive make
> invocation (and does not create foobar.mk), and we're off to the races
> with an infinite make loop.

You can probably work round this by adding a wilfully failing rule,

foobar.mk:
@echo "$@ can be hand-created to set foobar" >&2
false

IIUC, since this rule is more specific than the match-anything, make
shall use it instead, fail, and happily get on with not caring that the
-include didn't happen.  The echo is, of course, optional.

Eddy.

___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: patch locale settings

2019-09-16 Thread Andreas Schwab
On Sep 14 2019, Paul Smith  wrote:

> On Sat, 2019-09-14 at 16:19 -0400, Dmitry Goncharov wrote:
>> $ LC_MESSAGES=ru_RU ./run_make_tests -make_path ../l32/make
>
> I'm surprised that even works; on my system if I use a shorthand like
> "de_DE" instead of the full "de_DE.UTF-8", then it isn't recognized and
> I get the default.

ru_RU (or de_DE) is just another locale that you can install (in glibc,
it uses ISO-8859-5 as the codeset, or ISO-8859-1 for the de_DE locale).

Andreas.

-- 
Andreas Schwab, SUSE Labs, sch...@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."

___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make