[PATCH 0/2] remove kvm_pr PPC64 support for non-Power8 hosts
by Daniel Henrique Barboza
The reasoning is described in the commit message of patch 02.
Gitlab tree: https://gitlab.com/danielhb/libvirt/-/tree/kvmpr_cap_v1
Daniel Henrique Barboza (2):
virt-host-validade-common: move virHostKernelModuleIsLoaded to virkmod
qemu_capabilities.c: drop 'kvm_pr' support for non-Power8 hosts
src/libvirt_private.syms | 1 +
src/qemu/qemu_capabilities.c | 38 +++++++++++++++++++++++++++++--
src/util/virkmod.c | 34 +++++++++++++++++++++++++++
src/util/virkmod.h | 1 +
tools/virt-host-validate-common.c | 27 ----------------------
tools/virt-host-validate-common.h | 2 --
tools/virt-host-validate-qemu.c | 3 ++-
7 files changed, 74 insertions(+), 32 deletions(-)
--
2.26.2
4 years, 4 months
[PATCH libvirt-python 0/5] Fixes from adding type annotation
by Philipp Hahn
Hello,
as announced a long time ago with
<https://www.redhat.com/archives/libvir-list/2018-November/msg00291.html>
and recently refreshed with
<https://www.redhat.com/archives/libvir-list/2020-April/msg00892.html>
I'm working on adding PEP 484 type hints
<https://www.python.org/dev/peps/pep-0484/> to the Python binding of
libvirt.
I have finished this work now and have a working version at
<https://github.com/univention/libvirt-python/tree/typing> which
consists of 90 patches in total as I has to go over evry file to
understand and fix all things.
As that patch bomb is quiet large I'm going to submit them in smaller
chunks to make them more reviewable. Today I start with the first round
consisting of "real" bugs in the current code:
Philipp Hahn (5):
generator: Fix undefined variables file
generator: Fix string formatting
generator: Fix domainSnapshot.listAllChildren()
qemu-api: Fix return type
libvirtaio: Fix return types of callback
generator.py | 6 +++---
libvirt-override-virDomainSnapshot.py | 2 +-
libvirt-qemu-override-api.xml | 4 ++--
libvirtaio.py | 18 ++++++++++++------
4 files changed, 18 insertions(+), 12 deletions(-)
After that I plan to continue with:
2. fix examples/ to work with Python 3
3. Cleanup code tree-wide
4. Cleanup generator.py
5. Cleanup sanitytest.py
6. Teach generator.py to add PEP 484 annotation
7. Assorted cleanups
(the order and chunking is not final yet)
> examples/domipaddrs: Convert to python 3 print()
> examples/domipaddrs: Fix Python 2 dict.iteritems()
> examples/*: Remove stray semicolon
> example/dhcp*: Fix None comparison
> examples/event-test: Remove unneeded global statement
> examples/event-test: Work with old version of python-libvirt
> examples/event-test: Use atexit for Python 3
> examples/esxlist: Fix Python 2 raw_input()
> examples/consolecallback: Add var to save callback
> examples/consolecallback: Fix assorted errors
> examples: Add missing return values
> libvirtaio: Drop object(*args, **kwargs)
> libvirtaio: Fix return type
> libvirtaio: assert callback type
> Do not use bare except
> Cleanup imports
> Fix white space
> Remove legacy libvirtError arguments
> stream: Fix exception traceback handling
> override: Simplify exception handling
> generator: Simplify exception handling
> generator: Change type of quiet to bool
> generator: Remove unneeded line continuation
> generator: Convert to 'not in' and 'is not'
> generator: Remove dead variable assignments
> generator: Remove skipped_modules
> generator: Remove useless sort key
> generator: Fix return type on failure
> generator: Merge now identical if-elif-else cases
> generator: Use more string formatting
> generator: Simplify string concatentaion
> generator: Use enumerate()
> generator: Use increment assignment
> generator: Use string concatenation
> generator: Remove global declarations
> generator: Initialize function_classes directly
> generator: Check contained in hash
> generator: Use dict.item() to walk keys and values
> generator: Walk only the values
> generator: Directly get dict length
> generator: Just walk the dict
> generator: Use splitlines()
> generator: Open file with context manager
> generator: Refactor parser creation
> generator: Remove unused SAX content handler methods
> generator: Use SAX method names
> generator: Use string formatting
> generator: Convert in_function to boolean
> generator: Simplify XML attribute fetching
> generator: Initialize with empty strings
> generator: Expand tuple to names in for loop
> generator: Store arguments and return as tuple
> generator: Fixed writing cached=None
> generator: Simplify sorting
> generator: Simplify loop break
> generator: Simplify boolean condition
> generator: Convert dict() to set()
> generator: Converto to defaultdict()
> generator: Add PEP 484 type annotations
> override: Add manual PEP 484 type annotations
> sanitytest: Skip type annotations
> stream: Simplify boolean condition
> domain: Fix None comparison
> stream: no type change
> stream: Convert type() to isinstance()
> stream: Return None from callback
> connect: Just clear all event handlers
> override: no type change
> sanitytest: Do not re-declare set
> sanitytest: Drop else:pass
> sanitytest: Drop Python 2 compatibility
> sanitytest: Add PEP 484 type annotations
> sanitytest: Use 3-tuple for basicklassmap
> sanitytest: Use 3-tuple for finalklassmap
> sanitytest: Use set for tracking used functions
> sanitytest: Use str.startswith() instead of str[0]
> generator: Generate PEP 484 type annotation
> override: Catch type error
> generator: Special handling for virStoragePool.listAllVolumes
> generator: Merge code for __init__ genration
> generator: Use empty string instead of None
> generator: break lines in generated code
> generator: Expand tuple to names in for loop
> generator: Work around type change
> generator: use pointer wrapper for all objects
> examples: Add/fix PEP 484 type annotation
--
2.20.1
4 years, 4 months
kvm-hint-dedicated requires host CPU passthrough?
by Stefan Hajnoczi
Hi,
libvirt refuses to set KVM_HINTS_DEDICATED when the CPU model is not
host-passthrough.
Is there a reason for this limitation?
My understanding is that KVM_HINTS_DEDICATED means the vCPU is pinned to
a host CPU that is not shared with other tasks. Any KVM vCPU should be
able to support this feature, regardless of whether host-passthrough is
used or not.
Stefan
4 years, 5 months
[libvirt-jenkins-ci PATCH 0/7] lcitool: Create and expose ccache wrappers
by Andrea Bolognani
This series makes ccache work out of the box for container-based
builds. Most of it is refactoring.
Applies on top of
https://www.redhat.com/archives/libvir-list/2020-March/msg01263.html
Andrea Bolognani (7):
lcitool: Improve ccache symlinks creation
lcitool: Configure ccache using environment variables
lcitool: Create ccache wrappers outside of $HOME
lcitool: Refactor cross_arch handling a bit
lcitool: Use commands[] for deb-based distros
lcitool: Use cross_commands[] for all distros
lcitool: Create and expose ccache wrappers
guests/host_vars/libvirt-centos-7/main.yml | 1 +
guests/host_vars/libvirt-centos-8/main.yml | 1 +
guests/host_vars/libvirt-debian-10/main.yml | 1 +
guests/host_vars/libvirt-debian-9/main.yml | 1 +
guests/host_vars/libvirt-debian-sid/main.yml | 1 +
guests/host_vars/libvirt-fedora-30/main.yml | 1 +
guests/host_vars/libvirt-fedora-31/main.yml | 1 +
.../host_vars/libvirt-fedora-rawhide/main.yml | 1 +
guests/host_vars/libvirt-freebsd-11/main.yml | 1 +
guests/host_vars/libvirt-freebsd-12/main.yml | 1 +
.../libvirt-freebsd-current/main.yml | 1 +
.../host_vars/libvirt-opensuse-151/main.yml | 1 +
guests/host_vars/libvirt-ubuntu-1604/main.yml | 1 +
guests/host_vars/libvirt-ubuntu-1804/main.yml | 1 +
guests/lcitool | 92 +++++++++++--------
guests/playbooks/update/main.yml | 1 +
guests/playbooks/update/tasks/global.yml | 14 +++
guests/playbooks/update/tasks/users.yml | 45 ---------
guests/playbooks/update/templates/bashrc.j2 | 3 +-
.../playbooks/update/templates/ccache.conf.j2 | 1 -
20 files changed, 87 insertions(+), 83 deletions(-)
create mode 100644 guests/playbooks/update/tasks/global.yml
delete mode 100644 guests/playbooks/update/templates/ccache.conf.j2
--
2.25.1
4 years, 5 months
[libvirt PATCH] qemu: fix missing error reports in capabilities probing
by Daniel P. Berrangé
The "virsh domcapabilities --arch ppc64" command will fail with no
error message set if qemu-system-ppc64 is not currently installed.
This is because virQEMUCapsCacheLookup() does not report any error
message if not capabilities can be obtained from the cache. Almost
all methods calling this expected an error to be set on failure.
Once that's fixed though, we see a further bug which is that
virQEMUCapsCacheLookupDefault() is passing a NULL binary path to
virQEMUCapsCacheLookup(), so we need to catch that too.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
src/qemu/qemu_capabilities.c | 11 +++++++++++
src/qemu/qemu_domain.c | 4 +++-
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index aa90eab229..448d6fa175 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -5517,6 +5517,11 @@ virQEMUCapsCacheLookup(virFileCachePtr cache,
priv->microcodeVersion = virHostCPUGetMicrocodeVersion();
ret = virFileCacheLookup(cache, binary);
+ if (!ret) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("no capabilities available for %s"), binary);
+ return NULL;
+ }
VIR_DEBUG("Returning caps %p for %s", ret, binary);
return ret;
@@ -5664,6 +5669,12 @@ virQEMUCapsCacheLookupDefault(virFileCachePtr cache,
probedbinary = virQEMUCapsGetDefaultEmulator(hostarch, arch);
binary = probedbinary;
}
+ if (!binary) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("unable to find any emulator to serve '%s' architecture"),
+ archStr);
+ goto cleanup;
+ }
if (!(qemuCaps = virQEMUCapsCacheLookup(cache, binary)))
goto cleanup;
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 2dad823a86..97096073e6 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -6068,8 +6068,10 @@ qemuDomainPostParseDataAlloc(const virDomainDef *def,
virQEMUDriverPtr driver = opaque;
if (!(*parseOpaque = virQEMUCapsCacheLookup(driver->qemuCapsCache,
- def->emulator)))
+ def->emulator))) {
+ virResetLastError();
return 1;
+ }
return 0;
}
--
2.26.2
4 years, 5 months
[RFC 00/21] RFC: Generate parsexml/formatbuf functions based on directives
by Shi Lei
Last RFC: [https://www.redhat.com/archives/libvir-list/2020-April/msg00970.html]
In last RFC, I suggested we can generate object-model code based on relax-ng
files and Daniel gave it some comments.
Follow the suggestion from Daniel, I make another try to generate parsexml/formatbuf
functions automatically.
============
Directives
============
Still, we need several directives that can direct a tool to generate functions.
These directives work on the declarations of structs. For example:
typedef struct _virNetworkDNSTxtDef virNetworkDNSTxtDef;
typedef virNetworkDNSTxtDef *virNetworkDNSTxtDefPtr;
struct _virNetworkDNSTxtDef { /* genparse:concisehook, genformat */
char *name; /* xmlattr, required */
char *value; /* xmlattr */
};
typedef struct _virNetworkDNSSrvDef virNetworkDNSSrvDef;
typedef virNetworkDNSSrvDef *virNetworkDNSSrvDefPtr;
struct _virNetworkDNSSrvDef { /* genparse:withhook, genformat */
char *service; /* xmlattr */
char *protocol; /* xmlattr */
char *domain; /* xmlattr */
char *target; /* xmlattr */
unsigned int port; /* xmlattr */
unsigned int priority; /* xmlattr */
unsigned int weight; /* xmlattr */
};
typedef struct _virNetworkDNSHostDef virNetworkDNSHostDef;
typedef virNetworkDNSHostDef *virNetworkDNSHostDefPtr;
struct _virNetworkDNSHostDef { /* genparse:withhook, genformat */
virSocketAddr ip; /* xmlattr */
size_t nnames;
char **names; /* xmlelem:hostname, array */
};
typedef struct _virNetworkDNSForwarder virNetworkDNSForwarder;
typedef virNetworkDNSForwarder *virNetworkDNSForwarderPtr;
struct _virNetworkDNSForwarder { /* genparse:withhook, genformat */
char *domain; /* xmlattr */
virSocketAddr addr; /* xmlattr */
};
typedef struct _virNetworkDNSDef virNetworkDNSDef;
typedef virNetworkDNSDef *virNetworkDNSDefPtr;
struct _virNetworkDNSDef { /* genparse:withhook, genformat */
virTristateBool enable; /* xmlattr */
virTristateBool forwardPlainNames; /* xmlattr */
size_t nforwarders;
virNetworkDNSForwarderPtr forwarders; /* xmlelem, array */
size_t ntxts;
virNetworkDNSTxtDefPtr txts; /* xmlelem, array */
size_t nsrvs;
virNetworkDNSSrvDefPtr srvs; /* xmlelem, array */
size_t nhosts;
virNetworkDNSHostDefPtr hosts; /* xmlelem, array */
};
Explanation for these directives:
- genparse[:withhook|concisehook]
Only work on a struct.
Generate parsexml function for this struct only if 'genparse' is specified.
The function name is based on the struct-name and suffixed with 'ParseXML'.
E.g., for struct virNetworkDNSDef, its parsexml function is
virNetworkDNSDefParseXML.
If a parsexml function includes some error-checking code, it needs a
post-process hook to hold them. Specify 'withhook' or 'concisehook' to
setup a hook point in the parsexml function.
Executing the tool manually can show the declaration of hook function.
E.g. check declaration of 'virNetworkDNSDefParseXMLHook'.
# ./build-aux/generator/go show virNetworkDNSDef -kp
int
virNetworkDNSDefParseXMLHook(xmlNodePtr node,
virNetworkDNSDefPtr def,
const char *instname,
void *opaque,
const char *enableStr,
const char *forwardPlainNamesStr,
int nForwarderNodes,
int nTxtNodes,
int nSrvNodes,
int nHostNodes);
Some helper arguments (such as 'enableStr', 'nTxtNodes', etc.) are
passed in to indicate the existence of fields.
If these arguments are useless, specify 'concisehook' to omit them.
When 'genparse' is specified, clear function for this struct is also
generated implicitly, it is because the generated parsexml function needs
to call the clear function.
- genformat
Only work on a struct.
Generate formatbuf function for this struct only if 'genformat' is specified.
The function name is based on struct-name and suffixed with 'FormatBuf'.
- xmlattr[:thename]
Parse/Format the field as an XML attribute.
If 'thename' is specified, use it as the XML attribute name;
or use the filed name.
- xmlelem[:thename]
Parse/Format the field as a child struct.
If 'thename' is specified, use it as the XML element name;
or use the filed name.
- array
Parse/Format the field as an array.
Its related field is a counter, which name should follow the pattern:
n + 'field_name'.
- required
The field must have a corresponding item defined in XML.
Note:
1. If a field isn't specified with 'xmlattr' or 'xmlelem', it will be
ignored in the parsexml/formatbuf functions.
2. For enum, use its name rather than int.
E.g., the type of the field 'enable' in virNetworkDef should be
'virTristateBool' rather than 'int'.
=======
Tool
=======
The Tool is based on libclang and its python-binding.
It has three subcommands: 'list', 'show' and 'generate'.
The 'list' and 'show' are used for previewing generated code;
the 'generate' is prepared to be invoked by Makefile whenever the c header files
under 'src/conf' and 'src/util' have changed.
===================
About this series
===================
To generate all parsexml/formatbuf functions for virNetworkDef and all its
subordinate structs, it needs around 95 patches.
In this RFC, I just post 21 patches for evaluation.
Thanks!
Shi Lei (21):
build-aux: Add a tool to generate xml parse/format functions
maint: Check libclang and its python3 binding
maint: Call generator automatically when c-head-files change
maint: Add helper macro VIR_USED
util: Add two helper functions virXMLChildNode and virXMLChildNodeSet
conf: Extract error-checking code from virNetworkDNSTxtDefParseXML
conf: Replace virNetworkDNSTxtDefParseXML(hardcoded) with
namesake(generated)
conf: Generate virNetworkDNSTxtDefFormatBuf
conf: Extract error-checking code from virNetworkDNSSrvDefParseXML
conf: Replace virNetworkDNSSrvDefParseXML(hardcoded) with
namesake(generated)
conf: Generate virNetworkDNSSrvDefFormatBuf
util: Add parsexml/formatbuf helper functions for virSocketAddr
conf: Extract error-checking code from virNetworkDNSHostDefParseXML
conf: Replace virNetworkDNSHostDefParseXML(hardcoded) with
namesake(generated)
conf: Generate virNetworkDNSHostDefFormatBuf
conf: Extract virNetworkDNSForwarderParseXML from
virNetworkDNSParseXML
conf: Replace virNetworkDNSForwarderParseXML(hardcoded) with
namesake(generated)
conf: Generate virNetworkDNSForwarderFormatBuf
conf: Extract error-checking code from virNetworkDNSDefParseXML
conf: Replace virNetworkDNSDefParseXML(hardcoded) with
namesake(generated)
conf: Generate virNetworkDNSDefFormatBuf
build-aux/generator/directive.py | 839 +++++++++++++++++++++++++++++++
build-aux/generator/go | 14 +
build-aux/generator/main.py | 416 +++++++++++++++
build-aux/generator/utils.py | 100 ++++
configure.ac | 12 +
po/POTFILES.in | 2 +
src/Makefile.am | 15 +
src/access/Makefile.inc.am | 2 +-
src/conf/Makefile.inc.am | 13 +-
src/conf/network_conf.c | 487 ++++--------------
src/conf/network_conf.h | 54 +-
src/esx/Makefile.inc.am | 2 +-
src/interface/Makefile.inc.am | 2 +-
src/internal.h | 2 +
src/lxc/Makefile.inc.am | 1 +
src/network/Makefile.inc.am | 2 +-
src/network/bridge_driver.c | 2 +-
src/node_device/Makefile.inc.am | 2 +-
src/nwfilter/Makefile.inc.am | 2 +-
src/qemu/Makefile.inc.am | 1 +
src/remote/Makefile.inc.am | 2 +-
src/secret/Makefile.inc.am | 2 +-
src/storage/Makefile.inc.am | 2 +-
src/test/Makefile.inc.am | 2 +-
src/util/Makefile.inc.am | 12 +-
src/util/virsocketaddr.c | 38 ++
src/util/virsocketaddr.h | 22 +-
src/util/virxml.c | 57 +++
src/util/virxml.h | 3 +
src/vbox/Makefile.inc.am | 2 +-
tests/Makefile.am | 2 +
tools/Makefile.am | 2 +
32 files changed, 1674 insertions(+), 442 deletions(-)
create mode 100644 build-aux/generator/directive.py
create mode 100755 build-aux/generator/go
create mode 100755 build-aux/generator/main.py
create mode 100644 build-aux/generator/utils.py
--
2.17.1
4 years, 5 months
[PATCH 0/7] consider available CPUs in vcpupin/emulatorpin output
by Daniel Henrique Barboza
Hi,
This series contains 5 cleanups and refactorings I found
on my way to fixing [1]. Last 2 patches contains the actual
fix for the bug.
[1] https://bugzilla.redhat.com/show_bug.cgi?id=1434276
Daniel Henrique Barboza (7):
qemu_driver.c: use g_autoptr in qemuDomainGetEmulatorPinInfo()
virhostcpu.c: use g_autoptr in virHostCPUGetMap()
virsh-domain.c: modernize virshVcpuinfoInactive()
virsh-domain.c: modernize cmdVcpuinfo()
virhostcpu.c: refactor virHostCPUParseCountLinux()
virhostcpu.c: introduce virHostCPUGetAvailableCPUsBitmap()
conf, qemu: consider available CPUs in vcpupin/emulatorpin output
src/conf/domain_conf.c | 4 +--
src/libvirt_private.syms | 1 +
src/qemu/qemu_driver.c | 10 ++-----
src/util/virhostcpu.c | 63 ++++++++++++++++++++++++----------------
src/util/virhostcpu.h | 2 ++
tools/virsh-domain.c | 44 ++++++++++------------------
6 files changed, 59 insertions(+), 65 deletions(-)
--
2.26.2
4 years, 5 months
[PATCH 00/13] Allow HMAT configuration
by Michal Privoznik
Heterogeneous Memory Attribute Table describes links between NUMA nodes
(what's the bandwidth and/or latency between two nodes and/or their side
caches). This enables guests to fine tune their performance.
Michal Prívozník (13):
qemuxml2xmltest: Add "numatune-distance" test case
conf: Move and rename virDomainParseScaledValue()
numa_conf: Drop CPU from name of two functions
qemu_command: Rename qemuBuildNumaArgStr()
qemuBuildMachineCommandLine: Drop needless check
numa_conf: Make virDomainNumaSetNodeCpumask() return void
Allow NUMA nodes without vCPUs
conf: Parse and format HMAT
conf: Validate NUMA HMAT configuration
numa: expose HMAT APIs
qemu: Introduce QEMU_CAPS_NUMA_HMAT capability
qemu: Build HMAT command line
news: Document HMAT addition
NEWS.rst | 5 +
docs/formatdomain.html.in | 90 +++
docs/schemas/cputypes.rng | 118 +++-
src/conf/cpu_conf.c | 2 +-
src/conf/domain_conf.c | 140 +---
src/conf/numa_conf.c | 664 ++++++++++++++++--
src/conf/numa_conf.h | 72 +-
src/libvirt_private.syms | 13 +
src/libxl/xen_xl.c | 14 +-
src/qemu/qemu_capabilities.c | 2 +
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_command.c | 226 +++++-
src/qemu/qemu_validate.c | 22 +-
src/util/virxml.c | 72 ++
src/util/virxml.h | 8 +
.../caps_5.0.0.aarch64.xml | 1 +
.../qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 1 +
.../caps_5.0.0.riscv64.xml | 1 +
.../caps_5.0.0.x86_64.xml | 1 +
.../caps_5.1.0.x86_64.xml | 1 +
.../numatune-hmat.x86_64-latest.args | 53 ++
tests/qemuxml2argvdata/numatune-hmat.xml | 52 ++
tests/qemuxml2argvdata/numatune-no-vcpu.args | 33 +
tests/qemuxml2argvdata/numatune-no-vcpu.xml | 42 ++
tests/qemuxml2argvtest.c | 2 +
.../qemuxml2xmloutdata/numatune-distances.xml | 96 +++
tests/qemuxml2xmloutdata/numatune-hmat.xml | 1 +
tests/qemuxml2xmloutdata/numatune-no-vcpu.xml | 1 +
tests/qemuxml2xmltest.c | 3 +
29 files changed, 1536 insertions(+), 201 deletions(-)
create mode 100644 tests/qemuxml2argvdata/numatune-hmat.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/numatune-hmat.xml
create mode 100644 tests/qemuxml2argvdata/numatune-no-vcpu.args
create mode 100644 tests/qemuxml2argvdata/numatune-no-vcpu.xml
create mode 100644 tests/qemuxml2xmloutdata/numatune-distances.xml
create mode 120000 tests/qemuxml2xmloutdata/numatune-hmat.xml
create mode 120000 tests/qemuxml2xmloutdata/numatune-no-vcpu.xml
--
2.26.2
4 years, 5 months
Entering freeze for libvirt-6.5.0
by Daniel Veillard
With the end of the month coming next week, it is better to enter freeze
today and try to release before the July 4th long week-end in the US.
I have just pushed the signed tarball and source rpm to the usual place
https://libvirt.org/sources/
Seems to work fine in my very minimal tests, I hope people can
do a bit of testing especially on other OSes and distro.
If all goes fine I will push rc2 on Tuesday with hopefully a release of
6.5.0 on Thursday.
Please give it some testing,
thanks,
Daniel
--
Daniel Veillard | Red Hat Developers Tools http://developer.redhat.com/
veillard(a)redhat.com | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
http://veillard.com/ | virtualization library http://libvirt.org/
4 years, 5 months
[libvirt PATCH v3 0/1] cirrus: Add templates and refresh script
by Andrea Bolognani
This makes the Cirrus CI configurations as maintainable as the
Dockerfiles, by shifting the responsability of keeping the list
of dependencies and other details up to date to lcitool.
Test pipeline:
https://gitlab.com/abologna/libvirt/-/pipelines/161289292
For the refresh script to work, your copy of lcitool needs to
include these patches:
https://gitlab.com/libvirt/libvirt-ci/-/merge_requests/30
Changes from [v2]:
* 'lcitool dockerfile --variables' has been replaced with
'lcitool variables'.
Changes from [v1]:
* reduce duplication by only storing variables in the git
repository and instantiating the template at runtime.
[v2] https://www.redhat.com/archives/libvir-list/2020-June/msg01318.html
[v1] https://www.redhat.com/archives/libvir-list/2020-June/msg01305.html
Andrea Bolognani (1):
cirrus: Generate jobs dynamically
.gitlab-ci.yml | 36 ++++++++++++++-
ci/cirrus/build.yml | 26 +++++++++++
ci/cirrus/freebsd-12.yml.j2 | 73 -------------------------------
ci/cirrus/libvirt-freebsd-12.vars | 7 +++
ci/cirrus/libvirt-macos-1015.vars | 7 +++
ci/cirrus/macos-1015.yml.j2 | 38 ----------------
ci/cirrus/refresh | 22 ++++++++++
7 files changed, 97 insertions(+), 112 deletions(-)
create mode 100644 ci/cirrus/build.yml
delete mode 100644 ci/cirrus/freebsd-12.yml.j2
create mode 100644 ci/cirrus/libvirt-freebsd-12.vars
create mode 100644 ci/cirrus/libvirt-macos-1015.vars
delete mode 100644 ci/cirrus/macos-1015.yml.j2
create mode 100755 ci/cirrus/refresh
--
2.25.4
4 years, 5 months