On 2/8/2013 10:03, Michael K. Johnson wrote:
On Fri, Feb 08, 2013 at 07:11:27AM -0500, Michael K. Johnson wrote:
This does not mean that all recipes are factories.  We can use CI
to check source from Git directly into conary source components
(push) instead of having conary fetch from Git (pull), which might
make packages easier to understand.
I'd like to note that this is what rPath wrote the "bob" tool for;
that's why you see a bunch of recipes inside conary packages.  It
is how rPath implemented CI: Jenkins jobs ran bob to go from a
Mercurial checkin to troves built into a repository.  Bob (the
builder...) was an implementation of the push model.

This is mildly tangential to the discussion but I'd like to take a second to explain why I think the "pull" model is heretical, since I complain about factory-hgsource a great deal but haven't really attempted to explain why. The core, underlying problem is that it violates the contract that a recipe must fulfill: that it must not use anything stored outside of the repository to complete the build once the source is committed, and consequently that building the same source twice must produce identical results. It also comes with many practical issues such as needing extra tools and scratch space just to evaluate the recipe, which rMake does multiple times in different contexts. A push model doesn't have any of these issues because once the source is committed, it's just another Conary source trove and can be evaluated without any extra code, disk or network resources, even if the source control goes offline. I wholeheartedly endorse a model where recipes are committed to, and automatically built from, Git. But the right way to make that happen is to push the recipe from an outside tool, not a factory.

Disclaimer: I wrote bob, it is my ugly baby. But I'm not necessarily endorsing bob specifically. It's best to design a system of metadata that makes sense first and write or adapt the tool later.

-- m. tharp

_______________________________________________
Foresight-devel mailing list
[email protected]
https://lists.foresightlinux.org/mailman/listinfo/foresight-devel

Reply via email to