Your message dated Fri, 15 Sep 2006 23:57:19 -0500
with message-id <[EMAIL PROTECTED]>
and subject line Bug#387684: make incompatibly breaks my makefile and provides
no way to fix
has caused the attached Bug report to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere. Please contact me immediately.)
Debian bug tracking system administrator
(administrator, Debian Bugs database)
--- Begin Message ---
Package: make
Version: 3.81
If I do:
define variable
line1
line2
line3
...
endef
target:
$(shell $(variable))
then make 3.80 does this
sh -c line1 line2 line3 ...
which while not exactly ideal is at least useable.
make 3.81 does this
sh -c "line1line2line3 ..."
which is just insane.
This incompatible change isn't even mandated by POSIX because in POSIX
there are no multi-line variables. Furthermore, it breaks my
makefile and leaves me with no workaround as far as I can tell.
The makefile I have and which works with 3.80 works around the lack of
a proper macro language in make like this (fragment of a file called
manypics.make):
define makesubmakefile
set -e; d=.submakefile.new; rm -f $$d; for f in "$$@";do echo "$$f" >>$$d;
done
--
$(foreach prog, $(PROGRAMS), $(call define_prog,$(prog)))
$(foreach da, idlocs% config %+morse %+pindata blank%,
$(call define_directasm,$(da)))
endef
.submakefile: manypics.make Makefile
: $(shell $(makesubmakefile)) ... generate .submakefile
@mv -f [EMAIL PROTECTED] $@
ifneq ($(MAKECMDGOALS),clean)
include .submakefile
endif
I am really very angry about these recent behavioural changes in make.
The documentation for GNU make has never been sufficient to predict
accurately the quoting behaviour; therefore a generation of
programmers have used experimentation to decide how they need to write
their makefiles. It is quite unreasonable now to decide that the
behaviour, which everyone may not have liked at the time but is now
relying on, is undesirable.
Ian.
--- End Message ---
--- Begin Message ---
Hi,
There is a way to fix it; just forget the $(shell ...)
wrapper.
In any case, this is not likely to be a change that is going
to be reverted -- if you are not happy with this canning of the
commands to be executed directly, I am not sure we have a recourse.
manoj
,----[ Makefile ]
|
| define variable
| ps
| ls -asCF
| echo haha
| endef
|
| define vartwo
| ps
| ls -sCF
| echo haha
| endef
|
| target:
| echo One
| $(variable)
| echo Two
| $(vartwo)
`----
,----[ Results ]
| __> make target
| echo One
| One
| ps
| PID TTY TIME CMD
| 13952 pts/2 00:02:32 zsh
| 14752 pts/2 00:00:00 connect-emacs
| 14754 pts/2 00:00:00 emacsclient
| 17672 pts/2 00:00:00 connect-emacs
| 18006 pts/2 00:00:00 emacsclient
| 18903 pts/2 00:00:00 make
| 18905 pts/2 00:00:00 ps
| ls -asCF
| total 24
| 4 ./ 16 ../ 4 Makefile
| echo haha
| haha
| echo Two
| Two
| ps
| PID TTY TIME CMD
| 13952 pts/2 00:02:32 zsh
| 14752 pts/2 00:00:00 connect-emacs
| 14754 pts/2 00:00:00 emacsclient
| 17672 pts/2 00:00:00 connect-emacs
| 18006 pts/2 00:00:00 emacsclient
| 18903 pts/2 00:00:00 make
| 18909 pts/2 00:00:00 ps
| ls -sCF
| total 4
| 4 Makefile
| echo haha
| haha
`----
Makefile
Description: Make file
--
My only love sprung from my only hate! Too early seen unknown, and
known too late! -- William Shakespeare, "Romeo and Juliet"
Manoj Srivastava <[EMAIL PROTECTED]> <http://www.datasync.com/%7Esrivasta/>
1024D/BF24424C print 4966 F272 D093 B493 410B 924B 21BA DABB BF24 424C
--- End Message ---