]> xenbits.xensource.com Git - people/royger/osstest.git/log
people/royger/osstest.git
6 years agoosstest: add FreeBSD Xen build job freebsd_improvement.wip2
Roger Pau Monne [Fri, 29 Jun 2018 10:09:37 +0000 (12:09 +0200)]
osstest: add FreeBSD Xen build job

To both the FreeBSD and the xen-unstable flights.

This is the runvar difference of a xen-unstable flight:

+build-amd64-xen-freebsd     all_host_os      freebsd
+build-amd64-xen-xsm-freebsd all_host_os      freebsd
+build-amd64-xen-freebsd     all_hostflags    PropEq:Firmware:bios:bios
+build-amd64-xen-xsm-freebsd all_hostflags    PropEq:Firmware:bios:bios
+build-amd64-xen-freebsd     arch             amd64
+build-amd64-xen-xsm-freebsd arch             amd64
+build-amd64-xen-freebsd     enable_livepatch true
+build-amd64-xen-xsm-freebsd enable_livepatch true
+build-amd64-xen-freebsd     enable_ovmf      true
+build-amd64-xen-xsm-freebsd enable_ovmf      true
+build-amd64-xen-freebsd     enable_xend      false
+build-amd64-xen-xsm-freebsd enable_xend      false
+build-amd64-xen-freebsd     enable_xsm       false
+build-amd64-xen-xsm-freebsd enable_xsm       true
+build-amd64-xen-freebsd     freebsdbuildjob  125104.build-amd64-freebsd
+build-amd64-xen-xsm-freebsd freebsdbuildjob  125104.build-amd64-freebsd
+build-amd64-xen-freebsd     host_hostflags   arch-amd64,purpose-build
+build-amd64-xen-xsm-freebsd host_hostflags   arch-amd64,purpose-build
+build-amd64-xen-freebsd     revision_minios
+build-amd64-xen-xsm-freebsd revision_minios
+build-amd64-xen-freebsd     revision_ovmf
+build-amd64-xen-xsm-freebsd revision_ovmf
+build-amd64-xen-freebsd     revision_qemu
+build-amd64-xen-xsm-freebsd revision_qemu
+build-amd64-xen-freebsd     revision_qemuu
+build-amd64-xen-xsm-freebsd revision_qemuu
+build-amd64-xen-freebsd     revision_seabios
+build-amd64-xen-xsm-freebsd revision_seabios
+build-amd64-xen-freebsd     revision_xen
+build-amd64-xen-xsm-freebsd revision_xen
+build-amd64-xen-freebsd     tree_minios
+build-amd64-xen-xsm-freebsd tree_minios
+build-amd64-xen-freebsd     tree_ovmf
+build-amd64-xen-xsm-freebsd tree_ovmf
+build-amd64-xen-freebsd     tree_qemu        git://xenbits.xen.org/qemu-xen-traditional.git
+build-amd64-xen-xsm-freebsd tree_qemu        git://xenbits.xen.org/qemu-xen-traditional.git
+build-amd64-xen-freebsd     tree_qemuu       git://xenbits.xen.org/qemu-xen.git
+build-amd64-xen-xsm-freebsd tree_qemuu       git://xenbits.xen.org/qemu-xen.git
+build-amd64-xen-freebsd     tree_seabios
+build-amd64-xen-xsm-freebsd tree_seabios
+build-amd64-xen-freebsd     tree_xen         git://xenbits.xen.org/xen.git
+build-amd64-xen-xsm-freebsd tree_xen         git://xenbits.xen.org/xen.git

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Changes since v1:
 - Fix enabling of FreeBSD Xen buildjob based on branch.
 - Introduce a helper to add the FreeBSD Xen build jobs.
 - Introduce the ts-xen-build-freebsd wrapper around ts-xen-build for
   FreeBSD.
 - Introduce a create_xen_build_job helper.

6 years agoosstest: set the make command to use for xen-build
Roger Pau Monne [Fri, 29 Jun 2018 08:18:04 +0000 (10:18 +0200)]
osstest: set the make command to use for xen-build

The default make on FreeBSD is the BSD make, and Xen requires the GNU
make in order to build. Set the make command based on the OS for the
Xen build.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
Changes since v1:
 - Use gmake for all BSDs.

6 years agoosstest: limit FreeBSD jobs to hardware booting in BIOS mode
Roger Pau Monne [Wed, 4 Jul 2018 16:06:17 +0000 (18:06 +0200)]
osstest: limit FreeBSD jobs to hardware booting in BIOS mode

There's no support yet in osstest to install FreeBSD from UEFI, so for
the time being limit the FreeBSD jobs to boxes booting with legacy
BIOS.

The hostflags are not set for examine jobs, in order to avoid them
from only running on BIOS boxes.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
Note that this patch depends on Ian Jackson's resource allocation
series.
---
Changes since v1:
 - Fix nonbreaking space.
 - Fix long line.

6 years agoosstest: abstract code to create a FreeBSD build job
Roger Pau Monne [Wed, 4 Jul 2018 15:21:48 +0000 (17:21 +0200)]
osstest: abstract code to create a FreeBSD build job

Into a helper. A diff of the runvars of flights generated with and
without the patch show no differences.

No functional change.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
6 years agoosstest: remove duplicate set_freebsd_runvars
Roger Pau Monne [Fri, 29 Jun 2018 11:45:09 +0000 (13:45 +0200)]
osstest: remove duplicate set_freebsd_runvars

The set_freebsd_runvars helper in mfi-common is a superset of the
original function present in make-freebsd-flight, and will attempt to
fetch the last anointed FreeBSD build as a last resort option if no
FreeBSD build is signaled from the FreeBSD env vars. There's no reason
to have this duplication, since the set_freebsd_runvars in mfi-common
is perfectly suitable to be used by make-freebsd-flight.

This duplication was wrongly introduced by d36a7d892f by adding a
set_freebsd_runvars to mfi-common without removing the original
function in make-freebsd-flight.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
Changes since v1:
 - Add commit message.

6 years agoosstest: allow appending to existing runvars
Ian Jackson [Wed, 4 Jul 2018 15:21:15 +0000 (17:21 +0200)]
osstest: allow appending to existing runvars

So that the contents of the runvar can be expanded. There are
currently two ways to do this:

 - Using += will append to the end of the runvar.
 - Using ,= will append to the end of the runvar using ',' as the
   separator.

Note that if the runvar is empty {,|+}= just sets the runvar.

