Re: Circular port dependency

From: George Mitchell <george+freebsd_at_m5p.com>
Date: Sat, 19 Jan 2013 10:04:20 -0500
On 01/11/13 19:41, George Mitchell wrote:
> On 01/11/13 03:22, Gleb Kurtsou wrote:
>> On (10/01/2013 20:21), George Mitchell wrote:
>>> I grabbed the ports tree as of 308518, the RELEASE_9_1_0 tag.
>>> devel/libtool won't build, because it requires autom4te during the
>>> configure phase.  So I put "BUILD_DEPENDS= autom4te:devel/autoconf"
>>> in the Makefile.  But autoconf depends on gmake, which depends on
>>> gettext, which depends on libiconv, which depends on libtool.
>>> What to do?
>> [...]

It turns out that my problem was due to compiling on the Raspberry
Pi, a machine that is slow enough that this post-configure target in
the port's top-level Makefile:

post-configure:
         _at_${FIND} ${WRKSRC} -type f | ${XARGS} ${TOUCH} -f

could end up setting the last write time for config.status earlier than
the last write time for configure, thereby triggering this make rule in
the port's own Makefile:

$(top_builddir)/config.status: $(top_srcdir)/configure 
$(CONFIG_STATUS_DEPENDENCIES)
         $(SHELL) ./config.status --recheck

It's this "--recheck" that would cause the build to try to run autom4ke,
leading to the circular dependency.  So the correct fix is as attached,
guaranteeing that the config.status modification time will always be
later.

I'm not entirely sure why the post-configure rule is there in the first
place, and svnweb.freebsd.org refuses to show me anything in
ports/head/devel below liglogging.  I was trying to look at the log
for ports/devel/Makefile to see how the post-configure rule got there,
because simply removing it also appears to make the build succeed.  But
I assume it's there for some reason, and this fix seems to be less
antagonistic than removing the whole rule.                    -- George

Received on Sat Jan 19 2013 - 14:04:27 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:34 UTC