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
`----

Attachment: 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 ---

Reply via email to