|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 5/6] osstest: introduce a script to build a FreeBSD package repository
On Thu, May 23, 2019 at 11:38:57AM +0100, Ian Jackson wrote:
> Roger Pau Monne writes ("[Xen-devel] [PATCH 5/6] osstest: introduce a script
> to build a FreeBSD package repository"):
> > diff --git a/make-freebsd-flight b/make-freebsd-flight
> > index d3c413b5..fc3d2d83 100755
> > --- a/make-freebsd-flight
> > +++ b/make-freebsd-flight
> > @@ -38,13 +38,15 @@ job_create_build_filter_callback () {
> >
> > for arch in "$arches"; do
> > set_freebsd_runvars
> > -
> > create_freebsd_build_job build-$arch-freebsd
> >
> > - # Create an identical job that's going to use the build output from
> > - # the previous one.
> > + # Create a job to build the packages against the new world.
> > freebsd_runvars="$freebsd_runvars freebsdbuildjob=build-$arch-freebsd \
> > recipe_testinstall=true"
> > + create_freebsd_pkg_build_job build-$arch-freebsd-packages
> > +
> > + # Create an identical job that's going to use the build output from
> > + # the previous one.
> > create_freebsd_build_job build-$arch-freebsd-again
> >
> > # Create a Xen build job that's going to use the output from the first
>
> This looks OK.
>
> > @@ -768,7 +773,9 @@ proc prepare-build-host-freebsd {} {
> > global jobinfo
> > if {[recipe-flag testinstall]} { set broken fail } { set broken broken
> > }
> > run-ts $broken host-install(*) ts-freebsd-host-install
> > - run-ts . host-build-prep ts-build-prep-freebsd
> > + if {![recipe-flag skipbuildprep]} {
> > + run-ts . host-build-prep ts-build-prep-freebsd
>
> What's this for ? Oh, I see.
The job that creates the package repository cannot use build-prep
because the packages are not yet built.
> I notice that none of your freebsd build jobs pass any share- hostflag
> so they always use a fresh installation. Is that necessary ?
Hm, I don't think so. build-amd64-xen-freebsd and
build-amd64-freebsd-again could share a host. I need to take a look at
how to do this, I could send this as a separate fix for the existing
jobs.
> > proc need-hosts/coverity {} { return BUILD_LINUX }
> > diff --git a/ts-freebsd-build-packages b/ts-freebsd-build-packages
> > new file mode 100755
> > index 00000000..9202dd9f
> > --- /dev/null
> > +++ b/ts-freebsd-build-packages
> > @@ -0,0 +1,145 @@
> > +#!/usr/bin/perl -w
> > +# This is part of "osstest", an automated testing framework for Xen.
> > +# Copyright (C) 2019 Citrix Inc.
> ...
> > +# Consumes the following input runvars:
> > +# svnrevision_freebsdports: ports svn revision id to use.
> > +# svntree_freebsdports ports svn tree to fetch the source code from.
>
> More regular in osstest terms would be
> tree_freebsdports
> revision_freebsdports
> treevcs_freebsdports=svn
> But I guess svn is sufficiently unlike what osstest expects out of a
> vcs that this is not feasible, and it is better to do it this way.
I don't really have an opinion, I somehow assumed that using the same
format might interfere with things like bisection, so I've decided to
pass the git revision using tree_freebsdports &c and the svn revision
using the newly introduced flags.
> > +sub checkout () {
> > + my $u = URI->new($c{HttpProxy});
> > + my $host = $u->host;
> > + my $port = $u->port;
> > + prepbuilddirs();
> > +
> > + logm("Checkout ports tree from svn");
> > + target_cmd_build($ho, 4000, $builddir, <<END);
> > +cd $builddir
> > +rm -rf ports
> > +# svn ignores HTTP_PROXY envvar
> > +svnlite checkout --config-option servers:global:http-proxy-host=$host \\
> > + --config-option servers:global:http-proxy-port=$port \\
> > + --trust-server-cert \\
> > + $r{"svntree_freebsdports"} \\
> > + -r $r{"svnrevision_freebsdports"} ports
>
> Will this work to cache the checkout ?
I think so? Would https somehow prevent the caching?
> All of this says http but I
> assume it's really https ?
AFAIK svn uses the http-proxy options for both http and https.
> Typically, https clients expect to do the
> TLS themselves but I think you're using our squid mitm and that's what
> "--trust-server-cert" is doing ?
I can't really remember why I've added this option, but I'm quite
sure it was failing without it. As you say the proxy is acting as a
mitm, so that's likely why trust-server-cert is required.
> Rather than "--trust-server-cert" which disables TLS's own mitm
> protection it would be rather better to inject the osstest mitm squid
> cert into the testbed, but that may be difficult, and the risk is only
> from internal things between the build (test) box and the proxy.
I can look into this, but at the end of day this is all internal, so
I'm not sure there's a lot of risk here.
> > +sub create_jail() {
> > + my $src_prefix = $r{"freebsd_distpath"} ||
> > + get_stashed("path_freebsddist",
> > $r{"freebsdbuildjob"});
> > + my $dst_prefix = "/root/sets";
>
> Do we need a jail for this ? We have a whole baremetal OS install
> whose entire purpose is to do this build ...
Yes, that's how the repository package builder (poudriere) works, it
requires a jail to do the package building. In our case it's not so
important, but I assume this is mostly done to always use a clean
install, so that currently installed packages on the system don't
interfere with package building.
> > +logm("FreeBSD packages built successful");
> ^ly :-)
Thanks.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |