[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH 2/4] lcitool: use libvirt-ci as library
From: |
Paolo Bonzini |
Subject: |
[RFC PATCH 2/4] lcitool: use libvirt-ci as library |
Date: |
Tue, 17 Jan 2023 10:16:36 +0100 |
Using the lcitool package as a library will make it possible to
customize more of the process, for example by introducing custom
mappings.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
.gitlab-ci.d/cirrus/freebsd-12.vars | 6 +-
.gitlab-ci.d/cirrus/freebsd-13.vars | 6 +-
.gitlab-ci.d/cirrus/macos-12.vars | 6 +-
tests/docker/dockerfiles/alpine.docker | 6 +-
tests/docker/dockerfiles/centos8.docker | 6 +-
.../dockerfiles/debian-amd64-cross.docker | 6 +-
tests/docker/dockerfiles/debian-amd64.docker | 6 +-
.../dockerfiles/debian-arm64-cross.docker | 6 +-
.../dockerfiles/debian-armel-cross.docker | 6 +-
.../dockerfiles/debian-armhf-cross.docker | 6 +-
.../dockerfiles/debian-mips64el-cross.docker | 6 +-
.../dockerfiles/debian-mipsel-cross.docker | 6 +-
.../dockerfiles/debian-ppc64el-cross.docker | 6 +-
.../dockerfiles/debian-s390x-cross.docker | 6 +-
.../dockerfiles/fedora-win32-cross.docker | 6 +-
.../dockerfiles/fedora-win64-cross.docker | 6 +-
tests/docker/dockerfiles/fedora.docker | 6 +-
tests/docker/dockerfiles/opensuse-leap.docker | 6 +-
tests/docker/dockerfiles/ubuntu2004.docker | 6 +-
tests/lcitool/refresh | 83 ++++++++++++-------
20 files changed, 70 insertions(+), 127 deletions(-)
diff --git a/.gitlab-ci.d/cirrus/freebsd-12.vars
b/.gitlab-ci.d/cirrus/freebsd-12.vars
index e3fc3235b93e..f395e56fc833 100644
--- a/.gitlab-ci.d/cirrus/freebsd-12.vars
+++ b/.gitlab-ci.d/cirrus/freebsd-12.vars
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool variables freebsd-12 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
CCACHE='/usr/local/bin/ccache'
CPAN_PKGS=''
diff --git a/.gitlab-ci.d/cirrus/freebsd-13.vars
b/.gitlab-ci.d/cirrus/freebsd-13.vars
index 9f56babd9ca7..f395e56fc833 100644
--- a/.gitlab-ci.d/cirrus/freebsd-13.vars
+++ b/.gitlab-ci.d/cirrus/freebsd-13.vars
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool variables freebsd-13 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
CCACHE='/usr/local/bin/ccache'
CPAN_PKGS=''
diff --git a/.gitlab-ci.d/cirrus/macos-12.vars
b/.gitlab-ci.d/cirrus/macos-12.vars
index ef9e14b373f0..7fb182f93e16 100644
--- a/.gitlab-ci.d/cirrus/macos-12.vars
+++ b/.gitlab-ci.d/cirrus/macos-12.vars
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool variables macos-12 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
CCACHE='/opt/homebrew/bin/ccache'
CPAN_PKGS=''
diff --git a/tests/docker/dockerfiles/alpine.docker
b/tests/docker/dockerfiles/alpine.docker
index 094f66f4eb05..10f68f4e1e6d 100644
--- a/tests/docker/dockerfiles/alpine.docker
+++ b/tests/docker/dockerfiles/alpine.docker
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool dockerfile --layers all alpine-316 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
FROM docker.io/library/alpine:3.16
diff --git a/tests/docker/dockerfiles/centos8.docker
b/tests/docker/dockerfiles/centos8.docker
index 1f70d41aeb31..2318a95e9255 100644
--- a/tests/docker/dockerfiles/centos8.docker
+++ b/tests/docker/dockerfiles/centos8.docker
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool dockerfile --layers all centos-stream-8 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
FROM quay.io/centos/centos:stream8
diff --git a/tests/docker/dockerfiles/debian-amd64-cross.docker
b/tests/docker/dockerfiles/debian-amd64-cross.docker
index 5e57309361b6..bfa88dc7285f 100644
--- a/tests/docker/dockerfiles/debian-amd64-cross.docker
+++ b/tests/docker/dockerfiles/debian-amd64-cross.docker
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool dockerfile --layers all --cross x86_64 debian-11 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
FROM docker.io/library/debian:11-slim
diff --git a/tests/docker/dockerfiles/debian-amd64.docker
b/tests/docker/dockerfiles/debian-amd64.docker
index bfeab01ee3e2..e09118c83b2f 100644
--- a/tests/docker/dockerfiles/debian-amd64.docker
+++ b/tests/docker/dockerfiles/debian-amd64.docker
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool dockerfile --layers all debian-11 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
FROM docker.io/library/debian:11-slim
diff --git a/tests/docker/dockerfiles/debian-arm64-cross.docker
b/tests/docker/dockerfiles/debian-arm64-cross.docker
index 98885bd0eedf..b20197d5b710 100644
--- a/tests/docker/dockerfiles/debian-arm64-cross.docker
+++ b/tests/docker/dockerfiles/debian-arm64-cross.docker
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool dockerfile --layers all --cross aarch64 debian-11 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
FROM docker.io/library/debian:11-slim
diff --git a/tests/docker/dockerfiles/debian-armel-cross.docker
b/tests/docker/dockerfiles/debian-armel-cross.docker
index d5c08714e4de..792e098f273c 100644
--- a/tests/docker/dockerfiles/debian-armel-cross.docker
+++ b/tests/docker/dockerfiles/debian-armel-cross.docker
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool dockerfile --layers all --cross armv6l debian-11 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
FROM docker.io/library/debian:11-slim
diff --git a/tests/docker/dockerfiles/debian-armhf-cross.docker
b/tests/docker/dockerfiles/debian-armhf-cross.docker
index 471444fcf489..dbb9cf21e99b 100644
--- a/tests/docker/dockerfiles/debian-armhf-cross.docker
+++ b/tests/docker/dockerfiles/debian-armhf-cross.docker
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool dockerfile --layers all --cross armv7l debian-11 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
FROM docker.io/library/debian:11-slim
diff --git a/tests/docker/dockerfiles/debian-mips64el-cross.docker
b/tests/docker/dockerfiles/debian-mips64el-cross.docker
index 15b0224b76bf..712cf98388a1 100644
--- a/tests/docker/dockerfiles/debian-mips64el-cross.docker
+++ b/tests/docker/dockerfiles/debian-mips64el-cross.docker
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool dockerfile --layers all --cross mips64el debian-11 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
FROM docker.io/library/debian:11-slim
diff --git a/tests/docker/dockerfiles/debian-mipsel-cross.docker
b/tests/docker/dockerfiles/debian-mipsel-cross.docker
index a5d3ca6e2f7f..c746b7ca04aa 100644
--- a/tests/docker/dockerfiles/debian-mipsel-cross.docker
+++ b/tests/docker/dockerfiles/debian-mipsel-cross.docker
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool dockerfile --layers all --cross mipsel debian-11 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
FROM docker.io/library/debian:11-slim
diff --git a/tests/docker/dockerfiles/debian-ppc64el-cross.docker
b/tests/docker/dockerfiles/debian-ppc64el-cross.docker
index d2954e61f678..5591062a8bf1 100644
--- a/tests/docker/dockerfiles/debian-ppc64el-cross.docker
+++ b/tests/docker/dockerfiles/debian-ppc64el-cross.docker
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool dockerfile --layers all --cross ppc64le debian-11 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
FROM docker.io/library/debian:11-slim
diff --git a/tests/docker/dockerfiles/debian-s390x-cross.docker
b/tests/docker/dockerfiles/debian-s390x-cross.docker
index d43ce163172e..9c14f3faca40 100644
--- a/tests/docker/dockerfiles/debian-s390x-cross.docker
+++ b/tests/docker/dockerfiles/debian-s390x-cross.docker
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool dockerfile --layers all --cross s390x debian-11 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
FROM docker.io/library/debian:11-slim
diff --git a/tests/docker/dockerfiles/fedora-win32-cross.docker
b/tests/docker/dockerfiles/fedora-win32-cross.docker
index aece4f55818d..d691e54d0c15 100644
--- a/tests/docker/dockerfiles/fedora-win32-cross.docker
+++ b/tests/docker/dockerfiles/fedora-win32-cross.docker
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool dockerfile --layers all --cross mingw32 fedora-36 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
FROM registry.fedoraproject.org/fedora:36
diff --git a/tests/docker/dockerfiles/fedora-win64-cross.docker
b/tests/docker/dockerfiles/fedora-win64-cross.docker
index 2d573e2505f2..9f5082e02b3b 100644
--- a/tests/docker/dockerfiles/fedora-win64-cross.docker
+++ b/tests/docker/dockerfiles/fedora-win64-cross.docker
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool dockerfile --layers all --cross mingw64 fedora-36 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
FROM registry.fedoraproject.org/fedora:36
diff --git a/tests/docker/dockerfiles/fedora.docker
b/tests/docker/dockerfiles/fedora.docker
index 901562bb8e5a..c8e99a6b8951 100644
--- a/tests/docker/dockerfiles/fedora.docker
+++ b/tests/docker/dockerfiles/fedora.docker
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool dockerfile --layers all fedora-36 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
FROM registry.fedoraproject.org/fedora:36
diff --git a/tests/docker/dockerfiles/opensuse-leap.docker
b/tests/docker/dockerfiles/opensuse-leap.docker
index 4361b01464af..a98209c15803 100644
--- a/tests/docker/dockerfiles/opensuse-leap.docker
+++ b/tests/docker/dockerfiles/opensuse-leap.docker
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool dockerfile --layers all opensuse-leap-153 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
FROM registry.opensuse.org/opensuse/leap:15.3
diff --git a/tests/docker/dockerfiles/ubuntu2004.docker
b/tests/docker/dockerfiles/ubuntu2004.docker
index 9417bca2fa23..077460916ade 100644
--- a/tests/docker/dockerfiles/ubuntu2004.docker
+++ b/tests/docker/dockerfiles/ubuntu2004.docker
@@ -1,8 +1,4 @@
-# THIS FILE WAS AUTO-GENERATED
-#
-# $ lcitool dockerfile --layers all ubuntu-2004 qemu
-#
-# https://gitlab.com/libvirt/libvirt-ci
+# THIS FILE WAS AUTO-GENERATED BY tests/lcitool/refresh
FROM docker.io/library/ubuntu:20.04
diff --git a/tests/lcitool/refresh b/tests/lcitool/refresh
index ee55ee40ee5d..31a34dce7a33 100755
--- a/tests/lcitool/refresh
+++ b/tests/lcitool/refresh
@@ -12,61 +12,80 @@
# or (at your option) any later version. See the COPYING file in
# the top-level directory.
-import sys
-import subprocess
-
+from contextlib import contextmanager
from pathlib import Path
+import sys
+
if len(sys.argv) != 1:
print("syntax: %s" % sys.argv[0], file=sys.stderr)
sys.exit(1)
-self_dir = Path(__file__).parent
-src_dir = self_dir.parent.parent
+script = Path(__file__)
+script_dir = script.parent
+src_dir = script_dir.parent.parent
dockerfiles_dir = Path(src_dir, "tests", "docker", "dockerfiles")
-lcitool_path = Path(self_dir, "libvirt-ci", "bin", "lcitool")
+sys.path.append(str(Path(script_dir, "libvirt-ci")))
-lcitool_cmd = [lcitool_path, "--data-dir", self_dir]
+from lcitool import LcitoolError
+from lcitool.packages import Packages
+from lcitool.projects import Projects
+from lcitool.targets import BuildTarget, Targets
+from lcitool.formatters import DockerfileFormatter, ShellVariablesFormatter
+from lcitool.util import DataDir
+
+PREFIX = ''
+
+DATA_DIR = DataDir(script_dir)
+PROJECTS = Projects(DATA_DIR)
+PACKAGES = Packages()
+TARGETS = Targets()
-def atomic_write(filename, content):
+@contextmanager
+def atomic_write(filename):
tmp = filename.with_suffix(filename.suffix + ".tmp")
try:
with tmp.open("w") as fp:
- print(content, file=fp, end="")
+ yield fp
tmp.rename(filename)
- except Exception as ex:
+ except Exception:
tmp.unlink()
raise
-def generate(filename, cmd, trailer):
- print("Generate %s" % filename)
- lcitool = subprocess.run(cmd, capture_output=True)
-
- if lcitool.returncode != 0:
- raise Exception("Failed to generate %s: %s" % (filename,
lcitool.stderr))
-
- content = lcitool.stdout.decode("utf8")
- if trailer is not None:
- content += trailer
- atomic_write(filename, content)
+@contextmanager
+def generate(filename):
+ print("Generating %s" % filename)
+ nonlocal PREFIX
+ try:
+ PREFIX = "Failed to generate %s: " % filename
+ with atomic_write(filename) as fp:
+ print('# THIS FILE WAS AUTO-GENERATED BY',
+ script.relative_to(src_dir), file=fp)
+ print(file=fp)
+ yield fp
+ finally:
+ PREFIX = ''
def generate_dockerfile(host, target, cross=None, trailer=None):
filename = Path(src_dir, "tests", "docker", "dockerfiles", host +
".docker")
- cmd = lcitool_cmd + ["dockerfile"]
- if cross is not None:
- cmd.extend(["--cross", cross])
- cmd.extend([target, "qemu"])
- generate(filename, cmd, trailer)
+ with generate(filename) as fp:
+ dockerfile = DockerfileFormatter(PROJECTS)
+ target = BuildTarget(TARGETS, PACKAGES, target, cross)
+ print(dockerfile.format(target, ["qemu"]), file=fp)
+ if trailer is not None:
+ print(trailer, file=fp, end="")
-def generate_cirrus(target, trailer=None):
+def generate_cirrus(target):
filename = Path(src_dir, ".gitlab-ci.d", "cirrus", target + ".vars")
- cmd = lcitool_cmd + ["variables", target, "qemu"]
- generate(filename, cmd, trailer)
+ with generate(filename) as fp:
+ variables = ShellVariablesFormatter(PROJECTS)
+ target = BuildTarget(TARGETS, PACKAGES, target)
+ print(variables.format(target, ["qemu"]), file=fp)
ubuntu2004_tsanhack = [
@@ -98,11 +117,11 @@ def cross_build(prefix, targets):
targets = "ENV DEF_TARGET_LIST %s\n" % (targets)
return "".join([conf, targets])
+
#
# Update all the various build configurations.
# Please keep each group sorted alphabetically for easy reading.
#
-
try:
#
# Standard native builds
@@ -179,6 +198,6 @@ try:
generate_cirrus("macos-12")
sys.exit(0)
-except Exception as ex:
- print(str(ex), file=sys.stderr)
+except LcitoolError as ex:
+ print(PREFIX + ex.module_prefix + " error: " + str(ex), file=sys.stderr)
sys.exit(1)
--
2.38.1