Signed-off-by: Ian Jackson <ian.jackson@citrix.com>
6 years agoosstest: move install of FreeBSD build deps to build-prep
Roger Pau Monne [Wed, 4 Jul 2018 11:30:32 +0000 (13:30 +0200)]
osstest: move install of FreeBSD build deps to build-prep

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
6 years agoosstest: allow to treat host install errors as failures
Roger Pau Monne [Wed, 4 Jul 2018 11:30:32 +0000 (13:30 +0200)]
osstest: allow to treat host install errors as failures

And use it for the build-amd64-freebsd-again job, which should test
the new FreeBSD build produced by build-amd64-freebsd and a host
install error should be treated as a failure in order to trigger the
bisection.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
6 years agoTO MERGE: fixup parameter of _get_val wip.props
Roger Pau Monne [Wed, 4 Jul 2018 13:52:10 +0000 (15:52 +0200)]
TO MERGE: fixup parameter of _get_val

6 years agoTO MERGE: fixup typo
Roger Pau Monne [Wed, 4 Jul 2018 11:46:43 +0000 (13:46 +0200)]
TO MERGE: fixup typo

6 years agoresource allocation: PropEq, PropMinVer: support defaults
Ian Jackson [Wed, 4 Jul 2018 10:53:11 +0000 (11:53 +0100)]
resource allocation: PropEq, PropMinVer: support defaults

Now you can pass another :-separated argument, the default value to
use if none is specified.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
CC: Roger Pau Monné <royger@FreeBSD.org>
6 years agoresource allocation: PropEq, PropMinVer: Honour HostProp_...
Ian Jackson [Wed, 4 Jul 2018 10:52:27 +0000 (11:52 +0100)]
resource allocation: PropEq, PropMinVer: Honour HostProp_...

We need to take these from the config too.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
CC: Roger Pau Monné <royger@FreeBSD.org>
6 years agoresource allocation: PropCompareBase: Break out _get_val
Ian Jackson [Wed, 4 Jul 2018 10:41:22 +0000 (11:41 +0100)]
resource allocation: PropCompareBase: Break out _get_val

This is going to make defaulting etc. a bit easier.

No functional change.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
CC: Roger Pau Monné <royger@FreeBSD.org>
6 years agoDebian preseed: Disable security archive for jessie arm64
Ian Jackson [Fri, 29 Jun 2018 11:15:35 +0000 (11:15 +0000)]
Debian preseed: Disable security archive for jessie arm64

jessie arm64 is out of security support, see
  https://wiki.debian.org/LTS
and the security archive at
  http://security.debian.org/dists/jessie/updates/main/binary-arm64
