Your message dated Thu, 08 May 2014 17:25:36 -0700
with message-id <[email protected]>
and subject line Re: breaks debian-installer's Makefile
has caused the Debian Bug report #674816,
regarding breaks debian-installer's Makefile
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 this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
674816: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=674816
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: make
Version: 3.82-1
Severity: normal

This new upstream release of make, currently in experimental, breaks
d-i's Makefile:

joey@wren:~/src/d-i/installer/build>make         
Makefile:568: *** recipe commences before first target.  Stop.

Which is strange, because the first target in that Makefile is on line 173:

.PHONY: all_%

-- System Information:
Debian Release: wheezy/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'stable'), (1, 'experimental')
Architecture: i386 (x86_64)

Kernel: Linux 3.2.0-2-amd64 (SMP w/1 CPU core)
Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages make depends on:
ii  libc6  2.13-32

make recommends no packages.

Versions of packages make suggests:
pn  make-doc  <none>

-- no debconf information

-- 
see shy jo



--- End Message ---
--- Begin Message ---
Hi,

        GNU make does its work in two distinct phases. During the first
 phase it reads all the makefiles, included makefiles, etc. and
 internalizes all the variables and their values, implicit and explicit
 rules, and constructs a dependency graph of all the targets and their
 prerequisites.

        Please note the node Recipe Syntax in the info file.

--8<---------------cut here---------------start------------->8---
Each line in the recipe must start with a tab (or the first character
in the value of the '.RECIPEPREFIX' variable; *note Special
Variables::), except that the first recipe line may be attached to the
target-and-prerequisites line with a semicolon in between.  _Any_ line
in the makefile that begins with a tab and appears in a "rule context"
(that is, after a rule has been started until another rule or variable
definition) will be considered part of a recipe for that rule.
--8<---------------cut here---------------end--------------->8---

        Here is the make file
--8<---------------cut here---------------start------------->8---
  1 #!/usr/bin/make -f
  2 
  3 # The general tree target.
  4 $(STAMPS)tree-unpack-$(targetstring)-stamp:
  5         echo hi
  6 
  7 define drop_lang
  8         @echo "Dropping languages: $(1)"
  9 endef
 10 
 11 ifndef KEEP_GI_LANGS
 12         # It makes no sense to include languages only supported by the
 13         # graphical installer in regular images. This will also ensure
 14         # their glyphs don't get included a bit lower down.
 15         $(call drop_lang,$(GI_LANGS))
 16 endif
--8<---------------cut here---------------end--------------->8---

        So, the rule starts on line 3 here. A rule is always expanded
 the same way, regardless of the form: 
 immediate : immediate ; deferred
      deferred
 The deferred recipe continues until line 7, when a variable definition
 happens. We are no longer in a recipe. After the variable definition
 ends, we are no longer in a rule.

        Then we are in a variable definition, from lines 7 thorough 9.
 The definition of drop_lang is deferred.
 define immediate
       deferred
 endef


        Now we are reading the Makefile in phase one, and no longer in a
 recipe. The call function is expanded as it is read, and the
 first thing that happens is that the each argument is processed by
 substitution of variables and function calls to produce the argument
 value, which is the text on which the function acts.

        So, in the first phase, we are calling @echo (were we in a
 recipe, this would have been deferred). I think Make correctly call
 shenanigans here.

        manoj
-- 
A nuclear war can ruin your whole day.
Manoj Srivastava <[email protected]> 
4096R/C5779A1C E37E 5EC5 2A01 DA25 AD20  05B6 CF48 9438 C577 9A1C

Attachment: signature.asc
Description: PGP signature


--- End Message ---

Reply via email to