[Top][All Lists]
[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
- can't build with GNU make 3.76.1 :),
Alexandre Duret-Lutz <=