is gone.  This causes autoinstallation to fail.  We don't really care
much about the lack of security support, so override the set of `apt
services'.

I have tested that this can once again now install on arm64 on one of
the laxtons.  Because currently all arm64 tests are broken, and this
change affects only arm64, I will force push it right away.

CC: Julien Grall <julien.grall@linaro.org>
CC: Juergen Gross <jgross@suse.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
6 years agoproduction-config: Update TftpDiVersion
Ian Jackson [Tue, 26 Jun 2018 14:25:09 +0000 (15:25 +0100)]
production-config: Update TftpDiVersion

In both places.  I have run
  ./mg-debian-installer-update-all jessie

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agocr-for-branches: Branch for Xen 4.11
Ian Jackson [Mon, 25 Jun 2018 13:59:41 +0000 (14:59 +0100)]
cr-for-branches: Branch for Xen 4.11

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoosstest: use -DWITHOUT_AUTO_OBJ with FreeBSD release targets
Roger Pau Monne [Tue, 13 Feb 2018 12:40:30 +0000 (12:40 +0000)]
osstest: use -DWITHOUT_AUTO_OBJ with FreeBSD release targets

Due to a recent FreeBSD change the default output directory of the release
targets is changed to the object directory instead of the source
directory. Use WITHOUT_AUTO_OBJ to restore previous behavior. This is
harmless if used with previous versions, it will be ignored.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
6 years agoosstest: expand the list of tested disk controllers
Roger Pau Monne [Tue, 13 Feb 2018 12:40:30 +0000 (12:40 +0000)]
osstest: expand the list of tested disk controllers

The Mass osstest instance has a more diverse list of hardware disk
controllers, so expand the list in order to include all the possible
disk drivers.

For the record, this list can be found at:

usr.sbin/bsdconfig/share/device.subr

In the FreeBSD source tree.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
6 years agoosstest: remove the loader timeout from the install image
Roger Pau Monne [Tue, 13 Feb 2018 12:40:30 +0000 (12:40 +0000)]
osstest: remove the loader timeout from the install image

When the FreeBSD installer is booted on the godello{0/1} boxes it
receives spurious key strokes. This doesn't happen so far when booted
from disk, or with any other boxes.

In order to cope with this remove the loader timeout on the install
image. Note that failure to boot will still drop the loader into a
manual prompt.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
6 years agoosstest: hook FreeBSD flight into cr-daily-branch
Roger Pau Monne [Wed, 13 Jun 2018 07:40:17 +0000 (09:40 +0200)]
osstest: hook FreeBSD flight into cr-daily-branch

Add the missing pieces so that cr-daily-branch knows how to create a
FreeBSD flight. This has been tested by calling `./cr-daily-branch
freebsd-master`.

Note that there are two missing pieces. The first one is correctly
setting the FREEBSD_<arch>_BUILDJOB environment variable when calling
make-freebsd-flight, without it the installer media will always be
picked from the configuration file. This requires keeping track of
previous FreeBSD successful build jobs, marking them as permanent and
fetching them from the database in order to pass them on the env
variable.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
v8.1:  fix ap-fetch-version-old for the freebsd-* branch
       (The remote branch has been changed to tested/master or
       tested/stable/<version> instead of plain master or stable/11.)

Changes since v6:
 - Set the path to the FreeBSD git trees in this patch.
 - Push to tested/master or tested/stable/<version> instead of using
   the same branches as the origin tree.

Changes since v5:
 - Add support for testing multiple FreeBSD branches, default to
   branch master.

Changes since v3:
 - Fix the daily-cron-email-* settings for FreeBSD branch flights.

6 years agoosstest: introduce a script to create a FreeBSD flight
Roger Pau Monne [Wed, 13 Jun 2018 07:40:16 +0000 (09:40 +0200)]
osstest: introduce a script to create a FreeBSD flight

The logic to create a FreeBSD build job is added to
make-freebsd-flight. This includes creating a FreeBSD build job, and
also testing the output of that build job (by creating another build
job that depends on the output of the first).

Note that the FreeBSD build job needs some input in order to setup a
FreeBSD host, and that can be fetched from different places:

1. Env variable FREEBSD_<arch>_BUILDJOB: use the output from a
previous build-<arch>-freebsd job.

2. Env variables FREEBSD_DIST and FREEBSD_VERSION: set before calling
into make-flight, provide the path to the installer image and sets
folder and the version being installed.

3. Config file FreeBSDDist and FreeBSDVersion: same as 2. except that
they are set on the config file.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
Changes since v6:
 - Re-wrap lines.
 - Remove the freebsd hostflag.
 - Do not set the FreeBSD git trees in this patch.
 - Set all_host_os runvar to freebsd for the FreeBSD build jobs.

Changes since v5:
 - Append the "freebsd" hostflag, the specific version will be set
   dynamically by the ts-freebsd-set-hostflags script.
 - Use FREEBSD_<arch>_BUILDJOB to set the freebsdbuildjob runvar.
 - Loop around arches, although only amd64 is supported ATM. This
   should make it easier to add more arches later on.
 - Expand README comment to describe the expected layout of the
   FreeBSD install media.

Changes since v4:
 - Convert get_freebsdjob_runvars into set_freebsd_runvars, mimic the
   behavior of set_hostos_runvars.

Changes since v3:
 - Split the sg-run-job code into pre-patches.

Changes since v1:
 - Replace freebsd_buildjob with freebsdbuildjob.
 - Replace FREEBSD_SETS/IMAGE with a single FREEBSD_DIST that points
   to a folder that should contain both things.
 - Document the FreeBSDDist and FreeBSDVersion config file options in
   the README file.

6 years agoosstest: add support for FreeBSD buildjobs to sg-run-job
Roger Pau Monne [Wed, 13 Jun 2018 07:40:16 +0000 (09:40 +0200)]
osstest: add support for FreeBSD buildjobs to sg-run-job

Add support and introduce a FreeBSD build job to sg-run-job.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
Changes since v5:
 - Add a '+' to the arguments passed to ts-freebsd-set-hostflags, so
   they are hidden from testid.

Changes since v4:
 - Use a switch in allocate-build-host.

Changes since v3:
 - New in this version (split from existing patch).

6 years agoosstest: change the meaning of need_build_host
Roger Pau Monne [Wed, 13 Jun 2018 07:40:16 +0000 (09:40 +0200)]
osstest: change the meaning of need_build_host

Make need_build_host store a string instead of a boolean. This is
later going to be expanded to handle the FreeBSD build jobs.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
Changes since v5:
 - Use a regsub to set need_build_host.
 - NB: I would prefer to keep the tolower instead of changing the
   procs to -FREEBSD/-LINUX since I don't really like the SHOUTING.

Changes since v4:
 - Fix the usage of the catching-otherwise blocks.

Changes since v3:
 - New in this version (split from patch).

6 years agoosstest: add script to install build dependencies on FreeBSD
Roger Pau Monne [Wed, 13 Jun 2018 07:40:15 +0000 (09:40 +0200)]
osstest: add script to install build dependencies on FreeBSD

Since at the moment osstest only builds FreeBSD on FreeBSD, there are
no dependencies to install. Just mark the host as ready to share.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
6 years agoosstest: introduce a script to set the runtime hostflags runvar for FreeBSD jobs
Roger Pau Monne [Wed, 13 Jun 2018 07:40:15 +0000 (09:40 +0200)]
osstest: introduce a script to set the runtime hostflags runvar for FreeBSD jobs

Due to the nature of the FreeBSD install media, which is
self-generated from the ts-freebsd-build script, the hostflags runvar
set to FreeBSD jobs are related to the current version under test.

The following hostflags might need to be fetched from the runvars of a
previous build-$arch-freebsd job:

 - share-build-freebsd-$arch-$hash: the $hash used here is calculated
   from the checksum of the installer image used by this specific job.
   This allows osstest to share FreeBSD build hosts, and be sure the
   exact desired FreeBSD version is used.
 - PropMinVer:Freebsd:$version: $version contains the major FreeBSD
   version under test. This version is obtained from the FreeBSD
   source code used to create the install media.

Note that the share-build-* hostflag is optional, and will only be set
for build jobs.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
Changes since v5:
 - Fetch the host idents from the arguments, instead of assuming
   "host" always.
 - Set PropMinVer:Freebsd:<version> instead of freebsd-<version> to
   better cope with FreeBSD version bumps. This should only happen
   every ~2 years.

Changes since v4:
 - Make the share-build- flag optional.

Changes since v3:
 - Make use of the set_runtime_hostflag helper.
 - Make use of the sha256file helper.

Changes since v2:
 - New in this version.

6 years agoosstest: add support for runtime_IDENT_hostflags
Roger Pau Monne [Wed, 13 Jun 2018 07:40:15 +0000 (09:40 +0200)]
osstest: add support for runtime_IDENT_hostflags

This is required for FreeBSD, that will need to set some of the
hostflags at runtime. The current IDENT_hostflags will be keep as-is,
and they should only be set at job creation time.

Also introduce a helper to set the runtime hostflags.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
Changes since v4:
 - Allow runtime flags to be appended instead of overwritten.

Changes since v3:
 - New in this version.

6 years agoosstest: introduce a FreeBSD build script
Roger Pau Monne [Wed, 13 Jun 2018 07:40:15 +0000 (09:40 +0200)]
osstest: introduce a FreeBSD build script

In order to generate the FreeBSD installer image and the install
media.

The install sets are the vanilla ones generated by the 'ftp' release
target.  The installer image is handcrafted based on the filesystem
created by the 'bootonly' target, which is then populated with the ssh
host keys, and setup in order to use the serial console. The other
difference from upstream FreeBSD installer images is that the one
built by osstest uses a ramdisk instead of relying on the installer
media to be somehow attached, either on a CD or USB drive. This is
required in order to boot the image from pxelinux (where no CD or USB
is actually attached to the host, and everything is fetched from
tftp).

Due to the nature of the FreeBSD build, the outputs are different from
what osstest expects from a buildjob, more specifically
path_freebsddist points to a folder that contains the several outputs
form this buildjob.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
Changes since v4:
 - Remove some useless comments.
 - Use qw(git) instead of 'git'.
 - Replace unicode nonbreaking space.
 - Remove trail ','.
 - Improve the way to fetch the version number.

Changes since v3:
 - Introduce two helpers to perform the build process.
 - Install packages using target_install_packages.

Changes since v2:
 - Increase build target timeouts.
 - Use sysrc instead echo to set rc.conf options.

Changes since v1:
 - Remove the ts-build-check FreeBSD hack.
 - Use pkg-static instead of pkg.
 - Introduce buildcmd_stamped_logged_root and target_cmd_build_root.
 - Use target_cmd_build_root and buildcmd_stamped_logged_root in the
   ts-freebsd-build script.
 - Fix the script snippets to use <<END.<<'END' in order to avoid
   escaping the shell variables.
 - Set path_freebsddist runvar to point to the folder where the build
   files are stashed.
 - Add a comment at the top of the file describing what runvars are
   consumed/produced by the build script.

6 years agoosstest: add support for the FreeBSD package manager
Roger Pau Monne [Wed, 13 Jun 2018 07:40:14 +0000 (09:40 +0200)]
osstest: add support for the FreeBSD package manager

FreeBSD support is added to target_install_packages and
target_install_packages_norec, although there's no equivalent to the
--no-install-recommends in the FreeBSD package manager.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
v19: Rework on top of target_run_pkgmanager_install

Changes since v6:
 - Use $ho->{Os} in order to detect the target OS.

Changes since v5:
 - Add prototype for package_install_cmd.
 - Use $ho->{Ident} instead of hardcoding "host" in get_hostflags.

Changes since v4:
 - Unify more code between FreeBSD and Debian: introduce an
   OS-agnostic package_install_cmd to generate the install cmd.

Changes since v3:
 - New in this version.

6 years agoTestSupport: Introduce target_run_pkgmanager_install
Ian Jackson [Thu, 21 Jun 2018 15:44:10 +0000 (16:44 +0100)]
TestSupport: Introduce target_run_pkgmanager_install

This replaces target_run_apt.  It takes more abstract options.  It
also constructs a @cmd, allowing more flexibility, and supports -f.

The use in ts-xen-install, when handling extradebs, is a bit anomalous
because of the empty package list, but it is an anomaly inherited from
apt (and this is an apt-specific context).

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoosstest: introduce an OS $ho field
Roger Pau Monne [Wed, 13 Jun 2018 07:40:14 +0000 (09:40 +0200)]
osstest: introduce an OS $ho field

In order to differentiate between FreeBSD and Debian hosts.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
Changes since v7:
 - s/Os/OS/.

Changes since v6:
 - New in this version

6 years agoosstest: add prototypes to target_install_packages{_norec}
Roger Pau Monne [Wed, 13 Jun 2018 07:40:14 +0000 (09:40 +0200)]
osstest: add prototypes to target_install_packages{_norec}

No functional change.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
Changes since v5:
 - New in this version.

6 years agoosstest: introduce build helpers for FreeBSD
Roger Pau Monne [Wed, 13 Jun 2018 07:40:13 +0000 (09:40 +0200)]
osstest: introduce build helpers for FreeBSD

Some steps of the FreeBSD build process need to be done as root, so
introduce some helpers to perform those steps:
buildcmd_stamped_logged_root and target_cmd_build_root. They behave
exactly the same as the non-root counterparts.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
Changes since v3:
 - New in this version.

6 years agoosstest: introduce host_shared_mark_ready
Roger Pau Monne [Wed, 13 Jun 2018 07:40:13 +0000 (09:40 +0200)]
osstest: introduce host_shared_mark_ready

That allows marking a host as ready to be shared. Replace the current
callers that open-code it.

This commit also fixes a bug where Ident was used instead of 'host' as
resource.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
Changes since v4:
 - New in this version.

6 years agoosstest: add executive prefix to resource_shared_mark_ready
Roger Pau Monne [Wed, 13 Jun 2018 07:40:13 +0000 (09:40 +0200)]
osstest: add executive prefix to resource_shared_mark_ready

This is a non-functional change in preparation for introducing a
resource_shared_mark_ready in TestSupport.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
Changes since v4:
 - New in this version.

6 years agoosstest: move known_hosts generation to TestSupport
Roger Pau Monne [Wed, 13 Jun 2018 07:40:12 +0000 (09:40 +0200)]
osstest: move known_hosts generation to TestSupport

This is equivalent to the already existing authorized_keys function,
and generates the contents of the known_hosts file that should be
installed on targets.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
6 years agoosstest: make built_stash_file store a path_ runvar for each file
Roger Pau Monne [Wed, 13 Jun 2018 07:40:12 +0000 (09:40 +0200)]
osstest: make built_stash_file store a path_ runvar for each file

And introduce built_stash_debugfile in order the keep the previous
behavior of built_stash_file.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
6 years agocr-daily-branch, cr-publish-flight-logs: Tolerate failure to push harness
Ian Jackson [Wed, 13 Jun 2018 13:50:13 +0000 (14:50 +0100)]
cr-daily-branch, cr-publish-flight-logs: Tolerate failure to push harness

Provide cr-publish-flight-logs --push-harness-try, which attempts the
push but doesn't mind if it fails.

If we are not --real, tolerate failure to publish the flight logs.

Also, honour OSSTEST_PUSH_HARNESS which might contain '' or
--push-harness or --push-harness-try.

CC: Roger Pau Monné <roger.pau@citrix.com>
Tested-by: Roger Pau Monné <roger.pau@citrix.com>
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agosg-execute-flight: make nqueued be right
Ian Jackson [Tue, 12 Jun 2018 16:10:21 +0000 (17:10 +0100)]
sg-execute-flight: make nqueued be right

LIMIT 1 means it's either 0 or 1.  It would be nicer for the
transcript to show the real value.  For logic purposes, it's only ever
tested for zero, so no functional change except to messages.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agodm restrict audit: Document future plans
Ian Jackson [Tue, 12 Jun 2018 12:40:56 +0000 (13:40 +0100)]
dm restrict audit: Document future plans

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agodm restrict audit: Run ts-depriv-audit-qemu
Ian Jackson [Thu, 7 Jun 2018 16:02:40 +0000 (17:02 +0100)]
dm restrict audit: Run ts-depriv-audit-qemu

Add the new steps to jobs where the `recipe_dmrestrict' runvars is
set, and set that flag on the relevant job.

