[Bug 810223] Circular build dependency in perl-HTTP-Message-6.03-1.fc18

bugzilla at redhat.com bugzilla at redhat.com
Fri Apr 6 09:17:37 UTC 2012


Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug.


https://bugzilla.redhat.com/show_bug.cgi?id=810223

--- Comment #4 from Paul Howarth <paul at city-fan.org> 2012-04-06 05:17:36 EDT ---
(In reply to comment #3)
> (In reply to comment #2)
> > However, a problem with having a Requires: removed based on %perl_bootstrap is
> > that the resulting package is actually different from a non-bootstrap build,
> 
> Yes. One need to rebuild the package again once bootstrap is complete.

Absolutely. All packages that use %perl_bootstrap should be rebuilt
post-bootstrap in case previously-skipped tests cause FTBFS problems.

> > which is why I prefer to just exclude build requirements and not runtime ones.
> 
> I understand, but in this case my solution reflects the relation between the
> two packages much better. HTML-Parser does not need HTTP-Headers, it can run
> without them. But the opposite is not true. Following upstream nature
> dependencies is better.

I agree in principle with this. I try to find a sensible place to break cycles.
My suggested fix only excludes HTML::Parser as a build requirement, not as a
runtime dependency in the built package (which would be picked up automatically
by rpm). It's no worse really than simply skipping the tests altogether, which
a few packages do when bootstrapping. The resulting binary packages are
identical with or without %perl_bootstrap.

On the other hand, your change in the perl-HTML-Parser package results in a
different binary package when built using %perl_bootstrap, i.e. it has no
dependency on perl(HTTP::Headers). So to be sure of not introducing FTBFS
errors as a result of this, it would be necessary to rebuild not only
perl-HTML-Parser post-bootstrap, but every package whose build pulls in
perl-HTML-Parser, in case the addition of perl-HTTP-Message in the buildroot
makes a difference.

> > It also makes it difficult to detect the broken cycle using a script without
> > actually rebuilding all packages with the bootstrap macro set, which is a much
> > bigger job than processing the metadata to find the runtime dependencies.
> 
> Of course. You need to rebuild the packages to get proper dependencies.

By only removing build requirements and not runtime dependencies during the
bootstrap process, I believe all bootstrap-built packages should already have
proper dependencies.

> Otherwise you just guess. Even it's not always possible to just drop
> build-requires and keep the run-requires. Otherwise you will end up with built
> binary package with unsatisfied run-dependencies, so you could not use it while
> building reverse dependencies.

I haven't come across a case where that necessarily applies yet, but I
understand how it could be possible.

> I'm reluctant to follow the easier but error-prone way you selected.
> 
> I can put your change into perl-HTTP-Message if it makes you happy because it
> just disables a test, but I don't think it's the best way.

Well I disagree about the best way as outlined above but I can adjust my script
to deal with it on a case-by-case basis.

-- 
Configure bugmail: https://bugzilla.redhat.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the perl-devel mailing list