Skip site navigation (1)Skip section navigation (2)
Date:      20 Apr 2000 01:51:25 -0700
From:      asami@freebsd.org (Satoshi - Ports Wraith - Asami)
To:        Roger Hardiman <roger@cs.strath.ac.uk>
Cc:        ports@freebsd.org
Subject:   Re: ports dependencies problem on bento with bison ports
Message-ID:  <vqcya6940ky.fsf@silvia.hip.berkeley.edu>
In-Reply-To: Roger Hardiman's message of "Sun, 16 Apr 2000 18:54:34 %2B0100"
References:  <38F9FE5A.C6BCFE84@cs.strath.ac.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
 * From: Roger Hardiman <roger@cs.strath.ac.uk>

 * i've found a ports dependencies problem which causes
 * bento to fail to build one of my ports.

 * So, opengatekeeper causes openh323 to build.
 * But it does not install bison, even though
 * openh323 says it needs it in the openh323 makefile.

Yes, this is a known problem that have been plaguing us for quite some
time now.  Unfortunately, nobody has been able to come up with a
solution.

Let me explain the problem first.  bento (actually the package
building cluster) reads the index and uses it to install prerequisite
ports from packages.  Two fields in index, build-time dependencies and
run-time dependencies, are statically calculated and mean, "immediate
build-deps and their run-deps" and "immedeate run-deps and their
run-deps", respectively.  Immediate build-deps are
{FETCH,BUILD,LIB}_DEPENDS plus DEPENDS and immediate run-deps are
{LIB,RUN}_DEPENDS plus DEPENDS.  bento installs them both (although a
lot of them don't actually need run-deps to package, but that's
another story) before attempting to build the package for a certain
port.

This works reasonably well *except* the case like Roger described
here, when one of the build-deps actually require the dependency to be
built, not just run.  (I.e., when you have ":build" or something
tacked to the end of *_DEPENDS lines.)

Then we need build-deps of the build-deps too, but we don't have that
field in index.  You may have noticed the lines in the opengatekeeper
failure logs:

=======
 :
===>   openh323-1.1.a1 depends on executable: bison - not found
===>    Verifying /usr/bin/true for bison in /usr/ports/devel/bison
`/usr/bin/true' is up to date.
 :
=======

The weird "true is up to date" message is because I define
DEPENDS_TARGET to /usr/bin/true in the package building scripts to
catch incompatible dependencies.  For instance, if port A has the line
"BUILD_DEPENDS=foo:.../fooport" and fooport doesn't actually install
any "foo", then I can find it in the logs with this distinct message.

Anyway, that was the description of the problem.  Clearly the only
real solution is to rectify the index generation code in bsd.port.mk
and Tools/make_index to read the extra field in *_DEPENDS and include
build-deps of build-deps when it says anything other than "install",
but nobody has been able to untangle the code sufficiently to get that
to work.

Of course, I can implement some workarounds (like using another
variable to turn off DEPENDS_TARGET selectively so bison will be built
from source while building opengatekeeper) but those have their own
problems and I'd rather make the index fields correct.

Satoshi


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ports" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?vqcya6940ky.fsf>