We introduce the new recipe-flag proc in sg-run-job to make this
more convenient.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agodm restrict audit: Provide auditing script
Ian Jackson [Tue, 12 Jun 2018 12:24:21 +0000 (13:24 +0100)]
dm restrict audit: Provide auditing script

ts-depriv-audit-qemu knows how to create a domain paused, and audit
its fds.  It uses
  * osstest-depriv-fd-collector, an on-test-host helper script
  * fishdescriptor, a new utility program in chiark-scripts
  * depriv-fd-checker, a new test program in xen.git

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agodm restrict audit: install newer chiark-scripts for fishdescriptor
Ian Jackson [Thu, 7 Jun 2018 15:57:32 +0000 (16:57 +0100)]
dm restrict audit: install newer chiark-scripts for fishdescriptor

fishdescriptor is not in stretch or earlier.  It will be in buster,
and we expect that a suitable version will be available in
stretch-backports soon.

For jessie, use DebianExtraPackages to install the .deb from buster
(which is directly installable on jessie).

Deployment note: I have already copied the .deb to the images
directories in Massachusetts and Cambridge.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agotoolstack: Provide guest_unpause
Ian Jackson [Tue, 29 May 2018 17:56:50 +0000 (18:56 +0100)]
toolstack: Provide guest_unpause

