Incorrect per-target ?= variable affectations
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
make-dfsg (Ubuntu) |
Confirmed
|
Undecided
|
Unassigned |
Bug Description
Binary package hint: make
I am running 9.10 on x86_64 (updated yesterday), make 3.81-6.
The following Makefile:
-------
target1: OPTVAR?=/usr/local
target1:
echo "Value for $@ '$(OPTVAR)'."
target2:
echo "Value for $@ is '$(OPTVAR)'."
-------
Make seems to behave badly with such a Makefile:
shell> make OPTVAR=x target1 target2
echo "Value for target1 '�!M'."
Value for target1 '�!M'.
echo "Value for target2 is '�!M'."
Value for target2 is '�!M'.
Whereas it has the expected behavior when passing OPTVAR through the environment:
shell> env OPTVAR=x make target1 target2
echo "Value for target1 'x'."
Value for target1 'x'.
echo "Value for target2 is 'x'."
Value for target2 is 'x'.
It also behaves as expected when OPTVAR is left undefined:
shell> make target1 target2
echo "Value for target1 '/usr/local'."
Value for target1 '/usr/local'.
echo "Value for target2 is ''."
Value for target2 is ''.
I believe this is a regression from jaunty.
ProblemType: Bug
Architecture: amd64
Date: Sun Nov 15 14:57:25 2009
DistroRelease: Ubuntu 9.10
NonfreeKernelMo
Package: make 3.81-6
ProcEnviron:
SHELL=/bin/zsh
PATH=(custom, user)
LANG=en_US.UTF-8
ProcVersionSign
SourcePackage: make-dfsg
Uname: Linux 2.6.31-14-generic x86_64
affects: | make (Ubuntu) → make-dfsg (Ubuntu) |
Status changed to 'Confirmed' because the bug affects multiple users.