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 '[EMAIL PROTECTED](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 '[EMAIL PROTECTED](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 '[EMAIL PROTECTED]:alpha:]]*[[:space:]]*[[:digit:]]
\([[:digit:].]*\) \.\./[EMAIL PROTECTED]@'` 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 '[EMAIL PROTECTED]:alpha:]]*[[:space:]]*[[:digit:]]
\([[:digit:].]*\) \.\./[EMAIL PROTECTED]@'` 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 '[EMAIL PROTECTED]:alpha:]]*[[:space:]]*[[:digit:]]
\([[:digit:].]*\) \.\./[EMAIL PROTECTED]@'` 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 '[EMAIL PROTECTED]:alpha:]]*[[:space:]]*[[:digit:]]
\([[:digit:].]*\) \.\./[EMAIL PROTECTED]@'` 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
_______________________________________________
Help-make mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-make