Only for xl (and xm) for now.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agotoolstack: Provide guest_create_paused
Ian Jackson [Tue, 29 May 2018 17:56:05 +0000 (18:56 +0100)]
toolstack: Provide guest_create_paused

Only for xl (and xm) for now.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agots-xen-install: Honour DebianExtraPackages_<suite>
Ian Jackson [Tue, 12 Jun 2018 11:27:03 +0000 (12:27 +0100)]
ts-xen-install: Honour DebianExtraPackages_<suite>

This allows us to specify some packages to install regardless of
firmware and architecture.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agomake-flight: Add a single test with restricted dm
Ian Jackson [Wed, 30 May 2018 16:11:46 +0000 (17:11 +0100)]
make-flight: Add a single test with restricted dm

As of this commit, this test is only functional: we don't do any
auditing yet.

Right now save/restore migration is broken with restricted dm, so
disable that test with the recipe flag.  See
  sg-run-job: Allow flight to specify recipe flag to disable migr tests

Run this only on recent enough Xen: the dm_restrict option was added
as an experimental feature in Xen 4.10 (currently as yet unreleased).
(With older libxl/xl, the option would be ignored and the test would
be a waste of time.)

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agomore_prepareguest_hvm: Honour guest runvar dmrestrict
Ian Jackson [Wed, 30 May 2018 16:06:30 +0000 (17:06 +0100)]
more_prepareguest_hvm: Honour guest runvar dmrestrict

Currently nothing sets this.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agots-xen-install: Create xen-qemuuser-range-base
Ian Jackson [Wed, 30 May 2018 16:03:06 +0000 (17:03 +0100)]
ts-xen-install: Create xen-qemuuser-range-base

It is fine to do in all jobs.  libxl will only use this if we ask it
to.

We do need to check whether the user exists already, since adduser
does not seem to have a mode which exits zero in that case.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agosg-run-job: Allow flight to specify recipe flag to disable migr tests
Ian Jackson [Mon, 11 Jun 2018 13:09:35 +0000 (14:09 +0100)]
sg-run-job: Allow flight to specify recipe flag to disable migr tests

We want this because there is no sensible way to probe whether a
restricted qemu can cope with save/restore or migration.  So we will
want to disable it in flight construction (depending on Xen version,
eventually).

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agosg-run-job: Provide new recipe-flag facility
Ian Jackson [Tue, 12 Jun 2018 12:17:19 +0000 (13:17 +0100)]
sg-run-job: Provide new recipe-flag facility

Individual recipes can now honour modifications requested by setting
runvars like recipe_<flag>.

No callers yet so no functional change.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoMerge remote-tracking branch 'iwj/master' into wip
Ian Jackson [Tue, 12 Jun 2018 17:52:21 +0000 (18:52 +0100)]
Merge remote-tracking branch 'iwj/master' into wip

6 years agocs-bisection-step: Do explicitly set runvar for suppressed recursion
Ian Jackson [Tue, 12 Jun 2018 15:56:29 +0000 (15:56 +0000)]
cs-bisection-step: Do explicitly set runvar for suppressed recursion

When we detect that we are considering a job which is identically
named to one earlier in the dependency chain, it could happen that the
final referencing runvar in the job at which we break the cycle is
actually to an unqualified job name.

(This cannot happen unless the cycle has more than 2 jobs, and
therefore more than one job name, because otherwise the job we would
be copying would have a self-reference.  So it cannot occur right
now.)

So when breaking the cycle, we should update the job we are building
to refer to the exact flight and job we want it to reuse.

The most convenient way to do this is to reorganise the new recursion
suppression code: we retain the suppressed entries in $subjobs, and
filter them as appropriate.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
6 years agocs-bisection-step: Handle build job chains
Ian Jackson [Tue, 12 Jun 2018 15:22:38 +0000 (15:22 +0000)]
cs-bisection-step: Handle build job chains

cs-bisection-step assumes that every job it will need to create has a
unique name.  Indeed, in general, it is probably not reasonable to
expect it to work if that is not the case.

build-amd64-freebsd needs a previous build-amd64-freebsd.

Currently cs-bisection-step confuses itself into writing a flight
where build-amd64-freebsd uses itself as its freebsdbuildjob.
This naturally does not work very well.

I think the right approach is for cs-bisection-step to spot when it
its recursion through the jobs, via *job runvars, would descend into a
job name which it was already encoutered earlier in the dependency
chain, and, when that occurs, to simply skip regenerating that deeper
copy of the job.

That is achieved here by filtering the subjob out of the list, before
we go looking for jobs to reuse.  As a result, not only will no new
job be created, but the original deeper job will be reused because the
runvar value will not be updated.

FTR, the circular dependency produces this error from sg-execute-flight:

  wait for process failed: no children
      while executing
  "wait -nohang"
      (procedure "main_iteration" line 14)
      invoked from within
  "main_iteration"
      (procedure "main" line 8)
      invoked from within
  "main"
      (file "./sg-execute-flight" line 238)

This is because sg-execute-flight's algorithm assumes that if there
are no jobs running there must be some job whose dependencies are done.
That is true if the job graph has no cycles.

Improving the error message from sg-execute-flight is left as an
exercise for the future.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
6 years agocs-bisection-step: Refactor $subjobs calculations a bit
Ian Jackson [Tue, 12 Jun 2018 15:20:09 +0000 (15:20 +0000)]
cs-bisection-step: Refactor $subjobs calculations a bit

Parse the runvar name earlier, adding job and orgflight members to the
row hashes we got from the db.  This slightly unifies the call to
preparejob, but more relevantly, makes the effective job and flight
information available earlier.  That will be useful in a moment.

No functional change.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
6 years agocs-bisection-step: Improve a message
Ian Jackson [Tue, 12 Jun 2018 15:18:27 +0000 (15:18 +0000)]
cs-bisection-step: Improve a message

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
6 years agodb_retry: Honour new OSSTEST_DB_ALWAYS_ABORT variable
Ian Jackson [Tue, 12 Jun 2018 15:18:00 +0000 (15:18 +0000)]
db_retry: Honour new OSSTEST_DB_ALWAYS_ABORT variable

This is useful for debugging.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
6 years agoseabios: Switch from git:// to https://
Ian Jackson [Tue, 12 Jun 2018 11:01:17 +0000 (12:01 +0100)]
seabios: Switch from git:// to https://

Currently git.seabios.org is down.  https is better anyway.

