[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Makefile remaking loop
From: |
Frank Küster |
Subject: |
Makefile remaking loop |
Date: |
Mon, 07 Mar 2005 18:27:31 +0100 |
User-agent: |
Gnus/5.1007 (Gnus v5.10.7) Emacs/21.3 (gnu/linux) |
Hi,
I have written a Makefile for a Debian package which works just fine on
my local machine. However, on one of the autobuilders (in this case
it's for Debian experimental) it goes in a seemingly endless loop.
The Makefile is called as
debian/rules <sometarget>
and since there is a file debian/rules.in and a rule how to make files
from .in files, it is remade. On my system, this happens only once, but
on the problematic one (I don't have access there) it goes into a
remaking loop. These are the relevant parts of the makefile:
,----
| #!/usr/bin/make -f
| [...]
| eperl_sourcefiles=debian/variables debian/COPYRIGHT.scripts \
| debian/common.variables debian/common.functions
| timepattern=.*[[:alpha:]]*[[:space:]]*[[:digit:]] \([[:digit:].]*\) \.\./.*
| real_common_variables=../../tetex-common/common.variables
| real_common_functions=../../tetex-common/common.functions.in
| [...]
| % :: %.in commonstuff_update $(eperl_sourcefiles)
| eperl -P -o $@ $<
|
| # common.variables and common.functions are shared between the tetex-base and
| # tetex-bin source packages. If you want to use this mechanism, check out the
| # tetex-common tree and put it two directories above the package directory.
| # I use ~/src/Packages/tetex-common together with
~/src/Packages/tetex-base/tetex-base-$version/.
| commonstuff_update: common.variables_update common.functions_update
debian/common.variables debian/common.functions
| common.variables_update:
| test -e $(real_common_variables) && \
| test $(real_common_variables) -nt debian/common.variables && \
| touch -t `ls -l --time-style=+%Y%m%d%H%M.%S
../../tetex-common/common.variables | \
| sed -e 'address@hidden(timepattern)@\1@'`
debian/common.variables_newer || true
|
| debian/common.variables: debian/common.variables_newer
| -cp ../../tetex-common/common.variables debian/ 2>/dev/null
|
| common.functions_update:
| test -e $(real_common_functions) && \
| test $(real_common_functions) -nt debian/common.functions.in && \
| touch -t `ls -l --time-style=+%Y%m%d%H%M.%S
../../tetex-common/common.functions.in | \
| sed -e 'address@hidden(timepattern)@\1@'`
debian/common.functions_newer || true
|
| debian/common.functions: debian/common.functions_newer
| -cp ../../tetex-common/common.functions.in debian/ 2>/dev/null
| eperl -P -o $@ debian/common.functions.in
`----
And this is what happens on my system, irrespective of whether this
tetex-common directory and its contents do exist:
$ debian/rules configure
test -e ../../tetex-common/common.variables && \
test ../../tetex-common/common.variables -nt debian/common.variables && \
touch -t `ls -l --time-style=+%Y%m%d%H%M.%S
../../tetex-common/common.variables | \
sed -e 'address@hidden:alpha:]]*[[:space:]]*[[:digit:]] \([[:digit:].]*\)
\.\./address@hidden@'` debian/common.variables_newer || true
test -e ../../tetex-common/common.functions.in && \
test ../../tetex-common/common.functions.in -nt debian/common.functions.in &&
\
touch -t `ls -l --time-style=+%Y%m%d%H%M.%S
../../tetex-common/common.functions.in | \
sed -e 'address@hidden:alpha:]]*[[:space:]]*[[:digit:]] \([[:digit:].]*\)
\.\./address@hidden@'` debian/common.functions_newer || true
eperl -P -o debian/rules debian/rules.in
test -e ../../tetex-common/common.variables && \
test ../../tetex-common/common.variables -nt debian/common.variables && \
touch -t `ls -l --time-style=+%Y%m%d%H%M.%S
../../tetex-common/common.variables | \
sed -e 'address@hidden:alpha:]]*[[:space:]]*[[:digit:]] \([[:digit:].]*\)
\.\./address@hidden@'` debian/common.variables_newer || true
test -e ../../tetex-common/common.functions.in && \
test ../../tetex-common/common.functions.in -nt debian/common.functions.in &&
\
touch -t `ls -l --time-style=+%Y%m%d%H%M.%S
../../tetex-common/common.functions.in | \
sed -e 'address@hidden:alpha:]]*[[:space:]]*[[:digit:]] \([[:digit:].]*\)
\.\./address@hidden@'` debian/common.functions_newer || true
eperl -P -o debian/rules debian/rules.in
patch -p0 -N -g0 -i debian/patches/patch-deb
Which means that it first processes the commonstuff_update target, which
is needed for remaking the Makefile, then remakes it (eperl
... rules.in). I never bothered about this, but even here it remakes it
twice, then it processes the patch-stamp target on which configure
depends. On the other system, where the tetex-common stuff does not
exist, it goes into an endless loop; the output can be seen at
http://experimental.ftbfs.de/fetch.php?&pkg=tetex-bin&ver=2.99.12.20050203-beta-1&arch=arm&stamp=1110038196&file=log&as=raw
Any idea what I am doing wrong?
TIA, Frank
--
Frank Küster
Inst. f. Biochemie der Univ. Zürich
Debian Developer
- Makefile remaking loop,
Frank Küster <=