bug-coreutils
[Top][All Lists]
Advanced

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

can't build with GNU make 3.76.1 :)


From: Alexandre Duret-Lutz
Subject: can't build with GNU make 3.76.1 :)
Date: Wed, 05 Mar 2003 22:52:35 +0100
User-agent: Gnus/5.090016 (Oort Gnus v0.16) Emacs/21.2 (gnu/linux)

Hi Jim!

Here is an amusing issue.

Installing coreutils 4.5.9 with make-3.76.1 halts just after you type
`make', without any output.  Yes, I know 3.76.1 is 6 year old but
that's what is installed on a Solaris station I have to use these days
(and it's called `make', not even `gmake').  This `bug' doesn't occur
in the other packages I recompiled.

I've installed make-3.76.1 on my home Debian, and I can reproduce it.

When make is halted, ps shows this:

 3155 pts/4    S      0:01          \_ /usr/bin/zsh
18467 pts/4    S      0:00          |   \_ make-3.76.1
18471 pts/4    S      0:00          |       \_ cat


If I press ^D, make goes one step forward then halts again

~/projs/src/coreutils-4.5.9 % make-3.76.1
[^D pressed here]
make-3.76.1  all-recursive

Again, ps shows a cat waiting for food.

 3155 pts/4    S      0:01          \_ /usr/bin/zsh
18467 pts/4    S      0:00          |   \_ make-3.76.1
18602 pts/4    S      0:00          |       \_ make-3.76.1 all-recursive
18605 pts/4    S      0:00          |           \_ cat

Hitting ^D a second time is enough to let the build proceed... until
the end of the build where I have to hit ^D one last time.

~/projs/src/coreutils-4.5.9 % make-3.76.1
[^D pressed here]
make-3.76.1  all-recursive
[^D pressed here]
make-3.76.1[1]: Entering directory `/home/adl/projs/src/coreutils-4.5.9'
Making all in lib
make-3.76.1[2]: Entering directory `/home/adl/projs/src/coreutils-4.5.9/lib'
make-3.76.1  all-am
make-3.76.1[3]: Entering directory `/home/adl/projs/src/coreutils-4.5.9/lib'
[...]
make-3.76.1[3]: Leaving directory `/home/adl/projs/src/coreutils-4.5.9/tests'
make-3.76.1[2]: Leaving directory `/home/adl/projs/src/coreutils-4.5.9/tests'
[^D pressed here]
make-3.76.1[2]: Entering directory `/home/adl/projs/src/coreutils-4.5.9'
make-3.76.1[2]: Nothing to be done for `all-am'.
make-3.76.1[2]: Leaving directory `/home/adl/projs/src/coreutils-4.5.9'
make-3.76.1[1]: Leaving directory `/home/adl/projs/src/coreutils-4.5.9'
~/projs/src/coreutils-4.5.9 %

Funny.

The problem comes from the following two lines in Makefile.maint.

prev_version_file ?= .prev-version
PREV_VERSION := $(shell cat $(prev_version_file))

make-3.76.1 doesn't understand `?='.
According to NEWS, `?=' is supported "only" since 3.77.

Rewriting the first line as

ifeq ($(origin prev_version_file), undefined)
  prev_version_file = .prev-version
endif

seems to do the trick.  (Changing `:=' to `=' won't.)

I can see there are many other `?=' in Makefile.maint, but they seem
to be inoffensive.  No idea how make-3.76.1 interpret them, but at
least these other empty variables are not used during ordinary user
builds.

Another idea would be to change GNUmakefile to include
Makefile.maint conditionally based on $(MAKE_VERSION).  This way
you can be pretty sure maintainance rules won't trouble antique
GNU make versions.
-- 
Alexandre Duret-Lutz





reply via email to

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