CC: Anthony PERARD <anthony.perard@citrix.com>
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoTestSupport: guest_var_boolean: Understand `y' and `1' as well
Ian Jackson [Mon, 11 Jun 2018 13:06:16 +0000 (14:06 +0100)]
TestSupport: guest_var_boolean: Understand `y' and `1' as well

Previously this would treat `y' and `1' as false, which is very
confusing.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoTestSupport: substeps: work if steps in ad-hoc tests take >1s
Ian Jackson [Wed, 30 May 2018 15:50:24 +0000 (16:50 +0100)]
TestSupport: substeps: work if steps in ad-hoc tests take >1s

When running by hand, OSSTEST_TESTID is not set.  We provide a value
with the time and the pid in it, so that rerunning the script by hand
works, even though in production this would result in multiple
identically-named substeps.

But we need to fix this value for the duration of the script.
Otherwise when it calls substep_finish, if the time has moved on, it
computes a different OSSTEST_TESTID and therefore a different substep
name, and then the substep machinery smells a rat and bombs out.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agosg-run-job: add some comments about guest state
Ian Jackson [Mon, 11 Jun 2018 13:11:16 +0000 (14:11 +0100)]
sg-run-job: add some comments about guest state

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agots-xen-install: DebianExtraPackages: call apt-get -f install
Ian Jackson [Tue, 12 Jun 2018 11:26:29 +0000 (12:26 +0100)]
ts-xen-install: DebianExtraPackages: call apt-get -f install

Currently this is just a precaution.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoconfig: ExtraDebs: replace with DebianExtraPackages
Ian Jackson [Tue, 12 Jun 2018 11:24:39 +0000 (12:24 +0100)]
config: ExtraDebs: replace with DebianExtraPackages

`ExtraDebs' is a silly name.  Also the semantics are rather
inflexible; we might want to install specific packages rather than
the contents of a whole directory.

And, document it.

This variable has only just been introduced, so hopefully it is OK to
replace and rename it now without causing too much disruption.

(osstest's own production runs each use their own copy of the config,
so they will be fine.  It's just downstreams, or users whose config is
set up to use one not in their own tree, who will be affected.)

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
------------------------------

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoResourceCondition: Provide PropEq
Ian Jackson [Mon, 11 Jun 2018 16:45:20 +0000 (17:45 +0100)]
ResourceCondition: Provide PropEq

This can be used, for example, with the following entry in a hostflags
runvar:
   PropEq:Firmware:uefi

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoResourceCondition: Break out PropCompareBase
Ian Jackson [Mon, 11 Jun 2018 16:45:08 +0000 (17:45 +0100)]
ResourceCondition: Break out PropCompareBase

Make a base class so we can easily invent other kinds of resource
property condition.  The child is responsible only for stringification
and the actual comparison.

These classes does not need Exporter, so drop all that.  Use `use
parent' to import the base class.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoTestSupport: Break out target_extract_distpart
Ian Jackson [Wed, 2 May 2018 14:54:45 +0000 (15:54 +0100)]
TestSupport: Break out target_extract_distpart

No functional change.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agosg-run-job: Allow suppression of consequences of per-host-ts fail
Ian Jackson [Wed, 2 May 2018 15:20:39 +0000 (16:20 +0100)]
sg-run-job: Allow suppression of consequences of per-host-ts fail

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agocs-adjust-flight: Allow adjusting play flights after start
Ian Jackson [Mon, 14 May 2018 15:29:28 +0000 (16:29 +0100)]
cs-adjust-flight: Allow adjusting play flights after start

Specifically, rather than simply bombing out, if the flight already
has steps, we call dbfl_check again with an empty list of OK
blessings.  dbfl_check will then bomb out, unless the flight's
blessing or intended blessing is `play'.  If it doesn't bomb out, we
print a message.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agots-xen-install: Drop obsolete --check and $checkmode
Ian Jackson [Wed, 2 May 2018 15:00:26 +0000 (16:00 +0100)]
ts-xen-install: Drop obsolete --check and $checkmode

Since 5edec3222ff14b8200d5b41ed9af3c8d04c27314
  ts-xen-build-check: reimplementation ...
in 2011 we have a fully general version, and the --check option
is no longer used.

And since 467d6239daa352483ec8fef003bd4fc723702b77
  pygrub: guest kernel install: move target_extract_jobdist_path into Osstest
also in 2011, --check has not worked properly, because that
commit moved the relevant code somewhere where $checkmode was
not available and simply dropped the check.

So remove the vestigial code in ts-xen-build.  As for @ARGV, we simply
die if we see something that looks like an option.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agosg-report-flight: When justifying, disregard out-of-flight build jobs
Ian Jackson [Thu, 7 Jun 2018 11:31:20 +0000 (11:31 +0000)]
sg-report-flight: When justifying, disregard out-of-flight build jobs

When we are looking for a previous job which justifies a failure, we
need to check that the putative justifying job used the same revision
as the baseline we are judging against.  So we investigate the build
jobs referred to by that putative justifying job.

However, there are cases where this is not appropriate.  Currently,
the most obvious example is freebsdbuildjob.

The freebsd arrangements involve referencing an anointed
freebsdbuildjob, which was in turn built from a previous
freebsdbuildjob, eventually terminating in some kind of ad-hoc job.
We would not want to investigate all of those even if we were trying
to analyse a flight on a freebsd branch.

The real thing we want to check that the build jobs *in the same
flight as the justifying job* used the right revisions.  Build jobs
from other flights were either (i) build jobs for components not being
targed for testing by this branch, but which were necessary for the
justifying job and for which we decided to reuse another build job
(in which case we don't really care what versions they used, even
if underlying it all there might be a different version of a tree
we are actually interested in (ii) the kind of continuous update
thing seen with freebsdbuildjob.

There is no corresponding issue with cs-bisection-step, because it
only looks for the *buildjob runvars of the test it is actually
interested in, and does not recurse.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
6 years agomfi-*: Set appropriate PropMinVer:XenMin: hostflags, to honour XenMin property
Ian Jackson [Wed, 6 Jun 2018 10:46:08 +0000 (11:46 +0100)]
mfi-*: Set appropriate PropMinVer:XenMin: hostflags, to honour XenMin property

* In test_matrix_iterate, where most_hostflags is set, include a
  PropMinVer:XenMin: hostflag.  This is derived from $xenbranch.
  When $xenbranch is xen-unstable, don't add that hostflag.

* But this is wrong for the migrate upgrade tests, which use both this
  and the previous version of Xen.  It is sufficient to check the
  previous version, so we strip out the existing PropMinVer if there
  is one.  We (ab)use select_prevxenbranch to calculate the old Xen
  branch name (version).

The motivation right now for this is that Xen 4.10 and earlier do not
boot xen.gz on UEFI.  In earlier versions, one has to chainload
xen.efi.  We don't support that in osstest right now on x86 (and it
probably isn't worth fixing that logic).

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agomfi-*: Provide hostflags_strip
Ian Jackson [Wed, 6 Jun 2018 10:45:05 +0000 (11:45 +0100)]
mfi-*: Provide hostflags_strip

This utility function saves us having to fragment the *_hostflags
variables any further when adding special cases.  A particular special
case can strip out things it doesn't like.

No callers yet.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agomfi-*: Reformat/refactor migrupgrade test generation slightly
Ian Jackson [Wed, 6 Jun 2018 10:43:11 +0000 (11:43 +0100)]
mfi-*: Reformat/refactor migrupgrade test generation slightly

* Introduce a variable "$hf" containing the hostflags.
* Properly indent the job_create_test call.

No functional change.  This will make the substantive change easier to
read.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agomg-repro-setup: Print flight number as soon as we have it
Ian Jackson [Tue, 29 May 2018 11:12:23 +0000 (12:12 +0100)]
mg-repro-setup: Print flight number as soon as we have it

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoOsstest/Debian: bootloader: Fix grub parsing for XSM and multiboot1
Ian Jackson [Tue, 29 May 2018 11:09:33 +0000 (11:09 +0000)]
Osstest/Debian: bootloader: Fix grub parsing for XSM and multiboot1

bca3edb4ac0d670098b7618cbaccf7577aca267a
  "Osstest/Debian: bootloader: Understand multiboot2 syntax"
was supposed to change `multiboot' and `module' in the grub2 menu
parser to `multiboot2?' and `module2?'.  But the entry for matching
XSM policy file lines was missing the ?, which broke all multiboot1
XSM tests.  Fix this.

