[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#309185: tetex-bin: FTBFS in experimental: Endless loop.



Kurt Roeckx <kurt@roeckx.be> wrote:

> Note that I'm doing this on a 2.6 kernel, which has sub-second
> timestamps on files, which might be why you're not seeing it.

Good to know (I'm working with a 2.4 kernel). Now, I have a possible
explanation:

Suppose we start debian/rules with the rules file in 3.0-3.

10 Make sees this rule:

   % :: %.in $(eperl_sourcefiles) 
        eperl -P -o $@ $<

   The rule applies to the Makefile being executed (debian/rules),
   therefore Make will see if it needs to be updated. In the
   $(eperl_sourcefiles) prerequesite, it sees the two .PHONY
   prerequesites, *automatically* runs the corresponding targets because
   they are .PHONY (this is a hypothesis I am making to explain the
   whole thing), and then, only then, checks whether debian/rules is
   older than any of the prerequesite files, in particular
   debian/common.variables and debian/common.functions that have just
   been updated by the .PHONY target.

   On your system, this is always the case because of the subsecond
   timestamps. Therefore, debian/rules is regenerated and make reruns
   itself with the new one. GOTO 10. :-)

On my and Frank's systems, the loop quickly breaks because it is easy to
do the following in less than 1 second:
  - Make regenerates debian/rules
  - Make reruns itself with the new rules file
  - Make runs the .PHONY targets and updates common.variables and
    common.functions

Now, Make checks the time stamps of the new debian/rules and the
newer-but-still-generated-in-the-same-second common.variables and
common.functions, sees that they are all equal and concludes that rules
doesn't need to be regenerated. Thus, the build can start normally.

> The patch seems to work, and it seems to have build fine now.

Good, thanks.

-- 
Florent



Reply to: