mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-10-09 23:33:53 +03:00
Compare commits
6 Commits
v7.6.0
...
v2.0-maint
Author | SHA1 | Date | |
---|---|---|---|
|
1e51b78a92 | ||
|
a9e40f2320 | ||
|
c998537991 | ||
|
8b7b45065e | ||
|
b9fed351d4 | ||
|
f3cac03520 |
@@ -1,38 +0,0 @@
|
|||||||
-I@abs_top_builddir@
|
|
||||||
-I@abs_top_srcdir@
|
|
||||||
-I@abs_top_builddir@/include
|
|
||||||
-I@abs_top_srcdir@/include
|
|
||||||
-I@abs_top_builddir@/src
|
|
||||||
-I@abs_top_srcdir@/src
|
|
||||||
-I@abs_top_builddir@/src/access
|
|
||||||
-I@abs_top_srcdir@/src/access
|
|
||||||
-I@abs_top_builddir@/src/admin
|
|
||||||
-I@abs_top_srcdir@/src/admin
|
|
||||||
-I@abs_top_builddir@/src/bhyve
|
|
||||||
-I@abs_top_srcdir@/src/bhyve
|
|
||||||
-I@abs_top_builddir@/src/conf
|
|
||||||
-I@abs_top_srcdir@/src/conf
|
|
||||||
-I@abs_top_builddir@/src/libxl
|
|
||||||
-I@abs_top_srcdir@/src/libxl
|
|
||||||
-I@abs_top_builddir@/src/locking
|
|
||||||
-I@abs_top_srcdir@/src/locking
|
|
||||||
-I@abs_top_builddir@/src/logging
|
|
||||||
-I@abs_top_srcdir@/src/logging
|
|
||||||
-I@abs_top_builddir@/src/lxc
|
|
||||||
-I@abs_top_srcdir@/src/lxc
|
|
||||||
-I@abs_top_builddir@/src/qemu
|
|
||||||
-I@abs_top_srcdir@/src/qemu
|
|
||||||
-I@abs_top_builddir@/src/remote
|
|
||||||
-I@abs_top_srcdir@/src/remote
|
|
||||||
-I@abs_top_builddir@/src/rpc
|
|
||||||
-I@abs_top_srcdir@/src/rpc
|
|
||||||
-I@abs_top_builddir@/src/secret
|
|
||||||
-I@abs_top_srcdir@/src/secret
|
|
||||||
-I@abs_top_builddir@/src/security
|
|
||||||
-I@abs_top_srcdir@/src/security
|
|
||||||
-I@abs_top_builddir@/src/util
|
|
||||||
-I@abs_top_srcdir@/src/util
|
|
||||||
-I@abs_top_builddir@/src/vmx
|
|
||||||
-I@abs_top_srcdir@/src/vmx
|
|
||||||
-I@abs_top_builddir@/src/xenconfig
|
|
||||||
-I@abs_top_srcdir@/src/xenconfig
|
|
1
.ctags
1
.ctags
@@ -3,4 +3,3 @@
|
|||||||
--exclude=*.html
|
--exclude=*.html
|
||||||
--exclude=*.html.in
|
--exclude=*.html.in
|
||||||
--langmap=c:+.h.in
|
--langmap=c:+.h.in
|
||||||
--c-kinds=+p
|
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
../.ctags
|
|
@@ -1,21 +0,0 @@
|
|||||||
# EditorConfig is a file format and collection of text editor plugins
|
|
||||||
# for maintaining consistent coding styles between different editors
|
|
||||||
# and IDEs. Most popular editors support this either natively or via
|
|
||||||
# plugin.
|
|
||||||
#
|
|
||||||
# Check https://editorconfig.org for details.
|
|
||||||
|
|
||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
end_of_line = lf
|
|
||||||
insert_final_newline = true
|
|
||||||
charset = utf-8
|
|
||||||
|
|
||||||
[*.c]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 4
|
|
||||||
|
|
||||||
[*.{rng,xml}]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
38
.github/lockdown.yml
vendored
38
.github/lockdown.yml
vendored
@@ -1,38 +0,0 @@
|
|||||||
# Configuration for Repo Lockdown - https://github.com/dessant/repo-lockdown
|
|
||||||
|
|
||||||
skipCreatedBefore: 2020-01-01
|
|
||||||
|
|
||||||
# Close issues and pull requests
|
|
||||||
close: true
|
|
||||||
|
|
||||||
# Lock issues and pull requests
|
|
||||||
lock: true
|
|
||||||
|
|
||||||
# Optionally, specify configuration settings just for `issues` or `pulls`
|
|
||||||
issues:
|
|
||||||
comment: |
|
|
||||||
Thank you for your interest in the libvirt project.
|
|
||||||
|
|
||||||
Since this repository is a read-only mirror of the project's master repostory hosted on GitLab, issues opened here are not processed.
|
|
||||||
|
|
||||||
We kindly request that new issues are reported to
|
|
||||||
|
|
||||||
https://gitlab.com/libvirt/libvirt/-/issues/new
|
|
||||||
|
|
||||||
Thank you for your time and understanding.
|
|
||||||
|
|
||||||
pulls:
|
|
||||||
comment: |
|
|
||||||
Thank you for your interest in the libvirt project.
|
|
||||||
|
|
||||||
Since this repository is a read-only mirror of the project's master repostory hosted on GitLab, merge requests opened here are not processed.
|
|
||||||
|
|
||||||
We kindly request that contributors fork the project at
|
|
||||||
|
|
||||||
https://gitlab.com/libvirt/libvirt/
|
|
||||||
|
|
||||||
push changes to the fork, and then open a new merge request at
|
|
||||||
|
|
||||||
https://gitlab.com/libvirt/libvirt/-/merge_requests/new
|
|
||||||
|
|
||||||
Thank you for your time and understanding.
|
|
225
.gitignore
vendored
225
.gitignore
vendored
@@ -1,26 +1,211 @@
|
|||||||
# vim related ignores
|
|
||||||
*.swp
|
|
||||||
.lvimrc
|
|
||||||
|
|
||||||
# emacs related ignores
|
|
||||||
*#*#
|
*#*#
|
||||||
*.#*#
|
*.#*#
|
||||||
.#*
|
*.[18]
|
||||||
*~
|
*.[18].in
|
||||||
|
*.a
|
||||||
# git related ignores
|
*.cov
|
||||||
*.rej
|
*.exe
|
||||||
|
*.exe.manifest
|
||||||
|
*.gcda
|
||||||
|
*.gcno
|
||||||
|
*.gcov
|
||||||
|
*.html
|
||||||
|
*.i
|
||||||
|
*.init
|
||||||
|
*.la
|
||||||
|
*.lo
|
||||||
|
*.loT
|
||||||
|
*.o
|
||||||
*.orig
|
*.orig
|
||||||
|
*.pem
|
||||||
|
*.pyc
|
||||||
|
*.rej
|
||||||
|
*.s
|
||||||
|
*.service
|
||||||
|
*.socket
|
||||||
|
*.swp
|
||||||
|
*~
|
||||||
|
.#*
|
||||||
|
.deps
|
||||||
|
.dirstamp
|
||||||
|
.gdb_history
|
||||||
|
.git
|
||||||
.git-module-status
|
.git-module-status
|
||||||
|
.libs
|
||||||
# python related ignores
|
.lvimrc
|
||||||
__pycache__/
|
.memdump
|
||||||
|
.sc-start-sc_*
|
||||||
# libvirt related ignores
|
/ABOUT-NLS
|
||||||
|
/AUTHORS
|
||||||
|
/ChangeLog
|
||||||
|
/GNUmakefile
|
||||||
|
/INSTALL
|
||||||
|
/NEWS
|
||||||
|
/aclocal.m4
|
||||||
|
/autom4te.cache
|
||||||
|
/build-aux/
|
||||||
/build/
|
/build/
|
||||||
/ci/scratch/
|
/confdefs.h
|
||||||
|
/config.cache
|
||||||
|
/config.guess
|
||||||
|
/config.h
|
||||||
|
/config.h.in
|
||||||
|
/config.log
|
||||||
|
/config.rpath
|
||||||
|
/config.status
|
||||||
|
/config.sub
|
||||||
|
/configure
|
||||||
|
/configure.lineno
|
||||||
|
/conftest.*
|
||||||
|
/daemon/*_dispatch.h
|
||||||
|
/daemon/libvirt_qemud
|
||||||
|
/daemon/libvirtd
|
||||||
|
/daemon/libvirtd*.logrotate
|
||||||
|
/daemon/libvirtd.policy
|
||||||
|
/daemon/test_libvirtd.aug
|
||||||
|
/docs/aclperms.htmlinc
|
||||||
|
/docs/apibuild.py.stamp
|
||||||
|
/docs/devhelp/libvirt.devhelp
|
||||||
|
/docs/hvsupport.html.in
|
||||||
|
/docs/libvirt-admin-*.xml
|
||||||
|
/docs/libvirt-api.xml
|
||||||
|
/docs/libvirt-lxc-*.xml
|
||||||
|
/docs/libvirt-qemu-*.xml
|
||||||
|
/docs/libvirt-refs.xml
|
||||||
|
/docs/search.php
|
||||||
|
/docs/todo.html.in
|
||||||
|
/examples/admin/client_close
|
||||||
|
/examples/admin/client_info
|
||||||
|
/examples/admin/client_limits
|
||||||
|
/examples/admin/list_clients
|
||||||
|
/examples/admin/list_servers
|
||||||
|
/examples/admin/threadpool_params
|
||||||
|
/examples/object-events/event-test
|
||||||
|
/examples/dominfo/info1
|
||||||
|
/examples/domsuspend/suspend
|
||||||
|
/examples/dommigrate/dommigrate
|
||||||
|
/examples/domtop/domtop
|
||||||
|
/examples/hellolibvirt/hellolibvirt
|
||||||
|
/examples/openauth/openauth
|
||||||
|
/examples/rename/rename
|
||||||
|
/gnulib/lib/*
|
||||||
|
/gnulib/m4/*
|
||||||
|
/gnulib/tests/*
|
||||||
|
/include/libvirt/libvirt-common.h
|
||||||
|
/libtool
|
||||||
|
/libvirt-*.tar.xz
|
||||||
|
/libvirt-[0-9]*
|
||||||
|
/libvirt*.pc
|
||||||
|
/libvirt.spec
|
||||||
|
/ltconfig
|
||||||
|
/ltmain.sh
|
||||||
|
/m4/*
|
||||||
|
/maint.mk
|
||||||
|
/mingw-libvirt.spec
|
||||||
|
/mkinstalldirs
|
||||||
|
/po/*
|
||||||
|
/proxy/
|
||||||
|
/python/
|
||||||
|
/run
|
||||||
|
/sc_*
|
||||||
|
/src/.*.stamp
|
||||||
|
/src/*.pc
|
||||||
|
/src/access/org.libvirt.api.policy
|
||||||
|
/src/access/viraccessapicheck.c
|
||||||
|
/src/access/viraccessapicheck.h
|
||||||
|
/src/access/viraccessapichecklxc.c
|
||||||
|
/src/access/viraccessapichecklxc.h
|
||||||
|
/src/access/viraccessapicheckqemu.c
|
||||||
|
/src/access/viraccessapicheckqemu.h
|
||||||
|
/src/admin/admin_client.h
|
||||||
|
/src/admin/admin_protocol.[ch]
|
||||||
|
/src/esx/*.generated.*
|
||||||
|
/src/hyperv/*.generated.*
|
||||||
|
/src/libvirt*.def
|
||||||
|
/src/libvirt.syms
|
||||||
|
/src/libvirt_access.syms
|
||||||
|
/src/libvirt_access.xml
|
||||||
|
/src/libvirt_access_lxc.syms
|
||||||
|
/src/libvirt_access_lxc.xml
|
||||||
|
/src/libvirt_access_qemu.syms
|
||||||
|
/src/libvirt_access_qemu.xml
|
||||||
|
/src/libvirt_admin.syms
|
||||||
|
/src/libvirt_*.stp
|
||||||
|
/src/libvirt_*helper
|
||||||
|
/src/libvirt_*probes.h
|
||||||
|
/src/libvirt_lxc
|
||||||
|
/src/locking/libxl-lockd.conf
|
||||||
|
/src/locking/libxl-sanlock.conf
|
||||||
|
/src/locking/lock_daemon_dispatch_stubs.h
|
||||||
|
/src/locking/lock_protocol.[ch]
|
||||||
|
/src/locking/qemu-lockd.conf
|
||||||
|
/src/locking/qemu-sanlock.conf
|
||||||
|
/src/locking/test_libvirt_sanlock.aug
|
||||||
|
/src/logging/log_daemon_dispatch_stubs.h
|
||||||
|
/src/logging/log_protocol.[ch]
|
||||||
|
/src/lxc/lxc_controller_dispatch.h
|
||||||
|
/src/lxc/lxc_monitor_dispatch.h
|
||||||
|
/src/lxc/lxc_monitor_protocol.c
|
||||||
|
/src/lxc/lxc_monitor_protocol.h
|
||||||
|
/src/lxc/lxc_protocol.[ch]
|
||||||
|
/src/lxc/test_libvirtd_lxc.aug
|
||||||
|
/src/qemu/test_libvirtd_qemu.aug
|
||||||
|
/src/remote/*_client_bodies.h
|
||||||
|
/src/remote/*_protocol.[ch]
|
||||||
|
/src/rpc/virkeepaliveprotocol.[ch]
|
||||||
|
/src/rpc/virnetprotocol.[ch]
|
||||||
|
/src/test_libvirt*.aug
|
||||||
|
/src/test_virtlockd.aug
|
||||||
|
/src/test_virtlogd.aug
|
||||||
|
/src/util/virkeymaps.h
|
||||||
|
/src/virt-aa-helper
|
||||||
|
/src/virtlockd
|
||||||
|
/src/virtlogd
|
||||||
|
/tests/*.log
|
||||||
|
/tests/*.pid
|
||||||
|
/tests/*.trs
|
||||||
|
/tests/*test
|
||||||
|
/tests/commandhelper
|
||||||
|
/tests/qemucapsprobe
|
||||||
|
!/tests/virsh-self-test
|
||||||
|
!/tests/virt-aa-helper-test
|
||||||
|
/tests/objectlocking
|
||||||
|
/tests/objectlocking-files.txt
|
||||||
|
/tests/objectlocking.cm[ix]
|
||||||
|
/tests/reconnect
|
||||||
|
/tests/ssh
|
||||||
|
/tests/test_file_access.txt
|
||||||
|
/tests/test_conf
|
||||||
|
/tools/libvirt-guests.sh
|
||||||
|
/tools/virt-login-shell
|
||||||
|
/tools/virsh
|
||||||
|
/tools/virsh-*-edit.c
|
||||||
|
/tools/virt-admin
|
||||||
|
/tools/virt-*-validate
|
||||||
|
/tools/virt-sanlock-cleanup
|
||||||
|
/tools/wireshark/src/plugin.c
|
||||||
|
/tools/wireshark/src/libvirt
|
||||||
|
/update.log
|
||||||
|
GPATH
|
||||||
|
GRTAGS
|
||||||
|
GTAGS
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
TAGS
|
||||||
|
coverage
|
||||||
|
cscope.files
|
||||||
|
cscope.in.out
|
||||||
|
cscope.out
|
||||||
|
cscope.po.out
|
||||||
|
results.log
|
||||||
|
stamp-h
|
||||||
|
stamp-h.in
|
||||||
|
stamp-h1
|
||||||
tags
|
tags
|
||||||
|
!/build-aux/*.pl
|
||||||
# clangd related ignores
|
!/gnulib/lib/Makefile.am
|
||||||
.clangd
|
!/gnulib/tests/Makefile.am
|
||||||
compile_commands.json
|
!/m4/virt-*.m4
|
||||||
|
!/po/*.po
|
||||||
|
!/po/POTFILES.in
|
||||||
|
!/po/libvirt.pot
|
||||||
|
655
.gitlab-ci.yml
655
.gitlab-ci.yml
@@ -1,655 +0,0 @@
|
|||||||
variables:
|
|
||||||
GIT_DEPTH: 100
|
|
||||||
|
|
||||||
stages:
|
|
||||||
- containers
|
|
||||||
- builds
|
|
||||||
- sanity_checks
|
|
||||||
|
|
||||||
.script_variables: &script_variables |
|
|
||||||
export CCACHE_BASEDIR="$(pwd)"
|
|
||||||
export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
|
|
||||||
export CCACHE_MAXSIZE="500M"
|
|
||||||
export PATH="$CCACHE_WRAPPERSDIR:$PATH"
|
|
||||||
export VIR_TEST_VERBOSE="1"
|
|
||||||
export VIR_TEST_DEBUG="1"
|
|
||||||
|
|
||||||
# Common templates
|
|
||||||
|
|
||||||
.container_job:
|
|
||||||
image: docker:stable
|
|
||||||
stage: containers
|
|
||||||
needs: []
|
|
||||||
services:
|
|
||||||
- docker:dind
|
|
||||||
rules:
|
|
||||||
- if: "$TEMPORARILY_DISABLED"
|
|
||||||
allow_failure: true
|
|
||||||
- when: on_success
|
|
||||||
before_script:
|
|
||||||
- export TAG="$CI_REGISTRY_IMAGE/ci-$NAME:latest"
|
|
||||||
- export COMMON_TAG="$CI_REGISTRY/libvirt/libvirt/ci-$NAME:latest"
|
|
||||||
- docker info
|
|
||||||
- docker login registry.gitlab.com -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD"
|
|
||||||
script:
|
|
||||||
- docker pull "$TAG" || docker pull "$COMMON_TAG" || true
|
|
||||||
- docker build --cache-from "$TAG" --cache-from "$COMMON_TAG" --tag "$TAG" -f "ci/containers/$NAME.Dockerfile" ci/containers
|
|
||||||
- docker push "$TAG"
|
|
||||||
after_script:
|
|
||||||
- docker logout
|
|
||||||
|
|
||||||
# We build many containers which can be useful to debug problems but are not
|
|
||||||
# needed for the pipeline itself to complete: those sometimes fail, and when
|
|
||||||
# that happens it's mostly because of temporary issues with Debian sid. We
|
|
||||||
# don't want those failures to affect the overall pipeline status
|
|
||||||
.container_optional_job:
|
|
||||||
extends: .container_job
|
|
||||||
allow_failure: true
|
|
||||||
|
|
||||||
.native_build_job:
|
|
||||||
stage: builds
|
|
||||||
image: $CI_REGISTRY_IMAGE/ci-$NAME:latest
|
|
||||||
rules:
|
|
||||||
- if: "$TEMPORARILY_DISABLED"
|
|
||||||
allow_failure: true
|
|
||||||
- when: on_success
|
|
||||||
cache:
|
|
||||||
paths:
|
|
||||||
- ccache/
|
|
||||||
key: "$CI_JOB_NAME"
|
|
||||||
before_script:
|
|
||||||
- *script_variables
|
|
||||||
script:
|
|
||||||
- meson setup build --werror || (cat build/meson-logs/meson-log.txt && exit 1)
|
|
||||||
- meson dist -C build --no-tests
|
|
||||||
- if test -x /usr/bin/rpmbuild && test "$RPM" != "skip";
|
|
||||||
then
|
|
||||||
rpmbuild --nodeps -ta build/meson-dist/libvirt-*.tar.xz;
|
|
||||||
else
|
|
||||||
meson compile -C build;
|
|
||||||
meson test -C build --no-suite syntax-check --print-errorlogs;
|
|
||||||
fi
|
|
||||||
|
|
||||||
.sanitizer_build_job:
|
|
||||||
stage: builds
|
|
||||||
image: $CI_REGISTRY_IMAGE/ci-ubuntu-2004:latest
|
|
||||||
needs:
|
|
||||||
- x64-ubuntu-2004-container
|
|
||||||
rules:
|
|
||||||
- if: "$TEMPORARILY_DISABLED"
|
|
||||||
allow_failure: true
|
|
||||||
- when: on_success
|
|
||||||
cache:
|
|
||||||
paths:
|
|
||||||
- ccache/
|
|
||||||
key: "$CI_JOB_NAME"
|
|
||||||
before_script:
|
|
||||||
- *script_variables
|
|
||||||
script:
|
|
||||||
- meson build --werror -Ddocs=disabled -Db_lundef=false -Db_sanitize="$SANITIZER"
|
|
||||||
- ninja -C build;
|
|
||||||
- ninja -C build test;
|
|
||||||
variables:
|
|
||||||
UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1
|
|
||||||
|
|
||||||
# Jobs that we delegate to Cirrus CI because they require an operating
|
|
||||||
# system other than Linux. These jobs will only run if the required
|
|
||||||
# setup has been performed on the GitLab account (see ci/README.rst).
|
|
||||||
#
|
|
||||||
# The Cirrus CI configuration is generated by replacing target-specific
|
|
||||||
# variables in a generic template: some of these variables are provided
|
|
||||||
# when the GitLab CI job is defined, others are taken from a shell
|
|
||||||
# snippet generated using lcitool.
|
|
||||||
#
|
|
||||||
# Note that the $PATH environment variable has to be treated with
|
|
||||||
# special care, because we can't just override it at the GitLab CI job
|
|
||||||
# definition level or we risk breaking it completely.
|
|
||||||
.cirrus_build_job:
|
|
||||||
stage: builds
|
|
||||||
image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
|
|
||||||
needs: []
|
|
||||||
script:
|
|
||||||
- source ci/cirrus/$NAME.vars
|
|
||||||
- sed -e "s|[@]CI_REPOSITORY_URL@|$CI_REPOSITORY_URL|g"
|
|
||||||
-e "s|[@]CI_COMMIT_REF_NAME@|$CI_COMMIT_REF_NAME|g"
|
|
||||||
-e "s|[@]CI_COMMIT_SHA@|$CI_COMMIT_SHA|g"
|
|
||||||
-e "s|[@]CIRRUS_VM_INSTANCE_TYPE@|$CIRRUS_VM_INSTANCE_TYPE|g"
|
|
||||||
-e "s|[@]CIRRUS_VM_IMAGE_SELECTOR@|$CIRRUS_VM_IMAGE_SELECTOR|g"
|
|
||||||
-e "s|[@]CIRRUS_VM_IMAGE_NAME@|$CIRRUS_VM_IMAGE_NAME|g"
|
|
||||||
-e "s|[@]UPDATE_COMMAND@|$UPDATE_COMMAND|g"
|
|
||||||
-e "s|[@]UPGRADE_COMMAND@|$UPGRADE_COMMAND|g"
|
|
||||||
-e "s|[@]INSTALL_COMMAND@|$INSTALL_COMMAND|g"
|
|
||||||
-e "s|[@]PATH@|$PATH_EXTRA${PATH_EXTRA:+:}\$PATH|g"
|
|
||||||
-e "s|[@]PKG_CONFIG_PATH@|$PKG_CONFIG_PATH|g"
|
|
||||||
-e "s|[@]PKGS@|$PKGS|g"
|
|
||||||
-e "s|[@]MAKE@|$MAKE|g"
|
|
||||||
-e "s|[@]PYTHON@|$PYTHON|g"
|
|
||||||
-e "s|[@]PIP3@|$PIP3|g"
|
|
||||||
-e "s|[@]PYPI_PKGS@|$PYPI_PKGS|g"
|
|
||||||
<ci/cirrus/build.yml >ci/cirrus/$NAME.yml
|
|
||||||
- cat ci/cirrus/$NAME.yml
|
|
||||||
- cirrus-run -v --show-build-log always ci/cirrus/$NAME.yml
|
|
||||||
rules:
|
|
||||||
- if: "$TEMPORARILY_DISABLED"
|
|
||||||
allow_failure: true
|
|
||||||
- if: "$CIRRUS_GITHUB_REPO && $CIRRUS_API_TOKEN"
|
|
||||||
|
|
||||||
.cross_build_job:
|
|
||||||
stage: builds
|
|
||||||
image: $CI_REGISTRY_IMAGE/ci-$NAME-cross-$CROSS:latest
|
|
||||||
cache:
|
|
||||||
paths:
|
|
||||||
- ccache/
|
|
||||||
key: "$CI_JOB_NAME"
|
|
||||||
rules:
|
|
||||||
- if: "$TEMPORARILY_DISABLED"
|
|
||||||
allow_failure: true
|
|
||||||
- when: on_success
|
|
||||||
before_script:
|
|
||||||
- *script_variables
|
|
||||||
script:
|
|
||||||
- meson setup build --werror $MESON_OPTS || (cat build/meson-logs/meson-log.txt && exit 1)
|
|
||||||
- meson compile -C build
|
|
||||||
- if test "$CROSS" = "i686" ; then meson test -C build --no-suite syntax-check --print-errorlogs ; fi
|
|
||||||
|
|
||||||
|
|
||||||
# Native container build jobs
|
|
||||||
|
|
||||||
x64-centos-8-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: centos-8
|
|
||||||
|
|
||||||
x64-centos-stream-8-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: centos-stream-8
|
|
||||||
|
|
||||||
x64-debian-10-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-10
|
|
||||||
|
|
||||||
x64-debian-sid-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-sid
|
|
||||||
|
|
||||||
x64-fedora-33-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: fedora-33
|
|
||||||
|
|
||||||
x64-fedora-34-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: fedora-34
|
|
||||||
|
|
||||||
x64-fedora-rawhide-container:
|
|
||||||
extends: .container_optional_job
|
|
||||||
variables:
|
|
||||||
NAME: fedora-rawhide
|
|
||||||
|
|
||||||
x64-opensuse-leap-152-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: opensuse-leap-152
|
|
||||||
|
|
||||||
x64-opensuse-tumbleweed-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: opensuse-tumbleweed
|
|
||||||
|
|
||||||
x64-ubuntu-1804-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: ubuntu-1804
|
|
||||||
|
|
||||||
x64-ubuntu-2004-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: ubuntu-2004
|
|
||||||
|
|
||||||
|
|
||||||
# Cross-build containers build jobs
|
|
||||||
|
|
||||||
aarch64-debian-10-container:
|
|
||||||
extends: .container_optional_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-10-cross-aarch64
|
|
||||||
|
|
||||||
armv6l-debian-10-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-10-cross-armv6l
|
|
||||||
|
|
||||||
armv7l-debian-10-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-10-cross-armv7l
|
|
||||||
|
|
||||||
i686-debian-10-container:
|
|
||||||
extends: .container_optional_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-10-cross-i686
|
|
||||||
|
|
||||||
mips-debian-10-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-10-cross-mips
|
|
||||||
|
|
||||||
mips64el-debian-10-container:
|
|
||||||
extends: .container_optional_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-10-cross-mips64el
|
|
||||||
|
|
||||||
mipsel-debian-10-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-10-cross-mipsel
|
|
||||||
|
|
||||||
ppc64le-debian-10-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-10-cross-ppc64le
|
|
||||||
|
|
||||||
s390x-debian-10-container:
|
|
||||||
extends: .container_optional_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-10-cross-s390x
|
|
||||||
|
|
||||||
aarch64-debian-sid-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-sid-cross-aarch64
|
|
||||||
|
|
||||||
armv6l-debian-sid-container:
|
|
||||||
extends: .container_optional_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-sid-cross-armv6l
|
|
||||||
|
|
||||||
armv7l-debian-sid-container:
|
|
||||||
extends: .container_optional_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-sid-cross-armv7l
|
|
||||||
|
|
||||||
i686-debian-sid-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-sid-cross-i686
|
|
||||||
|
|
||||||
mips64el-debian-sid-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-sid-cross-mips64el
|
|
||||||
|
|
||||||
mipsel-debian-sid-container:
|
|
||||||
extends: .container_optional_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-sid-cross-mipsel
|
|
||||||
|
|
||||||
ppc64le-debian-sid-container:
|
|
||||||
extends: .container_optional_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-sid-cross-ppc64le
|
|
||||||
|
|
||||||
s390x-debian-sid-container:
|
|
||||||
extends: .container_job
|
|
||||||
variables:
|
|
||||||
NAME: debian-sid-cross-s390x
|
|
||||||
|
|
||||||
mingw32-fedora-rawhide-container:
|
|
||||||
extends: .container_optional_job
|
|
||||||
variables:
|
|
||||||
NAME: fedora-rawhide-cross-mingw32
|
|
||||||
|
|
||||||
mingw64-fedora-rawhide-container:
|
|
||||||
extends: .container_optional_job
|
|
||||||
variables:
|
|
||||||
NAME: fedora-rawhide-cross-mingw64
|
|
||||||
|
|
||||||
|
|
||||||
# Native architecture build + test jobs
|
|
||||||
|
|
||||||
x64-debian-10:
|
|
||||||
extends: .native_build_job
|
|
||||||
needs:
|
|
||||||
- x64-debian-10-container
|
|
||||||
variables:
|
|
||||||
NAME: debian-10
|
|
||||||
|
|
||||||
x64-debian-10-clang:
|
|
||||||
extends: .native_build_job
|
|
||||||
needs:
|
|
||||||
- x64-debian-10-container
|
|
||||||
variables:
|
|
||||||
NAME: debian-10
|
|
||||||
CC: clang
|
|
||||||
|
|
||||||
x64-debian-sid:
|
|
||||||
extends: .native_build_job
|
|
||||||
needs:
|
|
||||||
- x64-debian-sid-container
|
|
||||||
variables:
|
|
||||||
NAME: debian-sid
|
|
||||||
|
|
||||||
x64-centos-8:
|
|
||||||
extends: .native_build_job
|
|
||||||
needs:
|
|
||||||
- x64-centos-8-container
|
|
||||||
variables:
|
|
||||||
NAME: centos-8
|
|
||||||
RPM: skip
|
|
||||||
|
|
||||||
x64-centos-8-clang:
|
|
||||||
extends: .native_build_job
|
|
||||||
needs:
|
|
||||||
- x64-centos-8-container
|
|
||||||
variables:
|
|
||||||
NAME: centos-8
|
|
||||||
CC: clang
|
|
||||||
RPM: skip
|
|
||||||
|
|
||||||
x64-centos-stream-8:
|
|
||||||
extends: .native_build_job
|
|
||||||
needs:
|
|
||||||
- x64-centos-stream-8-container
|
|
||||||
variables:
|
|
||||||
NAME: centos-stream-8
|
|
||||||
RPM: skip
|
|
||||||
|
|
||||||
x64-fedora-33:
|
|
||||||
extends: .native_build_job
|
|
||||||
needs:
|
|
||||||
- x64-fedora-33-container
|
|
||||||
variables:
|
|
||||||
NAME: fedora-33
|
|
||||||
|
|
||||||
x64-fedora-34:
|
|
||||||
extends: .native_build_job
|
|
||||||
needs:
|
|
||||||
- x64-fedora-34-container
|
|
||||||
variables:
|
|
||||||
NAME: fedora-34
|
|
||||||
|
|
||||||
x64-fedora-rawhide:
|
|
||||||
extends: .native_build_job
|
|
||||||
needs:
|
|
||||||
- x64-fedora-rawhide-container
|
|
||||||
variables:
|
|
||||||
NAME: fedora-rawhide
|
|
||||||
|
|
||||||
x64-fedora-rawhide-clang:
|
|
||||||
extends: .native_build_job
|
|
||||||
needs:
|
|
||||||
- x64-fedora-rawhide-container
|
|
||||||
variables:
|
|
||||||
NAME: fedora-rawhide
|
|
||||||
CC: clang
|
|
||||||
RPM: skip
|
|
||||||
|
|
||||||
x64-opensuse-leap-152:
|
|
||||||
extends: .native_build_job
|
|
||||||
needs:
|
|
||||||
- x64-opensuse-leap-152-container
|
|
||||||
variables:
|
|
||||||
NAME: opensuse-leap-152
|
|
||||||
RPM: skip
|
|
||||||
|
|
||||||
x64-opensuse-tumbleweed:
|
|
||||||
extends: .native_build_job
|
|
||||||
needs:
|
|
||||||
- x64-opensuse-tumbleweed-container
|
|
||||||
variables:
|
|
||||||
NAME: opensuse-tumbleweed
|
|
||||||
RPM: skip
|
|
||||||
|
|
||||||
x64-ubuntu-1804:
|
|
||||||
extends: .native_build_job
|
|
||||||
needs:
|
|
||||||
- x64-ubuntu-1804-container
|
|
||||||
variables:
|
|
||||||
NAME: ubuntu-1804
|
|
||||||
|
|
||||||
x64-ubuntu-2004:
|
|
||||||
extends: .native_build_job
|
|
||||||
needs:
|
|
||||||
- x64-ubuntu-2004-container
|
|
||||||
variables:
|
|
||||||
NAME: ubuntu-2004
|
|
||||||
|
|
||||||
x64-freebsd-12-build:
|
|
||||||
extends: .cirrus_build_job
|
|
||||||
variables:
|
|
||||||
NAME: freebsd-12
|
|
||||||
CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
|
|
||||||
CIRRUS_VM_IMAGE_SELECTOR: image_family
|
|
||||||
CIRRUS_VM_IMAGE_NAME: freebsd-12-2
|
|
||||||
UPDATE_COMMAND: pkg update
|
|
||||||
UPGRADE_COMMAND: pkg upgrade -y
|
|
||||||
INSTALL_COMMAND: pkg install -y
|
|
||||||
|
|
||||||
x64-freebsd-13-build:
|
|
||||||
extends: .cirrus_build_job
|
|
||||||
variables:
|
|
||||||
NAME: freebsd-13
|
|
||||||
CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
|
|
||||||
CIRRUS_VM_IMAGE_SELECTOR: image_family
|
|
||||||
CIRRUS_VM_IMAGE_NAME: freebsd-13-0
|
|
||||||
UPDATE_COMMAND: pkg update
|
|
||||||
UPGRADE_COMMAND: pkg upgrade -y
|
|
||||||
INSTALL_COMMAND: pkg install -y
|
|
||||||
|
|
||||||
x64-macos-11-build:
|
|
||||||
extends: .cirrus_build_job
|
|
||||||
variables:
|
|
||||||
NAME: macos-11
|
|
||||||
CIRRUS_VM_INSTANCE_TYPE: osx_instance
|
|
||||||
CIRRUS_VM_IMAGE_SELECTOR: image
|
|
||||||
CIRRUS_VM_IMAGE_NAME: big-sur-base
|
|
||||||
UPDATE_COMMAND: brew update
|
|
||||||
UPGRADE_COMMAND: brew upgrade
|
|
||||||
INSTALL_COMMAND: brew install
|
|
||||||
PATH_EXTRA: /usr/local/opt/ccache/libexec:/usr/local/opt/gettext/bin:/usr/local/opt/libpcap/bin:/usr/local/opt/libxslt/bin:/usr/local/opt/rpcgen/bin
|
|
||||||
PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/libpcap/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig:/usr/local/opt/ncurses/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig
|
|
||||||
|
|
||||||
|
|
||||||
# Cross compiled build jobs
|
|
||||||
|
|
||||||
aarch64-debian-sid:
|
|
||||||
extends: .cross_build_job
|
|
||||||
needs:
|
|
||||||
- aarch64-debian-sid-container
|
|
||||||
variables:
|
|
||||||
NAME: debian-sid
|
|
||||||
CROSS: aarch64
|
|
||||||
|
|
||||||
armv6l-debian-10:
|
|
||||||
extends: .cross_build_job
|
|
||||||
needs:
|
|
||||||
- armv6l-debian-10-container
|
|
||||||
variables:
|
|
||||||
NAME: debian-10
|
|
||||||
CROSS: armv6l
|
|
||||||
|
|
||||||
armv7l-debian-10:
|
|
||||||
extends: .cross_build_job
|
|
||||||
needs:
|
|
||||||
- armv7l-debian-10-container
|
|
||||||
variables:
|
|
||||||
NAME: debian-10
|
|
||||||
CROSS: armv7l
|
|
||||||
|
|
||||||
i686-debian-sid:
|
|
||||||
extends: .cross_build_job
|
|
||||||
needs:
|
|
||||||
- i686-debian-sid-container
|
|
||||||
variables:
|
|
||||||
NAME: debian-sid
|
|
||||||
CROSS: i686
|
|
||||||
|
|
||||||
mips-debian-10:
|
|
||||||
extends: .cross_build_job
|
|
||||||
needs:
|
|
||||||
- mips-debian-10-container
|
|
||||||
variables:
|
|
||||||
NAME: debian-10
|
|
||||||
CROSS: mips
|
|
||||||
|
|
||||||
mips64el-debian-sid:
|
|
||||||
extends: .cross_build_job
|
|
||||||
needs:
|
|
||||||
- mips64el-debian-sid-container
|
|
||||||
variables:
|
|
||||||
NAME: debian-sid
|
|
||||||
CROSS: mips64el
|
|
||||||
|
|
||||||
mipsel-debian-10:
|
|
||||||
extends: .cross_build_job
|
|
||||||
needs:
|
|
||||||
- mipsel-debian-10-container
|
|
||||||
variables:
|
|
||||||
NAME: debian-10
|
|
||||||
CROSS: mipsel
|
|
||||||
|
|
||||||
ppc64le-debian-10:
|
|
||||||
extends: .cross_build_job
|
|
||||||
needs:
|
|
||||||
- ppc64le-debian-10-container
|
|
||||||
variables:
|
|
||||||
NAME: debian-10
|
|
||||||
CROSS: ppc64le
|
|
||||||
|
|
||||||
s390x-debian-sid:
|
|
||||||
extends: .cross_build_job
|
|
||||||
needs:
|
|
||||||
- s390x-debian-sid-container
|
|
||||||
variables:
|
|
||||||
NAME: debian-sid
|
|
||||||
CROSS: s390x
|
|
||||||
|
|
||||||
mingw32-fedora-rawhide:
|
|
||||||
extends: .cross_build_job
|
|
||||||
needs:
|
|
||||||
- mingw32-fedora-rawhide-container
|
|
||||||
variables:
|
|
||||||
NAME: fedora-rawhide
|
|
||||||
CROSS: mingw32
|
|
||||||
|
|
||||||
mingw64-fedora-rawhide:
|
|
||||||
extends: .cross_build_job
|
|
||||||
needs:
|
|
||||||
- mingw64-fedora-rawhide-container
|
|
||||||
variables:
|
|
||||||
NAME: fedora-rawhide
|
|
||||||
CROSS: mingw64
|
|
||||||
|
|
||||||
# Sanitizers
|
|
||||||
|
|
||||||
sanitize-gcc:
|
|
||||||
extends: .sanitizer_build_job
|
|
||||||
variables:
|
|
||||||
ASAN_OPTIONS: verify_asan_link_order=0
|
|
||||||
CC: gcc
|
|
||||||
SANITIZER: address,undefined
|
|
||||||
|
|
||||||
sanitize-clang:
|
|
||||||
extends: .sanitizer_build_job
|
|
||||||
variables:
|
|
||||||
CC: clang
|
|
||||||
SANITIZER: address,undefined
|
|
||||||
|
|
||||||
|
|
||||||
# This artifact published by this job is downloaded by libvirt.org to
|
|
||||||
# be deployed to the web root:
|
|
||||||
# https://gitlab.com/libvirt/libvirt/-/jobs/artifacts/master/download?job=website
|
|
||||||
website:
|
|
||||||
stage: builds
|
|
||||||
image: $CI_REGISTRY_IMAGE/ci-centos-8:latest
|
|
||||||
needs:
|
|
||||||
- x64-centos-8-container
|
|
||||||
before_script:
|
|
||||||
- *script_variables
|
|
||||||
script:
|
|
||||||
- meson setup build --werror --prefix=$(pwd)/vroot || (cat build/meson-logs/meson-log.txt && exit 1)
|
|
||||||
- ninja -C build install-web
|
|
||||||
- mv vroot/share/doc/libvirt/html/ website
|
|
||||||
artifacts:
|
|
||||||
expose_as: 'Website'
|
|
||||||
name: 'website'
|
|
||||||
when: on_success
|
|
||||||
expire_in: 30 days
|
|
||||||
paths:
|
|
||||||
- website
|
|
||||||
|
|
||||||
|
|
||||||
codestyle:
|
|
||||||
stage: builds
|
|
||||||
image: $CI_REGISTRY_IMAGE/ci-opensuse-leap-152:latest
|
|
||||||
needs:
|
|
||||||
- x64-opensuse-leap-152-container
|
|
||||||
before_script:
|
|
||||||
- *script_variables
|
|
||||||
script:
|
|
||||||
- meson setup build --werror || (cat build/meson-logs/meson-log.txt && exit 1)
|
|
||||||
- ninja -C build libvirt-pot-dep
|
|
||||||
- meson test -C build --suite syntax-check --no-rebuild --print-errorlogs
|
|
||||||
|
|
||||||
|
|
||||||
# This artifact published by this job is downloaded to push to Weblate
|
|
||||||
# for translation usage:
|
|
||||||
# https://gitlab.com/libvirt/libvirt/-/jobs/artifacts/master/download?job=potfile
|
|
||||||
potfile:
|
|
||||||
stage: builds
|
|
||||||
image: $CI_REGISTRY_IMAGE/ci-centos-8:latest
|
|
||||||
needs:
|
|
||||||
- x64-centos-8-container
|
|
||||||
rules:
|
|
||||||
- if: "$CI_COMMIT_BRANCH == 'master'"
|
|
||||||
before_script:
|
|
||||||
- *script_variables
|
|
||||||
script:
|
|
||||||
- meson setup build --werror || (cat build/meson-logs/meson-log.txt && exit 1)
|
|
||||||
- ninja -C build libvirt-pot-dep
|
|
||||||
- ninja -C build libvirt-pot
|
|
||||||
- cp po/libvirt.pot libvirt.pot
|
|
||||||
artifacts:
|
|
||||||
expose_as: 'Potfile'
|
|
||||||
name: 'potfile'
|
|
||||||
when: on_success
|
|
||||||
expire_in: 30 days
|
|
||||||
paths:
|
|
||||||
- libvirt.pot
|
|
||||||
|
|
||||||
|
|
||||||
# Check that all commits are signed-off for the DCO.
|
|
||||||
# Skip on "libvirt" namespace, since we only need to run
|
|
||||||
# this test on developer's personal forks from which
|
|
||||||
# merge requests are submitted
|
|
||||||
check-dco:
|
|
||||||
stage: sanity_checks
|
|
||||||
needs: []
|
|
||||||
image: registry.gitlab.com/libvirt/libvirt-ci/check-dco:master
|
|
||||||
script:
|
|
||||||
- /check-dco
|
|
||||||
rules:
|
|
||||||
- if: "$CI_PROJECT_NAMESPACE != 'libvirt'"
|
|
||||||
variables:
|
|
||||||
GIT_DEPTH: 1000
|
|
||||||
|
|
||||||
|
|
||||||
# Coverity job that is run only by schedules
|
|
||||||
coverity:
|
|
||||||
image: $CI_REGISTRY_IMAGE/ci-centos-8:latest
|
|
||||||
needs:
|
|
||||||
- x64-centos-8-container
|
|
||||||
stage: builds
|
|
||||||
script:
|
|
||||||
- curl https://scan.coverity.com/download/linux64 --form project=$COVERITY_SCAN_PROJECT_NAME --form token=$COVERITY_SCAN_TOKEN -o /tmp/cov-analysis-linux64.tgz
|
|
||||||
- tar xfz /tmp/cov-analysis-linux64.tgz
|
|
||||||
- meson setup build --werror || (cat build/meson-logs/meson-log.txt && exit 1)
|
|
||||||
- cov-analysis-linux64-*/bin/cov-build --dir cov-int meson compile -C build
|
|
||||||
- tar cfz cov-int.tar.gz cov-int
|
|
||||||
- curl https://scan.coverity.com/builds?project=$COVERITY_SCAN_PROJECT_NAME --form token=$COVERITY_SCAN_TOKEN --form email=$GITLAB_USER_EMAIL --form file=@cov-int.tar.gz --form version="$(git describe --tags)" --form description="$(git describe --tags) / $CI_COMMIT_TITLE / $CI_COMMIT_REF_NAME:$CI_PIPELINE_ID"
|
|
||||||
rules:
|
|
||||||
- if: "$CI_PIPELINE_SOURCE == 'schedule' && $COVERITY_SCAN_PROJECT_NAME && $COVERITY_SCAN_TOKEN"
|
|
@@ -1,24 +0,0 @@
|
|||||||
<!-- See https://libvirt.org/bugs.html#quality for guidance -->
|
|
||||||
|
|
||||||
## Software environment
|
|
||||||
- Operating system:
|
|
||||||
- Architecture:
|
|
||||||
- kernel version:
|
|
||||||
- libvirt version:
|
|
||||||
- Hypervisor and version:
|
|
||||||
|
|
||||||
## Description of problem
|
|
||||||
|
|
||||||
## Steps to reproduce
|
|
||||||
1.
|
|
||||||
2.
|
|
||||||
3.
|
|
||||||
|
|
||||||
## Additional information
|
|
||||||
<!-- Attach XML configs, logs, stack traces, etc. Compress the files if necessary -->
|
|
||||||
<!-- See https://libvirt.org/kbase/debuglogs.html on how to configure logging -->
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- The line below ensures that proper tags are added to the issue. -- >
|
|
||||||
/label ~bug
|
|
@@ -1,30 +0,0 @@
|
|||||||
<!--
|
|
||||||
This is the upstream libvirt issue tracker.
|
|
||||||
|
|
||||||
Please note that libvirt, like most open source projects, relies on
|
|
||||||
contributors who have motivation, skills and available time to work on
|
|
||||||
implementing particular features.
|
|
||||||
|
|
||||||
Feature requests can be helpful for determining demand and interest, but
|
|
||||||
they are not a guarantee that a contributor will volunteer to implement
|
|
||||||
it. We welcome and encourage even draft patches to implement a feature
|
|
||||||
be sent to the mailing list where it can be discussed and developed
|
|
||||||
further by the community.
|
|
||||||
|
|
||||||
Thank you for your interest in helping us to make libvirt better!
|
|
||||||
-->
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
<!-- Describe the final result you want to achieve. Avoid design specifics. -->
|
|
||||||
|
|
||||||
|
|
||||||
## Technical details
|
|
||||||
<!-- Describe technical details, design specifics, suggestions, versions, etc. -->
|
|
||||||
|
|
||||||
|
|
||||||
## Additional information
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- The line below ensures that proper tags are added to the issue. -- >
|
|
||||||
/label ~enhancement
|
|
6
.gitmodules
vendored
6
.gitmodules
vendored
@@ -1,3 +1,3 @@
|
|||||||
[submodule "keycodemapdb"]
|
[submodule "gnulib"]
|
||||||
path = src/keycodemapdb
|
path = .gnulib
|
||||||
url = https://gitlab.com/keycodemap/keycodemapdb.git
|
url = git://git.sv.gnu.org/gnulib.git
|
||||||
|
@@ -1,4 +0,0 @@
|
|||||||
[gitpublishprofile "default"]
|
|
||||||
base = master
|
|
||||||
to = libvir-list@redhat.com
|
|
||||||
prefix = libvirt PATCH
|
|
1
.gnulib
Submodule
1
.gnulib
Submodule
Submodule .gnulib added at 246b3b2880
23
.mailmap
23
.mailmap
@@ -20,6 +20,7 @@
|
|||||||
<jfehlig@suse.com> <jfehlig@novell.com>
|
<jfehlig@suse.com> <jfehlig@novell.com>
|
||||||
<jfehlig@suse.com> <jfehlig@linux-ypgk.site>
|
<jfehlig@suse.com> <jfehlig@linux-ypgk.site>
|
||||||
<jclift@redhat.com> <justin@salasaga.org>
|
<jclift@redhat.com> <justin@salasaga.org>
|
||||||
|
<berrange@redhat.com> <dan@berrange.com>
|
||||||
<soren@linux2go.dk> <soren@canonical.com>
|
<soren@linux2go.dk> <soren@canonical.com>
|
||||||
<cfergeau@redhat.com> <teuf@gnome.org>
|
<cfergeau@redhat.com> <teuf@gnome.org>
|
||||||
<wency@cn.fujitsu.com> <wency cn fujitsu com>
|
<wency@cn.fujitsu.com> <wency cn fujitsu com>
|
||||||
@@ -38,16 +39,6 @@
|
|||||||
<zhlcindy@linux.vnet.ibm.com> <zhlcindy@gmail.com>
|
<zhlcindy@linux.vnet.ibm.com> <zhlcindy@gmail.com>
|
||||||
<serge.hallyn@canonical.com> <serue@us.ibm.com>
|
<serge.hallyn@canonical.com> <serue@us.ibm.com>
|
||||||
<pritesh.kothari@sun.com> <Pritesh.Kothari@Sun.COM>
|
<pritesh.kothari@sun.com> <Pritesh.Kothari@Sun.COM>
|
||||||
<cbosdonnat@suse.com> <cedric.bosdonnat@free.fr>
|
|
||||||
<mnestratov@virtuozzo.com> <mnestratov@parallels.com>
|
|
||||||
<nshirokovskiy@virtuozzo.com> <nshirokovskiy@parallels.com>
|
|
||||||
<jyang@redhat.com> <osier@yunify.com>
|
|
||||||
<kkoukiou@redhat.com> <k.koukiou@googlemail.com>
|
|
||||||
<intrigeri@boum.org> <intrigeri+libvirt@boum.org>
|
|
||||||
<fidencio@redhat.com> <fabiano@fidencio.org>
|
|
||||||
<shi_lei@massclouds.com> <shilei.massclouds@gmx.com>
|
|
||||||
<adrian.brzezinski@eo.pl> <redhat@adrb.pl>
|
|
||||||
<matt@datto.com> <mcoleman@datto.com>
|
|
||||||
|
|
||||||
# Name consolidation:
|
# Name consolidation:
|
||||||
# Preferred author spelling <preferred email>
|
# Preferred author spelling <preferred email>
|
||||||
@@ -65,16 +56,8 @@ Aurelien Rougemont <beorn@binaries.fr>
|
|||||||
Serge E. Hallyn <serge.hallyn@canonical.com>
|
Serge E. Hallyn <serge.hallyn@canonical.com>
|
||||||
Henrik Persson E <henrik.e.persson@ericsson.com>
|
Henrik Persson E <henrik.e.persson@ericsson.com>
|
||||||
Philipp Hahn <hahn@univention.de>
|
Philipp Hahn <hahn@univention.de>
|
||||||
|
Marco Bozzolan <bozzolan@gmail.com>
|
||||||
|
Marco Bozzolan <redshift@gmx.com>
|
||||||
Pritesh Kothari <pritesh.kothari@sun.com>
|
Pritesh Kothari <pritesh.kothari@sun.com>
|
||||||
Wang Yufei (James) <james.wangyufei@huawei.com>
|
Wang Yufei (James) <james.wangyufei@huawei.com>
|
||||||
Deepak C Shetty <dpkshetty@gmail.com>
|
Deepak C Shetty <dpkshetty@gmail.com>
|
||||||
Dave Allan <dallan@redhat.com>
|
|
||||||
Richard W.M. Jones <rjones@redhat.com>
|
|
||||||
|
|
||||||
# Non-trivial consolidation:
|
|
||||||
# see git documentation for information about the format
|
|
||||||
Daniel P. Berrangé <berrange@redhat.com>
|
|
||||||
Daniel P. Berrangé <berrange@redhat.com> <dan@berrange.com>
|
|
||||||
Michal Prívozník <mprivozn@redhat.com>
|
|
||||||
Michal Prívozník <mprivozn@redhat.com> <miso.privoznik@gmail.com>
|
|
||||||
Marco Bozzolan <bozzolan@gmail.com> <redshift@gmx.com>
|
|
||||||
|
@@ -1,43 +0,0 @@
|
|||||||
flags = [
|
|
||||||
'-I@abs_top_builddir@',
|
|
||||||
'-I@abs_top_srcdir@',
|
|
||||||
'-I@abs_top_builddir@/include',
|
|
||||||
'-I@abs_top_srcdir@/include',
|
|
||||||
'-I@abs_top_builddir@/src',
|
|
||||||
'-I@abs_top_srcdir@/src',
|
|
||||||
'-I@abs_top_builddir@/src/access',
|
|
||||||
'-I@abs_top_srcdir@/src/access',
|
|
||||||
'-I@abs_top_builddir@/src/admin',
|
|
||||||
'-I@abs_top_srcdir@/src/admin',
|
|
||||||
'-I@abs_top_builddir@/src/bhyve',
|
|
||||||
'-I@abs_top_srcdir@/src/bhyve',
|
|
||||||
'-I@abs_top_builddir@/src/conf',
|
|
||||||
'-I@abs_top_srcdir@/src/conf',
|
|
||||||
'-I@abs_top_builddir@/src/libxl',
|
|
||||||
'-I@abs_top_srcdir@/src/libxl',
|
|
||||||
'-I@abs_top_builddir@/src/locking',
|
|
||||||
'-I@abs_top_srcdir@/src/locking',
|
|
||||||
'-I@abs_top_builddir@/src/logging',
|
|
||||||
'-I@abs_top_srcdir@/src/logging',
|
|
||||||
'-I@abs_top_builddir@/src/lxc',
|
|
||||||
'-I@abs_top_srcdir@/src/lxc',
|
|
||||||
'-I@abs_top_builddir@/src/qemu',
|
|
||||||
'-I@abs_top_srcdir@/src/qemu',
|
|
||||||
'-I@abs_top_builddir@/src/remote',
|
|
||||||
'-I@abs_top_srcdir@/src/remote',
|
|
||||||
'-I@abs_top_builddir@/src/rpc',
|
|
||||||
'-I@abs_top_srcdir@/src/rpc',
|
|
||||||
'-I@abs_top_builddir@/src/secret',
|
|
||||||
'-I@abs_top_srcdir@/src/secret',
|
|
||||||
'-I@abs_top_builddir@/src/security',
|
|
||||||
'-I@abs_top_srcdir@/src/security',
|
|
||||||
'-I@abs_top_builddir@/src/util',
|
|
||||||
'-I@abs_top_srcdir@/src/util',
|
|
||||||
'-I@abs_top_builddir@/src/vmx',
|
|
||||||
'-I@abs_top_srcdir@/src/vmx',
|
|
||||||
'-I@abs_top_builddir@/src/xenconfig',
|
|
||||||
'-I@abs_top_srcdir@/src/xenconfig',
|
|
||||||
]
|
|
||||||
|
|
||||||
def FlagsForFile(filename, **kwargs):
|
|
||||||
return { 'flags': flags, 'do_cache': True }
|
|
101
AUTHORS.in
Normal file
101
AUTHORS.in
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
libvirt Authors
|
||||||
|
===============
|
||||||
|
|
||||||
|
The libvirt project was initiated by:
|
||||||
|
|
||||||
|
Daniel Veillard <veillard@redhat.com> or <daniel@veillard.com>
|
||||||
|
|
||||||
|
The primary maintainers and people with commit access rights:
|
||||||
|
|
||||||
|
Alex Jia <ajia@redhat.com>
|
||||||
|
Andrea Bolognani <abologna@redhat.com>
|
||||||
|
Cédric Bosdonnat <cbosdonnat@suse.com>
|
||||||
|
Christophe Fergeau <cfergeau@redhat.com>
|
||||||
|
Claudio Bley <claudio.bley@gmail.com>
|
||||||
|
Cole Robinson <crobinso@redhat.com>
|
||||||
|
Daniel Berrange <berrange@redhat.com>
|
||||||
|
Daniel Veillard <veillard@redhat.com>
|
||||||
|
Doug Goldstein <cardoe@gentoo.org>
|
||||||
|
Eric Blake <eblake@redhat.com>
|
||||||
|
Erik Skultety <eskultet@redhat.com>
|
||||||
|
Gao Feng <gaofeng@cn.fujitsu.com>
|
||||||
|
Guido Günther <agx@sigxcpu.org>
|
||||||
|
Ján Tomko <jtomko@redhat.com>
|
||||||
|
Jim Fehlig <jfehlig@suse.com>
|
||||||
|
Jiří Denemark <jdenemar@redhat.com>
|
||||||
|
John Ferlan <jferlan@redhat.com>
|
||||||
|
Laine Stump <laine@redhat.com>
|
||||||
|
Mark McLoughlin <markmc@redhat.com>
|
||||||
|
Martin Kletzander <mkletzan@redhat.com>
|
||||||
|
Matthias Bolte <matthias.bolte@googlemail.com>
|
||||||
|
Maxim Nestratov <mnestratov@virtuozzo.com>
|
||||||
|
Michal Prívozník <mprivozn@redhat.com>
|
||||||
|
Pavel Hrdina <phrdina@redhat.com>
|
||||||
|
Peter Krempa <pkrempa@redhat.com>
|
||||||
|
Richard W.M. Jones <rjones@redhat.com>
|
||||||
|
Roman Bogorodskiy <bogorodskiy@gmail.com>
|
||||||
|
Stefan Berger <stefanb@us.ibm.com>
|
||||||
|
Wen Congyang <wency@cn.fujitsu.com>
|
||||||
|
|
||||||
|
Previous maintainers:
|
||||||
|
|
||||||
|
Anthony Liguori <aliguori@us.ibm.com>
|
||||||
|
Atsushi SAKAI <sakaia@jp.fujitsu.com>
|
||||||
|
Chris Lalancette <clalance@redhat.com>
|
||||||
|
Dan Smith <danms@us.ibm.com>
|
||||||
|
Dave Allan <dallan@redhat.com>
|
||||||
|
Dave Leskovec <dlesko@linux.vnet.ibm.com>
|
||||||
|
Dmitry Guryanov <dguryanov@parallels.com>
|
||||||
|
Guannan Ren <gren@redhat.com>
|
||||||
|
Jim Meyering <meyering@redhat.com>
|
||||||
|
John Levon <john.levon@sun.com>
|
||||||
|
Justin Clift <jclift@redhat.com>
|
||||||
|
Karel Zak <kzak@redhat.com>
|
||||||
|
Osier Yang <jyang@redhat.com>
|
||||||
|
|
||||||
|
Patches have also been contributed by:
|
||||||
|
|
||||||
|
Abel Míguez Rodríguez <amiguezr@pdi.ucm.es>
|
||||||
|
Amit Shah <amit.shah@redhat.com>
|
||||||
|
Andrew Puch <apuch@redhat.com>
|
||||||
|
Anton Protopopov <aspsk2@gmail.com>
|
||||||
|
Ben Guthro <ben.guthro@gmail.com>
|
||||||
|
Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
|
||||||
|
Daniel Hokka Zakrisson <daniel@hozac.com>
|
||||||
|
Dan Wendlandt <dan@nicira.com>
|
||||||
|
David Lively <dlively@virtualiron.com>
|
||||||
|
David Lutterkort <dlutter@redhat.com>
|
||||||
|
Evgeniy Sokolov <evg@openvz.org>
|
||||||
|
Hugh Brock <hbrock@redhat.com>
|
||||||
|
Itamar Heim <iheim@redhat.com>
|
||||||
|
James Morris <jmorris@namei.org>
|
||||||
|
Javier Fontan <jfontan@gmail.com>
|
||||||
|
Jeremy Katz <katzj@redhat.com>
|
||||||
|
Kaitlin Rupert <kaitlin@linux.vnet.ibm.com>
|
||||||
|
Kazuki Mizushima <mizushima.kazuk@jp.fujitsu.com>
|
||||||
|
Mads Chr. Olesen <shiyee@shiyee.dk>
|
||||||
|
Mark Johnson <johnson.nh@gmail.com>
|
||||||
|
Markus Armbruster <armbru@redhat.com>
|
||||||
|
Masayuki Sunou <fj1826dm@aa.jp.fujitsu.com>
|
||||||
|
Matthias Witte <witte@netzquadrat.de>
|
||||||
|
Michel Ponceau <michel.ponceau@bull.net>
|
||||||
|
Nobuhiro Itou <fj0873gn@aa.jp.fujitsu.com>
|
||||||
|
Pete Vetere <pvetere@redhat.com>
|
||||||
|
Philippe Berthault <philippe.berthault@Bull.net>
|
||||||
|
Saori Fukuta <fukuta.saori@jp.fujitsu.com>
|
||||||
|
Shigeki Sakamoto <fj0588di@aa.jp.fujitsu.com>
|
||||||
|
Shuveb Hussain <shuveb@binarykarma.com>
|
||||||
|
Stefan de Konink <dekonink@kinkrsoftware.nl>
|
||||||
|
Takahashi Tomohiro <takatom@jp.fujitsu.com>
|
||||||
|
Tatsuro Enokura <fj7716hz@aa.jp.fujitsu.com>
|
||||||
|
|
||||||
|
#authorslist#
|
||||||
|
|
||||||
|
[....send patches to get your name here....]
|
||||||
|
|
||||||
|
The libvirt logo was designed by Diana Fong
|
||||||
|
|
||||||
|
-- End
|
||||||
|
;; Local Variables:
|
||||||
|
;; coding: utf-8
|
||||||
|
;; End:
|
100
AUTHORS.rst.in
100
AUTHORS.rst.in
@@ -1,100 +0,0 @@
|
|||||||
===============
|
|
||||||
libvirt Authors
|
|
||||||
===============
|
|
||||||
|
|
||||||
The libvirt project was initiated by:
|
|
||||||
|
|
||||||
* Daniel Veillard <veillard@redhat.com> or <daniel@veillard.com>
|
|
||||||
|
|
||||||
The primary maintainers and people with commit access rights:
|
|
||||||
|
|
||||||
* Andrea Bolognani <abologna@redhat.com>
|
|
||||||
* Cédric Bosdonnat <cbosdonnat@suse.com>
|
|
||||||
* Christian Ehrhardt <christian.ehrhardt@canonical.com>
|
|
||||||
* Christophe Fergeau <cfergeau@redhat.com>
|
|
||||||
* Cole Robinson <crobinso@redhat.com>
|
|
||||||
* Daniel P. Berrangé <berrange@redhat.com>
|
|
||||||
* Daniel Veillard <veillard@redhat.com>
|
|
||||||
* Eric Blake <eblake@redhat.com>
|
|
||||||
* Erik Skultety <eskultet@redhat.com>
|
|
||||||
* Fabiano Fidêncio <fidencio@redhat.com>
|
|
||||||
* Guido Günther <agx@sigxcpu.org>
|
|
||||||
* Ján Tomko <jtomko@redhat.com>
|
|
||||||
* Jim Fehlig <jfehlig@suse.com>
|
|
||||||
* Jiří Denemark <jdenemar@redhat.com>
|
|
||||||
* Laine Stump <laine@redhat.com>
|
|
||||||
* Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
* Michal Prívozník <mprivozn@redhat.com>
|
|
||||||
* Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
|
|
||||||
* Pavel Hrdina <phrdina@redhat.com>
|
|
||||||
* Peter Krempa <pkrempa@redhat.com>
|
|
||||||
* Pino Toscano <ptoscano@redhat.com>
|
|
||||||
* Richard W.M. Jones <rjones@redhat.com>
|
|
||||||
* Roman Bogorodskiy <bogorodskiy@gmail.com>
|
|
||||||
* Tim Wiederhake <twiederh@redhat.com>
|
|
||||||
|
|
||||||
Previous maintainers:
|
|
||||||
|
|
||||||
* Alex Jia <ajia@redhat.com>
|
|
||||||
* Anthony Liguori <aliguori@us.ibm.com>
|
|
||||||
* Atsushi SAKAI <sakaia@jp.fujitsu.com>
|
|
||||||
* Chris Lalancette <clalance@redhat.com>
|
|
||||||
* Claudio Bley <claudio.bley@gmail.com>
|
|
||||||
* Dan Smith <danms@us.ibm.com>
|
|
||||||
* Dave Allan <dallan@redhat.com>
|
|
||||||
* Dave Leskovec <dlesko@linux.vnet.ibm.com>
|
|
||||||
* Dmitry Guryanov <dguryanov@parallels.com>
|
|
||||||
* Doug Goldstein <cardoe@gentoo.org>
|
|
||||||
* Gao Feng <gaofeng@cn.fujitsu.com>
|
|
||||||
* Guannan Ren <gren@redhat.com>
|
|
||||||
* Jim Meyering <meyering@redhat.com>
|
|
||||||
* John Ferlan <jferlan@redhat.com>
|
|
||||||
* John Levon <john.levon@sun.com>
|
|
||||||
* Justin Clift <jclift@redhat.com>
|
|
||||||
* Karel Zak <kzak@redhat.com>
|
|
||||||
* Katerina Koukiou <kkoukiou@redhat.com>
|
|
||||||
* Mark McLoughlin <markmc@redhat.com>
|
|
||||||
* Matthias Bolte <matthias.bolte@googlemail.com>
|
|
||||||
* Maxim Nestratov <mnestratov@virtuozzo.com>
|
|
||||||
* Osier Yang <jyang@redhat.com>
|
|
||||||
* Stefan Berger <stefanb@us.ibm.com>
|
|
||||||
* Wen Congyang <wency@cn.fujitsu.com>
|
|
||||||
|
|
||||||
Patches have also been contributed by:
|
|
||||||
|
|
||||||
* Abel Míguez Rodríguez <amiguezr@pdi.ucm.es>
|
|
||||||
* Amit Shah <amit.shah@redhat.com>
|
|
||||||
* Andrew Puch <apuch@redhat.com>
|
|
||||||
* Anton Protopopov <aspsk2@gmail.com>
|
|
||||||
* Ben Guthro <ben.guthro@gmail.com>
|
|
||||||
* Daniel Hokka Zakrisson <daniel@hozac.com>
|
|
||||||
* Dan Wendlandt <dan@nicira.com>
|
|
||||||
* David Lively <dlively@virtualiron.com>
|
|
||||||
* David Lutterkort <dlutter@redhat.com>
|
|
||||||
* Evgeniy Sokolov <evg@openvz.org>
|
|
||||||
* Hugh Brock <hbrock@redhat.com>
|
|
||||||
* Itamar Heim <iheim@redhat.com>
|
|
||||||
* James Morris <jmorris@namei.org>
|
|
||||||
* Javier Fontan <jfontan@gmail.com>
|
|
||||||
* Jeremy Katz <katzj@redhat.com>
|
|
||||||
* Kaitlin Rupert <kaitlin@linux.vnet.ibm.com>
|
|
||||||
* Kazuki Mizushima <mizushima.kazuk@jp.fujitsu.com>
|
|
||||||
* Mads Chr. Olesen <shiyee@shiyee.dk>
|
|
||||||
* Mark Johnson <johnson.nh@gmail.com>
|
|
||||||
* Markus Armbruster <armbru@redhat.com>
|
|
||||||
* Masayuki Sunou <fj1826dm@aa.jp.fujitsu.com>
|
|
||||||
* Matthias Witte <witte@netzquadrat.de>
|
|
||||||
* Michel Ponceau <michel.ponceau@bull.net>
|
|
||||||
* Nobuhiro Itou <fj0873gn@aa.jp.fujitsu.com>
|
|
||||||
* Pete Vetere <pvetere@redhat.com>
|
|
||||||
* Philippe Berthault <philippe.berthault@Bull.net>
|
|
||||||
* Saori Fukuta <fukuta.saori@jp.fujitsu.com>
|
|
||||||
* Shigeki Sakamoto <fj0588di@aa.jp.fujitsu.com>
|
|
||||||
* Shuveb Hussain <shuveb@binarykarma.com>
|
|
||||||
* Stefan de Konink <dekonink@kinkrsoftware.nl>
|
|
||||||
* Takahashi Tomohiro <takatom@jp.fujitsu.com>
|
|
||||||
* Tatsuro Enokura <fj7716hz@aa.jp.fujitsu.com>
|
|
||||||
|
|
||||||
@contributorslist@
|
|
||||||
|
|
||||||
The libvirt logo was designed by Diana Fong
|
|
@@ -1,45 +0,0 @@
|
|||||||
=======================
|
|
||||||
Contributing to libvirt
|
|
||||||
=======================
|
|
||||||
|
|
||||||
Full, up to date information on how to contribute to libvirt can be
|
|
||||||
found on the libvirt website:
|
|
||||||
|
|
||||||
https://libvirt.org/contribute.html
|
|
||||||
|
|
||||||
To build the same document locally, from the top level directory of
|
|
||||||
your git clone run:
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
$ meson build
|
|
||||||
$ ninja -C build
|
|
||||||
|
|
||||||
You'll find the freshly-built document in ``docs/contribute.html``.
|
|
||||||
|
|
||||||
If ``meson setup`` fails because of missing dependencies, you can set
|
|
||||||
up your system by calling
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
$ sudo dnf builddep libvirt
|
|
||||||
|
|
||||||
if you're on a RHEL-based distribution or
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
$ sudo apt-get build-dep libvirt
|
|
||||||
|
|
||||||
if you're on a Debian-based one.
|
|
||||||
|
|
||||||
Note that, for the RHEL-based case, if you're on a machine where you
|
|
||||||
haven't done any C development before, you will probably also need
|
|
||||||
to run
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
$ sudo dnf install gcc make ninja-build rpm-build
|
|
||||||
|
|
||||||
You might still be missing some dependencies if your distribution is
|
|
||||||
shipping an old libvirt version, but that will get you much closer to
|
|
||||||
where you need to be to build successfully from source.
|
|
16699
ChangeLog-old
Normal file
16699
ChangeLog-old
Normal file
File diff suppressed because it is too large
Load Diff
113
Makefile.am
Normal file
113
Makefile.am
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
## Process this file with automake to produce Makefile.in
|
||||||
|
|
||||||
|
## Copyright (C) 2005-2013 Red Hat, Inc.
|
||||||
|
##
|
||||||
|
## This library is free software; you can redistribute it and/or
|
||||||
|
## modify it under the terms of the GNU Lesser General Public
|
||||||
|
## License as published by the Free Software Foundation; either
|
||||||
|
## version 2.1 of the License, or (at your option) any later version.
|
||||||
|
##
|
||||||
|
## This library is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
## Lesser General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU Lesser General Public
|
||||||
|
## License along with this library. If not, see
|
||||||
|
## <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
LCOV = lcov
|
||||||
|
GENHTML = genhtml
|
||||||
|
|
||||||
|
SUBDIRS = . gnulib/lib include/libvirt src daemon tools docs gnulib/tests \
|
||||||
|
tests po examples
|
||||||
|
|
||||||
|
XZ_OPT ?= -v -T0
|
||||||
|
export XZ_OPT
|
||||||
|
|
||||||
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
config-post.h \
|
||||||
|
ChangeLog-old \
|
||||||
|
libvirt.spec libvirt.spec.in \
|
||||||
|
mingw-libvirt.spec.in \
|
||||||
|
libvirt.pc.in \
|
||||||
|
libvirt-qemu.pc.in \
|
||||||
|
libvirt-lxc.pc.in \
|
||||||
|
libvirt-admin.pc.in \
|
||||||
|
autobuild.sh \
|
||||||
|
Makefile.nonreentrant \
|
||||||
|
autogen.sh \
|
||||||
|
cfg.mk \
|
||||||
|
run.in \
|
||||||
|
AUTHORS.in
|
||||||
|
|
||||||
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
|
pkgconfig_DATA = libvirt.pc libvirt-qemu.pc libvirt-lxc.pc libvirt-admin.pc
|
||||||
|
|
||||||
|
NEWS: $(top_srcdir)/docs/news.xsl $(top_srcdir)/docs/news.html.in
|
||||||
|
$(AM_V_GEN)if [ -x $(XSLTPROC) ] ; then \
|
||||||
|
$(XSLTPROC) --nonet $(top_srcdir)/docs/news.xsl \
|
||||||
|
$(top_srcdir)/docs/news.html.in \
|
||||||
|
| perl -0777 -pe 's/\n\n+$$/\n/' \
|
||||||
|
| perl -pe 's/[ \t]+$$//' \
|
||||||
|
> $@-t && mv $@-t $@ ; fi
|
||||||
|
|
||||||
|
$(top_srcdir)/HACKING: $(top_srcdir)/docs/hacking1.xsl \
|
||||||
|
$(top_srcdir)/docs/hacking2.xsl \
|
||||||
|
$(top_srcdir)/docs/wrapstring.xsl \
|
||||||
|
$(top_srcdir)/docs/hacking.html.in
|
||||||
|
$(AM_V_GEN)if [ -x $(XSLTPROC) ] ; then \
|
||||||
|
$(XSLTPROC) --nonet $(top_srcdir)/docs/hacking1.xsl \
|
||||||
|
$(top_srcdir)/docs/hacking.html.in | \
|
||||||
|
$(XSLTPROC) --nonet $(top_srcdir)/docs/hacking2.xsl - \
|
||||||
|
| perl -0777 -pe 's/\n\n+$$/\n/' \
|
||||||
|
> $@-t && mv $@-t $@ ; fi;
|
||||||
|
|
||||||
|
rpm: clean
|
||||||
|
@(unset CDPATH ; $(MAKE) dist && rpmbuild -ta $(distdir).tar.xz)
|
||||||
|
|
||||||
|
check-local: all tests
|
||||||
|
|
||||||
|
check-access:
|
||||||
|
@($(MAKE) $(AM_MAKEFLAGS) -C tests check-access)
|
||||||
|
|
||||||
|
cov: clean-cov
|
||||||
|
$(MKDIR_P) $(top_builddir)/coverage
|
||||||
|
$(LCOV) -c -o $(top_builddir)/coverage/libvirt.info.tmp \
|
||||||
|
-d $(top_builddir)/src -d $(top_builddir)/daemon \
|
||||||
|
-d $(top_builddir)/tests
|
||||||
|
$(LCOV) -r $(top_builddir)/coverage/libvirt.info.tmp \
|
||||||
|
-o $(top_builddir)/coverage/libvirt.info
|
||||||
|
rm $(top_builddir)/coverage/libvirt.info.tmp
|
||||||
|
$(GENHTML) --show-details -t "libvirt" -o $(top_builddir)/coverage \
|
||||||
|
--legend $(top_builddir)/coverage/libvirt.info
|
||||||
|
|
||||||
|
clean-cov:
|
||||||
|
rm -rf $(top_builddir)/coverage
|
||||||
|
|
||||||
|
MAINTAINERCLEANFILES = .git-module-status
|
||||||
|
|
||||||
|
dist-hook: gen-ChangeLog gen-AUTHORS
|
||||||
|
|
||||||
|
# Generate the ChangeLog file (with all entries since the switch to git)
|
||||||
|
# and insert it into the directory we're about to use to create a tarball.
|
||||||
|
gen_start_date = 2009-07-04
|
||||||
|
.PHONY: gen-ChangeLog
|
||||||
|
gen-ChangeLog:
|
||||||
|
$(AM_V_GEN)if test -d .git; then \
|
||||||
|
$(top_srcdir)/build-aux/gitlog-to-changelog \
|
||||||
|
--since=$(gen_start_date) > $(distdir)/cl-t; \
|
||||||
|
rm -f $(distdir)/ChangeLog; \
|
||||||
|
mv $(distdir)/cl-t $(distdir)/ChangeLog; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
.PHONY: gen-AUTHORS
|
||||||
|
gen-AUTHORS:
|
||||||
|
$(AM_V_GEN)if test -d $(srcdir)/.git; then \
|
||||||
|
out="`cd $(srcdir) && git log --pretty=format:'%aN <%aE>' | sort -u`" && \
|
||||||
|
perl -p -e "s/#authorslist#// and print '$$out'" \
|
||||||
|
< $(srcdir)/AUTHORS.in > $(distdir)/AUTHORS-tmp && \
|
||||||
|
mv -f $(distdir)/AUTHORS-tmp $(distdir)/AUTHORS ; \
|
||||||
|
fi
|
@@ -15,9 +15,9 @@
|
|||||||
## <http://www.gnu.org/licenses/>.
|
## <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#
|
#
|
||||||
# Generated by running the following on Fedora 26:
|
# Generated by running the following on Fedora 9:
|
||||||
#
|
#
|
||||||
# nm -D --defined-only /lib64/libc.so.6 \
|
# nm -D --defined-only /lib/libc.so.6 \
|
||||||
# | grep '_r$' \
|
# | grep '_r$' \
|
||||||
# | awk '{print $3}' \
|
# | awk '{print $3}' \
|
||||||
# | grep -v __ \
|
# | grep -v __ \
|
||||||
@@ -43,7 +43,6 @@ NON_REENTRANT += ether_ntoa
|
|||||||
NON_REENTRANT += fcvt
|
NON_REENTRANT += fcvt
|
||||||
NON_REENTRANT += fgetgrent
|
NON_REENTRANT += fgetgrent
|
||||||
NON_REENTRANT += fgetpwent
|
NON_REENTRANT += fgetpwent
|
||||||
NON_REENTRANT += fgetsgent
|
|
||||||
NON_REENTRANT += fgetspent
|
NON_REENTRANT += fgetspent
|
||||||
NON_REENTRANT += getaliasbyname
|
NON_REENTRANT += getaliasbyname
|
||||||
NON_REENTRANT += getaliasent
|
NON_REENTRANT += getaliasent
|
||||||
@@ -73,8 +72,6 @@ NON_REENTRANT += getrpcent
|
|||||||
NON_REENTRANT += getservbyname
|
NON_REENTRANT += getservbyname
|
||||||
NON_REENTRANT += getservbyport
|
NON_REENTRANT += getservbyport
|
||||||
NON_REENTRANT += getservent
|
NON_REENTRANT += getservent
|
||||||
NON_REENTRANT += getsgent
|
|
||||||
NON_REENTRANT += getsgnam
|
|
||||||
NON_REENTRANT += getspent
|
NON_REENTRANT += getspent
|
||||||
NON_REENTRANT += getspnam
|
NON_REENTRANT += getspnam
|
||||||
NON_REENTRANT += getutent
|
NON_REENTRANT += getutent
|
||||||
@@ -98,7 +95,6 @@ NON_REENTRANT += random
|
|||||||
NON_REENTRANT += rand
|
NON_REENTRANT += rand
|
||||||
NON_REENTRANT += seed48
|
NON_REENTRANT += seed48
|
||||||
NON_REENTRANT += setstate
|
NON_REENTRANT += setstate
|
||||||
NON_REENTRANT += sgetsgent
|
|
||||||
NON_REENTRANT += sgetspent
|
NON_REENTRANT += sgetspent
|
||||||
NON_REENTRANT += srand48
|
NON_REENTRANT += srand48
|
||||||
NON_REENTRANT += srandom
|
NON_REENTRANT += srandom
|
13
README
Normal file
13
README
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
LibVirt : simple API for virtualization
|
||||||
|
|
||||||
|
Libvirt is a C toolkit to interact with the virtualization capabilities
|
||||||
|
of recent versions of Linux (and other OSes). It is free software
|
||||||
|
available under the GNU Lesser General Public License. Virtualization of
|
||||||
|
the Linux Operating System means the ability to run multiple instances of
|
||||||
|
Operating Systems concurrently on a single hardware system where the basic
|
||||||
|
resources are driven by a Linux instance. The library aim at providing
|
||||||
|
long term stable C API initially for the Xen paravirtualization but
|
||||||
|
should be able to integrate other virtualization mechanisms if needed.
|
||||||
|
|
||||||
|
Daniel Veillard <veillard@redhat.com>
|
57
README-hacking
Normal file
57
README-hacking
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
-*- outline -*-
|
||||||
|
|
||||||
|
These notes intend to help people working on the checked-out sources.
|
||||||
|
These requirements do not apply when building from a distribution tarball.
|
||||||
|
See also HACKING for more detailed libvirt contribution guidelines.
|
||||||
|
|
||||||
|
* Requirements
|
||||||
|
|
||||||
|
We've opted to keep only the highest-level sources in the GIT repository.
|
||||||
|
This eases our maintenance burden, (fewer merges etc.), but imposes more
|
||||||
|
requirements on anyone wishing to build from the just-checked-out sources.
|
||||||
|
Note the requirements to build the released archive are much less and
|
||||||
|
are just the requirements of the standard ./configure && make procedure.
|
||||||
|
Specific development tools and versions will be checked for and listed by
|
||||||
|
the bootstrap script.
|
||||||
|
|
||||||
|
Valgrind <http://valgrind.org/> is also highly recommended, if
|
||||||
|
Valgrind supports your architecture.
|
||||||
|
|
||||||
|
While building from a just-cloned source tree may require installing a
|
||||||
|
few prerequisites, later, a plain `git pull && make' should be sufficient.
|
||||||
|
|
||||||
|
* First GIT checkout
|
||||||
|
|
||||||
|
You can get a copy of the source repository like this:
|
||||||
|
|
||||||
|
$ git clone git://libvirt.org/libvirt
|
||||||
|
$ cd libvirt
|
||||||
|
|
||||||
|
As an optional step, if you already have a copy of the gnulib git
|
||||||
|
repository on your hard drive, then you can use it as a reference to
|
||||||
|
reduce download time and disk space requirements:
|
||||||
|
|
||||||
|
$ export GNULIB_SRCDIR=/path/to/gnulib
|
||||||
|
|
||||||
|
The next step is to get all required pieces from gnulib,
|
||||||
|
to run autoreconf, and to invoke ./configure:
|
||||||
|
|
||||||
|
$ ./autogen.sh
|
||||||
|
|
||||||
|
And there you are! Just
|
||||||
|
|
||||||
|
$ make
|
||||||
|
$ make check
|
||||||
|
|
||||||
|
At this point, there should be no difference between your local copy,
|
||||||
|
and the GIT master copy:
|
||||||
|
|
||||||
|
$ git diff
|
||||||
|
|
||||||
|
should output no difference.
|
||||||
|
|
||||||
|
Enjoy!
|
||||||
|
|
||||||
|
Local Variables:
|
||||||
|
indent-tabs-mode: nil
|
||||||
|
End:
|
72
README.rst
72
README.rst
@@ -1,72 +0,0 @@
|
|||||||
.. image:: https://gitlab.com/libvirt/libvirt/badges/master/pipeline.svg
|
|
||||||
:target: https://gitlab.com/libvirt/libvirt/pipelines
|
|
||||||
:alt: GitLab CI Build Status
|
|
||||||
.. image:: https://bestpractices.coreinfrastructure.org/projects/355/badge
|
|
||||||
:target: https://bestpractices.coreinfrastructure.org/projects/355
|
|
||||||
:alt: CII Best Practices
|
|
||||||
.. image:: https://translate.fedoraproject.org/widgets/libvirt/-/libvirt/svg-badge.svg
|
|
||||||
:target: https://translate.fedoraproject.org/engage/libvirt/
|
|
||||||
:alt: Translation status
|
|
||||||
|
|
||||||
==============================
|
|
||||||
Libvirt API for virtualization
|
|
||||||
==============================
|
|
||||||
|
|
||||||
Libvirt provides a portable, long term stable C API for managing the
|
|
||||||
virtualization technologies provided by many operating systems. It
|
|
||||||
includes support for QEMU, KVM, Xen, LXC, bhyve, Virtuozzo, VMware
|
|
||||||
vCenter and ESX, VMware Desktop, Hyper-V, VirtualBox and the POWER
|
|
||||||
Hypervisor.
|
|
||||||
|
|
||||||
For some of these hypervisors, it provides a stateful management
|
|
||||||
daemon which runs on the virtualization host allowing access to the
|
|
||||||
API both by non-privileged local users and remote users.
|
|
||||||
|
|
||||||
Layered packages provide bindings of the libvirt C API into other
|
|
||||||
languages including Python, Perl, PHP, Go, Java, OCaml, as well as
|
|
||||||
mappings into object systems such as GObject, CIM and SNMP.
|
|
||||||
|
|
||||||
Further information about the libvirt project can be found on the
|
|
||||||
website:
|
|
||||||
|
|
||||||
https://libvirt.org
|
|
||||||
|
|
||||||
|
|
||||||
License
|
|
||||||
=======
|
|
||||||
|
|
||||||
The libvirt C API is distributed under the terms of GNU Lesser General
|
|
||||||
Public License, version 2.1 (or later). Some parts of the code that are
|
|
||||||
not part of the C library may have the more restrictive GNU General
|
|
||||||
Public License, version 2.0 (or later). See the files ``COPYING.LESSER``
|
|
||||||
and ``COPYING`` for full license terms & conditions.
|
|
||||||
|
|
||||||
|
|
||||||
Installation
|
|
||||||
============
|
|
||||||
|
|
||||||
Instructions on building and installing libvirt can be found on the website:
|
|
||||||
|
|
||||||
https://libvirt.org/compiling.html
|
|
||||||
|
|
||||||
Contributing
|
|
||||||
============
|
|
||||||
|
|
||||||
The libvirt project welcomes contributions in many ways. For most components
|
|
||||||
the best way to contribute is to send patches to the primary development
|
|
||||||
mailing list. Further guidance on this can be found on the website:
|
|
||||||
|
|
||||||
https://libvirt.org/contribute.html
|
|
||||||
|
|
||||||
|
|
||||||
Contact
|
|
||||||
=======
|
|
||||||
|
|
||||||
The libvirt project has two primary mailing lists:
|
|
||||||
|
|
||||||
* libvirt-users@redhat.com (**for user discussions**)
|
|
||||||
* libvir-list@redhat.com (**for development only**)
|
|
||||||
|
|
||||||
Further details on contacting the project are available on the website:
|
|
||||||
|
|
||||||
https://libvirt.org/contact.html
|
|
22
TODO
Normal file
22
TODO
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
libvirt TODO list
|
||||||
|
=================
|
||||||
|
|
||||||
|
The TODO list changes frequently, so is maintained online
|
||||||
|
in the libvirt bugzilla
|
||||||
|
|
||||||
|
http://bugzilla.redhat.com/
|
||||||
|
|
||||||
|
Search against
|
||||||
|
|
||||||
|
Product: Virtualization Tools
|
||||||
|
Component: libvirt
|
||||||
|
Subject: RFE
|
||||||
|
|
||||||
|
Or browse dependent bugs under
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=libvirtTodo
|
||||||
|
|
||||||
|
Summarized reports automatically generated from bugzilla
|
||||||
|
and provided online at
|
||||||
|
|
||||||
|
http://libvirt.org/todo.html
|
122
autobuild.sh
Executable file
122
autobuild.sh
Executable file
@@ -0,0 +1,122 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -v
|
||||||
|
|
||||||
|
# Make things clean.
|
||||||
|
|
||||||
|
test -n "$1" && RESULTS=$1 || RESULTS=results.log
|
||||||
|
: ${AUTOBUILD_INSTALL_ROOT=$HOME/builder}
|
||||||
|
|
||||||
|
# If run under the autobuilder, we must use --nodeps with rpmbuild;
|
||||||
|
# but this can lead to odd error diagnosis for normal development.
|
||||||
|
nodeps=
|
||||||
|
if test "${AUTOBUILD_COUNTER+set}"; then
|
||||||
|
nodeps=--nodeps
|
||||||
|
fi
|
||||||
|
|
||||||
|
test -f Makefile && make -k distclean || :
|
||||||
|
rm -rf coverage
|
||||||
|
|
||||||
|
rm -rf build
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
|
||||||
|
# Run with options not normally exercised by the rpm build, for
|
||||||
|
# more complete code coverage.
|
||||||
|
../autogen.sh --prefix="$AUTOBUILD_INSTALL_ROOT" \
|
||||||
|
--enable-expensive-tests \
|
||||||
|
--enable-test-coverage \
|
||||||
|
--disable-nls \
|
||||||
|
--enable-werror \
|
||||||
|
--enable-static
|
||||||
|
|
||||||
|
# If the MAKEFLAGS envvar does not yet include a -j option,
|
||||||
|
# add -jN where N depends on the number of processors.
|
||||||
|
case $MAKEFLAGS in
|
||||||
|
*-j*) ;;
|
||||||
|
*) n=$(getconf _NPROCESSORS_ONLN 2> /dev/null)
|
||||||
|
test "$n" -gt 0 || n=1
|
||||||
|
n=$(expr $n + 1)
|
||||||
|
MAKEFLAGS="$MAKEFLAGS -j$n"
|
||||||
|
export MAKEFLAGS
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
|
||||||
|
# set -o pipefail is a bashism; this use of exec is the POSIX alternative
|
||||||
|
exec 3>&1
|
||||||
|
st=$(
|
||||||
|
exec 4>&1 >&3
|
||||||
|
{ make check syntax-check 2>&1 3>&- 4>&-; echo $? >&4; } | tee "$RESULTS"
|
||||||
|
)
|
||||||
|
exec 3>&-
|
||||||
|
test "$st" = 0
|
||||||
|
test -x /usr/bin/lcov && make cov
|
||||||
|
|
||||||
|
rm -f *.tar.xz
|
||||||
|
make dist
|
||||||
|
|
||||||
|
if test -n "$AUTOBUILD_COUNTER" ; then
|
||||||
|
EXTRA_RELEASE=".auto$AUTOBUILD_COUNTER"
|
||||||
|
else
|
||||||
|
NOW=`date +"%s"`
|
||||||
|
EXTRA_RELEASE=".$USER$NOW"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -f /usr/bin/rpmbuild ; then
|
||||||
|
rpmbuild $nodeps \
|
||||||
|
--define "extra_release $EXTRA_RELEASE" \
|
||||||
|
--define "_sourcedir `pwd`" \
|
||||||
|
-ba --clean libvirt.spec
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Test mingw32 cross-compile
|
||||||
|
if test -x /usr/bin/i686-w64-mingw32-gcc ; then
|
||||||
|
make distclean
|
||||||
|
|
||||||
|
PKG_CONFIG_LIBDIR="/usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig:/usr/i686-w64-mingw32/sys-root/mingw/share/pkgconfig" \
|
||||||
|
PKG_CONFIG_PATH="$AUTOBUILD_INSTALL_ROOT/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig" \
|
||||||
|
CC="i686-w64-mingw32-gcc" \
|
||||||
|
../configure \
|
||||||
|
--build=$(uname -m)-w64-linux \
|
||||||
|
--host=i686-w64-mingw32 \
|
||||||
|
--prefix="$AUTOBUILD_INSTALL_ROOT/i686-w64-mingw32/sys-root/mingw" \
|
||||||
|
--enable-expensive-tests \
|
||||||
|
--enable-werror
|
||||||
|
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Test mingw64 cross-compile
|
||||||
|
if test -x /usr/bin/x86_64-w64-mingw32-gcc ; then
|
||||||
|
make distclean
|
||||||
|
|
||||||
|
PKG_CONFIG_LIBDIR="/usr/x86_64-w64-mingw32/sys-root/mingw/lib/pkgconfig:/usr/x86_64-w64-mingw32/sys-root/mingw/share/pkgconfig" \
|
||||||
|
PKG_CONFIG_PATH="$AUTOBUILD_INSTALL_ROOT/x86_64-w64-mingw32/sys-root/mingw/lib/pkgconfig" \
|
||||||
|
CC="x86_64-w64-mingw32-gcc" \
|
||||||
|
../configure \
|
||||||
|
--build=$(uname -m)-w64-linux \
|
||||||
|
--host=x86_64-w64-mingw32 \
|
||||||
|
--prefix="$AUTOBUILD_INSTALL_ROOT/x86_64-w64-mingw32/sys-root/mingw" \
|
||||||
|
--enable-expensive-tests \
|
||||||
|
--enable-werror
|
||||||
|
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if test -x /usr/bin/i686-w64-mingw32-gcc && test -x /usr/bin/x86_64-w64-mingw32-gcc ; then
|
||||||
|
if test -f /usr/bin/rpmbuild ; then
|
||||||
|
rpmbuild $nodeps \
|
||||||
|
--define "extra_release $EXTRA_RELEASE" \
|
||||||
|
--define "_sourcedir `pwd`" \
|
||||||
|
-ba --clean mingw-libvirt.spec
|
||||||
|
fi
|
||||||
|
fi
|
117
autogen.sh
Executable file
117
autogen.sh
Executable file
@@ -0,0 +1,117 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Run this to generate all the initial makefiles, etc.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
srcdir=`dirname "$0"`
|
||||||
|
test -z "$srcdir" && srcdir=.
|
||||||
|
|
||||||
|
THEDIR=`pwd`
|
||||||
|
cd "$srcdir"
|
||||||
|
|
||||||
|
test -f src/libvirt.c || {
|
||||||
|
echo "You must run this script in the top-level libvirt directory"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EXTRA_ARGS=
|
||||||
|
no_git=
|
||||||
|
if test "x$1" = "x--no-git"; then
|
||||||
|
no_git=" $1"
|
||||||
|
shift
|
||||||
|
case "$1 $2" in
|
||||||
|
--gnulib-srcdir=*) no_git="$no_git $1"; shift ;;
|
||||||
|
--gnulib-srcdir\ *) no_git="$no_git $1=$2"; shift; shift;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if test -z "$NOCONFIGURE" ; then
|
||||||
|
if test "x$1" = "x--system"; then
|
||||||
|
shift
|
||||||
|
prefix=/usr
|
||||||
|
libdir=$prefix/lib
|
||||||
|
sysconfdir=/etc
|
||||||
|
localstatedir=/var
|
||||||
|
if [ -d /usr/lib64 ]; then
|
||||||
|
libdir=$prefix/lib64
|
||||||
|
fi
|
||||||
|
EXTRA_ARGS="--prefix=$prefix --sysconfdir=$sysconfdir --localstatedir=$localstatedir --libdir=$libdir"
|
||||||
|
echo "Running ./configure with $EXTRA_ARGS $@"
|
||||||
|
else
|
||||||
|
if test -z "$*" && test ! -f "$THEDIR/config.status"; then
|
||||||
|
echo "I am going to run ./configure with no arguments - if you wish"
|
||||||
|
echo "to pass any to it, please specify them on the $0 command line."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Compute the hash we'll use to determine whether rerunning bootstrap
|
||||||
|
# is required. The first is just the SHA1 that selects a gnulib snapshot.
|
||||||
|
# The second ensures that whenever we change the set of gnulib modules used
|
||||||
|
# by this package, we rerun bootstrap to pull in the matching set of files.
|
||||||
|
# The third ensures that whenever we change the set of local gnulib diffs,
|
||||||
|
# we rerun bootstrap to pull in those diffs.
|
||||||
|
bootstrap_hash()
|
||||||
|
{
|
||||||
|
if test "$no_git"; then
|
||||||
|
echo no-git
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
git submodule status | sed 's/^[ +-]//;s/ .*//'
|
||||||
|
git hash-object bootstrap.conf
|
||||||
|
git ls-tree -d HEAD gnulib/local | awk '{print $3}'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ensure that whenever we pull in a gnulib update or otherwise change to a
|
||||||
|
# different version (i.e., when switching branches), we also rerun ./bootstrap.
|
||||||
|
# Also, running 'make rpm' tends to litter the po/ directory, and some people
|
||||||
|
# like to run 'git clean -x -f po' to fix it; but only ./bootstrap regenerates
|
||||||
|
# the required file po/Makevars.
|
||||||
|
# Only run bootstrap from a git checkout, never from a tarball.
|
||||||
|
if test -d .git || test -f .git; then
|
||||||
|
curr_status=.git-module-status t=
|
||||||
|
if test "$no_git"; then
|
||||||
|
t=no-git
|
||||||
|
elif test -d .gnulib; then
|
||||||
|
t=$(bootstrap_hash; git diff .gnulib)
|
||||||
|
fi
|
||||||
|
case $t:${CLEAN_SUBMODULE+set} in
|
||||||
|
*:set) ;;
|
||||||
|
*-dirty*)
|
||||||
|
echo "error: gnulib submodule is dirty, please investigate" 2>&1
|
||||||
|
echo "set env-var CLEAN_SUBMODULE to discard gnulib changes" 2>&1
|
||||||
|
exit 1 ;;
|
||||||
|
esac
|
||||||
|
# Keep this test in sync with cfg.mk:_update_required
|
||||||
|
if test "$t" = "$(cat $curr_status 2>/dev/null)" \
|
||||||
|
&& test -f "po/Makevars" && test -f AUTHORS; then
|
||||||
|
# good, it's up to date, all we need is autoreconf
|
||||||
|
autoreconf -if
|
||||||
|
else
|
||||||
|
if test -z "$no_git" && test ${CLEAN_SUBMODULE+set}; then
|
||||||
|
echo cleaning up submodules...
|
||||||
|
git submodule foreach 'git clean -dfqx && git reset --hard'
|
||||||
|
fi
|
||||||
|
echo running bootstrap$no_git...
|
||||||
|
./bootstrap$no_git --bootstrap-sync && bootstrap_hash > $curr_status \
|
||||||
|
|| { echo "Failed to bootstrap, please investigate."; exit 1; }
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
test -n "$NOCONFIGURE" && exit 0
|
||||||
|
|
||||||
|
cd "$THEDIR"
|
||||||
|
|
||||||
|
if test "x$OBJ_DIR" != x; then
|
||||||
|
mkdir -p "$OBJ_DIR"
|
||||||
|
cd "$OBJ_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$*" && test -z "$EXTRA_ARGS" && test -f config.status; then
|
||||||
|
./config.status --recheck
|
||||||
|
else
|
||||||
|
$srcdir/configure $EXTRA_ARGS "$@"
|
||||||
|
fi && {
|
||||||
|
echo
|
||||||
|
echo "Now type 'make' to compile libvirt."
|
||||||
|
}
|
239
bootstrap.conf
Normal file
239
bootstrap.conf
Normal file
@@ -0,0 +1,239 @@
|
|||||||
|
# Bootstrap configuration.
|
||||||
|
|
||||||
|
# Copyright (C) 2010-2014 Red Hat, Inc.
|
||||||
|
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library. If not, see
|
||||||
|
# <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# gnulib modules used by this package.
|
||||||
|
gnulib_modules='
|
||||||
|
accept
|
||||||
|
areadlink
|
||||||
|
autobuild
|
||||||
|
base64
|
||||||
|
bind
|
||||||
|
bitrotate
|
||||||
|
byteswap
|
||||||
|
c-ctype
|
||||||
|
c-strcase
|
||||||
|
c-strcasestr
|
||||||
|
calloc-posix
|
||||||
|
canonicalize-lgpl
|
||||||
|
chown
|
||||||
|
clock-time
|
||||||
|
close
|
||||||
|
connect
|
||||||
|
configmake
|
||||||
|
count-leading-zeros
|
||||||
|
count-one-bits
|
||||||
|
crypto/md5
|
||||||
|
crypto/sha256
|
||||||
|
dirname-lgpl
|
||||||
|
environ
|
||||||
|
execinfo
|
||||||
|
fclose
|
||||||
|
fcntl
|
||||||
|
fcntl-h
|
||||||
|
fdatasync
|
||||||
|
ffs
|
||||||
|
ffsl
|
||||||
|
fnmatch
|
||||||
|
fsync
|
||||||
|
func
|
||||||
|
getaddrinfo
|
||||||
|
getcwd-lgpl
|
||||||
|
gethostname
|
||||||
|
getpass
|
||||||
|
getpeername
|
||||||
|
getsockname
|
||||||
|
gettext-h
|
||||||
|
gettimeofday
|
||||||
|
gitlog-to-changelog
|
||||||
|
gnumakefile
|
||||||
|
ignore-value
|
||||||
|
inet_pton
|
||||||
|
intprops
|
||||||
|
ioctl
|
||||||
|
isatty
|
||||||
|
largefile
|
||||||
|
ldexp
|
||||||
|
listen
|
||||||
|
localeconv
|
||||||
|
maintainer-makefile
|
||||||
|
manywarnings
|
||||||
|
mgetgroups
|
||||||
|
mkdtemp
|
||||||
|
mkostemp
|
||||||
|
mkostemps
|
||||||
|
mktempd
|
||||||
|
net_if
|
||||||
|
netdb
|
||||||
|
nonblocking
|
||||||
|
openpty
|
||||||
|
passfd
|
||||||
|
perror
|
||||||
|
physmem
|
||||||
|
pipe-posix
|
||||||
|
pipe2
|
||||||
|
poll
|
||||||
|
posix-shell
|
||||||
|
pthread
|
||||||
|
pthread_sigmask
|
||||||
|
recv
|
||||||
|
regex
|
||||||
|
random_r
|
||||||
|
sched
|
||||||
|
secure_getenv
|
||||||
|
send
|
||||||
|
setenv
|
||||||
|
setsockopt
|
||||||
|
sigaction
|
||||||
|
sigpipe
|
||||||
|
snprintf
|
||||||
|
socket
|
||||||
|
stat-time
|
||||||
|
stdarg
|
||||||
|
stpcpy
|
||||||
|
strchrnul
|
||||||
|
strdup-posix
|
||||||
|
strndup
|
||||||
|
strerror
|
||||||
|
strerror_r-posix
|
||||||
|
strptime
|
||||||
|
strsep
|
||||||
|
strtok_r
|
||||||
|
sys_stat
|
||||||
|
sys_wait
|
||||||
|
termios
|
||||||
|
time_r
|
||||||
|
timegm
|
||||||
|
ttyname_r
|
||||||
|
uname
|
||||||
|
unsetenv
|
||||||
|
useless-if-before-free
|
||||||
|
usleep
|
||||||
|
vasprintf
|
||||||
|
verify
|
||||||
|
vc-list-files
|
||||||
|
vsnprintf
|
||||||
|
waitpid
|
||||||
|
warnings
|
||||||
|
'
|
||||||
|
|
||||||
|
# Additional xgettext options to use. Use "\\\newline" to break lines.
|
||||||
|
XGETTEXT_OPTIONS=$XGETTEXT_OPTIONS'\\\
|
||||||
|
--flag=virAsprintf:2:c-format\\\
|
||||||
|
--from-code=UTF-8\\\
|
||||||
|
'
|
||||||
|
|
||||||
|
# This is not a GNU package, so the default bug address is invalid,
|
||||||
|
# and the translation project is not in use.
|
||||||
|
MSGID_BUGS_ADDRESS=libvir-list@redhat.com
|
||||||
|
COPYRIGHT_HOLDER='Red Hat, Inc.'
|
||||||
|
SKIP_PO=true
|
||||||
|
|
||||||
|
# Enable copy-mode for MSYS/MinGW. MSYS' ln doesn't work well in the way
|
||||||
|
# bootstrap uses it with relative paths.
|
||||||
|
if test -n "$MSYSTEM"; then
|
||||||
|
copy=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If "AM_GNU_GETTEXT(external" or "AM_GNU_GETTEXT([external]"
|
||||||
|
# appears in configure.ac, exclude some unnecessary files.
|
||||||
|
# Without grep's -E option (not portable enough, pre-configure),
|
||||||
|
# the following test is ugly. Also, this depends on the existence
|
||||||
|
# of configure.ac, not the obsolescent-named configure.in. But if
|
||||||
|
# you're using this infrastructure, you should care about such things.
|
||||||
|
|
||||||
|
gettext_external=0
|
||||||
|
grep '^[ ]*AM_GNU_GETTEXT(external\>' configure.ac > /dev/null &&
|
||||||
|
gettext_external=1
|
||||||
|
grep '^[ ]*AM_GNU_GETTEXT(\[external\]' configure.ac > /dev/null &&
|
||||||
|
gettext_external=1
|
||||||
|
|
||||||
|
if test $gettext_external = 1; then
|
||||||
|
# Gettext supplies these files, but we don't need them since
|
||||||
|
# we don't have an intl subdirectory.
|
||||||
|
excluded_files='
|
||||||
|
m4/glibc2.m4
|
||||||
|
m4/intdiv0.m4
|
||||||
|
m4/lcmessage.m4
|
||||||
|
m4/uintmax_t.m4
|
||||||
|
m4/ulonglong.m4
|
||||||
|
m4/visibility.m4
|
||||||
|
'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Tell gnulib to:
|
||||||
|
# require LGPLv2+
|
||||||
|
# apply any local diffs in gnulib/local/ dir
|
||||||
|
# put *.m4 files in m4/ dir
|
||||||
|
# put *.[ch] files in new gnulib/lib/ dir
|
||||||
|
# import gnulib tests in new gnulib/tests/ dir
|
||||||
|
gnulib_name=libgnu
|
||||||
|
m4_base=m4
|
||||||
|
source_base=gnulib/lib
|
||||||
|
tests_base=gnulib/tests
|
||||||
|
gnulib_tool_option_extras="\
|
||||||
|
--lgpl=2\
|
||||||
|
--with-tests\
|
||||||
|
--makefile-name=gnulib.mk\
|
||||||
|
--avoid=pt_chown\
|
||||||
|
--avoid=lock-tests\
|
||||||
|
"
|
||||||
|
local_gl_dir=gnulib/local
|
||||||
|
|
||||||
|
# Build prerequisites
|
||||||
|
# Note that some of these programs are only required for 'make dist' to
|
||||||
|
# succeed from a fresh git checkout; not all of these programs are
|
||||||
|
# required to run 'make dist' on a tarball.
|
||||||
|
buildreq="\
|
||||||
|
autoconf 2.59
|
||||||
|
automake 1.9.6
|
||||||
|
autopoint -
|
||||||
|
gettext 0.17
|
||||||
|
git 1.5.5
|
||||||
|
gzip -
|
||||||
|
libtool -
|
||||||
|
patch -
|
||||||
|
perl 5.5
|
||||||
|
perl::XML::XPath -
|
||||||
|
pkg-config -
|
||||||
|
rpcgen -
|
||||||
|
tar -
|
||||||
|
xmllint -
|
||||||
|
xsltproc -
|
||||||
|
"
|
||||||
|
|
||||||
|
# Automake requires that ChangeLog and AUTHORS exist.
|
||||||
|
touch AUTHORS ChangeLog || exit 1
|
||||||
|
|
||||||
|
# Override bootstrap's list - we don't use mdate-sh or texinfo.tex.
|
||||||
|
gnulib_extra_files="
|
||||||
|
build-aux/install-sh
|
||||||
|
build-aux/depcomp
|
||||||
|
build-aux/config.guess
|
||||||
|
build-aux/config.sub
|
||||||
|
doc/INSTALL
|
||||||
|
"
|
||||||
|
|
||||||
|
|
||||||
|
bootstrap_post_import_hook()
|
||||||
|
{
|
||||||
|
# Change paths in gnulib/tests/gnulib.mk from "../../.." to "../..",
|
||||||
|
# and make tests conditional by changing "TESTS" to "GNULIB_TESTS".
|
||||||
|
m=gnulib/tests/gnulib.mk
|
||||||
|
sed 's,\.\./\.\./\.\.,../..,g; s/^TESTS /GNULIB_TESTS /' $m > $m-t
|
||||||
|
mv -f $m-t $m
|
||||||
|
}
|
@@ -1,12 +0,0 @@
|
|||||||
# define variables
|
|
||||||
|
|
||||||
top_srcdir = @top_srcdir@
|
|
||||||
top_builddir = @top_builddir@
|
|
||||||
FLAKE8 = @flake8_path@
|
|
||||||
RUNUTF8 = @runutf8@
|
|
||||||
PYTHON = @PYTHON3@
|
|
||||||
GREP = @GREP@
|
|
||||||
SED = @SED@
|
|
||||||
|
|
||||||
# include syntax-check.mk file
|
|
||||||
include $(top_srcdir)/build-aux/syntax-check.mk
|
|
71
build-aux/augeas-gentest.pl
Executable file
71
build-aux/augeas-gentest.pl
Executable file
@@ -0,0 +1,71 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
#
|
||||||
|
# augeas-gentest.pl: Generate an augeas test file, from an
|
||||||
|
# example config file + test file template
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This library is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library. If not, see
|
||||||
|
# <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Daniel P. Berrange <berrange@redhat.com>
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
die "syntax: $0 CONFIG TEMPLATE AUGTEST\n" unless @ARGV == 3;
|
||||||
|
|
||||||
|
my $config = shift @ARGV;
|
||||||
|
my $template = shift @ARGV;
|
||||||
|
my $augtest = shift @ARGV;
|
||||||
|
|
||||||
|
open AUGTEST, ">", $augtest or die "cannot create $augtest: $!";
|
||||||
|
|
||||||
|
$SIG{__DIE__} = sub {
|
||||||
|
unlink $augtest;
|
||||||
|
};
|
||||||
|
|
||||||
|
open CONFIG, "<", $config or die "cannot read $config: $!";
|
||||||
|
open TEMPLATE, "<", $template or die "cannot read $template: $!";
|
||||||
|
|
||||||
|
my $group = 0;
|
||||||
|
while (<TEMPLATE>) {
|
||||||
|
if (/::CONFIG::/) {
|
||||||
|
my $group = 0;
|
||||||
|
print AUGTEST " let conf = \"";
|
||||||
|
while (<CONFIG>) {
|
||||||
|
if (/^#\w/) {
|
||||||
|
s/^#//;
|
||||||
|
s/\"/\\\"/g;
|
||||||
|
print AUGTEST $_;
|
||||||
|
$group = /\[\s$/;
|
||||||
|
} elsif ($group) {
|
||||||
|
s/\"/\\\"/g;
|
||||||
|
if (/#\s*\]/) {
|
||||||
|
$group = 0;
|
||||||
|
}
|
||||||
|
if (/^#/) {
|
||||||
|
s/^#//;
|
||||||
|
print AUGTEST $_;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print AUGTEST "\"\n";
|
||||||
|
} else {
|
||||||
|
print AUGTEST $_;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
close TEMPLATE;
|
||||||
|
close CONFIG;
|
||||||
|
close AUGTEST or die "cannot save $augtest: $!";
|
@@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env perl
|
#!/usr/bin/perl
|
||||||
#
|
#
|
||||||
# check-spacing.pl: Report any usage of 'function (..args..)'
|
# check-spacing.pl: Report any usage of 'function (..args..)'
|
||||||
# Also check for other syntax issues, such as correct use of ';'
|
# Also check for other syntax issues, such as correct use of ';'
|
||||||
@@ -16,6 +16,9 @@
|
|||||||
# You should have received a copy of the GNU Lesser General Public
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
# License along with this library. If not, see
|
# License along with this library. If not, see
|
||||||
# <http://www.gnu.org/licenses/>.
|
# <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Daniel P. Berrange <berrange@redhat.com>
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
@@ -24,6 +27,11 @@ my $ret = 0;
|
|||||||
my $incomment = 0;
|
my $incomment = 0;
|
||||||
|
|
||||||
foreach my $file (@ARGV) {
|
foreach my $file (@ARGV) {
|
||||||
|
# Per-file variables for multiline Curly Bracket (cb_) check
|
||||||
|
my $cb_linenum = 0;
|
||||||
|
my $cb_code = "";
|
||||||
|
my $cb_scolon = 0;
|
||||||
|
|
||||||
open FILE, $file;
|
open FILE, $file;
|
||||||
|
|
||||||
while (defined (my $line = <FILE>)) {
|
while (defined (my $line = <FILE>)) {
|
||||||
@@ -37,6 +45,9 @@ foreach my $file (@ARGV) {
|
|||||||
# Kill any quoted strings
|
# Kill any quoted strings
|
||||||
$data =~ s,"(?:[^\\\"]|\\.)*","XXX",g;
|
$data =~ s,"(?:[^\\\"]|\\.)*","XXX",g;
|
||||||
|
|
||||||
|
# Kill any C++ style comments
|
||||||
|
$data =~ s,//.*$,//,;
|
||||||
|
|
||||||
next if $data =~ /^#/;
|
next if $data =~ /^#/;
|
||||||
|
|
||||||
# Kill contents of multi-line comments
|
# Kill contents of multi-line comments
|
||||||
@@ -155,6 +166,37 @@ foreach my $file (@ARGV) {
|
|||||||
print "$file:$.: $line";
|
print "$file:$.: $line";
|
||||||
$ret = 1;
|
$ret = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# One line conditional statements with one line bodies should
|
||||||
|
# not use curly brackets.
|
||||||
|
if ($data =~ /^\s*(if|while|for)\b.*\{$/) {
|
||||||
|
$cb_linenum = $.;
|
||||||
|
$cb_code = $line;
|
||||||
|
$cb_scolon = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
# We need to check for exactly one semicolon inside the body,
|
||||||
|
# because empty statements (e.g. with comment only) are
|
||||||
|
# allowed
|
||||||
|
if ($cb_linenum == $. - 1 && $data =~ /^[^;]*;[^;]*$/) {
|
||||||
|
$cb_code .= $line;
|
||||||
|
$cb_scolon = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($data =~ /^\s*}\s*$/ &&
|
||||||
|
$cb_linenum == $. - 2 &&
|
||||||
|
$cb_scolon) {
|
||||||
|
|
||||||
|
print "Curly brackets around single-line body:\n";
|
||||||
|
print "$file:$cb_linenum-$.:\n$cb_code$line";
|
||||||
|
$ret = 1;
|
||||||
|
|
||||||
|
# There _should_ be no need to reset the values; but to
|
||||||
|
# keep my inner peace...
|
||||||
|
$cb_linenum = 0;
|
||||||
|
$cb_scolon = 0;
|
||||||
|
$cb_code = "";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
close FILE;
|
close FILE;
|
||||||
}
|
}
|
||||||
|
@@ -1,69 +0,0 @@
|
|||||||
syntax_check_conf = configuration_data()
|
|
||||||
syntax_check_conf.set('top_srcdir', meson.source_root())
|
|
||||||
syntax_check_conf.set('top_builddir', meson.build_root())
|
|
||||||
|
|
||||||
flake8_path = ''
|
|
||||||
if flake8_prog.found()
|
|
||||||
flake8_path = flake8_prog.path()
|
|
||||||
endif
|
|
||||||
syntax_check_conf.set('flake8_path', flake8_path)
|
|
||||||
syntax_check_conf.set('runutf8', ' '.join(runutf8))
|
|
||||||
syntax_check_conf.set('PYTHON3', python3_prog.path())
|
|
||||||
|
|
||||||
if host_machine.system() == 'freebsd' or host_machine.system() == 'darwin'
|
|
||||||
make_prog = find_program('gmake')
|
|
||||||
sed_prog = find_program('gsed')
|
|
||||||
else
|
|
||||||
make_prog = find_program('make')
|
|
||||||
sed_prog = find_program('sed')
|
|
||||||
endif
|
|
||||||
|
|
||||||
if host_machine.system() == 'freebsd'
|
|
||||||
grep_prog = find_program('grep')
|
|
||||||
grep_cmd = run_command(grep_prog, '--version')
|
|
||||||
if grep_cmd.stdout().startswith('grep (BSD grep')
|
|
||||||
grep_prog = find_program('/usr/local/bin/grep', required: false)
|
|
||||||
if not grep_prog.found()
|
|
||||||
error('GNU grep not found')
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
elif host_machine.system() == 'darwin'
|
|
||||||
grep_prog = find_program('ggrep')
|
|
||||||
else
|
|
||||||
grep_prog = find_program('grep')
|
|
||||||
endif
|
|
||||||
|
|
||||||
syntax_check_conf.set('GREP', grep_prog.path())
|
|
||||||
syntax_check_conf.set('SED', sed_prog.path())
|
|
||||||
|
|
||||||
configure_file(
|
|
||||||
input: 'Makefile.in',
|
|
||||||
output: '@BASENAME@',
|
|
||||||
configuration: syntax_check_conf,
|
|
||||||
)
|
|
||||||
|
|
||||||
rc = run_command(
|
|
||||||
'sed', '-n',
|
|
||||||
's/^\\(sc_[a-zA-Z0-9_-]*\\):.*/\\1/p',
|
|
||||||
meson.current_source_dir() / 'syntax-check.mk',
|
|
||||||
check: true,
|
|
||||||
)
|
|
||||||
|
|
||||||
sc_tests = rc.stdout().strip().split()
|
|
||||||
|
|
||||||
|
|
||||||
# Skip syntax-check if not building from git because we get the list of files
|
|
||||||
# to check using git commands and it fails if we are not in git repository.
|
|
||||||
if git
|
|
||||||
foreach target : sc_tests
|
|
||||||
test(
|
|
||||||
target,
|
|
||||||
make_prog,
|
|
||||||
args: [ '-C', meson.current_build_dir(), target ],
|
|
||||||
depends: [
|
|
||||||
potfiles_dep,
|
|
||||||
],
|
|
||||||
suite: 'syntax-check',
|
|
||||||
)
|
|
||||||
endforeach
|
|
||||||
endif
|
|
26
build-aux/prohibit-duplicate-header.pl
Normal file
26
build-aux/prohibit-duplicate-header.pl
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
my $file = " ";
|
||||||
|
my $ret = 0;
|
||||||
|
my %includes = ( );
|
||||||
|
my $lineno = 0;
|
||||||
|
|
||||||
|
while (<>) {
|
||||||
|
if (not $file eq $ARGV) {
|
||||||
|
%includes = ( );
|
||||||
|
$file = $ARGV;
|
||||||
|
$lineno = 0;
|
||||||
|
}
|
||||||
|
$lineno++;
|
||||||
|
if (/^# *include *[<"]([^>"]*\.h)[">]/) {
|
||||||
|
$includes{$1}++;
|
||||||
|
if ($includes{$1} == 2) {
|
||||||
|
$ret = 1;
|
||||||
|
print STDERR "$ARGV:$lineno: $_";
|
||||||
|
print STDERR "Do not include a header more than once per file\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exit $ret;
|
File diff suppressed because it is too large
Load Diff
@@ -1,226 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#! -*-perl-*-
|
|
||||||
|
|
||||||
# Detect instances of "if (p) free (p);".
|
|
||||||
# Likewise "if (p != 0)", "if (0 != p)", or with NULL; and with braces.
|
|
||||||
|
|
||||||
# Copyright (C) 2008-2019 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
# Written by Jim Meyering
|
|
||||||
|
|
||||||
# This is a prologue that allows to run a perl script as an executable
|
|
||||||
# on systems that are compliant to a POSIX version before POSIX:2017.
|
|
||||||
# On such systems, the usual invocation of an executable through execlp()
|
|
||||||
# or execvp() fails with ENOEXEC if it is a script that does not start
|
|
||||||
# with a #! line. The script interpreter mentioned in the #! line has
|
|
||||||
# to be /bin/sh, because on GuixSD systems that is the only program that
|
|
||||||
# has a fixed file name. The second line is essential for perl and is
|
|
||||||
# also useful for editing this file in Emacs. The next two lines below
|
|
||||||
# are valid code in both sh and perl. When executed by sh, they re-execute
|
|
||||||
# the script through the perl program found in $PATH. The '-x' option
|
|
||||||
# is essential as well; without it, perl would re-execute the script
|
|
||||||
# through /bin/sh. When executed by perl, the next two lines are a no-op.
|
|
||||||
eval 'exec perl -wSx "$0" "$@"'
|
|
||||||
if 0;
|
|
||||||
|
|
||||||
my $VERSION = '2018-03-07 03:47'; # UTC
|
|
||||||
# The definition above must lie within the first 8 lines in order
|
|
||||||
# for the Emacs time-stamp write hook (at end) to update it.
|
|
||||||
# If you change this file with Emacs, please let the write hook
|
|
||||||
# do its job. Otherwise, update this string manually.
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings;
|
|
||||||
use Getopt::Long;
|
|
||||||
|
|
||||||
(my $ME = $0) =~ s|.*/||;
|
|
||||||
|
|
||||||
# use File::Coda; # https://meyering.net/code/Coda/
|
|
||||||
END {
|
|
||||||
defined fileno STDOUT or return;
|
|
||||||
close STDOUT and return;
|
|
||||||
warn "$ME: failed to close standard output: $!\n";
|
|
||||||
$? ||= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub usage ($)
|
|
||||||
{
|
|
||||||
my ($exit_code) = @_;
|
|
||||||
my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
|
|
||||||
if ($exit_code != 0)
|
|
||||||
{
|
|
||||||
print $STREAM "Try '$ME --help' for more information.\n";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
print $STREAM <<EOF;
|
|
||||||
Usage: $ME [OPTIONS] FILE...
|
|
||||||
|
|
||||||
Detect any instance in FILE of a useless "if" test before a free call, e.g.,
|
|
||||||
"if (p) free (p);". Any such test may be safely removed without affecting
|
|
||||||
the semantics of the C code in FILE. Use --name=FOO --name=BAR to also
|
|
||||||
detect free-like functions named FOO and BAR.
|
|
||||||
|
|
||||||
OPTIONS:
|
|
||||||
|
|
||||||
--list print only the name of each matching FILE (\\0-terminated)
|
|
||||||
--name=N add name N to the list of \'free\'-like functions to detect;
|
|
||||||
may be repeated
|
|
||||||
|
|
||||||
--help display this help and exit
|
|
||||||
--version output version information and exit
|
|
||||||
|
|
||||||
Exit status:
|
|
||||||
|
|
||||||
0 one or more matches
|
|
||||||
1 no match
|
|
||||||
2 an error
|
|
||||||
|
|
||||||
EXAMPLE:
|
|
||||||
|
|
||||||
For example, this command prints all removable "if" tests before "free"
|
|
||||||
and "kfree" calls in the linux kernel sources:
|
|
||||||
|
|
||||||
git ls-files -z |xargs -0 $ME --name=kfree
|
|
||||||
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
exit $exit_code;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub is_NULL ($)
|
|
||||||
{
|
|
||||||
my ($expr) = @_;
|
|
||||||
return ($expr eq 'NULL' || $expr eq '0');
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
sub EXIT_MATCH {0}
|
|
||||||
sub EXIT_NO_MATCH {1}
|
|
||||||
sub EXIT_ERROR {2}
|
|
||||||
my $err = EXIT_NO_MATCH;
|
|
||||||
|
|
||||||
my $list;
|
|
||||||
my @name = qw(free);
|
|
||||||
GetOptions
|
|
||||||
(
|
|
||||||
help => sub { usage 0 },
|
|
||||||
version => sub { print "$ME version $VERSION\n"; exit },
|
|
||||||
list => \$list,
|
|
||||||
'name=s@' => \@name,
|
|
||||||
) or usage 1;
|
|
||||||
|
|
||||||
# Make sure we have the right number of non-option arguments.
|
|
||||||
# Always tell the user why we fail.
|
|
||||||
@ARGV < 1
|
|
||||||
and (warn "$ME: missing FILE argument\n"), usage EXIT_ERROR;
|
|
||||||
|
|
||||||
my $or = join '|', @name;
|
|
||||||
my $regexp = qr/(?:$or)/;
|
|
||||||
|
|
||||||
# Set the input record separator.
|
|
||||||
# Note: this makes it impractical to print line numbers.
|
|
||||||
$/ = '"';
|
|
||||||
|
|
||||||
my $found_match = 0;
|
|
||||||
FILE:
|
|
||||||
foreach my $file (@ARGV)
|
|
||||||
{
|
|
||||||
open FH, '<', $file
|
|
||||||
or (warn "$ME: can't open '$file' for reading: $!\n"),
|
|
||||||
$err = EXIT_ERROR, next;
|
|
||||||
while (defined (my $line = <FH>))
|
|
||||||
{
|
|
||||||
# Skip non-matching lines early to save time
|
|
||||||
$line =~ /\bif\b/
|
|
||||||
or next;
|
|
||||||
while ($line =~
|
|
||||||
/\b(if\s*\(\s*([^)]+?)(?:\s*!=\s*([^)]+?))?\s*\)
|
|
||||||
# 1 2 3
|
|
||||||
(?: \s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)\s*;|
|
|
||||||
\s*\{\s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)\s*;\s*\}))/sxg)
|
|
||||||
{
|
|
||||||
my $all = $1;
|
|
||||||
my ($lhs, $rhs) = ($2, $3);
|
|
||||||
my ($free_opnd, $braced_free_opnd) = ($4, $5);
|
|
||||||
my $non_NULL;
|
|
||||||
if (!defined $rhs) { $non_NULL = $lhs }
|
|
||||||
elsif (is_NULL $rhs) { $non_NULL = $lhs }
|
|
||||||
elsif (is_NULL $lhs) { $non_NULL = $rhs }
|
|
||||||
else { next }
|
|
||||||
|
|
||||||
# Compare the non-NULL part of the "if" expression and the
|
|
||||||
# free'd expression, without regard to white space.
|
|
||||||
$non_NULL =~ tr/ \t//d;
|
|
||||||
my $e2 = defined $free_opnd ? $free_opnd : $braced_free_opnd;
|
|
||||||
$e2 =~ tr/ \t//d;
|
|
||||||
if ($non_NULL eq $e2)
|
|
||||||
{
|
|
||||||
$found_match = 1;
|
|
||||||
$list
|
|
||||||
and (print "$file\0"), next FILE;
|
|
||||||
print "$file: $all\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
continue
|
|
||||||
{
|
|
||||||
close FH;
|
|
||||||
}
|
|
||||||
|
|
||||||
$found_match && $err == EXIT_NO_MATCH
|
|
||||||
and $err = EXIT_MATCH;
|
|
||||||
|
|
||||||
exit $err;
|
|
||||||
}
|
|
||||||
|
|
||||||
my $foo = <<'EOF';
|
|
||||||
# The above is to *find* them.
|
|
||||||
# This adjusts them, removing the unnecessary "if (p)" part.
|
|
||||||
|
|
||||||
# FIXME: do something like this as an option (doesn't do braces):
|
|
||||||
free=xfree
|
|
||||||
git grep -l -z "$free *(" \
|
|
||||||
| xargs -0 useless-if-before-free -l --name="$free" \
|
|
||||||
| xargs -0 perl -0x3b -pi -e \
|
|
||||||
's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s+('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\)\s*;)/$2/s'
|
|
||||||
|
|
||||||
# Use the following to remove redundant uses of kfree inside braces.
|
|
||||||
# Note that -0777 puts perl in slurp-whole-file mode;
|
|
||||||
# but we have plenty of memory, these days...
|
|
||||||
free=kfree
|
|
||||||
git grep -l -z "$free *(" \
|
|
||||||
| xargs -0 useless-if-before-free -l --name="$free" \
|
|
||||||
| xargs -0 perl -0777 -pi -e \
|
|
||||||
's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s*\{\s*('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\);)\s*\}[^\n]*$/$2/gms'
|
|
||||||
|
|
||||||
Be careful that the result of the above transformation is valid.
|
|
||||||
If the matched string is followed by "else", then obviously, it won't be.
|
|
||||||
|
|
||||||
When modifying files, refuse to process anything other than a regular file.
|
|
||||||
EOF
|
|
||||||
|
|
||||||
## Local Variables:
|
|
||||||
## mode: perl
|
|
||||||
## indent-tabs-mode: nil
|
|
||||||
## eval: (add-hook 'before-save-hook 'time-stamp)
|
|
||||||
## time-stamp-line-limit: 50
|
|
||||||
## time-stamp-start: "my $VERSION = '"
|
|
||||||
## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
|
|
||||||
## time-stamp-time-zone: "UTC0"
|
|
||||||
## time-stamp-end: "'; # UTC"
|
|
||||||
## End:
|
|
@@ -1,113 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# List version-controlled file names.
|
|
||||||
|
|
||||||
# Print a version string.
|
|
||||||
scriptversion=2018-03-07.03; # UTC
|
|
||||||
|
|
||||||
# Copyright (C) 2006-2019 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
|
|
||||||
# List the specified version-controlled files.
|
|
||||||
# With no argument, list them all. With a single DIRECTORY argument,
|
|
||||||
# list the version-controlled files in that directory.
|
|
||||||
|
|
||||||
# If there's an argument, it must be a single, "."-relative directory name.
|
|
||||||
# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
|
|
||||||
|
|
||||||
postprocess=
|
|
||||||
case $1 in
|
|
||||||
--help) cat <<EOF
|
|
||||||
Usage: $0 [-C SRCDIR] [DIR...]
|
|
||||||
|
|
||||||
Output a list of version-controlled files in DIR (default .), relative to
|
|
||||||
SRCDIR (default .). SRCDIR must be the top directory of a checkout.
|
|
||||||
|
|
||||||
Options:
|
|
||||||
--help print this help, then exit
|
|
||||||
--version print version number, then exit
|
|
||||||
-C SRCDIR change directory to SRCDIR before generating list
|
|
||||||
|
|
||||||
Report bugs and patches to <bug-gnulib@gnu.org>.
|
|
||||||
EOF
|
|
||||||
exit ;;
|
|
||||||
|
|
||||||
--version)
|
|
||||||
year=`echo "$scriptversion" | sed 's/[^0-9].*//'`
|
|
||||||
cat <<EOF
|
|
||||||
vc-list-files $scriptversion
|
|
||||||
Copyright (C) $year Free Software Foundation, Inc,
|
|
||||||
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
|
|
||||||
This is free software: you are free to change and redistribute it.
|
|
||||||
There is NO WARRANTY, to the extent permitted by law.
|
|
||||||
EOF
|
|
||||||
exit ;;
|
|
||||||
|
|
||||||
-C)
|
|
||||||
test "$2" = . || postprocess="| sed 's|^|$2/|'"
|
|
||||||
cd "$2" || exit 1
|
|
||||||
shift; shift ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
test $# = 0 && set .
|
|
||||||
|
|
||||||
for dir
|
|
||||||
do
|
|
||||||
if test -d .git || test -f .git; then
|
|
||||||
test "x$dir" = x. \
|
|
||||||
&& dir= sed_esc= \
|
|
||||||
|| { dir="$dir/"; sed_esc=`echo "$dir"|env sed 's,\([\\/]\),\\\\\1,g'`; }
|
|
||||||
# Ignore git symlinks - either they point into the tree, in which case
|
|
||||||
# we don't need to visit the target twice, or they point somewhere
|
|
||||||
# else (often into a submodule), in which case the content does not
|
|
||||||
# belong to this package.
|
|
||||||
eval exec git ls-tree -r 'HEAD:"$dir"' \
|
|
||||||
\| sed -n '"s/^100[^ ]*./$sed_esc/p"' $postprocess
|
|
||||||
elif test -d .hg; then
|
|
||||||
eval exec hg locate '"$dir/*"' $postprocess
|
|
||||||
elif test -d .bzr; then
|
|
||||||
test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
|
|
||||||
eval exec bzr ls -R --versioned '"$dir"' $postprocess
|
|
||||||
elif test -d CVS; then
|
|
||||||
test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
|
|
||||||
if test -x build-aux/cvsu; then
|
|
||||||
eval build-aux/cvsu --find --types=AFGM '"$dir"' $postprocess
|
|
||||||
elif (cvsu --help) >/dev/null 2>&1; then
|
|
||||||
eval cvsu --find --types=AFGM '"$dir"' $postprocess
|
|
||||||
else
|
|
||||||
eval awk -F/ \''{ \
|
|
||||||
if (!$1 && $3 !~ /^-/) { \
|
|
||||||
f=FILENAME; \
|
|
||||||
if (f ~ /CVS\/Entries$/) \
|
|
||||||
f = substr(f, 1, length(f)-11); \
|
|
||||||
print f $2; \
|
|
||||||
}}'\'' \
|
|
||||||
`find "$dir" -name Entries -print` /dev/null' $postprocess
|
|
||||||
fi
|
|
||||||
elif test -d .svn; then
|
|
||||||
eval exec svn list -R '"$dir"' $postprocess
|
|
||||||
else
|
|
||||||
echo "$0: Failed to determine type of version control used in `pwd`" 1>&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Local variables:
|
|
||||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
|
||||||
# time-stamp-start: "scriptversion="
|
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
|
||||||
# time-stamp-time-zone: "UTC0"
|
|
||||||
# time-stamp-end: "; # UTC"
|
|
||||||
# End:
|
|
245
ci/Makefile
245
ci/Makefile
@@ -1,245 +0,0 @@
|
|||||||
# -*- makefile -*-
|
|
||||||
# vim: filetype=make
|
|
||||||
|
|
||||||
# The root directory of the libvirt.git checkout
|
|
||||||
CI_GIT_ROOT = $(shell git rev-parse --show-toplevel)
|
|
||||||
|
|
||||||
# The root directory for all CI-related contents
|
|
||||||
CI_ROOTDIR = $(CI_GIT_ROOT)/ci
|
|
||||||
|
|
||||||
# The directory holding content on the host that we will
|
|
||||||
# expose to the container.
|
|
||||||
CI_SCRATCHDIR = $(CI_ROOTDIR)/scratch
|
|
||||||
|
|
||||||
# The directory holding the clone of the git repo that
|
|
||||||
# we will expose to the container
|
|
||||||
CI_HOST_SRCDIR = $(CI_SCRATCHDIR)/src
|
|
||||||
|
|
||||||
# The directory holding the source inside the
|
|
||||||
# container, i.e. where we want to expose
|
|
||||||
# the $(CI_HOST_SRCDIR) directory from the host
|
|
||||||
CI_CONT_SRCDIR = $(CI_USER_HOME)/libvirt
|
|
||||||
|
|
||||||
# Script containing build instructions
|
|
||||||
CI_BUILD_SCRIPT = $(CI_ROOTDIR)/build.sh
|
|
||||||
|
|
||||||
# Location of the container images we're going to pull
|
|
||||||
# Can be useful to override to use a locally built
|
|
||||||
# image instead
|
|
||||||
CI_IMAGE_PREFIX = registry.gitlab.com/libvirt/libvirt/ci-
|
|
||||||
|
|
||||||
# The default tag is ':latest' but if the container
|
|
||||||
# repo above uses different conventions this can override it
|
|
||||||
CI_IMAGE_TAG = :latest
|
|
||||||
|
|
||||||
# We delete the virtual root after completion, set
|
|
||||||
# to 0 if you need to keep it around for debugging
|
|
||||||
CI_CLEAN = 1
|
|
||||||
|
|
||||||
# We'll always freshly clone the virtual root each
|
|
||||||
# time in case it was not cleaned up before. Set
|
|
||||||
# to 1 if you want to try restarting a previously
|
|
||||||
# preserved env
|
|
||||||
CI_REUSE = 0
|
|
||||||
|
|
||||||
# We need the user's login and home directory to prepare the
|
|
||||||
# environment the way some programs expect it
|
|
||||||
CI_USER_LOGIN = $(shell whoami)
|
|
||||||
CI_USER_HOME = $(shell eval echo "~$(CI_USER_LOGIN)")
|
|
||||||
|
|
||||||
# We also need the container process to run with current host IDs
|
|
||||||
# so that it can access the passed in build directory
|
|
||||||
CI_UID = $(shell id -u "$(CI_USER_LOGIN)")
|
|
||||||
CI_GID = $(shell id -g "$(CI_USER_LOGIN)")
|
|
||||||
|
|
||||||
CI_ENGINE = auto
|
|
||||||
# Container engine we are going to use, can be overridden per make
|
|
||||||
# invocation, if it is not we try podman and then default to docker.
|
|
||||||
ifeq ($(CI_ENGINE),auto)
|
|
||||||
override CI_ENGINE = $(shell podman version >/dev/null 2>&1 && echo podman || echo docker)
|
|
||||||
endif
|
|
||||||
|
|
||||||
# IDs you run as do not need to exist in
|
|
||||||
# the container's /etc/passwd & /etc/group files, but
|
|
||||||
# if they do not, then libvirt's 'ninja test' will fail
|
|
||||||
# many tests.
|
|
||||||
|
|
||||||
# We do not directly mount /etc/{passwd,group} as Docker
|
|
||||||
# is liable to mess with SELinux labelling which will
|
|
||||||
# then prevent the host accessing them. And podman cannot
|
|
||||||
# relabel the files due to it running rootless. So
|
|
||||||
# copying them first is safer and less error-prone.
|
|
||||||
CI_PWDB_MOUNTS = \
|
|
||||||
--volume $(CI_SCRATCHDIR)/group:/etc/group:ro,z \
|
|
||||||
--volume $(CI_SCRATCHDIR)/passwd:/etc/passwd:ro,z \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
CI_HOME_MOUNTS = \
|
|
||||||
--volume $(CI_SCRATCHDIR)/home:$(CI_USER_HOME):z \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
CI_SCRIPT_MOUNTS = \
|
|
||||||
--volume $(CI_SCRATCHDIR)/build:$(CI_USER_HOME)/build:z \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
# Docker containers can have very large ulimits
|
|
||||||
# for nofiles - as much as 1048576. This makes
|
|
||||||
# libvirt very slow at exec'ing programs.
|
|
||||||
CI_ULIMIT_FILES = 1024
|
|
||||||
|
|
||||||
ifeq ($(CI_ENGINE),podman)
|
|
||||||
# Podman cannot reuse host namespace when running non-root
|
|
||||||
# containers. Until support for --keep-uid is added we can
|
|
||||||
# just create another mapping that will do that for us.
|
|
||||||
# Beware, that in {uid,git}map=container_id:host_id:range, the
|
|
||||||
# host_id does actually refer to the uid in the first mapping
|
|
||||||
# where 0 (root) is mapped to the current user and rest is
|
|
||||||
# offset.
|
|
||||||
#
|
|
||||||
# In order to set up this mapping, we need to keep all the
|
|
||||||
# user IDs to prevent possible errors as some images might
|
|
||||||
# expect UIDs up to 90000 (looking at you fedora), so we don't
|
|
||||||
# want the overflowuid to be used for them. For mapping all
|
|
||||||
# the other users properly, some math needs to be done.
|
|
||||||
# Don't worry, it's just addition and subtraction.
|
|
||||||
#
|
|
||||||
# 65536 ought to be enough (tm), but for really rare cases the
|
|
||||||
# maximums might need to be higher, but that only happens when
|
|
||||||
# your /etc/sub{u,g}id allow users to have more IDs. Unless
|
|
||||||
# --keep-uid is supported, let's do this in a way that should
|
|
||||||
# work for everyone.
|
|
||||||
CI_MAX_UID = $(shell sed -n "s/^$(CI_USER_LOGIN):[^:]\+://p" /etc/subuid)
|
|
||||||
CI_MAX_GID = $(shell sed -n "s/^$(CI_USER_LOGIN):[^:]\+://p" /etc/subgid)
|
|
||||||
ifeq ($(CI_MAX_UID),)
|
|
||||||
CI_MAX_UID = 65536
|
|
||||||
endif
|
|
||||||
ifeq ($(CI_MAX_GID),)
|
|
||||||
CI_MAX_GID = 65536
|
|
||||||
endif
|
|
||||||
CI_UID_OTHER = $(shell echo $$(($(CI_UID)+1)))
|
|
||||||
CI_GID_OTHER = $(shell echo $$(($(CI_GID)+1)))
|
|
||||||
CI_UID_OTHER_RANGE = $(shell echo $$(($(CI_MAX_UID)-$(CI_UID))))
|
|
||||||
CI_GID_OTHER_RANGE = $(shell echo $$(($(CI_MAX_GID)-$(CI_GID))))
|
|
||||||
|
|
||||||
ifneq ($(CI_UID), 0)
|
|
||||||
CI_PODMAN_ARGS = \
|
|
||||||
--uidmap 0:1:$(CI_UID) \
|
|
||||||
--uidmap $(CI_UID):0:1 \
|
|
||||||
--uidmap $(CI_UID_OTHER):$(CI_UID_OTHER):$(CI_UID_OTHER_RANGE) \
|
|
||||||
--gidmap 0:1:$(CI_GID) \
|
|
||||||
--gidmap $(CI_GID):0:1 \
|
|
||||||
--gidmap $(CI_GID_OTHER):$(CI_GID_OTHER):$(CI_GID_OTHER_RANGE) \
|
|
||||||
$(NULL)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Args to use when cloning a git repo.
|
|
||||||
# -c stop it complaining about checking out a random hash
|
|
||||||
# -q stop it displaying progress info for local clone
|
|
||||||
# --local ensure we don't actually copy files
|
|
||||||
CI_GIT_ARGS = \
|
|
||||||
-c advice.detachedHead=false \
|
|
||||||
-q \
|
|
||||||
--local \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
# Args to use when running the container
|
|
||||||
# --rm stop inactive containers getting left behind
|
|
||||||
# --user we execute as the same user & group account
|
|
||||||
# as dev so that file ownership matches host
|
|
||||||
# instead of root:root
|
|
||||||
# --workdir we change to user's home dir in the container
|
|
||||||
# before running the workload
|
|
||||||
# --volume to pass in the cloned git repo & config
|
|
||||||
# --ulimit lower files limit for performance reasons
|
|
||||||
# --interactive
|
|
||||||
# --tty Ensure we have ability to Ctrl-C the build
|
|
||||||
CI_ENGINE_ARGS = \
|
|
||||||
--rm \
|
|
||||||
--interactive \
|
|
||||||
--tty \
|
|
||||||
--user "$(CI_UID)":"$(CI_GID)" \
|
|
||||||
--workdir "$(CI_USER_HOME)" \
|
|
||||||
--env CI_CONT_SRCDIR="$(CI_CONT_SRCDIR)" \
|
|
||||||
--env CI_MESON_ARGS="$(CI_MESON_ARGS)" \
|
|
||||||
--env CI_NINJA_ARGS="$(CI_NINJA_ARGS)" \
|
|
||||||
$(CI_PODMAN_ARGS) \
|
|
||||||
$(CI_PWDB_MOUNTS) \
|
|
||||||
$(CI_HOME_MOUNTS) \
|
|
||||||
$(CI_SCRIPT_MOUNTS) \
|
|
||||||
--volume $(CI_HOST_SRCDIR):$(CI_CONT_SRCDIR):z \
|
|
||||||
--ulimit nofile=$(CI_ULIMIT_FILES):$(CI_ULIMIT_FILES) \
|
|
||||||
--cap-add=SYS_PTRACE \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
ci-check-engine:
|
|
||||||
@echo -n "Checking if $(CI_ENGINE) is available..." && \
|
|
||||||
$(CI_ENGINE) version 1>/dev/null && echo "yes"
|
|
||||||
|
|
||||||
ci-prepare-tree: ci-check-engine
|
|
||||||
@test "$(CI_REUSE)" != "1" && rm -rf $(CI_SCRATCHDIR) || :
|
|
||||||
@if ! test -d $(CI_SCRATCHDIR) ; then \
|
|
||||||
mkdir -p $(CI_SCRATCHDIR); \
|
|
||||||
cp /etc/passwd $(CI_SCRATCHDIR); \
|
|
||||||
cp /etc/group $(CI_SCRATCHDIR); \
|
|
||||||
mkdir -p $(CI_SCRATCHDIR)/home; \
|
|
||||||
cp "$(CI_BUILD_SCRIPT)" $(CI_SCRATCHDIR)/build; \
|
|
||||||
chmod +x "$(CI_SCRATCHDIR)/build"; \
|
|
||||||
echo "Cloning $(CI_GIT_ROOT) to $(CI_HOST_SRCDIR)"; \
|
|
||||||
git clone $(CI_GIT_ARGS) $(CI_GIT_ROOT) $(CI_HOST_SRCDIR) || exit 1; \
|
|
||||||
for mod in $$(git submodule | awk '{ print $$2 }' | sed -E 's,^../,,g') ; \
|
|
||||||
do \
|
|
||||||
test -f $(CI_GIT_ROOT)/$$mod/.git || continue ; \
|
|
||||||
echo "Cloning $(CI_GIT_ROOT)/$$mod to $(CI_HOST_SRCDIR)/$$mod"; \
|
|
||||||
git clone $(CI_GIT_ARGS) $(CI_GIT_ROOT)/$$mod $(CI_HOST_SRCDIR)/$$mod || exit 1; \
|
|
||||||
done ; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
ci-run-command@%: ci-prepare-tree
|
|
||||||
$(CI_ENGINE) run \
|
|
||||||
$(CI_ENGINE_ARGS) \
|
|
||||||
$(CI_IMAGE_PREFIX)$*$(CI_IMAGE_TAG) \
|
|
||||||
$(CI_COMMAND)
|
|
||||||
@test "$(CI_CLEAN)" = "1" && rm -rf $(CI_SCRATCHDIR) || :
|
|
||||||
|
|
||||||
ci-shell@%:
|
|
||||||
$(MAKE) -C $(CI_ROOTDIR) ci-run-command@$* CI_COMMAND="/bin/bash"
|
|
||||||
|
|
||||||
ci-build@%:
|
|
||||||
$(MAKE) -C $(CI_ROOTDIR) ci-run-command@$* CI_COMMAND="$(CI_USER_HOME)/build"
|
|
||||||
|
|
||||||
ci-test@%:
|
|
||||||
$(MAKE) -C $(CI_ROOTDIR) ci-build@$* CI_NINJA_ARGS=test
|
|
||||||
|
|
||||||
ci-help:
|
|
||||||
@echo
|
|
||||||
@echo
|
|
||||||
@echo
|
|
||||||
@echo " !!! PLEASE DON'T USE THIS DIRECTLY !!!"
|
|
||||||
@echo
|
|
||||||
@echo " Use the ci/helper script instead"
|
|
||||||
@echo
|
|
||||||
@echo " !!! PLEASE DON'T USE THIS DIRECTLY !!!"
|
|
||||||
@echo
|
|
||||||
@echo
|
|
||||||
@echo
|
|
||||||
@echo "Build libvirt inside containers used for CI"
|
|
||||||
@echo
|
|
||||||
@echo "Available targets:"
|
|
||||||
@echo
|
|
||||||
@echo " ci-build@\$$IMAGE - run a default 'ninja' build"
|
|
||||||
@echo " ci-test@\$$IMAGE - run a 'ninja test'"
|
|
||||||
@echo " ci-shell@\$$IMAGE - run an interactive shell"
|
|
||||||
@echo " ci-help - show this help message"
|
|
||||||
@echo
|
|
||||||
@echo "Available make variables:"
|
|
||||||
@echo
|
|
||||||
@echo " CI_CLEAN=0 - do not delete '$(CI_SCRATCHDIR)' after completion"
|
|
||||||
@echo " CI_REUSE=1 - re-use existing '$(CI_SCRATCHDIR)' content"
|
|
||||||
@echo " CI_ENGINE=auto - container engine to use (podman, docker)"
|
|
||||||
@echo " CI_USER_LOGIN= - which user should run in the container (default is $$USER)"
|
|
||||||
@echo " CI_IMAGE_PREFIX= - override to prefer a locally built image, (default is $(CI_IMAGE_PREFIX))"
|
|
||||||
@echo " CI_IMAGE_TAG=:latest - optionally use in conjunction with 'CI_IMAGE_PREFIX'"
|
|
||||||
@echo " CI_MESON_ARGS= - extra arguments passed to meson"
|
|
||||||
@echo " CI_NINJA_ARGS= - extra arguments passed to ninja"
|
|
||||||
@echo
|
|
@@ -1,65 +0,0 @@
|
|||||||
==============
|
|
||||||
CI for libvirt
|
|
||||||
==============
|
|
||||||
|
|
||||||
This document provides some information related to the CI capabilities for the
|
|
||||||
libvirt project.
|
|
||||||
|
|
||||||
|
|
||||||
Cirrus CI integration
|
|
||||||
=====================
|
|
||||||
|
|
||||||
libvirt currently supports three non-Linux operating systems: Windows, FreeBSD
|
|
||||||
and macOS. Windows cross-builds can be prepared on Linux by using `MinGW`_, but
|
|
||||||
for both FreeBSD and macOS we need to use the actual operating system, and
|
|
||||||
unfortunately GitLab shared runners are currently not available for either.
|
|
||||||
|
|
||||||
To work around this limitation, we take advantage of `Cirrus CI`_'s free
|
|
||||||
offering: more specifically, we use the `cirrus-run`_ script to trigger Cirrus
|
|
||||||
CI jobs from GitLab CI jobs so that the workaround is almost entirely
|
|
||||||
transparent to users and there's no need to constantly check two separate CI
|
|
||||||
dashboards.
|
|
||||||
|
|
||||||
There is, however, some one-time setup required. If you want FreeBSD and macOS
|
|
||||||
builds to happen when you push to your GitLab repository, you need to
|
|
||||||
|
|
||||||
* set up a GitHub repository for the project, eg. ``yourusername/libvirt``.
|
|
||||||
This repository needs to exist for cirrus-run to work, but it doesn't need to
|
|
||||||
be kept up to date, so you can create it and then forget about it;
|
|
||||||
|
|
||||||
* enable the `Cirrus CI GitHub app`_ for your GitHub account;
|
|
||||||
|
|
||||||
* sign up for Cirrus CI. It's enough to log into the website using your GitHub
|
|
||||||
account;
|
|
||||||
|
|
||||||
* grab an API token from the `Cirrus CI settings`_ page;
|
|
||||||
|
|
||||||
* it may be necessary to push an empty ``.cirrus.yml`` file to your github fork
|
|
||||||
for Cirrus CI to properly recognize the project. You can check whether
|
|
||||||
Cirrus CI knows about your project by navigating to:
|
|
||||||
|
|
||||||
``https://cirrus-ci.com/yourusername/libvirt``
|
|
||||||
|
|
||||||
* in the *CI/CD / Variables* section of the settings page for your GitLab
|
|
||||||
repository, create two new variables:
|
|
||||||
|
|
||||||
* ``CIRRUS_GITHUB_REPO``, containing the name of the GitHub repository
|
|
||||||
created earlier, eg. ``yourusername/libvirt``;
|
|
||||||
|
|
||||||
* ``CIRRUS_API_TOKEN``, containing the Cirrus CI API token generated earlier.
|
|
||||||
This variable **must** be marked as *Masked*, because anyone with knowledge
|
|
||||||
of it can impersonate you as far as Cirrus CI is concerned.
|
|
||||||
|
|
||||||
Neither of these variables should be marked as *Protected*, because in
|
|
||||||
general you'll want to be able to trigger Cirrus CI builds from non-protected
|
|
||||||
branches.
|
|
||||||
|
|
||||||
Once this one-time setup is complete, you can just keep pushing to your GitLab
|
|
||||||
repository as usual and you'll automatically get the additional CI coverage.
|
|
||||||
|
|
||||||
|
|
||||||
.. _Cirrus CI GitHub app: https://github.com/marketplace/cirrus-ci
|
|
||||||
.. _Cirrus CI settings: https://cirrus-ci.com/settings/profile/
|
|
||||||
.. _Cirrus CI: https://cirrus-ci.com/
|
|
||||||
.. _MinGW: http://mingw.org/
|
|
||||||
.. _cirrus-run: https://github.com/sio/cirrus-run/
|
|
23
ci/build.sh
23
ci/build.sh
@@ -1,23 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# This script is used to build libvirt inside the container.
|
|
||||||
#
|
|
||||||
# You can customize it to your liking, or alternatively use a
|
|
||||||
# completely different script by passing
|
|
||||||
#
|
|
||||||
# CI_BUILD_SCRIPT=/path/to/your/build/script
|
|
||||||
#
|
|
||||||
# to make.
|
|
||||||
|
|
||||||
cd "$CI_CONT_SRCDIR"
|
|
||||||
|
|
||||||
export VIR_TEST_DEBUG=1
|
|
||||||
|
|
||||||
# $MESON_OPTS is an env that can optionally be set in the container,
|
|
||||||
# populated at build time from the Dockerfile. A typical use case would
|
|
||||||
# be to pass options to trigger cross-compilation
|
|
||||||
|
|
||||||
meson build --werror $MESON_OPTS $CI_MESON_ARGS || \
|
|
||||||
(cat build/meson-logs/meson-log.txt && exit 1)
|
|
||||||
|
|
||||||
ninja -C build $CI_NINJA_ARGS
|
|
@@ -1,29 +0,0 @@
|
|||||||
@CIRRUS_VM_INSTANCE_TYPE@:
|
|
||||||
@CIRRUS_VM_IMAGE_SELECTOR@: @CIRRUS_VM_IMAGE_NAME@
|
|
||||||
|
|
||||||
env:
|
|
||||||
CI_REPOSITORY_URL: "@CI_REPOSITORY_URL@"
|
|
||||||
CI_COMMIT_REF_NAME: "@CI_COMMIT_REF_NAME@"
|
|
||||||
CI_COMMIT_SHA: "@CI_COMMIT_SHA@"
|
|
||||||
PATH: "@PATH@"
|
|
||||||
PKG_CONFIG_PATH: "@PKG_CONFIG_PATH@"
|
|
||||||
PYTHON: "@PYTHON@"
|
|
||||||
MAKE: "@MAKE@"
|
|
||||||
VIR_TEST_VERBOSE: "1"
|
|
||||||
VIR_TEST_DEBUG: "1"
|
|
||||||
|
|
||||||
build_task:
|
|
||||||
install_script:
|
|
||||||
- @UPDATE_COMMAND@
|
|
||||||
- @UPGRADE_COMMAND@
|
|
||||||
- @INSTALL_COMMAND@ @PKGS@
|
|
||||||
- if test -n "@PYPI_PKGS@" ; then @PIP3@ install @PYPI_PKGS@ ; fi
|
|
||||||
clone_script:
|
|
||||||
- git clone --depth 100 "$CI_REPOSITORY_URL" .
|
|
||||||
- git fetch origin "$CI_COMMIT_REF_NAME"
|
|
||||||
- git reset --hard "$CI_COMMIT_SHA"
|
|
||||||
build_script:
|
|
||||||
- meson setup build
|
|
||||||
- meson dist -C build --no-tests
|
|
||||||
- meson compile -C build
|
|
||||||
- meson test -C build --no-suite syntax-check
|
|
@@ -1,13 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool variables freebsd-12 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/a47008f1a77f92176b30729480347bdf0f372068
|
|
||||||
|
|
||||||
PACKAGING_COMMAND='pkg'
|
|
||||||
CCACHE='/usr/local/bin/ccache'
|
|
||||||
MAKE='/usr/local/bin/gmake'
|
|
||||||
NINJA='/usr/local/bin/ninja'
|
|
||||||
PYTHON='/usr/local/bin/python3'
|
|
||||||
PIP3='/usr/local/bin/pip-3.7'
|
|
||||||
PKGS='augeas avahi bash-completion ca_root_nss ccache cppi curl cyrus-sasl dbus diffutils diskscrub dnsmasq fusefs-libs gettext git glib gmake gnugrep gnutls gsed libpcap libpciaccess libssh libssh2 libxml2 libxslt meson ninja perl5 pkgconf polkit py38-docutils py38-flake8 python3 qemu radvd readline yajl'
|
|
@@ -1,13 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool variables freebsd-13 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/a47008f1a77f92176b30729480347bdf0f372068
|
|
||||||
|
|
||||||
PACKAGING_COMMAND='pkg'
|
|
||||||
CCACHE='/usr/local/bin/ccache'
|
|
||||||
MAKE='/usr/local/bin/gmake'
|
|
||||||
NINJA='/usr/local/bin/ninja'
|
|
||||||
PYTHON='/usr/local/bin/python3'
|
|
||||||
PIP3='/usr/local/bin/pip-3.7'
|
|
||||||
PKGS='augeas avahi bash-completion ca_root_nss ccache cppi curl cyrus-sasl dbus diffutils diskscrub dnsmasq fusefs-libs gettext git glib gmake gnugrep gnutls gsed libpcap libpciaccess libssh libssh2 libxml2 libxslt meson ninja perl5 pkgconf polkit py38-docutils py38-flake8 python3 qemu radvd readline yajl'
|
|
@@ -1,13 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool variables freebsd-current libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/a47008f1a77f92176b30729480347bdf0f372068
|
|
||||||
|
|
||||||
PACKAGING_COMMAND='pkg'
|
|
||||||
CCACHE='/usr/local/bin/ccache'
|
|
||||||
MAKE='/usr/local/bin/gmake'
|
|
||||||
NINJA='/usr/local/bin/ninja'
|
|
||||||
PYTHON='/usr/local/bin/python3'
|
|
||||||
PIP3='/usr/local/bin/pip-3.7'
|
|
||||||
PKGS='augeas avahi bash-completion ca_root_nss ccache cppi curl cyrus-sasl dbus diffutils diskscrub dnsmasq fusefs-libs gettext git glib gmake gnugrep gnutls gsed libpcap libpciaccess libssh libssh2 libxml2 libxslt meson ninja perl5 pkgconf polkit py38-docutils py38-flake8 python3 qemu radvd readline yajl'
|
|
@@ -1,13 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool variables macos-11 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/a47008f1a77f92176b30729480347bdf0f372068
|
|
||||||
|
|
||||||
PACKAGING_COMMAND='brew'
|
|
||||||
CCACHE='/usr/local/bin/ccache'
|
|
||||||
MAKE='/usr/local/bin/gmake'
|
|
||||||
NINJA='/usr/local/bin/ninja'
|
|
||||||
PYTHON='/usr/local/bin/python3'
|
|
||||||
PIP3='/usr/local/bin/pip3'
|
|
||||||
PKGS='augeas bash-completion ccache cppi curl dbus diffutils dnsmasq docutils flake8 gettext git glib gnu-sed gnutls grep libiscsi libpcap libssh libssh2 libxml2 libxslt make meson ninja perl pkg-config python3 qemu readline rpcgen scrub yajl'
|
|
@@ -1,36 +0,0 @@
|
|||||||
CI job assets
|
|
||||||
=============
|
|
||||||
|
|
||||||
This directory contains assets used in the automated CI jobs, most
|
|
||||||
notably the Dockerfiles used to build container images in which the
|
|
||||||
CI jobs then run.
|
|
||||||
|
|
||||||
The ``refresh`` script is used to re-create the Dockerfiles using the
|
|
||||||
``lcitool`` command that is provided by repo
|
|
||||||
https://gitlab.com/libvirt/libvirt-ci
|
|
||||||
|
|
||||||
The containers are built during the CI process and cached in the GitLab
|
|
||||||
container registry of the project doing the build. The cached containers
|
|
||||||
can be deleted at any time and will be correctly rebuilt.
|
|
||||||
|
|
||||||
|
|
||||||
Coverity scan integration
|
|
||||||
=========================
|
|
||||||
|
|
||||||
This will be used only by the main repository for master branch by running
|
|
||||||
scheduled pipeline in GitLab.
|
|
||||||
|
|
||||||
The service is proved by `Coverity Scan`_ and requires that the project is
|
|
||||||
registered there to get free coverity analysis which we already have for
|
|
||||||
`libvirt project`_.
|
|
||||||
|
|
||||||
To run the coverity job it requires two new variables:
|
|
||||||
|
|
||||||
* ``COVERITY_SCAN_PROJECT_NAME``, containing the `libvirt project`_
|
|
||||||
name.
|
|
||||||
|
|
||||||
* ``COVERITY_SCAN_TOKEN``, token visible to admins of `libvirt project`_
|
|
||||||
|
|
||||||
|
|
||||||
.. _Coverity Scan: https://scan.coverity.com/
|
|
||||||
.. _libvirt project: https://scan.coverity.com/projects/libvirt
|
|
@@ -1,110 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile centos-8 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/centos:8
|
|
||||||
|
|
||||||
RUN dnf update -y && \
|
|
||||||
dnf install 'dnf-command(config-manager)' -y && \
|
|
||||||
dnf config-manager --set-enabled -y powertools && \
|
|
||||||
dnf install -y centos-release-advanced-virtualization && \
|
|
||||||
dnf install -y epel-release && \
|
|
||||||
dnf install -y \
|
|
||||||
audit-libs-devel \
|
|
||||||
augeas \
|
|
||||||
avahi-devel \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
clang \
|
|
||||||
cpp \
|
|
||||||
cyrus-sasl-devel \
|
|
||||||
dbus-devel \
|
|
||||||
device-mapper-devel \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
firewalld-filesystem \
|
|
||||||
fuse-devel \
|
|
||||||
gcc \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
glib2-devel \
|
|
||||||
glibc-devel \
|
|
||||||
glibc-langpack-en \
|
|
||||||
glusterfs-api-devel \
|
|
||||||
gnutls-devel \
|
|
||||||
grep \
|
|
||||||
iproute \
|
|
||||||
iproute-tc \
|
|
||||||
iptables \
|
|
||||||
iscsi-initiator-utils \
|
|
||||||
kmod \
|
|
||||||
libacl-devel \
|
|
||||||
libattr-devel \
|
|
||||||
libblkid-devel \
|
|
||||||
libcap-ng-devel \
|
|
||||||
libcurl-devel \
|
|
||||||
libiscsi-devel \
|
|
||||||
libnl3-devel \
|
|
||||||
libpcap-devel \
|
|
||||||
libpciaccess-devel \
|
|
||||||
librbd-devel \
|
|
||||||
libselinux-devel \
|
|
||||||
libssh-devel \
|
|
||||||
libssh2-devel \
|
|
||||||
libtirpc-devel \
|
|
||||||
libudev-devel \
|
|
||||||
libwsman-devel \
|
|
||||||
libxml2 \
|
|
||||||
libxml2-devel \
|
|
||||||
libxslt \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
netcf-devel \
|
|
||||||
nfs-utils \
|
|
||||||
ninja-build \
|
|
||||||
numactl-devel \
|
|
||||||
numad \
|
|
||||||
parted \
|
|
||||||
parted-devel \
|
|
||||||
perl \
|
|
||||||
pkgconfig \
|
|
||||||
polkit \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-flake8 \
|
|
||||||
python3-pip \
|
|
||||||
python3-setuptools \
|
|
||||||
python3-wheel \
|
|
||||||
qemu-img \
|
|
||||||
radvd \
|
|
||||||
readline-devel \
|
|
||||||
rpcgen \
|
|
||||||
rpm-build \
|
|
||||||
sanlock-devel \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
systemtap-sdt-devel \
|
|
||||||
wireshark-devel \
|
|
||||||
xfsprogs-devel \
|
|
||||||
yajl-devel && \
|
|
||||||
dnf autoremove -y && \
|
|
||||||
dnf clean all -y && \
|
|
||||||
rpm -qa | sort > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
|
||||||
|
|
||||||
RUN pip3 install \
|
|
||||||
meson==0.56.0
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
@@ -1,110 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile centos-stream-8 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM quay.io/centos/centos:stream8
|
|
||||||
|
|
||||||
RUN dnf update -y && \
|
|
||||||
dnf install 'dnf-command(config-manager)' -y && \
|
|
||||||
dnf config-manager --set-enabled -y powertools && \
|
|
||||||
dnf install -y centos-release-advanced-virtualization && \
|
|
||||||
dnf install -y epel-release && \
|
|
||||||
dnf install -y \
|
|
||||||
audit-libs-devel \
|
|
||||||
augeas \
|
|
||||||
avahi-devel \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
clang \
|
|
||||||
cpp \
|
|
||||||
cyrus-sasl-devel \
|
|
||||||
dbus-devel \
|
|
||||||
device-mapper-devel \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
firewalld-filesystem \
|
|
||||||
fuse-devel \
|
|
||||||
gcc \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
glib2-devel \
|
|
||||||
glibc-devel \
|
|
||||||
glibc-langpack-en \
|
|
||||||
glusterfs-api-devel \
|
|
||||||
gnutls-devel \
|
|
||||||
grep \
|
|
||||||
iproute \
|
|
||||||
iproute-tc \
|
|
||||||
iptables \
|
|
||||||
iscsi-initiator-utils \
|
|
||||||
kmod \
|
|
||||||
libacl-devel \
|
|
||||||
libattr-devel \
|
|
||||||
libblkid-devel \
|
|
||||||
libcap-ng-devel \
|
|
||||||
libcurl-devel \
|
|
||||||
libiscsi-devel \
|
|
||||||
libnl3-devel \
|
|
||||||
libpcap-devel \
|
|
||||||
libpciaccess-devel \
|
|
||||||
librbd-devel \
|
|
||||||
libselinux-devel \
|
|
||||||
libssh-devel \
|
|
||||||
libssh2-devel \
|
|
||||||
libtirpc-devel \
|
|
||||||
libudev-devel \
|
|
||||||
libwsman-devel \
|
|
||||||
libxml2 \
|
|
||||||
libxml2-devel \
|
|
||||||
libxslt \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
netcf-devel \
|
|
||||||
nfs-utils \
|
|
||||||
ninja-build \
|
|
||||||
numactl-devel \
|
|
||||||
numad \
|
|
||||||
parted \
|
|
||||||
parted-devel \
|
|
||||||
perl \
|
|
||||||
pkgconfig \
|
|
||||||
polkit \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-flake8 \
|
|
||||||
python3-pip \
|
|
||||||
python3-setuptools \
|
|
||||||
python3-wheel \
|
|
||||||
qemu-img \
|
|
||||||
radvd \
|
|
||||||
readline-devel \
|
|
||||||
rpcgen \
|
|
||||||
rpm-build \
|
|
||||||
sanlock-devel \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
systemtap-sdt-devel \
|
|
||||||
wireshark-devel \
|
|
||||||
xfsprogs-devel \
|
|
||||||
yajl-devel && \
|
|
||||||
dnf autoremove -y && \
|
|
||||||
dnf clean all -y && \
|
|
||||||
rpm -qa | sort > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
|
||||||
|
|
||||||
RUN pip3 install \
|
|
||||||
meson==0.56.0
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
@@ -1,132 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross aarch64 debian-10 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:10-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libc-dev-bin \
|
|
||||||
libxml2-utils \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-pip \
|
|
||||||
python3-setuptools \
|
|
||||||
python3-wheel \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/aarch64-linux-gnu-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/aarch64-linux-gnu-gcc
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
dpkg --add-architecture arm64 && \
|
|
||||||
eatmydata apt-get update && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
gcc-aarch64-linux-gnu \
|
|
||||||
libacl1-dev:arm64 \
|
|
||||||
libapparmor-dev:arm64 \
|
|
||||||
libattr1-dev:arm64 \
|
|
||||||
libaudit-dev:arm64 \
|
|
||||||
libavahi-client-dev:arm64 \
|
|
||||||
libblkid-dev:arm64 \
|
|
||||||
libc6-dev:arm64 \
|
|
||||||
libcap-ng-dev:arm64 \
|
|
||||||
libcurl4-gnutls-dev:arm64 \
|
|
||||||
libdbus-1-dev:arm64 \
|
|
||||||
libdevmapper-dev:arm64 \
|
|
||||||
libfuse-dev:arm64 \
|
|
||||||
libglib2.0-dev:arm64 \
|
|
||||||
libglusterfs-dev:arm64 \
|
|
||||||
libgnutls28-dev:arm64 \
|
|
||||||
libiscsi-dev:arm64 \
|
|
||||||
libnl-3-dev:arm64 \
|
|
||||||
libnl-route-3-dev:arm64 \
|
|
||||||
libnuma-dev:arm64 \
|
|
||||||
libparted-dev:arm64 \
|
|
||||||
libpcap0.8-dev:arm64 \
|
|
||||||
libpciaccess-dev:arm64 \
|
|
||||||
librbd-dev:arm64 \
|
|
||||||
libreadline-dev:arm64 \
|
|
||||||
libsanlock-dev:arm64 \
|
|
||||||
libsasl2-dev:arm64 \
|
|
||||||
libselinux1-dev:arm64 \
|
|
||||||
libssh-gcrypt-dev:arm64 \
|
|
||||||
libssh2-1-dev:arm64 \
|
|
||||||
libtirpc-dev:arm64 \
|
|
||||||
libudev-dev:arm64 \
|
|
||||||
libxen-dev:arm64 \
|
|
||||||
libxml2-dev:arm64 \
|
|
||||||
libyajl-dev:arm64 \
|
|
||||||
systemtap-sdt-dev:arm64 \
|
|
||||||
xfslibs-dev:arm64 && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
mkdir -p /usr/local/share/meson/cross && \
|
|
||||||
echo "[binaries]\n\
|
|
||||||
c = '/usr/bin/aarch64-linux-gnu-gcc'\n\
|
|
||||||
ar = '/usr/bin/aarch64-linux-gnu-gcc-ar'\n\
|
|
||||||
strip = '/usr/bin/aarch64-linux-gnu-strip'\n\
|
|
||||||
pkgconfig = '/usr/bin/aarch64-linux-gnu-pkg-config'\n\
|
|
||||||
\n\
|
|
||||||
[host_machine]\n\
|
|
||||||
system = 'linux'\n\
|
|
||||||
cpu_family = 'aarch64'\n\
|
|
||||||
cpu = 'aarch64'\n\
|
|
||||||
endian = 'little'" > /usr/local/share/meson/cross/aarch64-linux-gnu
|
|
||||||
|
|
||||||
RUN pip3 install \
|
|
||||||
meson==0.56.0
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "aarch64-linux-gnu"
|
|
||||||
ENV MESON_OPTS "--cross-file=aarch64-linux-gnu"
|
|
@@ -1,131 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross armv6l debian-10 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:10-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libc-dev-bin \
|
|
||||||
libxml2-utils \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-pip \
|
|
||||||
python3-setuptools \
|
|
||||||
python3-wheel \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-gcc
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
dpkg --add-architecture armel && \
|
|
||||||
eatmydata apt-get update && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
gcc-arm-linux-gnueabi \
|
|
||||||
libacl1-dev:armel \
|
|
||||||
libapparmor-dev:armel \
|
|
||||||
libattr1-dev:armel \
|
|
||||||
libaudit-dev:armel \
|
|
||||||
libavahi-client-dev:armel \
|
|
||||||
libblkid-dev:armel \
|
|
||||||
libc6-dev:armel \
|
|
||||||
libcap-ng-dev:armel \
|
|
||||||
libcurl4-gnutls-dev:armel \
|
|
||||||
libdbus-1-dev:armel \
|
|
||||||
libdevmapper-dev:armel \
|
|
||||||
libfuse-dev:armel \
|
|
||||||
libglib2.0-dev:armel \
|
|
||||||
libglusterfs-dev:armel \
|
|
||||||
libgnutls28-dev:armel \
|
|
||||||
libiscsi-dev:armel \
|
|
||||||
libnl-3-dev:armel \
|
|
||||||
libnl-route-3-dev:armel \
|
|
||||||
libnuma-dev:armel \
|
|
||||||
libparted-dev:armel \
|
|
||||||
libpcap0.8-dev:armel \
|
|
||||||
libpciaccess-dev:armel \
|
|
||||||
librbd-dev:armel \
|
|
||||||
libreadline-dev:armel \
|
|
||||||
libsanlock-dev:armel \
|
|
||||||
libsasl2-dev:armel \
|
|
||||||
libselinux1-dev:armel \
|
|
||||||
libssh-gcrypt-dev:armel \
|
|
||||||
libssh2-1-dev:armel \
|
|
||||||
libtirpc-dev:armel \
|
|
||||||
libudev-dev:armel \
|
|
||||||
libxml2-dev:armel \
|
|
||||||
libyajl-dev:armel \
|
|
||||||
systemtap-sdt-dev:armel \
|
|
||||||
xfslibs-dev:armel && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
mkdir -p /usr/local/share/meson/cross && \
|
|
||||||
echo "[binaries]\n\
|
|
||||||
c = '/usr/bin/arm-linux-gnueabi-gcc'\n\
|
|
||||||
ar = '/usr/bin/arm-linux-gnueabi-gcc-ar'\n\
|
|
||||||
strip = '/usr/bin/arm-linux-gnueabi-strip'\n\
|
|
||||||
pkgconfig = '/usr/bin/arm-linux-gnueabi-pkg-config'\n\
|
|
||||||
\n\
|
|
||||||
[host_machine]\n\
|
|
||||||
system = 'linux'\n\
|
|
||||||
cpu_family = 'arm'\n\
|
|
||||||
cpu = 'arm'\n\
|
|
||||||
endian = 'little'" > /usr/local/share/meson/cross/arm-linux-gnueabi
|
|
||||||
|
|
||||||
RUN pip3 install \
|
|
||||||
meson==0.56.0
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "arm-linux-gnueabi"
|
|
||||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabi"
|
|
@@ -1,132 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross armv7l debian-10 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:10-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libc-dev-bin \
|
|
||||||
libxml2-utils \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-pip \
|
|
||||||
python3-setuptools \
|
|
||||||
python3-wheel \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabihf-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabihf-gcc
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
dpkg --add-architecture armhf && \
|
|
||||||
eatmydata apt-get update && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
gcc-arm-linux-gnueabihf \
|
|
||||||
libacl1-dev:armhf \
|
|
||||||
libapparmor-dev:armhf \
|
|
||||||
libattr1-dev:armhf \
|
|
||||||
libaudit-dev:armhf \
|
|
||||||
libavahi-client-dev:armhf \
|
|
||||||
libblkid-dev:armhf \
|
|
||||||
libc6-dev:armhf \
|
|
||||||
libcap-ng-dev:armhf \
|
|
||||||
libcurl4-gnutls-dev:armhf \
|
|
||||||
libdbus-1-dev:armhf \
|
|
||||||
libdevmapper-dev:armhf \
|
|
||||||
libfuse-dev:armhf \
|
|
||||||
libglib2.0-dev:armhf \
|
|
||||||
libglusterfs-dev:armhf \
|
|
||||||
libgnutls28-dev:armhf \
|
|
||||||
libiscsi-dev:armhf \
|
|
||||||
libnl-3-dev:armhf \
|
|
||||||
libnl-route-3-dev:armhf \
|
|
||||||
libnuma-dev:armhf \
|
|
||||||
libparted-dev:armhf \
|
|
||||||
libpcap0.8-dev:armhf \
|
|
||||||
libpciaccess-dev:armhf \
|
|
||||||
librbd-dev:armhf \
|
|
||||||
libreadline-dev:armhf \
|
|
||||||
libsanlock-dev:armhf \
|
|
||||||
libsasl2-dev:armhf \
|
|
||||||
libselinux1-dev:armhf \
|
|
||||||
libssh-gcrypt-dev:armhf \
|
|
||||||
libssh2-1-dev:armhf \
|
|
||||||
libtirpc-dev:armhf \
|
|
||||||
libudev-dev:armhf \
|
|
||||||
libxen-dev:armhf \
|
|
||||||
libxml2-dev:armhf \
|
|
||||||
libyajl-dev:armhf \
|
|
||||||
systemtap-sdt-dev:armhf \
|
|
||||||
xfslibs-dev:armhf && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
mkdir -p /usr/local/share/meson/cross && \
|
|
||||||
echo "[binaries]\n\
|
|
||||||
c = '/usr/bin/arm-linux-gnueabihf-gcc'\n\
|
|
||||||
ar = '/usr/bin/arm-linux-gnueabihf-gcc-ar'\n\
|
|
||||||
strip = '/usr/bin/arm-linux-gnueabihf-strip'\n\
|
|
||||||
pkgconfig = '/usr/bin/arm-linux-gnueabihf-pkg-config'\n\
|
|
||||||
\n\
|
|
||||||
[host_machine]\n\
|
|
||||||
system = 'linux'\n\
|
|
||||||
cpu_family = 'arm'\n\
|
|
||||||
cpu = 'armhf'\n\
|
|
||||||
endian = 'little'" > /usr/local/share/meson/cross/arm-linux-gnueabihf
|
|
||||||
|
|
||||||
RUN pip3 install \
|
|
||||||
meson==0.56.0
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "arm-linux-gnueabihf"
|
|
||||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabihf"
|
|
@@ -1,131 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross i686 debian-10 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:10-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libc-dev-bin \
|
|
||||||
libxml2-utils \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-pip \
|
|
||||||
python3-setuptools \
|
|
||||||
python3-wheel \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-linux-gnu-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-linux-gnu-gcc
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
dpkg --add-architecture i386 && \
|
|
||||||
eatmydata apt-get update && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
gcc-i686-linux-gnu \
|
|
||||||
libacl1-dev:i386 \
|
|
||||||
libapparmor-dev:i386 \
|
|
||||||
libattr1-dev:i386 \
|
|
||||||
libaudit-dev:i386 \
|
|
||||||
libavahi-client-dev:i386 \
|
|
||||||
libblkid-dev:i386 \
|
|
||||||
libc6-dev:i386 \
|
|
||||||
libcap-ng-dev:i386 \
|
|
||||||
libcurl4-gnutls-dev:i386 \
|
|
||||||
libdbus-1-dev:i386 \
|
|
||||||
libdevmapper-dev:i386 \
|
|
||||||
libfuse-dev:i386 \
|
|
||||||
libglib2.0-dev:i386 \
|
|
||||||
libglusterfs-dev:i386 \
|
|
||||||
libgnutls28-dev:i386 \
|
|
||||||
libiscsi-dev:i386 \
|
|
||||||
libnl-3-dev:i386 \
|
|
||||||
libnl-route-3-dev:i386 \
|
|
||||||
libnuma-dev:i386 \
|
|
||||||
libparted-dev:i386 \
|
|
||||||
libpcap0.8-dev:i386 \
|
|
||||||
libpciaccess-dev:i386 \
|
|
||||||
librbd-dev:i386 \
|
|
||||||
libreadline-dev:i386 \
|
|
||||||
libsanlock-dev:i386 \
|
|
||||||
libsasl2-dev:i386 \
|
|
||||||
libselinux1-dev:i386 \
|
|
||||||
libssh-gcrypt-dev:i386 \
|
|
||||||
libssh2-1-dev:i386 \
|
|
||||||
libtirpc-dev:i386 \
|
|
||||||
libudev-dev:i386 \
|
|
||||||
libxml2-dev:i386 \
|
|
||||||
libyajl-dev:i386 \
|
|
||||||
systemtap-sdt-dev:i386 \
|
|
||||||
xfslibs-dev:i386 && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
mkdir -p /usr/local/share/meson/cross && \
|
|
||||||
echo "[binaries]\n\
|
|
||||||
c = '/usr/bin/i686-linux-gnu-gcc'\n\
|
|
||||||
ar = '/usr/bin/i686-linux-gnu-gcc-ar'\n\
|
|
||||||
strip = '/usr/bin/i686-linux-gnu-strip'\n\
|
|
||||||
pkgconfig = '/usr/bin/i686-linux-gnu-pkg-config'\n\
|
|
||||||
\n\
|
|
||||||
[host_machine]\n\
|
|
||||||
system = 'linux'\n\
|
|
||||||
cpu_family = 'x86'\n\
|
|
||||||
cpu = 'i686'\n\
|
|
||||||
endian = 'little'" > /usr/local/share/meson/cross/i686-linux-gnu
|
|
||||||
|
|
||||||
RUN pip3 install \
|
|
||||||
meson==0.56.0
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "i686-linux-gnu"
|
|
||||||
ENV MESON_OPTS "--cross-file=i686-linux-gnu"
|
|
@@ -1,131 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross mips debian-10 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:10-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libc-dev-bin \
|
|
||||||
libxml2-utils \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-pip \
|
|
||||||
python3-setuptools \
|
|
||||||
python3-wheel \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips-linux-gnu-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips-linux-gnu-gcc
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
dpkg --add-architecture mips && \
|
|
||||||
eatmydata apt-get update && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
gcc-mips-linux-gnu \
|
|
||||||
libacl1-dev:mips \
|
|
||||||
libapparmor-dev:mips \
|
|
||||||
libattr1-dev:mips \
|
|
||||||
libaudit-dev:mips \
|
|
||||||
libavahi-client-dev:mips \
|
|
||||||
libblkid-dev:mips \
|
|
||||||
libc6-dev:mips \
|
|
||||||
libcap-ng-dev:mips \
|
|
||||||
libcurl4-gnutls-dev:mips \
|
|
||||||
libdbus-1-dev:mips \
|
|
||||||
libdevmapper-dev:mips \
|
|
||||||
libfuse-dev:mips \
|
|
||||||
libglib2.0-dev:mips \
|
|
||||||
libglusterfs-dev:mips \
|
|
||||||
libgnutls28-dev:mips \
|
|
||||||
libiscsi-dev:mips \
|
|
||||||
libnl-3-dev:mips \
|
|
||||||
libnl-route-3-dev:mips \
|
|
||||||
libnuma-dev:mips \
|
|
||||||
libparted-dev:mips \
|
|
||||||
libpcap0.8-dev:mips \
|
|
||||||
libpciaccess-dev:mips \
|
|
||||||
librbd-dev:mips \
|
|
||||||
libreadline-dev:mips \
|
|
||||||
libsanlock-dev:mips \
|
|
||||||
libsasl2-dev:mips \
|
|
||||||
libselinux1-dev:mips \
|
|
||||||
libssh-gcrypt-dev:mips \
|
|
||||||
libssh2-1-dev:mips \
|
|
||||||
libtirpc-dev:mips \
|
|
||||||
libudev-dev:mips \
|
|
||||||
libxml2-dev:mips \
|
|
||||||
libyajl-dev:mips \
|
|
||||||
systemtap-sdt-dev:mips \
|
|
||||||
xfslibs-dev:mips && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
mkdir -p /usr/local/share/meson/cross && \
|
|
||||||
echo "[binaries]\n\
|
|
||||||
c = '/usr/bin/mips-linux-gnu-gcc'\n\
|
|
||||||
ar = '/usr/bin/mips-linux-gnu-gcc-ar'\n\
|
|
||||||
strip = '/usr/bin/mips-linux-gnu-strip'\n\
|
|
||||||
pkgconfig = '/usr/bin/mips-linux-gnu-pkg-config'\n\
|
|
||||||
\n\
|
|
||||||
[host_machine]\n\
|
|
||||||
system = 'linux'\n\
|
|
||||||
cpu_family = 'mips'\n\
|
|
||||||
cpu = 'mips'\n\
|
|
||||||
endian = 'big'" > /usr/local/share/meson/cross/mips-linux-gnu
|
|
||||||
|
|
||||||
RUN pip3 install \
|
|
||||||
meson==0.56.0
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "mips-linux-gnu"
|
|
||||||
ENV MESON_OPTS "--cross-file=mips-linux-gnu"
|
|
@@ -1,131 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross mips64el debian-10 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:10-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libc-dev-bin \
|
|
||||||
libxml2-utils \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-pip \
|
|
||||||
python3-setuptools \
|
|
||||||
python3-wheel \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips64el-linux-gnuabi64-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips64el-linux-gnuabi64-gcc
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
dpkg --add-architecture mips64el && \
|
|
||||||
eatmydata apt-get update && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
gcc-mips64el-linux-gnuabi64 \
|
|
||||||
libacl1-dev:mips64el \
|
|
||||||
libapparmor-dev:mips64el \
|
|
||||||
libattr1-dev:mips64el \
|
|
||||||
libaudit-dev:mips64el \
|
|
||||||
libavahi-client-dev:mips64el \
|
|
||||||
libblkid-dev:mips64el \
|
|
||||||
libc6-dev:mips64el \
|
|
||||||
libcap-ng-dev:mips64el \
|
|
||||||
libcurl4-gnutls-dev:mips64el \
|
|
||||||
libdbus-1-dev:mips64el \
|
|
||||||
libdevmapper-dev:mips64el \
|
|
||||||
libfuse-dev:mips64el \
|
|
||||||
libglib2.0-dev:mips64el \
|
|
||||||
libglusterfs-dev:mips64el \
|
|
||||||
libgnutls28-dev:mips64el \
|
|
||||||
libiscsi-dev:mips64el \
|
|
||||||
libnl-3-dev:mips64el \
|
|
||||||
libnl-route-3-dev:mips64el \
|
|
||||||
libnuma-dev:mips64el \
|
|
||||||
libparted-dev:mips64el \
|
|
||||||
libpcap0.8-dev:mips64el \
|
|
||||||
libpciaccess-dev:mips64el \
|
|
||||||
librbd-dev:mips64el \
|
|
||||||
libreadline-dev:mips64el \
|
|
||||||
libsanlock-dev:mips64el \
|
|
||||||
libsasl2-dev:mips64el \
|
|
||||||
libselinux1-dev:mips64el \
|
|
||||||
libssh-gcrypt-dev:mips64el \
|
|
||||||
libssh2-1-dev:mips64el \
|
|
||||||
libtirpc-dev:mips64el \
|
|
||||||
libudev-dev:mips64el \
|
|
||||||
libxml2-dev:mips64el \
|
|
||||||
libyajl-dev:mips64el \
|
|
||||||
systemtap-sdt-dev:mips64el \
|
|
||||||
xfslibs-dev:mips64el && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
mkdir -p /usr/local/share/meson/cross && \
|
|
||||||
echo "[binaries]\n\
|
|
||||||
c = '/usr/bin/mips64el-linux-gnuabi64-gcc'\n\
|
|
||||||
ar = '/usr/bin/mips64el-linux-gnuabi64-gcc-ar'\n\
|
|
||||||
strip = '/usr/bin/mips64el-linux-gnuabi64-strip'\n\
|
|
||||||
pkgconfig = '/usr/bin/mips64el-linux-gnuabi64-pkg-config'\n\
|
|
||||||
\n\
|
|
||||||
[host_machine]\n\
|
|
||||||
system = 'linux'\n\
|
|
||||||
cpu_family = 'mips64'\n\
|
|
||||||
cpu = 'mips64el'\n\
|
|
||||||
endian = 'little'" > /usr/local/share/meson/cross/mips64el-linux-gnuabi64
|
|
||||||
|
|
||||||
RUN pip3 install \
|
|
||||||
meson==0.56.0
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "mips64el-linux-gnuabi64"
|
|
||||||
ENV MESON_OPTS "--cross-file=mips64el-linux-gnuabi64"
|
|
@@ -1,131 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross mipsel debian-10 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:10-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libc-dev-bin \
|
|
||||||
libxml2-utils \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-pip \
|
|
||||||
python3-setuptools \
|
|
||||||
python3-wheel \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mipsel-linux-gnu-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mipsel-linux-gnu-gcc
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
dpkg --add-architecture mipsel && \
|
|
||||||
eatmydata apt-get update && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
gcc-mipsel-linux-gnu \
|
|
||||||
libacl1-dev:mipsel \
|
|
||||||
libapparmor-dev:mipsel \
|
|
||||||
libattr1-dev:mipsel \
|
|
||||||
libaudit-dev:mipsel \
|
|
||||||
libavahi-client-dev:mipsel \
|
|
||||||
libblkid-dev:mipsel \
|
|
||||||
libc6-dev:mipsel \
|
|
||||||
libcap-ng-dev:mipsel \
|
|
||||||
libcurl4-gnutls-dev:mipsel \
|
|
||||||
libdbus-1-dev:mipsel \
|
|
||||||
libdevmapper-dev:mipsel \
|
|
||||||
libfuse-dev:mipsel \
|
|
||||||
libglib2.0-dev:mipsel \
|
|
||||||
libglusterfs-dev:mipsel \
|
|
||||||
libgnutls28-dev:mipsel \
|
|
||||||
libiscsi-dev:mipsel \
|
|
||||||
libnl-3-dev:mipsel \
|
|
||||||
libnl-route-3-dev:mipsel \
|
|
||||||
libnuma-dev:mipsel \
|
|
||||||
libparted-dev:mipsel \
|
|
||||||
libpcap0.8-dev:mipsel \
|
|
||||||
libpciaccess-dev:mipsel \
|
|
||||||
librbd-dev:mipsel \
|
|
||||||
libreadline-dev:mipsel \
|
|
||||||
libsanlock-dev:mipsel \
|
|
||||||
libsasl2-dev:mipsel \
|
|
||||||
libselinux1-dev:mipsel \
|
|
||||||
libssh-gcrypt-dev:mipsel \
|
|
||||||
libssh2-1-dev:mipsel \
|
|
||||||
libtirpc-dev:mipsel \
|
|
||||||
libudev-dev:mipsel \
|
|
||||||
libxml2-dev:mipsel \
|
|
||||||
libyajl-dev:mipsel \
|
|
||||||
systemtap-sdt-dev:mipsel \
|
|
||||||
xfslibs-dev:mipsel && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
mkdir -p /usr/local/share/meson/cross && \
|
|
||||||
echo "[binaries]\n\
|
|
||||||
c = '/usr/bin/mipsel-linux-gnu-gcc'\n\
|
|
||||||
ar = '/usr/bin/mipsel-linux-gnu-gcc-ar'\n\
|
|
||||||
strip = '/usr/bin/mipsel-linux-gnu-strip'\n\
|
|
||||||
pkgconfig = '/usr/bin/mipsel-linux-gnu-pkg-config'\n\
|
|
||||||
\n\
|
|
||||||
[host_machine]\n\
|
|
||||||
system = 'linux'\n\
|
|
||||||
cpu_family = 'mips'\n\
|
|
||||||
cpu = 'mipsel'\n\
|
|
||||||
endian = 'little'" > /usr/local/share/meson/cross/mipsel-linux-gnu
|
|
||||||
|
|
||||||
RUN pip3 install \
|
|
||||||
meson==0.56.0
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "mipsel-linux-gnu"
|
|
||||||
ENV MESON_OPTS "--cross-file=mipsel-linux-gnu"
|
|
@@ -1,131 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross ppc64le debian-10 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:10-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libc-dev-bin \
|
|
||||||
libxml2-utils \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-pip \
|
|
||||||
python3-setuptools \
|
|
||||||
python3-wheel \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-gcc
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
dpkg --add-architecture ppc64el && \
|
|
||||||
eatmydata apt-get update && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
gcc-powerpc64le-linux-gnu \
|
|
||||||
libacl1-dev:ppc64el \
|
|
||||||
libapparmor-dev:ppc64el \
|
|
||||||
libattr1-dev:ppc64el \
|
|
||||||
libaudit-dev:ppc64el \
|
|
||||||
libavahi-client-dev:ppc64el \
|
|
||||||
libblkid-dev:ppc64el \
|
|
||||||
libc6-dev:ppc64el \
|
|
||||||
libcap-ng-dev:ppc64el \
|
|
||||||
libcurl4-gnutls-dev:ppc64el \
|
|
||||||
libdbus-1-dev:ppc64el \
|
|
||||||
libdevmapper-dev:ppc64el \
|
|
||||||
libfuse-dev:ppc64el \
|
|
||||||
libglib2.0-dev:ppc64el \
|
|
||||||
libglusterfs-dev:ppc64el \
|
|
||||||
libgnutls28-dev:ppc64el \
|
|
||||||
libiscsi-dev:ppc64el \
|
|
||||||
libnl-3-dev:ppc64el \
|
|
||||||
libnl-route-3-dev:ppc64el \
|
|
||||||
libnuma-dev:ppc64el \
|
|
||||||
libparted-dev:ppc64el \
|
|
||||||
libpcap0.8-dev:ppc64el \
|
|
||||||
libpciaccess-dev:ppc64el \
|
|
||||||
librbd-dev:ppc64el \
|
|
||||||
libreadline-dev:ppc64el \
|
|
||||||
libsanlock-dev:ppc64el \
|
|
||||||
libsasl2-dev:ppc64el \
|
|
||||||
libselinux1-dev:ppc64el \
|
|
||||||
libssh-gcrypt-dev:ppc64el \
|
|
||||||
libssh2-1-dev:ppc64el \
|
|
||||||
libtirpc-dev:ppc64el \
|
|
||||||
libudev-dev:ppc64el \
|
|
||||||
libxml2-dev:ppc64el \
|
|
||||||
libyajl-dev:ppc64el \
|
|
||||||
systemtap-sdt-dev:ppc64el \
|
|
||||||
xfslibs-dev:ppc64el && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
mkdir -p /usr/local/share/meson/cross && \
|
|
||||||
echo "[binaries]\n\
|
|
||||||
c = '/usr/bin/powerpc64le-linux-gnu-gcc'\n\
|
|
||||||
ar = '/usr/bin/powerpc64le-linux-gnu-gcc-ar'\n\
|
|
||||||
strip = '/usr/bin/powerpc64le-linux-gnu-strip'\n\
|
|
||||||
pkgconfig = '/usr/bin/powerpc64le-linux-gnu-pkg-config'\n\
|
|
||||||
\n\
|
|
||||||
[host_machine]\n\
|
|
||||||
system = 'linux'\n\
|
|
||||||
cpu_family = 'ppc64'\n\
|
|
||||||
cpu = 'powerpc64le'\n\
|
|
||||||
endian = 'little'" > /usr/local/share/meson/cross/powerpc64le-linux-gnu
|
|
||||||
|
|
||||||
RUN pip3 install \
|
|
||||||
meson==0.56.0
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "powerpc64le-linux-gnu"
|
|
||||||
ENV MESON_OPTS "--cross-file=powerpc64le-linux-gnu"
|
|
@@ -1,131 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross s390x debian-10 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:10-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libc-dev-bin \
|
|
||||||
libxml2-utils \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-pip \
|
|
||||||
python3-setuptools \
|
|
||||||
python3-wheel \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/s390x-linux-gnu-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/s390x-linux-gnu-gcc
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
dpkg --add-architecture s390x && \
|
|
||||||
eatmydata apt-get update && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
gcc-s390x-linux-gnu \
|
|
||||||
libacl1-dev:s390x \
|
|
||||||
libapparmor-dev:s390x \
|
|
||||||
libattr1-dev:s390x \
|
|
||||||
libaudit-dev:s390x \
|
|
||||||
libavahi-client-dev:s390x \
|
|
||||||
libblkid-dev:s390x \
|
|
||||||
libc6-dev:s390x \
|
|
||||||
libcap-ng-dev:s390x \
|
|
||||||
libcurl4-gnutls-dev:s390x \
|
|
||||||
libdbus-1-dev:s390x \
|
|
||||||
libdevmapper-dev:s390x \
|
|
||||||
libfuse-dev:s390x \
|
|
||||||
libglib2.0-dev:s390x \
|
|
||||||
libglusterfs-dev:s390x \
|
|
||||||
libgnutls28-dev:s390x \
|
|
||||||
libiscsi-dev:s390x \
|
|
||||||
libnl-3-dev:s390x \
|
|
||||||
libnl-route-3-dev:s390x \
|
|
||||||
libnuma-dev:s390x \
|
|
||||||
libparted-dev:s390x \
|
|
||||||
libpcap0.8-dev:s390x \
|
|
||||||
libpciaccess-dev:s390x \
|
|
||||||
librbd-dev:s390x \
|
|
||||||
libreadline-dev:s390x \
|
|
||||||
libsanlock-dev:s390x \
|
|
||||||
libsasl2-dev:s390x \
|
|
||||||
libselinux1-dev:s390x \
|
|
||||||
libssh-gcrypt-dev:s390x \
|
|
||||||
libssh2-1-dev:s390x \
|
|
||||||
libtirpc-dev:s390x \
|
|
||||||
libudev-dev:s390x \
|
|
||||||
libxml2-dev:s390x \
|
|
||||||
libyajl-dev:s390x \
|
|
||||||
systemtap-sdt-dev:s390x \
|
|
||||||
xfslibs-dev:s390x && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
mkdir -p /usr/local/share/meson/cross && \
|
|
||||||
echo "[binaries]\n\
|
|
||||||
c = '/usr/bin/s390x-linux-gnu-gcc'\n\
|
|
||||||
ar = '/usr/bin/s390x-linux-gnu-gcc-ar'\n\
|
|
||||||
strip = '/usr/bin/s390x-linux-gnu-strip'\n\
|
|
||||||
pkgconfig = '/usr/bin/s390x-linux-gnu-pkg-config'\n\
|
|
||||||
\n\
|
|
||||||
[host_machine]\n\
|
|
||||||
system = 'linux'\n\
|
|
||||||
cpu_family = 's390x'\n\
|
|
||||||
cpu = 's390x'\n\
|
|
||||||
endian = 'big'" > /usr/local/share/meson/cross/s390x-linux-gnu
|
|
||||||
|
|
||||||
RUN pip3 install \
|
|
||||||
meson==0.56.0
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "s390x-linux-gnu"
|
|
||||||
ENV MESON_OPTS "--cross-file=s390x-linux-gnu"
|
|
@@ -1,112 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile debian-10 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:10-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
clang \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gcc \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libacl1-dev \
|
|
||||||
libapparmor-dev \
|
|
||||||
libattr1-dev \
|
|
||||||
libaudit-dev \
|
|
||||||
libavahi-client-dev \
|
|
||||||
libblkid-dev \
|
|
||||||
libc-dev-bin \
|
|
||||||
libc6-dev \
|
|
||||||
libcap-ng-dev \
|
|
||||||
libcurl4-gnutls-dev \
|
|
||||||
libdbus-1-dev \
|
|
||||||
libdevmapper-dev \
|
|
||||||
libfuse-dev \
|
|
||||||
libglib2.0-dev \
|
|
||||||
libglusterfs-dev \
|
|
||||||
libgnutls28-dev \
|
|
||||||
libiscsi-dev \
|
|
||||||
libnetcf-dev \
|
|
||||||
libnl-3-dev \
|
|
||||||
libnl-route-3-dev \
|
|
||||||
libnuma-dev \
|
|
||||||
libparted-dev \
|
|
||||||
libpcap0.8-dev \
|
|
||||||
libpciaccess-dev \
|
|
||||||
librbd-dev \
|
|
||||||
libreadline-dev \
|
|
||||||
libsanlock-dev \
|
|
||||||
libsasl2-dev \
|
|
||||||
libselinux1-dev \
|
|
||||||
libssh-gcrypt-dev \
|
|
||||||
libssh2-1-dev \
|
|
||||||
libtirpc-dev \
|
|
||||||
libudev-dev \
|
|
||||||
libxen-dev \
|
|
||||||
libxml2-dev \
|
|
||||||
libxml2-utils \
|
|
||||||
libyajl-dev \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-pip \
|
|
||||||
python3-setuptools \
|
|
||||||
python3-wheel \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
systemtap-sdt-dev \
|
|
||||||
wireshark-dev \
|
|
||||||
xfslibs-dev \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
|
||||||
|
|
||||||
RUN pip3 install \
|
|
||||||
meson==0.56.0
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
@@ -1,127 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross aarch64 debian-sid libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:sid-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libc-dev-bin \
|
|
||||||
libxml2-utils \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
meson \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/aarch64-linux-gnu-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/aarch64-linux-gnu-gcc
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
dpkg --add-architecture arm64 && \
|
|
||||||
eatmydata apt-get update && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
gcc-aarch64-linux-gnu \
|
|
||||||
libacl1-dev:arm64 \
|
|
||||||
libapparmor-dev:arm64 \
|
|
||||||
libattr1-dev:arm64 \
|
|
||||||
libaudit-dev:arm64 \
|
|
||||||
libavahi-client-dev:arm64 \
|
|
||||||
libblkid-dev:arm64 \
|
|
||||||
libc6-dev:arm64 \
|
|
||||||
libcap-ng-dev:arm64 \
|
|
||||||
libcurl4-gnutls-dev:arm64 \
|
|
||||||
libdbus-1-dev:arm64 \
|
|
||||||
libdevmapper-dev:arm64 \
|
|
||||||
libfuse-dev:arm64 \
|
|
||||||
libglib2.0-dev:arm64 \
|
|
||||||
libglusterfs-dev:arm64 \
|
|
||||||
libgnutls28-dev:arm64 \
|
|
||||||
libiscsi-dev:arm64 \
|
|
||||||
libnl-3-dev:arm64 \
|
|
||||||
libnl-route-3-dev:arm64 \
|
|
||||||
libnuma-dev:arm64 \
|
|
||||||
libparted-dev:arm64 \
|
|
||||||
libpcap0.8-dev:arm64 \
|
|
||||||
libpciaccess-dev:arm64 \
|
|
||||||
librbd-dev:arm64 \
|
|
||||||
libreadline-dev:arm64 \
|
|
||||||
libsanlock-dev:arm64 \
|
|
||||||
libsasl2-dev:arm64 \
|
|
||||||
libselinux1-dev:arm64 \
|
|
||||||
libssh-gcrypt-dev:arm64 \
|
|
||||||
libssh2-1-dev:arm64 \
|
|
||||||
libtirpc-dev:arm64 \
|
|
||||||
libudev-dev:arm64 \
|
|
||||||
libxen-dev:arm64 \
|
|
||||||
libxml2-dev:arm64 \
|
|
||||||
libyajl-dev:arm64 \
|
|
||||||
systemtap-sdt-dev:arm64 \
|
|
||||||
xfslibs-dev:arm64 && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
mkdir -p /usr/local/share/meson/cross && \
|
|
||||||
echo "[binaries]\n\
|
|
||||||
c = '/usr/bin/aarch64-linux-gnu-gcc'\n\
|
|
||||||
ar = '/usr/bin/aarch64-linux-gnu-gcc-ar'\n\
|
|
||||||
strip = '/usr/bin/aarch64-linux-gnu-strip'\n\
|
|
||||||
pkgconfig = '/usr/bin/aarch64-linux-gnu-pkg-config'\n\
|
|
||||||
\n\
|
|
||||||
[host_machine]\n\
|
|
||||||
system = 'linux'\n\
|
|
||||||
cpu_family = 'aarch64'\n\
|
|
||||||
cpu = 'aarch64'\n\
|
|
||||||
endian = 'little'" > /usr/local/share/meson/cross/aarch64-linux-gnu
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "aarch64-linux-gnu"
|
|
||||||
ENV MESON_OPTS "--cross-file=aarch64-linux-gnu"
|
|
@@ -1,126 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross armv6l debian-sid libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:sid-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libc-dev-bin \
|
|
||||||
libxml2-utils \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
meson \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-gcc
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
dpkg --add-architecture armel && \
|
|
||||||
eatmydata apt-get update && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
gcc-arm-linux-gnueabi \
|
|
||||||
libacl1-dev:armel \
|
|
||||||
libapparmor-dev:armel \
|
|
||||||
libattr1-dev:armel \
|
|
||||||
libaudit-dev:armel \
|
|
||||||
libavahi-client-dev:armel \
|
|
||||||
libblkid-dev:armel \
|
|
||||||
libc6-dev:armel \
|
|
||||||
libcap-ng-dev:armel \
|
|
||||||
libcurl4-gnutls-dev:armel \
|
|
||||||
libdbus-1-dev:armel \
|
|
||||||
libdevmapper-dev:armel \
|
|
||||||
libfuse-dev:armel \
|
|
||||||
libglib2.0-dev:armel \
|
|
||||||
libglusterfs-dev:armel \
|
|
||||||
libgnutls28-dev:armel \
|
|
||||||
libiscsi-dev:armel \
|
|
||||||
libnl-3-dev:armel \
|
|
||||||
libnl-route-3-dev:armel \
|
|
||||||
libnuma-dev:armel \
|
|
||||||
libparted-dev:armel \
|
|
||||||
libpcap0.8-dev:armel \
|
|
||||||
libpciaccess-dev:armel \
|
|
||||||
librbd-dev:armel \
|
|
||||||
libreadline-dev:armel \
|
|
||||||
libsanlock-dev:armel \
|
|
||||||
libsasl2-dev:armel \
|
|
||||||
libselinux1-dev:armel \
|
|
||||||
libssh-gcrypt-dev:armel \
|
|
||||||
libssh2-1-dev:armel \
|
|
||||||
libtirpc-dev:armel \
|
|
||||||
libudev-dev:armel \
|
|
||||||
libxml2-dev:armel \
|
|
||||||
libyajl-dev:armel \
|
|
||||||
systemtap-sdt-dev:armel \
|
|
||||||
xfslibs-dev:armel && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
mkdir -p /usr/local/share/meson/cross && \
|
|
||||||
echo "[binaries]\n\
|
|
||||||
c = '/usr/bin/arm-linux-gnueabi-gcc'\n\
|
|
||||||
ar = '/usr/bin/arm-linux-gnueabi-gcc-ar'\n\
|
|
||||||
strip = '/usr/bin/arm-linux-gnueabi-strip'\n\
|
|
||||||
pkgconfig = '/usr/bin/arm-linux-gnueabi-pkg-config'\n\
|
|
||||||
\n\
|
|
||||||
[host_machine]\n\
|
|
||||||
system = 'linux'\n\
|
|
||||||
cpu_family = 'arm'\n\
|
|
||||||
cpu = 'arm'\n\
|
|
||||||
endian = 'little'" > /usr/local/share/meson/cross/arm-linux-gnueabi
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "arm-linux-gnueabi"
|
|
||||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabi"
|
|
@@ -1,127 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross armv7l debian-sid libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:sid-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libc-dev-bin \
|
|
||||||
libxml2-utils \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
meson \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabihf-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabihf-gcc
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
dpkg --add-architecture armhf && \
|
|
||||||
eatmydata apt-get update && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
gcc-arm-linux-gnueabihf \
|
|
||||||
libacl1-dev:armhf \
|
|
||||||
libapparmor-dev:armhf \
|
|
||||||
libattr1-dev:armhf \
|
|
||||||
libaudit-dev:armhf \
|
|
||||||
libavahi-client-dev:armhf \
|
|
||||||
libblkid-dev:armhf \
|
|
||||||
libc6-dev:armhf \
|
|
||||||
libcap-ng-dev:armhf \
|
|
||||||
libcurl4-gnutls-dev:armhf \
|
|
||||||
libdbus-1-dev:armhf \
|
|
||||||
libdevmapper-dev:armhf \
|
|
||||||
libfuse-dev:armhf \
|
|
||||||
libglib2.0-dev:armhf \
|
|
||||||
libglusterfs-dev:armhf \
|
|
||||||
libgnutls28-dev:armhf \
|
|
||||||
libiscsi-dev:armhf \
|
|
||||||
libnl-3-dev:armhf \
|
|
||||||
libnl-route-3-dev:armhf \
|
|
||||||
libnuma-dev:armhf \
|
|
||||||
libparted-dev:armhf \
|
|
||||||
libpcap0.8-dev:armhf \
|
|
||||||
libpciaccess-dev:armhf \
|
|
||||||
librbd-dev:armhf \
|
|
||||||
libreadline-dev:armhf \
|
|
||||||
libsanlock-dev:armhf \
|
|
||||||
libsasl2-dev:armhf \
|
|
||||||
libselinux1-dev:armhf \
|
|
||||||
libssh-gcrypt-dev:armhf \
|
|
||||||
libssh2-1-dev:armhf \
|
|
||||||
libtirpc-dev:armhf \
|
|
||||||
libudev-dev:armhf \
|
|
||||||
libxen-dev:armhf \
|
|
||||||
libxml2-dev:armhf \
|
|
||||||
libyajl-dev:armhf \
|
|
||||||
systemtap-sdt-dev:armhf \
|
|
||||||
xfslibs-dev:armhf && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
mkdir -p /usr/local/share/meson/cross && \
|
|
||||||
echo "[binaries]\n\
|
|
||||||
c = '/usr/bin/arm-linux-gnueabihf-gcc'\n\
|
|
||||||
ar = '/usr/bin/arm-linux-gnueabihf-gcc-ar'\n\
|
|
||||||
strip = '/usr/bin/arm-linux-gnueabihf-strip'\n\
|
|
||||||
pkgconfig = '/usr/bin/arm-linux-gnueabihf-pkg-config'\n\
|
|
||||||
\n\
|
|
||||||
[host_machine]\n\
|
|
||||||
system = 'linux'\n\
|
|
||||||
cpu_family = 'arm'\n\
|
|
||||||
cpu = 'armhf'\n\
|
|
||||||
endian = 'little'" > /usr/local/share/meson/cross/arm-linux-gnueabihf
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "arm-linux-gnueabihf"
|
|
||||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabihf"
|
|
@@ -1,126 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross i686 debian-sid libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:sid-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libc-dev-bin \
|
|
||||||
libxml2-utils \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
meson \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-linux-gnu-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-linux-gnu-gcc
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
dpkg --add-architecture i386 && \
|
|
||||||
eatmydata apt-get update && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
gcc-i686-linux-gnu \
|
|
||||||
libacl1-dev:i386 \
|
|
||||||
libapparmor-dev:i386 \
|
|
||||||
libattr1-dev:i386 \
|
|
||||||
libaudit-dev:i386 \
|
|
||||||
libavahi-client-dev:i386 \
|
|
||||||
libblkid-dev:i386 \
|
|
||||||
libc6-dev:i386 \
|
|
||||||
libcap-ng-dev:i386 \
|
|
||||||
libcurl4-gnutls-dev:i386 \
|
|
||||||
libdbus-1-dev:i386 \
|
|
||||||
libdevmapper-dev:i386 \
|
|
||||||
libfuse-dev:i386 \
|
|
||||||
libglib2.0-dev:i386 \
|
|
||||||
libglusterfs-dev:i386 \
|
|
||||||
libgnutls28-dev:i386 \
|
|
||||||
libiscsi-dev:i386 \
|
|
||||||
libnl-3-dev:i386 \
|
|
||||||
libnl-route-3-dev:i386 \
|
|
||||||
libnuma-dev:i386 \
|
|
||||||
libparted-dev:i386 \
|
|
||||||
libpcap0.8-dev:i386 \
|
|
||||||
libpciaccess-dev:i386 \
|
|
||||||
librbd-dev:i386 \
|
|
||||||
libreadline-dev:i386 \
|
|
||||||
libsanlock-dev:i386 \
|
|
||||||
libsasl2-dev:i386 \
|
|
||||||
libselinux1-dev:i386 \
|
|
||||||
libssh-gcrypt-dev:i386 \
|
|
||||||
libssh2-1-dev:i386 \
|
|
||||||
libtirpc-dev:i386 \
|
|
||||||
libudev-dev:i386 \
|
|
||||||
libxml2-dev:i386 \
|
|
||||||
libyajl-dev:i386 \
|
|
||||||
systemtap-sdt-dev:i386 \
|
|
||||||
xfslibs-dev:i386 && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
mkdir -p /usr/local/share/meson/cross && \
|
|
||||||
echo "[binaries]\n\
|
|
||||||
c = '/usr/bin/i686-linux-gnu-gcc'\n\
|
|
||||||
ar = '/usr/bin/i686-linux-gnu-gcc-ar'\n\
|
|
||||||
strip = '/usr/bin/i686-linux-gnu-strip'\n\
|
|
||||||
pkgconfig = '/usr/bin/i686-linux-gnu-pkg-config'\n\
|
|
||||||
\n\
|
|
||||||
[host_machine]\n\
|
|
||||||
system = 'linux'\n\
|
|
||||||
cpu_family = 'x86'\n\
|
|
||||||
cpu = 'i686'\n\
|
|
||||||
endian = 'little'" > /usr/local/share/meson/cross/i686-linux-gnu
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "i686-linux-gnu"
|
|
||||||
ENV MESON_OPTS "--cross-file=i686-linux-gnu"
|
|
@@ -1,126 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross mips64el debian-sid libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:sid-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libc-dev-bin \
|
|
||||||
libxml2-utils \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
meson \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips64el-linux-gnuabi64-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips64el-linux-gnuabi64-gcc
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
dpkg --add-architecture mips64el && \
|
|
||||||
eatmydata apt-get update && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
gcc-mips64el-linux-gnuabi64 \
|
|
||||||
libacl1-dev:mips64el \
|
|
||||||
libapparmor-dev:mips64el \
|
|
||||||
libattr1-dev:mips64el \
|
|
||||||
libaudit-dev:mips64el \
|
|
||||||
libavahi-client-dev:mips64el \
|
|
||||||
libblkid-dev:mips64el \
|
|
||||||
libc6-dev:mips64el \
|
|
||||||
libcap-ng-dev:mips64el \
|
|
||||||
libcurl4-gnutls-dev:mips64el \
|
|
||||||
libdbus-1-dev:mips64el \
|
|
||||||
libdevmapper-dev:mips64el \
|
|
||||||
libfuse-dev:mips64el \
|
|
||||||
libglib2.0-dev:mips64el \
|
|
||||||
libglusterfs-dev:mips64el \
|
|
||||||
libgnutls28-dev:mips64el \
|
|
||||||
libiscsi-dev:mips64el \
|
|
||||||
libnl-3-dev:mips64el \
|
|
||||||
libnl-route-3-dev:mips64el \
|
|
||||||
libnuma-dev:mips64el \
|
|
||||||
libparted-dev:mips64el \
|
|
||||||
libpcap0.8-dev:mips64el \
|
|
||||||
libpciaccess-dev:mips64el \
|
|
||||||
librbd-dev:mips64el \
|
|
||||||
libreadline-dev:mips64el \
|
|
||||||
libsanlock-dev:mips64el \
|
|
||||||
libsasl2-dev:mips64el \
|
|
||||||
libselinux1-dev:mips64el \
|
|
||||||
libssh-gcrypt-dev:mips64el \
|
|
||||||
libssh2-1-dev:mips64el \
|
|
||||||
libtirpc-dev:mips64el \
|
|
||||||
libudev-dev:mips64el \
|
|
||||||
libxml2-dev:mips64el \
|
|
||||||
libyajl-dev:mips64el \
|
|
||||||
systemtap-sdt-dev:mips64el \
|
|
||||||
xfslibs-dev:mips64el && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
mkdir -p /usr/local/share/meson/cross && \
|
|
||||||
echo "[binaries]\n\
|
|
||||||
c = '/usr/bin/mips64el-linux-gnuabi64-gcc'\n\
|
|
||||||
ar = '/usr/bin/mips64el-linux-gnuabi64-gcc-ar'\n\
|
|
||||||
strip = '/usr/bin/mips64el-linux-gnuabi64-strip'\n\
|
|
||||||
pkgconfig = '/usr/bin/mips64el-linux-gnuabi64-pkg-config'\n\
|
|
||||||
\n\
|
|
||||||
[host_machine]\n\
|
|
||||||
system = 'linux'\n\
|
|
||||||
cpu_family = 'mips64'\n\
|
|
||||||
cpu = 'mips64el'\n\
|
|
||||||
endian = 'little'" > /usr/local/share/meson/cross/mips64el-linux-gnuabi64
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "mips64el-linux-gnuabi64"
|
|
||||||
ENV MESON_OPTS "--cross-file=mips64el-linux-gnuabi64"
|
|
@@ -1,126 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross mipsel debian-sid libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:sid-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libc-dev-bin \
|
|
||||||
libxml2-utils \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
meson \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mipsel-linux-gnu-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mipsel-linux-gnu-gcc
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
dpkg --add-architecture mipsel && \
|
|
||||||
eatmydata apt-get update && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
gcc-mipsel-linux-gnu \
|
|
||||||
libacl1-dev:mipsel \
|
|
||||||
libapparmor-dev:mipsel \
|
|
||||||
libattr1-dev:mipsel \
|
|
||||||
libaudit-dev:mipsel \
|
|
||||||
libavahi-client-dev:mipsel \
|
|
||||||
libblkid-dev:mipsel \
|
|
||||||
libc6-dev:mipsel \
|
|
||||||
libcap-ng-dev:mipsel \
|
|
||||||
libcurl4-gnutls-dev:mipsel \
|
|
||||||
libdbus-1-dev:mipsel \
|
|
||||||
libdevmapper-dev:mipsel \
|
|
||||||
libfuse-dev:mipsel \
|
|
||||||
libglib2.0-dev:mipsel \
|
|
||||||
libglusterfs-dev:mipsel \
|
|
||||||
libgnutls28-dev:mipsel \
|
|
||||||
libiscsi-dev:mipsel \
|
|
||||||
libnl-3-dev:mipsel \
|
|
||||||
libnl-route-3-dev:mipsel \
|
|
||||||
libnuma-dev:mipsel \
|
|
||||||
libparted-dev:mipsel \
|
|
||||||
libpcap0.8-dev:mipsel \
|
|
||||||
libpciaccess-dev:mipsel \
|
|
||||||
librbd-dev:mipsel \
|
|
||||||
libreadline-dev:mipsel \
|
|
||||||
libsanlock-dev:mipsel \
|
|
||||||
libsasl2-dev:mipsel \
|
|
||||||
libselinux1-dev:mipsel \
|
|
||||||
libssh-gcrypt-dev:mipsel \
|
|
||||||
libssh2-1-dev:mipsel \
|
|
||||||
libtirpc-dev:mipsel \
|
|
||||||
libudev-dev:mipsel \
|
|
||||||
libxml2-dev:mipsel \
|
|
||||||
libyajl-dev:mipsel \
|
|
||||||
systemtap-sdt-dev:mipsel \
|
|
||||||
xfslibs-dev:mipsel && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
mkdir -p /usr/local/share/meson/cross && \
|
|
||||||
echo "[binaries]\n\
|
|
||||||
c = '/usr/bin/mipsel-linux-gnu-gcc'\n\
|
|
||||||
ar = '/usr/bin/mipsel-linux-gnu-gcc-ar'\n\
|
|
||||||
strip = '/usr/bin/mipsel-linux-gnu-strip'\n\
|
|
||||||
pkgconfig = '/usr/bin/mipsel-linux-gnu-pkg-config'\n\
|
|
||||||
\n\
|
|
||||||
[host_machine]\n\
|
|
||||||
system = 'linux'\n\
|
|
||||||
cpu_family = 'mips'\n\
|
|
||||||
cpu = 'mipsel'\n\
|
|
||||||
endian = 'little'" > /usr/local/share/meson/cross/mipsel-linux-gnu
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "mipsel-linux-gnu"
|
|
||||||
ENV MESON_OPTS "--cross-file=mipsel-linux-gnu"
|
|
@@ -1,126 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross ppc64le debian-sid libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:sid-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libc-dev-bin \
|
|
||||||
libxml2-utils \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
meson \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-gcc
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
dpkg --add-architecture ppc64el && \
|
|
||||||
eatmydata apt-get update && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
gcc-powerpc64le-linux-gnu \
|
|
||||||
libacl1-dev:ppc64el \
|
|
||||||
libapparmor-dev:ppc64el \
|
|
||||||
libattr1-dev:ppc64el \
|
|
||||||
libaudit-dev:ppc64el \
|
|
||||||
libavahi-client-dev:ppc64el \
|
|
||||||
libblkid-dev:ppc64el \
|
|
||||||
libc6-dev:ppc64el \
|
|
||||||
libcap-ng-dev:ppc64el \
|
|
||||||
libcurl4-gnutls-dev:ppc64el \
|
|
||||||
libdbus-1-dev:ppc64el \
|
|
||||||
libdevmapper-dev:ppc64el \
|
|
||||||
libfuse-dev:ppc64el \
|
|
||||||
libglib2.0-dev:ppc64el \
|
|
||||||
libglusterfs-dev:ppc64el \
|
|
||||||
libgnutls28-dev:ppc64el \
|
|
||||||
libiscsi-dev:ppc64el \
|
|
||||||
libnl-3-dev:ppc64el \
|
|
||||||
libnl-route-3-dev:ppc64el \
|
|
||||||
libnuma-dev:ppc64el \
|
|
||||||
libparted-dev:ppc64el \
|
|
||||||
libpcap0.8-dev:ppc64el \
|
|
||||||
libpciaccess-dev:ppc64el \
|
|
||||||
librbd-dev:ppc64el \
|
|
||||||
libreadline-dev:ppc64el \
|
|
||||||
libsanlock-dev:ppc64el \
|
|
||||||
libsasl2-dev:ppc64el \
|
|
||||||
libselinux1-dev:ppc64el \
|
|
||||||
libssh-gcrypt-dev:ppc64el \
|
|
||||||
libssh2-1-dev:ppc64el \
|
|
||||||
libtirpc-dev:ppc64el \
|
|
||||||
libudev-dev:ppc64el \
|
|
||||||
libxml2-dev:ppc64el \
|
|
||||||
libyajl-dev:ppc64el \
|
|
||||||
systemtap-sdt-dev:ppc64el \
|
|
||||||
xfslibs-dev:ppc64el && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
mkdir -p /usr/local/share/meson/cross && \
|
|
||||||
echo "[binaries]\n\
|
|
||||||
c = '/usr/bin/powerpc64le-linux-gnu-gcc'\n\
|
|
||||||
ar = '/usr/bin/powerpc64le-linux-gnu-gcc-ar'\n\
|
|
||||||
strip = '/usr/bin/powerpc64le-linux-gnu-strip'\n\
|
|
||||||
pkgconfig = '/usr/bin/powerpc64le-linux-gnu-pkg-config'\n\
|
|
||||||
\n\
|
|
||||||
[host_machine]\n\
|
|
||||||
system = 'linux'\n\
|
|
||||||
cpu_family = 'ppc64'\n\
|
|
||||||
cpu = 'powerpc64le'\n\
|
|
||||||
endian = 'little'" > /usr/local/share/meson/cross/powerpc64le-linux-gnu
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "powerpc64le-linux-gnu"
|
|
||||||
ENV MESON_OPTS "--cross-file=powerpc64le-linux-gnu"
|
|
@@ -1,126 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross s390x debian-sid libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:sid-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libc-dev-bin \
|
|
||||||
libxml2-utils \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
meson \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/s390x-linux-gnu-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/s390x-linux-gnu-gcc
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
dpkg --add-architecture s390x && \
|
|
||||||
eatmydata apt-get update && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
gcc-s390x-linux-gnu \
|
|
||||||
libacl1-dev:s390x \
|
|
||||||
libapparmor-dev:s390x \
|
|
||||||
libattr1-dev:s390x \
|
|
||||||
libaudit-dev:s390x \
|
|
||||||
libavahi-client-dev:s390x \
|
|
||||||
libblkid-dev:s390x \
|
|
||||||
libc6-dev:s390x \
|
|
||||||
libcap-ng-dev:s390x \
|
|
||||||
libcurl4-gnutls-dev:s390x \
|
|
||||||
libdbus-1-dev:s390x \
|
|
||||||
libdevmapper-dev:s390x \
|
|
||||||
libfuse-dev:s390x \
|
|
||||||
libglib2.0-dev:s390x \
|
|
||||||
libglusterfs-dev:s390x \
|
|
||||||
libgnutls28-dev:s390x \
|
|
||||||
libiscsi-dev:s390x \
|
|
||||||
libnl-3-dev:s390x \
|
|
||||||
libnl-route-3-dev:s390x \
|
|
||||||
libnuma-dev:s390x \
|
|
||||||
libparted-dev:s390x \
|
|
||||||
libpcap0.8-dev:s390x \
|
|
||||||
libpciaccess-dev:s390x \
|
|
||||||
librbd-dev:s390x \
|
|
||||||
libreadline-dev:s390x \
|
|
||||||
libsanlock-dev:s390x \
|
|
||||||
libsasl2-dev:s390x \
|
|
||||||
libselinux1-dev:s390x \
|
|
||||||
libssh-gcrypt-dev:s390x \
|
|
||||||
libssh2-1-dev:s390x \
|
|
||||||
libtirpc-dev:s390x \
|
|
||||||
libudev-dev:s390x \
|
|
||||||
libxml2-dev:s390x \
|
|
||||||
libyajl-dev:s390x \
|
|
||||||
systemtap-sdt-dev:s390x \
|
|
||||||
xfslibs-dev:s390x && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
mkdir -p /usr/local/share/meson/cross && \
|
|
||||||
echo "[binaries]\n\
|
|
||||||
c = '/usr/bin/s390x-linux-gnu-gcc'\n\
|
|
||||||
ar = '/usr/bin/s390x-linux-gnu-gcc-ar'\n\
|
|
||||||
strip = '/usr/bin/s390x-linux-gnu-strip'\n\
|
|
||||||
pkgconfig = '/usr/bin/s390x-linux-gnu-pkg-config'\n\
|
|
||||||
\n\
|
|
||||||
[host_machine]\n\
|
|
||||||
system = 'linux'\n\
|
|
||||||
cpu_family = 's390x'\n\
|
|
||||||
cpu = 's390x'\n\
|
|
||||||
endian = 'big'" > /usr/local/share/meson/cross/s390x-linux-gnu
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "s390x-linux-gnu"
|
|
||||||
ENV MESON_OPTS "--cross-file=s390x-linux-gnu"
|
|
@@ -1,107 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile debian-sid libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/debian:sid-slim
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
clang \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gcc \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libacl1-dev \
|
|
||||||
libapparmor-dev \
|
|
||||||
libattr1-dev \
|
|
||||||
libaudit-dev \
|
|
||||||
libavahi-client-dev \
|
|
||||||
libblkid-dev \
|
|
||||||
libc-dev-bin \
|
|
||||||
libc6-dev \
|
|
||||||
libcap-ng-dev \
|
|
||||||
libcurl4-gnutls-dev \
|
|
||||||
libdbus-1-dev \
|
|
||||||
libdevmapper-dev \
|
|
||||||
libfuse-dev \
|
|
||||||
libglib2.0-dev \
|
|
||||||
libglusterfs-dev \
|
|
||||||
libgnutls28-dev \
|
|
||||||
libiscsi-dev \
|
|
||||||
libnetcf-dev \
|
|
||||||
libnl-3-dev \
|
|
||||||
libnl-route-3-dev \
|
|
||||||
libnuma-dev \
|
|
||||||
libparted-dev \
|
|
||||||
libpcap0.8-dev \
|
|
||||||
libpciaccess-dev \
|
|
||||||
librbd-dev \
|
|
||||||
libreadline-dev \
|
|
||||||
libsanlock-dev \
|
|
||||||
libsasl2-dev \
|
|
||||||
libselinux1-dev \
|
|
||||||
libssh-gcrypt-dev \
|
|
||||||
libssh2-1-dev \
|
|
||||||
libtirpc-dev \
|
|
||||||
libudev-dev \
|
|
||||||
libxen-dev \
|
|
||||||
libxml2-dev \
|
|
||||||
libxml2-utils \
|
|
||||||
libyajl-dev \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
meson \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
systemtap-sdt-dev \
|
|
||||||
wireshark-dev \
|
|
||||||
xfslibs-dev \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
@@ -1,115 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile fedora-33 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM registry.fedoraproject.org/fedora:33
|
|
||||||
|
|
||||||
RUN dnf install -y nosync && \
|
|
||||||
echo -e '#!/bin/sh\n\
|
|
||||||
if test -d /usr/lib64\n\
|
|
||||||
then\n\
|
|
||||||
export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\
|
|
||||||
else\n\
|
|
||||||
export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\
|
|
||||||
fi\n\
|
|
||||||
exec "$@"' > /usr/bin/nosync && \
|
|
||||||
chmod +x /usr/bin/nosync && \
|
|
||||||
nosync dnf update -y && \
|
|
||||||
nosync dnf install -y \
|
|
||||||
audit-libs-devel \
|
|
||||||
augeas \
|
|
||||||
avahi-devel \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
clang \
|
|
||||||
cpp \
|
|
||||||
cppi \
|
|
||||||
cyrus-sasl-devel \
|
|
||||||
dbus-devel \
|
|
||||||
device-mapper-devel \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
firewalld-filesystem \
|
|
||||||
fuse-devel \
|
|
||||||
gcc \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
glib2-devel \
|
|
||||||
glibc-devel \
|
|
||||||
glibc-langpack-en \
|
|
||||||
glusterfs-api-devel \
|
|
||||||
gnutls-devel \
|
|
||||||
grep \
|
|
||||||
iproute \
|
|
||||||
iproute-tc \
|
|
||||||
iptables \
|
|
||||||
iscsi-initiator-utils \
|
|
||||||
kmod \
|
|
||||||
libacl-devel \
|
|
||||||
libattr-devel \
|
|
||||||
libblkid-devel \
|
|
||||||
libcap-ng-devel \
|
|
||||||
libcurl-devel \
|
|
||||||
libiscsi-devel \
|
|
||||||
libnl3-devel \
|
|
||||||
libpcap-devel \
|
|
||||||
libpciaccess-devel \
|
|
||||||
librbd-devel \
|
|
||||||
libselinux-devel \
|
|
||||||
libssh-devel \
|
|
||||||
libssh2-devel \
|
|
||||||
libtirpc-devel \
|
|
||||||
libudev-devel \
|
|
||||||
libwsman-devel \
|
|
||||||
libxml2 \
|
|
||||||
libxml2-devel \
|
|
||||||
libxslt \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
meson \
|
|
||||||
netcf-devel \
|
|
||||||
nfs-utils \
|
|
||||||
ninja-build \
|
|
||||||
numactl-devel \
|
|
||||||
numad \
|
|
||||||
parted \
|
|
||||||
parted-devel \
|
|
||||||
perl-base \
|
|
||||||
pkgconfig \
|
|
||||||
polkit \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-flake8 \
|
|
||||||
qemu-img \
|
|
||||||
radvd \
|
|
||||||
readline-devel \
|
|
||||||
rpcgen \
|
|
||||||
rpm-build \
|
|
||||||
sanlock-devel \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
sheepdog \
|
|
||||||
systemtap-sdt-devel \
|
|
||||||
wireshark-devel \
|
|
||||||
xen-devel \
|
|
||||||
xfsprogs-devel \
|
|
||||||
yajl-devel \
|
|
||||||
zfs-fuse && \
|
|
||||||
nosync dnf autoremove -y && \
|
|
||||||
nosync dnf clean all -y && \
|
|
||||||
rpm -qa | sort > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
@@ -1,115 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile fedora-34 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM registry.fedoraproject.org/fedora:34
|
|
||||||
|
|
||||||
RUN dnf install -y nosync && \
|
|
||||||
echo -e '#!/bin/sh\n\
|
|
||||||
if test -d /usr/lib64\n\
|
|
||||||
then\n\
|
|
||||||
export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\
|
|
||||||
else\n\
|
|
||||||
export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\
|
|
||||||
fi\n\
|
|
||||||
exec "$@"' > /usr/bin/nosync && \
|
|
||||||
chmod +x /usr/bin/nosync && \
|
|
||||||
nosync dnf update -y && \
|
|
||||||
nosync dnf install -y \
|
|
||||||
audit-libs-devel \
|
|
||||||
augeas \
|
|
||||||
avahi-devel \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
clang \
|
|
||||||
cpp \
|
|
||||||
cppi \
|
|
||||||
cyrus-sasl-devel \
|
|
||||||
dbus-devel \
|
|
||||||
device-mapper-devel \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
firewalld-filesystem \
|
|
||||||
fuse-devel \
|
|
||||||
gcc \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
glib2-devel \
|
|
||||||
glibc-devel \
|
|
||||||
glibc-langpack-en \
|
|
||||||
glusterfs-api-devel \
|
|
||||||
gnutls-devel \
|
|
||||||
grep \
|
|
||||||
iproute \
|
|
||||||
iproute-tc \
|
|
||||||
iptables \
|
|
||||||
iscsi-initiator-utils \
|
|
||||||
kmod \
|
|
||||||
libacl-devel \
|
|
||||||
libattr-devel \
|
|
||||||
libblkid-devel \
|
|
||||||
libcap-ng-devel \
|
|
||||||
libcurl-devel \
|
|
||||||
libiscsi-devel \
|
|
||||||
libnl3-devel \
|
|
||||||
libpcap-devel \
|
|
||||||
libpciaccess-devel \
|
|
||||||
librbd-devel \
|
|
||||||
libselinux-devel \
|
|
||||||
libssh-devel \
|
|
||||||
libssh2-devel \
|
|
||||||
libtirpc-devel \
|
|
||||||
libudev-devel \
|
|
||||||
libwsman-devel \
|
|
||||||
libxml2 \
|
|
||||||
libxml2-devel \
|
|
||||||
libxslt \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
meson \
|
|
||||||
netcf-devel \
|
|
||||||
nfs-utils \
|
|
||||||
ninja-build \
|
|
||||||
numactl-devel \
|
|
||||||
numad \
|
|
||||||
parted \
|
|
||||||
parted-devel \
|
|
||||||
perl-base \
|
|
||||||
pkgconfig \
|
|
||||||
polkit \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-flake8 \
|
|
||||||
qemu-img \
|
|
||||||
radvd \
|
|
||||||
readline-devel \
|
|
||||||
rpcgen \
|
|
||||||
rpm-build \
|
|
||||||
sanlock-devel \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
sheepdog \
|
|
||||||
systemtap-sdt-devel \
|
|
||||||
wireshark-devel \
|
|
||||||
xen-devel \
|
|
||||||
xfsprogs-devel \
|
|
||||||
yajl-devel \
|
|
||||||
zfs-fuse && \
|
|
||||||
nosync dnf autoremove -y && \
|
|
||||||
nosync dnf clean all -y && \
|
|
||||||
rpm -qa | sort > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
@@ -1,93 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross mingw32 fedora-rawhide libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM registry.fedoraproject.org/fedora:rawhide
|
|
||||||
|
|
||||||
RUN dnf update -y --nogpgcheck fedora-gpg-keys && \
|
|
||||||
dnf install -y nosync && \
|
|
||||||
echo -e '#!/bin/sh\n\
|
|
||||||
if test -d /usr/lib64\n\
|
|
||||||
then\n\
|
|
||||||
export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\
|
|
||||||
else\n\
|
|
||||||
export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\
|
|
||||||
fi\n\
|
|
||||||
exec "$@"' > /usr/bin/nosync && \
|
|
||||||
chmod +x /usr/bin/nosync && \
|
|
||||||
nosync dnf update -y && \
|
|
||||||
nosync dnf install -y \
|
|
||||||
augeas \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
cppi \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
firewalld-filesystem \
|
|
||||||
git \
|
|
||||||
glibc-langpack-en \
|
|
||||||
grep \
|
|
||||||
iproute \
|
|
||||||
iproute-tc \
|
|
||||||
iptables \
|
|
||||||
iscsi-initiator-utils \
|
|
||||||
kmod \
|
|
||||||
libxml2 \
|
|
||||||
libxslt \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
meson \
|
|
||||||
nfs-utils \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
polkit \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-flake8 \
|
|
||||||
qemu-img \
|
|
||||||
radvd \
|
|
||||||
rpcgen \
|
|
||||||
rpm-build \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
sheepdog \
|
|
||||||
zfs-fuse && \
|
|
||||||
nosync dnf autoremove -y && \
|
|
||||||
nosync dnf clean all -y && \
|
|
||||||
rpm -qa | sort > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-w64-mingw32-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/i686-w64-mingw32-gcc
|
|
||||||
|
|
||||||
RUN nosync dnf install -y \
|
|
||||||
mingw32-curl \
|
|
||||||
mingw32-dbus \
|
|
||||||
mingw32-dlfcn \
|
|
||||||
mingw32-gcc \
|
|
||||||
mingw32-gettext \
|
|
||||||
mingw32-glib2 \
|
|
||||||
mingw32-gnutls \
|
|
||||||
mingw32-headers \
|
|
||||||
mingw32-libssh2 \
|
|
||||||
mingw32-libxml2 \
|
|
||||||
mingw32-pkg-config \
|
|
||||||
mingw32-portablexdr \
|
|
||||||
mingw32-readline && \
|
|
||||||
nosync dnf clean all -y
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "i686-w64-mingw32"
|
|
||||||
ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw32.meson"
|
|
@@ -1,93 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile --cross mingw64 fedora-rawhide libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM registry.fedoraproject.org/fedora:rawhide
|
|
||||||
|
|
||||||
RUN dnf update -y --nogpgcheck fedora-gpg-keys && \
|
|
||||||
dnf install -y nosync && \
|
|
||||||
echo -e '#!/bin/sh\n\
|
|
||||||
if test -d /usr/lib64\n\
|
|
||||||
then\n\
|
|
||||||
export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\
|
|
||||||
else\n\
|
|
||||||
export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\
|
|
||||||
fi\n\
|
|
||||||
exec "$@"' > /usr/bin/nosync && \
|
|
||||||
chmod +x /usr/bin/nosync && \
|
|
||||||
nosync dnf update -y && \
|
|
||||||
nosync dnf install -y \
|
|
||||||
augeas \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
cpp \
|
|
||||||
cppi \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
firewalld-filesystem \
|
|
||||||
git \
|
|
||||||
glibc-langpack-en \
|
|
||||||
grep \
|
|
||||||
iproute \
|
|
||||||
iproute-tc \
|
|
||||||
iptables \
|
|
||||||
iscsi-initiator-utils \
|
|
||||||
kmod \
|
|
||||||
libxml2 \
|
|
||||||
libxslt \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
meson \
|
|
||||||
nfs-utils \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
polkit \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-flake8 \
|
|
||||||
qemu-img \
|
|
||||||
radvd \
|
|
||||||
rpcgen \
|
|
||||||
rpm-build \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
sheepdog \
|
|
||||||
zfs-fuse && \
|
|
||||||
nosync dnf autoremove -y && \
|
|
||||||
nosync dnf clean all -y && \
|
|
||||||
rpm -qa | sort > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/x86_64-w64-mingw32-cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/x86_64-w64-mingw32-gcc
|
|
||||||
|
|
||||||
RUN nosync dnf install -y \
|
|
||||||
mingw64-curl \
|
|
||||||
mingw64-dbus \
|
|
||||||
mingw64-dlfcn \
|
|
||||||
mingw64-gcc \
|
|
||||||
mingw64-gettext \
|
|
||||||
mingw64-glib2 \
|
|
||||||
mingw64-gnutls \
|
|
||||||
mingw64-headers \
|
|
||||||
mingw64-libssh2 \
|
|
||||||
mingw64-libxml2 \
|
|
||||||
mingw64-pkg-config \
|
|
||||||
mingw64-portablexdr \
|
|
||||||
mingw64-readline && \
|
|
||||||
nosync dnf clean all -y
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
||||||
|
|
||||||
ENV ABI "x86_64-w64-mingw32"
|
|
||||||
ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw64.meson"
|
|
@@ -1,116 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile fedora-rawhide libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM registry.fedoraproject.org/fedora:rawhide
|
|
||||||
|
|
||||||
RUN dnf update -y --nogpgcheck fedora-gpg-keys && \
|
|
||||||
dnf install -y nosync && \
|
|
||||||
echo -e '#!/bin/sh\n\
|
|
||||||
if test -d /usr/lib64\n\
|
|
||||||
then\n\
|
|
||||||
export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\
|
|
||||||
else\n\
|
|
||||||
export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\
|
|
||||||
fi\n\
|
|
||||||
exec "$@"' > /usr/bin/nosync && \
|
|
||||||
chmod +x /usr/bin/nosync && \
|
|
||||||
nosync dnf update -y && \
|
|
||||||
nosync dnf install -y \
|
|
||||||
audit-libs-devel \
|
|
||||||
augeas \
|
|
||||||
avahi-devel \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
clang \
|
|
||||||
cpp \
|
|
||||||
cppi \
|
|
||||||
cyrus-sasl-devel \
|
|
||||||
dbus-devel \
|
|
||||||
device-mapper-devel \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
firewalld-filesystem \
|
|
||||||
fuse-devel \
|
|
||||||
gcc \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
glib2-devel \
|
|
||||||
glibc-devel \
|
|
||||||
glibc-langpack-en \
|
|
||||||
glusterfs-api-devel \
|
|
||||||
gnutls-devel \
|
|
||||||
grep \
|
|
||||||
iproute \
|
|
||||||
iproute-tc \
|
|
||||||
iptables \
|
|
||||||
iscsi-initiator-utils \
|
|
||||||
kmod \
|
|
||||||
libacl-devel \
|
|
||||||
libattr-devel \
|
|
||||||
libblkid-devel \
|
|
||||||
libcap-ng-devel \
|
|
||||||
libcurl-devel \
|
|
||||||
libiscsi-devel \
|
|
||||||
libnl3-devel \
|
|
||||||
libpcap-devel \
|
|
||||||
libpciaccess-devel \
|
|
||||||
librbd-devel \
|
|
||||||
libselinux-devel \
|
|
||||||
libssh-devel \
|
|
||||||
libssh2-devel \
|
|
||||||
libtirpc-devel \
|
|
||||||
libudev-devel \
|
|
||||||
libwsman-devel \
|
|
||||||
libxml2 \
|
|
||||||
libxml2-devel \
|
|
||||||
libxslt \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
meson \
|
|
||||||
netcf-devel \
|
|
||||||
nfs-utils \
|
|
||||||
ninja-build \
|
|
||||||
numactl-devel \
|
|
||||||
numad \
|
|
||||||
parted \
|
|
||||||
parted-devel \
|
|
||||||
perl-base \
|
|
||||||
pkgconfig \
|
|
||||||
polkit \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-flake8 \
|
|
||||||
qemu-img \
|
|
||||||
radvd \
|
|
||||||
readline-devel \
|
|
||||||
rpcgen \
|
|
||||||
rpm-build \
|
|
||||||
sanlock-devel \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
sheepdog \
|
|
||||||
systemtap-sdt-devel \
|
|
||||||
wireshark-devel \
|
|
||||||
xen-devel \
|
|
||||||
xfsprogs-devel \
|
|
||||||
yajl-devel \
|
|
||||||
zfs-fuse && \
|
|
||||||
nosync dnf autoremove -y && \
|
|
||||||
nosync dnf clean all -y && \
|
|
||||||
rpm -qa | sort > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
@@ -1,106 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile opensuse-leap-152 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM registry.opensuse.org/opensuse/leap:15.2
|
|
||||||
|
|
||||||
RUN zypper update -y && \
|
|
||||||
zypper install -y \
|
|
||||||
audit-devel \
|
|
||||||
augeas \
|
|
||||||
augeas-lenses \
|
|
||||||
avahi-devel \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
clang \
|
|
||||||
cpp \
|
|
||||||
cppi \
|
|
||||||
cyrus-sasl-devel \
|
|
||||||
dbus-1-devel \
|
|
||||||
device-mapper-devel \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
fuse-devel \
|
|
||||||
gcc \
|
|
||||||
gettext-runtime \
|
|
||||||
git \
|
|
||||||
glib2-devel \
|
|
||||||
glibc-devel \
|
|
||||||
glibc-locale \
|
|
||||||
glusterfs-devel \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libacl-devel \
|
|
||||||
libapparmor-devel \
|
|
||||||
libattr-devel \
|
|
||||||
libblkid-devel \
|
|
||||||
libcap-ng-devel \
|
|
||||||
libcurl-devel \
|
|
||||||
libgnutls-devel \
|
|
||||||
libiscsi-devel \
|
|
||||||
libnl3-devel \
|
|
||||||
libnuma-devel \
|
|
||||||
libpcap-devel \
|
|
||||||
libpciaccess-devel \
|
|
||||||
librbd-devel \
|
|
||||||
libselinux-devel \
|
|
||||||
libssh-devel \
|
|
||||||
libssh2-devel \
|
|
||||||
libtirpc-devel \
|
|
||||||
libudev-devel \
|
|
||||||
libwsman-devel \
|
|
||||||
libxml2 \
|
|
||||||
libxml2-devel \
|
|
||||||
libxslt \
|
|
||||||
libyajl-devel \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
nfs-utils \
|
|
||||||
ninja \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
parted-devel \
|
|
||||||
perl-base \
|
|
||||||
pkgconfig \
|
|
||||||
polkit \
|
|
||||||
python3-base \
|
|
||||||
python3-docutils \
|
|
||||||
python3-flake8 \
|
|
||||||
python3-pip \
|
|
||||||
python3-setuptools \
|
|
||||||
python3-wheel \
|
|
||||||
qemu-tools \
|
|
||||||
radvd \
|
|
||||||
readline-devel \
|
|
||||||
rpcgen \
|
|
||||||
rpm-build \
|
|
||||||
sanlock-devel \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
systemtap-sdt-devel \
|
|
||||||
wireshark-devel \
|
|
||||||
xen-devel \
|
|
||||||
xfsprogs-devel && \
|
|
||||||
zypper clean --all && \
|
|
||||||
rpm -qa | sort > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
|
||||||
|
|
||||||
RUN pip3 install \
|
|
||||||
meson==0.56.0
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
@@ -1,101 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile opensuse-tumbleweed libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM registry.opensuse.org/opensuse/tumbleweed:latest
|
|
||||||
|
|
||||||
RUN zypper update -y && \
|
|
||||||
zypper install -y \
|
|
||||||
audit-devel \
|
|
||||||
augeas \
|
|
||||||
augeas-lenses \
|
|
||||||
avahi-devel \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
clang \
|
|
||||||
cpp \
|
|
||||||
cppi \
|
|
||||||
cyrus-sasl-devel \
|
|
||||||
dbus-1-devel \
|
|
||||||
device-mapper-devel \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
fuse-devel \
|
|
||||||
gcc \
|
|
||||||
gettext-runtime \
|
|
||||||
git \
|
|
||||||
glib2-devel \
|
|
||||||
glibc-devel \
|
|
||||||
glibc-locale \
|
|
||||||
glusterfs-devel \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libacl-devel \
|
|
||||||
libapparmor-devel \
|
|
||||||
libattr-devel \
|
|
||||||
libblkid-devel \
|
|
||||||
libcap-ng-devel \
|
|
||||||
libcurl-devel \
|
|
||||||
libgnutls-devel \
|
|
||||||
libiscsi-devel \
|
|
||||||
libnl3-devel \
|
|
||||||
libnuma-devel \
|
|
||||||
libpcap-devel \
|
|
||||||
libpciaccess-devel \
|
|
||||||
librbd-devel \
|
|
||||||
libselinux-devel \
|
|
||||||
libssh-devel \
|
|
||||||
libssh2-devel \
|
|
||||||
libtirpc-devel \
|
|
||||||
libudev-devel \
|
|
||||||
libwsman-devel \
|
|
||||||
libxml2 \
|
|
||||||
libxml2-devel \
|
|
||||||
libxslt \
|
|
||||||
libyajl-devel \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
meson \
|
|
||||||
nfs-utils \
|
|
||||||
ninja \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
parted-devel \
|
|
||||||
perl-base \
|
|
||||||
pkgconfig \
|
|
||||||
polkit \
|
|
||||||
python3-base \
|
|
||||||
python3-docutils \
|
|
||||||
python3-flake8 \
|
|
||||||
qemu-tools \
|
|
||||||
radvd \
|
|
||||||
readline-devel \
|
|
||||||
rpcgen \
|
|
||||||
rpm-build \
|
|
||||||
sanlock-devel \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
systemtap-sdt-devel \
|
|
||||||
wireshark-devel \
|
|
||||||
xen-devel \
|
|
||||||
xfsprogs-devel && \
|
|
||||||
zypper clean --all && \
|
|
||||||
rpm -qa | sort > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
@@ -1,114 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile ubuntu-1804 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/ubuntu:18.04
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
clang \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gcc \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
glusterfs-common \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libacl1-dev \
|
|
||||||
libapparmor-dev \
|
|
||||||
libattr1-dev \
|
|
||||||
libaudit-dev \
|
|
||||||
libavahi-client-dev \
|
|
||||||
libblkid-dev \
|
|
||||||
libc-dev-bin \
|
|
||||||
libc6-dev \
|
|
||||||
libcap-ng-dev \
|
|
||||||
libcurl4-gnutls-dev \
|
|
||||||
libdbus-1-dev \
|
|
||||||
libdevmapper-dev \
|
|
||||||
libfuse-dev \
|
|
||||||
libglib2.0-dev \
|
|
||||||
libgnutls28-dev \
|
|
||||||
libiscsi-dev \
|
|
||||||
libnetcf-dev \
|
|
||||||
libnl-3-dev \
|
|
||||||
libnl-route-3-dev \
|
|
||||||
libnuma-dev \
|
|
||||||
libopenwsman-dev \
|
|
||||||
libparted-dev \
|
|
||||||
libpcap0.8-dev \
|
|
||||||
libpciaccess-dev \
|
|
||||||
librbd-dev \
|
|
||||||
libreadline-dev \
|
|
||||||
libsanlock-dev \
|
|
||||||
libsasl2-dev \
|
|
||||||
libselinux1-dev \
|
|
||||||
libssh-dev \
|
|
||||||
libssh2-1-dev \
|
|
||||||
libtirpc-dev \
|
|
||||||
libudev-dev \
|
|
||||||
libxen-dev \
|
|
||||||
libxml2-dev \
|
|
||||||
libxml2-utils \
|
|
||||||
libyajl-dev \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-pip \
|
|
||||||
python3-setuptools \
|
|
||||||
python3-wheel \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
sheepdog \
|
|
||||||
systemtap-sdt-dev \
|
|
||||||
wireshark-dev \
|
|
||||||
xfslibs-dev \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
|
||||||
|
|
||||||
RUN pip3 install \
|
|
||||||
meson==0.56.0
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
@@ -1,113 +0,0 @@
|
|||||||
# THIS FILE WAS AUTO-GENERATED
|
|
||||||
#
|
|
||||||
# $ lcitool dockerfile ubuntu-2004 libvirt
|
|
||||||
#
|
|
||||||
# https://gitlab.com/libvirt/libvirt-ci/-/commit/1d4e10a04c6a0d29302003244a9dc4dc3c9d06f0
|
|
||||||
|
|
||||||
FROM docker.io/library/ubuntu:20.04
|
|
||||||
|
|
||||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y eatmydata && \
|
|
||||||
eatmydata apt-get dist-upgrade -y && \
|
|
||||||
eatmydata apt-get install --no-install-recommends -y \
|
|
||||||
augeas-lenses \
|
|
||||||
augeas-tools \
|
|
||||||
bash-completion \
|
|
||||||
ca-certificates \
|
|
||||||
ccache \
|
|
||||||
clang \
|
|
||||||
cpp \
|
|
||||||
diffutils \
|
|
||||||
dnsmasq-base \
|
|
||||||
dwarves \
|
|
||||||
ebtables \
|
|
||||||
flake8 \
|
|
||||||
gcc \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
grep \
|
|
||||||
iproute2 \
|
|
||||||
iptables \
|
|
||||||
kmod \
|
|
||||||
libacl1-dev \
|
|
||||||
libapparmor-dev \
|
|
||||||
libattr1-dev \
|
|
||||||
libaudit-dev \
|
|
||||||
libavahi-client-dev \
|
|
||||||
libblkid-dev \
|
|
||||||
libc-dev-bin \
|
|
||||||
libc6-dev \
|
|
||||||
libcap-ng-dev \
|
|
||||||
libcurl4-gnutls-dev \
|
|
||||||
libdbus-1-dev \
|
|
||||||
libdevmapper-dev \
|
|
||||||
libfuse-dev \
|
|
||||||
libglib2.0-dev \
|
|
||||||
libglusterfs-dev \
|
|
||||||
libgnutls28-dev \
|
|
||||||
libiscsi-dev \
|
|
||||||
libnetcf-dev \
|
|
||||||
libnl-3-dev \
|
|
||||||
libnl-route-3-dev \
|
|
||||||
libnuma-dev \
|
|
||||||
libopenwsman-dev \
|
|
||||||
libparted-dev \
|
|
||||||
libpcap0.8-dev \
|
|
||||||
libpciaccess-dev \
|
|
||||||
librbd-dev \
|
|
||||||
libreadline-dev \
|
|
||||||
libsanlock-dev \
|
|
||||||
libsasl2-dev \
|
|
||||||
libselinux1-dev \
|
|
||||||
libssh-dev \
|
|
||||||
libssh2-1-dev \
|
|
||||||
libtirpc-dev \
|
|
||||||
libudev-dev \
|
|
||||||
libxen-dev \
|
|
||||||
libxml2-dev \
|
|
||||||
libxml2-utils \
|
|
||||||
libyajl-dev \
|
|
||||||
locales \
|
|
||||||
lvm2 \
|
|
||||||
make \
|
|
||||||
nfs-common \
|
|
||||||
ninja-build \
|
|
||||||
numad \
|
|
||||||
open-iscsi \
|
|
||||||
parted \
|
|
||||||
perl-base \
|
|
||||||
pkgconf \
|
|
||||||
policykit-1 \
|
|
||||||
python3 \
|
|
||||||
python3-docutils \
|
|
||||||
python3-pip \
|
|
||||||
python3-setuptools \
|
|
||||||
python3-wheel \
|
|
||||||
qemu-utils \
|
|
||||||
radvd \
|
|
||||||
scrub \
|
|
||||||
sed \
|
|
||||||
systemtap-sdt-dev \
|
|
||||||
wireshark-dev \
|
|
||||||
xfslibs-dev \
|
|
||||||
xsltproc \
|
|
||||||
zfs-fuse && \
|
|
||||||
eatmydata apt-get autoremove -y && \
|
|
||||||
eatmydata apt-get autoclean -y && \
|
|
||||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure locales && \
|
|
||||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
|
||||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
|
|
||||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
|
||||||
|
|
||||||
RUN pip3 install \
|
|
||||||
meson==0.56.0
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV MAKE "/usr/bin/make"
|
|
||||||
ENV NINJA "/usr/bin/ninja"
|
|
||||||
ENV PYTHON "/usr/bin/python3"
|
|
||||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
|
343
ci/helper
343
ci/helper
@@ -1,343 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
#
|
|
||||||
# Copyright (C) 2021 Red Hat, Inc.
|
|
||||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import os
|
|
||||||
import pathlib
|
|
||||||
import pty
|
|
||||||
import shutil
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
import textwrap
|
|
||||||
|
|
||||||
import util
|
|
||||||
|
|
||||||
|
|
||||||
class Parser:
|
|
||||||
def __init__(self):
|
|
||||||
# Options that are common to all actions that use containers
|
|
||||||
containerparser = argparse.ArgumentParser(add_help=False)
|
|
||||||
containerparser.add_argument(
|
|
||||||
"target",
|
|
||||||
help="perform action on target OS",
|
|
||||||
)
|
|
||||||
containerparser.add_argument(
|
|
||||||
"--engine",
|
|
||||||
choices=["auto", "podman", "docker"],
|
|
||||||
default="auto",
|
|
||||||
help="container engine to use",
|
|
||||||
)
|
|
||||||
containerparser.add_argument(
|
|
||||||
"--login",
|
|
||||||
default=os.getlogin(), # exempt from syntax-check
|
|
||||||
help="login to use inside the container",
|
|
||||||
)
|
|
||||||
containerparser.add_argument(
|
|
||||||
"--image-prefix",
|
|
||||||
default="registry.gitlab.com/libvirt/libvirt/ci-",
|
|
||||||
help="use container images from non-default location",
|
|
||||||
)
|
|
||||||
containerparser.add_argument(
|
|
||||||
"--image-tag",
|
|
||||||
default=":latest",
|
|
||||||
help="use container images with non-default tags",
|
|
||||||
)
|
|
||||||
|
|
||||||
# Options that are common to all actions that call the
|
|
||||||
# project's build system
|
|
||||||
mesonparser = argparse.ArgumentParser(add_help=False)
|
|
||||||
mesonparser.add_argument(
|
|
||||||
"--meson-args",
|
|
||||||
default="",
|
|
||||||
help="additional arguments passed to meson "
|
|
||||||
"(eg --meson-args='-Dopt1=enabled -Dopt2=disabled')",
|
|
||||||
)
|
|
||||||
mesonparser.add_argument(
|
|
||||||
"--ninja-args",
|
|
||||||
default="",
|
|
||||||
help="additional arguments passed to ninja",
|
|
||||||
)
|
|
||||||
|
|
||||||
# Options that are common to all actions that use lcitool
|
|
||||||
lcitoolparser = argparse.ArgumentParser(add_help=False)
|
|
||||||
lcitoolparser.add_argument(
|
|
||||||
"--lcitool",
|
|
||||||
metavar="PATH",
|
|
||||||
default="lcitool",
|
|
||||||
help="path to lcitool binary",
|
|
||||||
)
|
|
||||||
|
|
||||||
# Options that are common to actions communicating with a GitLab
|
|
||||||
# instance
|
|
||||||
gitlabparser = argparse.ArgumentParser(add_help=False)
|
|
||||||
gitlabparser.add_argument(
|
|
||||||
"--namespace",
|
|
||||||
default="libvirt/libvirt",
|
|
||||||
help="GitLab project namespace"
|
|
||||||
)
|
|
||||||
gitlabparser.add_argument(
|
|
||||||
"--gitlab-uri",
|
|
||||||
default="https://gitlab.com",
|
|
||||||
help="base GitLab URI"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Main parser
|
|
||||||
self._parser = argparse.ArgumentParser()
|
|
||||||
subparsers = self._parser.add_subparsers(
|
|
||||||
dest="action",
|
|
||||||
metavar="ACTION",
|
|
||||||
)
|
|
||||||
subparsers.required = True
|
|
||||||
|
|
||||||
# build action
|
|
||||||
buildparser = subparsers.add_parser(
|
|
||||||
"build",
|
|
||||||
help="run a build in a container",
|
|
||||||
parents=[containerparser, mesonparser],
|
|
||||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
||||||
)
|
|
||||||
buildparser.set_defaults(func=Application._action_build)
|
|
||||||
|
|
||||||
# test action
|
|
||||||
testparser = subparsers.add_parser(
|
|
||||||
"test",
|
|
||||||
help="run a build in a container (including tests)",
|
|
||||||
parents=[containerparser, mesonparser],
|
|
||||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
||||||
)
|
|
||||||
testparser.set_defaults(func=Application._action_test)
|
|
||||||
|
|
||||||
# shell action
|
|
||||||
shellparser = subparsers.add_parser(
|
|
||||||
"shell",
|
|
||||||
help="start a shell in a container",
|
|
||||||
parents=[containerparser],
|
|
||||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
||||||
)
|
|
||||||
shellparser.set_defaults(func=Application._action_shell)
|
|
||||||
|
|
||||||
# list-images action
|
|
||||||
listimagesparser = subparsers.add_parser(
|
|
||||||
"list-images",
|
|
||||||
help="list known container images",
|
|
||||||
parents=[gitlabparser],
|
|
||||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
||||||
)
|
|
||||||
listimagesparser.set_defaults(func=Application._action_list_images)
|
|
||||||
|
|
||||||
# refresh action
|
|
||||||
refreshparser = subparsers.add_parser(
|
|
||||||
"refresh",
|
|
||||||
help="refresh data generated with lcitool",
|
|
||||||
parents=[lcitoolparser, gitlabparser],
|
|
||||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
||||||
)
|
|
||||||
refreshparser.add_argument(
|
|
||||||
"--quiet",
|
|
||||||
action="store_true",
|
|
||||||
default=False,
|
|
||||||
help="refresh data silently"
|
|
||||||
)
|
|
||||||
refreshparser.add_argument(
|
|
||||||
"--check-stale",
|
|
||||||
action="store",
|
|
||||||
choices=["yes", "no"],
|
|
||||||
default="yes",
|
|
||||||
help="check for existence of stale images on the GitLab instance"
|
|
||||||
)
|
|
||||||
refreshparser.set_defaults(func=Application._action_refresh)
|
|
||||||
|
|
||||||
def parse(self):
|
|
||||||
return self._parser.parse_args()
|
|
||||||
|
|
||||||
|
|
||||||
class Application:
|
|
||||||
def __init__(self):
|
|
||||||
self._basedir = pathlib.Path(__file__).resolve().parent
|
|
||||||
self._args = Parser().parse()
|
|
||||||
|
|
||||||
if self._args.action == "refresh":
|
|
||||||
if not shutil.which(self._args.lcitool):
|
|
||||||
sys.exit("error: 'lcitool' not installed")
|
|
||||||
|
|
||||||
def _make_run(self, target):
|
|
||||||
args = [
|
|
||||||
"-C",
|
|
||||||
self._basedir,
|
|
||||||
target,
|
|
||||||
]
|
|
||||||
|
|
||||||
if self._args.action in ["build", "test", "shell"]:
|
|
||||||
args.extend([
|
|
||||||
f"CI_ENGINE={self._args.engine}",
|
|
||||||
f"CI_USER_LOGIN={self._args.login}",
|
|
||||||
f"CI_IMAGE_PREFIX={self._args.image_prefix}",
|
|
||||||
f"CI_IMAGE_TAG={self._args.image_tag}",
|
|
||||||
])
|
|
||||||
|
|
||||||
if self._args.action in ["build", "test"]:
|
|
||||||
args.extend([
|
|
||||||
f"CI_MESON_ARGS={self._args.meson_args}",
|
|
||||||
f"CI_NINJA_ARGS={self._args.ninja_args}",
|
|
||||||
])
|
|
||||||
|
|
||||||
if pty.spawn(["make"] + args) != 0:
|
|
||||||
sys.exit("error: 'make' failed")
|
|
||||||
|
|
||||||
def _lcitool_run(self, args):
|
|
||||||
output = subprocess.check_output([self._args.lcitool] + args)
|
|
||||||
return output.decode("utf-8")
|
|
||||||
|
|
||||||
def _lcitool_get_hosts(self):
|
|
||||||
output = self._lcitool_run(["hosts"])
|
|
||||||
return output.splitlines()
|
|
||||||
|
|
||||||
def _generate_dockerfile(self, host, cross=None):
|
|
||||||
args = ["dockerfile", host, "libvirt"]
|
|
||||||
outdir = self._basedir.joinpath("containers")
|
|
||||||
outfile = f"{host}.Dockerfile"
|
|
||||||
|
|
||||||
if cross:
|
|
||||||
args.extend(["--cross", cross])
|
|
||||||
outfile = f"{host}-cross-{cross}.Dockerfile"
|
|
||||||
|
|
||||||
outpath = outdir.joinpath(outfile)
|
|
||||||
if not self._args.quiet:
|
|
||||||
print(outpath)
|
|
||||||
|
|
||||||
output = self._lcitool_run(args)
|
|
||||||
with open(outpath, "w") as f:
|
|
||||||
f.write(output)
|
|
||||||
|
|
||||||
def _generate_vars(self, host):
|
|
||||||
args = ["variables", host, "libvirt"]
|
|
||||||
outdir = self._basedir.joinpath("cirrus")
|
|
||||||
outfile = f"{host}.vars"
|
|
||||||
|
|
||||||
outpath = outdir.joinpath(outfile)
|
|
||||||
if not self._args.quiet:
|
|
||||||
print(outpath)
|
|
||||||
|
|
||||||
output = self._lcitool_run(args)
|
|
||||||
with open(outpath, "w") as f:
|
|
||||||
f.write(output)
|
|
||||||
|
|
||||||
def _refresh_containers(self):
|
|
||||||
debian_cross = [
|
|
||||||
"aarch64",
|
|
||||||
"armv6l",
|
|
||||||
"armv7l",
|
|
||||||
"i686",
|
|
||||||
"mips",
|
|
||||||
"mips64el",
|
|
||||||
"mipsel",
|
|
||||||
"ppc64le",
|
|
||||||
"s390x",
|
|
||||||
]
|
|
||||||
fedora_cross = [
|
|
||||||
"mingw32",
|
|
||||||
"mingw64",
|
|
||||||
]
|
|
||||||
|
|
||||||
for host in self._lcitool_get_hosts():
|
|
||||||
if host.startswith("freebsd-") or host.startswith("macos-"):
|
|
||||||
continue
|
|
||||||
|
|
||||||
self._generate_dockerfile(host)
|
|
||||||
|
|
||||||
if host == "fedora-rawhide":
|
|
||||||
for cross in fedora_cross:
|
|
||||||
self._generate_dockerfile(host, cross)
|
|
||||||
|
|
||||||
if host.startswith("debian-"):
|
|
||||||
for cross in debian_cross:
|
|
||||||
if host == "debian-sid" and cross == "mips":
|
|
||||||
continue
|
|
||||||
self._generate_dockerfile(host, cross)
|
|
||||||
|
|
||||||
def _refresh_cirrus(self):
|
|
||||||
for host in self._lcitool_get_hosts():
|
|
||||||
if not (host.startswith("freebsd-") or host.startswith("macos-")):
|
|
||||||
continue
|
|
||||||
|
|
||||||
self._generate_vars(host)
|
|
||||||
|
|
||||||
def _check_stale_images(self):
|
|
||||||
namespace = self._args.namespace
|
|
||||||
gitlab_uri = self._args.gitlab_uri
|
|
||||||
registry_uri = util.get_registry_uri(namespace, gitlab_uri)
|
|
||||||
lcitool_hosts = self._lcitool_get_hosts()
|
|
||||||
|
|
||||||
stale_images = util.get_registry_stale_images(registry_uri,
|
|
||||||
lcitool_hosts)
|
|
||||||
if stale_images:
|
|
||||||
spacing = "\n" + 4 * " "
|
|
||||||
stale_fmt = [f"{k} (ID: {v})" for k, v in stale_images.items()]
|
|
||||||
stale_details = spacing.join(stale_fmt)
|
|
||||||
stale_ids = ' '.join([str(id) for id in stale_images.values()])
|
|
||||||
registry_uri = util.get_registry_uri(namespace, gitlab_uri)
|
|
||||||
|
|
||||||
msg = textwrap.dedent(f"""
|
|
||||||
The following images are stale and can be purged from the registry:
|
|
||||||
|
|
||||||
STALE_DETAILS
|
|
||||||
|
|
||||||
You can delete the images listed above using this shell snippet:
|
|
||||||
|
|
||||||
$ for image_id in {stale_ids}; do
|
|
||||||
curl --request DELETE --header "PRIVATE-TOKEN: <access_token>" \\
|
|
||||||
{registry_uri}/$image_id;
|
|
||||||
done
|
|
||||||
|
|
||||||
You can generate a personal access token here:
|
|
||||||
|
|
||||||
{gitlab_uri}/-/profile/personal_access_tokens
|
|
||||||
""")
|
|
||||||
print(msg.replace("STALE_DETAILS", stale_details))
|
|
||||||
|
|
||||||
def _action_build(self):
|
|
||||||
self._make_run(f"ci-build@{self._args.target}")
|
|
||||||
|
|
||||||
def _action_test(self):
|
|
||||||
self._make_run(f"ci-test@{self._args.target}")
|
|
||||||
|
|
||||||
def _action_shell(self):
|
|
||||||
self._make_run(f"ci-shell@{self._args.target}")
|
|
||||||
|
|
||||||
def _action_list_images(self):
|
|
||||||
registry_uri = util.get_registry_uri(self._args.namespace,
|
|
||||||
self._args.gitlab_uri)
|
|
||||||
images = util.get_registry_images(registry_uri)
|
|
||||||
|
|
||||||
# skip the "ci-" prefix each of our container images' name has
|
|
||||||
name_prefix = "ci-"
|
|
||||||
names = [i["name"][len(name_prefix):] for i in images]
|
|
||||||
names.sort()
|
|
||||||
|
|
||||||
native = [name for name in names if "-cross-" not in name]
|
|
||||||
cross = [name for name in names if "-cross-" in name]
|
|
||||||
|
|
||||||
spacing = 4 * " "
|
|
||||||
print("Available x86 container images:\n")
|
|
||||||
print(spacing + ("\n" + spacing).join(native))
|
|
||||||
|
|
||||||
if cross:
|
|
||||||
print()
|
|
||||||
print("Available cross-compiler container images:\n")
|
|
||||||
print(spacing + ("\n" + spacing).join(cross))
|
|
||||||
|
|
||||||
def _action_refresh(self):
|
|
||||||
self._refresh_containers()
|
|
||||||
self._refresh_cirrus()
|
|
||||||
|
|
||||||
if self._args.check_stale == "yes" and not self._args.quiet:
|
|
||||||
self._check_stale_images()
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
self._args.func(self)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
Application().run()
|
|
81
ci/util.py
81
ci/util.py
@@ -1,81 +0,0 @@
|
|||||||
import json
|
|
||||||
import urllib.request
|
|
||||||
import urllib.parse
|
|
||||||
|
|
||||||
from typing import Dict, List
|
|
||||||
|
|
||||||
|
|
||||||
def get_registry_uri(namespace: str,
|
|
||||||
gitlab_uri: str = "https://gitlab.com") -> str:
|
|
||||||
"""
|
|
||||||
Construct a v4 API URI pointing the namespaced project's image registry.
|
|
||||||
|
|
||||||
:param namespace: GitLab project namespace, e.g. "libvirt/libvirt"
|
|
||||||
:param gitlab_uri: GitLab base URI, can be a private deployment
|
|
||||||
:param api_version: GitLab REST API version number
|
|
||||||
:return: URI pointing to a namespaced project's image registry
|
|
||||||
"""
|
|
||||||
|
|
||||||
# this converts something like "libvirt/libvirt" to "libvirt%2Flibvirt"
|
|
||||||
namespace_urlenc = urllib.parse.quote_plus(namespace)
|
|
||||||
|
|
||||||
project_uri = f"{gitlab_uri}/api/v4/projects/{namespace_urlenc}"
|
|
||||||
|
|
||||||
uri = project_uri + "/registry/repositories"
|
|
||||||
return uri
|
|
||||||
|
|
||||||
|
|
||||||
def get_registry_images(uri: str) -> List[Dict]:
|
|
||||||
"""
|
|
||||||
List all container images that are currently available in the given GitLab
|
|
||||||
project.
|
|
||||||
|
|
||||||
:param uri: URI pointing to a GitLab instance's image registry
|
|
||||||
:return: list of container image names
|
|
||||||
"""
|
|
||||||
|
|
||||||
r = urllib.request.urlopen(uri + "?per_page=100")
|
|
||||||
|
|
||||||
# read the HTTP response and load the JSON part of it
|
|
||||||
return json.loads(r.read().decode())
|
|
||||||
|
|
||||||
|
|
||||||
def get_image_distro(image_name: str) -> str:
|
|
||||||
"""
|
|
||||||
Extract the name of the distro in the GitLab image registry name, e.g.
|
|
||||||
ci-debian-9-cross-mipsel --> debian-9
|
|
||||||
|
|
||||||
:param image_name: name of the GitLab registry image
|
|
||||||
:return: distro name as a string
|
|
||||||
"""
|
|
||||||
name_prefix = "ci-"
|
|
||||||
name_suffix = "-cross-"
|
|
||||||
|
|
||||||
distro = image_name[len(name_prefix):]
|
|
||||||
|
|
||||||
index = distro.find(name_suffix)
|
|
||||||
if index > 0:
|
|
||||||
distro = distro[:index]
|
|
||||||
|
|
||||||
return distro
|
|
||||||
|
|
||||||
|
|
||||||
def get_registry_stale_images(registry_uri: str,
|
|
||||||
supported_distros: List[str]) -> Dict[str, int]:
|
|
||||||
"""
|
|
||||||
Check the GitLab image registry for images that we no longer support and
|
|
||||||
which should be deleted.
|
|
||||||
|
|
||||||
:param uri: URI pointing to a GitLab instance's image registry
|
|
||||||
:param supported_distros: list of hosts supported by lcitool
|
|
||||||
:return: dictionary formatted as: {<gitlab_image_name>: <gitlab_image_id>}
|
|
||||||
"""
|
|
||||||
|
|
||||||
images = get_registry_images(registry_uri)
|
|
||||||
|
|
||||||
stale_images = {}
|
|
||||||
for img in images:
|
|
||||||
if get_image_distro(img["name"]) not in supported_distros:
|
|
||||||
stale_images[img["name"]] = img["id"]
|
|
||||||
|
|
||||||
return stale_images
|
|
71
config-post.h
Normal file
71
config-post.h
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2013 Red Hat, Inc.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library. If not, see
|
||||||
|
* <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Since virt-login-shell will be setuid, we must do everything
|
||||||
|
* we can to avoid linking to other libraries. Many of them do
|
||||||
|
* unsafe things in functions marked __atttribute__((constructor)).
|
||||||
|
* The only way avoid to avoid such deps is to re-compile the
|
||||||
|
* functions with the code in question disabled, and for that we
|
||||||
|
* must override the main config.h rules. Hence this file :-(
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef LIBVIRT_SETUID_RPC_CLIENT
|
||||||
|
# undef HAVE_LIBDEVMAPPER_H
|
||||||
|
# undef HAVE_LIBNL
|
||||||
|
# undef HAVE_LIBNL3
|
||||||
|
# undef HAVE_LIBSASL2
|
||||||
|
# undef WITH_CAPNG
|
||||||
|
# undef WITH_CURL
|
||||||
|
# undef WITH_DBUS
|
||||||
|
# undef WITH_DTRACE_PROBES
|
||||||
|
# undef WITH_GNUTLS
|
||||||
|
# undef WITH_GNUTLS_GCRYPT
|
||||||
|
# undef WITH_MACVTAP
|
||||||
|
# undef WITH_NUMACTL
|
||||||
|
# undef WITH_SASL
|
||||||
|
# undef WITH_SSH2
|
||||||
|
# undef WITH_SYSTEMD_DAEMON
|
||||||
|
# undef WITH_VIRTUALPORT
|
||||||
|
# undef WITH_YAJL
|
||||||
|
# undef WITH_YAJL2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* With the NSS module it's the same story as virt-login-shell. See the
|
||||||
|
* explanation above.
|
||||||
|
*/
|
||||||
|
#ifdef LIBVIRT_NSS
|
||||||
|
# undef HAVE_LIBDEVMAPPER_H
|
||||||
|
# undef HAVE_LIBNL
|
||||||
|
# undef HAVE_LIBNL3
|
||||||
|
# undef HAVE_LIBSASL2
|
||||||
|
# undef WITH_CAPNG
|
||||||
|
# undef WITH_CURL
|
||||||
|
# undef WITH_DTRACE_PROBES
|
||||||
|
# undef WITH_GNUTLS
|
||||||
|
# undef WITH_GNUTLS_GCRYPT
|
||||||
|
# undef WITH_MACVTAP
|
||||||
|
# undef WITH_NUMACTL
|
||||||
|
# undef WITH_SASL
|
||||||
|
# undef WITH_SSH2
|
||||||
|
# undef WITH_VIRTUALPORT
|
||||||
|
# undef WITH_SECDRIVER_SELINUX
|
||||||
|
# undef WITH_SECDRIVER_APPARMOR
|
||||||
|
# undef WITH_CAPNG
|
||||||
|
#endif /* LIBVIRT_NSS */
|
53
config.h
53
config.h
@@ -1,53 +0,0 @@
|
|||||||
/*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library. If not, see
|
|
||||||
* <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <meson-config.h>
|
|
||||||
|
|
||||||
/* Enable compile-time and run-time bounds-checking, and some warnings,
|
|
||||||
* without upsetting newer glibc. */
|
|
||||||
|
|
||||||
#if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__
|
|
||||||
# define _FORTIFY_SOURCE 2
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define __GNUC_PREREQ to a sane default if it isn't yet defined.
|
|
||||||
* This is done here so that it's included as early as possible;
|
|
||||||
*/
|
|
||||||
#ifndef __GNUC_PREREQ
|
|
||||||
# define __GNUC_PREREQ(maj, min) \
|
|
||||||
((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__clang_major__) && defined(__clang_minor__)
|
|
||||||
# ifdef __apple_build_version__
|
|
||||||
# if __clang_major__ < 5 || (__clang_major__ == 5 && __clang_minor__ < 1)
|
|
||||||
# error You need at least XCode Clang v5.1 to compile libvirt
|
|
||||||
# endif
|
|
||||||
# else
|
|
||||||
# if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 4)
|
|
||||||
# error You need at least Clang v3.4 to compile libvirt
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
#elif defined(__GNUC__) && defined(__GNUC_MINOR__)
|
|
||||||
# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8)
|
|
||||||
# error You need at least GCC v4.8 to compile libvirt
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
# error You either need at least GCC 4.8 or Clang 3.4 or XCode Clang 5.1 to compile libvirt
|
|
||||||
#endif
|
|
@@ -1,16 +0,0 @@
|
|||||||
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
|
|
||||||
#if WIN32
|
|
||||||
# include <winsock2.h> /* avoid mingw pollution on DATADIR */
|
|
||||||
#endif
|
|
||||||
#mesondefine BINDIR
|
|
||||||
#mesondefine DATADIR
|
|
||||||
#mesondefine LIBDIR
|
|
||||||
#mesondefine LIBEXECDIR
|
|
||||||
#mesondefine LOCALEDIR
|
|
||||||
#mesondefine LOCALSTATEDIR
|
|
||||||
#mesondefine MANDIR
|
|
||||||
#mesondefine PKGDATADIR
|
|
||||||
#mesondefine PREFIX
|
|
||||||
#mesondefine RUNSTATEDIR
|
|
||||||
#mesondefine SBINDIR
|
|
||||||
#mesondefine SYSCONFDIR
|
|
2895
configure.ac
Normal file
2895
configure.ac
Normal file
File diff suppressed because it is too large
Load Diff
546
daemon/Makefile.am
Normal file
546
daemon/Makefile.am
Normal file
@@ -0,0 +1,546 @@
|
|||||||
|
## Process this file with automake to produce Makefile.in
|
||||||
|
|
||||||
|
## Copyright (C) 2005-2015 Red Hat, Inc.
|
||||||
|
##
|
||||||
|
## This library is free software; you can redistribute it and/or
|
||||||
|
## modify it under the terms of the GNU Lesser General Public
|
||||||
|
## License as published by the Free Software Foundation; either
|
||||||
|
## version 2.1 of the License, or (at your option) any later version.
|
||||||
|
##
|
||||||
|
## This library is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
## Lesser General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU Lesser General Public
|
||||||
|
## License along with this library. If not, see
|
||||||
|
## <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
INCLUDES = \
|
||||||
|
-I$(top_builddir)/gnulib/lib -I$(top_srcdir)/gnulib/lib \
|
||||||
|
-I$(top_srcdir) \
|
||||||
|
-I$(top_builddir)/include -I$(top_srcdir)/include \
|
||||||
|
-I$(top_builddir)/src -I$(top_srcdir)/src \
|
||||||
|
-I$(top_srcdir)/src/util \
|
||||||
|
-I$(top_srcdir)/src/conf \
|
||||||
|
-I$(top_srcdir)/src/rpc \
|
||||||
|
-I$(top_srcdir)/src/remote \
|
||||||
|
-I$(top_srcdir)/src/admin \
|
||||||
|
-I$(top_srcdir)/src/access \
|
||||||
|
$(GETTEXT_CPPFLAGS)
|
||||||
|
|
||||||
|
CLEANFILES =
|
||||||
|
|
||||||
|
DAEMON_GENERATED = \
|
||||||
|
remote_dispatch.h \
|
||||||
|
lxc_dispatch.h \
|
||||||
|
qemu_dispatch.h \
|
||||||
|
admin_dispatch.h \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
DAEMON_SOURCES = \
|
||||||
|
libvirtd.c libvirtd.h \
|
||||||
|
remote.c remote.h \
|
||||||
|
stream.c stream.h \
|
||||||
|
$(DAEMON_GENERATED)
|
||||||
|
|
||||||
|
LIBVIRTD_CONF_SOURCES = libvirtd-config.c libvirtd-config.h
|
||||||
|
|
||||||
|
PODFILES = \
|
||||||
|
libvirtd.pod \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
MANINFILES = \
|
||||||
|
libvirtd.8.in \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
DISTCLEANFILES =
|
||||||
|
EXTRA_DIST = \
|
||||||
|
remote_dispatch.h \
|
||||||
|
lxc_dispatch.h \
|
||||||
|
qemu_dispatch.h \
|
||||||
|
admin_dispatch.h \
|
||||||
|
libvirtd.conf \
|
||||||
|
libvirtd.init.in \
|
||||||
|
libvirtd.upstart \
|
||||||
|
libvirtd.policy.in \
|
||||||
|
libvirt.rules \
|
||||||
|
libvirtd.sasl \
|
||||||
|
libvirtd.service.in \
|
||||||
|
libvirtd.sysconf \
|
||||||
|
libvirtd.sysctl \
|
||||||
|
libvirtd.aug \
|
||||||
|
libvirtd.logrotate.in \
|
||||||
|
libvirtd.qemu.logrotate.in \
|
||||||
|
libvirtd.lxc.logrotate.in \
|
||||||
|
libvirtd.libxl.logrotate.in \
|
||||||
|
libvirtd.uml.logrotate.in \
|
||||||
|
test_libvirtd.aug.in \
|
||||||
|
THREADS.txt \
|
||||||
|
$(PODFILES) \
|
||||||
|
$(MANINFILES) \
|
||||||
|
$(DAEMON_SOURCES) \
|
||||||
|
$(LIBVIRTD_CONF_SOURCES) \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
BUILT_SOURCES =
|
||||||
|
|
||||||
|
REMOTE_PROTOCOL = $(top_srcdir)/src/remote/remote_protocol.x
|
||||||
|
LXC_PROTOCOL = $(top_srcdir)/src/remote/lxc_protocol.x
|
||||||
|
QEMU_PROTOCOL = $(top_srcdir)/src/remote/qemu_protocol.x
|
||||||
|
ADMIN_PROTOCOL = $(top_srcdir)/src/admin/admin_protocol.x
|
||||||
|
|
||||||
|
remote_dispatch.h: $(top_srcdir)/src/rpc/gendispatch.pl \
|
||||||
|
$(REMOTE_PROTOCOL)
|
||||||
|
$(AM_V_GEN)$(PERL) -w $(top_srcdir)/src/rpc/gendispatch.pl \
|
||||||
|
--mode=server remote REMOTE $(REMOTE_PROTOCOL) \
|
||||||
|
> $(srcdir)/remote_dispatch.h
|
||||||
|
|
||||||
|
lxc_dispatch.h: $(top_srcdir)/src/rpc/gendispatch.pl \
|
||||||
|
$(LXC_PROTOCOL)
|
||||||
|
$(AM_V_GEN)$(PERL) -w $(top_srcdir)/src/rpc/gendispatch.pl \
|
||||||
|
--mode=server lxc LXC $(LXC_PROTOCOL) \
|
||||||
|
> $(srcdir)/lxc_dispatch.h
|
||||||
|
|
||||||
|
qemu_dispatch.h: $(top_srcdir)/src/rpc/gendispatch.pl \
|
||||||
|
$(QEMU_PROTOCOL)
|
||||||
|
$(AM_V_GEN)$(PERL) -w $(top_srcdir)/src/rpc/gendispatch.pl \
|
||||||
|
--mode=server qemu QEMU $(QEMU_PROTOCOL) \
|
||||||
|
> $(srcdir)/qemu_dispatch.h
|
||||||
|
|
||||||
|
admin_dispatch.h: $(top_srcdir)/src/rpc/gendispatch.pl \
|
||||||
|
$(ADMIN_PROTOCOL)
|
||||||
|
$(AM_V_GEN)$(PERL) -w $(top_srcdir)/src/rpc/gendispatch.pl \
|
||||||
|
--mode=server admin ADMIN $(ADMIN_PROTOCOL) \
|
||||||
|
> $(srcdir)/admin_dispatch.h
|
||||||
|
|
||||||
|
if WITH_LIBVIRTD
|
||||||
|
|
||||||
|
# Build a convenience library, for reuse in tests/libvirtdconftest
|
||||||
|
noinst_LTLIBRARIES = libvirtd_conf.la
|
||||||
|
libvirtd_conf_la_SOURCES = $(LIBVIRTD_CONF_SOURCES)
|
||||||
|
libvirtd_conf_la_CFLAGS = \
|
||||||
|
$(LIBXML_CFLAGS) \
|
||||||
|
$(XDR_CFLAGS) \
|
||||||
|
$(WARN_CFLAGS) $(PIE_CFLAGS) \
|
||||||
|
$(COVERAGE_CFLAGS) \
|
||||||
|
$(NULL)
|
||||||
|
libvirtd_conf_la_LDFLAGS = \
|
||||||
|
$(RELRO_LDFLAGS) \
|
||||||
|
$(PIE_LDFLAGS) \
|
||||||
|
$(COVERAGE_LDFLAGS) \
|
||||||
|
$(NO_INDIRECT_LDFLAGS) \
|
||||||
|
$(NULL)
|
||||||
|
libvirtd_conf_la_LIBADD = $(LIBXML_LIBS)
|
||||||
|
|
||||||
|
noinst_LTLIBRARIES += libvirtd_admin.la
|
||||||
|
libvirtd_admin_la_SOURCES = \
|
||||||
|
admin.c admin.h admin_server.c admin_server.h
|
||||||
|
|
||||||
|
libvirtd_admin_la_CFLAGS = \
|
||||||
|
$(AM_CFLAGS) \
|
||||||
|
$(XDR_CFLAGS) \
|
||||||
|
$(PIE_CFLAGS) \
|
||||||
|
$(WARN_CFLAGS) \
|
||||||
|
$(LIBXML_CFLAGS) \
|
||||||
|
$(COVERAGE_CFLAGS) \
|
||||||
|
$(NULL)
|
||||||
|
libvirtd_admin_la_LDFLAGS = \
|
||||||
|
$(PIE_LDFLAGS) \
|
||||||
|
$(RELRO_LDFLAGS) \
|
||||||
|
$(COVERAGE_LDFLAGS) \
|
||||||
|
$(NO_INDIRECT_LDFLAGS) \
|
||||||
|
$(NULL)
|
||||||
|
libvirtd_admin_la_LIBADD = \
|
||||||
|
../src/libvirt-admin.la
|
||||||
|
|
||||||
|
man8_MANS = libvirtd.8
|
||||||
|
|
||||||
|
sbin_PROGRAMS = libvirtd
|
||||||
|
|
||||||
|
confdir = $(sysconfdir)/libvirt/
|
||||||
|
conf_DATA = libvirtd.conf
|
||||||
|
|
||||||
|
augeasdir = $(datadir)/augeas/lenses
|
||||||
|
augeas_DATA = libvirtd.aug
|
||||||
|
|
||||||
|
augeastestsdir = $(datadir)/augeas/lenses/tests
|
||||||
|
augeastests_DATA = test_libvirtd.aug
|
||||||
|
|
||||||
|
CLEANFILES += test_libvirtd.aug
|
||||||
|
|
||||||
|
libvirtd_SOURCES = $(DAEMON_SOURCES)
|
||||||
|
|
||||||
|
#-D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_POSIX_C_SOURCE=199506L
|
||||||
|
libvirtd_CFLAGS = \
|
||||||
|
$(LIBXML_CFLAGS) $(GNUTLS_CFLAGS) $(SASL_CFLAGS) \
|
||||||
|
$(XDR_CFLAGS) $(DBUS_CFLAGS) $(LIBNL_CFLAGS) \
|
||||||
|
$(WARN_CFLAGS) $(PIE_CFLAGS) \
|
||||||
|
$(COVERAGE_CFLAGS) \
|
||||||
|
-DQEMUD_PID_FILE="\"$(QEMUD_PID_FILE)\""
|
||||||
|
|
||||||
|
libvirtd_LDFLAGS = \
|
||||||
|
$(RELRO_LDFLAGS) \
|
||||||
|
$(PIE_LDFLAGS) \
|
||||||
|
$(COVERAGE_LDFLAGS) \
|
||||||
|
$(NO_INDIRECT_LDFLAGS) \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
libvirtd_LDADD = \
|
||||||
|
$(LIBXML_LIBS) \
|
||||||
|
$(GNUTLS_LIBS) \
|
||||||
|
$(SASL_LIBS) \
|
||||||
|
$(DBUS_LIBS) \
|
||||||
|
$(LIBNL_LIBS)
|
||||||
|
|
||||||
|
if WITH_DTRACE_PROBES
|
||||||
|
libvirtd_LDADD += ../src/libvirt_probes.lo
|
||||||
|
endif WITH_DTRACE_PROBES
|
||||||
|
|
||||||
|
libvirtd_LDADD += \
|
||||||
|
libvirtd_conf.la \
|
||||||
|
libvirtd_admin.la \
|
||||||
|
../src/libvirt-lxc.la \
|
||||||
|
../src/libvirt-qemu.la \
|
||||||
|
../src/libvirt_driver_remote.la \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
if ! WITH_DRIVER_MODULES
|
||||||
|
if WITH_QEMU
|
||||||
|
libvirtd_LDADD += ../src/libvirt_driver_qemu.la
|
||||||
|
if WITH_DTRACE_PROBES
|
||||||
|
libvirtd_LDADD += ../src/libvirt_qemu_probes.lo
|
||||||
|
endif WITH_DTRACE_PROBES
|
||||||
|
endif WITH_QEMU
|
||||||
|
|
||||||
|
if WITH_LXC
|
||||||
|
libvirtd_LDADD += ../src/libvirt_driver_lxc.la
|
||||||
|
endif WITH_LXC
|
||||||
|
|
||||||
|
if WITH_XEN
|
||||||
|
libvirtd_LDADD += ../src/libvirt_driver_xen.la
|
||||||
|
endif WITH_XEN
|
||||||
|
|
||||||
|
if WITH_LIBXL
|
||||||
|
libvirtd_LDADD += ../src/libvirt_driver_libxl.la
|
||||||
|
endif WITH_LIBXL
|
||||||
|
|
||||||
|
if WITH_UML
|
||||||
|
libvirtd_LDADD += ../src/libvirt_driver_uml.la
|
||||||
|
endif WITH_UML
|
||||||
|
|
||||||
|
if WITH_VBOX
|
||||||
|
libvirtd_LDADD += ../src/libvirt_driver_vbox.la
|
||||||
|
endif WITH_VBOX
|
||||||
|
|
||||||
|
if WITH_VZ
|
||||||
|
libvirtd_LDADD += ../src/libvirt_driver_vz.la
|
||||||
|
endif WITH_VZ
|
||||||
|
|
||||||
|
if WITH_STORAGE
|
||||||
|
libvirtd_LDADD += ../src/libvirt_driver_storage.la
|
||||||
|
endif WITH_STORAGE
|
||||||
|
|
||||||
|
if WITH_NETWORK
|
||||||
|
libvirtd_LDADD += ../src/libvirt_driver_network.la
|
||||||
|
endif WITH_NETWORK
|
||||||
|
|
||||||
|
if WITH_INTERFACE
|
||||||
|
libvirtd_LDADD += ../src/libvirt_driver_interface.la
|
||||||
|
endif WITH_INTERFACE
|
||||||
|
|
||||||
|
if WITH_NODE_DEVICES
|
||||||
|
libvirtd_LDADD += ../src/libvirt_driver_nodedev.la
|
||||||
|
endif WITH_NODE_DEVICES
|
||||||
|
|
||||||
|
if WITH_SECRETS
|
||||||
|
libvirtd_LDADD += ../src/libvirt_driver_secret.la
|
||||||
|
endif WITH_SECRETS
|
||||||
|
|
||||||
|
if WITH_NWFILTER
|
||||||
|
libvirtd_LDADD += ../src/libvirt_driver_nwfilter.la
|
||||||
|
endif WITH_NWFILTER
|
||||||
|
endif ! WITH_DRIVER_MODULES
|
||||||
|
|
||||||
|
libvirtd_LDADD += ../src/libvirt.la
|
||||||
|
|
||||||
|
if WITH_POLKIT
|
||||||
|
if WITH_POLKIT0
|
||||||
|
policydir = $(datadir)/PolicyKit/policy
|
||||||
|
policyauth = auth_admin_keep_session
|
||||||
|
else ! WITH_POLKIT0
|
||||||
|
policydir = $(datadir)/polkit-1/actions
|
||||||
|
policyauth = auth_admin_keep
|
||||||
|
rulesdir = $(datadir)/polkit-1/rules.d
|
||||||
|
rulesfile = libvirt.rules
|
||||||
|
endif ! WITH_POLKIT0
|
||||||
|
endif WITH_POLKIT
|
||||||
|
|
||||||
|
libvirtd.policy: libvirtd.policy.in $(top_builddir)/config.status
|
||||||
|
$(AM_V_GEN) sed \
|
||||||
|
-e 's|[@]authaction[@]|$(policyauth)|g' \
|
||||||
|
< $< > $@-t && \
|
||||||
|
mv $@-t $@
|
||||||
|
BUILT_SOURCES += libvirtd.policy
|
||||||
|
|
||||||
|
install-data-local: install-init-redhat install-init-systemd \
|
||||||
|
install-init-upstart \
|
||||||
|
install-data-sasl install-data-polkit \
|
||||||
|
install-logrotate install-sysctl
|
||||||
|
$(MKDIR_P) $(DESTDIR)$(localstatedir)/log/libvirt \
|
||||||
|
$(DESTDIR)$(localstatedir)/run/libvirt \
|
||||||
|
$(DESTDIR)$(localstatedir)/lib/libvirt
|
||||||
|
|
||||||
|
uninstall-local:: uninstall-init-redhat uninstall-init-systemd \
|
||||||
|
uninstall-init-upstart \
|
||||||
|
uninstall-data-sasl uninstall-data-polkit \
|
||||||
|
uninstall-logrotate uninstall-sysctl
|
||||||
|
rmdir $(DESTDIR)$(localstatedir)/log/libvirt || :
|
||||||
|
rmdir $(DESTDIR)$(localstatedir)/run/libvirt || :
|
||||||
|
rmdir $(DESTDIR)$(localstatedir)/lib/libvirt || :
|
||||||
|
|
||||||
|
if WITH_POLKIT
|
||||||
|
install-data-polkit::
|
||||||
|
$(MKDIR_P) $(DESTDIR)$(policydir)
|
||||||
|
$(INSTALL_DATA) libvirtd.policy $(DESTDIR)$(policydir)/org.libvirt.unix.policy
|
||||||
|
if ! WITH_POLKIT0
|
||||||
|
$(MKDIR_P) $(DESTDIR)$(rulesdir)
|
||||||
|
$(INSTALL_DATA) $(srcdir)/$(rulesfile) $(DESTDIR)$(rulesdir)/50-libvirt.rules
|
||||||
|
endif ! WITH_POLKIT0
|
||||||
|
|
||||||
|
uninstall-data-polkit::
|
||||||
|
rm -f $(DESTDIR)$(policydir)/org.libvirt.unix.policy
|
||||||
|
rmdir $(DESTDIR)$(policydir) || :
|
||||||
|
if ! WITH_POLKIT0
|
||||||
|
rm -f $(DESTDIR)$(rulesdir)/50-libvirt.rules
|
||||||
|
rmdir $(DESTDIR)$(rulesdir) || :
|
||||||
|
endif ! WITH_POLKIT0
|
||||||
|
|
||||||
|
else ! WITH_POLKIT
|
||||||
|
install-data-polkit::
|
||||||
|
uninstall-data-polkit::
|
||||||
|
endif ! WITH_POLKIT
|
||||||
|
|
||||||
|
remote.c: $(DAEMON_GENERATED)
|
||||||
|
remote.h: $(DAEMON_GENERATED)
|
||||||
|
admin.c: $(DAEMON_GENERATED)
|
||||||
|
admin.h: $(DAEMON_GENERATED)
|
||||||
|
|
||||||
|
LOGROTATE_CONFS = libvirtd.qemu.logrotate libvirtd.lxc.logrotate \
|
||||||
|
libvirtd.libxl.logrotate libvirtd.uml.logrotate \
|
||||||
|
libvirtd.logrotate
|
||||||
|
|
||||||
|
BUILT_SOURCES += $(LOGROTATE_CONFS)
|
||||||
|
|
||||||
|
libvirtd.logrotate: libvirtd.logrotate.in
|
||||||
|
$(AM_V_GEN)sed \
|
||||||
|
-e 's|[@]localstatedir[@]|$(localstatedir)|g' \
|
||||||
|
< $< > $@-t && \
|
||||||
|
mv $@-t $@
|
||||||
|
|
||||||
|
libvirtd.qemu.logrotate: libvirtd.qemu.logrotate.in
|
||||||
|
$(AM_V_GEN)sed \
|
||||||
|
-e 's|[@]localstatedir[@]|$(localstatedir)|g' \
|
||||||
|
< $< > $@-t && \
|
||||||
|
mv $@-t $@
|
||||||
|
|
||||||
|
libvirtd.lxc.logrotate: libvirtd.lxc.logrotate.in
|
||||||
|
$(AM_V_GEN)sed \
|
||||||
|
-e 's|[@]localstatedir[@]|$(localstatedir)|g' \
|
||||||
|
< $< > $@-t && \
|
||||||
|
mv $@-t $@
|
||||||
|
|
||||||
|
libvirtd.libxl.logrotate: libvirtd.libxl.logrotate.in
|
||||||
|
$(AM_V_GEN)sed \
|
||||||
|
-e 's|[@]localstatedir[@]|$(localstatedir)|g' \
|
||||||
|
< $< > $@-t && \
|
||||||
|
mv $@-t $@
|
||||||
|
|
||||||
|
libvirtd.uml.logrotate: libvirtd.uml.logrotate.in
|
||||||
|
$(AM_V_GEN)sed \
|
||||||
|
-e 's|[@]localstatedir[@]|$(localstatedir)|g' \
|
||||||
|
< $< > $@-t && \
|
||||||
|
mv $@-t $@
|
||||||
|
|
||||||
|
install-logrotate: $(LOGROTATE_CONFS)
|
||||||
|
$(MKDIR_P) $(DESTDIR)$(localstatedir)/log/libvirt/qemu/ \
|
||||||
|
$(DESTDIR)$(localstatedir)/log/libvirt/lxc/ \
|
||||||
|
$(DESTDIR)$(localstatedir)/log/libvirt/uml/ \
|
||||||
|
$(DESTDIR)$(sysconfdir)/logrotate.d/
|
||||||
|
$(INSTALL_DATA) libvirtd.logrotate \
|
||||||
|
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd
|
||||||
|
$(INSTALL_DATA) libvirtd.qemu.logrotate \
|
||||||
|
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.qemu
|
||||||
|
$(INSTALL_DATA) libvirtd.lxc.logrotate \
|
||||||
|
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.lxc
|
||||||
|
$(INSTALL_DATA) libvirtd.libxl.logrotate \
|
||||||
|
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.libxl
|
||||||
|
$(INSTALL_DATA) libvirtd.uml.logrotate \
|
||||||
|
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.uml
|
||||||
|
|
||||||
|
uninstall-logrotate:
|
||||||
|
rm -f $(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd \
|
||||||
|
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.qemu \
|
||||||
|
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.lxc \
|
||||||
|
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.libxl \
|
||||||
|
$(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.uml
|
||||||
|
rmdir $(DESTDIR)$(localstatedir)/log/libvirt/qemu || :
|
||||||
|
rmdir $(DESTDIR)$(localstatedir)/log/libvirt/lxc || :
|
||||||
|
rmdir $(DESTDIR)$(localstatedir)/log/libvirt/uml || :
|
||||||
|
rmdir $(DESTDIR)$(sysconfdir)/logrotate.d || :
|
||||||
|
|
||||||
|
install-sysconfig:
|
||||||
|
$(MKDIR_P) $(DESTDIR)$(sysconfdir)/sysconfig
|
||||||
|
$(INSTALL_DATA) $(srcdir)/libvirtd.sysconf \
|
||||||
|
$(DESTDIR)$(sysconfdir)/sysconfig/libvirtd
|
||||||
|
uninstall-sysconfig:
|
||||||
|
rm -f $(DESTDIR)$(sysconfdir)/sysconfig/libvirtd
|
||||||
|
rmdir $(DESTDIR)$(sysconfdir)/sysconfig || :
|
||||||
|
|
||||||
|
if WITH_SYSCTL
|
||||||
|
# Use $(prefix)/lib rather than $(libdir), since man sysctl.d insists on
|
||||||
|
# /usr/lib/sysctl.d/ even when libdir is /usr/lib64
|
||||||
|
install-sysctl:
|
||||||
|
$(MKDIR_P) $(DESTDIR)$(prefix)/lib/sysctl.d
|
||||||
|
$(INSTALL_DATA) $(srcdir)/libvirtd.sysctl \
|
||||||
|
$(DESTDIR)$(prefix)/lib/sysctl.d/60-libvirtd.conf
|
||||||
|
|
||||||
|
uninstall-sysctl:
|
||||||
|
rm -f $(DESTDIR)$(prefix)/lib/sysctl.d/60-libvirtd.conf
|
||||||
|
rmdir $(DESTDIR)$(prefix)/lib/sysctl.d || :
|
||||||
|
else ! WITH_SYSCTL
|
||||||
|
install-sysctl:
|
||||||
|
uninstall-sysctl:
|
||||||
|
endif ! WITH_SYSCTL
|
||||||
|
|
||||||
|
if LIBVIRT_INIT_SCRIPT_RED_HAT
|
||||||
|
|
||||||
|
BUILT_SOURCES += libvirtd.init
|
||||||
|
|
||||||
|
install-init-redhat: install-sysconfig libvirtd.init
|
||||||
|
$(MKDIR_P) $(DESTDIR)$(sysconfdir)/rc.d/init.d
|
||||||
|
$(INSTALL_SCRIPT) libvirtd.init \
|
||||||
|
$(DESTDIR)$(sysconfdir)/rc.d/init.d/libvirtd
|
||||||
|
|
||||||
|
uninstall-init-redhat: uninstall-sysconfig
|
||||||
|
rm -f $(DESTDIR)$(sysconfdir)/rc.d/init.d/libvirtd
|
||||||
|
rmdir $(DESTDIR)$(sysconfdir)/rc.d/init.d || :
|
||||||
|
else ! LIBVIRT_INIT_SCRIPT_RED_HAT
|
||||||
|
install-init-redhat:
|
||||||
|
uninstall-init-redhat:
|
||||||
|
endif ! LIBVIRT_INIT_SCRIPT_RED_HAT
|
||||||
|
|
||||||
|
|
||||||
|
if LIBVIRT_INIT_SCRIPT_UPSTART
|
||||||
|
|
||||||
|
install-init-upstart: install-sysconfig
|
||||||
|
$(MKDIR_P) $(DESTDIR)$(sysconfdir)/event.d
|
||||||
|
$(INSTALL_SCRIPT) libvirtd.upstart \
|
||||||
|
$(DESTDIR)$(sysconfdir)/event.d/libvirtd
|
||||||
|
|
||||||
|
uninstall-init-upstart: uninstall-sysconfig
|
||||||
|
rm -f $(DESTDIR)$(sysconfdir)/event.d/libvirtd
|
||||||
|
rmdir $(DESTDIR)$(sysconfdir)/event.d || :
|
||||||
|
else ! LIBVIRT_INIT_SCRIPT_UPSTART
|
||||||
|
install-init-upstart:
|
||||||
|
uninstall-init-upstart:
|
||||||
|
endif ! LIBVIRT_INIT_SCRIPT_UPSTART
|
||||||
|
|
||||||
|
|
||||||
|
if LIBVIRT_INIT_SCRIPT_SYSTEMD
|
||||||
|
|
||||||
|
SYSTEMD_UNIT_DIR = $(prefix)/lib/systemd/system
|
||||||
|
BUILT_SOURCES += libvirtd.service
|
||||||
|
|
||||||
|
install-init-systemd: install-sysconfig libvirtd.service
|
||||||
|
$(MKDIR_P) $(DESTDIR)$(SYSTEMD_UNIT_DIR)
|
||||||
|
$(INSTALL_DATA) libvirtd.service \
|
||||||
|
$(DESTDIR)$(SYSTEMD_UNIT_DIR)/libvirtd.service
|
||||||
|
|
||||||
|
uninstall-init-systemd: uninstall-sysconfig
|
||||||
|
rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/libvirtd.service
|
||||||
|
rmdir $(DESTDIR)$(SYSTEMD_UNIT_DIR) || :
|
||||||
|
else ! LIBVIRT_INIT_SCRIPT_SYSTEMD
|
||||||
|
install-init-systemd:
|
||||||
|
uninstall-init-systemd:
|
||||||
|
endif ! LIBVIRT_INIT_SCRIPT_SYSTEMD
|
||||||
|
|
||||||
|
libvirtd.init: libvirtd.init.in $(top_builddir)/config.status
|
||||||
|
$(AM_V_GEN)sed \
|
||||||
|
-e 's|[@]localstatedir[@]|$(localstatedir)|g' \
|
||||||
|
-e 's|[@]sbindir[@]|$(sbindir)|g' \
|
||||||
|
-e 's|[@]sysconfdir[@]|$(sysconfdir)|g' \
|
||||||
|
< $< > $@-t && \
|
||||||
|
chmod a+x $@-t && \
|
||||||
|
mv $@-t $@
|
||||||
|
|
||||||
|
libvirtd.service: libvirtd.service.in $(top_builddir)/config.status
|
||||||
|
$(AM_V_GEN)sed \
|
||||||
|
-e 's|[@]localstatedir[@]|$(localstatedir)|g' \
|
||||||
|
-e 's|[@]sbindir[@]|$(sbindir)|g' \
|
||||||
|
-e 's|[@]sysconfdir[@]|$(sysconfdir)|g' \
|
||||||
|
< $< > $@-t && \
|
||||||
|
mv $@-t $@
|
||||||
|
|
||||||
|
|
||||||
|
check-local: check-augeas
|
||||||
|
|
||||||
|
AUG_GENTEST = $(PERL) $(top_srcdir)/build-aux/augeas-gentest.pl
|
||||||
|
|
||||||
|
test_libvirtd.aug: test_libvirtd.aug.in $(srcdir)/libvirtd.conf
|
||||||
|
$(AM_V_GEN)$(AUG_GENTEST) $(srcdir)/libvirtd.conf $< $@
|
||||||
|
|
||||||
|
check-augeas: test_libvirtd.aug
|
||||||
|
$(AM_V_GEN)if test -x '$(AUGPARSE)'; then \
|
||||||
|
'$(AUGPARSE)' -I $(srcdir) test_libvirtd.aug; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# This must be added last, since functions it provides/replaces
|
||||||
|
# are used by nearly every other library.
|
||||||
|
libvirtd_LDADD += ../gnulib/lib/libgnu.la $(LIBSOCKET)
|
||||||
|
|
||||||
|
else ! WITH_LIBVIRTD
|
||||||
|
install-data-local: install-data-sasl
|
||||||
|
uninstall-local:: uninstall-data-sasl
|
||||||
|
endif ! WITH_LIBVIRTD
|
||||||
|
|
||||||
|
POD2MAN = pod2man -c "Virtualization Support" -r "$(PACKAGE)-$(VERSION)"
|
||||||
|
|
||||||
|
%.8.in: %.pod
|
||||||
|
$(AM_V_GEN)$(POD2MAN) --section=8 $< $@-t1 && \
|
||||||
|
if grep 'POD ERROR' $@-t1; then rm $@-t1; exit 1; fi && \
|
||||||
|
sed \
|
||||||
|
-e 's|SYSCONFDIR|\@sysconfdir\@|g' \
|
||||||
|
-e 's|LOCALSTATEDIR|\@localstatedir\@|g' \
|
||||||
|
< $@-t1 > $@-t2 && \
|
||||||
|
rm -f $@-t1 && \
|
||||||
|
mv $@-t2 $@
|
||||||
|
|
||||||
|
%.8: %.8.in $(top_srcdir)/configure.ac
|
||||||
|
$(AM_V_GEN)sed \
|
||||||
|
-e 's|[@]sysconfdir[@]|$(sysconfdir)|g' \
|
||||||
|
-e 's|[@]localstatedir[@]|$(localstatedir)|g' \
|
||||||
|
< $< > $@-t && \
|
||||||
|
mv $@-t $@
|
||||||
|
|
||||||
|
# This is needed for clients too, so can't wrap in
|
||||||
|
# the WITH_LIBVIRTD conditional
|
||||||
|
if WITH_SASL
|
||||||
|
install-data-sasl:
|
||||||
|
$(MKDIR_P) $(DESTDIR)$(sysconfdir)/sasl2/
|
||||||
|
$(INSTALL_DATA) $(srcdir)/libvirtd.sasl \
|
||||||
|
$(DESTDIR)$(sysconfdir)/sasl2/libvirt.conf
|
||||||
|
|
||||||
|
uninstall-data-sasl:
|
||||||
|
rm -f $(DESTDIR)$(sysconfdir)/sasl2/libvirt.conf
|
||||||
|
rmdir $(DESTDIR)$(sysconfdir)/sasl2/ || :
|
||||||
|
else ! WITH_SASL
|
||||||
|
install-data-sasl:
|
||||||
|
uninstall-data-sasl:
|
||||||
|
endif ! WITH_SASL
|
||||||
|
|
||||||
|
|
||||||
|
CLEANFILES += $(BUILT_SOURCES) $(man8_MANS)
|
||||||
|
CLEANFILES += *.cov *.gcov .libs/*.gcda .libs/*.gcno *.gcno *.gcda
|
||||||
|
MAINTAINERCLEANFILES = $(MANINFILES) $(DAEMON_GENERATED)
|
52
daemon/THREADS.txt
Normal file
52
daemon/THREADS.txt
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
|
||||||
|
Threading in the libvirtd daemon
|
||||||
|
================================
|
||||||
|
|
||||||
|
To allow efficient processing of RPC requests, the libvirtd daemon
|
||||||
|
makes use of threads.
|
||||||
|
|
||||||
|
- The process leader. This is the initial thread of control
|
||||||
|
when the daemon starts running. It is responsible for
|
||||||
|
initializing all the state, and starting the event loop.
|
||||||
|
Once that's all done, this thread does nothing except
|
||||||
|
wait for the event loop to quit, thus indicating an orderly
|
||||||
|
shutdown is required.
|
||||||
|
|
||||||
|
- The event loop. This thread runs the event loop, sitting
|
||||||
|
in poll() on all monitored file handles, and calculating
|
||||||
|
and dispatching any timers that may be registered. When
|
||||||
|
this thread quits, the entire daemon will shutdown.
|
||||||
|
|
||||||
|
- The workers. These 'n' threads all sit around waiting to
|
||||||
|
process incoming RPC requests. Since RPC requests may take
|
||||||
|
a long time to complete, with long idle periods, there will
|
||||||
|
be quite a few workers running.
|
||||||
|
|
||||||
|
The use of threads obviously requires locking to ensure safety when
|
||||||
|
accessing/changing data structures.
|
||||||
|
|
||||||
|
- the top level lock is on 'struct qemud_server'. This must be
|
||||||
|
held before acquiring any other lock
|
||||||
|
|
||||||
|
- Each 'struct qemud_client' object has a lock. The server lock
|
||||||
|
must be held before acquiring it. Once the client lock is acquired
|
||||||
|
the server lock can (optionally) be dropped.
|
||||||
|
|
||||||
|
- The event loop has its own self-contained lock. You can ignore
|
||||||
|
this as a caller of virEvent APIs.
|
||||||
|
|
||||||
|
|
||||||
|
The server lock is used in conjunction with a condition variable
|
||||||
|
to pass jobs from the event loop thread to the workers. The main
|
||||||
|
event loop thread handles I/O from the client socket, and once a
|
||||||
|
complete RPC message has been read off the wire (and optionally
|
||||||
|
decrypted), it will be placed on the 'dx' job queue for the
|
||||||
|
associated client object. The job condition will be signalled and
|
||||||
|
a worker will wakup and process it.
|
||||||
|
|
||||||
|
The worker thread must quickly drop its locks on the server and
|
||||||
|
client to allow the main event loop thread to continue running
|
||||||
|
with its other work. Critically important, is that now libvirt
|
||||||
|
API call will ever be made with the server or client locks held.
|
||||||
|
|
||||||
|
-- End
|
386
daemon/admin.c
Normal file
386
daemon/admin.c
Normal file
@@ -0,0 +1,386 @@
|
|||||||
|
/*
|
||||||
|
* admin.c: handlers for admin RPC method calls
|
||||||
|
*
|
||||||
|
* Copyright (C) 2014-2016 Red Hat, Inc.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library. If not, see
|
||||||
|
* <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Author: Martin Kletzander <mkletzan@redhat.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
#include "internal.h"
|
||||||
|
#include "libvirtd.h"
|
||||||
|
#include "libvirt_internal.h"
|
||||||
|
|
||||||
|
#include "admin_protocol.h"
|
||||||
|
#include "admin.h"
|
||||||
|
#include "admin_server.h"
|
||||||
|
#include "datatypes.h"
|
||||||
|
#include "viralloc.h"
|
||||||
|
#include "virerror.h"
|
||||||
|
#include "virlog.h"
|
||||||
|
#include "virnetdaemon.h"
|
||||||
|
#include "virnetserver.h"
|
||||||
|
#include "virstring.h"
|
||||||
|
#include "virthreadjob.h"
|
||||||
|
#include "virtypedparam.h"
|
||||||
|
|
||||||
|
#define VIR_FROM_THIS VIR_FROM_ADMIN
|
||||||
|
|
||||||
|
VIR_LOG_INIT("daemon.admin");
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
remoteAdmClientFreeFunc(void *data)
|
||||||
|
{
|
||||||
|
struct daemonAdmClientPrivate *priv = data;
|
||||||
|
|
||||||
|
virMutexDestroy(&priv->lock);
|
||||||
|
virObjectUnref(priv->dmn);
|
||||||
|
VIR_FREE(priv);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
remoteAdmClientInitHook(virNetServerClientPtr client ATTRIBUTE_UNUSED,
|
||||||
|
void *opaque)
|
||||||
|
{
|
||||||
|
struct daemonAdmClientPrivate *priv;
|
||||||
|
|
||||||
|
if (VIR_ALLOC(priv) < 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (virMutexInit(&priv->lock) < 0) {
|
||||||
|
VIR_FREE(priv);
|
||||||
|
virReportSystemError(errno, "%s", _("unable to init mutex"));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We don't necessarily need to ref this object right now as there
|
||||||
|
* must be one ref being held throughout the life of the daemon,
|
||||||
|
* but let's just be safe for future.
|
||||||
|
*/
|
||||||
|
priv->dmn = virObjectRef(opaque);
|
||||||
|
|
||||||
|
return priv;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Helpers */
|
||||||
|
|
||||||
|
static virNetServerPtr
|
||||||
|
get_nonnull_server(virNetDaemonPtr dmn, admin_nonnull_server srv)
|
||||||
|
{
|
||||||
|
return virNetDaemonGetServer(dmn, srv.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
make_nonnull_server(admin_nonnull_server *srv_dst,
|
||||||
|
virNetServerPtr srv_src)
|
||||||
|
{
|
||||||
|
ignore_value(VIR_STRDUP_QUIET(srv_dst->name, virNetServerGetName(srv_src)));
|
||||||
|
}
|
||||||
|
|
||||||
|
static virNetServerClientPtr
|
||||||
|
get_nonnull_client(virNetServerPtr srv, admin_nonnull_client clnt)
|
||||||
|
{
|
||||||
|
return virNetServerGetClient(srv, clnt.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
make_nonnull_client(admin_nonnull_client *clt_dst,
|
||||||
|
virNetServerClientPtr clt_src)
|
||||||
|
{
|
||||||
|
clt_dst->id = virNetServerClientGetID(clt_src);
|
||||||
|
clt_dst->timestamp = virNetServerClientGetTimestamp(clt_src);
|
||||||
|
clt_dst->transport = virNetServerClientGetTransport(clt_src);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Functions */
|
||||||
|
static int
|
||||||
|
adminDispatchConnectOpen(virNetServerPtr server ATTRIBUTE_UNUSED,
|
||||||
|
virNetServerClientPtr client,
|
||||||
|
virNetMessagePtr msg ATTRIBUTE_UNUSED,
|
||||||
|
virNetMessageErrorPtr rerr,
|
||||||
|
struct admin_connect_open_args *args)
|
||||||
|
{
|
||||||
|
unsigned int flags;
|
||||||
|
struct daemonAdmClientPrivate *priv =
|
||||||
|
virNetServerClientGetPrivateData(client);
|
||||||
|
int ret = -1;
|
||||||
|
|
||||||
|
VIR_DEBUG("priv=%p dmn=%p", priv, priv->dmn);
|
||||||
|
virMutexLock(&priv->lock);
|
||||||
|
|
||||||
|
flags = args->flags;
|
||||||
|
virCheckFlagsGoto(0, cleanup);
|
||||||
|
|
||||||
|
ret = 0;
|
||||||
|
cleanup:
|
||||||
|
if (ret < 0)
|
||||||
|
virNetMessageSaveError(rerr);
|
||||||
|
virMutexUnlock(&priv->lock);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
adminDispatchConnectClose(virNetServerPtr server ATTRIBUTE_UNUSED,
|
||||||
|
virNetServerClientPtr client,
|
||||||
|
virNetMessagePtr msg ATTRIBUTE_UNUSED,
|
||||||
|
virNetMessageErrorPtr rerr ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
virNetServerClientDelayedClose(client);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
adminConnectGetLibVersion(virNetDaemonPtr dmn ATTRIBUTE_UNUSED,
|
||||||
|
unsigned long long *libVer)
|
||||||
|
{
|
||||||
|
if (libVer)
|
||||||
|
*libVer = LIBVIR_VERSION_NUMBER;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
adminDispatchServerGetThreadpoolParameters(virNetServerPtr server ATTRIBUTE_UNUSED,
|
||||||
|
virNetServerClientPtr client,
|
||||||
|
virNetMessagePtr msg ATTRIBUTE_UNUSED,
|
||||||
|
virNetMessageErrorPtr rerr,
|
||||||
|
struct admin_server_get_threadpool_parameters_args *args,
|
||||||
|
struct admin_server_get_threadpool_parameters_ret *ret)
|
||||||
|
{
|
||||||
|
int rv = -1;
|
||||||
|
virNetServerPtr srv = NULL;
|
||||||
|
virTypedParameterPtr params = NULL;
|
||||||
|
int nparams = 0;
|
||||||
|
struct daemonAdmClientPrivate *priv =
|
||||||
|
virNetServerClientGetPrivateData(client);
|
||||||
|
|
||||||
|
if (!(srv = virNetDaemonGetServer(priv->dmn, args->srv.name)))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (adminServerGetThreadPoolParameters(srv, ¶ms, &nparams,
|
||||||
|
args->flags) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (nparams > ADMIN_SERVER_THREADPOOL_PARAMETERS_MAX) {
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
|
_("Number of threadpool parameters %d exceeds max "
|
||||||
|
"allowed limit: %d"), nparams,
|
||||||
|
ADMIN_SERVER_THREADPOOL_PARAMETERS_MAX);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (virTypedParamsSerialize(params, nparams,
|
||||||
|
(virTypedParameterRemotePtr *) &ret->params.params_val,
|
||||||
|
&ret->params.params_len, 0) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
rv = 0;
|
||||||
|
cleanup:
|
||||||
|
if (rv < 0)
|
||||||
|
virNetMessageSaveError(rerr);
|
||||||
|
|
||||||
|
virTypedParamsFree(params, nparams);
|
||||||
|
virObjectUnref(srv);
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
adminDispatchServerSetThreadpoolParameters(virNetServerPtr server ATTRIBUTE_UNUSED,
|
||||||
|
virNetServerClientPtr client,
|
||||||
|
virNetMessagePtr msg ATTRIBUTE_UNUSED,
|
||||||
|
virNetMessageErrorPtr rerr,
|
||||||
|
struct admin_server_set_threadpool_parameters_args *args)
|
||||||
|
{
|
||||||
|
int rv = -1;
|
||||||
|
virNetServerPtr srv = NULL;
|
||||||
|
virTypedParameterPtr params = NULL;
|
||||||
|
int nparams = 0;
|
||||||
|
struct daemonAdmClientPrivate *priv =
|
||||||
|
virNetServerClientGetPrivateData(client);
|
||||||
|
|
||||||
|
if (!(srv = virNetDaemonGetServer(priv->dmn, args->srv.name))) {
|
||||||
|
virReportError(VIR_ERR_NO_SERVER,
|
||||||
|
_("no server with matching name '%s' found"),
|
||||||
|
args->srv.name);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (virTypedParamsDeserialize((virTypedParameterRemotePtr) args->params.params_val,
|
||||||
|
args->params.params_len,
|
||||||
|
ADMIN_SERVER_THREADPOOL_PARAMETERS_MAX,
|
||||||
|
¶ms,
|
||||||
|
&nparams) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
|
||||||
|
if (adminServerSetThreadPoolParameters(srv, params,
|
||||||
|
nparams, args->flags) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
rv = 0;
|
||||||
|
cleanup:
|
||||||
|
if (rv < 0)
|
||||||
|
virNetMessageSaveError(rerr);
|
||||||
|
|
||||||
|
virTypedParamsFree(params, nparams);
|
||||||
|
virObjectUnref(srv);
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
adminDispatchClientGetInfo(virNetServerPtr server ATTRIBUTE_UNUSED,
|
||||||
|
virNetServerClientPtr client,
|
||||||
|
virNetMessagePtr msg ATTRIBUTE_UNUSED,
|
||||||
|
virNetMessageErrorPtr rerr,
|
||||||
|
struct admin_client_get_info_args *args,
|
||||||
|
struct admin_client_get_info_ret *ret)
|
||||||
|
{
|
||||||
|
int rv = -1;
|
||||||
|
virNetServerPtr srv = NULL;
|
||||||
|
virNetServerClientPtr clnt = NULL;
|
||||||
|
virTypedParameterPtr params = NULL;
|
||||||
|
int nparams = 0;
|
||||||
|
struct daemonAdmClientPrivate *priv =
|
||||||
|
virNetServerClientGetPrivateData(client);
|
||||||
|
|
||||||
|
if (!(srv = virNetDaemonGetServer(priv->dmn, args->clnt.srv.name))) {
|
||||||
|
virReportError(VIR_ERR_NO_SERVER,
|
||||||
|
_("no server with matching name '%s' found"),
|
||||||
|
args->clnt.srv.name);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(clnt = virNetServerGetClient(srv, args->clnt.id))) {
|
||||||
|
virReportError(VIR_ERR_NO_CLIENT,
|
||||||
|
_("no client with matching id '%llu' found"),
|
||||||
|
(unsigned long long) args->clnt.id);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (adminClientGetInfo(clnt, ¶ms, &nparams, args->flags) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (nparams > ADMIN_CLIENT_INFO_PARAMETERS_MAX) {
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
|
_("Number of client info parameters %d exceeds max "
|
||||||
|
"allowed limit: %d"), nparams,
|
||||||
|
ADMIN_CLIENT_INFO_PARAMETERS_MAX);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (virTypedParamsSerialize(params, nparams,
|
||||||
|
(virTypedParameterRemotePtr *) &ret->params.params_val,
|
||||||
|
&ret->params.params_len,
|
||||||
|
VIR_TYPED_PARAM_STRING_OKAY) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
rv = 0;
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
if (rv < 0)
|
||||||
|
virNetMessageSaveError(rerr);
|
||||||
|
|
||||||
|
virTypedParamsFree(params, nparams);
|
||||||
|
virObjectUnref(clnt);
|
||||||
|
virObjectUnref(srv);
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
adminDispatchServerGetClientLimits(virNetServerPtr server ATTRIBUTE_UNUSED,
|
||||||
|
virNetServerClientPtr client,
|
||||||
|
virNetMessagePtr msg ATTRIBUTE_UNUSED,
|
||||||
|
virNetMessageErrorPtr rerr ATTRIBUTE_UNUSED,
|
||||||
|
admin_server_get_client_limits_args *args,
|
||||||
|
admin_server_get_client_limits_ret *ret)
|
||||||
|
{
|
||||||
|
int rv = -1;
|
||||||
|
virNetServerPtr srv = NULL;
|
||||||
|
virTypedParameterPtr params = NULL;
|
||||||
|
int nparams = 0;
|
||||||
|
struct daemonAdmClientPrivate *priv =
|
||||||
|
virNetServerClientGetPrivateData(client);
|
||||||
|
|
||||||
|
if (!(srv = virNetDaemonGetServer(priv->dmn, args->srv.name)))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (adminServerGetClientLimits(srv, ¶ms, &nparams, args->flags) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (nparams > ADMIN_SERVER_CLIENT_LIMITS_MAX) {
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
|
_("Number of client processing parameters %d exceeds "
|
||||||
|
"max allowed limit: %d"), nparams,
|
||||||
|
ADMIN_SERVER_CLIENT_LIMITS_MAX);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (virTypedParamsSerialize(params, nparams,
|
||||||
|
(virTypedParameterRemotePtr *) &ret->params.params_val,
|
||||||
|
&ret->params.params_len, 0) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
rv = 0;
|
||||||
|
cleanup:
|
||||||
|
if (rv < 0)
|
||||||
|
virNetMessageSaveError(rerr);
|
||||||
|
|
||||||
|
virTypedParamsFree(params, nparams);
|
||||||
|
virObjectUnref(srv);
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
adminDispatchServerSetClientLimits(virNetServerPtr server ATTRIBUTE_UNUSED,
|
||||||
|
virNetServerClientPtr client,
|
||||||
|
virNetMessagePtr msg ATTRIBUTE_UNUSED,
|
||||||
|
virNetMessageErrorPtr rerr ATTRIBUTE_UNUSED,
|
||||||
|
admin_server_set_client_limits_args *args)
|
||||||
|
{
|
||||||
|
int rv = -1;
|
||||||
|
virNetServerPtr srv = NULL;
|
||||||
|
virTypedParameterPtr params = NULL;
|
||||||
|
int nparams = 0;
|
||||||
|
struct daemonAdmClientPrivate *priv =
|
||||||
|
virNetServerClientGetPrivateData(client);
|
||||||
|
|
||||||
|
if (!(srv = virNetDaemonGetServer(priv->dmn, args->srv.name))) {
|
||||||
|
virReportError(VIR_ERR_NO_SERVER,
|
||||||
|
_("no server with matching name '%s' found"),
|
||||||
|
args->srv.name);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (virTypedParamsDeserialize((virTypedParameterRemotePtr) args->params.params_val,
|
||||||
|
args->params.params_len,
|
||||||
|
ADMIN_SERVER_CLIENT_LIMITS_MAX, ¶ms, &nparams) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (adminServerSetClientLimits(srv, params, nparams, args->flags) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
rv = 0;
|
||||||
|
cleanup:
|
||||||
|
if (rv < 0)
|
||||||
|
virNetMessageSaveError(rerr);
|
||||||
|
virTypedParamsFree(params, nparams);
|
||||||
|
virObjectUnref(srv);
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
#include "admin_dispatch.h"
|
36
daemon/admin.h
Normal file
36
daemon/admin.h
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* admin.h: handlers for admin RPC method calls
|
||||||
|
*
|
||||||
|
* Copyright (C) 2014-2016 Red Hat, Inc.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library. If not, see
|
||||||
|
* <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Author: Martin Kletzander <mkletzan@redhat.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __LIBVIRTD_ADMIN_H__
|
||||||
|
# define __LIBVIRTD_ADMIN_H__
|
||||||
|
|
||||||
|
# include "rpc/virnetserverprogram.h"
|
||||||
|
# include "rpc/virnetserverclient.h"
|
||||||
|
|
||||||
|
|
||||||
|
extern virNetServerProgramProc adminProcs[];
|
||||||
|
extern size_t adminNProcs;
|
||||||
|
|
||||||
|
void remoteAdmClientFreeFunc(void *data);
|
||||||
|
void *remoteAdmClientInitHook(virNetServerClientPtr client, void *opaque);
|
||||||
|
|
||||||
|
#endif /* __ADMIN_REMOTE_H__ */
|
390
daemon/admin_server.c
Normal file
390
daemon/admin_server.c
Normal file
@@ -0,0 +1,390 @@
|
|||||||
|
/*
|
||||||
|
* admin_server.c: admin methods to manage daemons and clients
|
||||||
|
*
|
||||||
|
* Copyright (C) 2016 Red Hat, Inc.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library. If not, see
|
||||||
|
* <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Authors: Erik Skultety <eskultet@redhat.com>
|
||||||
|
* Martin Kletzander <mkletzan@redhat.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
#include "admin_server.h"
|
||||||
|
#include "datatypes.h"
|
||||||
|
#include "viralloc.h"
|
||||||
|
#include "virerror.h"
|
||||||
|
#include "viridentity.h"
|
||||||
|
#include "virlog.h"
|
||||||
|
#include "virnetdaemon.h"
|
||||||
|
#include "virnetserver.h"
|
||||||
|
#include "virstring.h"
|
||||||
|
#include "virthreadpool.h"
|
||||||
|
#include "virtypedparam.h"
|
||||||
|
|
||||||
|
#define VIR_FROM_THIS VIR_FROM_ADMIN
|
||||||
|
|
||||||
|
VIR_LOG_INIT("daemon.admin_server");
|
||||||
|
|
||||||
|
int
|
||||||
|
adminConnectListServers(virNetDaemonPtr dmn,
|
||||||
|
virNetServerPtr **servers,
|
||||||
|
unsigned int flags)
|
||||||
|
{
|
||||||
|
int ret = -1;
|
||||||
|
virNetServerPtr *srvs = NULL;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
|
if ((ret = virNetDaemonGetServers(dmn, &srvs)) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (servers) {
|
||||||
|
*servers = srvs;
|
||||||
|
srvs = NULL;
|
||||||
|
}
|
||||||
|
cleanup:
|
||||||
|
if (ret > 0)
|
||||||
|
virObjectListFreeCount(srvs, ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
virNetServerPtr
|
||||||
|
adminConnectLookupServer(virNetDaemonPtr dmn,
|
||||||
|
const char *name,
|
||||||
|
unsigned int flags)
|
||||||
|
{
|
||||||
|
virCheckFlags(flags, NULL);
|
||||||
|
|
||||||
|
return virNetDaemonGetServer(dmn, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
adminServerGetThreadPoolParameters(virNetServerPtr srv,
|
||||||
|
virTypedParameterPtr *params,
|
||||||
|
int *nparams,
|
||||||
|
unsigned int flags)
|
||||||
|
{
|
||||||
|
int ret = -1;
|
||||||
|
int maxparams = 0;
|
||||||
|
size_t minWorkers;
|
||||||
|
size_t maxWorkers;
|
||||||
|
size_t nWorkers;
|
||||||
|
size_t freeWorkers;
|
||||||
|
size_t nPrioWorkers;
|
||||||
|
size_t jobQueueDepth;
|
||||||
|
virTypedParameterPtr tmpparams = NULL;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
|
if (virNetServerGetThreadPoolParameters(srv, &minWorkers, &maxWorkers,
|
||||||
|
&nWorkers, &freeWorkers,
|
||||||
|
&nPrioWorkers,
|
||||||
|
&jobQueueDepth) < 0) {
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||||
|
_("Unable to retrieve threadpool parameters"));
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (virTypedParamsAddUInt(&tmpparams, nparams,
|
||||||
|
&maxparams, VIR_THREADPOOL_WORKERS_MIN,
|
||||||
|
minWorkers) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virTypedParamsAddUInt(&tmpparams, nparams,
|
||||||
|
&maxparams, VIR_THREADPOOL_WORKERS_MAX,
|
||||||
|
maxWorkers) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virTypedParamsAddUInt(&tmpparams, nparams,
|
||||||
|
&maxparams, VIR_THREADPOOL_WORKERS_CURRENT,
|
||||||
|
nWorkers) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virTypedParamsAddUInt(&tmpparams, nparams,
|
||||||
|
&maxparams, VIR_THREADPOOL_WORKERS_FREE,
|
||||||
|
freeWorkers) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virTypedParamsAddUInt(&tmpparams, nparams,
|
||||||
|
&maxparams, VIR_THREADPOOL_WORKERS_PRIORITY,
|
||||||
|
nPrioWorkers) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virTypedParamsAddUInt(&tmpparams, nparams,
|
||||||
|
&maxparams, VIR_THREADPOOL_JOB_QUEUE_DEPTH,
|
||||||
|
jobQueueDepth) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
*params = tmpparams;
|
||||||
|
tmpparams = NULL;
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
virTypedParamsFree(tmpparams, *nparams);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
adminServerSetThreadPoolParameters(virNetServerPtr srv,
|
||||||
|
virTypedParameterPtr params,
|
||||||
|
int nparams,
|
||||||
|
unsigned int flags)
|
||||||
|
{
|
||||||
|
long long int minWorkers = -1;
|
||||||
|
long long int maxWorkers = -1;
|
||||||
|
long long int prioWorkers = -1;
|
||||||
|
virTypedParameterPtr param = NULL;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
|
if (virTypedParamsValidate(params, nparams,
|
||||||
|
VIR_THREADPOOL_WORKERS_MIN,
|
||||||
|
VIR_TYPED_PARAM_UINT,
|
||||||
|
VIR_THREADPOOL_WORKERS_MAX,
|
||||||
|
VIR_TYPED_PARAM_UINT,
|
||||||
|
VIR_THREADPOOL_WORKERS_PRIORITY,
|
||||||
|
VIR_TYPED_PARAM_UINT,
|
||||||
|
NULL) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if ((param = virTypedParamsGet(params, nparams,
|
||||||
|
VIR_THREADPOOL_WORKERS_MIN)))
|
||||||
|
minWorkers = param->value.ui;
|
||||||
|
|
||||||
|
if ((param = virTypedParamsGet(params, nparams,
|
||||||
|
VIR_THREADPOOL_WORKERS_MAX)))
|
||||||
|
maxWorkers = param->value.ui;
|
||||||
|
|
||||||
|
if ((param = virTypedParamsGet(params, nparams,
|
||||||
|
VIR_THREADPOOL_WORKERS_PRIORITY)))
|
||||||
|
prioWorkers = param->value.ui;
|
||||||
|
|
||||||
|
if (virNetServerSetThreadPoolParameters(srv, minWorkers,
|
||||||
|
maxWorkers, prioWorkers) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
adminServerListClients(virNetServerPtr srv,
|
||||||
|
virNetServerClientPtr **clients,
|
||||||
|
unsigned int flags)
|
||||||
|
{
|
||||||
|
int ret = -1;
|
||||||
|
virNetServerClientPtr *clts;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
|
if ((ret = virNetServerGetClients(srv, &clts)) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (clients) {
|
||||||
|
*clients = clts;
|
||||||
|
clts = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
virObjectListFreeCount(clts, ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
virNetServerClientPtr
|
||||||
|
adminServerLookupClient(virNetServerPtr srv,
|
||||||
|
unsigned long long id,
|
||||||
|
unsigned int flags)
|
||||||
|
{
|
||||||
|
virCheckFlags(0, NULL);
|
||||||
|
|
||||||
|
return virNetServerGetClient(srv, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
adminClientGetInfo(virNetServerClientPtr client,
|
||||||
|
virTypedParameterPtr *params,
|
||||||
|
int *nparams,
|
||||||
|
unsigned int flags)
|
||||||
|
{
|
||||||
|
int ret = -1;
|
||||||
|
int maxparams = 0;
|
||||||
|
bool readonly;
|
||||||
|
char *sock_addr = NULL;
|
||||||
|
const char *attr = NULL;
|
||||||
|
virTypedParameterPtr tmpparams = NULL;
|
||||||
|
virIdentityPtr identity = NULL;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
|
if (virNetServerClientGetInfo(client, &readonly,
|
||||||
|
&sock_addr, &identity) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virTypedParamsAddBoolean(&tmpparams, nparams, &maxparams,
|
||||||
|
VIR_CLIENT_INFO_READONLY,
|
||||||
|
readonly) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (!virNetServerClientIsLocal(client)) {
|
||||||
|
if (virTypedParamsAddString(&tmpparams, nparams, &maxparams,
|
||||||
|
VIR_CLIENT_INFO_SOCKET_ADDR,
|
||||||
|
sock_addr) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virIdentityGetSASLUserName(identity, &attr) < 0 ||
|
||||||
|
(attr &&
|
||||||
|
virTypedParamsAddString(&tmpparams, nparams, &maxparams,
|
||||||
|
VIR_CLIENT_INFO_SASL_USER_NAME,
|
||||||
|
attr) < 0))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virIdentityGetX509DName(identity, &attr) < 0 ||
|
||||||
|
(attr &&
|
||||||
|
virTypedParamsAddString(&tmpparams, nparams, &maxparams,
|
||||||
|
VIR_CLIENT_INFO_X509_DISTINGUISHED_NAME,
|
||||||
|
attr) < 0))
|
||||||
|
goto cleanup;
|
||||||
|
} else {
|
||||||
|
pid_t pid;
|
||||||
|
uid_t uid;
|
||||||
|
gid_t gid;
|
||||||
|
if (virIdentityGetUNIXUserID(identity, &uid) < 0 ||
|
||||||
|
virTypedParamsAddInt(&tmpparams, nparams, &maxparams,
|
||||||
|
VIR_CLIENT_INFO_UNIX_USER_ID, uid) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virIdentityGetUNIXUserName(identity, &attr) < 0 ||
|
||||||
|
virTypedParamsAddString(&tmpparams, nparams, &maxparams,
|
||||||
|
VIR_CLIENT_INFO_UNIX_USER_NAME,
|
||||||
|
attr) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virIdentityGetUNIXGroupID(identity, &gid) < 0 ||
|
||||||
|
virTypedParamsAddInt(&tmpparams, nparams, &maxparams,
|
||||||
|
VIR_CLIENT_INFO_UNIX_GROUP_ID, gid) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virIdentityGetUNIXGroupName(identity, &attr) < 0 ||
|
||||||
|
virTypedParamsAddString(&tmpparams, nparams, &maxparams,
|
||||||
|
VIR_CLIENT_INFO_UNIX_GROUP_NAME,
|
||||||
|
attr) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virIdentityGetUNIXProcessID(identity, &pid) < 0 ||
|
||||||
|
virTypedParamsAddInt(&tmpparams, nparams, &maxparams,
|
||||||
|
VIR_CLIENT_INFO_UNIX_PROCESS_ID, pid) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (virIdentityGetSELinuxContext(identity, &attr) < 0 ||
|
||||||
|
(attr &&
|
||||||
|
virTypedParamsAddString(&tmpparams, nparams, &maxparams,
|
||||||
|
VIR_CLIENT_INFO_SELINUX_CONTEXT, attr) < 0))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
*params = tmpparams;
|
||||||
|
tmpparams = NULL;
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
virObjectUnref(identity);
|
||||||
|
VIR_FREE(sock_addr);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int adminClientClose(virNetServerClientPtr client,
|
||||||
|
unsigned int flags)
|
||||||
|
{
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
|
virNetServerClientClose(client);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
adminServerGetClientLimits(virNetServerPtr srv,
|
||||||
|
virTypedParameterPtr *params,
|
||||||
|
int *nparams,
|
||||||
|
unsigned int flags)
|
||||||
|
{
|
||||||
|
int ret = -1;
|
||||||
|
int maxparams = 0;
|
||||||
|
virTypedParameterPtr tmpparams = NULL;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
|
if (virTypedParamsAddUInt(&tmpparams, nparams, &maxparams,
|
||||||
|
VIR_SERVER_CLIENTS_MAX,
|
||||||
|
virNetServerGetMaxClients(srv)) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virTypedParamsAddUInt(&tmpparams, nparams, &maxparams,
|
||||||
|
VIR_SERVER_CLIENTS_CURRENT,
|
||||||
|
virNetServerGetCurrentClients(srv)) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virTypedParamsAddUInt(&tmpparams, nparams, &maxparams,
|
||||||
|
VIR_SERVER_CLIENTS_UNAUTH_MAX,
|
||||||
|
virNetServerGetMaxUnauthClients(srv)) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
if (virTypedParamsAddUInt(&tmpparams, nparams, &maxparams,
|
||||||
|
VIR_SERVER_CLIENTS_UNAUTH_CURRENT,
|
||||||
|
virNetServerGetCurrentUnauthClients(srv)) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
*params = tmpparams;
|
||||||
|
tmpparams = NULL;
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
virTypedParamsFree(tmpparams, *nparams);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
adminServerSetClientLimits(virNetServerPtr srv,
|
||||||
|
virTypedParameterPtr params,
|
||||||
|
int nparams,
|
||||||
|
unsigned int flags)
|
||||||
|
{
|
||||||
|
long long int maxClients = -1;
|
||||||
|
long long int maxClientsUnauth = -1;
|
||||||
|
virTypedParameterPtr param = NULL;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
|
if (virTypedParamsValidate(params, nparams,
|
||||||
|
VIR_SERVER_CLIENTS_MAX,
|
||||||
|
VIR_TYPED_PARAM_UINT,
|
||||||
|
VIR_SERVER_CLIENTS_UNAUTH_MAX,
|
||||||
|
VIR_TYPED_PARAM_UINT,
|
||||||
|
NULL) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if ((param = virTypedParamsGet(params, nparams,
|
||||||
|
VIR_SERVER_CLIENTS_MAX)))
|
||||||
|
maxClients = param->value.ui;
|
||||||
|
|
||||||
|
if ((param = virTypedParamsGet(params, nparams,
|
||||||
|
VIR_SERVER_CLIENTS_UNAUTH_MAX)))
|
||||||
|
maxClientsUnauth = param->value.ui;
|
||||||
|
|
||||||
|
if (virNetServerSetClientProcessingControls(srv, maxClients,
|
||||||
|
maxClientsUnauth) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
75
daemon/admin_server.h
Normal file
75
daemon/admin_server.h
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
/*
|
||||||
|
* admin_server.h: admin methods to manage daemons and clients
|
||||||
|
*
|
||||||
|
* Copyright (C) 2016 Red Hat, Inc.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library. If not, see
|
||||||
|
* <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Authors: Erik Skultety <eskultet@redhat.com>
|
||||||
|
* Martin Kletzander <mkletzan@redhat.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __LIBVIRTD_ADMIN_SERVER_H__
|
||||||
|
# define __LIBVIRTD_ADMIN_SERVER_H__
|
||||||
|
|
||||||
|
# include "rpc/virnetdaemon.h"
|
||||||
|
# include "rpc/virnetserver.h"
|
||||||
|
|
||||||
|
int adminConnectListServers(virNetDaemonPtr dmn,
|
||||||
|
virNetServerPtr **servers,
|
||||||
|
unsigned int flags);
|
||||||
|
|
||||||
|
virNetServerPtr adminConnectLookupServer(virNetDaemonPtr dmn,
|
||||||
|
const char *name,
|
||||||
|
unsigned int flags);
|
||||||
|
|
||||||
|
int
|
||||||
|
adminServerGetThreadPoolParameters(virNetServerPtr srv,
|
||||||
|
virTypedParameterPtr *params,
|
||||||
|
int *nparams,
|
||||||
|
unsigned int flags);
|
||||||
|
int
|
||||||
|
adminServerSetThreadPoolParameters(virNetServerPtr srv,
|
||||||
|
virTypedParameterPtr params,
|
||||||
|
int nparams,
|
||||||
|
unsigned int flags);
|
||||||
|
|
||||||
|
int adminServerListClients(virNetServerPtr srv,
|
||||||
|
virNetServerClientPtr **clients,
|
||||||
|
unsigned int flags);
|
||||||
|
|
||||||
|
virNetServerClientPtr adminServerLookupClient(virNetServerPtr srv,
|
||||||
|
unsigned long long id,
|
||||||
|
unsigned int flags);
|
||||||
|
|
||||||
|
int adminClientGetInfo(virNetServerClientPtr client,
|
||||||
|
virTypedParameterPtr *params,
|
||||||
|
int *nparams,
|
||||||
|
unsigned int flags);
|
||||||
|
|
||||||
|
int adminClientClose(virNetServerClientPtr client,
|
||||||
|
unsigned int flags);
|
||||||
|
|
||||||
|
int adminServerGetClientLimits(virNetServerPtr srv,
|
||||||
|
virTypedParameterPtr *params,
|
||||||
|
int *nparams,
|
||||||
|
unsigned int flags);
|
||||||
|
|
||||||
|
int adminServerSetClientLimits(virNetServerPtr srv,
|
||||||
|
virTypedParameterPtr params,
|
||||||
|
int nparams,
|
||||||
|
unsigned int flags);
|
||||||
|
|
||||||
|
#endif /* __LIBVIRTD_ADMIN_SERVER_H__ */
|
527
daemon/libvirtd-config.c
Normal file
527
daemon/libvirtd-config.c
Normal file
@@ -0,0 +1,527 @@
|
|||||||
|
/*
|
||||||
|
* libvirtd-config.c: daemon start of day, guest process & i/o management
|
||||||
|
*
|
||||||
|
* Copyright (C) 2006-2012, 2014, 2015 Red Hat, Inc.
|
||||||
|
* Copyright (C) 2006 Daniel P. Berrange
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library. If not, see
|
||||||
|
* <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Author: Daniel P. Berrange <berrange@redhat.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
#include "libvirtd-config.h"
|
||||||
|
#include "virconf.h"
|
||||||
|
#include "viralloc.h"
|
||||||
|
#include "virerror.h"
|
||||||
|
#include "virlog.h"
|
||||||
|
#include "rpc/virnetserver.h"
|
||||||
|
#include "configmake.h"
|
||||||
|
#include "remote/remote_protocol.h"
|
||||||
|
#include "remote/remote_driver.h"
|
||||||
|
#include "virstring.h"
|
||||||
|
#include "virutil.h"
|
||||||
|
|
||||||
|
#define VIR_FROM_THIS VIR_FROM_CONF
|
||||||
|
|
||||||
|
VIR_LOG_INIT("daemon.libvirtd-config");
|
||||||
|
|
||||||
|
/* Allocate an array of malloc'd strings from the config file, filename
|
||||||
|
* (used only in diagnostics), using handle "conf". Upon error, return -1
|
||||||
|
* and free any allocated memory. Otherwise, save the array in *list_arg
|
||||||
|
* and return 0.
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
remoteConfigGetStringList(virConfPtr conf, const char *key, char ***list_arg,
|
||||||
|
const char *filename)
|
||||||
|
{
|
||||||
|
char **list;
|
||||||
|
virConfValuePtr p = virConfGetValue(conf, key);
|
||||||
|
if (!p)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
switch (p->type) {
|
||||||
|
case VIR_CONF_STRING:
|
||||||
|
if (VIR_ALLOC_N(list, 2) < 0) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
|
_("failed to allocate memory for %s config list"),
|
||||||
|
key);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (VIR_STRDUP(list[0], p->str) < 0) {
|
||||||
|
VIR_FREE(list);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
list[1] = NULL;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VIR_CONF_LIST: {
|
||||||
|
int len = 0;
|
||||||
|
size_t i;
|
||||||
|
virConfValuePtr pp;
|
||||||
|
for (pp = p->list; pp; pp = pp->next)
|
||||||
|
len++;
|
||||||
|
if (VIR_ALLOC_N(list, 1+len) < 0) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
|
_("failed to allocate memory for %s config list"),
|
||||||
|
key);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
for (i = 0, pp = p->list; pp; ++i, pp = pp->next) {
|
||||||
|
if (pp->type != VIR_CONF_STRING) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
|
_("remoteReadConfigFile: %s: %s:"
|
||||||
|
" must be a string or list of strings"),
|
||||||
|
filename, key);
|
||||||
|
VIR_FREE(list);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (VIR_STRDUP(list[i], pp->str) < 0) {
|
||||||
|
size_t j;
|
||||||
|
for (j = 0; j < i; j++)
|
||||||
|
VIR_FREE(list[j]);
|
||||||
|
VIR_FREE(list);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
list[i] = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
|
_("remoteReadConfigFile: %s: %s:"
|
||||||
|
" must be a string or list of strings"),
|
||||||
|
filename, key);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
*list_arg = list;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* A helper function used by each of the following macros. */
|
||||||
|
static int
|
||||||
|
checkType(virConfValuePtr p, const char *filename,
|
||||||
|
const char *key, virConfType required_type)
|
||||||
|
{
|
||||||
|
if (p->type != required_type) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
|
_("remoteReadConfigFile: %s: %s: invalid type:"
|
||||||
|
" got %s; expected %s"), filename, key,
|
||||||
|
virConfTypeToString(p->type),
|
||||||
|
virConfTypeToString(required_type));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If there is no config data for the key, #var_name, then do nothing.
|
||||||
|
If there is valid data of type VIR_CONF_STRING, and VIR_STRDUP succeeds,
|
||||||
|
store the result in var_name. Otherwise, (i.e. invalid type, or VIR_STRDUP
|
||||||
|
failure), give a diagnostic and "goto" the cleanup-and-fail label. */
|
||||||
|
#define GET_CONF_STR(conf, filename, var_name) \
|
||||||
|
do { \
|
||||||
|
virConfValuePtr p = virConfGetValue(conf, #var_name); \
|
||||||
|
if (p) { \
|
||||||
|
if (checkType(p, filename, #var_name, VIR_CONF_STRING) < 0) \
|
||||||
|
goto error; \
|
||||||
|
VIR_FREE(data->var_name); \
|
||||||
|
if (VIR_STRDUP(data->var_name, p->str) < 0) \
|
||||||
|
goto error; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
/* Like GET_CONF_STR, but for signed integral values. */
|
||||||
|
#define GET_CONF_INT(conf, filename, var_name) \
|
||||||
|
do { \
|
||||||
|
virConfValuePtr p = virConfGetValue(conf, #var_name); \
|
||||||
|
if (p) { \
|
||||||
|
if (p->type != VIR_CONF_ULONG && \
|
||||||
|
checkType(p, filename, #var_name, VIR_CONF_LONG) < 0) \
|
||||||
|
goto error; \
|
||||||
|
data->var_name = p->l; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
/* Like GET_CONF_STR, but for unsigned integral values. */
|
||||||
|
#define GET_CONF_UINT(conf, filename, var_name) \
|
||||||
|
do { \
|
||||||
|
virConfValuePtr p = virConfGetValue(conf, #var_name); \
|
||||||
|
if (p) { \
|
||||||
|
if (checkType(p, filename, #var_name, VIR_CONF_ULONG) < 0) \
|
||||||
|
goto error; \
|
||||||
|
data->var_name = p->l; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
remoteConfigGetAuth(virConfPtr conf,
|
||||||
|
const char *key,
|
||||||
|
int *auth,
|
||||||
|
const char *filename)
|
||||||
|
{
|
||||||
|
virConfValuePtr p;
|
||||||
|
|
||||||
|
p = virConfGetValue(conf, key);
|
||||||
|
if (!p)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (checkType(p, filename, key, VIR_CONF_STRING) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (!p->str)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (STREQ(p->str, "none")) {
|
||||||
|
*auth = VIR_NET_SERVER_SERVICE_AUTH_NONE;
|
||||||
|
#if WITH_SASL
|
||||||
|
} else if (STREQ(p->str, "sasl")) {
|
||||||
|
*auth = VIR_NET_SERVER_SERVICE_AUTH_SASL;
|
||||||
|
#endif
|
||||||
|
} else if (STREQ(p->str, "polkit")) {
|
||||||
|
*auth = VIR_NET_SERVER_SERVICE_AUTH_POLKIT;
|
||||||
|
} else {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
|
_("remoteReadConfigFile: %s: %s: unsupported auth %s"),
|
||||||
|
filename, key, p->str);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
daemonConfigFilePath(bool privileged, char **configfile)
|
||||||
|
{
|
||||||
|
if (privileged) {
|
||||||
|
if (VIR_STRDUP(*configfile, SYSCONFDIR "/libvirt/libvirtd.conf") < 0)
|
||||||
|
goto error;
|
||||||
|
} else {
|
||||||
|
char *configdir = NULL;
|
||||||
|
|
||||||
|
if (!(configdir = virGetUserConfigDirectory()))
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
if (virAsprintf(configfile, "%s/libvirtd.conf", configdir) < 0) {
|
||||||
|
VIR_FREE(configdir);
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
VIR_FREE(configdir);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
error:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct daemonConfig*
|
||||||
|
daemonConfigNew(bool privileged ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
struct daemonConfig *data;
|
||||||
|
char *localhost;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (VIR_ALLOC(data) < 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
data->listen_tls = 1;
|
||||||
|
data->listen_tcp = 0;
|
||||||
|
|
||||||
|
if (VIR_STRDUP(data->tls_port, LIBVIRTD_TLS_PORT) < 0 ||
|
||||||
|
VIR_STRDUP(data->tcp_port, LIBVIRTD_TCP_PORT) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
/* Only default to PolicyKit if running as root */
|
||||||
|
#if WITH_POLKIT
|
||||||
|
if (privileged) {
|
||||||
|
data->auth_unix_rw = REMOTE_AUTH_POLKIT;
|
||||||
|
data->auth_unix_ro = REMOTE_AUTH_POLKIT;
|
||||||
|
} else {
|
||||||
|
#endif
|
||||||
|
data->auth_unix_rw = REMOTE_AUTH_NONE;
|
||||||
|
data->auth_unix_ro = REMOTE_AUTH_NONE;
|
||||||
|
#if WITH_POLKIT
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (VIR_STRDUP(data->unix_sock_rw_perms,
|
||||||
|
data->auth_unix_rw == REMOTE_AUTH_POLKIT ? "0777" : "0700") < 0 ||
|
||||||
|
VIR_STRDUP(data->unix_sock_ro_perms, "0777") < 0 ||
|
||||||
|
VIR_STRDUP(data->unix_sock_admin_perms, "0700") < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
#if WITH_SASL
|
||||||
|
data->auth_tcp = REMOTE_AUTH_SASL;
|
||||||
|
#else
|
||||||
|
data->auth_tcp = REMOTE_AUTH_NONE;
|
||||||
|
#endif
|
||||||
|
data->auth_tls = REMOTE_AUTH_NONE;
|
||||||
|
|
||||||
|
data->mdns_adv = 0;
|
||||||
|
|
||||||
|
data->min_workers = 5;
|
||||||
|
data->max_workers = 20;
|
||||||
|
data->max_clients = 5000;
|
||||||
|
data->max_queued_clients = 1000;
|
||||||
|
data->max_anonymous_clients = 20;
|
||||||
|
|
||||||
|
data->prio_workers = 5;
|
||||||
|
|
||||||
|
data->max_requests = 20;
|
||||||
|
data->max_client_requests = 5;
|
||||||
|
|
||||||
|
data->audit_level = 1;
|
||||||
|
data->audit_logging = 0;
|
||||||
|
|
||||||
|
data->keepalive_interval = 5;
|
||||||
|
data->keepalive_count = 5;
|
||||||
|
|
||||||
|
data->admin_min_workers = 5;
|
||||||
|
data->admin_max_workers = 20;
|
||||||
|
data->admin_max_clients = 5000;
|
||||||
|
data->admin_max_queued_clients = 20;
|
||||||
|
data->admin_max_client_requests = 5;
|
||||||
|
|
||||||
|
data->admin_keepalive_interval = 5;
|
||||||
|
data->admin_keepalive_count = 5;
|
||||||
|
|
||||||
|
localhost = virGetHostname();
|
||||||
|
if (localhost == NULL) {
|
||||||
|
/* we couldn't resolve the hostname; assume that we are
|
||||||
|
* running in disconnected operation, and report a less
|
||||||
|
* useful Avahi string
|
||||||
|
*/
|
||||||
|
ret = VIR_STRDUP(data->mdns_name, "Virtualization Host");
|
||||||
|
} else {
|
||||||
|
char *tmp;
|
||||||
|
/* Extract the host part of the potentially FQDN */
|
||||||
|
if ((tmp = strchr(localhost, '.')))
|
||||||
|
*tmp = '\0';
|
||||||
|
ret = virAsprintf(&data->mdns_name, "Virtualization Host %s",
|
||||||
|
localhost);
|
||||||
|
}
|
||||||
|
VIR_FREE(localhost);
|
||||||
|
if (ret < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
return data;
|
||||||
|
|
||||||
|
error:
|
||||||
|
daemonConfigFree(data);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
daemonConfigFree(struct daemonConfig *data)
|
||||||
|
{
|
||||||
|
char **tmp;
|
||||||
|
|
||||||
|
if (!data)
|
||||||
|
return;
|
||||||
|
|
||||||
|
VIR_FREE(data->listen_addr);
|
||||||
|
VIR_FREE(data->tls_port);
|
||||||
|
VIR_FREE(data->tcp_port);
|
||||||
|
tmp = data->access_drivers;
|
||||||
|
while (tmp && *tmp) {
|
||||||
|
VIR_FREE(*tmp);
|
||||||
|
tmp++;
|
||||||
|
}
|
||||||
|
VIR_FREE(data->access_drivers);
|
||||||
|
|
||||||
|
VIR_FREE(data->unix_sock_admin_perms);
|
||||||
|
VIR_FREE(data->unix_sock_ro_perms);
|
||||||
|
VIR_FREE(data->unix_sock_rw_perms);
|
||||||
|
VIR_FREE(data->unix_sock_group);
|
||||||
|
VIR_FREE(data->unix_sock_dir);
|
||||||
|
VIR_FREE(data->mdns_name);
|
||||||
|
|
||||||
|
tmp = data->tls_allowed_dn_list;
|
||||||
|
while (tmp && *tmp) {
|
||||||
|
VIR_FREE(*tmp);
|
||||||
|
tmp++;
|
||||||
|
}
|
||||||
|
VIR_FREE(data->tls_allowed_dn_list);
|
||||||
|
|
||||||
|
tmp = data->sasl_allowed_username_list;
|
||||||
|
while (tmp && *tmp) {
|
||||||
|
VIR_FREE(*tmp);
|
||||||
|
tmp++;
|
||||||
|
}
|
||||||
|
VIR_FREE(data->sasl_allowed_username_list);
|
||||||
|
VIR_FREE(data->tls_priority);
|
||||||
|
|
||||||
|
VIR_FREE(data->key_file);
|
||||||
|
VIR_FREE(data->ca_file);
|
||||||
|
VIR_FREE(data->cert_file);
|
||||||
|
VIR_FREE(data->crl_file);
|
||||||
|
|
||||||
|
VIR_FREE(data->host_uuid);
|
||||||
|
VIR_FREE(data->host_uuid_source);
|
||||||
|
VIR_FREE(data->log_filters);
|
||||||
|
VIR_FREE(data->log_outputs);
|
||||||
|
|
||||||
|
VIR_FREE(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
daemonConfigLoadOptions(struct daemonConfig *data,
|
||||||
|
const char *filename,
|
||||||
|
virConfPtr conf)
|
||||||
|
{
|
||||||
|
GET_CONF_UINT(conf, filename, listen_tcp);
|
||||||
|
GET_CONF_UINT(conf, filename, listen_tls);
|
||||||
|
GET_CONF_STR(conf, filename, tls_port);
|
||||||
|
GET_CONF_STR(conf, filename, tcp_port);
|
||||||
|
GET_CONF_STR(conf, filename, listen_addr);
|
||||||
|
|
||||||
|
if (remoteConfigGetAuth(conf, "auth_unix_rw", &data->auth_unix_rw, filename) < 0)
|
||||||
|
goto error;
|
||||||
|
#if WITH_POLKIT
|
||||||
|
/* Change default perms to be wide-open if PolicyKit is enabled.
|
||||||
|
* Admin can always override in config file
|
||||||
|
*/
|
||||||
|
if (data->auth_unix_rw == REMOTE_AUTH_POLKIT) {
|
||||||
|
VIR_FREE(data->unix_sock_rw_perms);
|
||||||
|
if (VIR_STRDUP(data->unix_sock_rw_perms, "0777") < 0)
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (remoteConfigGetAuth(conf, "auth_unix_ro", &data->auth_unix_ro, filename) < 0)
|
||||||
|
goto error;
|
||||||
|
if (remoteConfigGetAuth(conf, "auth_tcp", &data->auth_tcp, filename) < 0)
|
||||||
|
goto error;
|
||||||
|
if (remoteConfigGetAuth(conf, "auth_tls", &data->auth_tls, filename) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
if (remoteConfigGetStringList(conf, "access_drivers",
|
||||||
|
&data->access_drivers, filename) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
GET_CONF_STR(conf, filename, unix_sock_group);
|
||||||
|
GET_CONF_STR(conf, filename, unix_sock_admin_perms);
|
||||||
|
GET_CONF_STR(conf, filename, unix_sock_ro_perms);
|
||||||
|
GET_CONF_STR(conf, filename, unix_sock_rw_perms);
|
||||||
|
|
||||||
|
GET_CONF_STR(conf, filename, unix_sock_dir);
|
||||||
|
|
||||||
|
GET_CONF_UINT(conf, filename, mdns_adv);
|
||||||
|
GET_CONF_STR(conf, filename, mdns_name);
|
||||||
|
|
||||||
|
GET_CONF_UINT(conf, filename, tls_no_sanity_certificate);
|
||||||
|
GET_CONF_UINT(conf, filename, tls_no_verify_certificate);
|
||||||
|
|
||||||
|
GET_CONF_STR(conf, filename, key_file);
|
||||||
|
GET_CONF_STR(conf, filename, cert_file);
|
||||||
|
GET_CONF_STR(conf, filename, ca_file);
|
||||||
|
GET_CONF_STR(conf, filename, crl_file);
|
||||||
|
|
||||||
|
if (remoteConfigGetStringList(conf, "tls_allowed_dn_list",
|
||||||
|
&data->tls_allowed_dn_list, filename) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
|
||||||
|
if (remoteConfigGetStringList(conf, "sasl_allowed_username_list",
|
||||||
|
&data->sasl_allowed_username_list, filename) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
GET_CONF_STR(conf, filename, tls_priority);
|
||||||
|
|
||||||
|
GET_CONF_UINT(conf, filename, min_workers);
|
||||||
|
GET_CONF_UINT(conf, filename, max_workers);
|
||||||
|
GET_CONF_UINT(conf, filename, max_clients);
|
||||||
|
GET_CONF_UINT(conf, filename, max_queued_clients);
|
||||||
|
GET_CONF_UINT(conf, filename, max_anonymous_clients);
|
||||||
|
|
||||||
|
GET_CONF_UINT(conf, filename, prio_workers);
|
||||||
|
|
||||||
|
GET_CONF_INT(conf, filename, max_requests);
|
||||||
|
GET_CONF_UINT(conf, filename, max_client_requests);
|
||||||
|
|
||||||
|
GET_CONF_UINT(conf, filename, admin_min_workers);
|
||||||
|
GET_CONF_UINT(conf, filename, admin_max_workers);
|
||||||
|
GET_CONF_UINT(conf, filename, admin_max_clients);
|
||||||
|
GET_CONF_UINT(conf, filename, admin_max_queued_clients);
|
||||||
|
GET_CONF_UINT(conf, filename, admin_max_client_requests);
|
||||||
|
|
||||||
|
GET_CONF_UINT(conf, filename, audit_level);
|
||||||
|
GET_CONF_UINT(conf, filename, audit_logging);
|
||||||
|
|
||||||
|
GET_CONF_STR(conf, filename, host_uuid);
|
||||||
|
GET_CONF_STR(conf, filename, host_uuid_source);
|
||||||
|
|
||||||
|
GET_CONF_UINT(conf, filename, log_level);
|
||||||
|
GET_CONF_STR(conf, filename, log_filters);
|
||||||
|
GET_CONF_STR(conf, filename, log_outputs);
|
||||||
|
|
||||||
|
GET_CONF_INT(conf, filename, keepalive_interval);
|
||||||
|
GET_CONF_UINT(conf, filename, keepalive_count);
|
||||||
|
|
||||||
|
GET_CONF_INT(conf, filename, admin_keepalive_interval);
|
||||||
|
GET_CONF_UINT(conf, filename, admin_keepalive_count);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
error:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Read the config file if it exists.
|
||||||
|
* Only used in the remote case, hence the name.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
daemonConfigLoadFile(struct daemonConfig *data,
|
||||||
|
const char *filename,
|
||||||
|
bool allow_missing)
|
||||||
|
{
|
||||||
|
virConfPtr conf;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (allow_missing &&
|
||||||
|
access(filename, R_OK) == -1 &&
|
||||||
|
errno == ENOENT)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
conf = virConfReadFile(filename, 0);
|
||||||
|
if (!conf)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
ret = daemonConfigLoadOptions(data, filename, conf);
|
||||||
|
virConfFree(conf);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int daemonConfigLoadData(struct daemonConfig *data,
|
||||||
|
const char *filename,
|
||||||
|
const char *filedata)
|
||||||
|
{
|
||||||
|
virConfPtr conf;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
conf = virConfReadMem(filedata, strlen(filedata), 0);
|
||||||
|
if (!conf)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
ret = daemonConfigLoadOptions(data, filename, conf);
|
||||||
|
virConfFree(conf);
|
||||||
|
return ret;
|
||||||
|
}
|
108
daemon/libvirtd-config.h
Normal file
108
daemon/libvirtd-config.h
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
/*
|
||||||
|
* libvirtd-config.h: daemon start of day, guest process & i/o management
|
||||||
|
*
|
||||||
|
* Copyright (C) 2006-2012, 2015 Red Hat, Inc.
|
||||||
|
* Copyright (C) 2006 Daniel P. Berrange
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library. If not, see
|
||||||
|
* <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Author: Daniel P. Berrange <berrange@redhat.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __LIBVIRTD_CONFIG_H__
|
||||||
|
# define __LIBVIRTD_CONFIG_H__
|
||||||
|
|
||||||
|
# include "internal.h"
|
||||||
|
|
||||||
|
struct daemonConfig {
|
||||||
|
char *host_uuid;
|
||||||
|
char *host_uuid_source;
|
||||||
|
|
||||||
|
int listen_tls;
|
||||||
|
int listen_tcp;
|
||||||
|
char *listen_addr;
|
||||||
|
char *tls_port;
|
||||||
|
char *tcp_port;
|
||||||
|
|
||||||
|
char *unix_sock_admin_perms;
|
||||||
|
char *unix_sock_ro_perms;
|
||||||
|
char *unix_sock_rw_perms;
|
||||||
|
char *unix_sock_group;
|
||||||
|
char *unix_sock_dir;
|
||||||
|
|
||||||
|
int auth_unix_rw;
|
||||||
|
int auth_unix_ro;
|
||||||
|
int auth_tcp;
|
||||||
|
int auth_tls;
|
||||||
|
|
||||||
|
char **access_drivers;
|
||||||
|
|
||||||
|
int mdns_adv;
|
||||||
|
char *mdns_name;
|
||||||
|
|
||||||
|
int tls_no_verify_certificate;
|
||||||
|
int tls_no_sanity_certificate;
|
||||||
|
char **tls_allowed_dn_list;
|
||||||
|
char **sasl_allowed_username_list;
|
||||||
|
char *tls_priority;
|
||||||
|
|
||||||
|
char *key_file;
|
||||||
|
char *cert_file;
|
||||||
|
char *ca_file;
|
||||||
|
char *crl_file;
|
||||||
|
|
||||||
|
int min_workers;
|
||||||
|
int max_workers;
|
||||||
|
int max_clients;
|
||||||
|
int max_queued_clients;
|
||||||
|
int max_anonymous_clients;
|
||||||
|
|
||||||
|
int prio_workers;
|
||||||
|
|
||||||
|
int max_requests;
|
||||||
|
int max_client_requests;
|
||||||
|
|
||||||
|
int log_level;
|
||||||
|
char *log_filters;
|
||||||
|
char *log_outputs;
|
||||||
|
|
||||||
|
int audit_level;
|
||||||
|
int audit_logging;
|
||||||
|
|
||||||
|
int keepalive_interval;
|
||||||
|
unsigned int keepalive_count;
|
||||||
|
|
||||||
|
int admin_min_workers;
|
||||||
|
int admin_max_workers;
|
||||||
|
int admin_max_clients;
|
||||||
|
int admin_max_queued_clients;
|
||||||
|
int admin_max_client_requests;
|
||||||
|
|
||||||
|
int admin_keepalive_interval;
|
||||||
|
unsigned int admin_keepalive_count;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
int daemonConfigFilePath(bool privileged, char **configfile);
|
||||||
|
struct daemonConfig* daemonConfigNew(bool privileged);
|
||||||
|
void daemonConfigFree(struct daemonConfig *data);
|
||||||
|
int daemonConfigLoadFile(struct daemonConfig *data,
|
||||||
|
const char *filename,
|
||||||
|
bool allow_missing);
|
||||||
|
int daemonConfigLoadData(struct daemonConfig *data,
|
||||||
|
const char *filename,
|
||||||
|
const char *filedata);
|
||||||
|
|
||||||
|
#endif /* __LIBVIRTD_CONFIG_H__ */
|
115
daemon/libvirtd.aug
Normal file
115
daemon/libvirtd.aug
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
(* /etc/libvirt/libvirtd.conf *)
|
||||||
|
|
||||||
|
module Libvirtd =
|
||||||
|
autoload xfm
|
||||||
|
|
||||||
|
let eol = del /[ \t]*\n/ "\n"
|
||||||
|
let value_sep = del /[ \t]*=[ \t]*/ " = "
|
||||||
|
let indent = del /[ \t]*/ ""
|
||||||
|
|
||||||
|
let array_sep = del /,[ \t\n]*/ ", "
|
||||||
|
let array_start = del /\[[ \t\n]*/ "[ "
|
||||||
|
let array_end = del /\]/ "]"
|
||||||
|
|
||||||
|
let str_val = del /\"/ "\"" . store /[^\"]*/ . del /\"/ "\""
|
||||||
|
let bool_val = store /0|1/
|
||||||
|
let int_val = store /-?[0-9]+/
|
||||||
|
let str_array_element = [ seq "el" . str_val ] . del /[ \t\n]*/ ""
|
||||||
|
let str_array_val = counter "el" . array_start . ( str_array_element . ( array_sep . str_array_element ) * ) ? . array_end
|
||||||
|
|
||||||
|
let str_entry (kw:string) = [ key kw . value_sep . str_val ]
|
||||||
|
let bool_entry (kw:string) = [ key kw . value_sep . bool_val ]
|
||||||
|
let int_entry (kw:string) = [ key kw . value_sep . int_val ]
|
||||||
|
let str_array_entry (kw:string) = [ key kw . value_sep . str_array_val ]
|
||||||
|
|
||||||
|
|
||||||
|
(* Config entry grouped by function - same order as example config *)
|
||||||
|
let network_entry = bool_entry "listen_tls"
|
||||||
|
| bool_entry "listen_tcp"
|
||||||
|
| str_entry "tls_port"
|
||||||
|
| str_entry "tcp_port"
|
||||||
|
| str_entry "listen_addr"
|
||||||
|
| bool_entry "mdns_adv"
|
||||||
|
| str_entry "mdns_name"
|
||||||
|
|
||||||
|
let sock_acl_entry = str_entry "unix_sock_group"
|
||||||
|
| str_entry "unix_sock_ro_perms"
|
||||||
|
| str_entry "unix_sock_rw_perms"
|
||||||
|
| str_entry "unix_sock_admin_perms"
|
||||||
|
| str_entry "unix_sock_dir"
|
||||||
|
|
||||||
|
let authentication_entry = str_entry "auth_unix_ro"
|
||||||
|
| str_entry "auth_unix_rw"
|
||||||
|
| str_entry "auth_tcp"
|
||||||
|
| str_entry "auth_tls"
|
||||||
|
|
||||||
|
let certificate_entry = str_entry "key_file"
|
||||||
|
| str_entry "cert_file"
|
||||||
|
| str_entry "ca_file"
|
||||||
|
| str_entry "crl_file"
|
||||||
|
|
||||||
|
let authorization_entry = bool_entry "tls_no_verify_certificate"
|
||||||
|
| bool_entry "tls_no_sanity_certificate"
|
||||||
|
| str_array_entry "tls_allowed_dn_list"
|
||||||
|
| str_array_entry "sasl_allowed_username_list"
|
||||||
|
| str_array_entry "access_drivers"
|
||||||
|
| str_entry "tls_priority"
|
||||||
|
|
||||||
|
let processing_entry = int_entry "min_workers"
|
||||||
|
| int_entry "max_workers"
|
||||||
|
| int_entry "max_clients"
|
||||||
|
| int_entry "max_queued_clients"
|
||||||
|
| int_entry "max_anonymous_clients"
|
||||||
|
| int_entry "max_requests"
|
||||||
|
| int_entry "max_client_requests"
|
||||||
|
| int_entry "prio_workers"
|
||||||
|
|
||||||
|
let admin_processing_entry = int_entry "admin_min_workers"
|
||||||
|
| int_entry "admin_max_workers"
|
||||||
|
| int_entry "admin_max_clients"
|
||||||
|
| int_entry "admin_max_queued_clients"
|
||||||
|
| int_entry "admin_max_client_requests"
|
||||||
|
|
||||||
|
let logging_entry = int_entry "log_level"
|
||||||
|
| str_entry "log_filters"
|
||||||
|
| str_entry "log_outputs"
|
||||||
|
| int_entry "log_buffer_size"
|
||||||
|
|
||||||
|
let auditing_entry = int_entry "audit_level"
|
||||||
|
| bool_entry "audit_logging"
|
||||||
|
|
||||||
|
let keepalive_entry = int_entry "keepalive_interval"
|
||||||
|
| int_entry "keepalive_count"
|
||||||
|
| bool_entry "keepalive_required"
|
||||||
|
|
||||||
|
let admin_keepalive_entry = int_entry "admin_keepalive_interval"
|
||||||
|
| int_entry "admin_keepalive_count"
|
||||||
|
| bool_entry "admin_keepalive_required"
|
||||||
|
|
||||||
|
let misc_entry = str_entry "host_uuid"
|
||||||
|
| str_entry "host_uuid_source"
|
||||||
|
|
||||||
|
(* Each enty in the config is one of the following three ... *)
|
||||||
|
let entry = network_entry
|
||||||
|
| sock_acl_entry
|
||||||
|
| authentication_entry
|
||||||
|
| certificate_entry
|
||||||
|
| authorization_entry
|
||||||
|
| processing_entry
|
||||||
|
| admin_processing_entry
|
||||||
|
| logging_entry
|
||||||
|
| auditing_entry
|
||||||
|
| keepalive_entry
|
||||||
|
| admin_keepalive_entry
|
||||||
|
| misc_entry
|
||||||
|
let comment = [ label "#comment" . del /#[ \t]*/ "# " . store /([^ \t\n][^\n]*)?/ . del /\n/ "\n" ]
|
||||||
|
let empty = [ label "#empty" . eol ]
|
||||||
|
|
||||||
|
let record = indent . entry . eol
|
||||||
|
|
||||||
|
let lns = ( record | comment | empty ) *
|
||||||
|
|
||||||
|
let filter = incl "/etc/libvirt/libvirtd.conf"
|
||||||
|
. Util.stdexcl
|
||||||
|
|
||||||
|
let xfm = transform lns filter
|
1663
daemon/libvirtd.c
Normal file
1663
daemon/libvirtd.c
Normal file
File diff suppressed because it is too large
Load Diff
469
daemon/libvirtd.conf
Normal file
469
daemon/libvirtd.conf
Normal file
@@ -0,0 +1,469 @@
|
|||||||
|
# Master libvirt daemon configuration file
|
||||||
|
#
|
||||||
|
# For further information consult http://libvirt.org/format.html
|
||||||
|
#
|
||||||
|
# NOTE: the tests/daemon-conf regression test script requires
|
||||||
|
# that each "PARAMETER = VALUE" line in this file have the parameter
|
||||||
|
# name just after a leading "#".
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
#
|
||||||
|
# Network connectivity controls
|
||||||
|
#
|
||||||
|
|
||||||
|
# Flag listening for secure TLS connections on the public TCP/IP port.
|
||||||
|
# NB, must pass the --listen flag to the libvirtd process for this to
|
||||||
|
# have any effect.
|
||||||
|
#
|
||||||
|
# It is necessary to setup a CA and issue server certificates before
|
||||||
|
# using this capability.
|
||||||
|
#
|
||||||
|
# This is enabled by default, uncomment this to disable it
|
||||||
|
#listen_tls = 0
|
||||||
|
|
||||||
|
# Listen for unencrypted TCP connections on the public TCP/IP port.
|
||||||
|
# NB, must pass the --listen flag to the libvirtd process for this to
|
||||||
|
# have any effect.
|
||||||
|
#
|
||||||
|
# Using the TCP socket requires SASL authentication by default. Only
|
||||||
|
# SASL mechanisms which support data encryption are allowed. This is
|
||||||
|
# DIGEST_MD5 and GSSAPI (Kerberos5)
|
||||||
|
#
|
||||||
|
# This is disabled by default, uncomment this to enable it.
|
||||||
|
#listen_tcp = 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Override the port for accepting secure TLS connections
|
||||||
|
# This can be a port number, or service name
|
||||||
|
#
|
||||||
|
#tls_port = "16514"
|
||||||
|
|
||||||
|
# Override the port for accepting insecure TCP connections
|
||||||
|
# This can be a port number, or service name
|
||||||
|
#
|
||||||
|
#tcp_port = "16509"
|
||||||
|
|
||||||
|
|
||||||
|
# Override the default configuration which binds to all network
|
||||||
|
# interfaces. This can be a numeric IPv4/6 address, or hostname
|
||||||
|
#
|
||||||
|
# If the libvirtd service is started in parallel with network
|
||||||
|
# startup (e.g. with systemd), binding to addresses other than
|
||||||
|
# the wildcards (0.0.0.0/::) might not be available yet.
|
||||||
|
#
|
||||||
|
#listen_addr = "192.168.0.1"
|
||||||
|
|
||||||
|
|
||||||
|
# Flag toggling mDNS advertizement of the libvirt service.
|
||||||
|
#
|
||||||
|
# Alternatively can disable for all services on a host by
|
||||||
|
# stopping the Avahi daemon
|
||||||
|
#
|
||||||
|
# This is disabled by default, uncomment this to enable it
|
||||||
|
#mdns_adv = 1
|
||||||
|
|
||||||
|
# Override the default mDNS advertizement name. This must be
|
||||||
|
# unique on the immediate broadcast network.
|
||||||
|
#
|
||||||
|
# The default is "Virtualization Host HOSTNAME", where HOSTNAME
|
||||||
|
# is substituted for the short hostname of the machine (without domain)
|
||||||
|
#
|
||||||
|
#mdns_name = "Virtualization Host Joe Demo"
|
||||||
|
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
#
|
||||||
|
# UNIX socket access controls
|
||||||
|
#
|
||||||
|
|
||||||
|
# Set the UNIX domain socket group ownership. This can be used to
|
||||||
|
# allow a 'trusted' set of users access to management capabilities
|
||||||
|
# without becoming root.
|
||||||
|
#
|
||||||
|
# This is restricted to 'root' by default.
|
||||||
|
#unix_sock_group = "libvirt"
|
||||||
|
|
||||||
|
# Set the UNIX socket permissions for the R/O socket. This is used
|
||||||
|
# for monitoring VM status only
|
||||||
|
#
|
||||||
|
# Default allows any user. If setting group ownership, you may want to
|
||||||
|
# restrict this too.
|
||||||
|
#unix_sock_ro_perms = "0777"
|
||||||
|
|
||||||
|
# Set the UNIX socket permissions for the R/W socket. This is used
|
||||||
|
# for full management of VMs
|
||||||
|
#
|
||||||
|
# Default allows only root. If PolicyKit is enabled on the socket,
|
||||||
|
# the default will change to allow everyone (eg, 0777)
|
||||||
|
#
|
||||||
|
# If not using PolicyKit and setting group ownership for access
|
||||||
|
# control, then you may want to relax this too.
|
||||||
|
#unix_sock_rw_perms = "0770"
|
||||||
|
|
||||||
|
# Set the UNIX socket permissions for the admin interface socket.
|
||||||
|
#
|
||||||
|
# Default allows only owner (root), do not change it unless you are
|
||||||
|
# sure to whom you are exposing the access to.
|
||||||
|
#unix_sock_admin_perms = "0700"
|
||||||
|
|
||||||
|
# Set the name of the directory in which sockets will be found/created.
|
||||||
|
#unix_sock_dir = "/var/run/libvirt"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
#
|
||||||
|
# Authentication.
|
||||||
|
#
|
||||||
|
# - none: do not perform auth checks. If you can connect to the
|
||||||
|
# socket you are allowed. This is suitable if there are
|
||||||
|
# restrictions on connecting to the socket (eg, UNIX
|
||||||
|
# socket permissions), or if there is a lower layer in
|
||||||
|
# the network providing auth (eg, TLS/x509 certificates)
|
||||||
|
#
|
||||||
|
# - sasl: use SASL infrastructure. The actual auth scheme is then
|
||||||
|
# controlled from /etc/sasl2/libvirt.conf. For the TCP
|
||||||
|
# socket only GSSAPI & DIGEST-MD5 mechanisms will be used.
|
||||||
|
# For non-TCP or TLS sockets, any scheme is allowed.
|
||||||
|
#
|
||||||
|
# - polkit: use PolicyKit to authenticate. This is only suitable
|
||||||
|
# for use on the UNIX sockets. The default policy will
|
||||||
|
# require a user to supply their own password to gain
|
||||||
|
# full read/write access (aka sudo like), while anyone
|
||||||
|
# is allowed read/only access.
|
||||||
|
#
|
||||||
|
# Set an authentication scheme for UNIX read-only sockets
|
||||||
|
# By default socket permissions allow anyone to connect
|
||||||
|
#
|
||||||
|
# To restrict monitoring of domains you may wish to enable
|
||||||
|
# an authentication mechanism here
|
||||||
|
#auth_unix_ro = "none"
|
||||||
|
|
||||||
|
# Set an authentication scheme for UNIX read-write sockets
|
||||||
|
# By default socket permissions only allow root. If PolicyKit
|
||||||
|
# support was compiled into libvirt, the default will be to
|
||||||
|
# use 'polkit' auth.
|
||||||
|
#
|
||||||
|
# If the unix_sock_rw_perms are changed you may wish to enable
|
||||||
|
# an authentication mechanism here
|
||||||
|
#auth_unix_rw = "none"
|
||||||
|
|
||||||
|
# Change the authentication scheme for TCP sockets.
|
||||||
|
#
|
||||||
|
# If you don't enable SASL, then all TCP traffic is cleartext.
|
||||||
|
# Don't do this outside of a dev/test scenario. For real world
|
||||||
|
# use, always enable SASL and use the GSSAPI or DIGEST-MD5
|
||||||
|
# mechanism in /etc/sasl2/libvirt.conf
|
||||||
|
#auth_tcp = "sasl"
|
||||||
|
|
||||||
|
# Change the authentication scheme for TLS sockets.
|
||||||
|
#
|
||||||
|
# TLS sockets already have encryption provided by the TLS
|
||||||
|
# layer, and limited authentication is done by certificates
|
||||||
|
#
|
||||||
|
# It is possible to make use of any SASL authentication
|
||||||
|
# mechanism as well, by using 'sasl' for this option
|
||||||
|
#auth_tls = "none"
|
||||||
|
|
||||||
|
|
||||||
|
# Change the API access control scheme
|
||||||
|
#
|
||||||
|
# By default an authenticated user is allowed access
|
||||||
|
# to all APIs. Access drivers can place restrictions
|
||||||
|
# on this. By default the 'nop' driver is enabled,
|
||||||
|
# meaning no access control checks are done once a
|
||||||
|
# client has authenticated with libvirtd
|
||||||
|
#
|
||||||
|
#access_drivers = [ "polkit" ]
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
#
|
||||||
|
# TLS x509 certificate configuration
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
# Override the default server key file path
|
||||||
|
#
|
||||||
|
#key_file = "/etc/pki/libvirt/private/serverkey.pem"
|
||||||
|
|
||||||
|
# Override the default server certificate file path
|
||||||
|
#
|
||||||
|
#cert_file = "/etc/pki/libvirt/servercert.pem"
|
||||||
|
|
||||||
|
# Override the default CA certificate path
|
||||||
|
#
|
||||||
|
#ca_file = "/etc/pki/CA/cacert.pem"
|
||||||
|
|
||||||
|
# Specify a certificate revocation list.
|
||||||
|
#
|
||||||
|
# Defaults to not using a CRL, uncomment to enable it
|
||||||
|
#crl_file = "/etc/pki/CA/crl.pem"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
#
|
||||||
|
# Authorization controls
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
# Flag to disable verification of our own server certificates
|
||||||
|
#
|
||||||
|
# When libvirtd starts it performs some sanity checks against
|
||||||
|
# its own certificates.
|
||||||
|
#
|
||||||
|
# Default is to always run sanity checks. Uncommenting this
|
||||||
|
# will disable sanity checks which is not a good idea
|
||||||
|
#tls_no_sanity_certificate = 1
|
||||||
|
|
||||||
|
# Flag to disable verification of client certificates
|
||||||
|
#
|
||||||
|
# Client certificate verification is the primary authentication mechanism.
|
||||||
|
# Any client which does not present a certificate signed by the CA
|
||||||
|
# will be rejected.
|
||||||
|
#
|
||||||
|
# Default is to always verify. Uncommenting this will disable
|
||||||
|
# verification - make sure an IP whitelist is set
|
||||||
|
#tls_no_verify_certificate = 1
|
||||||
|
|
||||||
|
|
||||||
|
# A whitelist of allowed x509 Distinguished Names
|
||||||
|
# This list may contain wildcards such as
|
||||||
|
#
|
||||||
|
# "C=GB,ST=London,L=London,O=Red Hat,CN=*"
|
||||||
|
#
|
||||||
|
# See the POSIX fnmatch function for the format of the wildcards.
|
||||||
|
#
|
||||||
|
# NB If this is an empty list, no client can connect, so comment out
|
||||||
|
# entirely rather than using empty list to disable these checks
|
||||||
|
#
|
||||||
|
# By default, no DN's are checked
|
||||||
|
#tls_allowed_dn_list = ["DN1", "DN2"]
|
||||||
|
|
||||||
|
|
||||||
|
# A whitelist of allowed SASL usernames. The format for username
|
||||||
|
# depends on the SASL authentication mechanism. Kerberos usernames
|
||||||
|
# look like username@REALM
|
||||||
|
#
|
||||||
|
# This list may contain wildcards such as
|
||||||
|
#
|
||||||
|
# "*@EXAMPLE.COM"
|
||||||
|
#
|
||||||
|
# See the POSIX fnmatch function for the format of the wildcards.
|
||||||
|
#
|
||||||
|
# NB If this is an empty list, no client can connect, so comment out
|
||||||
|
# entirely rather than using empty list to disable these checks
|
||||||
|
#
|
||||||
|
# By default, no Username's are checked
|
||||||
|
#sasl_allowed_username_list = ["joe@EXAMPLE.COM", "fred@EXAMPLE.COM" ]
|
||||||
|
|
||||||
|
|
||||||
|
# Override the compile time default TLS priority string. The
|
||||||
|
# default is usually "NORMAL" unless overridden at build time.
|
||||||
|
# Only set this is it is desired for libvirt to deviate from
|
||||||
|
# the global default settings.
|
||||||
|
#
|
||||||
|
#tls_priority="NORMAL"
|
||||||
|
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
#
|
||||||
|
# Processing controls
|
||||||
|
#
|
||||||
|
|
||||||
|
# The maximum number of concurrent client connections to allow
|
||||||
|
# over all sockets combined.
|
||||||
|
#max_clients = 5000
|
||||||
|
|
||||||
|
# The maximum length of queue of connections waiting to be
|
||||||
|
# accepted by the daemon. Note, that some protocols supporting
|
||||||
|
# retransmission may obey this so that a later reattempt at
|
||||||
|
# connection succeeds.
|
||||||
|
#max_queued_clients = 1000
|
||||||
|
|
||||||
|
# The maximum length of queue of accepted but not yet
|
||||||
|
# authenticated clients. The default value is 20. Set this to
|
||||||
|
# zero to turn this feature off.
|
||||||
|
#max_anonymous_clients = 20
|
||||||
|
|
||||||
|
# The minimum limit sets the number of workers to start up
|
||||||
|
# initially. If the number of active clients exceeds this,
|
||||||
|
# then more threads are spawned, up to max_workers limit.
|
||||||
|
# Typically you'd want max_workers to equal maximum number
|
||||||
|
# of clients allowed
|
||||||
|
#min_workers = 5
|
||||||
|
#max_workers = 20
|
||||||
|
|
||||||
|
|
||||||
|
# The number of priority workers. If all workers from above
|
||||||
|
# pool are stuck, some calls marked as high priority
|
||||||
|
# (notably domainDestroy) can be executed in this pool.
|
||||||
|
#prio_workers = 5
|
||||||
|
|
||||||
|
# Total global limit on concurrent RPC calls. Should be
|
||||||
|
# at least as large as max_workers. Beyond this, RPC requests
|
||||||
|
# will be read into memory and queued. This directly impacts
|
||||||
|
# memory usage, currently each request requires 256 KB of
|
||||||
|
# memory. So by default up to 5 MB of memory is used
|
||||||
|
#
|
||||||
|
# XXX this isn't actually enforced yet, only the per-client
|
||||||
|
# limit is used so far
|
||||||
|
#max_requests = 20
|
||||||
|
|
||||||
|
# Limit on concurrent requests from a single client
|
||||||
|
# connection. To avoid one client monopolizing the server
|
||||||
|
# this should be a small fraction of the global max_requests
|
||||||
|
# and max_workers parameter
|
||||||
|
#max_client_requests = 5
|
||||||
|
|
||||||
|
# Same processing controls, but this time for the admin interface.
|
||||||
|
# For description of each option, be so kind to scroll few lines
|
||||||
|
# upwards.
|
||||||
|
|
||||||
|
#admin_min_workers = 1
|
||||||
|
#admin_max_workers = 5
|
||||||
|
#admin_max_clients = 5
|
||||||
|
#admin_max_queued_clients = 5
|
||||||
|
#admin_max_client_requests = 5
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
#
|
||||||
|
# Logging controls
|
||||||
|
#
|
||||||
|
|
||||||
|
# Logging level: 4 errors, 3 warnings, 2 information, 1 debug
|
||||||
|
# basically 1 will log everything possible
|
||||||
|
# Note: Journald may employ rate limiting of the messages logged
|
||||||
|
# and thus lock up the libvirt daemon. To use the debug level with
|
||||||
|
# journald you have to specify it explicitly in 'log_outputs', otherwise
|
||||||
|
# only information level messages will be logged.
|
||||||
|
#log_level = 3
|
||||||
|
|
||||||
|
# Logging filters:
|
||||||
|
# A filter allows to select a different logging level for a given category
|
||||||
|
# of logs
|
||||||
|
# The format for a filter is one of:
|
||||||
|
# x:name
|
||||||
|
# x:+name
|
||||||
|
|
||||||
|
# where name is a string which is matched against the category
|
||||||
|
# given in the VIR_LOG_INIT() at the top of each libvirt source
|
||||||
|
# file, e.g., "remote", "qemu", or "util.json" (the name in the
|
||||||
|
# filter can be a substring of the full category name, in order
|
||||||
|
# to match multiple similar categories), the optional "+" prefix
|
||||||
|
# tells libvirt to log stack trace for each message matching
|
||||||
|
# name, and x is the minimal level where matching messages should
|
||||||
|
# be logged:
|
||||||
|
|
||||||
|
# 1: DEBUG
|
||||||
|
# 2: INFO
|
||||||
|
# 3: WARNING
|
||||||
|
# 4: ERROR
|
||||||
|
#
|
||||||
|
# Multiple filters can be defined in a single @filters, they just need to be
|
||||||
|
# separated by spaces.
|
||||||
|
#
|
||||||
|
# e.g. to only get warning or errors from the remote layer and only errors
|
||||||
|
# from the event layer:
|
||||||
|
#log_filters="3:remote 4:event"
|
||||||
|
|
||||||
|
# Logging outputs:
|
||||||
|
# An output is one of the places to save logging information
|
||||||
|
# The format for an output can be:
|
||||||
|
# x:stderr
|
||||||
|
# output goes to stderr
|
||||||
|
# x:syslog:name
|
||||||
|
# use syslog for the output and use the given name as the ident
|
||||||
|
# x:file:file_path
|
||||||
|
# output to a file, with the given filepath
|
||||||
|
# x:journald
|
||||||
|
# output to journald logging system
|
||||||
|
# In all case the x prefix is the minimal level, acting as a filter
|
||||||
|
# 1: DEBUG
|
||||||
|
# 2: INFO
|
||||||
|
# 3: WARNING
|
||||||
|
# 4: ERROR
|
||||||
|
#
|
||||||
|
# Multiple outputs can be defined, they just need to be separated by spaces.
|
||||||
|
# e.g. to log all warnings and errors to syslog under the libvirtd ident:
|
||||||
|
#log_outputs="3:syslog:libvirtd"
|
||||||
|
#
|
||||||
|
|
||||||
|
# Log debug buffer size:
|
||||||
|
#
|
||||||
|
# This configuration option is no longer used, since the global
|
||||||
|
# log buffer functionality has been removed. Please configure
|
||||||
|
# suitable log_outputs/log_filters settings to obtain logs.
|
||||||
|
#log_buffer_size = 64
|
||||||
|
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
#
|
||||||
|
# Auditing
|
||||||
|
#
|
||||||
|
# This setting allows usage of the auditing subsystem to be altered:
|
||||||
|
#
|
||||||
|
# audit_level == 0 -> disable all auditing
|
||||||
|
# audit_level == 1 -> enable auditing, only if enabled on host (default)
|
||||||
|
# audit_level == 2 -> enable auditing, and exit if disabled on host
|
||||||
|
#
|
||||||
|
#audit_level = 2
|
||||||
|
#
|
||||||
|
# If set to 1, then audit messages will also be sent
|
||||||
|
# via libvirt logging infrastructure. Defaults to 0
|
||||||
|
#
|
||||||
|
#audit_logging = 1
|
||||||
|
|
||||||
|
###################################################################
|
||||||
|
# UUID of the host:
|
||||||
|
# Host UUID is read from one of the sources specified in host_uuid_source.
|
||||||
|
#
|
||||||
|
# - 'smbios': fetch the UUID from 'dmidecode -s system-uuid'
|
||||||
|
# - 'machine-id': fetch the UUID from /etc/machine-id
|
||||||
|
#
|
||||||
|
# The host_uuid_source default is 'smbios'. If 'dmidecode' does not provide
|
||||||
|
# a valid UUID a temporary UUID will be generated.
|
||||||
|
#
|
||||||
|
# Another option is to specify host UUID in host_uuid.
|
||||||
|
#
|
||||||
|
# Keep the format of the example UUID below. UUID must not have all digits
|
||||||
|
# be the same.
|
||||||
|
|
||||||
|
# NB This default all-zeros UUID will not work. Replace
|
||||||
|
# it with the output of the 'uuidgen' command and then
|
||||||
|
# uncomment this entry
|
||||||
|
#host_uuid = "00000000-0000-0000-0000-000000000000"
|
||||||
|
#host_uuid_source = "smbios"
|
||||||
|
|
||||||
|
###################################################################
|
||||||
|
# Keepalive protocol:
|
||||||
|
# This allows libvirtd to detect broken client connections or even
|
||||||
|
# dead clients. A keepalive message is sent to a client after
|
||||||
|
# keepalive_interval seconds of inactivity to check if the client is
|
||||||
|
# still responding; keepalive_count is a maximum number of keepalive
|
||||||
|
# messages that are allowed to be sent to the client without getting
|
||||||
|
# any response before the connection is considered broken. In other
|
||||||
|
# words, the connection is automatically closed approximately after
|
||||||
|
# keepalive_interval * (keepalive_count + 1) seconds since the last
|
||||||
|
# message received from the client. If keepalive_interval is set to
|
||||||
|
# -1, libvirtd will never send keepalive requests; however clients
|
||||||
|
# can still send them and the daemon will send responses. When
|
||||||
|
# keepalive_count is set to 0, connections will be automatically
|
||||||
|
# closed after keepalive_interval seconds of inactivity without
|
||||||
|
# sending any keepalive messages.
|
||||||
|
#
|
||||||
|
#keepalive_interval = 5
|
||||||
|
#keepalive_count = 5
|
||||||
|
|
||||||
|
#
|
||||||
|
# These configuration options are no longer used. There is no way to
|
||||||
|
# restrict such clients from connecting since they first need to
|
||||||
|
# connect in order to ask for keepalive.
|
||||||
|
#
|
||||||
|
#keepalive_required = 1
|
||||||
|
#admin_keepalive_required = 1
|
||||||
|
|
||||||
|
# Keepalive settings for the admin interface
|
||||||
|
#admin_keepalive_interval = 5
|
||||||
|
#admin_keepalive_count = 5
|
94
daemon/libvirtd.h
Normal file
94
daemon/libvirtd.h
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
/*
|
||||||
|
* libvirtd.h: daemon data structure definitions
|
||||||
|
*
|
||||||
|
* Copyright (C) 2006-2015 Red Hat, Inc.
|
||||||
|
* Copyright (C) 2006 Daniel P. Berrange
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library. If not, see
|
||||||
|
* <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Author: Daniel P. Berrange <berrange@redhat.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef LIBVIRTD_H__
|
||||||
|
# define LIBVIRTD_H__
|
||||||
|
|
||||||
|
# define VIR_ENUM_SENTINELS
|
||||||
|
|
||||||
|
# include <rpc/types.h>
|
||||||
|
# include <rpc/xdr.h>
|
||||||
|
# include "remote_protocol.h"
|
||||||
|
# include "admin_protocol.h"
|
||||||
|
# include "lxc_protocol.h"
|
||||||
|
# include "qemu_protocol.h"
|
||||||
|
# include "virthread.h"
|
||||||
|
|
||||||
|
# if WITH_SASL
|
||||||
|
# include "virnetsaslcontext.h"
|
||||||
|
# endif
|
||||||
|
# include "virnetserverprogram.h"
|
||||||
|
|
||||||
|
typedef struct daemonClientStream daemonClientStream;
|
||||||
|
typedef daemonClientStream *daemonClientStreamPtr;
|
||||||
|
typedef struct daemonClientPrivate daemonClientPrivate;
|
||||||
|
typedef daemonClientPrivate *daemonClientPrivatePtr;
|
||||||
|
typedef struct daemonAdmClientPrivate daemonAdmClientPrivate;
|
||||||
|
typedef daemonAdmClientPrivate *daemonAdmClientPrivatePtr;
|
||||||
|
typedef struct daemonClientEventCallback daemonClientEventCallback;
|
||||||
|
typedef daemonClientEventCallback *daemonClientEventCallbackPtr;
|
||||||
|
|
||||||
|
/* Stores the per-client connection state */
|
||||||
|
struct daemonClientPrivate {
|
||||||
|
/* Hold while accessing any data except conn */
|
||||||
|
virMutex lock;
|
||||||
|
|
||||||
|
daemonClientEventCallbackPtr *domainEventCallbacks;
|
||||||
|
size_t ndomainEventCallbacks;
|
||||||
|
daemonClientEventCallbackPtr *networkEventCallbacks;
|
||||||
|
size_t nnetworkEventCallbacks;
|
||||||
|
daemonClientEventCallbackPtr *qemuEventCallbacks;
|
||||||
|
size_t nqemuEventCallbacks;
|
||||||
|
daemonClientEventCallbackPtr *storageEventCallbacks;
|
||||||
|
size_t nstorageEventCallbacks;
|
||||||
|
bool closeRegistered;
|
||||||
|
|
||||||
|
# if WITH_SASL
|
||||||
|
virNetSASLSessionPtr sasl;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* This is only valid if a remote open call has been made on this
|
||||||
|
* connection, otherwise it will be NULL. Also if remote close is
|
||||||
|
* called, it will be set back to NULL if that succeeds.
|
||||||
|
*/
|
||||||
|
virConnectPtr conn;
|
||||||
|
|
||||||
|
daemonClientStreamPtr streams;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Separate private data for admin connection */
|
||||||
|
struct daemonAdmClientPrivate {
|
||||||
|
/* Just a placeholder, not that there is anything to be locked */
|
||||||
|
virMutex lock;
|
||||||
|
|
||||||
|
virNetDaemonPtr dmn;
|
||||||
|
};
|
||||||
|
|
||||||
|
# if WITH_SASL
|
||||||
|
extern virNetSASLContextPtr saslCtxt;
|
||||||
|
# endif
|
||||||
|
extern virNetServerProgramPtr remoteProgram;
|
||||||
|
extern virNetServerProgramPtr qemuProgram;
|
||||||
|
|
||||||
|
#endif
|
122
daemon/libvirtd.init.in
Normal file
122
daemon/libvirtd.init.in
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# the following is the LSB init header see
|
||||||
|
# http://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/initscrcomconv.html
|
||||||
|
#
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: libvirtd
|
||||||
|
# Default-Start: 3 4 5
|
||||||
|
# Default-Stop: 0 1 2 6
|
||||||
|
# Required-Start: $network messagebus virtlogd
|
||||||
|
# Required-Stop: $network messagebus
|
||||||
|
# Should-Start: $named xend avahi-daemon virtlockd
|
||||||
|
# Should-Stop: $named
|
||||||
|
# Short-Description: daemon for libvirt virtualization API
|
||||||
|
# Description: This is a daemon for managing guest instances
|
||||||
|
# and libvirt virtual networks
|
||||||
|
# See http://libvirt.org
|
||||||
|
### END INIT INFO
|
||||||
|
|
||||||
|
# the following is chkconfig init header
|
||||||
|
#
|
||||||
|
# libvirtd: guest and virtual network management daemon
|
||||||
|
#
|
||||||
|
# chkconfig: 345 97 03
|
||||||
|
# description: This is a daemon for managing guest instances \
|
||||||
|
# and libvirt virtual networks \
|
||||||
|
# See http://libvirt.org
|
||||||
|
#
|
||||||
|
# processname: libvirtd
|
||||||
|
# pidfile: @localstatedir@/run/libvirtd.pid
|
||||||
|
#
|
||||||
|
|
||||||
|
# Source function library.
|
||||||
|
. @sysconfdir@/rc.d/init.d/functions
|
||||||
|
|
||||||
|
SERVICE=libvirtd
|
||||||
|
PROCESS=libvirtd
|
||||||
|
PIDFILE=@localstatedir@/run/$SERVICE.pid
|
||||||
|
|
||||||
|
LIBVIRTD_CONFIG=
|
||||||
|
LIBVIRTD_ARGS=
|
||||||
|
KRB5_KTNAME=/etc/libvirt/krb5.tab
|
||||||
|
|
||||||
|
test -f @sysconfdir@/sysconfig/libvirtd && . @sysconfdir@/sysconfig/libvirtd
|
||||||
|
|
||||||
|
export QEMU_AUDIO_DRV
|
||||||
|
export SDL_AUDIODRIVER
|
||||||
|
|
||||||
|
LIBVIRTD_CONFIG_ARGS=
|
||||||
|
if [ -n "$LIBVIRTD_CONFIG" ]
|
||||||
|
then
|
||||||
|
LIBVIRTD_CONFIG_ARGS="--config $LIBVIRTD_CONFIG"
|
||||||
|
fi
|
||||||
|
|
||||||
|
RETVAL=0
|
||||||
|
|
||||||
|
start() {
|
||||||
|
echo -n $"Starting $SERVICE daemon: "
|
||||||
|
mkdir -p @localstatedir@/cache/libvirt
|
||||||
|
rm -rf @localstatedir@/cache/libvirt/*
|
||||||
|
|
||||||
|
# LIBVIRTD_NOFILES_LIMIT from /etc/sysconfig/libvirtd is not handled
|
||||||
|
# automatically
|
||||||
|
if [ -n "$LIBVIRTD_NOFILES_LIMIT" ]; then
|
||||||
|
ulimit -n "$LIBVIRTD_NOFILES_LIMIT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
KRB5_KTNAME=$KRB5_KTNAME daemon --pidfile $PIDFILE --check $SERVICE $PROCESS --daemon $LIBVIRTD_CONFIG_ARGS $LIBVIRTD_ARGS
|
||||||
|
RETVAL=$?
|
||||||
|
echo
|
||||||
|
[ $RETVAL -eq 0 ] && touch @localstatedir@/lock/subsys/$SERVICE
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
echo -n $"Stopping $SERVICE daemon: "
|
||||||
|
|
||||||
|
killproc -p $PIDFILE $PROCESS
|
||||||
|
RETVAL=$?
|
||||||
|
echo
|
||||||
|
if [ $RETVAL -eq 0 ]; then
|
||||||
|
rm -f @localstatedir@/lock/subsys/$SERVICE
|
||||||
|
rm -rf @localstatedir@/cache/libvirt/*
|
||||||
|
else
|
||||||
|
exit $RETVAL
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
restart() {
|
||||||
|
stop
|
||||||
|
start
|
||||||
|
}
|
||||||
|
|
||||||
|
reload() {
|
||||||
|
echo -n $"Reloading $SERVICE configuration: "
|
||||||
|
|
||||||
|
killproc -p $PIDFILE $PROCESS -HUP
|
||||||
|
RETVAL=$?
|
||||||
|
echo
|
||||||
|
return $RETVAL
|
||||||
|
}
|
||||||
|
|
||||||
|
# See how we were called.
|
||||||
|
case "$1" in
|
||||||
|
start|stop|restart|reload)
|
||||||
|
$1
|
||||||
|
;;
|
||||||
|
status)
|
||||||
|
status -p $PIDFILE $PROCESS
|
||||||
|
RETVAL=$?
|
||||||
|
;;
|
||||||
|
force-reload)
|
||||||
|
reload
|
||||||
|
;;
|
||||||
|
condrestart|try-restart)
|
||||||
|
[ -f @localstatedir@/lock/subsys/$SERVICE ] && restart || :
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload|try-restart}"
|
||||||
|
exit 2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
exit $RETVAL
|
@@ -1,8 +1,9 @@
|
|||||||
@localstatedir@/log/libvirt/libxl/*.log {
|
@localstatedir@/log/libvirt/libxl/*.log {
|
||||||
size 2097153
|
weekly
|
||||||
missingok
|
missingok
|
||||||
rotate 4
|
rotate 4
|
||||||
compress
|
compress
|
||||||
delaycompress
|
delaycompress
|
||||||
copytruncate
|
copytruncate
|
||||||
|
minsize 100k
|
||||||
}
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user