Reported-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
6 years agoap-common: Switch to Linux 4.14 by default on X86.
Ian Jackson [Fri, 25 May 2018 14:41:54 +0000 (15:41 +0100)]
ap-common: Switch to Linux 4.14 by default on X86.

Linux 4.9 is getting a bit long in the tooth.  4.14 is an LTS branch
and the osstest-tested version seems reasonably good.  I ran a special
report[1] to see what to expect and it reported no regressions.

Accordingly I am going to switch to using Linux 4.14 by default for
most X86 runs in osstest.  ARM tests are not affected at this time;
they use their own linux-arm-xen branch which is updated by the Xen
ARM maintainers.

[1] ./sg-report-flight --that-linux=6ba89b52ba6916bc7a3d390d70951e992c0ca39e --this-linux=d88700f79448fc8f03617d4f1929c39676f8d1e4 --branches-also=linux-4.9,linux-4.14,linux-arm-xen 122974 |less

CC: Boris Ostrovsky <boris.ostrovsky@oracle.com>
CC: Juergen Gross <jgross@suse.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Wei Liu <wei.liu2@citrix.com>
CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Julien Grall <julien.grall@linaro.org>
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agofreebsd: Expect a freebsd-10 hostflag for freebsd tests
Ian Jackson [Fri, 18 May 2018 15:32:47 +0000 (16:32 +0100)]
freebsd: Expect a freebsd-10 hostflag for freebsd tests

This will allow us to exclude certain hosts.  For example, right now,
we have no support for booting FreeBSD on UEFI hosts.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
6 years agots-xen-install: Install additional .debs for UEFI
Ian Jackson [Thu, 17 May 2018 17:50:44 +0000 (18:50 +0100)]
ts-xen-install: Install additional .debs for UEFI

grub2 from stretch cannot boot Xen under UEFI.  But that from buster
can, and it can be simply installed, even on jessie.  So do that.

I have copied the binaries for 2.02+dfsg1-4 to
images/grub2-uefi-amd64-2018-04-01 in Massachusetts.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years ago20_linux_xen: Use multiboot2 when Xen supports it
Ian Jackson [Thu, 17 May 2018 17:33:15 +0000 (18:33 +0100)]
20_linux_xen: Use multiboot2 when Xen supports it

This is necessary for UEFI.  The patch is similar in spirit to the
upstream commit
  http://git.savannah.gnu.org/cgit/grub.git/commit/?id=b4d709b6ee789cdaf3fa7a80fd90c721a16f48c2

A backport of that commit to Debian buster was requested in
  https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=898947
so hopefully this will not be necessary after stretch.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agogrub: Move 20_linux_xen to suite-specific overlays
Ian Jackson [Thu, 17 May 2018 14:33:59 +0000 (15:33 +0100)]
grub: Move 20_linux_xen to suite-specific overlays

stretch still needs some of this, in particular the XSM changes.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoDebian.pm: debian_overlays: Honour suite-specific overlays
Ian Jackson [Thu, 17 May 2018 14:26:37 +0000 (15:26 +0100)]
Debian.pm: debian_overlays: Honour suite-specific overlays

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoDebian.pm: debian_overlays: Allow local overlay to override supplied one
Ian Jackson [Thu, 17 May 2018 14:18:42 +0000 (15:18 +0100)]
Debian.pm: debian_overlays: Allow local overlay to override supplied one

I think, no change with any reasonable configs.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoDebian.pm: debian_overlays: Internal default for tarball name
Ian Jackson [Thu, 17 May 2018 14:18:01 +0000 (15:18 +0100)]
Debian.pm: debian_overlays: Internal default for tarball name

No functional change.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoDebian.pm: debian_overlays: Do not make $func callback for nonexistent dirs
Ian Jackson [Thu, 17 May 2018 14:16:48 +0000 (15:16 +0100)]
Debian.pm: debian_overlays: Do not make $func callback for nonexistent dirs

This means that it is now OK not to have an `overlay-local'.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoOsstest/Debian: bootloader: Understand multiboot2 syntax
Ian Jackson [Fri, 18 May 2018 15:40:09 +0000 (16:40 +0100)]
Osstest/Debian: bootloader: Understand multiboot2 syntax

We are going to sometimes switch to the multiboot2 protocol, which has
different directives with very similar effect.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoOsstest/Debian: bootloader: Ignore `.config' files
Ian Jackson [Fri, 18 May 2018 15:38:31 +0000 (16:38 +0100)]
Osstest/Debian: bootloader: Ignore `.config' files

Some versions of the bootloader scripts will make menu entries for
`.config' files, containing the hypervisor config.  These should be
ignored.

(It is not clear to me, given our 20_linux_xen hack, whether this is
in fact an upstream bug, or a bug in 20_linux_xen.)

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoDebian: Pass $ho to debian_overlays
Ian Jackson [Thu, 17 May 2018 14:11:07 +0000 (15:11 +0100)]
Debian: Pass $ho to debian_overlays

