|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |