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
signature.asc
Description: PGP signature
--- End Message ---