No functional change.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agomfi-common: Fall back to anointed builds in Executive mode
Ian Jackson [Thu, 17 May 2018 11:01:05 +0000 (12:01 +0100)]
mfi-common: Fall back to anointed builds in Executive mode

Previously, `make-*-flight' would not work unless FREEBSD_*_BUILDJOB
was set.  Now we use the anointed values if we can find them.

If we can't, mg-anoint retrieve will print a warning.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
6 years agomfi-common: set_freebsd_runvars: Never set freebsd_distpath to `/amd64' etc.
Ian Jackson [Thu, 17 May 2018 10:54:48 +0000 (11:54 +0100)]
mfi-common: set_freebsd_runvars: Never set freebsd_distpath to `/amd64' etc.

Logically, the final branch of the if should be qualified with a check
for the emptiness of FreeBSDDist.  This is awkward in the current
structure, since we really want to do the distpath lookup only if
needed.  (This is not very important right now, but we are about to
add another case which will do a more-likely-to-bomb-out and
more-likely-to-block-on-the-db lookup.)  So refactor into `return'
style.  This lets us introduce local variables in each branch.

Now gate the final branch appropriately.  The overall result is that
if no useful FreeBSD build is found, we simply do not set the
freebsd_* runvars, rather than setting them to wrong values (eg,
`freebsd_distpath=/i386'.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
6 years agomg-anoint: Support mg-anoint retrieve --tolerate-unprepared
Ian Jackson [Thu, 17 May 2018 11:05:48 +0000 (12:05 +0100)]
mg-anoint: Support mg-anoint retrieve --tolerate-unprepared

make-*-flight is going to want this.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
6 years agomg-anoint: Make readonly operations "work" in standalone mode
Ian Jackson [Thu, 17 May 2018 10:51:35 +0000 (11:51 +0100)]
mg-anoint: Make readonly operations "work" in standalone mode

This makes `mg-anoint' in standalone mode a view onto an empty set of
anointments.  So now it becomes ok to call mg-anoint in make-*-flight.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
6 years agoPerl @INC path: fix a few more scripts to use BEGIN
Ian Jackson [Thu, 17 May 2018 10:37:40 +0000 (11:37 +0100)]
Perl @INC path: fix a few more scripts to use BEGIN

Three more files which missed out on
  dea987c5ab11 "PERLLIB, @INC: Use BEGIN { }"

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
6 years agoREADME.dev: Make example commisioning runes use $hn variable
Ian Jackson [Thu, 17 May 2018 10:23:32 +0000 (11:23 +0100)]
README.dev: Make example commisioning runes use $hn variable

This makes them better for cutting-and-pasting.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoREADME.dev: Discuss setting Firmware for UEFI machines
Ian Jackson [Thu, 17 May 2018 10:22:59 +0000 (11:22 +0100)]
README.dev: Discuss setting Firmware for UEFI machines

This must occur before mknetbootdir, or mknetbootdir does not set
things up for UEFI booting.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoREADME.dev: Fix a typo
Ian Jackson [Thu, 17 May 2018 10:22:24 +0000 (11:22 +0100)]
README.dev: Fix a typo

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoOsstest/Debian: Use X64 bootloader for UEFI i386
Ian Jackson [Fri, 18 May 2018 15:27:43 +0000 (16:27 +0100)]
Osstest/Debian: Use X64 bootloader for UEFI i386

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agoOsstest/Debian: preseed: Force UEFI install regardless
Ian Jackson [Wed, 16 May 2018 16:04:43 +0000 (16:04 +0000)]
Osstest/Debian: preseed: Force UEFI install regardless

This suppresses:

   Partition disks
   ---------------

   This machine's firmware has started the installer in UEFI mode but it looks
   like there may be existing operating systems already installed using "BIOS
   compatibility mode". If you continue to install Debian in UEFI mode, it might
   be difficult to reboot the machine into any BIOS-mode operating systems later.

   If you wish to install in UEFI mode and don't care about keeping the ability to
   boot one of the existing systems, you have the option to force that here. If
   you wish to keep the option to boot an existing operating system, you should
   choose NOT to force UEFI installation here.
   Force UEFI installation?
     1: Yes      2: No
     Prompt: '?' for help>

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
6 years agoOsstest/TestSupport: Use right arch for UEFI grub setup
Ian Jackson [Wed, 16 May 2018 16:03:32 +0000 (16:03 +0000)]
Osstest/TestSupport: Use right arch for UEFI grub setup

This table was erroneously never used.  Also, the value for arm64 is
wrong: it should be AA64.  We fix the table value, and substitute it
in, for no overall change on amd64.  On other arches we now do not
hardcode the wrong value.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
CC: Julien Grall <julien.grall@linaro.org>
6 years agoOsstest/Debian.pm: Remove a spurious `my $kernel'.
Ian Jackson [Thu, 17 May 2018 18:12:43 +0000 (18:12 +0000)]
Osstest/Debian.pm: Remove a spurious `my $kernel'.

This variable is not used, and is shadowed by the one which is
initialised a few lines later.  This produces a warning.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
6 years agocr-daily-branch: When reporting, always compare to real flights
Ian Jackson [Mon, 21 May 2018 14:20:20 +0000 (15:20 +0100)]
cr-daily-branch: When reporting, always compare to real flights

When we're running sg-report-flight, at the end of the flight, we
shouldn't try to compare it to play flights, but real ones (if any).
play flights might contain junk (which might even cause
sg-report-flight to crash).

CC: Wei Liu <wei.liu2@citrix.com>
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
6 years agots-xen-build: run `make build' before `make', by default
Ian Jackson [Wed, 9 May 2018 15:53:57 +0000 (16:53 +0100)]
ts-xen-build: run `make build' before `make', by default

The Xen build system has some quirks.  One of them is that `make' is a
version of `make dist' which is a version of `make install', which
runs `make install' in each subdir - but there are subdirs where `make
install' is a no-op which does not depend on `make build'.  Also,
`make all' does not do `make build'.  Additionally, the default target
differs in the toplevel, compared to subdirectories.  Perhaps this is
all mistaken, but it's not something we can correct in stable
branches.

The result is that we might miss bugs where `make build' fails; and in
particular, bugs where simply `make' may fail in a subdirectory.  Eg,
the recently discovered build failures in the emulator tests, due to
backported changes, which occur with `make -C tools' but not with
`make all' or `make tools'.

Detect these by running `make build' before `make' (unless our caller
has specified some other build arguments).  In the future perhaps we
should do tools and hypervisor builds entirely separately.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
---
v2: Use `make build' instead of `make all' since the former actually
    detects the bug in a buggy unpatched Xen 4.8.  Fix a syntax
    error.  Improve the commit message.