[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] OSSTEST: introduce a raisin build test

On Tue, 5 May 2015, Ian Jackson wrote:
> Ian Campbell writes ("Re: [PATCH] OSSTEST: introduce a raisin build test"):
> > On Fri, 2015-04-24 at 16:46 +0100, Stefano Stabellini wrote:
> > > Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
> > 
> > This looks like a good start, a few comments below.
> ...
> > You should also call store_revision() for each git repo which was built
> > so that it is recorded in the flight metadata. You should do this for
> > _every_ git repo, not just ones which are explicitly set to a specific
> > revision (osstest cares for bisection purposes what was built even if it
> > cannot control that input tree).
> For bisection, osstest needs to be able to specify the revision of
> every repo.  That is, the ts-* script needs to honour appropriate
> revision_* variables for all of them, as well as producing
> built_revision_*.
> It doesn't matter if cr-daily-branch and make-flight don't know how to
> set those version runvars.  Bisection flights are constructed by using
> existing flights as a template, and the revision runvars are
> manipulated appropriately by the bisector.
> But it is necessary that:
>   * Every tree used[1] has the actual git revision used recorded
>     by ts-raisin-build, in built_revision_* runvars.
>   * Every tree used has a suitable url[2] specified in tree_*
>     or recorded there by by ts-raisin-build.[3]
>   * Any setting of revision_* is honoured by ts-raisin-build.
> [1] Here a tree is `used' if the build success, or build products,
> depends on it, even if the tree is cloned internally by raisin.
> As a special exception, if the exact revision of some tree X is
> specified by the contents of some other tree Y, it is acceptable
> (although undesirable[1a]) for there to be no revision_X, tree_X, and
> built_revision_X but only for _Y. [1b]
> [1a] If the revision of X referred to in Y is updated in a
> non-fast-forwarding way and where the common ancestor of X and X'
> (referred to in a versions Y and Y') is likely to be unsuitable or
> unuseable, then X should _not_ be mentioned or handled in osstest at
> all.
> [1b] If X and Y are coupled in the sense that semantic changes to X
> are combined with an update to reference a new version of Y, in a
> single commit, it may be desirable to update osstest's
> adhoc-revtuple-generator to be able to fish the version of X out of a
> Y tree.  (Currently it can only do this for the qemu-trad specified in
> a xen.git tree.)
> [2] The tree_X runvar must provide a URL which if cloned contains not
> just the object referred to by revision_X (if specified) but also the
> all previous versions (that is, the git objects referred to by
> revision_X values in previous flights).  In practice this is satisfied
> X is fast forwarding.
> [3] It is not essential for tree_X to be set by make-flight and
> honoured by ts-raisin-build; but if not it must be set by
> ts-raisin-build because the bisector needs to know where to find the
> tree so that it can examine its revision graph.

I agree that revisions should be passed to ts-raisin-build by osstest,
as Ian suggested. AFAICT that should be enough to meet all your

> I'm not a huge fan of the way that your current patch hardcodes the
> list of subtrees in ts-raisin-build.  I don't see any logical reason
> why ts-raisin-build would need to know this, if raisin could be
> persuaded to print it.

I am not sure I understand what you mean here. Yes, revisions are
hardcoded and that is a mistake, but trees are not.  This is a snippet
from ts-raisin-build:

    echo >>config XEN_URL=\\"$r{tree_xen}\\"
    echo >>config QEMU_URL=\\"$r{tree_qemuu}\\"
    echo >>config QEMU_TRADITIONAL_URL=\\"$r{tree_qemu}\\"
    echo >>config SEABIOS_URL=\\"$r{tree_seabios}\\"
    echo >>config LIBVIRT_URL=\\"$r{tree_libvirt}\\"
    echo >>config OVMF_URL=\\"$r{tree_ovmf}\\"

None of the trees are hardcoded, they are all passed to ts-raisin-build
by osstest using tree_* variables, as you suggested above.
What am I missing?

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.