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

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



On Tue, 2015-05-12 at 19:04 +0100, Stefano Stabellini wrote:
> On Tue, 12 May 2015, Ian Jackson wrote:
> > Stefano Stabellini writes ("[PATCH v5] OSSTEST: introduce a raisin build 
> > test"):
> > > Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
> > ...
> > > +    echo >>config XEN_URL=\\"$r{tree_xen}\\"
> > > +    echo >>config XEN_REVISION=\\"$r{revision_xen}\\"
> > 
> > This is very repetitive.  In ts-xen-build, the names of the variables
> > are irregular, but here they are regular.  I think you should refactor
> > this accordingly.
> 
> I think that the cure here would be worse than the disease. In bash
> would be fragile and difficult to read, but you probably would do it in
> perl, right? In that case I don't know how it would look like; in fact I
> wouldn't know how to write it. However if you are keen on it, feel free
> to provide a snippet of code and I'll try to include it in the patch.

Something like:

foreach (qw(xen foo bar)) {
       (nonempty($r{tree_$_}) && nonempty($r{revision_$_}) ? <<END : '').
    echo >>config ".uc($_)."_URL=\\"$r{tree_$_}\\"
    echo >>config ".uc($_)."_REVISION=\\"$r{revision_$_}\\"
+END
}
I think.

> 
> 
> > I don't understand what the \\ are doing here.  Perhaps you should use
> > '' like in ts-xen-build ?
> 
> I need to retain the " in the output

If you use ' as your quote character then you do not need to escape uses
of ". However I think that would stop $r{tree_$_} being evaluated too,
so you would need to do like I did with uc above and use . to paste
strings together, which may not be an overall improvement.

> > > +sub divide () {
> > > +    # Only move hv to xeninstall, so that we can have
> > > +    # xenpolicy in tools tarball.
> > > +    #
> > > +    # The files inside boot/ after `make dist' are
> > > +    # xen-$XEN_VERSION: Xen binary
> > > +    # xen.gz/xen: symlink to xen-$XEN_VERSION
> > > +    # xen-$MAJOR: symlink to xen-$XEN_VERSION
> > > +    # xen-$MAJOR.$MINOR: symlink to xen-$XEN_VERSION
> > > +    # xen-sym-$XEN_VERSION: Xen symbol
> > > +    # xenpolicy-$XEN_VERSION: flask policy binary if xsm is enabled
> > > +    #
> > > +    # So the following snippet will leave xenpolicy* in
> > > +    # install/boot and get packaged to tools tarball.
> > > +    target_cmd_build($ho, 100, $builddir, <<END);
> > > +        cd raisin
> > > +        mkdir xendist
> > > +        for f in *dist; do
> > > +            mkdir -p \$f/lib
> > > +        done
> > > +        if test -d dist/boot; then
> > > +            if test -f dist/boot/xen.gz || test -f dist/boot/xen; then
> > > +                mkdir xendist/boot
> > > +                mvfiles=`find dist/boot -name 'xen[a-z]*' -prune -o 
> > > -name 'xen*' -print`
> > > +                mv \$mvfiles xendist/boot/.
> > 
> > This, and much of stash(), is a clone-and-hack of ts-xen-build.
> > 
> > > +our @probs;
> > > +
> > > +sub trapping ($) {
> > > +    my ($sub) = @_;
> > > +    my $tok= eval { $sub->(); 1; };
> > > +    if (!$tok) { push @probs, $@; print STDERR "failure (trapped): 
> > > $@\n"; }
> > > +}
> > 
> > Again, this is copied from ts-xen-build.
> 
> Yes, it is. If this is not a descriptive comment, what would you have me
> do? I could move trapping somewhere else common, but I don't think that
> generalizing divide and stash is a good idea.

Osstest/Testsupport.pm is a suitable home for any random shared code I
think, even if only shared between two ts-*. Or Osstest/Buildsupport.pm
might be a better choice in this case.

Thinking back to the issue about dividing the raisin build into per
components though, perhaps use_raisin should become a runvar which is
used in ts-*-build to either do the existing thing vs the new raisin
thing? Then stash+divide etc would only be used in the one place, just
consuming a potentially different dist dir output from the build phase.

Ian.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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