mirror of
				https://gitlab.com/libvirt/libvirt.git
				synced 2025-11-04 12:24:23 +03:00 
			
		
		
		
	Compare commits
	
		
			36 Commits
		
	
	
		
			v8.1.0-rc2
			...
			v1.0.2-mai
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					139a426577 | ||
| 
						 | 
					7b334c1660 | ||
| 
						 | 
					905f2281e3 | ||
| 
						 | 
					d30fea03a5 | ||
| 
						 | 
					66de726e21 | ||
| 
						 | 
					20326db6a5 | ||
| 
						 | 
					fdcd63fe81 | ||
| 
						 | 
					de8545c8b8 | ||
| 
						 | 
					2d03487b70 | ||
| 
						 | 
					2c84a8f6de | ||
| 
						 | 
					f4d67fdb05 | ||
| 
						 | 
					7fad864afa | ||
| 
						 | 
					e3ca9d3d62 | ||
| 
						 | 
					d0a4e2498d | ||
| 
						 | 
					c568368057 | ||
| 
						 | 
					c973eb035e | ||
| 
						 | 
					324279f2c8 | ||
| 
						 | 
					561b03f916 | ||
| 
						 | 
					939edc4182 | ||
| 
						 | 
					c4c6fc42be | ||
| 
						 | 
					144e764138 | ||
| 
						 | 
					9579f4576c | ||
| 
						 | 
					bbdbe1905a | ||
| 
						 | 
					30cf3b7490 | ||
| 
						 | 
					eec80bcde8 | ||
| 
						 | 
					e4c674f831 | ||
| 
						 | 
					9fb378777b | ||
| 
						 | 
					bced0c14af | ||
| 
						 | 
					b385809e4e | ||
| 
						 | 
					89c7490895 | ||
| 
						 | 
					b97a2fc129 | ||
| 
						 | 
					1b2f243956 | ||
| 
						 | 
					570145e391 | ||
| 
						 | 
					ae80f481cb | ||
| 
						 | 
					7b6175db6d | ||
| 
						 | 
					01496e3911 | 
@@ -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
 | 
			
		||||
							
								
								
									
										6
									
								
								.ctags
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								.ctags
									
									
									
									
									
								
							@@ -1,6 +0,0 @@
 | 
			
		||||
--recurse
 | 
			
		||||
--exclude=*.orig
 | 
			
		||||
--exclude=*.html
 | 
			
		||||
--exclude=*.html.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
 | 
			
		||||
							
								
								
									
										52
									
								
								.github/workflows/lockdown.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										52
									
								
								.github/workflows/lockdown.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,52 +0,0 @@
 | 
			
		||||
---
 | 
			
		||||
# Configuration for Repo Lockdown - https://github.com/dessant/repo-lockdown
 | 
			
		||||
 | 
			
		||||
name: 'Repo Lockdown'
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  issues:
 | 
			
		||||
    types: opened
 | 
			
		||||
  pull_request_target:
 | 
			
		||||
    types: opened
 | 
			
		||||
 | 
			
		||||
permissions:
 | 
			
		||||
  pull-requests: write
 | 
			
		||||
  issues: write
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  action:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: dessant/repo-lockdown@v2
 | 
			
		||||
        with:
 | 
			
		||||
          issue-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.
 | 
			
		||||
          lock-issue: true
 | 
			
		||||
          close-issue: true
 | 
			
		||||
          pr-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.
 | 
			
		||||
          lock-pr: true
 | 
			
		||||
          close-pr: true
 | 
			
		||||
							
								
								
									
										233
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										233
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,26 +1,219 @@
 | 
			
		||||
# vim related ignores
 | 
			
		||||
*.swp
 | 
			
		||||
.lvimrc
 | 
			
		||||
 | 
			
		||||
# emacs related ignores
 | 
			
		||||
*#*#
 | 
			
		||||
*.#*#
 | 
			
		||||
.#*
 | 
			
		||||
*~
 | 
			
		||||
 | 
			
		||||
# git related ignores
 | 
			
		||||
*.rej
 | 
			
		||||
*.a
 | 
			
		||||
*.cov
 | 
			
		||||
*.exe
 | 
			
		||||
*.gcda
 | 
			
		||||
*.gcno
 | 
			
		||||
*.gcov
 | 
			
		||||
*.html
 | 
			
		||||
*.i
 | 
			
		||||
*.la
 | 
			
		||||
*.lo
 | 
			
		||||
*.loT
 | 
			
		||||
*.o
 | 
			
		||||
*.orig
 | 
			
		||||
*.pyc
 | 
			
		||||
*.rej
 | 
			
		||||
*.s
 | 
			
		||||
*~
 | 
			
		||||
.#*
 | 
			
		||||
.deps
 | 
			
		||||
.gdb_history
 | 
			
		||||
.git
 | 
			
		||||
.git-module-status
 | 
			
		||||
 | 
			
		||||
# python related ignores
 | 
			
		||||
__pycache__/
 | 
			
		||||
 | 
			
		||||
# libvirt related ignores
 | 
			
		||||
.libs
 | 
			
		||||
.lvimrc
 | 
			
		||||
.memdump
 | 
			
		||||
.sc-start-sc_*
 | 
			
		||||
/ABOUT-NLS
 | 
			
		||||
/AUTHORS
 | 
			
		||||
/COPYING
 | 
			
		||||
/ChangeLog
 | 
			
		||||
/GNUmakefile
 | 
			
		||||
/INSTALL
 | 
			
		||||
/NEWS
 | 
			
		||||
/aclocal.m4
 | 
			
		||||
/autom4te.cache
 | 
			
		||||
/build-aux
 | 
			
		||||
/build-aux/
 | 
			
		||||
/build/
 | 
			
		||||
/ci/scratch/
 | 
			
		||||
/config.cache
 | 
			
		||||
/config.guess
 | 
			
		||||
/config.h
 | 
			
		||||
/config.h.in
 | 
			
		||||
/config.log
 | 
			
		||||
/config.rpath
 | 
			
		||||
/config.status
 | 
			
		||||
/config.sub
 | 
			
		||||
/configure
 | 
			
		||||
/configure.lineno
 | 
			
		||||
/daemon/*_dispatch.h
 | 
			
		||||
/daemon/libvirt_qemud
 | 
			
		||||
/daemon/libvirtd
 | 
			
		||||
/daemon/libvirtd*.logrotate
 | 
			
		||||
/daemon/libvirtd.8
 | 
			
		||||
/daemon/libvirtd.8.in
 | 
			
		||||
/daemon/libvirtd.init
 | 
			
		||||
/daemon/libvirtd.pod
 | 
			
		||||
/daemon/libvirtd.policy
 | 
			
		||||
/daemon/libvirtd.service
 | 
			
		||||
/daemon/test_libvirtd.aug
 | 
			
		||||
/docs/apibuild.py.stamp
 | 
			
		||||
/docs/devhelp/libvirt.devhelp
 | 
			
		||||
/docs/hvsupport.html.in
 | 
			
		||||
/docs/libvirt-api.xml
 | 
			
		||||
/docs/libvirt-lxc-*.xml
 | 
			
		||||
/docs/libvirt-qemu-*.xml
 | 
			
		||||
/docs/libvirt-refs.xml
 | 
			
		||||
/docs/search.php
 | 
			
		||||
/docs/todo.html.in
 | 
			
		||||
/examples/domain-events/events-c/event-test
 | 
			
		||||
/examples/dominfo/info1
 | 
			
		||||
/examples/domsuspend/suspend
 | 
			
		||||
/examples/hellolibvirt/hellolibvirt
 | 
			
		||||
/examples/openauth/openauth
 | 
			
		||||
/gnulib/lib/*
 | 
			
		||||
/gnulib/m4/*
 | 
			
		||||
/gnulib/tests/*
 | 
			
		||||
/include/libvirt/libvirt.h
 | 
			
		||||
/libtool
 | 
			
		||||
/libvirt-*.tar.gz
 | 
			
		||||
/libvirt-[0-9]*
 | 
			
		||||
/libvirt.pc
 | 
			
		||||
/libvirt.spec
 | 
			
		||||
/ltconfig
 | 
			
		||||
/ltmain.sh
 | 
			
		||||
/m4/*
 | 
			
		||||
/maint.mk
 | 
			
		||||
/mingw-libvirt.spec
 | 
			
		||||
/mkinstalldirs
 | 
			
		||||
/po/*
 | 
			
		||||
/proxy/
 | 
			
		||||
/python/generated.stamp
 | 
			
		||||
/python/generator.py.stamp
 | 
			
		||||
/python/libvirt-export.c
 | 
			
		||||
/python/libvirt-lxc-export.c
 | 
			
		||||
/python/libvirt-lxc.[ch]
 | 
			
		||||
/python/libvirt-qemu-export.c
 | 
			
		||||
/python/libvirt-qemu.[ch]
 | 
			
		||||
/python/libvirt.[ch]
 | 
			
		||||
/python/libvirt.py
 | 
			
		||||
/python/libvirt_lxc.py
 | 
			
		||||
/python/libvirt_qemu.py
 | 
			
		||||
/run
 | 
			
		||||
/sc_*
 | 
			
		||||
/src/.*.stamp
 | 
			
		||||
/src/esx/*.generated.*
 | 
			
		||||
/src/hyperv/*.generated.*
 | 
			
		||||
/src/libvirt*.def
 | 
			
		||||
/src/libvirt.syms
 | 
			
		||||
/src/libvirt_*.stp
 | 
			
		||||
/src/libvirt_*helper
 | 
			
		||||
/src/libvirt_*probes.h
 | 
			
		||||
/src/libvirt_lxc
 | 
			
		||||
/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/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/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/util/virkeymaps.h
 | 
			
		||||
/src/virt-aa-helper
 | 
			
		||||
/src/virtlockd
 | 
			
		||||
/src/virtlockd.init
 | 
			
		||||
/tests/*.log
 | 
			
		||||
/tests/*.pid
 | 
			
		||||
/tests/*.trs
 | 
			
		||||
/tests/*xml2*test
 | 
			
		||||
/tests/commandhelper
 | 
			
		||||
/tests/commandtest
 | 
			
		||||
/tests/conftest
 | 
			
		||||
/tests/cputest
 | 
			
		||||
/tests/domainsnapshotxml2xmltest
 | 
			
		||||
/tests/esxutilstest
 | 
			
		||||
/tests/eventtest
 | 
			
		||||
/tests/hashtest
 | 
			
		||||
/tests/jsontest
 | 
			
		||||
/tests/libvirtdconftest
 | 
			
		||||
/tests/networkxml2argvtest
 | 
			
		||||
/tests/nodeinfotest
 | 
			
		||||
/tests/nwfilterxml2xmltest
 | 
			
		||||
/tests/object-locking
 | 
			
		||||
/tests/object-locking-files.txt
 | 
			
		||||
/tests/object-locking.cm[ix]
 | 
			
		||||
/tests/openvzutilstest
 | 
			
		||||
/tests/qemuargv2xmltest
 | 
			
		||||
/tests/qemuhelptest
 | 
			
		||||
/tests/qemumonitorjsontest
 | 
			
		||||
/tests/qemumonitortest
 | 
			
		||||
/tests/qemuxmlnstest
 | 
			
		||||
/tests/qparamtest
 | 
			
		||||
/tests/reconnect
 | 
			
		||||
/tests/secaatest
 | 
			
		||||
/tests/seclabeltest
 | 
			
		||||
/tests/securityselinuxlabeltest
 | 
			
		||||
/tests/securityselinuxtest
 | 
			
		||||
/tests/sexpr2xmltest
 | 
			
		||||
/tests/shunloadtest
 | 
			
		||||
/tests/sockettest
 | 
			
		||||
/tests/ssh
 | 
			
		||||
/tests/statstest
 | 
			
		||||
/tests/storagebackendsheepdogtest
 | 
			
		||||
/tests/sysinfotest
 | 
			
		||||
/tests/utiltest
 | 
			
		||||
/tests/viratomictest
 | 
			
		||||
/tests/virauthconfigtest
 | 
			
		||||
/tests/virbitmaptest
 | 
			
		||||
/tests/virbuftest
 | 
			
		||||
/tests/virdrivermoduletest
 | 
			
		||||
/tests/virhashtest
 | 
			
		||||
/tests/virkeyfiletest
 | 
			
		||||
/tests/virlockspacetest
 | 
			
		||||
/tests/virnet*test
 | 
			
		||||
/tests/virportallocatortest
 | 
			
		||||
/tests/virshtest
 | 
			
		||||
/tests/virstringtest
 | 
			
		||||
/tests/virtimetest
 | 
			
		||||
/tests/viruritest
 | 
			
		||||
/tests/vmx2xmltest
 | 
			
		||||
/tests/xencapstest
 | 
			
		||||
/tests/xmconfigtest
 | 
			
		||||
/tools/*.[18]
 | 
			
		||||
/tools/libvirt-guests.init
 | 
			
		||||
/tools/libvirt-guests.service
 | 
			
		||||
/tools/libvirt-guests.sh
 | 
			
		||||
/tools/virsh
 | 
			
		||||
/tools/virsh-*-edit.c
 | 
			
		||||
/tools/virt-*-validate
 | 
			
		||||
/tools/virt-sanlock-cleanup
 | 
			
		||||
/update.log
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
# clangd related ignores
 | 
			
		||||
.clangd
 | 
			
		||||
compile_commands.json
 | 
			
		||||
!/gnulib/lib/Makefile.am
 | 
			
		||||
!/gnulib/tests/Makefile.am
 | 
			
		||||
!/m4/virt-*.m4
 | 
			
		||||
!/po/*.po
 | 
			
		||||
!/po/POTFILES.in
 | 
			
		||||
!/po/libvirt.pot
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										129
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							
							
						
						
									
										129
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							@@ -1,129 +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"
 | 
			
		||||
 | 
			
		||||
include: '/ci/gitlab.yml'
 | 
			
		||||
 | 
			
		||||
.native_build_job:
 | 
			
		||||
  extends: .gitlab_native_build_job
 | 
			
		||||
  cache:
 | 
			
		||||
    paths:
 | 
			
		||||
      - ccache/
 | 
			
		||||
    key: "$CI_JOB_NAME"
 | 
			
		||||
  before_script:
 | 
			
		||||
    - *script_variables
 | 
			
		||||
    - cat /packages.txt
 | 
			
		||||
  script:
 | 
			
		||||
    - meson setup build --werror $MESON_ARGS || (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
 | 
			
		||||
 | 
			
		||||
.cross_build_job:
 | 
			
		||||
  extends: .gitlab_cross_build_job
 | 
			
		||||
  cache:
 | 
			
		||||
    paths:
 | 
			
		||||
      - ccache/
 | 
			
		||||
    key: "$CI_JOB_NAME"
 | 
			
		||||
  before_script:
 | 
			
		||||
    - *script_variables
 | 
			
		||||
    - cat /packages.txt
 | 
			
		||||
  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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# 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-almalinux-8:latest
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-almalinux-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: sanity_checks
 | 
			
		||||
  image: $CI_REGISTRY_IMAGE/ci-opensuse-leap-152:latest
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-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-almalinux-8:latest
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-almalinux-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
 | 
			
		||||
 | 
			
		||||
# Coverity job that is run only by schedules
 | 
			
		||||
coverity:
 | 
			
		||||
  image: $CI_REGISTRY_IMAGE/ci-almalinux-8:latest
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-almalinux-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"]
 | 
			
		||||
	path = src/keycodemapdb
 | 
			
		||||
	url = https://gitlab.com/keycodemap/keycodemapdb.git
 | 
			
		||||
[submodule "gnulib"]
 | 
			
		||||
	path = .gnulib
 | 
			
		||||
	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 61c7b1e32e
									
								
							
							
								
								
									
										28
									
								
								.mailmap
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								.mailmap
									
									
									
									
									
								
							@@ -5,10 +5,7 @@
 | 
			
		||||
 | 
			
		||||
<bozzolan@gmail.com> <redshift@gmx.com>
 | 
			
		||||
<charles_duffy@messageone.com> <charles@dyfis.net>
 | 
			
		||||
<claudio.bley@gmail.com> <cbley@av-test.de>
 | 
			
		||||
<dfj@redhat.com> <dfj@dfj.bne.redhat.com>
 | 
			
		||||
<dpkshetty@gmail.com> <deepakcs@linux.vnet.ibm.com>
 | 
			
		||||
<dpkshetty@gmail.com> <deepakcs@redhat.com>
 | 
			
		||||
<eblake@redhat.com> <ebb9@byu.net>
 | 
			
		||||
<gdolley@arpnetworks.com> <gdolley@ucla.edu>
 | 
			
		||||
<gerhard.stenzel@de.ibm.com> <gstenzel@linux.vnet.ibm.com>
 | 
			
		||||
@@ -20,6 +17,7 @@
 | 
			
		||||
<jfehlig@suse.com> <jfehlig@novell.com>
 | 
			
		||||
<jfehlig@suse.com> <jfehlig@linux-ypgk.site>
 | 
			
		||||
<jclift@redhat.com> <justin@salasaga.org>
 | 
			
		||||
<berrange@redhat.com> <dan@berrange.com>
 | 
			
		||||
<soren@linux2go.dk> <soren@canonical.com>
 | 
			
		||||
<cfergeau@redhat.com> <teuf@gnome.org>
 | 
			
		||||
<wency@cn.fujitsu.com> <wency cn fujitsu com>
 | 
			
		||||
@@ -38,16 +36,6 @@
 | 
			
		||||
<zhlcindy@linux.vnet.ibm.com> <zhlcindy@gmail.com>
 | 
			
		||||
<serge.hallyn@canonical.com> <serue@us.ibm.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:
 | 
			
		||||
# Preferred author spelling <preferred email>
 | 
			
		||||
@@ -65,16 +53,6 @@ Aurelien Rougemont <beorn@binaries.fr>
 | 
			
		||||
Serge E. Hallyn <serge.hallyn@canonical.com>
 | 
			
		||||
Henrik Persson E <henrik.e.persson@ericsson.com>
 | 
			
		||||
Philipp Hahn <hahn@univention.de>
 | 
			
		||||
Marco Bozzolan <bozzolan@gmail.com>
 | 
			
		||||
Marco Bozzolan <redshift@gmx.com>
 | 
			
		||||
Pritesh Kothari <pritesh.kothari@sun.com>
 | 
			
		||||
Wang Yufei (James) <james.wangyufei@huawei.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 }
 | 
			
		||||
							
								
								
									
										92
									
								
								AUTHORS.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								AUTHORS.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,92 @@
 | 
			
		||||
   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>
 | 
			
		||||
Anthony Liguori <aliguori@us.ibm.com>
 | 
			
		||||
Chris Lalancette <clalance@redhat.com>
 | 
			
		||||
Christophe Fergeau <cfergeau@redhat.com>
 | 
			
		||||
Claudio Bley <cbley@av-test.de>
 | 
			
		||||
Cole Robinson <crobinso@redhat.com>
 | 
			
		||||
Daniel Berrange <berrange@redhat.com>
 | 
			
		||||
Daniel Veillard <veillard@redhat.com>
 | 
			
		||||
Dave Allan <dallan@redhat.com>
 | 
			
		||||
Doug Goldstein <cardoe@gentoo.org>
 | 
			
		||||
Eric Blake <eblake@redhat.com>
 | 
			
		||||
Guannan Ren <gren@redhat.com>
 | 
			
		||||
Guido Günther <agx@sigxcpu.org>
 | 
			
		||||
Ján Tomko <jtomko@redhat.com>
 | 
			
		||||
Jim Fehlig <jfehlig@suse.com>
 | 
			
		||||
Jim Meyering <meyering@redhat.com>
 | 
			
		||||
Jiří Denemark <jdenemar@redhat.com>
 | 
			
		||||
John Levon <john.levon@sun.com>
 | 
			
		||||
Justin Clift <jclift@redhat.com>
 | 
			
		||||
Laine Stump <laine@redhat.com>
 | 
			
		||||
Mark McLoughlin <markmc@redhat.com>
 | 
			
		||||
Martin Kletzander <mkletzan@redhat.com>
 | 
			
		||||
Matthias Bolte <matthias.bolte@googlemail.com>
 | 
			
		||||
Michal Prívozník <mprivozn@redhat.com>
 | 
			
		||||
Osier Yang <jyang@redhat.com>
 | 
			
		||||
Peter Krempa <pkrempa@redhat.com>
 | 
			
		||||
Richard W.M. Jones <rjones@redhat.com>
 | 
			
		||||
Stefan Berger <stefanb@us.ibm.com>
 | 
			
		||||
Wen Congyang <wency@cn.fujitsu.com>
 | 
			
		||||
 | 
			
		||||
Previous maintainers:
 | 
			
		||||
 | 
			
		||||
Atsushi SAKAI <sakaia@jp.fujitsu.com>
 | 
			
		||||
Dan Smith <danms@us.ibm.com>
 | 
			
		||||
Dave Leskovec <dlesko@linux.vnet.ibm.com>
 | 
			
		||||
Karel Zak <kzak@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.
 | 
			
		||||
							
								
								
									
										339
									
								
								COPYING
									
									
									
									
									
								
							
							
						
						
									
										339
									
								
								COPYING
									
									
									
									
									
								
							@@ -1,339 +0,0 @@
 | 
			
		||||
                    GNU GENERAL PUBLIC LICENSE
 | 
			
		||||
                       Version 2, June 1991
 | 
			
		||||
 | 
			
		||||
 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
 | 
			
		||||
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 | 
			
		||||
 Everyone is permitted to copy and distribute verbatim copies
 | 
			
		||||
 of this license document, but changing it is not allowed.
 | 
			
		||||
 | 
			
		||||
                            Preamble
 | 
			
		||||
 | 
			
		||||
  The licenses for most software are designed to take away your
 | 
			
		||||
freedom to share and change it.  By contrast, the GNU General Public
 | 
			
		||||
License is intended to guarantee your freedom to share and change free
 | 
			
		||||
software--to make sure the software is free for all its users.  This
 | 
			
		||||
General Public License applies to most of the Free Software
 | 
			
		||||
Foundation's software and to any other program whose authors commit to
 | 
			
		||||
using it.  (Some other Free Software Foundation software is covered by
 | 
			
		||||
the GNU Lesser General Public License instead.)  You can apply it to
 | 
			
		||||
your programs, too.
 | 
			
		||||
 | 
			
		||||
  When we speak of free software, we are referring to freedom, not
 | 
			
		||||
price.  Our General Public Licenses are designed to make sure that you
 | 
			
		||||
have the freedom to distribute copies of free software (and charge for
 | 
			
		||||
this service if you wish), that you receive source code or can get it
 | 
			
		||||
if you want it, that you can change the software or use pieces of it
 | 
			
		||||
in new free programs; and that you know you can do these things.
 | 
			
		||||
 | 
			
		||||
  To protect your rights, we need to make restrictions that forbid
 | 
			
		||||
anyone to deny you these rights or to ask you to surrender the rights.
 | 
			
		||||
These restrictions translate to certain responsibilities for you if you
 | 
			
		||||
distribute copies of the software, or if you modify it.
 | 
			
		||||
 | 
			
		||||
  For example, if you distribute copies of such a program, whether
 | 
			
		||||
gratis or for a fee, you must give the recipients all the rights that
 | 
			
		||||
you have.  You must make sure that they, too, receive or can get the
 | 
			
		||||
source code.  And you must show them these terms so they know their
 | 
			
		||||
rights.
 | 
			
		||||
 | 
			
		||||
  We protect your rights with two steps: (1) copyright the software, and
 | 
			
		||||
(2) offer you this license which gives you legal permission to copy,
 | 
			
		||||
distribute and/or modify the software.
 | 
			
		||||
 | 
			
		||||
  Also, for each author's protection and ours, we want to make certain
 | 
			
		||||
that everyone understands that there is no warranty for this free
 | 
			
		||||
software.  If the software is modified by someone else and passed on, we
 | 
			
		||||
want its recipients to know that what they have is not the original, so
 | 
			
		||||
that any problems introduced by others will not reflect on the original
 | 
			
		||||
authors' reputations.
 | 
			
		||||
 | 
			
		||||
  Finally, any free program is threatened constantly by software
 | 
			
		||||
patents.  We wish to avoid the danger that redistributors of a free
 | 
			
		||||
program will individually obtain patent licenses, in effect making the
 | 
			
		||||
program proprietary.  To prevent this, we have made it clear that any
 | 
			
		||||
patent must be licensed for everyone's free use or not licensed at all.
 | 
			
		||||
 | 
			
		||||
  The precise terms and conditions for copying, distribution and
 | 
			
		||||
modification follow.
 | 
			
		||||
 | 
			
		||||
                    GNU GENERAL PUBLIC LICENSE
 | 
			
		||||
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 | 
			
		||||
 | 
			
		||||
  0. This License applies to any program or other work which contains
 | 
			
		||||
a notice placed by the copyright holder saying it may be distributed
 | 
			
		||||
under the terms of this General Public License.  The "Program", below,
 | 
			
		||||
refers to any such program or work, and a "work based on the Program"
 | 
			
		||||
means either the Program or any derivative work under copyright law:
 | 
			
		||||
that is to say, a work containing the Program or a portion of it,
 | 
			
		||||
either verbatim or with modifications and/or translated into another
 | 
			
		||||
language.  (Hereinafter, translation is included without limitation in
 | 
			
		||||
the term "modification".)  Each licensee is addressed as "you".
 | 
			
		||||
 | 
			
		||||
Activities other than copying, distribution and modification are not
 | 
			
		||||
covered by this License; they are outside its scope.  The act of
 | 
			
		||||
running the Program is not restricted, and the output from the Program
 | 
			
		||||
is covered only if its contents constitute a work based on the
 | 
			
		||||
Program (independent of having been made by running the Program).
 | 
			
		||||
Whether that is true depends on what the Program does.
 | 
			
		||||
 | 
			
		||||
  1. You may copy and distribute verbatim copies of the Program's
 | 
			
		||||
source code as you receive it, in any medium, provided that you
 | 
			
		||||
conspicuously and appropriately publish on each copy an appropriate
 | 
			
		||||
copyright notice and disclaimer of warranty; keep intact all the
 | 
			
		||||
notices that refer to this License and to the absence of any warranty;
 | 
			
		||||
and give any other recipients of the Program a copy of this License
 | 
			
		||||
along with the Program.
 | 
			
		||||
 | 
			
		||||
You may charge a fee for the physical act of transferring a copy, and
 | 
			
		||||
you may at your option offer warranty protection in exchange for a fee.
 | 
			
		||||
 | 
			
		||||
  2. You may modify your copy or copies of the Program or any portion
 | 
			
		||||
of it, thus forming a work based on the Program, and copy and
 | 
			
		||||
distribute such modifications or work under the terms of Section 1
 | 
			
		||||
above, provided that you also meet all of these conditions:
 | 
			
		||||
 | 
			
		||||
    a) You must cause the modified files to carry prominent notices
 | 
			
		||||
    stating that you changed the files and the date of any change.
 | 
			
		||||
 | 
			
		||||
    b) You must cause any work that you distribute or publish, that in
 | 
			
		||||
    whole or in part contains or is derived from the Program or any
 | 
			
		||||
    part thereof, to be licensed as a whole at no charge to all third
 | 
			
		||||
    parties under the terms of this License.
 | 
			
		||||
 | 
			
		||||
    c) If the modified program normally reads commands interactively
 | 
			
		||||
    when run, you must cause it, when started running for such
 | 
			
		||||
    interactive use in the most ordinary way, to print or display an
 | 
			
		||||
    announcement including an appropriate copyright notice and a
 | 
			
		||||
    notice that there is no warranty (or else, saying that you provide
 | 
			
		||||
    a warranty) and that users may redistribute the program under
 | 
			
		||||
    these conditions, and telling the user how to view a copy of this
 | 
			
		||||
    License.  (Exception: if the Program itself is interactive but
 | 
			
		||||
    does not normally print such an announcement, your work based on
 | 
			
		||||
    the Program is not required to print an announcement.)
 | 
			
		||||
 | 
			
		||||
These requirements apply to the modified work as a whole.  If
 | 
			
		||||
identifiable sections of that work are not derived from the Program,
 | 
			
		||||
and can be reasonably considered independent and separate works in
 | 
			
		||||
themselves, then this License, and its terms, do not apply to those
 | 
			
		||||
sections when you distribute them as separate works.  But when you
 | 
			
		||||
distribute the same sections as part of a whole which is a work based
 | 
			
		||||
on the Program, the distribution of the whole must be on the terms of
 | 
			
		||||
this License, whose permissions for other licensees extend to the
 | 
			
		||||
entire whole, and thus to each and every part regardless of who wrote it.
 | 
			
		||||
 | 
			
		||||
Thus, it is not the intent of this section to claim rights or contest
 | 
			
		||||
your rights to work written entirely by you; rather, the intent is to
 | 
			
		||||
exercise the right to control the distribution of derivative or
 | 
			
		||||
collective works based on the Program.
 | 
			
		||||
 | 
			
		||||
In addition, mere aggregation of another work not based on the Program
 | 
			
		||||
with the Program (or with a work based on the Program) on a volume of
 | 
			
		||||
a storage or distribution medium does not bring the other work under
 | 
			
		||||
the scope of this License.
 | 
			
		||||
 | 
			
		||||
  3. You may copy and distribute the Program (or a work based on it,
 | 
			
		||||
under Section 2) in object code or executable form under the terms of
 | 
			
		||||
Sections 1 and 2 above provided that you also do one of the following:
 | 
			
		||||
 | 
			
		||||
    a) Accompany it with the complete corresponding machine-readable
 | 
			
		||||
    source code, which must be distributed under the terms of Sections
 | 
			
		||||
    1 and 2 above on a medium customarily used for software interchange; or,
 | 
			
		||||
 | 
			
		||||
    b) Accompany it with a written offer, valid for at least three
 | 
			
		||||
    years, to give any third party, for a charge no more than your
 | 
			
		||||
    cost of physically performing source distribution, a complete
 | 
			
		||||
    machine-readable copy of the corresponding source code, to be
 | 
			
		||||
    distributed under the terms of Sections 1 and 2 above on a medium
 | 
			
		||||
    customarily used for software interchange; or,
 | 
			
		||||
 | 
			
		||||
    c) Accompany it with the information you received as to the offer
 | 
			
		||||
    to distribute corresponding source code.  (This alternative is
 | 
			
		||||
    allowed only for noncommercial distribution and only if you
 | 
			
		||||
    received the program in object code or executable form with such
 | 
			
		||||
    an offer, in accord with Subsection b above.)
 | 
			
		||||
 | 
			
		||||
The source code for a work means the preferred form of the work for
 | 
			
		||||
making modifications to it.  For an executable work, complete source
 | 
			
		||||
code means all the source code for all modules it contains, plus any
 | 
			
		||||
associated interface definition files, plus the scripts used to
 | 
			
		||||
control compilation and installation of the executable.  However, as a
 | 
			
		||||
special exception, the source code distributed need not include
 | 
			
		||||
anything that is normally distributed (in either source or binary
 | 
			
		||||
form) with the major components (compiler, kernel, and so on) of the
 | 
			
		||||
operating system on which the executable runs, unless that component
 | 
			
		||||
itself accompanies the executable.
 | 
			
		||||
 | 
			
		||||
If distribution of executable or object code is made by offering
 | 
			
		||||
access to copy from a designated place, then offering equivalent
 | 
			
		||||
access to copy the source code from the same place counts as
 | 
			
		||||
distribution of the source code, even though third parties are not
 | 
			
		||||
compelled to copy the source along with the object code.
 | 
			
		||||
 | 
			
		||||
  4. You may not copy, modify, sublicense, or distribute the Program
 | 
			
		||||
except as expressly provided under this License.  Any attempt
 | 
			
		||||
otherwise to copy, modify, sublicense or distribute the Program is
 | 
			
		||||
void, and will automatically terminate your rights under this License.
 | 
			
		||||
However, parties who have received copies, or rights, from you under
 | 
			
		||||
this License will not have their licenses terminated so long as such
 | 
			
		||||
parties remain in full compliance.
 | 
			
		||||
 | 
			
		||||
  5. You are not required to accept this License, since you have not
 | 
			
		||||
signed it.  However, nothing else grants you permission to modify or
 | 
			
		||||
distribute the Program or its derivative works.  These actions are
 | 
			
		||||
prohibited by law if you do not accept this License.  Therefore, by
 | 
			
		||||
modifying or distributing the Program (or any work based on the
 | 
			
		||||
Program), you indicate your acceptance of this License to do so, and
 | 
			
		||||
all its terms and conditions for copying, distributing or modifying
 | 
			
		||||
the Program or works based on it.
 | 
			
		||||
 | 
			
		||||
  6. Each time you redistribute the Program (or any work based on the
 | 
			
		||||
Program), the recipient automatically receives a license from the
 | 
			
		||||
original licensor to copy, distribute or modify the Program subject to
 | 
			
		||||
these terms and conditions.  You may not impose any further
 | 
			
		||||
restrictions on the recipients' exercise of the rights granted herein.
 | 
			
		||||
You are not responsible for enforcing compliance by third parties to
 | 
			
		||||
this License.
 | 
			
		||||
 | 
			
		||||
  7. If, as a consequence of a court judgment or allegation of patent
 | 
			
		||||
infringement or for any other reason (not limited to patent issues),
 | 
			
		||||
conditions are imposed on you (whether by court order, agreement or
 | 
			
		||||
otherwise) that contradict the conditions of this License, they do not
 | 
			
		||||
excuse you from the conditions of this License.  If you cannot
 | 
			
		||||
distribute so as to satisfy simultaneously your obligations under this
 | 
			
		||||
License and any other pertinent obligations, then as a consequence you
 | 
			
		||||
may not distribute the Program at all.  For example, if a patent
 | 
			
		||||
license would not permit royalty-free redistribution of the Program by
 | 
			
		||||
all those who receive copies directly or indirectly through you, then
 | 
			
		||||
the only way you could satisfy both it and this License would be to
 | 
			
		||||
refrain entirely from distribution of the Program.
 | 
			
		||||
 | 
			
		||||
If any portion of this section is held invalid or unenforceable under
 | 
			
		||||
any particular circumstance, the balance of the section is intended to
 | 
			
		||||
apply and the section as a whole is intended to apply in other
 | 
			
		||||
circumstances.
 | 
			
		||||
 | 
			
		||||
It is not the purpose of this section to induce you to infringe any
 | 
			
		||||
patents or other property right claims or to contest validity of any
 | 
			
		||||
such claims; this section has the sole purpose of protecting the
 | 
			
		||||
integrity of the free software distribution system, which is
 | 
			
		||||
implemented by public license practices.  Many people have made
 | 
			
		||||
generous contributions to the wide range of software distributed
 | 
			
		||||
through that system in reliance on consistent application of that
 | 
			
		||||
system; it is up to the author/donor to decide if he or she is willing
 | 
			
		||||
to distribute software through any other system and a licensee cannot
 | 
			
		||||
impose that choice.
 | 
			
		||||
 | 
			
		||||
This section is intended to make thoroughly clear what is believed to
 | 
			
		||||
be a consequence of the rest of this License.
 | 
			
		||||
 | 
			
		||||
  8. If the distribution and/or use of the Program is restricted in
 | 
			
		||||
certain countries either by patents or by copyrighted interfaces, the
 | 
			
		||||
original copyright holder who places the Program under this License
 | 
			
		||||
may add an explicit geographical distribution limitation excluding
 | 
			
		||||
those countries, so that distribution is permitted only in or among
 | 
			
		||||
countries not thus excluded.  In such case, this License incorporates
 | 
			
		||||
the limitation as if written in the body of this License.
 | 
			
		||||
 | 
			
		||||
  9. The Free Software Foundation may publish revised and/or new versions
 | 
			
		||||
of the General Public License from time to time.  Such new versions will
 | 
			
		||||
be similar in spirit to the present version, but may differ in detail to
 | 
			
		||||
address new problems or concerns.
 | 
			
		||||
 | 
			
		||||
Each version is given a distinguishing version number.  If the Program
 | 
			
		||||
specifies a version number of this License which applies to it and "any
 | 
			
		||||
later version", you have the option of following the terms and conditions
 | 
			
		||||
either of that version or of any later version published by the Free
 | 
			
		||||
Software Foundation.  If the Program does not specify a version number of
 | 
			
		||||
this License, you may choose any version ever published by the Free Software
 | 
			
		||||
Foundation.
 | 
			
		||||
 | 
			
		||||
  10. If you wish to incorporate parts of the Program into other free
 | 
			
		||||
programs whose distribution conditions are different, write to the author
 | 
			
		||||
to ask for permission.  For software which is copyrighted by the Free
 | 
			
		||||
Software Foundation, write to the Free Software Foundation; we sometimes
 | 
			
		||||
make exceptions for this.  Our decision will be guided by the two goals
 | 
			
		||||
of preserving the free status of all derivatives of our free software and
 | 
			
		||||
of promoting the sharing and reuse of software generally.
 | 
			
		||||
 | 
			
		||||
                            NO WARRANTY
 | 
			
		||||
 | 
			
		||||
  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
 | 
			
		||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
 | 
			
		||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
 | 
			
		||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
 | 
			
		||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 | 
			
		||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
 | 
			
		||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
 | 
			
		||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
 | 
			
		||||
REPAIR OR CORRECTION.
 | 
			
		||||
 | 
			
		||||
  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
 | 
			
		||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
 | 
			
		||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
 | 
			
		||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
 | 
			
		||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
 | 
			
		||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
 | 
			
		||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
 | 
			
		||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
 | 
			
		||||
POSSIBILITY OF SUCH DAMAGES.
 | 
			
		||||
 | 
			
		||||
                     END OF TERMS AND CONDITIONS
 | 
			
		||||
 | 
			
		||||
            How to Apply These Terms to Your New Programs
 | 
			
		||||
 | 
			
		||||
  If you develop a new program, and you want it to be of the greatest
 | 
			
		||||
possible use to the public, the best way to achieve this is to make it
 | 
			
		||||
free software which everyone can redistribute and change under these terms.
 | 
			
		||||
 | 
			
		||||
  To do so, attach the following notices to the program.  It is safest
 | 
			
		||||
to attach them to the start of each source file to most effectively
 | 
			
		||||
convey the exclusion of warranty; and each file should have at least
 | 
			
		||||
the "copyright" line and a pointer to where the full notice is found.
 | 
			
		||||
 | 
			
		||||
    <one line to give the program's name and a brief idea of what it does.>
 | 
			
		||||
    Copyright (C) <year>  <name of author>
 | 
			
		||||
 | 
			
		||||
    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 2 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, write to the Free Software Foundation, Inc.,
 | 
			
		||||
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 | 
			
		||||
 | 
			
		||||
Also add information on how to contact you by electronic and paper mail.
 | 
			
		||||
 | 
			
		||||
If the program is interactive, make it output a short notice like this
 | 
			
		||||
when it starts in an interactive mode:
 | 
			
		||||
 | 
			
		||||
    Gnomovision version 69, Copyright (C) year name of author
 | 
			
		||||
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
 | 
			
		||||
    This is free software, and you are welcome to redistribute it
 | 
			
		||||
    under certain conditions; type `show c' for details.
 | 
			
		||||
 | 
			
		||||
The hypothetical commands `show w' and `show c' should show the appropriate
 | 
			
		||||
parts of the General Public License.  Of course, the commands you use may
 | 
			
		||||
be called something other than `show w' and `show c'; they could even be
 | 
			
		||||
mouse-clicks or menu items--whatever suits your program.
 | 
			
		||||
 | 
			
		||||
You should also get your employer (if you work as a programmer) or your
 | 
			
		||||
school, if any, to sign a "copyright disclaimer" for the program, if
 | 
			
		||||
necessary.  Here is a sample; alter the names:
 | 
			
		||||
 | 
			
		||||
  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
 | 
			
		||||
  `Gnomovision' (which makes passes at compilers) written by James Hacker.
 | 
			
		||||
 | 
			
		||||
  <signature of Ty Coon>, 1 April 1989
 | 
			
		||||
  Ty Coon, President of Vice
 | 
			
		||||
 | 
			
		||||
This General Public License does not permit incorporating your program into
 | 
			
		||||
proprietary programs.  If your program is a subroutine library, you may
 | 
			
		||||
consider it more useful to permit linking proprietary applications with the
 | 
			
		||||
library.  If this is what you want to do, use the GNU Lesser General
 | 
			
		||||
Public License instead of this License.
 | 
			
		||||
							
								
								
									
										502
									
								
								COPYING.LESSER
									
									
									
									
									
								
							
							
						
						
									
										502
									
								
								COPYING.LESSER
									
									
									
									
									
								
							@@ -1,502 +0,0 @@
 | 
			
		||||
                  GNU LESSER GENERAL PUBLIC LICENSE
 | 
			
		||||
                       Version 2.1, February 1999
 | 
			
		||||
 | 
			
		||||
 Copyright (C) 1991, 1999 Free Software Foundation, Inc.
 | 
			
		||||
 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 | 
			
		||||
 Everyone is permitted to copy and distribute verbatim copies
 | 
			
		||||
 of this license document, but changing it is not allowed.
 | 
			
		||||
 | 
			
		||||
[This is the first released version of the Lesser GPL.  It also counts
 | 
			
		||||
 as the successor of the GNU Library Public License, version 2, hence
 | 
			
		||||
 the version number 2.1.]
 | 
			
		||||
 | 
			
		||||
                            Preamble
 | 
			
		||||
 | 
			
		||||
  The licenses for most software are designed to take away your
 | 
			
		||||
freedom to share and change it.  By contrast, the GNU General Public
 | 
			
		||||
Licenses are intended to guarantee your freedom to share and change
 | 
			
		||||
free software--to make sure the software is free for all its users.
 | 
			
		||||
 | 
			
		||||
  This license, the Lesser General Public License, applies to some
 | 
			
		||||
specially designated software packages--typically libraries--of the
 | 
			
		||||
Free Software Foundation and other authors who decide to use it.  You
 | 
			
		||||
can use it too, but we suggest you first think carefully about whether
 | 
			
		||||
this license or the ordinary General Public License is the better
 | 
			
		||||
strategy to use in any particular case, based on the explanations below.
 | 
			
		||||
 | 
			
		||||
  When we speak of free software, we are referring to freedom of use,
 | 
			
		||||
not price.  Our General Public Licenses are designed to make sure that
 | 
			
		||||
you have the freedom to distribute copies of free software (and charge
 | 
			
		||||
for this service if you wish); that you receive source code or can get
 | 
			
		||||
it if you want it; that you can change the software and use pieces of
 | 
			
		||||
it in new free programs; and that you are informed that you can do
 | 
			
		||||
these things.
 | 
			
		||||
 | 
			
		||||
  To protect your rights, we need to make restrictions that forbid
 | 
			
		||||
distributors to deny you these rights or to ask you to surrender these
 | 
			
		||||
rights.  These restrictions translate to certain responsibilities for
 | 
			
		||||
you if you distribute copies of the library or if you modify it.
 | 
			
		||||
 | 
			
		||||
  For example, if you distribute copies of the library, whether gratis
 | 
			
		||||
or for a fee, you must give the recipients all the rights that we gave
 | 
			
		||||
you.  You must make sure that they, too, receive or can get the source
 | 
			
		||||
code.  If you link other code with the library, you must provide
 | 
			
		||||
complete object files to the recipients, so that they can relink them
 | 
			
		||||
with the library after making changes to the library and recompiling
 | 
			
		||||
it.  And you must show them these terms so they know their rights.
 | 
			
		||||
 | 
			
		||||
  We protect your rights with a two-step method: (1) we copyright the
 | 
			
		||||
library, and (2) we offer you this license, which gives you legal
 | 
			
		||||
permission to copy, distribute and/or modify the library.
 | 
			
		||||
 | 
			
		||||
  To protect each distributor, we want to make it very clear that
 | 
			
		||||
there is no warranty for the free library.  Also, if the library is
 | 
			
		||||
modified by someone else and passed on, the recipients should know
 | 
			
		||||
that what they have is not the original version, so that the original
 | 
			
		||||
author's reputation will not be affected by problems that might be
 | 
			
		||||
introduced by others.
 | 
			
		||||
 | 
			
		||||
  Finally, software patents pose a constant threat to the existence of
 | 
			
		||||
any free program.  We wish to make sure that a company cannot
 | 
			
		||||
effectively restrict the users of a free program by obtaining a
 | 
			
		||||
restrictive license from a patent holder.  Therefore, we insist that
 | 
			
		||||
any patent license obtained for a version of the library must be
 | 
			
		||||
consistent with the full freedom of use specified in this license.
 | 
			
		||||
 | 
			
		||||
  Most GNU software, including some libraries, is covered by the
 | 
			
		||||
ordinary GNU General Public License.  This license, the GNU Lesser
 | 
			
		||||
General Public License, applies to certain designated libraries, and
 | 
			
		||||
is quite different from the ordinary General Public License.  We use
 | 
			
		||||
this license for certain libraries in order to permit linking those
 | 
			
		||||
libraries into non-free programs.
 | 
			
		||||
 | 
			
		||||
  When a program is linked with a library, whether statically or using
 | 
			
		||||
a shared library, the combination of the two is legally speaking a
 | 
			
		||||
combined work, a derivative of the original library.  The ordinary
 | 
			
		||||
General Public License therefore permits such linking only if the
 | 
			
		||||
entire combination fits its criteria of freedom.  The Lesser General
 | 
			
		||||
Public License permits more lax criteria for linking other code with
 | 
			
		||||
the library.
 | 
			
		||||
 | 
			
		||||
  We call this license the "Lesser" General Public License because it
 | 
			
		||||
does Less to protect the user's freedom than the ordinary General
 | 
			
		||||
Public License.  It also provides other free software developers Less
 | 
			
		||||
of an advantage over competing non-free programs.  These disadvantages
 | 
			
		||||
are the reason we use the ordinary General Public License for many
 | 
			
		||||
libraries.  However, the Lesser license provides advantages in certain
 | 
			
		||||
special circumstances.
 | 
			
		||||
 | 
			
		||||
  For example, on rare occasions, there may be a special need to
 | 
			
		||||
encourage the widest possible use of a certain library, so that it becomes
 | 
			
		||||
a de-facto standard.  To achieve this, non-free programs must be
 | 
			
		||||
allowed to use the library.  A more frequent case is that a free
 | 
			
		||||
library does the same job as widely used non-free libraries.  In this
 | 
			
		||||
case, there is little to gain by limiting the free library to free
 | 
			
		||||
software only, so we use the Lesser General Public License.
 | 
			
		||||
 | 
			
		||||
  In other cases, permission to use a particular library in non-free
 | 
			
		||||
programs enables a greater number of people to use a large body of
 | 
			
		||||
free software.  For example, permission to use the GNU C Library in
 | 
			
		||||
non-free programs enables many more people to use the whole GNU
 | 
			
		||||
operating system, as well as its variant, the GNU/Linux operating
 | 
			
		||||
system.
 | 
			
		||||
 | 
			
		||||
  Although the Lesser General Public License is Less protective of the
 | 
			
		||||
users' freedom, it does ensure that the user of a program that is
 | 
			
		||||
linked with the Library has the freedom and the wherewithal to run
 | 
			
		||||
that program using a modified version of the Library.
 | 
			
		||||
 | 
			
		||||
  The precise terms and conditions for copying, distribution and
 | 
			
		||||
modification follow.  Pay close attention to the difference between a
 | 
			
		||||
"work based on the library" and a "work that uses the library".  The
 | 
			
		||||
former contains code derived from the library, whereas the latter must
 | 
			
		||||
be combined with the library in order to run.
 | 
			
		||||
 | 
			
		||||
                  GNU LESSER GENERAL PUBLIC LICENSE
 | 
			
		||||
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 | 
			
		||||
 | 
			
		||||
  0. This License Agreement applies to any software library or other
 | 
			
		||||
program which contains a notice placed by the copyright holder or
 | 
			
		||||
other authorized party saying it may be distributed under the terms of
 | 
			
		||||
this Lesser General Public License (also called "this License").
 | 
			
		||||
Each licensee is addressed as "you".
 | 
			
		||||
 | 
			
		||||
  A "library" means a collection of software functions and/or data
 | 
			
		||||
prepared so as to be conveniently linked with application programs
 | 
			
		||||
(which use some of those functions and data) to form executables.
 | 
			
		||||
 | 
			
		||||
  The "Library", below, refers to any such software library or work
 | 
			
		||||
which has been distributed under these terms.  A "work based on the
 | 
			
		||||
Library" means either the Library or any derivative work under
 | 
			
		||||
copyright law: that is to say, a work containing the Library or a
 | 
			
		||||
portion of it, either verbatim or with modifications and/or translated
 | 
			
		||||
straightforwardly into another language.  (Hereinafter, translation is
 | 
			
		||||
included without limitation in the term "modification".)
 | 
			
		||||
 | 
			
		||||
  "Source code" for a work means the preferred form of the work for
 | 
			
		||||
making modifications to it.  For a library, complete source code means
 | 
			
		||||
all the source code for all modules it contains, plus any associated
 | 
			
		||||
interface definition files, plus the scripts used to control compilation
 | 
			
		||||
and installation of the library.
 | 
			
		||||
 | 
			
		||||
  Activities other than copying, distribution and modification are not
 | 
			
		||||
covered by this License; they are outside its scope.  The act of
 | 
			
		||||
running a program using the Library is not restricted, and output from
 | 
			
		||||
such a program is covered only if its contents constitute a work based
 | 
			
		||||
on the Library (independent of the use of the Library in a tool for
 | 
			
		||||
writing it).  Whether that is true depends on what the Library does
 | 
			
		||||
and what the program that uses the Library does.
 | 
			
		||||
 | 
			
		||||
  1. You may copy and distribute verbatim copies of the Library's
 | 
			
		||||
complete source code as you receive it, in any medium, provided that
 | 
			
		||||
you conspicuously and appropriately publish on each copy an
 | 
			
		||||
appropriate copyright notice and disclaimer of warranty; keep intact
 | 
			
		||||
all the notices that refer to this License and to the absence of any
 | 
			
		||||
warranty; and distribute a copy of this License along with the
 | 
			
		||||
Library.
 | 
			
		||||
 | 
			
		||||
  You may charge a fee for the physical act of transferring a copy,
 | 
			
		||||
and you may at your option offer warranty protection in exchange for a
 | 
			
		||||
fee.
 | 
			
		||||
 | 
			
		||||
  2. You may modify your copy or copies of the Library or any portion
 | 
			
		||||
of it, thus forming a work based on the Library, and copy and
 | 
			
		||||
distribute such modifications or work under the terms of Section 1
 | 
			
		||||
above, provided that you also meet all of these conditions:
 | 
			
		||||
 | 
			
		||||
    a) The modified work must itself be a software library.
 | 
			
		||||
 | 
			
		||||
    b) You must cause the files modified to carry prominent notices
 | 
			
		||||
    stating that you changed the files and the date of any change.
 | 
			
		||||
 | 
			
		||||
    c) You must cause the whole of the work to be licensed at no
 | 
			
		||||
    charge to all third parties under the terms of this License.
 | 
			
		||||
 | 
			
		||||
    d) If a facility in the modified Library refers to a function or a
 | 
			
		||||
    table of data to be supplied by an application program that uses
 | 
			
		||||
    the facility, other than as an argument passed when the facility
 | 
			
		||||
    is invoked, then you must make a good faith effort to ensure that,
 | 
			
		||||
    in the event an application does not supply such function or
 | 
			
		||||
    table, the facility still operates, and performs whatever part of
 | 
			
		||||
    its purpose remains meaningful.
 | 
			
		||||
 | 
			
		||||
    (For example, a function in a library to compute square roots has
 | 
			
		||||
    a purpose that is entirely well-defined independent of the
 | 
			
		||||
    application.  Therefore, Subsection 2d requires that any
 | 
			
		||||
    application-supplied function or table used by this function must
 | 
			
		||||
    be optional: if the application does not supply it, the square
 | 
			
		||||
    root function must still compute square roots.)
 | 
			
		||||
 | 
			
		||||
These requirements apply to the modified work as a whole.  If
 | 
			
		||||
identifiable sections of that work are not derived from the Library,
 | 
			
		||||
and can be reasonably considered independent and separate works in
 | 
			
		||||
themselves, then this License, and its terms, do not apply to those
 | 
			
		||||
sections when you distribute them as separate works.  But when you
 | 
			
		||||
distribute the same sections as part of a whole which is a work based
 | 
			
		||||
on the Library, the distribution of the whole must be on the terms of
 | 
			
		||||
this License, whose permissions for other licensees extend to the
 | 
			
		||||
entire whole, and thus to each and every part regardless of who wrote
 | 
			
		||||
it.
 | 
			
		||||
 | 
			
		||||
Thus, it is not the intent of this section to claim rights or contest
 | 
			
		||||
your rights to work written entirely by you; rather, the intent is to
 | 
			
		||||
exercise the right to control the distribution of derivative or
 | 
			
		||||
collective works based on the Library.
 | 
			
		||||
 | 
			
		||||
In addition, mere aggregation of another work not based on the Library
 | 
			
		||||
with the Library (or with a work based on the Library) on a volume of
 | 
			
		||||
a storage or distribution medium does not bring the other work under
 | 
			
		||||
the scope of this License.
 | 
			
		||||
 | 
			
		||||
  3. You may opt to apply the terms of the ordinary GNU General Public
 | 
			
		||||
License instead of this License to a given copy of the Library.  To do
 | 
			
		||||
this, you must alter all the notices that refer to this License, so
 | 
			
		||||
that they refer to the ordinary GNU General Public License, version 2,
 | 
			
		||||
instead of to this License.  (If a newer version than version 2 of the
 | 
			
		||||
ordinary GNU General Public License has appeared, then you can specify
 | 
			
		||||
that version instead if you wish.)  Do not make any other change in
 | 
			
		||||
these notices.
 | 
			
		||||
 | 
			
		||||
  Once this change is made in a given copy, it is irreversible for
 | 
			
		||||
that copy, so the ordinary GNU General Public License applies to all
 | 
			
		||||
subsequent copies and derivative works made from that copy.
 | 
			
		||||
 | 
			
		||||
  This option is useful when you wish to copy part of the code of
 | 
			
		||||
the Library into a program that is not a library.
 | 
			
		||||
 | 
			
		||||
  4. You may copy and distribute the Library (or a portion or
 | 
			
		||||
derivative of it, under Section 2) in object code or executable form
 | 
			
		||||
under the terms of Sections 1 and 2 above provided that you accompany
 | 
			
		||||
it with the complete corresponding machine-readable source code, which
 | 
			
		||||
must be distributed under the terms of Sections 1 and 2 above on a
 | 
			
		||||
medium customarily used for software interchange.
 | 
			
		||||
 | 
			
		||||
  If distribution of object code is made by offering access to copy
 | 
			
		||||
from a designated place, then offering equivalent access to copy the
 | 
			
		||||
source code from the same place satisfies the requirement to
 | 
			
		||||
distribute the source code, even though third parties are not
 | 
			
		||||
compelled to copy the source along with the object code.
 | 
			
		||||
 | 
			
		||||
  5. A program that contains no derivative of any portion of the
 | 
			
		||||
Library, but is designed to work with the Library by being compiled or
 | 
			
		||||
linked with it, is called a "work that uses the Library".  Such a
 | 
			
		||||
work, in isolation, is not a derivative work of the Library, and
 | 
			
		||||
therefore falls outside the scope of this License.
 | 
			
		||||
 | 
			
		||||
  However, linking a "work that uses the Library" with the Library
 | 
			
		||||
creates an executable that is a derivative of the Library (because it
 | 
			
		||||
contains portions of the Library), rather than a "work that uses the
 | 
			
		||||
library".  The executable is therefore covered by this License.
 | 
			
		||||
Section 6 states terms for distribution of such executables.
 | 
			
		||||
 | 
			
		||||
  When a "work that uses the Library" uses material from a header file
 | 
			
		||||
that is part of the Library, the object code for the work may be a
 | 
			
		||||
derivative work of the Library even though the source code is not.
 | 
			
		||||
Whether this is true is especially significant if the work can be
 | 
			
		||||
linked without the Library, or if the work is itself a library.  The
 | 
			
		||||
threshold for this to be true is not precisely defined by law.
 | 
			
		||||
 | 
			
		||||
  If such an object file uses only numerical parameters, data
 | 
			
		||||
structure layouts and accessors, and small macros and small inline
 | 
			
		||||
functions (ten lines or less in length), then the use of the object
 | 
			
		||||
file is unrestricted, regardless of whether it is legally a derivative
 | 
			
		||||
work.  (Executables containing this object code plus portions of the
 | 
			
		||||
Library will still fall under Section 6.)
 | 
			
		||||
 | 
			
		||||
  Otherwise, if the work is a derivative of the Library, you may
 | 
			
		||||
distribute the object code for the work under the terms of Section 6.
 | 
			
		||||
Any executables containing that work also fall under Section 6,
 | 
			
		||||
whether or not they are linked directly with the Library itself.
 | 
			
		||||
 | 
			
		||||
  6. As an exception to the Sections above, you may also combine or
 | 
			
		||||
link a "work that uses the Library" with the Library to produce a
 | 
			
		||||
work containing portions of the Library, and distribute that work
 | 
			
		||||
under terms of your choice, provided that the terms permit
 | 
			
		||||
modification of the work for the customer's own use and reverse
 | 
			
		||||
engineering for debugging such modifications.
 | 
			
		||||
 | 
			
		||||
  You must give prominent notice with each copy of the work that the
 | 
			
		||||
Library is used in it and that the Library and its use are covered by
 | 
			
		||||
this License.  You must supply a copy of this License.  If the work
 | 
			
		||||
during execution displays copyright notices, you must include the
 | 
			
		||||
copyright notice for the Library among them, as well as a reference
 | 
			
		||||
directing the user to the copy of this License.  Also, you must do one
 | 
			
		||||
of these things:
 | 
			
		||||
 | 
			
		||||
    a) Accompany the work with the complete corresponding
 | 
			
		||||
    machine-readable source code for the Library including whatever
 | 
			
		||||
    changes were used in the work (which must be distributed under
 | 
			
		||||
    Sections 1 and 2 above); and, if the work is an executable linked
 | 
			
		||||
    with the Library, with the complete machine-readable "work that
 | 
			
		||||
    uses the Library", as object code and/or source code, so that the
 | 
			
		||||
    user can modify the Library and then relink to produce a modified
 | 
			
		||||
    executable containing the modified Library.  (It is understood
 | 
			
		||||
    that the user who changes the contents of definitions files in the
 | 
			
		||||
    Library will not necessarily be able to recompile the application
 | 
			
		||||
    to use the modified definitions.)
 | 
			
		||||
 | 
			
		||||
    b) Use a suitable shared library mechanism for linking with the
 | 
			
		||||
    Library.  A suitable mechanism is one that (1) uses at run time a
 | 
			
		||||
    copy of the library already present on the user's computer system,
 | 
			
		||||
    rather than copying library functions into the executable, and (2)
 | 
			
		||||
    will operate properly with a modified version of the library, if
 | 
			
		||||
    the user installs one, as long as the modified version is
 | 
			
		||||
    interface-compatible with the version that the work was made with.
 | 
			
		||||
 | 
			
		||||
    c) Accompany the work with a written offer, valid for at
 | 
			
		||||
    least three years, to give the same user the materials
 | 
			
		||||
    specified in Subsection 6a, above, for a charge no more
 | 
			
		||||
    than the cost of performing this distribution.
 | 
			
		||||
 | 
			
		||||
    d) If distribution of the work is made by offering access to copy
 | 
			
		||||
    from a designated place, offer equivalent access to copy the above
 | 
			
		||||
    specified materials from the same place.
 | 
			
		||||
 | 
			
		||||
    e) Verify that the user has already received a copy of these
 | 
			
		||||
    materials or that you have already sent this user a copy.
 | 
			
		||||
 | 
			
		||||
  For an executable, the required form of the "work that uses the
 | 
			
		||||
Library" must include any data and utility programs needed for
 | 
			
		||||
reproducing the executable from it.  However, as a special exception,
 | 
			
		||||
the materials to be distributed need not include anything that is
 | 
			
		||||
normally distributed (in either source or binary form) with the major
 | 
			
		||||
components (compiler, kernel, and so on) of the operating system on
 | 
			
		||||
which the executable runs, unless that component itself accompanies
 | 
			
		||||
the executable.
 | 
			
		||||
 | 
			
		||||
  It may happen that this requirement contradicts the license
 | 
			
		||||
restrictions of other proprietary libraries that do not normally
 | 
			
		||||
accompany the operating system.  Such a contradiction means you cannot
 | 
			
		||||
use both them and the Library together in an executable that you
 | 
			
		||||
distribute.
 | 
			
		||||
 | 
			
		||||
  7. You may place library facilities that are a work based on the
 | 
			
		||||
Library side-by-side in a single library together with other library
 | 
			
		||||
facilities not covered by this License, and distribute such a combined
 | 
			
		||||
library, provided that the separate distribution of the work based on
 | 
			
		||||
the Library and of the other library facilities is otherwise
 | 
			
		||||
permitted, and provided that you do these two things:
 | 
			
		||||
 | 
			
		||||
    a) Accompany the combined library with a copy of the same work
 | 
			
		||||
    based on the Library, uncombined with any other library
 | 
			
		||||
    facilities.  This must be distributed under the terms of the
 | 
			
		||||
    Sections above.
 | 
			
		||||
 | 
			
		||||
    b) Give prominent notice with the combined library of the fact
 | 
			
		||||
    that part of it is a work based on the Library, and explaining
 | 
			
		||||
    where to find the accompanying uncombined form of the same work.
 | 
			
		||||
 | 
			
		||||
  8. You may not copy, modify, sublicense, link with, or distribute
 | 
			
		||||
the Library except as expressly provided under this License.  Any
 | 
			
		||||
attempt otherwise to copy, modify, sublicense, link with, or
 | 
			
		||||
distribute the Library is void, and will automatically terminate your
 | 
			
		||||
rights under this License.  However, parties who have received copies,
 | 
			
		||||
or rights, from you under this License will not have their licenses
 | 
			
		||||
terminated so long as such parties remain in full compliance.
 | 
			
		||||
 | 
			
		||||
  9. You are not required to accept this License, since you have not
 | 
			
		||||
signed it.  However, nothing else grants you permission to modify or
 | 
			
		||||
distribute the Library or its derivative works.  These actions are
 | 
			
		||||
prohibited by law if you do not accept this License.  Therefore, by
 | 
			
		||||
modifying or distributing the Library (or any work based on the
 | 
			
		||||
Library), you indicate your acceptance of this License to do so, and
 | 
			
		||||
all its terms and conditions for copying, distributing or modifying
 | 
			
		||||
the Library or works based on it.
 | 
			
		||||
 | 
			
		||||
  10. Each time you redistribute the Library (or any work based on the
 | 
			
		||||
Library), the recipient automatically receives a license from the
 | 
			
		||||
original licensor to copy, distribute, link with or modify the Library
 | 
			
		||||
subject to these terms and conditions.  You may not impose any further
 | 
			
		||||
restrictions on the recipients' exercise of the rights granted herein.
 | 
			
		||||
You are not responsible for enforcing compliance by third parties with
 | 
			
		||||
this License.
 | 
			
		||||
 | 
			
		||||
  11. If, as a consequence of a court judgment or allegation of patent
 | 
			
		||||
infringement or for any other reason (not limited to patent issues),
 | 
			
		||||
conditions are imposed on you (whether by court order, agreement or
 | 
			
		||||
otherwise) that contradict the conditions of this License, they do not
 | 
			
		||||
excuse you from the conditions of this License.  If you cannot
 | 
			
		||||
distribute so as to satisfy simultaneously your obligations under this
 | 
			
		||||
License and any other pertinent obligations, then as a consequence you
 | 
			
		||||
may not distribute the Library at all.  For example, if a patent
 | 
			
		||||
license would not permit royalty-free redistribution of the Library by
 | 
			
		||||
all those who receive copies directly or indirectly through you, then
 | 
			
		||||
the only way you could satisfy both it and this License would be to
 | 
			
		||||
refrain entirely from distribution of the Library.
 | 
			
		||||
 | 
			
		||||
If any portion of this section is held invalid or unenforceable under any
 | 
			
		||||
particular circumstance, the balance of the section is intended to apply,
 | 
			
		||||
and the section as a whole is intended to apply in other circumstances.
 | 
			
		||||
 | 
			
		||||
It is not the purpose of this section to induce you to infringe any
 | 
			
		||||
patents or other property right claims or to contest validity of any
 | 
			
		||||
such claims; this section has the sole purpose of protecting the
 | 
			
		||||
integrity of the free software distribution system which is
 | 
			
		||||
implemented by public license practices.  Many people have made
 | 
			
		||||
generous contributions to the wide range of software distributed
 | 
			
		||||
through that system in reliance on consistent application of that
 | 
			
		||||
system; it is up to the author/donor to decide if he or she is willing
 | 
			
		||||
to distribute software through any other system and a licensee cannot
 | 
			
		||||
impose that choice.
 | 
			
		||||
 | 
			
		||||
This section is intended to make thoroughly clear what is believed to
 | 
			
		||||
be a consequence of the rest of this License.
 | 
			
		||||
 | 
			
		||||
  12. If the distribution and/or use of the Library is restricted in
 | 
			
		||||
certain countries either by patents or by copyrighted interfaces, the
 | 
			
		||||
original copyright holder who places the Library under this License may add
 | 
			
		||||
an explicit geographical distribution limitation excluding those countries,
 | 
			
		||||
so that distribution is permitted only in or among countries not thus
 | 
			
		||||
excluded.  In such case, this License incorporates the limitation as if
 | 
			
		||||
written in the body of this License.
 | 
			
		||||
 | 
			
		||||
  13. The Free Software Foundation may publish revised and/or new
 | 
			
		||||
versions of the Lesser General Public License from time to time.
 | 
			
		||||
Such new versions will be similar in spirit to the present version,
 | 
			
		||||
but may differ in detail to address new problems or concerns.
 | 
			
		||||
 | 
			
		||||
Each version is given a distinguishing version number.  If the Library
 | 
			
		||||
specifies a version number of this License which applies to it and
 | 
			
		||||
"any later version", you have the option of following the terms and
 | 
			
		||||
conditions either of that version or of any later version published by
 | 
			
		||||
the Free Software Foundation.  If the Library does not specify a
 | 
			
		||||
license version number, you may choose any version ever published by
 | 
			
		||||
the Free Software Foundation.
 | 
			
		||||
 | 
			
		||||
  14. If you wish to incorporate parts of the Library into other free
 | 
			
		||||
programs whose distribution conditions are incompatible with these,
 | 
			
		||||
write to the author to ask for permission.  For software which is
 | 
			
		||||
copyrighted by the Free Software Foundation, write to the Free
 | 
			
		||||
Software Foundation; we sometimes make exceptions for this.  Our
 | 
			
		||||
decision will be guided by the two goals of preserving the free status
 | 
			
		||||
of all derivatives of our free software and of promoting the sharing
 | 
			
		||||
and reuse of software generally.
 | 
			
		||||
 | 
			
		||||
                            NO WARRANTY
 | 
			
		||||
 | 
			
		||||
  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
 | 
			
		||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
 | 
			
		||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
 | 
			
		||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
 | 
			
		||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 | 
			
		||||
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
 | 
			
		||||
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
 | 
			
		||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
 | 
			
		||||
 | 
			
		||||
  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
 | 
			
		||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
 | 
			
		||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
 | 
			
		||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
 | 
			
		||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
 | 
			
		||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
 | 
			
		||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
 | 
			
		||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
 | 
			
		||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
 | 
			
		||||
DAMAGES.
 | 
			
		||||
 | 
			
		||||
                     END OF TERMS AND CONDITIONS
 | 
			
		||||
 | 
			
		||||
           How to Apply These Terms to Your New Libraries
 | 
			
		||||
 | 
			
		||||
  If you develop a new library, and you want it to be of the greatest
 | 
			
		||||
possible use to the public, we recommend making it free software that
 | 
			
		||||
everyone can redistribute and change.  You can do so by permitting
 | 
			
		||||
redistribution under these terms (or, alternatively, under the terms of the
 | 
			
		||||
ordinary General Public License).
 | 
			
		||||
 | 
			
		||||
  To apply these terms, attach the following notices to the library.  It is
 | 
			
		||||
safest to attach them to the start of each source file to most effectively
 | 
			
		||||
convey the exclusion of warranty; and each file should have at least the
 | 
			
		||||
"copyright" line and a pointer to where the full notice is found.
 | 
			
		||||
 | 
			
		||||
    <one line to give the library's name and a brief idea of what it does.>
 | 
			
		||||
    Copyright (C) <year>  <name of author>
 | 
			
		||||
 | 
			
		||||
    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, write to the Free Software
 | 
			
		||||
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 | 
			
		||||
 | 
			
		||||
Also add information on how to contact you by electronic and paper mail.
 | 
			
		||||
 | 
			
		||||
You should also get your employer (if you work as a programmer) or your
 | 
			
		||||
school, if any, to sign a "copyright disclaimer" for the library, if
 | 
			
		||||
necessary.  Here is a sample; alter the names:
 | 
			
		||||
 | 
			
		||||
  Yoyodyne, Inc., hereby disclaims all copyright interest in the
 | 
			
		||||
  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
 | 
			
		||||
 | 
			
		||||
  <signature of Ty Coon>, 1 April 1990
 | 
			
		||||
  Ty Coon, President of Vice
 | 
			
		||||
 | 
			
		||||
That's all there is to it!
 | 
			
		||||
							
								
								
									
										508
									
								
								COPYING.LIB
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										508
									
								
								COPYING.LIB
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,508 @@
 | 
			
		||||
 | 
			
		||||
                  GNU LESSER GENERAL PUBLIC LICENSE
 | 
			
		||||
                       Version 2.1, February 1999
 | 
			
		||||
 | 
			
		||||
 Copyright (C) 1991, 1999 Free Software Foundation, Inc.
 | 
			
		||||
     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
			
		||||
 Everyone is permitted to copy and distribute verbatim copies
 | 
			
		||||
 of this license document, but changing it is not allowed.
 | 
			
		||||
 | 
			
		||||
[This is the first released version of the Lesser GPL.  It also counts
 | 
			
		||||
 as the successor of the GNU Library Public License, version 2, hence
 | 
			
		||||
 the version number 2.1.]
 | 
			
		||||
 | 
			
		||||
                            Preamble
 | 
			
		||||
 | 
			
		||||
  The licenses for most software are designed to take away your
 | 
			
		||||
freedom to share and change it.  By contrast, the GNU General Public
 | 
			
		||||
Licenses are intended to guarantee your freedom to share and change
 | 
			
		||||
free software--to make sure the software is free for all its users.
 | 
			
		||||
 | 
			
		||||
  This license, the Lesser General Public License, applies to some
 | 
			
		||||
specially designated software packages--typically libraries--of the
 | 
			
		||||
Free Software Foundation and other authors who decide to use it.  You
 | 
			
		||||
can use it too, but we suggest you first think carefully about whether
 | 
			
		||||
this license or the ordinary General Public License is the better
 | 
			
		||||
strategy to use in any particular case, based on the explanations
 | 
			
		||||
below.
 | 
			
		||||
 | 
			
		||||
  When we speak of free software, we are referring to freedom of use,
 | 
			
		||||
not price.  Our General Public Licenses are designed to make sure that
 | 
			
		||||
you have the freedom to distribute copies of free software (and charge
 | 
			
		||||
for this service if you wish); that you receive source code or can get
 | 
			
		||||
it if you want it; that you can change the software and use pieces of
 | 
			
		||||
it in new free programs; and that you are informed that you can do
 | 
			
		||||
these things.
 | 
			
		||||
 | 
			
		||||
  To protect your rights, we need to make restrictions that forbid
 | 
			
		||||
distributors to deny you these rights or to ask you to surrender these
 | 
			
		||||
rights.  These restrictions translate to certain responsibilities for
 | 
			
		||||
you if you distribute copies of the library or if you modify it.
 | 
			
		||||
 | 
			
		||||
  For example, if you distribute copies of the library, whether gratis
 | 
			
		||||
or for a fee, you must give the recipients all the rights that we gave
 | 
			
		||||
you.  You must make sure that they, too, receive or can get the source
 | 
			
		||||
code.  If you link other code with the library, you must provide
 | 
			
		||||
complete object files to the recipients, so that they can relink them
 | 
			
		||||
with the library after making changes to the library and recompiling
 | 
			
		||||
it.  And you must show them these terms so they know their rights.
 | 
			
		||||
 | 
			
		||||
  We protect your rights with a two-step method: (1) we copyright the
 | 
			
		||||
library, and (2) we offer you this license, which gives you legal
 | 
			
		||||
permission to copy, distribute and/or modify the library.
 | 
			
		||||
 | 
			
		||||
  To protect each distributor, we want to make it very clear that
 | 
			
		||||
there is no warranty for the free library.  Also, if the library is
 | 
			
		||||
modified by someone else and passed on, the recipients should know
 | 
			
		||||
that what they have is not the original version, so that the original
 | 
			
		||||
author's reputation will not be affected by problems that might be
 | 
			
		||||
introduced by others.
 | 
			
		||||
^L
 | 
			
		||||
  Finally, software patents pose a constant threat to the existence of
 | 
			
		||||
any free program.  We wish to make sure that a company cannot
 | 
			
		||||
effectively restrict the users of a free program by obtaining a
 | 
			
		||||
restrictive license from a patent holder.  Therefore, we insist that
 | 
			
		||||
any patent license obtained for a version of the library must be
 | 
			
		||||
consistent with the full freedom of use specified in this license.
 | 
			
		||||
 | 
			
		||||
  Most GNU software, including some libraries, is covered by the
 | 
			
		||||
ordinary GNU General Public License.  This license, the GNU Lesser
 | 
			
		||||
General Public License, applies to certain designated libraries, and
 | 
			
		||||
is quite different from the ordinary General Public License.  We use
 | 
			
		||||
this license for certain libraries in order to permit linking those
 | 
			
		||||
libraries into non-free programs.
 | 
			
		||||
 | 
			
		||||
  When a program is linked with a library, whether statically or using
 | 
			
		||||
a shared library, the combination of the two is legally speaking a
 | 
			
		||||
combined work, a derivative of the original library.  The ordinary
 | 
			
		||||
General Public License therefore permits such linking only if the
 | 
			
		||||
entire combination fits its criteria of freedom.  The Lesser General
 | 
			
		||||
Public License permits more lax criteria for linking other code with
 | 
			
		||||
the library.
 | 
			
		||||
 | 
			
		||||
  We call this license the "Lesser" General Public License because it
 | 
			
		||||
does Less to protect the user's freedom than the ordinary General
 | 
			
		||||
Public License.  It also provides other free software developers Less
 | 
			
		||||
of an advantage over competing non-free programs.  These disadvantages
 | 
			
		||||
are the reason we use the ordinary General Public License for many
 | 
			
		||||
libraries.  However, the Lesser license provides advantages in certain
 | 
			
		||||
special circumstances.
 | 
			
		||||
 | 
			
		||||
  For example, on rare occasions, there may be a special need to
 | 
			
		||||
encourage the widest possible use of a certain library, so that it
 | 
			
		||||
becomes a de-facto standard.  To achieve this, non-free programs must
 | 
			
		||||
be allowed to use the library.  A more frequent case is that a free
 | 
			
		||||
library does the same job as widely used non-free libraries.  In this
 | 
			
		||||
case, there is little to gain by limiting the free library to free
 | 
			
		||||
software only, so we use the Lesser General Public License.
 | 
			
		||||
 | 
			
		||||
  In other cases, permission to use a particular library in non-free
 | 
			
		||||
programs enables a greater number of people to use a large body of
 | 
			
		||||
free software.  For example, permission to use the GNU C Library in
 | 
			
		||||
non-free programs enables many more people to use the whole GNU
 | 
			
		||||
operating system, as well as its variant, the GNU/Linux operating
 | 
			
		||||
system.
 | 
			
		||||
 | 
			
		||||
  Although the Lesser General Public License is Less protective of the
 | 
			
		||||
users' freedom, it does ensure that the user of a program that is
 | 
			
		||||
linked with the Library has the freedom and the wherewithal to run
 | 
			
		||||
that program using a modified version of the Library.
 | 
			
		||||
 | 
			
		||||
  The precise terms and conditions for copying, distribution and
 | 
			
		||||
modification follow.  Pay close attention to the difference between a
 | 
			
		||||
"work based on the library" and a "work that uses the library".  The
 | 
			
		||||
former contains code derived from the library, whereas the latter must
 | 
			
		||||
be combined with the library in order to run.
 | 
			
		||||
^L
 | 
			
		||||
                  GNU LESSER GENERAL PUBLIC LICENSE
 | 
			
		||||
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 | 
			
		||||
 | 
			
		||||
  0. This License Agreement applies to any software library or other
 | 
			
		||||
program which contains a notice placed by the copyright holder or
 | 
			
		||||
other authorized party saying it may be distributed under the terms of
 | 
			
		||||
this Lesser General Public License (also called "this License").
 | 
			
		||||
Each licensee is addressed as "you".
 | 
			
		||||
 | 
			
		||||
  A "library" means a collection of software functions and/or data
 | 
			
		||||
prepared so as to be conveniently linked with application programs
 | 
			
		||||
(which use some of those functions and data) to form executables.
 | 
			
		||||
 | 
			
		||||
  The "Library", below, refers to any such software library or work
 | 
			
		||||
which has been distributed under these terms.  A "work based on the
 | 
			
		||||
Library" means either the Library or any derivative work under
 | 
			
		||||
copyright law: that is to say, a work containing the Library or a
 | 
			
		||||
portion of it, either verbatim or with modifications and/or translated
 | 
			
		||||
straightforwardly into another language.  (Hereinafter, translation is
 | 
			
		||||
included without limitation in the term "modification".)
 | 
			
		||||
 | 
			
		||||
  "Source code" for a work means the preferred form of the work for
 | 
			
		||||
making modifications to it.  For a library, complete source code means
 | 
			
		||||
all the source code for all modules it contains, plus any associated
 | 
			
		||||
interface definition files, plus the scripts used to control
 | 
			
		||||
compilation and installation of the library.
 | 
			
		||||
 | 
			
		||||
  Activities other than copying, distribution and modification are not
 | 
			
		||||
covered by this License; they are outside its scope.  The act of
 | 
			
		||||
running a program using the Library is not restricted, and output from
 | 
			
		||||
such a program is covered only if its contents constitute a work based
 | 
			
		||||
on the Library (independent of the use of the Library in a tool for
 | 
			
		||||
writing it).  Whether that is true depends on what the Library does
 | 
			
		||||
and what the program that uses the Library does.
 | 
			
		||||
 | 
			
		||||
  1. You may copy and distribute verbatim copies of the Library's
 | 
			
		||||
complete source code as you receive it, in any medium, provided that
 | 
			
		||||
you conspicuously and appropriately publish on each copy an
 | 
			
		||||
appropriate copyright notice and disclaimer of warranty; keep intact
 | 
			
		||||
all the notices that refer to this License and to the absence of any
 | 
			
		||||
warranty; and distribute a copy of this License along with the
 | 
			
		||||
Library.
 | 
			
		||||
 | 
			
		||||
  You may charge a fee for the physical act of transferring a copy,
 | 
			
		||||
and you may at your option offer warranty protection in exchange for a
 | 
			
		||||
fee.
 | 
			
		||||
 | 
			
		||||
  2. You may modify your copy or copies of the Library or any portion
 | 
			
		||||
of it, thus forming a work based on the Library, and copy and
 | 
			
		||||
distribute such modifications or work under the terms of Section 1
 | 
			
		||||
above, provided that you also meet all of these conditions:
 | 
			
		||||
 | 
			
		||||
    a) The modified work must itself be a software library.
 | 
			
		||||
 | 
			
		||||
    b) You must cause the files modified to carry prominent notices
 | 
			
		||||
    stating that you changed the files and the date of any change.
 | 
			
		||||
 | 
			
		||||
    c) You must cause the whole of the work to be licensed at no
 | 
			
		||||
    charge to all third parties under the terms of this License.
 | 
			
		||||
 | 
			
		||||
    d) If a facility in the modified Library refers to a function or a
 | 
			
		||||
    table of data to be supplied by an application program that uses
 | 
			
		||||
    the facility, other than as an argument passed when the facility
 | 
			
		||||
    is invoked, then you must make a good faith effort to ensure that,
 | 
			
		||||
    in the event an application does not supply such function or
 | 
			
		||||
    table, the facility still operates, and performs whatever part of
 | 
			
		||||
    its purpose remains meaningful.
 | 
			
		||||
 | 
			
		||||
    (For example, a function in a library to compute square roots has
 | 
			
		||||
    a purpose that is entirely well-defined independent of the
 | 
			
		||||
    application.  Therefore, Subsection 2d requires that any
 | 
			
		||||
    application-supplied function or table used by this function must
 | 
			
		||||
    be optional: if the application does not supply it, the square
 | 
			
		||||
    root function must still compute square roots.)
 | 
			
		||||
 | 
			
		||||
These requirements apply to the modified work as a whole.  If
 | 
			
		||||
identifiable sections of that work are not derived from the Library,
 | 
			
		||||
and can be reasonably considered independent and separate works in
 | 
			
		||||
themselves, then this License, and its terms, do not apply to those
 | 
			
		||||
sections when you distribute them as separate works.  But when you
 | 
			
		||||
distribute the same sections as part of a whole which is a work based
 | 
			
		||||
on the Library, the distribution of the whole must be on the terms of
 | 
			
		||||
this License, whose permissions for other licensees extend to the
 | 
			
		||||
entire whole, and thus to each and every part regardless of who wrote
 | 
			
		||||
it.
 | 
			
		||||
 | 
			
		||||
Thus, it is not the intent of this section to claim rights or contest
 | 
			
		||||
your rights to work written entirely by you; rather, the intent is to
 | 
			
		||||
exercise the right to control the distribution of derivative or
 | 
			
		||||
collective works based on the Library.
 | 
			
		||||
 | 
			
		||||
In addition, mere aggregation of another work not based on the Library
 | 
			
		||||
with the Library (or with a work based on the Library) on a volume of
 | 
			
		||||
a storage or distribution medium does not bring the other work under
 | 
			
		||||
the scope of this License.
 | 
			
		||||
 | 
			
		||||
  3. You may opt to apply the terms of the ordinary GNU General Public
 | 
			
		||||
License instead of this License to a given copy of the Library.  To do
 | 
			
		||||
this, you must alter all the notices that refer to this License, so
 | 
			
		||||
that they refer to the ordinary GNU General Public License, version 2,
 | 
			
		||||
instead of to this License.  (If a newer version than version 2 of the
 | 
			
		||||
ordinary GNU General Public License has appeared, then you can specify
 | 
			
		||||
that version instead if you wish.)  Do not make any other change in
 | 
			
		||||
these notices.
 | 
			
		||||
^L
 | 
			
		||||
  Once this change is made in a given copy, it is irreversible for
 | 
			
		||||
that copy, so the ordinary GNU General Public License applies to all
 | 
			
		||||
subsequent copies and derivative works made from that copy.
 | 
			
		||||
 | 
			
		||||
  This option is useful when you wish to copy part of the code of
 | 
			
		||||
the Library into a program that is not a library.
 | 
			
		||||
 | 
			
		||||
  4. You may copy and distribute the Library (or a portion or
 | 
			
		||||
derivative of it, under Section 2) in object code or executable form
 | 
			
		||||
under the terms of Sections 1 and 2 above provided that you accompany
 | 
			
		||||
it with the complete corresponding machine-readable source code, which
 | 
			
		||||
must be distributed under the terms of Sections 1 and 2 above on a
 | 
			
		||||
medium customarily used for software interchange.
 | 
			
		||||
 | 
			
		||||
  If distribution of object code is made by offering access to copy
 | 
			
		||||
from a designated place, then offering equivalent access to copy the
 | 
			
		||||
source code from the same place satisfies the requirement to
 | 
			
		||||
distribute the source code, even though third parties are not
 | 
			
		||||
compelled to copy the source along with the object code.
 | 
			
		||||
 | 
			
		||||
  5. A program that contains no derivative of any portion of the
 | 
			
		||||
Library, but is designed to work with the Library by being compiled or
 | 
			
		||||
linked with it, is called a "work that uses the Library".  Such a
 | 
			
		||||
work, in isolation, is not a derivative work of the Library, and
 | 
			
		||||
therefore falls outside the scope of this License.
 | 
			
		||||
 | 
			
		||||
  However, linking a "work that uses the Library" with the Library
 | 
			
		||||
creates an executable that is a derivative of the Library (because it
 | 
			
		||||
contains portions of the Library), rather than a "work that uses the
 | 
			
		||||
library".  The executable is therefore covered by this License.
 | 
			
		||||
Section 6 states terms for distribution of such executables.
 | 
			
		||||
 | 
			
		||||
  When a "work that uses the Library" uses material from a header file
 | 
			
		||||
that is part of the Library, the object code for the work may be a
 | 
			
		||||
derivative work of the Library even though the source code is not.
 | 
			
		||||
Whether this is true is especially significant if the work can be
 | 
			
		||||
linked without the Library, or if the work is itself a library.  The
 | 
			
		||||
threshold for this to be true is not precisely defined by law.
 | 
			
		||||
 | 
			
		||||
  If such an object file uses only numerical parameters, data
 | 
			
		||||
structure layouts and accessors, and small macros and small inline
 | 
			
		||||
functions (ten lines or less in length), then the use of the object
 | 
			
		||||
file is unrestricted, regardless of whether it is legally a derivative
 | 
			
		||||
work.  (Executables containing this object code plus portions of the
 | 
			
		||||
Library will still fall under Section 6.)
 | 
			
		||||
 | 
			
		||||
  Otherwise, if the work is a derivative of the Library, you may
 | 
			
		||||
distribute the object code for the work under the terms of Section 6.
 | 
			
		||||
Any executables containing that work also fall under Section 6,
 | 
			
		||||
whether or not they are linked directly with the Library itself.
 | 
			
		||||
^L
 | 
			
		||||
  6. As an exception to the Sections above, you may also combine or
 | 
			
		||||
link a "work that uses the Library" with the Library to produce a
 | 
			
		||||
work containing portions of the Library, and distribute that work
 | 
			
		||||
under terms of your choice, provided that the terms permit
 | 
			
		||||
modification of the work for the customer's own use and reverse
 | 
			
		||||
engineering for debugging such modifications.
 | 
			
		||||
 | 
			
		||||
  You must give prominent notice with each copy of the work that the
 | 
			
		||||
Library is used in it and that the Library and its use are covered by
 | 
			
		||||
this License.  You must supply a copy of this License.  If the work
 | 
			
		||||
during execution displays copyright notices, you must include the
 | 
			
		||||
copyright notice for the Library among them, as well as a reference
 | 
			
		||||
directing the user to the copy of this License.  Also, you must do one
 | 
			
		||||
of these things:
 | 
			
		||||
 | 
			
		||||
    a) Accompany the work with the complete corresponding
 | 
			
		||||
    machine-readable source code for the Library including whatever
 | 
			
		||||
    changes were used in the work (which must be distributed under
 | 
			
		||||
    Sections 1 and 2 above); and, if the work is an executable linked
 | 
			
		||||
    with the Library, with the complete machine-readable "work that
 | 
			
		||||
    uses the Library", as object code and/or source code, so that the
 | 
			
		||||
    user can modify the Library and then relink to produce a modified
 | 
			
		||||
    executable containing the modified Library.  (It is understood
 | 
			
		||||
    that the user who changes the contents of definitions files in the
 | 
			
		||||
    Library will not necessarily be able to recompile the application
 | 
			
		||||
    to use the modified definitions.)
 | 
			
		||||
 | 
			
		||||
    b) Use a suitable shared library mechanism for linking with the
 | 
			
		||||
    Library.  A suitable mechanism is one that (1) uses at run time a
 | 
			
		||||
    copy of the library already present on the user's computer system,
 | 
			
		||||
    rather than copying library functions into the executable, and (2)
 | 
			
		||||
    will operate properly with a modified version of the library, if
 | 
			
		||||
    the user installs one, as long as the modified version is
 | 
			
		||||
    interface-compatible with the version that the work was made with.
 | 
			
		||||
 | 
			
		||||
    c) Accompany the work with a written offer, valid for at least
 | 
			
		||||
    three years, to give the same user the materials specified in
 | 
			
		||||
    Subsection 6a, above, for a charge no more than the cost of
 | 
			
		||||
    performing this distribution.
 | 
			
		||||
 | 
			
		||||
    d) If distribution of the work is made by offering access to copy
 | 
			
		||||
    from a designated place, offer equivalent access to copy the above
 | 
			
		||||
    specified materials from the same place.
 | 
			
		||||
 | 
			
		||||
    e) Verify that the user has already received a copy of these
 | 
			
		||||
    materials or that you have already sent this user a copy.
 | 
			
		||||
 | 
			
		||||
  For an executable, the required form of the "work that uses the
 | 
			
		||||
Library" must include any data and utility programs needed for
 | 
			
		||||
reproducing the executable from it.  However, as a special exception,
 | 
			
		||||
the materials to be distributed need not include anything that is
 | 
			
		||||
normally distributed (in either source or binary form) with the major
 | 
			
		||||
components (compiler, kernel, and so on) of the operating system on
 | 
			
		||||
which the executable runs, unless that component itself accompanies
 | 
			
		||||
the executable.
 | 
			
		||||
 | 
			
		||||
  It may happen that this requirement contradicts the license
 | 
			
		||||
restrictions of other proprietary libraries that do not normally
 | 
			
		||||
accompany the operating system.  Such a contradiction means you cannot
 | 
			
		||||
use both them and the Library together in an executable that you
 | 
			
		||||
distribute.
 | 
			
		||||
^L
 | 
			
		||||
  7. You may place library facilities that are a work based on the
 | 
			
		||||
Library side-by-side in a single library together with other library
 | 
			
		||||
facilities not covered by this License, and distribute such a combined
 | 
			
		||||
library, provided that the separate distribution of the work based on
 | 
			
		||||
the Library and of the other library facilities is otherwise
 | 
			
		||||
permitted, and provided that you do these two things:
 | 
			
		||||
 | 
			
		||||
    a) Accompany the combined library with a copy of the same work
 | 
			
		||||
    based on the Library, uncombined with any other library
 | 
			
		||||
    facilities.  This must be distributed under the terms of the
 | 
			
		||||
    Sections above.
 | 
			
		||||
 | 
			
		||||
    b) Give prominent notice with the combined library of the fact
 | 
			
		||||
    that part of it is a work based on the Library, and explaining
 | 
			
		||||
    where to find the accompanying uncombined form of the same work.
 | 
			
		||||
 | 
			
		||||
  8. You may not copy, modify, sublicense, link with, or distribute
 | 
			
		||||
the Library except as expressly provided under this License.  Any
 | 
			
		||||
attempt otherwise to copy, modify, sublicense, link with, or
 | 
			
		||||
distribute the Library is void, and will automatically terminate your
 | 
			
		||||
rights under this License.  However, parties who have received copies,
 | 
			
		||||
or rights, from you under this License will not have their licenses
 | 
			
		||||
terminated so long as such parties remain in full compliance.
 | 
			
		||||
 | 
			
		||||
  9. You are not required to accept this License, since you have not
 | 
			
		||||
signed it.  However, nothing else grants you permission to modify or
 | 
			
		||||
distribute the Library or its derivative works.  These actions are
 | 
			
		||||
prohibited by law if you do not accept this License.  Therefore, by
 | 
			
		||||
modifying or distributing the Library (or any work based on the
 | 
			
		||||
Library), you indicate your acceptance of this License to do so, and
 | 
			
		||||
all its terms and conditions for copying, distributing or modifying
 | 
			
		||||
the Library or works based on it.
 | 
			
		||||
 | 
			
		||||
  10. Each time you redistribute the Library (or any work based on the
 | 
			
		||||
Library), the recipient automatically receives a license from the
 | 
			
		||||
original licensor to copy, distribute, link with or modify the Library
 | 
			
		||||
subject to these terms and conditions.  You may not impose any further
 | 
			
		||||
restrictions on the recipients' exercise of the rights granted herein.
 | 
			
		||||
You are not responsible for enforcing compliance by third parties with
 | 
			
		||||
this License.
 | 
			
		||||
^L
 | 
			
		||||
  11. If, as a consequence of a court judgment or allegation of patent
 | 
			
		||||
infringement or for any other reason (not limited to patent issues),
 | 
			
		||||
conditions are imposed on you (whether by court order, agreement or
 | 
			
		||||
otherwise) that contradict the conditions of this License, they do not
 | 
			
		||||
excuse you from the conditions of this License.  If you cannot
 | 
			
		||||
distribute so as to satisfy simultaneously your obligations under this
 | 
			
		||||
License and any other pertinent obligations, then as a consequence you
 | 
			
		||||
may not distribute the Library at all.  For example, if a patent
 | 
			
		||||
license would not permit royalty-free redistribution of the Library by
 | 
			
		||||
all those who receive copies directly or indirectly through you, then
 | 
			
		||||
the only way you could satisfy both it and this License would be to
 | 
			
		||||
refrain entirely from distribution of the Library.
 | 
			
		||||
 | 
			
		||||
If any portion of this section is held invalid or unenforceable under
 | 
			
		||||
any particular circumstance, the balance of the section is intended to
 | 
			
		||||
apply, and the section as a whole is intended to apply in other
 | 
			
		||||
circumstances.
 | 
			
		||||
 | 
			
		||||
It is not the purpose of this section to induce you to infringe any
 | 
			
		||||
patents or other property right claims or to contest validity of any
 | 
			
		||||
such claims; this section has the sole purpose of protecting the
 | 
			
		||||
integrity of the free software distribution system which is
 | 
			
		||||
implemented by public license practices.  Many people have made
 | 
			
		||||
generous contributions to the wide range of software distributed
 | 
			
		||||
through that system in reliance on consistent application of that
 | 
			
		||||
system; it is up to the author/donor to decide if he or she is willing
 | 
			
		||||
to distribute software through any other system and a licensee cannot
 | 
			
		||||
impose that choice.
 | 
			
		||||
 | 
			
		||||
This section is intended to make thoroughly clear what is believed to
 | 
			
		||||
be a consequence of the rest of this License.
 | 
			
		||||
 | 
			
		||||
  12. If the distribution and/or use of the Library is restricted in
 | 
			
		||||
certain countries either by patents or by copyrighted interfaces, the
 | 
			
		||||
original copyright holder who places the Library under this License
 | 
			
		||||
may add an explicit geographical distribution limitation excluding those
 | 
			
		||||
countries, so that distribution is permitted only in or among
 | 
			
		||||
countries not thus excluded.  In such case, this License incorporates
 | 
			
		||||
the limitation as if written in the body of this License.
 | 
			
		||||
 | 
			
		||||
  13. The Free Software Foundation may publish revised and/or new
 | 
			
		||||
versions of the Lesser General Public License from time to time.
 | 
			
		||||
Such new versions will be similar in spirit to the present version,
 | 
			
		||||
but may differ in detail to address new problems or concerns.
 | 
			
		||||
 | 
			
		||||
Each version is given a distinguishing version number.  If the Library
 | 
			
		||||
specifies a version number of this License which applies to it and
 | 
			
		||||
"any later version", you have the option of following the terms and
 | 
			
		||||
conditions either of that version or of any later version published by
 | 
			
		||||
the Free Software Foundation.  If the Library does not specify a
 | 
			
		||||
license version number, you may choose any version ever published by
 | 
			
		||||
the Free Software Foundation.
 | 
			
		||||
^L
 | 
			
		||||
  14. If you wish to incorporate parts of the Library into other free
 | 
			
		||||
programs whose distribution conditions are incompatible with these,
 | 
			
		||||
write to the author to ask for permission.  For software which is
 | 
			
		||||
copyrighted by the Free Software Foundation, write to the Free
 | 
			
		||||
Software Foundation; we sometimes make exceptions for this.  Our
 | 
			
		||||
decision will be guided by the two goals of preserving the free status
 | 
			
		||||
of all derivatives of our free software and of promoting the sharing
 | 
			
		||||
and reuse of software generally.
 | 
			
		||||
 | 
			
		||||
                            NO WARRANTY
 | 
			
		||||
 | 
			
		||||
  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
 | 
			
		||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
 | 
			
		||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
 | 
			
		||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
 | 
			
		||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 | 
			
		||||
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
 | 
			
		||||
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
 | 
			
		||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
 | 
			
		||||
 | 
			
		||||
  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
 | 
			
		||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
 | 
			
		||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
 | 
			
		||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
 | 
			
		||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
 | 
			
		||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
 | 
			
		||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
 | 
			
		||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
 | 
			
		||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
 | 
			
		||||
DAMAGES.
 | 
			
		||||
 | 
			
		||||
                     END OF TERMS AND CONDITIONS
 | 
			
		||||
^L
 | 
			
		||||
           How to Apply These Terms to Your New Libraries
 | 
			
		||||
 | 
			
		||||
  If you develop a new library, and you want it to be of the greatest
 | 
			
		||||
possible use to the public, we recommend making it free software that
 | 
			
		||||
everyone can redistribute and change.  You can do so by permitting
 | 
			
		||||
redistribution under these terms (or, alternatively, under the terms
 | 
			
		||||
of the ordinary General Public License).
 | 
			
		||||
 | 
			
		||||
  To apply these terms, attach the following notices to the library.
 | 
			
		||||
It is safest to attach them to the start of each source file to most
 | 
			
		||||
effectively convey the exclusion of warranty; and each file should
 | 
			
		||||
have at least the "copyright" line and a pointer to where the full
 | 
			
		||||
notice is found.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    <one line to give the library's name and a brief idea of what it does.>
 | 
			
		||||
    Copyright (C) <year>  <name of author>
 | 
			
		||||
 | 
			
		||||
    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, write to the Free Software
 | 
			
		||||
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
 | 
			
		||||
 | 
			
		||||
Also add information on how to contact you by electronic and paper mail.
 | 
			
		||||
 | 
			
		||||
You should also get your employer (if you work as a programmer) or
 | 
			
		||||
your school, if any, to sign a "copyright disclaimer" for the library,
 | 
			
		||||
if necessary.  Here is a sample; alter the names:
 | 
			
		||||
 | 
			
		||||
  Yoyodyne, Inc., hereby disclaims all copyright interest in the
 | 
			
		||||
  library `Frob' (a library for tweaking knobs) written by James
 | 
			
		||||
  Random Hacker.
 | 
			
		||||
 | 
			
		||||
  <signature of Ty Coon>, 1 April 1990
 | 
			
		||||
  Ty Coon, President of Vice
 | 
			
		||||
 | 
			
		||||
That's all there is to it!
 | 
			
		||||
							
								
								
									
										16699
									
								
								ChangeLog-old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16699
									
								
								ChangeLog-old
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										815
									
								
								HACKING
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										815
									
								
								HACKING
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,815 @@
 | 
			
		||||
-*- buffer-read-only: t -*- vi: set ro:
 | 
			
		||||
DO NOT EDIT THIS FILE!  IT IS GENERATED AUTOMATICALLY
 | 
			
		||||
from docs/hacking.html.in!
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                         Contributor guidelines
 | 
			
		||||
                         ======================
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
General tips for contributing patches
 | 
			
		||||
=====================================
 | 
			
		||||
(1) Discuss any large changes on the mailing list first. Post patches early and
 | 
			
		||||
listen to feedback.
 | 
			
		||||
 | 
			
		||||
(2) Post patches in unified diff format, with git rename detection enabled. You
 | 
			
		||||
need a one-time setup of:
 | 
			
		||||
 | 
			
		||||
  git config diff.renames true
 | 
			
		||||
 | 
			
		||||
After that, a command similar to this should work:
 | 
			
		||||
 | 
			
		||||
  diff -urp libvirt.orig/ libvirt.modified/ > libvirt-myfeature.patch
 | 
			
		||||
 | 
			
		||||
or:
 | 
			
		||||
 | 
			
		||||
  git diff > libvirt-myfeature.patch
 | 
			
		||||
 | 
			
		||||
Also, for code motion patches, you may find that "git diff --patience"
 | 
			
		||||
provides an easier-to-read patch. However, the usual workflow of libvirt
 | 
			
		||||
developer is:
 | 
			
		||||
 | 
			
		||||
  git checkout master
 | 
			
		||||
  git pull
 | 
			
		||||
  git checkout -t origin -b workbranch
 | 
			
		||||
  Hack, committing any changes along the way
 | 
			
		||||
 | 
			
		||||
Then, when you want to post your patches:
 | 
			
		||||
 | 
			
		||||
  git pull --rebase
 | 
			
		||||
  (fix any conflicts)
 | 
			
		||||
  git send-email --cover-letter --no-chain-reply-to --annotate \
 | 
			
		||||
                 --to=libvir-list@redhat.com master
 | 
			
		||||
 | 
			
		||||
(Note that the "git send-email" subcommand may not be in the main git package
 | 
			
		||||
and using it may require installion of a separate package, for example the
 | 
			
		||||
"git-email" package in Fedora.) For a single patch you can omit
 | 
			
		||||
"--cover-letter", but a series of two or more patches needs a cover letter. If
 | 
			
		||||
you get tired of typing "--to=libvir-list@redhat.com" designation you can set
 | 
			
		||||
it in git config:
 | 
			
		||||
 | 
			
		||||
  git config sendemail.to libvir-list@redhat.com
 | 
			
		||||
 | 
			
		||||
Please follow this as close as you can, especially the rebase and git
 | 
			
		||||
send-email part, as it makes life easier for other developers to review your
 | 
			
		||||
patch set. One should avoid sending patches as attachments, but rather send
 | 
			
		||||
them in email body along with commit message. If a developer is sending
 | 
			
		||||
another version of the patch (e.g. to address review comments), he is advised
 | 
			
		||||
to note differences to previous versions after the "---" line in the patch so
 | 
			
		||||
that it helps reviewers but doesn't become part of git history. Moreover, such
 | 
			
		||||
patch needs to be prefixed correctly with "--subject-prefix=PATCHv2" appended
 | 
			
		||||
to "git send-email" (substitute "v2" with the correct version if needed
 | 
			
		||||
though).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
(3) In your commit message, make the summary line reasonably short (60 characters
 | 
			
		||||
is typical), followed by a blank line, followed by any longer description of
 | 
			
		||||
why your patch makes sense. If the patch fixes a regression, and you know what
 | 
			
		||||
commit introduced the problem, mentioning that is useful. If the patch
 | 
			
		||||
resolves a bugzilla report, mentioning the URL of the bug number is useful;
 | 
			
		||||
but also summarize the issue rather than making all readers follow the link.
 | 
			
		||||
You can use 'git shortlog -30' to get an idea of typical summary lines.
 | 
			
		||||
Libvirt does not currently attach any meaning to Signed-off-by: lines, so it
 | 
			
		||||
is up to you if you want to include or omit them in the commit message.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
(4) Split large changes into a series of smaller patches, self-contained if
 | 
			
		||||
possible, with an explanation of each patch and an explanation of how the
 | 
			
		||||
sequence of patches fits together. Moreover, please keep in mind that it's
 | 
			
		||||
required to be able to compile cleanly (*including* "make check" and "make
 | 
			
		||||
syntax-check") after each patch. A feature does not have to work until the end
 | 
			
		||||
of a series, but intermediate patches must compile and not cause test-suite
 | 
			
		||||
failures (this is to preserve the usefulness of "git bisect", among other
 | 
			
		||||
things).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
(5) Make sure your patches apply against libvirt GIT. Developers only follow GIT
 | 
			
		||||
and don't care much about released versions.
 | 
			
		||||
 | 
			
		||||
(6) Run the automated tests on your code before submitting any changes. In
 | 
			
		||||
particular, configure with compile warnings set to -Werror. This is done
 | 
			
		||||
automatically for a git checkout; from a tarball, use:
 | 
			
		||||
 | 
			
		||||
  ./configure --enable-werror
 | 
			
		||||
 | 
			
		||||
and run the tests:
 | 
			
		||||
 | 
			
		||||
  make check
 | 
			
		||||
  make syntax-check
 | 
			
		||||
  make -C tests valgrind
 | 
			
		||||
 | 
			
		||||
The latter test checks for memory leaks.
 | 
			
		||||
 | 
			
		||||
If you encounter any failing tests, the VIR_TEST_DEBUG environment variable
 | 
			
		||||
may provide extra information to debug the failures. Larger values of
 | 
			
		||||
VIR_TEST_DEBUG may provide larger amounts of information:
 | 
			
		||||
 | 
			
		||||
  VIR_TEST_DEBUG=1 make check    (or)
 | 
			
		||||
  VIR_TEST_DEBUG=2 make check
 | 
			
		||||
 | 
			
		||||
Also, individual tests can be run from inside the "tests/" directory, like:
 | 
			
		||||
 | 
			
		||||
  ./qemuxml2xmltest
 | 
			
		||||
 | 
			
		||||
There is also a "./run" script at the top level, to make it easier to run
 | 
			
		||||
programs that have not yet been installed, as well as to wrap invocations of
 | 
			
		||||
various tests under gdb or valgrind.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
(7) Update tests and/or documentation, particularly if you are adding a new
 | 
			
		||||
feature or changing the output of a program.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
There is more on this subject, including lots of links to background reading
 | 
			
		||||
on the subject, on
 | 
			
		||||
 | 
			
		||||
  Richard Jones' guide to working with open source projects
 | 
			
		||||
  http://et.redhat.com/~rjones/how-to-supply-code-to-open-source-projects/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Code indentation
 | 
			
		||||
================
 | 
			
		||||
Libvirt's C source code generally adheres to some basic code-formatting
 | 
			
		||||
conventions. The existing code base is not totally consistent on this front,
 | 
			
		||||
but we do prefer that contributed code be formatted similarly. In short, use
 | 
			
		||||
spaces-not-TABs for indentation, use 4 spaces for each indentation level, and
 | 
			
		||||
other than that, follow the K&R style.
 | 
			
		||||
 | 
			
		||||
If you use Emacs, add the following to one of one of your start-up files
 | 
			
		||||
(e.g., ~/.emacs), to help ensure that you get indentation right:
 | 
			
		||||
 | 
			
		||||
  ;;; When editing C sources in libvirt, use this style.
 | 
			
		||||
  (defun libvirt-c-mode ()
 | 
			
		||||
    "C mode with adjusted defaults for use with libvirt."
 | 
			
		||||
    (interactive)
 | 
			
		||||
    (c-set-style "K&R")
 | 
			
		||||
    (setq indent-tabs-mode nil) ; indent using spaces, not TABs
 | 
			
		||||
    (setq c-indent-level 4)
 | 
			
		||||
    (setq c-basic-offset 4))
 | 
			
		||||
  (add-hook 'c-mode-hook
 | 
			
		||||
            '(lambda () (if (string-match "/libvirt" (buffer-file-name))
 | 
			
		||||
                            (libvirt-c-mode))))
 | 
			
		||||
 | 
			
		||||
If you use vim, append the following to your ~/.vimrc file:
 | 
			
		||||
 | 
			
		||||
  set nocompatible
 | 
			
		||||
  filetype on
 | 
			
		||||
  set autoindent
 | 
			
		||||
  set smartindent
 | 
			
		||||
  set cindent
 | 
			
		||||
  set tabstop=8
 | 
			
		||||
  set shiftwidth=4
 | 
			
		||||
  set expandtab
 | 
			
		||||
  set cinoptions=(0,:0,l1,t0
 | 
			
		||||
  filetype plugin indent on
 | 
			
		||||
  au FileType make setlocal noexpandtab
 | 
			
		||||
  au BufRead,BufNewFile *.am setlocal noexpandtab
 | 
			
		||||
  match ErrorMsg /\s\+$\| \+\ze\t/
 | 
			
		||||
 | 
			
		||||
Or if you don't want to mess your ~/.vimrc up, you can save the above into a
 | 
			
		||||
file called .lvimrc (not .vimrc) located at the root of libvirt source, then
 | 
			
		||||
install a vim script from
 | 
			
		||||
http://www.vim.org/scripts/script.php?script_id=1408, which will load the
 | 
			
		||||
.lvimrc only when you edit libvirt code.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Code formatting (especially for new code)
 | 
			
		||||
=========================================
 | 
			
		||||
With new code, we can be even more strict. Please apply the following function
 | 
			
		||||
(using GNU indent) to any new code. Note that this also gives you an idea of
 | 
			
		||||
the type of spacing we prefer around operators and keywords:
 | 
			
		||||
 | 
			
		||||
  indent-libvirt()
 | 
			
		||||
  {
 | 
			
		||||
    indent -bad -bap -bbb -bli4 -br -ce -brs -cs -i4 -l75 -lc75 \
 | 
			
		||||
      -sbi4 -psl -saf -sai -saw -sbi4 -ss -sc -cdw -cli4 -npcs -nbc \
 | 
			
		||||
      --no-tabs "$@"
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
Note that sometimes you'll have to post-process that output further, by piping
 | 
			
		||||
it through "expand -i", since some leading TABs can get through. Usually
 | 
			
		||||
they're in macro definitions or strings, and should be converted anyhow.
 | 
			
		||||
 | 
			
		||||
Libvirt requires a C99 compiler for various reasons. However, most of the code
 | 
			
		||||
base prefers to stick to C89 syntax unless there is a compelling reason
 | 
			
		||||
otherwise. For example, it is preferable to use "/* */" comments rather than
 | 
			
		||||
"//". Also, when declaring local variables, the prevailing style has been to
 | 
			
		||||
declare them at the beginning of a scope, rather than immediately before use.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Bracket spacing
 | 
			
		||||
===============
 | 
			
		||||
The keywords "if", "for", "while", and "switch" must have a single space
 | 
			
		||||
following them before the opening bracket. E.g.
 | 
			
		||||
 | 
			
		||||
      if(foo)   // Bad
 | 
			
		||||
      if (foo)  // Good
 | 
			
		||||
 | 
			
		||||
Function implementations mustnothave any whitespace between the function name and the opening bracket. E.g.
 | 
			
		||||
 | 
			
		||||
      int foo (int wizz)  // Bad
 | 
			
		||||
      int foo(int wizz)   // Good
 | 
			
		||||
 | 
			
		||||
Function calls mustnothave any whitespace between the function name and the opening bracket. E.g.
 | 
			
		||||
 | 
			
		||||
      bar = foo (wizz);  // Bad
 | 
			
		||||
      bar = foo(wizz);   // Good
 | 
			
		||||
 | 
			
		||||
Function typedefs mustnothave any whitespace between the closing bracket of the function name and
 | 
			
		||||
opening bracket of the arg list. E.g.
 | 
			
		||||
 | 
			
		||||
      typedef int (*foo) (int wizz);  // Bad
 | 
			
		||||
      typedef int (*foo)(int wizz);   // Good
 | 
			
		||||
 | 
			
		||||
There must not be any whitespace immediately following any opening bracket, or
 | 
			
		||||
immediately prior to any closing bracket. E.g.
 | 
			
		||||
 | 
			
		||||
      int foo( int wizz );  // Bad
 | 
			
		||||
      int foo(int wizz);    // Good
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Curly braces
 | 
			
		||||
============
 | 
			
		||||
Omit the curly braces around an "if", "while", "for" etc. body only when that
 | 
			
		||||
body occupies a single line. In every other case we require the braces. This
 | 
			
		||||
ensures that it is trivially easy to identify a single-'statement' loop: each
 | 
			
		||||
has only one 'line' in its body.
 | 
			
		||||
 | 
			
		||||
Omitting braces with a single-line body is fine:
 | 
			
		||||
 | 
			
		||||
  while (expr) // one-line body -> omitting curly braces is ok
 | 
			
		||||
      single_line_stmt();
 | 
			
		||||
 | 
			
		||||
However, the moment your loop/if/else body extends onto a second line, for
 | 
			
		||||
whatever reason (even if it's just an added comment), then you should add
 | 
			
		||||
braces. Otherwise, it would be too easy to insert a statement just before that
 | 
			
		||||
comment (without adding braces), thinking it is already a multi-statement loop:
 | 
			
		||||
 | 
			
		||||
  while (true) // BAD! multi-line body with no braces
 | 
			
		||||
      /* comment... */
 | 
			
		||||
      single_line_stmt();
 | 
			
		||||
 | 
			
		||||
Do this instead:
 | 
			
		||||
 | 
			
		||||
  while (true) { // Always put braces around a multi-line body.
 | 
			
		||||
      /* comment... */
 | 
			
		||||
      single_line_stmt();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
There is one exception: when the second body line is not at the same
 | 
			
		||||
indentation level as the first body line:
 | 
			
		||||
 | 
			
		||||
  if (expr)
 | 
			
		||||
      die("a diagnostic that would make this line"
 | 
			
		||||
          " extend past the 80-column limit"));
 | 
			
		||||
 | 
			
		||||
It is safe to omit the braces in the code above, since the further-indented
 | 
			
		||||
second body line makes it obvious that this is still a single-statement body.
 | 
			
		||||
 | 
			
		||||
To reiterate, don't do this:
 | 
			
		||||
 | 
			
		||||
  if (expr)            // BAD: no braces around...
 | 
			
		||||
      while (expr_2) { // ... a multi-line body
 | 
			
		||||
          ...
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
Do this, instead:
 | 
			
		||||
 | 
			
		||||
  if (expr) {
 | 
			
		||||
      while (expr_2) {
 | 
			
		||||
          ...
 | 
			
		||||
      }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
However, there is one exception in the other direction, when even a one-line
 | 
			
		||||
block should have braces. That occurs when that one-line, brace-less block is
 | 
			
		||||
an "if" or "else" block, and the counterpart block *does* use braces. In that
 | 
			
		||||
case, put braces around both blocks. Also, if the "else" block is much shorter
 | 
			
		||||
than the "if" block, consider negating the "if"-condition and swapping the
 | 
			
		||||
bodies, putting the short block first and making the longer, multi-line block
 | 
			
		||||
be the "else" block.
 | 
			
		||||
 | 
			
		||||
  if (expr) {
 | 
			
		||||
      ...
 | 
			
		||||
      ...
 | 
			
		||||
  }
 | 
			
		||||
  else
 | 
			
		||||
      x = y;    // BAD: braceless "else" with braced "then",
 | 
			
		||||
                // and short block last
 | 
			
		||||
 | 
			
		||||
  if (expr)
 | 
			
		||||
      x = y;    // BAD: braceless "if" with braced "else"
 | 
			
		||||
  else {
 | 
			
		||||
      ...
 | 
			
		||||
      ...
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
Keeping braces consistent and putting the short block first is preferred,
 | 
			
		||||
especially when the multi-line body is more than a few lines long, because it
 | 
			
		||||
is easier to read and grasp the semantics of an if-then-else block when the
 | 
			
		||||
simpler block occurs first, rather than after the more involved block:
 | 
			
		||||
 | 
			
		||||
  if (!expr) {
 | 
			
		||||
    x = y; // putting the smaller block first is more readable
 | 
			
		||||
  } else {
 | 
			
		||||
      ...
 | 
			
		||||
      ...
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
But if negating a complex condition is too ugly, then at least add braces:
 | 
			
		||||
 | 
			
		||||
  if (complex expr not worth negating) {
 | 
			
		||||
      ...
 | 
			
		||||
      ...
 | 
			
		||||
  } else {
 | 
			
		||||
      x = y;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Preprocessor
 | 
			
		||||
============
 | 
			
		||||
For variadic macros, stick with C99 syntax:
 | 
			
		||||
 | 
			
		||||
  #define vshPrint(_ctl, ...) fprintf(stdout, __VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
Use parenthesis when checking if a macro is defined, and use indentation to
 | 
			
		||||
track nesting:
 | 
			
		||||
 | 
			
		||||
  #if defined(HAVE_POSIX_FALLOCATE) && !defined(HAVE_FALLOCATE)
 | 
			
		||||
  # define fallocate(a,ignored,b,c) posix_fallocate(a,b,c)
 | 
			
		||||
  #endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
C types
 | 
			
		||||
=======
 | 
			
		||||
Use the right type.
 | 
			
		||||
 | 
			
		||||
Scalars
 | 
			
		||||
-------
 | 
			
		||||
- If you're using "int" or "long", odds are good that there's a better type.
 | 
			
		||||
 | 
			
		||||
- If a variable is counting something, be sure to declare it with an unsigned
 | 
			
		||||
type.
 | 
			
		||||
 | 
			
		||||
- If it's memory-size-related, use "size_t" (use "ssize_t" only if required).
 | 
			
		||||
 | 
			
		||||
- If it's file-size related, use uintmax_t, or maybe "off_t".
 | 
			
		||||
 | 
			
		||||
- If it's file-offset related (i.e., signed), use "off_t".
 | 
			
		||||
 | 
			
		||||
- If it's just counting small numbers use "unsigned int"; (on all but oddball
 | 
			
		||||
embedded systems, you can assume that that type is at least four bytes wide).
 | 
			
		||||
 | 
			
		||||
- If a variable has boolean semantics, give it the "bool" type and use the
 | 
			
		||||
corresponding "true" and "false" macros. It's ok to include <stdbool.h>, since
 | 
			
		||||
libvirt's use of gnulib ensures that it exists and is usable.
 | 
			
		||||
 | 
			
		||||
- In the unusual event that you require a specific width, use a standard type
 | 
			
		||||
like "int32_t", "uint32_t", "uint64_t", etc.
 | 
			
		||||
 | 
			
		||||
- While using "bool" is good for readability, it comes with minor caveats:
 | 
			
		||||
 | 
			
		||||
-- Don't use "bool" in places where the type size must be constant across all
 | 
			
		||||
systems, like public interfaces and on-the-wire protocols. Note that it would
 | 
			
		||||
be possible (albeit wasteful) to use "bool" in libvirt's logical wire
 | 
			
		||||
protocol, since XDR maps that to its lower-level "bool_t" type, which *is*
 | 
			
		||||
fixed-size.
 | 
			
		||||
 | 
			
		||||
-- Don't compare a bool variable against the literal, "true", since a value with
 | 
			
		||||
a logical non-false value need not be "1". I.e., don't write "if (seen ==
 | 
			
		||||
true) ...". Rather, write "if (seen)...".
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Of course, take all of the above with a grain of salt. If you're about to use
 | 
			
		||||
some system interface that requires a type like "size_t", "pid_t" or "off_t",
 | 
			
		||||
use matching types for any corresponding variables.
 | 
			
		||||
 | 
			
		||||
Also, if you try to use e.g., "unsigned int" as a type, and that conflicts
 | 
			
		||||
with the signedness of a related variable, sometimes it's best just to use the
 | 
			
		||||
*wrong* type, if 'pulling the thread' and fixing all related variables would
 | 
			
		||||
be too invasive.
 | 
			
		||||
 | 
			
		||||
Finally, while using descriptive types is important, be careful not to go
 | 
			
		||||
overboard. If whatever you're doing causes warnings, or requires casts, then
 | 
			
		||||
reconsider or ask for help.
 | 
			
		||||
 | 
			
		||||
Pointers
 | 
			
		||||
--------
 | 
			
		||||
Ensure that all of your pointers are 'const-correct'. Unless a pointer is used
 | 
			
		||||
to modify the pointed-to storage, give it the "const" attribute. That way, the
 | 
			
		||||
reader knows up-front that this is a read-only pointer. Perhaps more
 | 
			
		||||
importantly, if we're diligent about this, when you see a non-const pointer,
 | 
			
		||||
you're guaranteed that it is used to modify the storage it points to, or it is
 | 
			
		||||
aliased to another pointer that is.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Low level memory management
 | 
			
		||||
===========================
 | 
			
		||||
Use of the malloc/free/realloc/calloc APIs is deprecated in the libvirt
 | 
			
		||||
codebase, because they encourage a number of serious coding bugs and do not
 | 
			
		||||
enable compile time verification of checks for NULL. Instead of these
 | 
			
		||||
routines, use the macros from memory.h.
 | 
			
		||||
 | 
			
		||||
- To allocate a single object:
 | 
			
		||||
 | 
			
		||||
  virDomainPtr domain;
 | 
			
		||||
 | 
			
		||||
  if (VIR_ALLOC(domain) < 0) {
 | 
			
		||||
      virReportOOMError();
 | 
			
		||||
      return NULL;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- To allocate an array of objects:
 | 
			
		||||
 | 
			
		||||
  virDomainPtr domains;
 | 
			
		||||
  size_t ndomains = 10;
 | 
			
		||||
 | 
			
		||||
  if (VIR_ALLOC_N(domains, ndomains) < 0) {
 | 
			
		||||
      virReportOOMError();
 | 
			
		||||
      return NULL;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- To allocate an array of object pointers:
 | 
			
		||||
 | 
			
		||||
  virDomainPtr *domains;
 | 
			
		||||
  size_t ndomains = 10;
 | 
			
		||||
 | 
			
		||||
  if (VIR_ALLOC_N(domains, ndomains) < 0) {
 | 
			
		||||
      virReportOOMError();
 | 
			
		||||
      return NULL;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- To re-allocate the array of domains to be 1 element longer (however, note that
 | 
			
		||||
repeatedly expanding an array by 1 scales quadratically, so this is
 | 
			
		||||
recommended only for smaller arrays):
 | 
			
		||||
 | 
			
		||||
  virDomainPtr domains;
 | 
			
		||||
  size_t ndomains = 0;
 | 
			
		||||
 | 
			
		||||
  if (VIR_EXPAND_N(domains, ndomains, 1) < 0) {
 | 
			
		||||
      virReportOOMError();
 | 
			
		||||
      return NULL;
 | 
			
		||||
  }
 | 
			
		||||
  domains[ndomains - 1] = domain;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- To ensure an array has room to hold at least one more element (this approach
 | 
			
		||||
scales better, but requires tracking allocation separately from usage)
 | 
			
		||||
 | 
			
		||||
  virDomainPtr domains;
 | 
			
		||||
  size_t ndomains = 0;
 | 
			
		||||
  size_t ndomains_max = 0;
 | 
			
		||||
 | 
			
		||||
  if (VIR_RESIZE_N(domains, ndomains_max, ndomains, 1) < 0) {
 | 
			
		||||
      virReportOOMError();
 | 
			
		||||
      return NULL;
 | 
			
		||||
  }
 | 
			
		||||
  domains[ndomains++] = domain;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- To trim an array of domains from its allocated size down to the actual used
 | 
			
		||||
size:
 | 
			
		||||
 | 
			
		||||
  virDomainPtr domains;
 | 
			
		||||
  size_t ndomains = x;
 | 
			
		||||
  size_t ndomains_max = y;
 | 
			
		||||
 | 
			
		||||
  VIR_SHRINK_N(domains, ndomains_max, ndomains_max - ndomains);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- To free an array of domains:
 | 
			
		||||
 | 
			
		||||
  virDomainPtr domains;
 | 
			
		||||
  size_t ndomains = x;
 | 
			
		||||
  size_t ndomains_max = y;
 | 
			
		||||
  size_t i;
 | 
			
		||||
 | 
			
		||||
  for (i = 0; i < ndomains; i++)
 | 
			
		||||
      VIR_FREE(domains[i]);
 | 
			
		||||
  VIR_FREE(domains);
 | 
			
		||||
  ndomains_max = ndomains = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
File handling
 | 
			
		||||
=============
 | 
			
		||||
Usage of the "fdopen()", "close()", "fclose()" APIs is deprecated in libvirt
 | 
			
		||||
code base to help avoiding double-closing of files or file descriptors, which
 | 
			
		||||
is particularly dangerous in a multi-threaded application. Instead of these
 | 
			
		||||
APIs, use the macros from virfile.h
 | 
			
		||||
 | 
			
		||||
- Open a file from a file descriptor:
 | 
			
		||||
 | 
			
		||||
  if ((file = VIR_FDOPEN(fd, "r")) == NULL) {
 | 
			
		||||
      virReportSystemError(errno, "%s",
 | 
			
		||||
                           _("failed to open file from file descriptor"));
 | 
			
		||||
      return -1;
 | 
			
		||||
  }
 | 
			
		||||
  /* fd is now invalid; only access the file using file variable */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- Close a file descriptor:
 | 
			
		||||
 | 
			
		||||
  if (VIR_CLOSE(fd) < 0) {
 | 
			
		||||
      virReportSystemError(errno, "%s", _("failed to close file"));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- Close a file:
 | 
			
		||||
 | 
			
		||||
  if (VIR_FCLOSE(file) < 0) {
 | 
			
		||||
      virReportSystemError(errno, "%s", _("failed to close file"));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- Close a file or file descriptor in an error path, without losing the previous
 | 
			
		||||
"errno" value:
 | 
			
		||||
 | 
			
		||||
  VIR_FORCE_CLOSE(fd);
 | 
			
		||||
  VIR_FORCE_FCLOSE(file);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
String comparisons
 | 
			
		||||
==================
 | 
			
		||||
Do not use the strcmp, strncmp, etc functions directly. Instead use one of the
 | 
			
		||||
following semantically named macros
 | 
			
		||||
 | 
			
		||||
- For strict equality:
 | 
			
		||||
 | 
			
		||||
  STREQ(a,b)
 | 
			
		||||
  STRNEQ(a,b)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- For case insensitive equality:
 | 
			
		||||
 | 
			
		||||
  STRCASEEQ(a,b)
 | 
			
		||||
  STRCASENEQ(a,b)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- For strict equality of a substring:
 | 
			
		||||
 | 
			
		||||
  STREQLEN(a,b,n)
 | 
			
		||||
  STRNEQLEN(a,b,n)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- For case insensitive equality of a substring:
 | 
			
		||||
 | 
			
		||||
  STRCASEEQLEN(a,b,n)
 | 
			
		||||
  STRCASENEQLEN(a,b,n)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- For strict equality of a prefix:
 | 
			
		||||
 | 
			
		||||
  STRPREFIX(a,b)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- To avoid having to check if a or b are NULL:
 | 
			
		||||
 | 
			
		||||
  STREQ_NULLABLE(a, b)
 | 
			
		||||
  STRNEQ_NULLABLE(a, b)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
String copying
 | 
			
		||||
==============
 | 
			
		||||
Do not use the strncpy function. According to the man page, it does *not*
 | 
			
		||||
guarantee a NULL-terminated buffer, which makes it extremely dangerous to use.
 | 
			
		||||
Instead, use one of the functionally equivalent functions:
 | 
			
		||||
 | 
			
		||||
  virStrncpy(char *dest, const char *src, size_t n, size_t destbytes)
 | 
			
		||||
 | 
			
		||||
The first three arguments have the same meaning as for strncpy; namely the
 | 
			
		||||
destination, source, and number of bytes to copy, respectively. The last
 | 
			
		||||
argument is the number of bytes available in the destination string; if a copy
 | 
			
		||||
of the source string (including a \0) will not fit into the destination, no
 | 
			
		||||
bytes are copied and the routine returns NULL. Otherwise, n bytes from the
 | 
			
		||||
source are copied into the destination and a trailing \0 is appended.
 | 
			
		||||
 | 
			
		||||
  virStrcpy(char *dest, const char *src, size_t destbytes)
 | 
			
		||||
 | 
			
		||||
Use this variant if you know you want to copy the entire src string into dest.
 | 
			
		||||
Note that this is a macro, so arguments could be evaluated more than once.
 | 
			
		||||
This is equivalent to virStrncpy(dest, src, strlen(src), destbytes)
 | 
			
		||||
 | 
			
		||||
  virStrcpyStatic(char *dest, const char *src)
 | 
			
		||||
 | 
			
		||||
Use this variant if you know you want to copy the entire src string into dest
 | 
			
		||||
*and* you know that your destination string is a static string (i.e. that
 | 
			
		||||
sizeof(dest) returns something meaningful). Note that this is a macro, so
 | 
			
		||||
arguments could be evaluated more than once. This is equivalent to
 | 
			
		||||
virStrncpy(dest, src, strlen(src), sizeof(dest)).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Variable length string buffer
 | 
			
		||||
=============================
 | 
			
		||||
If there is a need for complex string concatenations, avoid using the usual
 | 
			
		||||
sequence of malloc/strcpy/strcat/snprintf functions and make use of the
 | 
			
		||||
virBuffer API described in buf.h
 | 
			
		||||
 | 
			
		||||
Typical usage is as follows:
 | 
			
		||||
 | 
			
		||||
  char *
 | 
			
		||||
  somefunction(...)
 | 
			
		||||
  {
 | 
			
		||||
     virBuffer buf = VIR_BUFFER_INITIALIZER;
 | 
			
		||||
 | 
			
		||||
     ...
 | 
			
		||||
 | 
			
		||||
     virBufferAddLit(&buf, "<domain>\n");
 | 
			
		||||
     virBufferAsprintf(&buf, "  <memory>%d</memory>\n", memory);
 | 
			
		||||
     ...
 | 
			
		||||
     virBufferAddLit(&buf, "</domain>\n");
 | 
			
		||||
 | 
			
		||||
     ...
 | 
			
		||||
 | 
			
		||||
     if (virBufferError(&buf)) {
 | 
			
		||||
         virBufferFreeAndReset(&buf);
 | 
			
		||||
         virReportOOMError();
 | 
			
		||||
         return NULL;
 | 
			
		||||
     }
 | 
			
		||||
 | 
			
		||||
     return virBufferContentAndReset(&buf);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Include files
 | 
			
		||||
=============
 | 
			
		||||
There are now quite a large number of include files, both libvirt internal and
 | 
			
		||||
external, and system includes. To manage all this complexity it's best to
 | 
			
		||||
stick to the following general plan for all *.c source files:
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * Copyright notice
 | 
			
		||||
   * ....
 | 
			
		||||
   * ....
 | 
			
		||||
   * ....
 | 
			
		||||
   *
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  #include <config.h>             Must come first in every file.
 | 
			
		||||
 | 
			
		||||
  #include <stdio.h>              Any system includes you need.
 | 
			
		||||
  #include <string.h>
 | 
			
		||||
  #include <limits.h>
 | 
			
		||||
 | 
			
		||||
  #if WITH_NUMACTL                Some system includes aren't supported
 | 
			
		||||
  # include <numa.h>              everywhere so need these #if guards.
 | 
			
		||||
  #endif
 | 
			
		||||
 | 
			
		||||
  #include "internal.h"           Include this first, after system includes.
 | 
			
		||||
 | 
			
		||||
  #include "util.h"               Any libvirt internal header files.
 | 
			
		||||
  #include "buf.h"
 | 
			
		||||
 | 
			
		||||
  static int
 | 
			
		||||
  myInternalFunc()                The actual code.
 | 
			
		||||
  {
 | 
			
		||||
      ...
 | 
			
		||||
 | 
			
		||||
Of particular note: *Do not* include libvirt/libvirt.h or libvirt/virterror.h.
 | 
			
		||||
It is included by "internal.h" already and there are some special reasons why
 | 
			
		||||
you cannot include these files explicitly.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Printf-style functions
 | 
			
		||||
======================
 | 
			
		||||
Whenever you add a new printf-style function, i.e., one with a format string
 | 
			
		||||
argument and following "..." in its prototype, be sure to use gcc's printf
 | 
			
		||||
attribute directive in the prototype. For example, here's the one for
 | 
			
		||||
virAsprintf, in util.h:
 | 
			
		||||
 | 
			
		||||
  int virAsprintf(char **strp, const char *fmt, ...)
 | 
			
		||||
      ATTRIBUTE_FORMAT(printf, 2, 3);
 | 
			
		||||
 | 
			
		||||
This makes it so gcc's -Wformat and -Wformat-security options can do their
 | 
			
		||||
jobs and cross-check format strings with the number and types of arguments.
 | 
			
		||||
 | 
			
		||||
When printing to a string, consider using virBuffer for incremental
 | 
			
		||||
allocations, virAsprintf for a one-shot allocation, and snprintf for
 | 
			
		||||
fixed-width buffers. Do not use sprintf, even if you can prove the buffer
 | 
			
		||||
won't overflow, since gnulib does not provide the same portability guarantees
 | 
			
		||||
for sprintf as it does for snprintf.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Use of goto
 | 
			
		||||
===========
 | 
			
		||||
The use of goto is not forbidden, and goto is widely used throughout libvirt.
 | 
			
		||||
While the uncontrolled use of goto will quickly lead to unmaintainable code,
 | 
			
		||||
there is a place for it in well structured code where its use increases
 | 
			
		||||
readability and maintainability. In general, if goto is used for error
 | 
			
		||||
recovery, it's likely to be ok, otherwise, be cautious or avoid it all
 | 
			
		||||
together.
 | 
			
		||||
 | 
			
		||||
The typical use of goto is to jump to cleanup code in the case of a long list
 | 
			
		||||
of actions, any of which may fail and cause the entire operation to fail. In
 | 
			
		||||
this case, a function will have a single label at the end of the function.
 | 
			
		||||
It's almost always ok to use this style. In particular, if the cleanup code
 | 
			
		||||
only involves free'ing memory, then having multiple labels is overkill.
 | 
			
		||||
VIR_FREE() and every function named XXXFree() in libvirt is required to handle
 | 
			
		||||
NULL as its arg. Thus you can safely call free on all the variables even if
 | 
			
		||||
they were not yet allocated (yes they have to have been initialized to NULL).
 | 
			
		||||
This is much simpler and clearer than having multiple labels.
 | 
			
		||||
 | 
			
		||||
There are a couple of signs that a particular use of goto is not ok:
 | 
			
		||||
 | 
			
		||||
- You're using multiple labels. If you find yourself using multiple labels,
 | 
			
		||||
you're strongly encouraged to rework your code to eliminate all but one of
 | 
			
		||||
them.
 | 
			
		||||
 | 
			
		||||
- The goto jumps back up to a point above the current line of code being
 | 
			
		||||
executed. Please use some combination of looping constructs to re-execute code
 | 
			
		||||
instead; it's almost certainly going to be more understandable by others. One
 | 
			
		||||
well-known exception to this rule is restarting an i/o operation following
 | 
			
		||||
EINTR.
 | 
			
		||||
 | 
			
		||||
- The goto jumps down to an arbitrary place in the middle of a function followed
 | 
			
		||||
by further potentially failing calls. You should almost certainly be using a
 | 
			
		||||
conditional and a block instead of a goto. Perhaps some of your function's
 | 
			
		||||
logic would be better pulled out into a helper function.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Although libvirt does not encourage the Linux kernel wind/unwind style of
 | 
			
		||||
multiple labels, there's a good general discussion of the issue archived at
 | 
			
		||||
 | 
			
		||||
  KernelTrap
 | 
			
		||||
  http://kerneltrap.org/node/553/2131
 | 
			
		||||
 | 
			
		||||
When using goto, please use one of these standard labels if it makes sense:
 | 
			
		||||
 | 
			
		||||
      error: A path only taken upon return with an error code
 | 
			
		||||
    cleanup: A path taken upon return with success code + optional error
 | 
			
		||||
  no_memory: A path only taken upon return with an OOM error code
 | 
			
		||||
      retry: If needing to jump upwards (e.g., retry on EINTR)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Libvirt committer guidelines
 | 
			
		||||
============================
 | 
			
		||||
The AUTHORS files indicates the list of people with commit access right who
 | 
			
		||||
can actually merge the patches.
 | 
			
		||||
 | 
			
		||||
The general rule for committing a patch is to make sure it has been reviewed
 | 
			
		||||
properly in the mailing-list first, usually if a couple of people gave an ACK
 | 
			
		||||
or +1 to a patch and nobody raised an objection on the list it should be good
 | 
			
		||||
to go. If the patch touches a part of the code where you're not the main
 | 
			
		||||
maintainer, or where you do not have a very clear idea of how things work,
 | 
			
		||||
it's better to wait for a more authoritative feedback though. Before
 | 
			
		||||
committing, please also rebuild locally, run 'make check syntax-check', and
 | 
			
		||||
make sure you don't raise errors. Try to look for warnings too; for example,
 | 
			
		||||
configure with
 | 
			
		||||
 | 
			
		||||
  --enable-compile-warnings=error
 | 
			
		||||
 | 
			
		||||
which adds -Werror to compile flags, so no warnings get missed
 | 
			
		||||
 | 
			
		||||
An exception to 'review and approval on the list first' is fixing failures to
 | 
			
		||||
build:
 | 
			
		||||
 | 
			
		||||
- if a recently committed patch breaks compilation on a platform or for a given
 | 
			
		||||
driver, then it's fine to commit a minimal fix directly without getting the
 | 
			
		||||
review feedback first
 | 
			
		||||
 | 
			
		||||
- if make check or make syntax-check breaks, if there is an obvious fix, it's
 | 
			
		||||
fine to commit immediately. The patch should still be sent to the list (or
 | 
			
		||||
tell what the fix was if trivial), and 'make check syntax-check' should pass
 | 
			
		||||
too, before committing anything
 | 
			
		||||
 | 
			
		||||
- fixes for documentation and code comments can be managed in the same way, but
 | 
			
		||||
still make sure they get reviewed if non-trivial.
 | 
			
		||||
							
								
								
									
										103
									
								
								Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								Makefile.am
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,103 @@
 | 
			
		||||
## Process this file with automake to produce Makefile.in
 | 
			
		||||
 | 
			
		||||
## Copyright (C) 2005-2012 Red Hat, Inc.
 | 
			
		||||
## See COPYING.LIB for the License of this software
 | 
			
		||||
 | 
			
		||||
LCOV = lcov
 | 
			
		||||
GENHTML = genhtml
 | 
			
		||||
 | 
			
		||||
SUBDIRS = gnulib/lib include src daemon tools docs gnulib/tests \
 | 
			
		||||
  python tests po examples/domain-events/events-c examples/hellolibvirt \
 | 
			
		||||
  examples/dominfo examples/domsuspend examples/python examples/apparmor \
 | 
			
		||||
  examples/xml/nwfilter examples/openauth examples/systemtap
 | 
			
		||||
 | 
			
		||||
ACLOCAL_AMFLAGS = -I m4 -I gnulib/m4
 | 
			
		||||
 | 
			
		||||
XML_EXAMPLES = \
 | 
			
		||||
  $(patsubst $(srcdir)/%,%,$(wildcard $(addprefix $(srcdir)/examples/xml/, \
 | 
			
		||||
					test/*.xml storage/*.xml)))
 | 
			
		||||
 | 
			
		||||
EXTRA_DIST = \
 | 
			
		||||
  ChangeLog-old \
 | 
			
		||||
  libvirt.spec libvirt.spec.in \
 | 
			
		||||
  mingw-libvirt.spec.in \
 | 
			
		||||
  libvirt.pc.in \
 | 
			
		||||
  autobuild.sh \
 | 
			
		||||
  Makefile.nonreentrant \
 | 
			
		||||
  autogen.sh \
 | 
			
		||||
  cfg.mk \
 | 
			
		||||
  examples/domain-events/events-python \
 | 
			
		||||
  run.in \
 | 
			
		||||
  AUTHORS.in \
 | 
			
		||||
  $(XML_EXAMPLES)
 | 
			
		||||
 | 
			
		||||
pkgconfigdir = $(libdir)/pkgconfig
 | 
			
		||||
pkgconfig_DATA = libvirt.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.gz)
 | 
			
		||||
 | 
			
		||||
check-local: all tests
 | 
			
		||||
 | 
			
		||||
tests:
 | 
			
		||||
	@(cd docs/examples ; $(MAKE) MAKEFLAGS+=--silent tests)
 | 
			
		||||
	@(if [ "$(pythondir)" != "" ] ; then cd python ; \
 | 
			
		||||
	  $(MAKE) MAKEFLAGS+=--silent tests ; fi)
 | 
			
		||||
 | 
			
		||||
cov: clean-cov
 | 
			
		||||
	mkdir $(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
 | 
			
		||||
 | 
			
		||||
# disable this check
 | 
			
		||||
distuninstallcheck:
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
							
								
								
									
										100
									
								
								Makefile.nonreentrant
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								Makefile.nonreentrant
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,100 @@
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# Generated by running the following on Fedora 9:
 | 
			
		||||
#
 | 
			
		||||
#  nm -D --defined-only /lib/libc.so.6  \
 | 
			
		||||
#      | grep '_r$' \
 | 
			
		||||
#      | awk '{print $3}' \
 | 
			
		||||
#      | grep -v __ \
 | 
			
		||||
#      | grep -v qsort \ # Red herring since we don't need to pass extra args to qsort comparator
 | 
			
		||||
#      | grep -v readdir \ # This is safe as long as each DIR * instance is only used by one thread
 | 
			
		||||
#      | sort \
 | 
			
		||||
#      | uniq \
 | 
			
		||||
#      | sed -e 's/_r//'
 | 
			
		||||
#
 | 
			
		||||
# Also manually add in all inet_* functions some of which
 | 
			
		||||
# are not threadsafe and do not have _r variants. They are
 | 
			
		||||
# all deprecated in favour of getnameinfo/getaddrinfo
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
NON_REENTRANT =
 | 
			
		||||
NON_REENTRANT += asctime
 | 
			
		||||
NON_REENTRANT += ctime
 | 
			
		||||
NON_REENTRANT += drand48
 | 
			
		||||
NON_REENTRANT += ecvt
 | 
			
		||||
NON_REENTRANT += erand48
 | 
			
		||||
NON_REENTRANT += ether_aton
 | 
			
		||||
NON_REENTRANT += ether_ntoa
 | 
			
		||||
NON_REENTRANT += fcvt
 | 
			
		||||
NON_REENTRANT += fgetgrent
 | 
			
		||||
NON_REENTRANT += fgetpwent
 | 
			
		||||
NON_REENTRANT += fgetspent
 | 
			
		||||
NON_REENTRANT += getaliasbyname
 | 
			
		||||
NON_REENTRANT += getaliasent
 | 
			
		||||
NON_REENTRANT += getdate
 | 
			
		||||
NON_REENTRANT += getgrent
 | 
			
		||||
NON_REENTRANT += getgrgid
 | 
			
		||||
NON_REENTRANT += getgrnam
 | 
			
		||||
NON_REENTRANT += gethostbyaddr
 | 
			
		||||
NON_REENTRANT += gethostbyname2
 | 
			
		||||
NON_REENTRANT += gethostbyname
 | 
			
		||||
NON_REENTRANT += gethostent
 | 
			
		||||
NON_REENTRANT += getlogin
 | 
			
		||||
NON_REENTRANT += getmntent
 | 
			
		||||
NON_REENTRANT += getnetbyaddr
 | 
			
		||||
NON_REENTRANT += getnetbyname
 | 
			
		||||
NON_REENTRANT += getnetent
 | 
			
		||||
NON_REENTRANT += getnetgrent
 | 
			
		||||
NON_REENTRANT += getprotobyname
 | 
			
		||||
NON_REENTRANT += getprotobynumber
 | 
			
		||||
NON_REENTRANT += getprotoent
 | 
			
		||||
NON_REENTRANT += getpwent
 | 
			
		||||
NON_REENTRANT += getpwnam
 | 
			
		||||
NON_REENTRANT += getpwuid
 | 
			
		||||
NON_REENTRANT += getrpcbyname
 | 
			
		||||
NON_REENTRANT += getrpcbynumber
 | 
			
		||||
NON_REENTRANT += getrpcent
 | 
			
		||||
NON_REENTRANT += getservbyname
 | 
			
		||||
NON_REENTRANT += getservbyport
 | 
			
		||||
NON_REENTRANT += getservent
 | 
			
		||||
NON_REENTRANT += getspent
 | 
			
		||||
NON_REENTRANT += getspnam
 | 
			
		||||
NON_REENTRANT += getutent
 | 
			
		||||
NON_REENTRANT += getutid
 | 
			
		||||
NON_REENTRANT += getutline
 | 
			
		||||
NON_REENTRANT += gmtime
 | 
			
		||||
NON_REENTRANT += hcreate
 | 
			
		||||
NON_REENTRANT += hdestroy
 | 
			
		||||
NON_REENTRANT += hsearch
 | 
			
		||||
NON_REENTRANT += initstate
 | 
			
		||||
NON_REENTRANT += jrand48
 | 
			
		||||
NON_REENTRANT += lcong48
 | 
			
		||||
NON_REENTRANT += localtime
 | 
			
		||||
NON_REENTRANT += lrand48
 | 
			
		||||
NON_REENTRANT += mrand48
 | 
			
		||||
NON_REENTRANT += nrand48
 | 
			
		||||
NON_REENTRANT += ptsname
 | 
			
		||||
NON_REENTRANT += qecvt
 | 
			
		||||
NON_REENTRANT += qfcvt
 | 
			
		||||
NON_REENTRANT += random
 | 
			
		||||
NON_REENTRANT += rand
 | 
			
		||||
NON_REENTRANT += seed48
 | 
			
		||||
NON_REENTRANT += setstate
 | 
			
		||||
NON_REENTRANT += sgetspent
 | 
			
		||||
NON_REENTRANT += srand48
 | 
			
		||||
NON_REENTRANT += srandom
 | 
			
		||||
NON_REENTRANT += strerror
 | 
			
		||||
NON_REENTRANT += strtok
 | 
			
		||||
NON_REENTRANT += tmpnam
 | 
			
		||||
NON_REENTRANT += ttyname
 | 
			
		||||
NON_REENTRANT += inet_addr
 | 
			
		||||
NON_REENTRANT += inet_aton
 | 
			
		||||
NON_REENTRANT += inet_lnaof
 | 
			
		||||
NON_REENTRANT += inet_makeaddr
 | 
			
		||||
NON_REENTRANT += inet_netof
 | 
			
		||||
NON_REENTRANT += inet_network
 | 
			
		||||
NON_REENTRANT += inet_nsap_addr
 | 
			
		||||
NON_REENTRANT += inet_nsap_ntoa
 | 
			
		||||
NON_REENTRANT += inet_ntoa
 | 
			
		||||
NON_REENTRANT += inet_ntop
 | 
			
		||||
NON_REENTRANT += inet_pton
 | 
			
		||||
							
								
								
									
										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. See also README-valgrind.
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
							
								
								
									
										113
									
								
								autobuild.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										113
									
								
								autobuild.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,113 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
set -v
 | 
			
		||||
 | 
			
		||||
# Make things clean.
 | 
			
		||||
 | 
			
		||||
test -n "$1" && RESULTS=$1 || RESULTS=results.log
 | 
			
		||||
: ${AUTOBUILD_INSTALL_ROOT=$HOME/builder}
 | 
			
		||||
 | 
			
		||||
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-test-coverage \
 | 
			
		||||
  --disable-nls \
 | 
			
		||||
  --enable-werror
 | 
			
		||||
 | 
			
		||||
# 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.gz
 | 
			
		||||
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_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-werror \
 | 
			
		||||
    --without-libvirtd \
 | 
			
		||||
    --without-python
 | 
			
		||||
 | 
			
		||||
  make
 | 
			
		||||
  make install
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Test mingw64 cross-compile
 | 
			
		||||
if test -x /usr/bin/x86_64-w64-mingw32-gcc ; then
 | 
			
		||||
  make distclean
 | 
			
		||||
 | 
			
		||||
  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-werror \
 | 
			
		||||
    --without-libvirtd \
 | 
			
		||||
    --without-python
 | 
			
		||||
 | 
			
		||||
  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
 | 
			
		||||
							
								
								
									
										107
									
								
								autogen.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										107
									
								
								autogen.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,107 @@
 | 
			
		||||
#!/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
 | 
			
		||||
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()
 | 
			
		||||
{
 | 
			
		||||
    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; then
 | 
			
		||||
    curr_status=.git-module-status t=
 | 
			
		||||
    if 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 ${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."
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										977
									
								
								bootstrap
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										977
									
								
								bootstrap
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,977 @@
 | 
			
		||||
#! /bin/sh
 | 
			
		||||
# Print a version string.
 | 
			
		||||
scriptversion=2012-12-28.10; # UTC
 | 
			
		||||
 | 
			
		||||
# Bootstrap this package from checked-out sources.
 | 
			
		||||
 | 
			
		||||
# Copyright (C) 2003-2013 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 <http://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
# Originally written by Paul Eggert.  The canonical version of this
 | 
			
		||||
# script is maintained as build-aux/bootstrap in gnulib, however, to
 | 
			
		||||
# be useful to your project, you should place a copy of it under
 | 
			
		||||
# version control in the top-level directory of your project.  The
 | 
			
		||||
# intent is that all customization can be done with a bootstrap.conf
 | 
			
		||||
# file also maintained in your version control; gnulib comes with a
 | 
			
		||||
# template build-aux/bootstrap.conf to get you started.
 | 
			
		||||
 | 
			
		||||
# Please report bugs or propose patches to bug-gnulib@gnu.org.
 | 
			
		||||
 | 
			
		||||
nl='
 | 
			
		||||
'
 | 
			
		||||
 | 
			
		||||
# Ensure file names are sorted consistently across platforms.
 | 
			
		||||
LC_ALL=C
 | 
			
		||||
export LC_ALL
 | 
			
		||||
 | 
			
		||||
# Ensure that CDPATH is not set.  Otherwise, the output from cd
 | 
			
		||||
# would cause trouble in at least one use below.
 | 
			
		||||
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 | 
			
		||||
 | 
			
		||||
local_gl_dir=gl
 | 
			
		||||
 | 
			
		||||
me=$0
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
  cat <<EOF
 | 
			
		||||
Usage: $me [OPTION]...
 | 
			
		||||
Bootstrap this package from the checked-out sources.
 | 
			
		||||
 | 
			
		||||
Options:
 | 
			
		||||
 --gnulib-srcdir=DIRNAME  specify the local directory where gnulib
 | 
			
		||||
                          sources reside.  Use this if you already
 | 
			
		||||
                          have gnulib sources on your machine, and
 | 
			
		||||
                          do not want to waste your bandwidth downloading
 | 
			
		||||
                          them again.  Defaults to \$GNULIB_SRCDIR
 | 
			
		||||
 --bootstrap-sync         if this bootstrap script is not identical to
 | 
			
		||||
                          the version in the local gnulib sources,
 | 
			
		||||
                          update this script, and then restart it with
 | 
			
		||||
                          /bin/sh or the shell \$CONFIG_SHELL
 | 
			
		||||
 --no-bootstrap-sync      do not check whether bootstrap is out of sync
 | 
			
		||||
 --copy                   copy files instead of creating symbolic links
 | 
			
		||||
 --force                  attempt to bootstrap even if the sources seem
 | 
			
		||||
                          not to have been checked out
 | 
			
		||||
 --no-git                 do not use git to update gnulib.  Requires that
 | 
			
		||||
                          --gnulib-srcdir point to a correct gnulib snapshot
 | 
			
		||||
 --skip-po                do not download po files
 | 
			
		||||
 | 
			
		||||
If the file $me.conf exists in the same directory as this script, its
 | 
			
		||||
contents are read as shell variables to configure the bootstrap.
 | 
			
		||||
 | 
			
		||||
For build prerequisites, environment variables like \$AUTOCONF and \$AMTAR
 | 
			
		||||
are honored.
 | 
			
		||||
 | 
			
		||||
Running without arguments will suffice in most cases.
 | 
			
		||||
EOF
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# warnf_ FORMAT-STRING ARG1...
 | 
			
		||||
warnf_ ()
 | 
			
		||||
{
 | 
			
		||||
  warnf_format_=$1
 | 
			
		||||
  shift
 | 
			
		||||
  nl='
 | 
			
		||||
'
 | 
			
		||||
  case $* in
 | 
			
		||||
    *$nl*) me_=$(printf "$me"|tr "$nl|" '??')
 | 
			
		||||
       printf "$warnf_format_" "$@" | sed "s|^|$me_: |" ;;
 | 
			
		||||
    *) printf "$me: $warnf_format_" "$@" ;;
 | 
			
		||||
  esac >&2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# warn_ WORD1...
 | 
			
		||||
warn_ ()
 | 
			
		||||
{
 | 
			
		||||
  # If IFS does not start with ' ', set it and emit the warning in a subshell.
 | 
			
		||||
  case $IFS in
 | 
			
		||||
    ' '*) warnf_ '%s\n' "$*";;
 | 
			
		||||
    *)    (IFS=' '; warn_ "$@");;
 | 
			
		||||
  esac
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# die WORD1...
 | 
			
		||||
die() { warn_ "$@"; exit 1; }
 | 
			
		||||
 | 
			
		||||
# Configuration.
 | 
			
		||||
 | 
			
		||||
# Name of the Makefile.am
 | 
			
		||||
gnulib_mk=gnulib.mk
 | 
			
		||||
 | 
			
		||||
# List of gnulib modules needed.
 | 
			
		||||
gnulib_modules=
 | 
			
		||||
 | 
			
		||||
# Any gnulib files needed that are not in modules.
 | 
			
		||||
gnulib_files=
 | 
			
		||||
 | 
			
		||||
: ${AUTOPOINT=autopoint}
 | 
			
		||||
: ${AUTORECONF=autoreconf}
 | 
			
		||||
 | 
			
		||||
# A function to be called right after gnulib-tool is run.
 | 
			
		||||
# Override it via your own definition in bootstrap.conf.
 | 
			
		||||
bootstrap_post_import_hook() { :; }
 | 
			
		||||
 | 
			
		||||
# A function to be called after everything else in this script.
 | 
			
		||||
# Override it via your own definition in bootstrap.conf.
 | 
			
		||||
bootstrap_epilogue() { :; }
 | 
			
		||||
 | 
			
		||||
# The command to download all .po files for a specified domain into
 | 
			
		||||
# a specified directory.  Fill in the first %s is the domain name, and
 | 
			
		||||
# the second with the destination directory.  Use rsync's -L and -r
 | 
			
		||||
# options because the latest/%s directory and the .po files within are
 | 
			
		||||
# all symlinks.
 | 
			
		||||
po_download_command_format=\
 | 
			
		||||
"rsync --delete --exclude '*.s1' -Lrtvz \
 | 
			
		||||
 'translationproject.org::tp/latest/%s/' '%s'"
 | 
			
		||||
 | 
			
		||||
# Fallback for downloading .po files (if rsync fails).
 | 
			
		||||
po_download_command_format2=\
 | 
			
		||||
"wget --mirror -nd -q -np -A.po -P '%s' \
 | 
			
		||||
 http://translationproject.org/latest/%s/"
 | 
			
		||||
 | 
			
		||||
extract_package_name='
 | 
			
		||||
  /^AC_INIT(/{
 | 
			
		||||
     /.*,.*,.*, */{
 | 
			
		||||
       s///
 | 
			
		||||
       s/[][]//g
 | 
			
		||||
       s/)$//
 | 
			
		||||
       p
 | 
			
		||||
       q
 | 
			
		||||
     }
 | 
			
		||||
     s/AC_INIT(\[*//
 | 
			
		||||
     s/]*,.*//
 | 
			
		||||
     s/^GNU //
 | 
			
		||||
     y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
 | 
			
		||||
     s/[^A-Za-z0-9_]/-/g
 | 
			
		||||
     p
 | 
			
		||||
  }
 | 
			
		||||
'
 | 
			
		||||
package=$(sed -n "$extract_package_name" configure.ac) \
 | 
			
		||||
  || die 'cannot find package name in configure.ac'
 | 
			
		||||
gnulib_name=lib$package
 | 
			
		||||
 | 
			
		||||
build_aux=build-aux
 | 
			
		||||
source_base=lib
 | 
			
		||||
m4_base=m4
 | 
			
		||||
doc_base=doc
 | 
			
		||||
tests_base=tests
 | 
			
		||||
gnulib_extra_files=''
 | 
			
		||||
 | 
			
		||||
# Additional gnulib-tool options to use.  Use "\newline" to break lines.
 | 
			
		||||
gnulib_tool_option_extras=
 | 
			
		||||
 | 
			
		||||
# Other locale categories that need message catalogs.
 | 
			
		||||
EXTRA_LOCALE_CATEGORIES=
 | 
			
		||||
 | 
			
		||||
# Additional xgettext options to use.  Use "\\\newline" to break lines.
 | 
			
		||||
XGETTEXT_OPTIONS='\\\
 | 
			
		||||
 --flag=_:1:pass-c-format\\\
 | 
			
		||||
 --flag=N_:1:pass-c-format\\\
 | 
			
		||||
 --flag=error:3:c-format --flag=error_at_line:5:c-format\\\
 | 
			
		||||
'
 | 
			
		||||
 | 
			
		||||
# Package bug report address and copyright holder for gettext files
 | 
			
		||||
COPYRIGHT_HOLDER='Free Software Foundation, Inc.'
 | 
			
		||||
MSGID_BUGS_ADDRESS=bug-$package@gnu.org
 | 
			
		||||
 | 
			
		||||
# Files we don't want to import.
 | 
			
		||||
excluded_files=
 | 
			
		||||
 | 
			
		||||
# File that should exist in the top directory of a checked out hierarchy,
 | 
			
		||||
# but not in a distribution tarball.
 | 
			
		||||
checkout_only_file=README-hacking
 | 
			
		||||
 | 
			
		||||
# Whether to use copies instead of symlinks.
 | 
			
		||||
copy=false
 | 
			
		||||
 | 
			
		||||
# Set this to '.cvsignore .gitignore' in bootstrap.conf if you want
 | 
			
		||||
# those files to be generated in directories like lib/, m4/, and po/.
 | 
			
		||||
# Or set it to 'auto' to make this script select which to use based
 | 
			
		||||
# on which version control system (if any) is used in the source directory.
 | 
			
		||||
vc_ignore=auto
 | 
			
		||||
 | 
			
		||||
# Set this to true in bootstrap.conf to enable --bootstrap-sync by
 | 
			
		||||
# default.
 | 
			
		||||
bootstrap_sync=false
 | 
			
		||||
 | 
			
		||||
# Use git to update gnulib sources
 | 
			
		||||
use_git=true
 | 
			
		||||
 | 
			
		||||
# find_tool ENVVAR NAMES...
 | 
			
		||||
# -------------------------
 | 
			
		||||
# Search for a required program.  Use the value of ENVVAR, if set,
 | 
			
		||||
# otherwise find the first of the NAMES that can be run (i.e.,
 | 
			
		||||
# supports --version).  If found, set ENVVAR to the program name,
 | 
			
		||||
# die otherwise.
 | 
			
		||||
#
 | 
			
		||||
# FIXME: code duplication, see also gnu-web-doc-update.
 | 
			
		||||
find_tool ()
 | 
			
		||||
{
 | 
			
		||||
  find_tool_envvar=$1
 | 
			
		||||
  shift
 | 
			
		||||
  find_tool_names=$@
 | 
			
		||||
  eval "find_tool_res=\$$find_tool_envvar"
 | 
			
		||||
  if test x"$find_tool_res" = x; then
 | 
			
		||||
    for i
 | 
			
		||||
    do
 | 
			
		||||
      if ($i --version </dev/null) >/dev/null 2>&1; then
 | 
			
		||||
       find_tool_res=$i
 | 
			
		||||
       break
 | 
			
		||||
      fi
 | 
			
		||||
    done
 | 
			
		||||
  else
 | 
			
		||||
    find_tool_error_prefix="\$$find_tool_envvar: "
 | 
			
		||||
  fi
 | 
			
		||||
  test x"$find_tool_res" != x \
 | 
			
		||||
    || die "one of these is required: $find_tool_names"
 | 
			
		||||
  ($find_tool_res --version </dev/null) >/dev/null 2>&1 \
 | 
			
		||||
    || die "${find_tool_error_prefix}cannot run $find_tool_res --version"
 | 
			
		||||
  eval "$find_tool_envvar=\$find_tool_res"
 | 
			
		||||
  eval "export $find_tool_envvar"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Find sha1sum, named gsha1sum on MacPorts, and shasum on Mac OS X 10.6.
 | 
			
		||||
find_tool SHA1SUM sha1sum gsha1sum shasum
 | 
			
		||||
 | 
			
		||||
# Override the default configuration, if necessary.
 | 
			
		||||
# Make sure that bootstrap.conf is sourced from the current directory
 | 
			
		||||
# if we were invoked as "sh bootstrap".
 | 
			
		||||
case "$0" in
 | 
			
		||||
  */*) test -r "$0.conf" && . "$0.conf" ;;
 | 
			
		||||
  *) test -r "$0.conf" && . ./"$0.conf" ;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
# Extra files from gnulib, which override files from other sources.
 | 
			
		||||
test -z "${gnulib_extra_files}" && \
 | 
			
		||||
  gnulib_extra_files="
 | 
			
		||||
        $build_aux/install-sh
 | 
			
		||||
        $build_aux/mdate-sh
 | 
			
		||||
        $build_aux/texinfo.tex
 | 
			
		||||
        $build_aux/depcomp
 | 
			
		||||
        $build_aux/config.guess
 | 
			
		||||
        $build_aux/config.sub
 | 
			
		||||
        doc/INSTALL
 | 
			
		||||
"
 | 
			
		||||
 | 
			
		||||
if test "$vc_ignore" = auto; then
 | 
			
		||||
  vc_ignore=
 | 
			
		||||
  test -d .git && vc_ignore=.gitignore
 | 
			
		||||
  test -d CVS && vc_ignore="$vc_ignore .cvsignore"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Translate configuration into internal form.
 | 
			
		||||
 | 
			
		||||
# Parse options.
 | 
			
		||||
 | 
			
		||||
for option
 | 
			
		||||
do
 | 
			
		||||
  case $option in
 | 
			
		||||
  --help)
 | 
			
		||||
    usage
 | 
			
		||||
    exit;;
 | 
			
		||||
  --gnulib-srcdir=*)
 | 
			
		||||
    GNULIB_SRCDIR=${option#--gnulib-srcdir=};;
 | 
			
		||||
  --skip-po)
 | 
			
		||||
    SKIP_PO=t;;
 | 
			
		||||
  --force)
 | 
			
		||||
    checkout_only_file=;;
 | 
			
		||||
  --copy)
 | 
			
		||||
    copy=true;;
 | 
			
		||||
  --bootstrap-sync)
 | 
			
		||||
    bootstrap_sync=true;;
 | 
			
		||||
  --no-bootstrap-sync)
 | 
			
		||||
    bootstrap_sync=false;;
 | 
			
		||||
  --no-git)
 | 
			
		||||
    use_git=false;;
 | 
			
		||||
  *)
 | 
			
		||||
    die "$option: unknown option";;
 | 
			
		||||
  esac
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
$use_git || test -d "$GNULIB_SRCDIR" \
 | 
			
		||||
  || die "Error: --no-git requires --gnulib-srcdir"
 | 
			
		||||
 | 
			
		||||
if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
 | 
			
		||||
  die "Bootstrapping from a non-checked-out distribution is risky."
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Ensure that lines starting with ! sort last, per gitignore conventions
 | 
			
		||||
# for whitelisting exceptions after a more generic blacklist pattern.
 | 
			
		||||
sort_patterns() {
 | 
			
		||||
  sort -u "$@" | sed '/^!/ {
 | 
			
		||||
    H
 | 
			
		||||
    d
 | 
			
		||||
  }
 | 
			
		||||
  $ {
 | 
			
		||||
    P
 | 
			
		||||
    x
 | 
			
		||||
    s/^\n//
 | 
			
		||||
  }' | sed '/^$/d'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# If $STR is not already on a line by itself in $FILE, insert it,
 | 
			
		||||
# sorting the new contents of the file and replacing $FILE with the result.
 | 
			
		||||
insert_sorted_if_absent() {
 | 
			
		||||
  file=$1
 | 
			
		||||
  str=$2
 | 
			
		||||
  test -f $file || touch $file
 | 
			
		||||
  echo "$str" | sort_patterns - $file | cmp -s - $file > /dev/null \
 | 
			
		||||
    || { echo "$str" | sort_patterns - $file > $file.bak \
 | 
			
		||||
      && mv $file.bak $file; } \
 | 
			
		||||
    || die "insert_sorted_if_absent $file $str: failed"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Adjust $PATTERN for $VC_IGNORE_FILE and insert it with
 | 
			
		||||
# insert_sorted_if_absent.
 | 
			
		||||
insert_vc_ignore() {
 | 
			
		||||
  vc_ignore_file="$1"
 | 
			
		||||
  pattern="$2"
 | 
			
		||||
  case $vc_ignore_file in
 | 
			
		||||
  *.gitignore)
 | 
			
		||||
    # A .gitignore entry that does not start with '/' applies
 | 
			
		||||
    # recursively to subdirectories, so prepend '/' to every
 | 
			
		||||
    # .gitignore entry.
 | 
			
		||||
    pattern=$(echo "$pattern" | sed s,^,/,);;
 | 
			
		||||
  esac
 | 
			
		||||
  insert_sorted_if_absent "$vc_ignore_file" "$pattern"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac.
 | 
			
		||||
found_aux_dir=no
 | 
			
		||||
grep '^[	 ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \
 | 
			
		||||
    >/dev/null && found_aux_dir=yes
 | 
			
		||||
grep '^[	 ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \
 | 
			
		||||
    >/dev/null && found_aux_dir=yes
 | 
			
		||||
test $found_aux_dir = yes \
 | 
			
		||||
  || die "configure.ac lacks 'AC_CONFIG_AUX_DIR([$build_aux])'; add it"
 | 
			
		||||
 | 
			
		||||
# If $build_aux doesn't exist, create it now, otherwise some bits
 | 
			
		||||
# below will malfunction.  If creating it, also mark it as ignored.
 | 
			
		||||
if test ! -d $build_aux; then
 | 
			
		||||
  mkdir $build_aux
 | 
			
		||||
  for dot_ig in x $vc_ignore; do
 | 
			
		||||
    test $dot_ig = x && continue
 | 
			
		||||
    insert_vc_ignore $dot_ig $build_aux
 | 
			
		||||
  done
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Note this deviates from the version comparison in automake
 | 
			
		||||
# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
 | 
			
		||||
# but this should suffice as we won't be specifying old
 | 
			
		||||
# version formats or redundant trailing .0 in bootstrap.conf.
 | 
			
		||||
# If we did want full compatibility then we should probably
 | 
			
		||||
# use m4_version_compare from autoconf.
 | 
			
		||||
sort_ver() { # sort -V is not generally available
 | 
			
		||||
  ver1="$1"
 | 
			
		||||
  ver2="$2"
 | 
			
		||||
 | 
			
		||||
  # split on '.' and compare each component
 | 
			
		||||
  i=1
 | 
			
		||||
  while : ; do
 | 
			
		||||
    p1=$(echo "$ver1" | cut -d. -f$i)
 | 
			
		||||
    p2=$(echo "$ver2" | cut -d. -f$i)
 | 
			
		||||
    if [ ! "$p1" ]; then
 | 
			
		||||
      echo "$1 $2"
 | 
			
		||||
      break
 | 
			
		||||
    elif [ ! "$p2" ]; then
 | 
			
		||||
      echo "$2 $1"
 | 
			
		||||
      break
 | 
			
		||||
    elif [ ! "$p1" = "$p2" ]; then
 | 
			
		||||
      if [ "$p1" -gt "$p2" ] 2>/dev/null; then # numeric comparison
 | 
			
		||||
        echo "$2 $1"
 | 
			
		||||
      elif [ "$p2" -gt "$p1" ] 2>/dev/null; then # numeric comparison
 | 
			
		||||
        echo "$1 $2"
 | 
			
		||||
      else # numeric, then lexicographic comparison
 | 
			
		||||
        lp=$(printf "$p1\n$p2\n" | LANG=C sort -n | tail -n1)
 | 
			
		||||
        if [ "$lp" = "$p2" ]; then
 | 
			
		||||
          echo "$1 $2"
 | 
			
		||||
        else
 | 
			
		||||
          echo "$2 $1"
 | 
			
		||||
        fi
 | 
			
		||||
      fi
 | 
			
		||||
      break
 | 
			
		||||
    fi
 | 
			
		||||
    i=$(($i+1))
 | 
			
		||||
  done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
get_version() {
 | 
			
		||||
  app=$1
 | 
			
		||||
 | 
			
		||||
  $app --version >/dev/null 2>&1 || return 1
 | 
			
		||||
 | 
			
		||||
  $app --version 2>&1 |
 | 
			
		||||
  sed -n '# Move version to start of line.
 | 
			
		||||
          s/.*[v ]\([0-9]\)/\1/
 | 
			
		||||
 | 
			
		||||
          # Skip lines that do not start with version.
 | 
			
		||||
          /^[0-9]/!d
 | 
			
		||||
 | 
			
		||||
          # Remove characters after the version.
 | 
			
		||||
          s/[^.a-z0-9-].*//
 | 
			
		||||
 | 
			
		||||
          # The first component must be digits only.
 | 
			
		||||
          s/^\([0-9]*\)[a-z-].*/\1/
 | 
			
		||||
 | 
			
		||||
          #the following essentially does s/5.005/5.5/
 | 
			
		||||
          s/\.0*\([1-9]\)/.\1/g
 | 
			
		||||
          p
 | 
			
		||||
          q'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
check_versions() {
 | 
			
		||||
  ret=0
 | 
			
		||||
 | 
			
		||||
  while read app req_ver; do
 | 
			
		||||
    # We only need libtoolize from the libtool package.
 | 
			
		||||
    if test "$app" = libtool; then
 | 
			
		||||
      app=libtoolize
 | 
			
		||||
    fi
 | 
			
		||||
    # Exempt git if --no-git is in effect.
 | 
			
		||||
    if test "$app" = git; then
 | 
			
		||||
      $use_git || continue
 | 
			
		||||
    fi
 | 
			
		||||
    # Honor $APP variables ($TAR, $AUTOCONF, etc.)
 | 
			
		||||
    appvar=$(echo $app | LC_ALL=C tr '[a-z]-' '[A-Z]_')
 | 
			
		||||
    test "$appvar" = TAR && appvar=AMTAR
 | 
			
		||||
    case $appvar in
 | 
			
		||||
        GZIP) ;; # Do not use $GZIP:  it contains gzip options.
 | 
			
		||||
        *) eval "app=\${$appvar-$app}" ;;
 | 
			
		||||
    esac
 | 
			
		||||
 | 
			
		||||
    # Handle the still-experimental Automake-NG programs specially.
 | 
			
		||||
    # They remain named as the mainstream Automake programs ("automake",
 | 
			
		||||
    # and "aclocal") to avoid gratuitous incompatibilities with
 | 
			
		||||
    # pre-existing usages (by, say, autoreconf, or custom autogen.sh
 | 
			
		||||
    # scripts), but correctly identify themselves (as being part of
 | 
			
		||||
    # "GNU automake-ng") when asked their version.
 | 
			
		||||
    case $app in
 | 
			
		||||
      automake-ng|aclocal-ng)
 | 
			
		||||
        app=${app%-ng}
 | 
			
		||||
        ($app --version | grep '(GNU automake-ng)') >/dev/null 2>&1 || {
 | 
			
		||||
          warn_ "Error: '$app' not found or not from Automake-NG"
 | 
			
		||||
          ret=1
 | 
			
		||||
          continue
 | 
			
		||||
        } ;;
 | 
			
		||||
    esac
 | 
			
		||||
    if [ "$req_ver" = "-" ]; then
 | 
			
		||||
      # Merely require app to exist; not all prereq apps are well-behaved
 | 
			
		||||
      # so we have to rely on $? rather than get_version.
 | 
			
		||||
      $app --version >/dev/null 2>&1
 | 
			
		||||
      if [ 126 -le $? ]; then
 | 
			
		||||
        warn_ "Error: '$app' not found"
 | 
			
		||||
        ret=1
 | 
			
		||||
      fi
 | 
			
		||||
    else
 | 
			
		||||
      # Require app to produce a new enough version string.
 | 
			
		||||
      inst_ver=$(get_version $app)
 | 
			
		||||
      if [ ! "$inst_ver" ]; then
 | 
			
		||||
        warn_ "Error: '$app' not found"
 | 
			
		||||
        ret=1
 | 
			
		||||
      else
 | 
			
		||||
        latest_ver=$(sort_ver $req_ver $inst_ver | cut -d' ' -f2)
 | 
			
		||||
        if [ ! "$latest_ver" = "$inst_ver" ]; then
 | 
			
		||||
          warnf_ '%s\n'                                        \
 | 
			
		||||
              "Error: '$app' version == $inst_ver is too old"  \
 | 
			
		||||
              "       '$app' version >= $req_ver is required"
 | 
			
		||||
          ret=1
 | 
			
		||||
        fi
 | 
			
		||||
      fi
 | 
			
		||||
    fi
 | 
			
		||||
  done
 | 
			
		||||
 | 
			
		||||
  return $ret
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print_versions() {
 | 
			
		||||
  echo "Program    Min_version"
 | 
			
		||||
  echo "----------------------"
 | 
			
		||||
  printf %s "$buildreq"
 | 
			
		||||
  echo "----------------------"
 | 
			
		||||
  # can't depend on column -t
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
use_libtool=0
 | 
			
		||||
# We'd like to use grep -E, to see if any of LT_INIT,
 | 
			
		||||
# AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac,
 | 
			
		||||
# but that's not portable enough (e.g., for Solaris).
 | 
			
		||||
grep '^[	 ]*A[CM]_PROG_LIBTOOL' configure.ac >/dev/null \
 | 
			
		||||
  && use_libtool=1
 | 
			
		||||
grep '^[	 ]*LT_INIT' configure.ac >/dev/null \
 | 
			
		||||
  && use_libtool=1
 | 
			
		||||
if test $use_libtool = 1; then
 | 
			
		||||
  find_tool LIBTOOLIZE glibtoolize libtoolize
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# gnulib-tool requires at least automake and autoconf.
 | 
			
		||||
# If either is not listed, add it (with minimum version) as a prerequisite.
 | 
			
		||||
case $buildreq in
 | 
			
		||||
  *automake*) ;;
 | 
			
		||||
  *) buildreq="automake 1.9
 | 
			
		||||
$buildreq" ;;
 | 
			
		||||
esac
 | 
			
		||||
case $buildreq in
 | 
			
		||||
  *autoconf*) ;;
 | 
			
		||||
  *) buildreq="autoconf 2.59
 | 
			
		||||
$buildreq" ;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
# When we can deduce that gnulib-tool will require patch,
 | 
			
		||||
# and when patch is not already listed as a prerequisite, add it, too.
 | 
			
		||||
if test -d "$local_gl_dir" \
 | 
			
		||||
    && ! find "$local_gl_dir" -name '*.diff' -exec false {} +; then
 | 
			
		||||
  case $buildreq in
 | 
			
		||||
    *patch*) ;;
 | 
			
		||||
    *) buildreq="patch -
 | 
			
		||||
$buildreq" ;;
 | 
			
		||||
  esac
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if ! printf "$buildreq" | check_versions; then
 | 
			
		||||
  echo >&2
 | 
			
		||||
  if test -f README-prereq; then
 | 
			
		||||
    die "See README-prereq for how to get the prerequisite programs"
 | 
			
		||||
  else
 | 
			
		||||
    die "Please install the prerequisite programs"
 | 
			
		||||
  fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo "$0: Bootstrapping from checked-out $package sources..."
 | 
			
		||||
 | 
			
		||||
# See if we can use gnulib's git-merge-changelog merge driver.
 | 
			
		||||
if test -d .git && (git --version) >/dev/null 2>/dev/null ; then
 | 
			
		||||
  if git config merge.merge-changelog.driver >/dev/null ; then
 | 
			
		||||
    :
 | 
			
		||||
  elif (git-merge-changelog --version) >/dev/null 2>/dev/null ; then
 | 
			
		||||
    echo "$0: initializing git-merge-changelog driver"
 | 
			
		||||
    git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver'
 | 
			
		||||
    git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B'
 | 
			
		||||
  else
 | 
			
		||||
    echo "$0: consider installing git-merge-changelog from gnulib"
 | 
			
		||||
  fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
cleanup_gnulib() {
 | 
			
		||||
  status=$?
 | 
			
		||||
  rm -fr "$gnulib_path"
 | 
			
		||||
  exit $status
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
git_modules_config () {
 | 
			
		||||
  test -f .gitmodules && git config --file .gitmodules "$@"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
gnulib_path=$(git_modules_config submodule.gnulib.path)
 | 
			
		||||
test -z "$gnulib_path" && gnulib_path=gnulib
 | 
			
		||||
 | 
			
		||||
# Get gnulib files.
 | 
			
		||||
 | 
			
		||||
case ${GNULIB_SRCDIR--} in
 | 
			
		||||
-)
 | 
			
		||||
  if git_modules_config submodule.gnulib.url >/dev/null; then
 | 
			
		||||
    echo "$0: getting gnulib files..."
 | 
			
		||||
    git submodule init || exit $?
 | 
			
		||||
    git submodule update || exit $?
 | 
			
		||||
 | 
			
		||||
  elif [ ! -d "$gnulib_path" ]; then
 | 
			
		||||
    echo "$0: getting gnulib files..."
 | 
			
		||||
 | 
			
		||||
    trap cleanup_gnulib 1 2 13 15
 | 
			
		||||
 | 
			
		||||
    shallow=
 | 
			
		||||
    git clone -h 2>&1 | grep -- --depth > /dev/null && shallow='--depth 2'
 | 
			
		||||
    git clone $shallow git://git.sv.gnu.org/gnulib "$gnulib_path" ||
 | 
			
		||||
      cleanup_gnulib
 | 
			
		||||
 | 
			
		||||
    trap - 1 2 13 15
 | 
			
		||||
  fi
 | 
			
		||||
  GNULIB_SRCDIR=$gnulib_path
 | 
			
		||||
  ;;
 | 
			
		||||
*)
 | 
			
		||||
  # Use GNULIB_SRCDIR as a reference.
 | 
			
		||||
  if test -d "$GNULIB_SRCDIR"/.git && \
 | 
			
		||||
        git_modules_config submodule.gnulib.url >/dev/null; then
 | 
			
		||||
    echo "$0: getting gnulib files..."
 | 
			
		||||
    if git submodule -h|grep -- --reference > /dev/null; then
 | 
			
		||||
      # Prefer the one-liner available in git 1.6.4 or newer.
 | 
			
		||||
      git submodule update --init --reference "$GNULIB_SRCDIR" \
 | 
			
		||||
        "$gnulib_path" || exit $?
 | 
			
		||||
    else
 | 
			
		||||
      # This fallback allows at least git 1.5.5.
 | 
			
		||||
      if test -f "$gnulib_path"/gnulib-tool; then
 | 
			
		||||
        # Since file already exists, assume submodule init already complete.
 | 
			
		||||
        git submodule update || exit $?
 | 
			
		||||
      else
 | 
			
		||||
        # Older git can't clone into an empty directory.
 | 
			
		||||
        rmdir "$gnulib_path" 2>/dev/null
 | 
			
		||||
        git clone --reference "$GNULIB_SRCDIR" \
 | 
			
		||||
          "$(git_modules_config submodule.gnulib.url)" "$gnulib_path" \
 | 
			
		||||
          && git submodule init && git submodule update \
 | 
			
		||||
          || exit $?
 | 
			
		||||
      fi
 | 
			
		||||
    fi
 | 
			
		||||
    GNULIB_SRCDIR=$gnulib_path
 | 
			
		||||
  fi
 | 
			
		||||
  ;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
if $bootstrap_sync; then
 | 
			
		||||
  cmp -s "$0" "$GNULIB_SRCDIR/build-aux/bootstrap" || {
 | 
			
		||||
    echo "$0: updating bootstrap and restarting..."
 | 
			
		||||
    exec sh -c \
 | 
			
		||||
      'cp "$1" "$2" && shift && exec "${CONFIG_SHELL-/bin/sh}" "$@"' \
 | 
			
		||||
      -- "$GNULIB_SRCDIR/build-aux/bootstrap" \
 | 
			
		||||
      "$0" "$@" --no-bootstrap-sync
 | 
			
		||||
  }
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
 | 
			
		||||
<$gnulib_tool || exit $?
 | 
			
		||||
 | 
			
		||||
# Get translations.
 | 
			
		||||
 | 
			
		||||
download_po_files() {
 | 
			
		||||
  subdir=$1
 | 
			
		||||
  domain=$2
 | 
			
		||||
  echo "$me: getting translations into $subdir for $domain..."
 | 
			
		||||
  cmd=$(printf "$po_download_command_format" "$domain" "$subdir")
 | 
			
		||||
  eval "$cmd" && return
 | 
			
		||||
  # Fallback to HTTP.
 | 
			
		||||
  cmd=$(printf "$po_download_command_format2" "$subdir" "$domain")
 | 
			
		||||
  eval "$cmd"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Mirror .po files to $po_dir/.reference and copy only the new
 | 
			
		||||
# or modified ones into $po_dir.  Also update $po_dir/LINGUAS.
 | 
			
		||||
# Note po files that exist locally only are left in $po_dir but will
 | 
			
		||||
# not be included in LINGUAS and hence will not be distributed.
 | 
			
		||||
update_po_files() {
 | 
			
		||||
  # Directory containing primary .po files.
 | 
			
		||||
  # Overwrite them only when we're sure a .po file is new.
 | 
			
		||||
  po_dir=$1
 | 
			
		||||
  domain=$2
 | 
			
		||||
 | 
			
		||||
  # Mirror *.po files into this dir.
 | 
			
		||||
  # Usually contains *.s1 checksum files.
 | 
			
		||||
  ref_po_dir="$po_dir/.reference"
 | 
			
		||||
 | 
			
		||||
  test -d $ref_po_dir || mkdir $ref_po_dir || return
 | 
			
		||||
  download_po_files $ref_po_dir $domain \
 | 
			
		||||
    && ls "$ref_po_dir"/*.po 2>/dev/null |
 | 
			
		||||
      sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS" || return
 | 
			
		||||
 | 
			
		||||
  langs=$(cd $ref_po_dir && echo *.po | sed 's/\.po//g')
 | 
			
		||||
  test "$langs" = '*' && langs=x
 | 
			
		||||
  for po in $langs; do
 | 
			
		||||
    case $po in x) continue;; esac
 | 
			
		||||
    new_po="$ref_po_dir/$po.po"
 | 
			
		||||
    cksum_file="$ref_po_dir/$po.s1"
 | 
			
		||||
    if ! test -f "$cksum_file" ||
 | 
			
		||||
        ! test -f "$po_dir/$po.po" ||
 | 
			
		||||
        ! $SHA1SUM -c --status "$cksum_file" \
 | 
			
		||||
            < "$new_po" > /dev/null; then
 | 
			
		||||
      echo "$me: updated $po_dir/$po.po..."
 | 
			
		||||
      cp "$new_po" "$po_dir/$po.po" \
 | 
			
		||||
          && $SHA1SUM < "$new_po" > "$cksum_file"
 | 
			
		||||
    fi
 | 
			
		||||
  done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
case $SKIP_PO in
 | 
			
		||||
'')
 | 
			
		||||
  if test -d po; then
 | 
			
		||||
    update_po_files po $package || exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if test -d runtime-po; then
 | 
			
		||||
    update_po_files runtime-po $package-runtime || exit
 | 
			
		||||
  fi;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
symlink_to_dir()
 | 
			
		||||
{
 | 
			
		||||
  src=$1/$2
 | 
			
		||||
  dst=${3-$2}
 | 
			
		||||
 | 
			
		||||
  test -f "$src" && {
 | 
			
		||||
 | 
			
		||||
    # If the destination directory doesn't exist, create it.
 | 
			
		||||
    # This is required at least for "lib/uniwidth/cjk.h".
 | 
			
		||||
    dst_dir=$(dirname "$dst")
 | 
			
		||||
    if ! test -d "$dst_dir"; then
 | 
			
		||||
      mkdir -p "$dst_dir"
 | 
			
		||||
 | 
			
		||||
      # If we've just created a directory like lib/uniwidth,
 | 
			
		||||
      # tell version control system(s) it's ignorable.
 | 
			
		||||
      # FIXME: for now, this does only one level
 | 
			
		||||
      parent=$(dirname "$dst_dir")
 | 
			
		||||
      for dot_ig in x $vc_ignore; do
 | 
			
		||||
        test $dot_ig = x && continue
 | 
			
		||||
        ig=$parent/$dot_ig
 | 
			
		||||
        insert_vc_ignore $ig "${dst_dir##*/}"
 | 
			
		||||
      done
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if $copy; then
 | 
			
		||||
      {
 | 
			
		||||
        test ! -h "$dst" || {
 | 
			
		||||
          echo "$me: rm -f $dst" &&
 | 
			
		||||
          rm -f "$dst"
 | 
			
		||||
        }
 | 
			
		||||
      } &&
 | 
			
		||||
      test -f "$dst" &&
 | 
			
		||||
      cmp -s "$src" "$dst" || {
 | 
			
		||||
        echo "$me: cp -fp $src $dst" &&
 | 
			
		||||
        cp -fp "$src" "$dst"
 | 
			
		||||
      }
 | 
			
		||||
    else
 | 
			
		||||
      # Leave any existing symlink alone, if it already points to the source,
 | 
			
		||||
      # so that broken build tools that care about symlink times
 | 
			
		||||
      # aren't confused into doing unnecessary builds.  Conversely, if the
 | 
			
		||||
      # existing symlink's time stamp is older than the source, make it afresh,
 | 
			
		||||
      # so that broken tools aren't confused into skipping needed builds.  See
 | 
			
		||||
      # <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00326.html>.
 | 
			
		||||
      test -h "$dst" &&
 | 
			
		||||
      src_ls=$(ls -diL "$src" 2>/dev/null) && set $src_ls && src_i=$1 &&
 | 
			
		||||
      dst_ls=$(ls -diL "$dst" 2>/dev/null) && set $dst_ls && dst_i=$1 &&
 | 
			
		||||
      test "$src_i" = "$dst_i" &&
 | 
			
		||||
      both_ls=$(ls -dt "$src" "$dst") &&
 | 
			
		||||
      test "X$both_ls" = "X$dst$nl$src" || {
 | 
			
		||||
        dot_dots=
 | 
			
		||||
        case $src in
 | 
			
		||||
        /*) ;;
 | 
			
		||||
        *)
 | 
			
		||||
          case /$dst/ in
 | 
			
		||||
          *//* | */../* | */./* | /*/*/*/*/*/)
 | 
			
		||||
             die "invalid symlink calculation: $src -> $dst";;
 | 
			
		||||
          /*/*/*/*/)    dot_dots=../../../;;
 | 
			
		||||
          /*/*/*/)      dot_dots=../../;;
 | 
			
		||||
          /*/*/)        dot_dots=../;;
 | 
			
		||||
          esac;;
 | 
			
		||||
        esac
 | 
			
		||||
 | 
			
		||||
        echo "$me: ln -fs $dot_dots$src $dst" &&
 | 
			
		||||
        ln -fs "$dot_dots$src" "$dst"
 | 
			
		||||
      }
 | 
			
		||||
    fi
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
version_controlled_file() {
 | 
			
		||||
  parent=$1
 | 
			
		||||
  file=$2
 | 
			
		||||
  if test -d .git; then
 | 
			
		||||
    git rm -n "$file" > /dev/null 2>&1
 | 
			
		||||
  elif test -d .svn; then
 | 
			
		||||
    svn log -r HEAD "$file" > /dev/null 2>&1
 | 
			
		||||
  elif test -d CVS; then
 | 
			
		||||
    grep -F "/${file##*/}/" "$parent/CVS/Entries" 2>/dev/null |
 | 
			
		||||
             grep '^/[^/]*/[0-9]' > /dev/null
 | 
			
		||||
  else
 | 
			
		||||
    warn_ "no version control for $file?"
 | 
			
		||||
    false
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# NOTE: we have to be careful to run both autopoint and libtoolize
 | 
			
		||||
# before gnulib-tool, since gnulib-tool is likely to provide newer
 | 
			
		||||
# versions of files "installed" by these two programs.
 | 
			
		||||
# Then, *after* gnulib-tool (see below), we have to be careful to
 | 
			
		||||
# run autoreconf in such a way that it does not run either of these
 | 
			
		||||
# two just-pre-run programs.
 | 
			
		||||
 | 
			
		||||
# Import from gettext.
 | 
			
		||||
with_gettext=yes
 | 
			
		||||
grep '^[	 ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \
 | 
			
		||||
    with_gettext=no
 | 
			
		||||
 | 
			
		||||
if test $with_gettext = yes || test $use_libtool = 1; then
 | 
			
		||||
 | 
			
		||||
  tempbase=.bootstrap$$
 | 
			
		||||
  trap "rm -f $tempbase.0 $tempbase.1" 1 2 13 15
 | 
			
		||||
 | 
			
		||||
  > $tempbase.0 > $tempbase.1 &&
 | 
			
		||||
  find . ! -type d -print | sort > $tempbase.0 || exit
 | 
			
		||||
 | 
			
		||||
  if test $with_gettext = yes; then
 | 
			
		||||
    # Released autopoint has the tendency to install macros that have been
 | 
			
		||||
    # obsoleted in current gnulib, so run this before gnulib-tool.
 | 
			
		||||
    echo "$0: $AUTOPOINT --force"
 | 
			
		||||
    $AUTOPOINT --force || exit
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  # Autoreconf runs aclocal before libtoolize, which causes spurious
 | 
			
		||||
  # warnings if the initial aclocal is confused by the libtoolized
 | 
			
		||||
  # (or worse out-of-date) macro directory.
 | 
			
		||||
  # libtoolize 1.9b added the --install option; but we support back
 | 
			
		||||
  # to libtoolize 1.5.22, where the install action was default.
 | 
			
		||||
  if test $use_libtool = 1; then
 | 
			
		||||
    install=
 | 
			
		||||
    case $($LIBTOOLIZE --help) in
 | 
			
		||||
      *--install*) install=--install ;;
 | 
			
		||||
    esac
 | 
			
		||||
    echo "running: $LIBTOOLIZE $install --copy"
 | 
			
		||||
    $LIBTOOLIZE $install --copy
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  find . ! -type d -print | sort >$tempbase.1
 | 
			
		||||
  old_IFS=$IFS
 | 
			
		||||
  IFS=$nl
 | 
			
		||||
  for file in $(comm -13 $tempbase.0 $tempbase.1); do
 | 
			
		||||
    IFS=$old_IFS
 | 
			
		||||
    parent=${file%/*}
 | 
			
		||||
    version_controlled_file "$parent" "$file" || {
 | 
			
		||||
      for dot_ig in x $vc_ignore; do
 | 
			
		||||
        test $dot_ig = x && continue
 | 
			
		||||
        ig=$parent/$dot_ig
 | 
			
		||||
        insert_vc_ignore "$ig" "${file##*/}"
 | 
			
		||||
      done
 | 
			
		||||
    }
 | 
			
		||||
  done
 | 
			
		||||
  IFS=$old_IFS
 | 
			
		||||
 | 
			
		||||
  rm -f $tempbase.0 $tempbase.1
 | 
			
		||||
  trap - 1 2 13 15
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Import from gnulib.
 | 
			
		||||
 | 
			
		||||
gnulib_tool_options="\
 | 
			
		||||
 --import\
 | 
			
		||||
 --no-changelog\
 | 
			
		||||
 --aux-dir $build_aux\
 | 
			
		||||
 --doc-base $doc_base\
 | 
			
		||||
 --lib $gnulib_name\
 | 
			
		||||
 --m4-base $m4_base/\
 | 
			
		||||
 --source-base $source_base/\
 | 
			
		||||
 --tests-base $tests_base\
 | 
			
		||||
 --local-dir $local_gl_dir\
 | 
			
		||||
 $gnulib_tool_option_extras\
 | 
			
		||||
"
 | 
			
		||||
if test $use_libtool = 1; then
 | 
			
		||||
  case "$gnulib_tool_options " in
 | 
			
		||||
    *' --libtool '*) ;;
 | 
			
		||||
    *) gnulib_tool_options="$gnulib_tool_options --libtool" ;;
 | 
			
		||||
  esac
 | 
			
		||||
fi
 | 
			
		||||
echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
 | 
			
		||||
$gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
 | 
			
		||||
 | 
			
		||||
for file in $gnulib_files; do
 | 
			
		||||
  symlink_to_dir "$GNULIB_SRCDIR" $file \
 | 
			
		||||
    || die "failed to symlink $file"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
bootstrap_post_import_hook \
 | 
			
		||||
  || die "bootstrap_post_import_hook failed"
 | 
			
		||||
 | 
			
		||||
# Remove any dangling symlink matching "*.m4" or "*.[ch]" in some
 | 
			
		||||
# gnulib-populated directories.  Such .m4 files would cause aclocal to fail.
 | 
			
		||||
# The following requires GNU find 4.2.3 or newer.  Considering the usual
 | 
			
		||||
# portability constraints of this script, that may seem a very demanding
 | 
			
		||||
# requirement, but it should be ok.  Ignore any failure, which is fine,
 | 
			
		||||
# since this is only a convenience to help developers avoid the relatively
 | 
			
		||||
# unusual case in which a symlinked-to .m4 file is git-removed from gnulib
 | 
			
		||||
# between successive runs of this script.
 | 
			
		||||
find "$m4_base" "$source_base" \
 | 
			
		||||
  -depth \( -name '*.m4' -o -name '*.[ch]' \) \
 | 
			
		||||
  -type l -xtype l -delete > /dev/null 2>&1
 | 
			
		||||
 | 
			
		||||
# Invoke autoreconf with --force --install to ensure upgrades of tools
 | 
			
		||||
# such as ylwrap.
 | 
			
		||||
AUTORECONFFLAGS="--verbose --install --force -I $m4_base $ACLOCAL_FLAGS"
 | 
			
		||||
 | 
			
		||||
# Some systems (RHEL 5) are using ancient autotools, for which the
 | 
			
		||||
# --no-recursive option had not been invented.  Detect that lack and
 | 
			
		||||
# omit the option when it's not supported.  FIXME in 2017: remove this
 | 
			
		||||
# hack when RHEL 5 autotools are updated, or when they become irrelevant.
 | 
			
		||||
case $($AUTORECONF --help) in
 | 
			
		||||
  *--no-recursive*) AUTORECONFFLAGS="$AUTORECONFFLAGS --no-recursive";;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
# Tell autoreconf not to invoke autopoint or libtoolize; they were run above.
 | 
			
		||||
echo "running: AUTOPOINT=true LIBTOOLIZE=true $AUTORECONF $AUTORECONFFLAGS"
 | 
			
		||||
AUTOPOINT=true LIBTOOLIZE=true $AUTORECONF $AUTORECONFFLAGS \
 | 
			
		||||
  || die "autoreconf failed"
 | 
			
		||||
 | 
			
		||||
# Get some extra files from gnulib, overriding existing files.
 | 
			
		||||
for file in $gnulib_extra_files; do
 | 
			
		||||
  case $file in
 | 
			
		||||
  */INSTALL) dst=INSTALL;;
 | 
			
		||||
  build-aux/*) dst=$build_aux/${file#build-aux/};;
 | 
			
		||||
  *) dst=$file;;
 | 
			
		||||
  esac
 | 
			
		||||
  symlink_to_dir "$GNULIB_SRCDIR" $file $dst \
 | 
			
		||||
    || die "failed to symlink $file"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
if test $with_gettext = yes; then
 | 
			
		||||
  # Create gettext configuration.
 | 
			
		||||
  echo "$0: Creating po/Makevars from po/Makevars.template ..."
 | 
			
		||||
  rm -f po/Makevars
 | 
			
		||||
  sed '
 | 
			
		||||
    /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
 | 
			
		||||
    /^COPYRIGHT_HOLDER *=/s/=.*/= '"$COPYRIGHT_HOLDER"'/
 | 
			
		||||
    /^MSGID_BUGS_ADDRESS *=/s|=.*|= '"$MSGID_BUGS_ADDRESS"'|
 | 
			
		||||
    /^XGETTEXT_OPTIONS *=/{
 | 
			
		||||
      s/$/ \\/
 | 
			
		||||
      a\
 | 
			
		||||
          '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
 | 
			
		||||
    }
 | 
			
		||||
  ' po/Makevars.template >po/Makevars \
 | 
			
		||||
    || die 'cannot generate po/Makevars'
 | 
			
		||||
 | 
			
		||||
  # If the 'gettext' module is in use, grab the latest Makefile.in.in.
 | 
			
		||||
  # If only the 'gettext-h' module is in use, assume autopoint already
 | 
			
		||||
  # put the correct version of this file into place.
 | 
			
		||||
  case $gnulib_modules in
 | 
			
		||||
  *gettext-h*) ;;
 | 
			
		||||
  *gettext*)
 | 
			
		||||
    cp $GNULIB_SRCDIR/build-aux/po/Makefile.in.in po/Makefile.in.in \
 | 
			
		||||
      || die "cannot create po/Makefile.in.in"
 | 
			
		||||
    ;;
 | 
			
		||||
  esac
 | 
			
		||||
 | 
			
		||||
  if test -d runtime-po; then
 | 
			
		||||
    # Similarly for runtime-po/Makevars, but not quite the same.
 | 
			
		||||
    rm -f runtime-po/Makevars
 | 
			
		||||
    sed '
 | 
			
		||||
      /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
 | 
			
		||||
      /^subdir *=.*/s/=.*/= runtime-po/
 | 
			
		||||
      /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
 | 
			
		||||
      /^XGETTEXT_OPTIONS *=/{
 | 
			
		||||
        s/$/ \\/
 | 
			
		||||
        a\
 | 
			
		||||
            '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
 | 
			
		||||
      }
 | 
			
		||||
    ' po/Makevars.template >runtime-po/Makevars \
 | 
			
		||||
    || die 'cannot generate runtime-po/Makevars'
 | 
			
		||||
 | 
			
		||||
    # Copy identical files from po to runtime-po.
 | 
			
		||||
    (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
 | 
			
		||||
  fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
bootstrap_epilogue
 | 
			
		||||
 | 
			
		||||
echo "$0: done.  Now you can run './configure'."
 | 
			
		||||
 | 
			
		||||
# Local variables:
 | 
			
		||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
 | 
			
		||||
# time-stamp-start: "scriptversion="
 | 
			
		||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
 | 
			
		||||
# time-stamp-time-zone: "UTC"
 | 
			
		||||
# time-stamp-end: "; # UTC"
 | 
			
		||||
# End:
 | 
			
		||||
							
								
								
									
										249
									
								
								bootstrap.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										249
									
								
								bootstrap.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,249 @@
 | 
			
		||||
# Bootstrap configuration.
 | 
			
		||||
 | 
			
		||||
# Copyright (C) 2010-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 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-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
 | 
			
		||||
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
 | 
			
		||||
send
 | 
			
		||||
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
 | 
			
		||||
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 new gnulib/m4/ dir
 | 
			
		||||
#   put *.[ch] files in new gnulib/lib/ dir
 | 
			
		||||
#   import gnulib tests in new gnulib/tests/ dir
 | 
			
		||||
gnulib_name=libgnu
 | 
			
		||||
m4_base=gnulib/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
 | 
			
		||||
 | 
			
		||||
# Convince bootstrap to use multiple m4 directories.
 | 
			
		||||
: ${ACLOCAL=aclocal}
 | 
			
		||||
ACLOCAL="$ACLOCAL -I m4"
 | 
			
		||||
export ACLOCAL
 | 
			
		||||
 | 
			
		||||
# 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.  As a special case, we want
 | 
			
		||||
# to require the equivalent of the Fedora python-devel package, but
 | 
			
		||||
# RHEL 5 lacks the witness python-config package; we hack around that
 | 
			
		||||
# old environment below.
 | 
			
		||||
buildreq="\
 | 
			
		||||
autoconf   2.59
 | 
			
		||||
automake   1.9.6
 | 
			
		||||
autopoint  -
 | 
			
		||||
gettext    0.17
 | 
			
		||||
git        1.5.5
 | 
			
		||||
gzip       -
 | 
			
		||||
libtool    -
 | 
			
		||||
patch      -
 | 
			
		||||
perl       5.5
 | 
			
		||||
pkg-config -
 | 
			
		||||
python-config -
 | 
			
		||||
rpcgen     -
 | 
			
		||||
tar        -
 | 
			
		||||
xmllint	   -
 | 
			
		||||
xsltproc   -
 | 
			
		||||
"
 | 
			
		||||
# Use rpm as a fallback to bypass the bootstrap probe for python-config,
 | 
			
		||||
# for the sake of RHEL 5; without requiring it on newer systems that
 | 
			
		||||
# have python-config to begin with.
 | 
			
		||||
if `(${PYTHON_CONFIG-python-config} --version;
 | 
			
		||||
     test $? -lt 126 || rpm -q python-devel) >/dev/null 2>&1`; then
 | 
			
		||||
  PYTHON_CONFIG=true
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# 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_epilogue()
 | 
			
		||||
{
 | 
			
		||||
  # Change paths in gnulib/tests/gnulib.mk from "../../.." to "../..",
 | 
			
		||||
  # then ensure that gnulib/tests/Makefile.in is up-to-date.
 | 
			
		||||
  m=gnulib/tests/gnulib.mk
 | 
			
		||||
  sed 's,\.\./\.\./\.\.,../..,g' $m > $m-t
 | 
			
		||||
  mv -f $m-t $m
 | 
			
		||||
  ${AUTOMAKE-automake} gnulib/tests/Makefile
 | 
			
		||||
}
 | 
			
		||||
@@ -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
 | 
			
		||||
@@ -1,127 +0,0 @@
 | 
			
		||||
## Copyright (C) 2009-2010, 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/>.
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# Generated by running the following on Fedora 26:
 | 
			
		||||
#
 | 
			
		||||
#  nm -D --defined-only /lib64/libc.so.6 \
 | 
			
		||||
#      | grep '_r$' \
 | 
			
		||||
#      | awk '{print $3}' \
 | 
			
		||||
#      | grep -v __ \
 | 
			
		||||
#      | grep -v qsort \ # Red herring since we don't need to pass extra args to qsort comparator
 | 
			
		||||
#      | grep -v readdir \ # This is safe as long as each DIR * instance is only used by one thread
 | 
			
		||||
#      | sort \
 | 
			
		||||
#      | uniq \
 | 
			
		||||
#      | sed -e 's/_r//'
 | 
			
		||||
#
 | 
			
		||||
# Also manually add in all inet_* functions some of which
 | 
			
		||||
# are not threadsafe and do not have _r variants. They are
 | 
			
		||||
# all deprecated in favour of getnameinfo/getaddrinfo
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
NON_REENTRANT =
 | 
			
		||||
NON_REENTRANT += asctime
 | 
			
		||||
NON_REENTRANT += ctime
 | 
			
		||||
NON_REENTRANT += drand48
 | 
			
		||||
NON_REENTRANT += ecvt
 | 
			
		||||
NON_REENTRANT += erand48
 | 
			
		||||
NON_REENTRANT += ether_aton
 | 
			
		||||
NON_REENTRANT += ether_ntoa
 | 
			
		||||
NON_REENTRANT += fcvt
 | 
			
		||||
NON_REENTRANT += fgetgrent
 | 
			
		||||
NON_REENTRANT += fgetpwent
 | 
			
		||||
NON_REENTRANT += fgetsgent
 | 
			
		||||
NON_REENTRANT += fgetspent
 | 
			
		||||
NON_REENTRANT += getaliasbyname
 | 
			
		||||
NON_REENTRANT += getaliasent
 | 
			
		||||
NON_REENTRANT += getdate
 | 
			
		||||
NON_REENTRANT += getgrent
 | 
			
		||||
NON_REENTRANT += getgrgid
 | 
			
		||||
NON_REENTRANT += getgrnam
 | 
			
		||||
NON_REENTRANT += gethostbyaddr
 | 
			
		||||
NON_REENTRANT += gethostbyname2
 | 
			
		||||
NON_REENTRANT += gethostbyname
 | 
			
		||||
NON_REENTRANT += gethostent
 | 
			
		||||
NON_REENTRANT += getlogin
 | 
			
		||||
NON_REENTRANT += getmntent
 | 
			
		||||
NON_REENTRANT += getnetbyaddr
 | 
			
		||||
NON_REENTRANT += getnetbyname
 | 
			
		||||
NON_REENTRANT += getnetent
 | 
			
		||||
NON_REENTRANT += getnetgrent
 | 
			
		||||
NON_REENTRANT += getprotobyname
 | 
			
		||||
NON_REENTRANT += getprotobynumber
 | 
			
		||||
NON_REENTRANT += getprotoent
 | 
			
		||||
NON_REENTRANT += getpwent
 | 
			
		||||
NON_REENTRANT += getpwnam
 | 
			
		||||
NON_REENTRANT += getpwuid
 | 
			
		||||
NON_REENTRANT += getrpcbyname
 | 
			
		||||
NON_REENTRANT += getrpcbynumber
 | 
			
		||||
NON_REENTRANT += getrpcent
 | 
			
		||||
NON_REENTRANT += getservbyname
 | 
			
		||||
NON_REENTRANT += getservbyport
 | 
			
		||||
NON_REENTRANT += getservent
 | 
			
		||||
NON_REENTRANT += getsgent
 | 
			
		||||
NON_REENTRANT += getsgnam
 | 
			
		||||
NON_REENTRANT += getspent
 | 
			
		||||
NON_REENTRANT += getspnam
 | 
			
		||||
NON_REENTRANT += getutent
 | 
			
		||||
NON_REENTRANT += getutid
 | 
			
		||||
NON_REENTRANT += getutline
 | 
			
		||||
NON_REENTRANT += gmtime
 | 
			
		||||
NON_REENTRANT += hcreate
 | 
			
		||||
NON_REENTRANT += hdestroy
 | 
			
		||||
NON_REENTRANT += hsearch
 | 
			
		||||
NON_REENTRANT += initstate
 | 
			
		||||
NON_REENTRANT += jrand48
 | 
			
		||||
NON_REENTRANT += lcong48
 | 
			
		||||
NON_REENTRANT += localtime
 | 
			
		||||
NON_REENTRANT += lrand48
 | 
			
		||||
NON_REENTRANT += mrand48
 | 
			
		||||
NON_REENTRANT += nrand48
 | 
			
		||||
NON_REENTRANT += ptsname
 | 
			
		||||
NON_REENTRANT += qecvt
 | 
			
		||||
NON_REENTRANT += qfcvt
 | 
			
		||||
NON_REENTRANT += random
 | 
			
		||||
NON_REENTRANT += rand
 | 
			
		||||
NON_REENTRANT += seed48
 | 
			
		||||
NON_REENTRANT += setstate
 | 
			
		||||
NON_REENTRANT += sgetsgent
 | 
			
		||||
NON_REENTRANT += sgetspent
 | 
			
		||||
NON_REENTRANT += srand48
 | 
			
		||||
NON_REENTRANT += srandom
 | 
			
		||||
NON_REENTRANT += strerror
 | 
			
		||||
NON_REENTRANT += strtok
 | 
			
		||||
NON_REENTRANT += tmpnam
 | 
			
		||||
NON_REENTRANT += ttyname
 | 
			
		||||
NON_REENTRANT += inet_addr
 | 
			
		||||
NON_REENTRANT += inet_aton
 | 
			
		||||
NON_REENTRANT += inet_lnaof
 | 
			
		||||
NON_REENTRANT += inet_makeaddr
 | 
			
		||||
NON_REENTRANT += inet_netof
 | 
			
		||||
NON_REENTRANT += inet_network
 | 
			
		||||
NON_REENTRANT += inet_nsap_addr
 | 
			
		||||
NON_REENTRANT += inet_nsap_ntoa
 | 
			
		||||
NON_REENTRANT += inet_ntoa
 | 
			
		||||
NON_REENTRANT += inet_ntop
 | 
			
		||||
NON_REENTRANT += inet_pton
 | 
			
		||||
 | 
			
		||||
# Separate two nothings by space to get one space in a variable
 | 
			
		||||
space =
 | 
			
		||||
space +=
 | 
			
		||||
# The space needs to be in a variable otherwise it would be ignored.
 | 
			
		||||
# And there must be no spaces around the commas because they would
 | 
			
		||||
# not be ignored, logically.
 | 
			
		||||
NON_REENTRANT_RE=$(subst $(space),|,$(NON_REENTRANT))
 | 
			
		||||
							
								
								
									
										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: $!";
 | 
			
		||||
							
								
								
									
										116
									
								
								build-aux/bracket-spacing.pl
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										116
									
								
								build-aux/bracket-spacing.pl
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,116 @@
 | 
			
		||||
#!/usr/bin/perl
 | 
			
		||||
#
 | 
			
		||||
# bracket-spacing.pl: Report any usage of 'function (..args..)'
 | 
			
		||||
#
 | 
			
		||||
# 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;
 | 
			
		||||
 | 
			
		||||
my $ret = 0;
 | 
			
		||||
my $incomment = 0;
 | 
			
		||||
 | 
			
		||||
foreach my $file (@ARGV) {
 | 
			
		||||
    open FILE, $file;
 | 
			
		||||
 | 
			
		||||
    while (defined (my $line = <FILE>)) {
 | 
			
		||||
        my $data = $line;
 | 
			
		||||
 | 
			
		||||
        # Kill any quoted strongs
 | 
			
		||||
        $data =~ s,".*?","XXX",g;
 | 
			
		||||
 | 
			
		||||
        # Kill any C++ style comments
 | 
			
		||||
        $data =~ s,//.*$,//,;
 | 
			
		||||
 | 
			
		||||
        next if $data =~ /^#/;
 | 
			
		||||
 | 
			
		||||
        # Kill contents of multi-line comments
 | 
			
		||||
        # and detect end of multi-line comments
 | 
			
		||||
        if ($incomment) {
 | 
			
		||||
            if ($data =~ m,\*/,) {
 | 
			
		||||
                $incomment = 0;
 | 
			
		||||
                $data =~ s,^.*\*/,*/,;
 | 
			
		||||
            } else {
 | 
			
		||||
                $data = "";
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # Kill single line comments, and detect
 | 
			
		||||
        # start of multi-line comments
 | 
			
		||||
        if ($data =~ m,/\*.*\*/,) {
 | 
			
		||||
            $data =~ s,/\*.*\*/,/* */,;
 | 
			
		||||
        } elsif ($data =~ m,/\*,) {
 | 
			
		||||
            $incomment = 1;
 | 
			
		||||
            $data =~ s,/\*.*,/*,;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # We need to match things like
 | 
			
		||||
        #
 | 
			
		||||
        #  int foo (int bar, bool wizz);
 | 
			
		||||
        #  foo (bar, wizz);
 | 
			
		||||
        #
 | 
			
		||||
        # but not match things like:
 | 
			
		||||
        #
 | 
			
		||||
        #  typedef int (*foo)(bar wizz)
 | 
			
		||||
        #
 | 
			
		||||
        # we can't do this (efficiently) without
 | 
			
		||||
        # missing things like
 | 
			
		||||
        #
 | 
			
		||||
        #  foo (*bar, wizz);
 | 
			
		||||
        #
 | 
			
		||||
        while ($data =~ /(\w+)\s\((?!\*)/) {
 | 
			
		||||
            my $kw = $1;
 | 
			
		||||
 | 
			
		||||
            # Allow space after keywords only
 | 
			
		||||
            if ($kw =~ /^(if|for|while|switch|return)$/) {
 | 
			
		||||
                $data =~ s/($kw\s\()/XXX(/;
 | 
			
		||||
            } else {
 | 
			
		||||
                print "$file:$.: $line";
 | 
			
		||||
                $ret = 1;
 | 
			
		||||
                last;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # Require whitespace immediately after keywords,
 | 
			
		||||
        # but none after the opening bracket
 | 
			
		||||
        while ($data =~ /(if|for|while|switch|return)\(/ ||
 | 
			
		||||
               $data =~ /(if|for|while|switch|return)\s+\(\s/) {
 | 
			
		||||
            print "$file:$.: $line";
 | 
			
		||||
            $ret = 1;
 | 
			
		||||
            last;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # Forbid whitespace between )( of a function typedef
 | 
			
		||||
        while ($data =~ /\(\*\w+\)\s+\(/) {
 | 
			
		||||
            print "$file:$.: $line";
 | 
			
		||||
            $ret = 1;
 | 
			
		||||
            last;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # Forbid whitespace following ( or prior to )
 | 
			
		||||
        while ($data =~ /\S\s+\)/ ||
 | 
			
		||||
               $data =~ /\(\s+\S/) {
 | 
			
		||||
            print "$file:$.: $line";
 | 
			
		||||
            $ret = 1;
 | 
			
		||||
            last;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    close FILE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
exit $ret;
 | 
			
		||||
@@ -1,162 +0,0 @@
 | 
			
		||||
#!/usr/bin/env perl
 | 
			
		||||
#
 | 
			
		||||
# check-spacing.pl: Report any usage of 'function (..args..)'
 | 
			
		||||
# Also check for other syntax issues, such as correct use of ';'
 | 
			
		||||
#
 | 
			
		||||
# 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/>.
 | 
			
		||||
 | 
			
		||||
use strict;
 | 
			
		||||
use warnings;
 | 
			
		||||
 | 
			
		||||
my $ret = 0;
 | 
			
		||||
my $incomment = 0;
 | 
			
		||||
 | 
			
		||||
foreach my $file (@ARGV) {
 | 
			
		||||
    open FILE, $file;
 | 
			
		||||
 | 
			
		||||
    while (defined (my $line = <FILE>)) {
 | 
			
		||||
        my $data = $line;
 | 
			
		||||
        # For temporary modifications
 | 
			
		||||
        my $tmpdata;
 | 
			
		||||
 | 
			
		||||
        # Kill any quoted , ; = or "
 | 
			
		||||
        $data =~ s/'[";,=]'/'X'/g;
 | 
			
		||||
 | 
			
		||||
        # Kill any quoted strings
 | 
			
		||||
        $data =~ s,"(?:[^\\\"]|\\.)*","XXX",g;
 | 
			
		||||
 | 
			
		||||
        next if $data =~ /^#/;
 | 
			
		||||
 | 
			
		||||
        # Kill contents of multi-line comments
 | 
			
		||||
        # and detect end of multi-line comments
 | 
			
		||||
        if ($incomment) {
 | 
			
		||||
            if ($data =~ m,\*/,) {
 | 
			
		||||
                $incomment = 0;
 | 
			
		||||
                $data =~ s,^.*\*/,*/,;
 | 
			
		||||
            } else {
 | 
			
		||||
                $data = "";
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # Kill single line comments, and detect
 | 
			
		||||
        # start of multi-line comments
 | 
			
		||||
        if ($data =~ m,/\*.*\*/,) {
 | 
			
		||||
            $data =~ s,/\*.*\*/,/* */,;
 | 
			
		||||
        } elsif ($data =~ m,/\*,) {
 | 
			
		||||
            $incomment = 1;
 | 
			
		||||
            $data =~ s,/\*.*,/*,;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # We need to match things like
 | 
			
		||||
        #
 | 
			
		||||
        #  int foo (int bar, bool wizz);
 | 
			
		||||
        #  foo (bar, wizz);
 | 
			
		||||
        #
 | 
			
		||||
        # but not match things like:
 | 
			
		||||
        #
 | 
			
		||||
        #  typedef int (*foo)(bar wizz)
 | 
			
		||||
        #
 | 
			
		||||
        # we can't do this (efficiently) without
 | 
			
		||||
        # missing things like
 | 
			
		||||
        #
 | 
			
		||||
        #  foo (*bar, wizz);
 | 
			
		||||
        #
 | 
			
		||||
        # We also don't want to spoil the $data so it can be used
 | 
			
		||||
        # later on.
 | 
			
		||||
        $tmpdata = $data;
 | 
			
		||||
        while ($tmpdata =~ /(\w+)\s\((?!\*)/) {
 | 
			
		||||
            my $kw = $1;
 | 
			
		||||
 | 
			
		||||
            # Allow space after keywords only
 | 
			
		||||
            if ($kw =~ /^(?:if|for|while|switch|return)$/) {
 | 
			
		||||
                $tmpdata =~ s/(?:$kw\s\()/XXX(/;
 | 
			
		||||
            } else {
 | 
			
		||||
                print "Whitespace after non-keyword:\n";
 | 
			
		||||
                print "$file:$.: $line";
 | 
			
		||||
                $ret = 1;
 | 
			
		||||
                last;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # Require whitespace immediately after keywords
 | 
			
		||||
        if ($data =~ /\b(?:if|for|while|switch|return)\(/) {
 | 
			
		||||
            print "No whitespace after keyword:\n";
 | 
			
		||||
            print "$file:$.: $line";
 | 
			
		||||
            $ret = 1;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # Forbid whitespace between )( of a function typedef
 | 
			
		||||
        if ($data =~ /\(\*\w+\)\s+\(/) {
 | 
			
		||||
            print "Whitespace between ')' and '(':\n";
 | 
			
		||||
            print "$file:$.: $line";
 | 
			
		||||
            $ret = 1;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # Forbid whitespace following ( or prior to )
 | 
			
		||||
        # but allow whitespace before ) on a single line
 | 
			
		||||
        # (optionally followed by a semicolon)
 | 
			
		||||
        if (($data =~ /\s\)/ && not $data =~ /^\s+\);?$/) ||
 | 
			
		||||
            $data =~ /\((?!$)\s/) {
 | 
			
		||||
            print "Whitespace after '(' or before ')':\n";
 | 
			
		||||
            print "$file:$.: $line";
 | 
			
		||||
            $ret = 1;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # Forbid whitespace before ";" or ",". Things like below are allowed:
 | 
			
		||||
        #
 | 
			
		||||
        # 1) The expression is empty for "for" loop. E.g.
 | 
			
		||||
        #   for (i = 0; ; i++)
 | 
			
		||||
        #
 | 
			
		||||
        # 2) An empty statement. E.g.
 | 
			
		||||
        #   while (write(statuswrite, &status, 1) == -1 &&
 | 
			
		||||
        #          errno == EINTR)
 | 
			
		||||
        #       ;
 | 
			
		||||
        #
 | 
			
		||||
        if ($data =~ /\s[;,]/) {
 | 
			
		||||
            unless ($data =~ /\S; ; / ||
 | 
			
		||||
                    $data =~ /^\s+;/) {
 | 
			
		||||
                print "Whitespace before semicolon or comma:\n";
 | 
			
		||||
                print "$file:$.: $line";
 | 
			
		||||
                $ret = 1;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # Require EOL, macro line continuation, or whitespace after ";".
 | 
			
		||||
        # Allow "for (;;)" as an exception.
 | 
			
		||||
        if ($data =~ /;[^	 \\\n;)]/) {
 | 
			
		||||
            print "Invalid character after semicolon:\n";
 | 
			
		||||
            print "$file:$.: $line";
 | 
			
		||||
            $ret = 1;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # Require EOL, space, or enum/struct end after comma.
 | 
			
		||||
        if ($data =~ /,[^ \\\n)}]/) {
 | 
			
		||||
            print "Invalid character after comma:\n";
 | 
			
		||||
            print "$file:$.: $line";
 | 
			
		||||
            $ret = 1;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # Require spaces around assignment '=', compounds and '=='
 | 
			
		||||
        if ($data =~ /[^ ]\b[!<>&|\-+*\/%\^=]?=/ ||
 | 
			
		||||
            $data =~ /=[^= \\\n]/) {
 | 
			
		||||
            print "Spacing around '=' or '==':\n";
 | 
			
		||||
            print "$file:$.: $line";
 | 
			
		||||
            $ret = 1;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    close FILE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
exit $ret;
 | 
			
		||||
@@ -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', check: true)
 | 
			
		||||
  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
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										856
									
								
								cfg.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										856
									
								
								cfg.mk
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,856 @@
 | 
			
		||||
# Customize Makefile.maint.                           -*- makefile -*-
 | 
			
		||||
# Copyright (C) 2008-2013 Red Hat, Inc.
 | 
			
		||||
# Copyright (C) 2003-2008 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
 | 
			
		||||
# <http://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
# Use alpha.gnu.org for alpha and beta releases.
 | 
			
		||||
# Use ftp.gnu.org for major releases.
 | 
			
		||||
gnu_ftp_host-alpha = alpha.gnu.org
 | 
			
		||||
gnu_ftp_host-beta = alpha.gnu.org
 | 
			
		||||
gnu_ftp_host-major = ftp.gnu.org
 | 
			
		||||
gnu_rel_host = $(gnu_ftp_host-$(RELEASE_TYPE))
 | 
			
		||||
 | 
			
		||||
url_dir_list = \
 | 
			
		||||
  ftp://$(gnu_rel_host)/gnu/coreutils
 | 
			
		||||
 | 
			
		||||
# We use .gnulib, not gnulib.
 | 
			
		||||
gnulib_dir = $(srcdir)/.gnulib
 | 
			
		||||
 | 
			
		||||
# List of additional files that we want to pick up in our POTFILES.in
 | 
			
		||||
# This is all gnulib files, as well as generated files for RPC code.
 | 
			
		||||
generated_files = \
 | 
			
		||||
  $(srcdir)/daemon/*_dispatch.h \
 | 
			
		||||
  $(srcdir)/src/remote/*_client_bodies.h \
 | 
			
		||||
  $(srcdir)/src/remote/*_protocol.[ch] \
 | 
			
		||||
  $(srcdir)/gnulib/lib/*.[ch]
 | 
			
		||||
 | 
			
		||||
# We haven't converted all scripts to using gnulib's init.sh yet.
 | 
			
		||||
_test_script_regex = \<\(init\|test-lib\)\.sh\>
 | 
			
		||||
 | 
			
		||||
# Tests not to run as part of "make distcheck".
 | 
			
		||||
local-checks-to-skip =			\
 | 
			
		||||
  changelog-check			\
 | 
			
		||||
  makefile-check			\
 | 
			
		||||
  makefile_path_separator_check		\
 | 
			
		||||
  patch-check				\
 | 
			
		||||
  sc_GPL_version			\
 | 
			
		||||
  sc_always_defined_macros		\
 | 
			
		||||
  sc_cast_of_alloca_return_value	\
 | 
			
		||||
  sc_cross_check_PATH_usage_in_tests	\
 | 
			
		||||
  sc_dd_max_sym_length			\
 | 
			
		||||
  sc_error_exit_success			\
 | 
			
		||||
  sc_file_system			\
 | 
			
		||||
  sc_immutable_NEWS			\
 | 
			
		||||
  sc_makefile_path_separator_check	\
 | 
			
		||||
  sc_obsolete_symbols			\
 | 
			
		||||
  sc_prohibit_S_IS_definition		\
 | 
			
		||||
  sc_prohibit_atoi_atof			\
 | 
			
		||||
  sc_prohibit_hash_without_use		\
 | 
			
		||||
  sc_prohibit_jm_in_m4			\
 | 
			
		||||
  sc_prohibit_quote_without_use		\
 | 
			
		||||
  sc_prohibit_quotearg_without_use	\
 | 
			
		||||
  sc_prohibit_stat_st_blocks		\
 | 
			
		||||
  sc_root_tests				\
 | 
			
		||||
  sc_space_tab				\
 | 
			
		||||
  sc_sun_os_names			\
 | 
			
		||||
  sc_system_h_headers			\
 | 
			
		||||
  sc_texinfo_acronym			\
 | 
			
		||||
  sc_tight_scope			\
 | 
			
		||||
  sc_two_space_separator_in_usage	\
 | 
			
		||||
  sc_error_message_uppercase		\
 | 
			
		||||
  sc_program_name			\
 | 
			
		||||
  sc_require_test_exit_idiom		\
 | 
			
		||||
  sc_makefile_check			\
 | 
			
		||||
  sc_useless_cpp_parens
 | 
			
		||||
 | 
			
		||||
# Most developers don't run 'make distcheck'.  We want the official
 | 
			
		||||
# dist to be secure, but don't want to penalize other developers
 | 
			
		||||
# using a distro that has not yet picked up the automake fix.
 | 
			
		||||
# FIXME remove this ifeq (making the syntax check unconditional)
 | 
			
		||||
# once fixed automake (1.11.6 or 1.12.2+) is more common.
 | 
			
		||||
ifeq ($(filter dist%, $(MAKECMDGOALS)), )
 | 
			
		||||
local-checks-to-skip +=	sc_vulnerable_makefile_CVE-2012-3386
 | 
			
		||||
else
 | 
			
		||||
distdir: sc_vulnerable_makefile_CVE-2012-3386.z
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
# Files that should never cause syntax check failures.
 | 
			
		||||
VC_LIST_ALWAYS_EXCLUDE_REGEX = \
 | 
			
		||||
  (^(HACKING|docs/(news\.html\.in|.*\.patch))|\.po)$$
 | 
			
		||||
 | 
			
		||||
# Functions like free() that are no-ops on NULL arguments.
 | 
			
		||||
useless_free_options =				\
 | 
			
		||||
  --name=VBOX_UTF16_FREE			\
 | 
			
		||||
  --name=VBOX_UTF8_FREE				\
 | 
			
		||||
  --name=VBOX_COM_UNALLOC_MEM			\
 | 
			
		||||
  --name=VIR_FREE				\
 | 
			
		||||
  --name=qemuCapsFree				\
 | 
			
		||||
  --name=qemuMigrationCookieFree                \
 | 
			
		||||
  --name=qemuMigrationCookieGraphicsFree        \
 | 
			
		||||
  --name=sexpr_free				\
 | 
			
		||||
  --name=usbFreeDevice                          \
 | 
			
		||||
  --name=virBandwidthDefFree			\
 | 
			
		||||
  --name=virBitmapFree                          \
 | 
			
		||||
  --name=virCPUDefFree				\
 | 
			
		||||
  --name=virCapabilitiesFree			\
 | 
			
		||||
  --name=virCapabilitiesFreeGuest		\
 | 
			
		||||
  --name=virCapabilitiesFreeGuestDomain		\
 | 
			
		||||
  --name=virCapabilitiesFreeGuestFeature	\
 | 
			
		||||
  --name=virCapabilitiesFreeGuestMachine	\
 | 
			
		||||
  --name=virCapabilitiesFreeHostNUMACell	\
 | 
			
		||||
  --name=virCapabilitiesFreeMachines		\
 | 
			
		||||
  --name=virCgroupFree				\
 | 
			
		||||
  --name=virCommandFree				\
 | 
			
		||||
  --name=virConfFreeList			\
 | 
			
		||||
  --name=virConfFreeValue			\
 | 
			
		||||
  --name=virDomainActualNetDefFree		\
 | 
			
		||||
  --name=virDomainChrDefFree			\
 | 
			
		||||
  --name=virDomainChrSourceDefFree		\
 | 
			
		||||
  --name=virDomainControllerDefFree		\
 | 
			
		||||
  --name=virDomainDefFree			\
 | 
			
		||||
  --name=virDomainDeviceDefFree			\
 | 
			
		||||
  --name=virDomainDiskDefFree			\
 | 
			
		||||
  --name=virDomainEventCallbackListFree		\
 | 
			
		||||
  --name=virDomainEventFree			\
 | 
			
		||||
  --name=virDomainEventQueueFree		\
 | 
			
		||||
  --name=virDomainEventStateFree		\
 | 
			
		||||
  --name=virDomainFSDefFree			\
 | 
			
		||||
  --name=virDomainGraphicsDefFree		\
 | 
			
		||||
  --name=virDomainHostdevDefFree		\
 | 
			
		||||
  --name=virDomainInputDefFree			\
 | 
			
		||||
  --name=virDomainNetDefFree			\
 | 
			
		||||
  --name=virDomainObjFree			\
 | 
			
		||||
  --name=virDomainSmartcardDefFree		\
 | 
			
		||||
  --name=virDomainSnapshotDefFree		\
 | 
			
		||||
  --name=virDomainSnapshotObjFree		\
 | 
			
		||||
  --name=virDomainSoundDefFree			\
 | 
			
		||||
  --name=virDomainVideoDefFree			\
 | 
			
		||||
  --name=virDomainWatchdogDefFree		\
 | 
			
		||||
  --name=virFileDirectFdFree			\
 | 
			
		||||
  --name=virHashFree				\
 | 
			
		||||
  --name=virInterfaceDefFree			\
 | 
			
		||||
  --name=virInterfaceIpDefFree			\
 | 
			
		||||
  --name=virInterfaceObjFree			\
 | 
			
		||||
  --name=virInterfaceProtocolDefFree		\
 | 
			
		||||
  --name=virJSONValueFree			\
 | 
			
		||||
  --name=virLastErrFreeData			\
 | 
			
		||||
  --name=virNetMessageFree                      \
 | 
			
		||||
  --name=virNetServerMDNSFree                   \
 | 
			
		||||
  --name=virNetServerMDNSEntryFree              \
 | 
			
		||||
  --name=virNetServerMDNSGroupFree              \
 | 
			
		||||
  --name=virNWFilterDefFree			\
 | 
			
		||||
  --name=virNWFilterEntryFree			\
 | 
			
		||||
  --name=virNWFilterHashTableFree		\
 | 
			
		||||
  --name=virNWFilterIPAddrLearnReqFree		\
 | 
			
		||||
  --name=virNWFilterIncludeDefFree		\
 | 
			
		||||
  --name=virNWFilterObjFree			\
 | 
			
		||||
  --name=virNWFilterRuleDefFree			\
 | 
			
		||||
  --name=virNWFilterRuleInstFree		\
 | 
			
		||||
  --name=virNetworkDefFree			\
 | 
			
		||||
  --name=virNetworkObjFree			\
 | 
			
		||||
  --name=virNodeDeviceDefFree			\
 | 
			
		||||
  --name=virNodeDeviceObjFree			\
 | 
			
		||||
  --name=virObjectUnref                         \
 | 
			
		||||
  --name=virObjectFreeCallback                  \
 | 
			
		||||
  --name=virSecretDefFree			\
 | 
			
		||||
  --name=virStorageEncryptionFree		\
 | 
			
		||||
  --name=virStorageEncryptionSecretFree		\
 | 
			
		||||
  --name=virStorageFileFreeMetadata		\
 | 
			
		||||
  --name=virStoragePoolDefFree			\
 | 
			
		||||
  --name=virStoragePoolObjFree			\
 | 
			
		||||
  --name=virStoragePoolSourceFree		\
 | 
			
		||||
  --name=virStorageVolDefFree			\
 | 
			
		||||
  --name=virThreadPoolFree			\
 | 
			
		||||
  --name=xmlBufferFree				\
 | 
			
		||||
  --name=xmlFree				\
 | 
			
		||||
  --name=xmlFreeDoc				\
 | 
			
		||||
  --name=xmlFreeNode				\
 | 
			
		||||
  --name=xmlXPathFreeContext			\
 | 
			
		||||
  --name=xmlXPathFreeObject
 | 
			
		||||
 | 
			
		||||
# The following template was generated by this command:
 | 
			
		||||
# make ID && aid free|grep '^vi'|sed 's/ .*//;s/^/#   /'
 | 
			
		||||
# N virBufferFreeAndReset
 | 
			
		||||
# y virCPUDefFree
 | 
			
		||||
# y virCapabilitiesFree
 | 
			
		||||
# y virCapabilitiesFreeGuest
 | 
			
		||||
# y virCapabilitiesFreeGuestDomain
 | 
			
		||||
# y virCapabilitiesFreeGuestFeature
 | 
			
		||||
# y virCapabilitiesFreeGuestMachine
 | 
			
		||||
# y virCapabilitiesFreeHostNUMACell
 | 
			
		||||
# y virCapabilitiesFreeMachines
 | 
			
		||||
# N virCapabilitiesFreeNUMAInfo FIXME
 | 
			
		||||
# y virCgroupFree
 | 
			
		||||
# N virConfFree               (diagnoses the "error")
 | 
			
		||||
# y virConfFreeList
 | 
			
		||||
# y virConfFreeValue
 | 
			
		||||
# y virDomainChrDefFree
 | 
			
		||||
# y virDomainControllerDefFree
 | 
			
		||||
# y virDomainDefFree
 | 
			
		||||
# y virDomainDeviceDefFree
 | 
			
		||||
# y virDomainDiskDefFree
 | 
			
		||||
# y virDomainEventCallbackListFree
 | 
			
		||||
# y virDomainEventFree
 | 
			
		||||
# y virDomainEventQueueFree
 | 
			
		||||
# y virDomainFSDefFree
 | 
			
		||||
# n virDomainFree
 | 
			
		||||
# n virDomainFreeName (can't fix -- returns int)
 | 
			
		||||
# y virDomainGraphicsDefFree
 | 
			
		||||
# y virDomainHostdevDefFree
 | 
			
		||||
# y virDomainInputDefFree
 | 
			
		||||
# y virDomainNetDefFree
 | 
			
		||||
# y virDomainObjFree
 | 
			
		||||
# y virDomainSnapshotDefFree
 | 
			
		||||
# n virDomainSnapshotFree (returns int)
 | 
			
		||||
# n virDomainSnapshotFreeName (returns int)
 | 
			
		||||
# y virDomainSnapshotObjFree
 | 
			
		||||
# y virDomainSoundDefFree
 | 
			
		||||
# y virDomainVideoDefFree
 | 
			
		||||
# y virDomainWatchdogDefFree
 | 
			
		||||
# n virDrvNodeGetCellsFreeMemory (returns int)
 | 
			
		||||
# n virDrvNodeGetFreeMemory (returns long long)
 | 
			
		||||
# n virFree - dereferences param
 | 
			
		||||
# n virFreeError
 | 
			
		||||
# n virHashFree (takes 2 args)
 | 
			
		||||
# y virInterfaceDefFree
 | 
			
		||||
# n virInterfaceFree (returns int)
 | 
			
		||||
# n virInterfaceFreeName
 | 
			
		||||
# y virInterfaceIpDefFree
 | 
			
		||||
# y virInterfaceObjFree
 | 
			
		||||
# n virInterfaceObjListFree
 | 
			
		||||
# y virInterfaceProtocolDefFree
 | 
			
		||||
# y virJSONValueFree
 | 
			
		||||
# y virLastErrFreeData
 | 
			
		||||
# y virNWFilterDefFree
 | 
			
		||||
# y virNWFilterEntryFree
 | 
			
		||||
# n virNWFilterFree (returns int)
 | 
			
		||||
# y virNWFilterHashTableFree
 | 
			
		||||
# y virNWFilterIPAddrLearnReqFree
 | 
			
		||||
# y virNWFilterIncludeDefFree
 | 
			
		||||
# n virNWFilterFreeName (returns int)
 | 
			
		||||
# y virNWFilterObjFree
 | 
			
		||||
# n virNWFilterObjListFree FIXME
 | 
			
		||||
# y virNWFilterRuleDefFree
 | 
			
		||||
# n virNWFilterRuleFreeInstanceData (typedef)
 | 
			
		||||
# y virNWFilterRuleInstFree
 | 
			
		||||
# y virNetworkDefFree
 | 
			
		||||
# n virNetworkFree (returns int)
 | 
			
		||||
# n virNetworkFreeName (returns int)
 | 
			
		||||
# y virNetworkObjFree
 | 
			
		||||
# n virNetworkObjListFree FIXME
 | 
			
		||||
# n virNodeDevCapsDefFree FIXME
 | 
			
		||||
# y virNodeDeviceDefFree
 | 
			
		||||
# n virNodeDeviceFree (returns int)
 | 
			
		||||
# y virNodeDeviceObjFree
 | 
			
		||||
# n virNodeDeviceObjListFree FIXME
 | 
			
		||||
# n virNodeGetCellsFreeMemory (returns int)
 | 
			
		||||
# n virNodeGetFreeMemory (returns non-void)
 | 
			
		||||
# y virSecretDefFree
 | 
			
		||||
# n virSecretFree (returns non-void)
 | 
			
		||||
# n virSecretFreeName (2 args)
 | 
			
		||||
# n virSecurityLabelDefFree FIXME
 | 
			
		||||
# n virStorageBackendDiskMakeFreeExtent (returns non-void)
 | 
			
		||||
# y virStorageEncryptionFree
 | 
			
		||||
# y virStorageEncryptionSecretFree
 | 
			
		||||
# n virStorageFreeType (enum)
 | 
			
		||||
# y virStoragePoolDefFree
 | 
			
		||||
# n virStoragePoolFree (returns non-void)
 | 
			
		||||
# n virStoragePoolFreeName (returns non-void)
 | 
			
		||||
# y virStoragePoolObjFree
 | 
			
		||||
# n virStoragePoolObjListFree FIXME
 | 
			
		||||
# y virStoragePoolSourceFree
 | 
			
		||||
# y virStorageVolDefFree
 | 
			
		||||
# n virStorageVolFree (returns non-void)
 | 
			
		||||
# n virStorageVolFreeName (returns non-void)
 | 
			
		||||
# n virStreamFree
 | 
			
		||||
 | 
			
		||||
# Avoid uses of write(2).  Either switch to streams (fwrite), or use
 | 
			
		||||
# the safewrite wrapper.
 | 
			
		||||
sc_avoid_write:
 | 
			
		||||
	@prohibit='\<write *\('						\
 | 
			
		||||
	in_vc_files='\.c$$'						\
 | 
			
		||||
	halt='consider using safewrite instead of write'		\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# In debug statements, print flags as bitmask and mode_t as octal.
 | 
			
		||||
sc_flags_debug:
 | 
			
		||||
	@prohibit='\<mode=%[0-9.]*[diux]'				\
 | 
			
		||||
	halt='use %o to debug mode_t values'				\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
	@prohibit='[Ff]lags=%[0-9.]*l*[diou]'				\
 | 
			
		||||
	halt='use %x to debug flag values'				\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Prefer 'unsigned int flags', along with checks for unknown flags.
 | 
			
		||||
# For historical reasons, we are stuck with 'unsigned long flags' in
 | 
			
		||||
# migration, so check for those known 4 instances and no more in public
 | 
			
		||||
# API.  Also check that no flags are marked unused, and 'unsigned' should
 | 
			
		||||
# appear before any declaration of a flags variable (achieved by
 | 
			
		||||
# prohibiting the word prior to the type from ending in anything other
 | 
			
		||||
# than d).  The existence of long long, and of documentation about
 | 
			
		||||
# flags, makes the regex in the third test slightly harder.
 | 
			
		||||
sc_flags_usage:
 | 
			
		||||
	@test "$$(cat $(srcdir)/include/libvirt/libvirt.h.in		\
 | 
			
		||||
	    $(srcdir)/include/libvirt/virterror.h			\
 | 
			
		||||
	    $(srcdir)/include/libvirt/libvirt-qemu.h			\
 | 
			
		||||
	    $(srcdir)/include/libvirt/libvirt-lxc.h			\
 | 
			
		||||
	  | grep -c '\(long\|unsigned\) flags')" != 4 &&		\
 | 
			
		||||
	  { echo '$(ME): new API should use "unsigned int flags"' 1>&2;	\
 | 
			
		||||
	    exit 1; } || :
 | 
			
		||||
	@prohibit=' flags ''ATTRIBUTE_UNUSED'				\
 | 
			
		||||
	halt='flags should be checked with virCheckFlags'		\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
	@prohibit='^[^@]*([^d] (int|long long)|[^dg] long) flags[;,)]'	\
 | 
			
		||||
	halt='flags should be unsigned'					\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Avoid functions that should only be called via macro counterparts.
 | 
			
		||||
sc_prohibit_internal_functions:
 | 
			
		||||
	@prohibit='vir(Free|AllocN?|ReallocN|(Insert|Delete)ElementsN|File(Close|Fclose|Fdopen)) *\(' \
 | 
			
		||||
	halt='use VIR_ macros instead of internal functions'		\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Avoid raw malloc and free, except in documentation comments.
 | 
			
		||||
sc_prohibit_raw_allocation:
 | 
			
		||||
	@prohibit='^.[^*].*\<((m|c|re)alloc|free) *\([^)]'		\
 | 
			
		||||
	halt='use VIR_ macros from viralloc.h instead of malloc/free'	\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Avoid functions that can lead to double-close bugs.
 | 
			
		||||
sc_prohibit_close:
 | 
			
		||||
	@prohibit='([^>.]|^)\<[fp]?close *\('				\
 | 
			
		||||
	halt='use VIR_{FORCE_}[F]CLOSE instead of [f]close'		\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
	@prohibit='\<fdopen *\('					\
 | 
			
		||||
	halt='use VIR_FDOPEN instead of fdopen'				\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Prefer virCommand for all child processes.
 | 
			
		||||
sc_prohibit_fork_wrappers:
 | 
			
		||||
	@prohibit='= *\<(fork|popen|system) *\('			\
 | 
			
		||||
	halt='use virCommand for child processes'			\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Prefer mkostemp with O_CLOEXEC.
 | 
			
		||||
sc_prohibit_mkstemp:
 | 
			
		||||
	@prohibit='[^"]\<mkstemps? *\('					\
 | 
			
		||||
	halt='use mkostemp with O_CLOEXEC instead of mkstemp'		\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# access with X_OK accepts directories, but we can't exec() those.
 | 
			
		||||
# access with F_OK or R_OK is okay, though.
 | 
			
		||||
sc_prohibit_access_xok:
 | 
			
		||||
	@prohibit='access''(at)? *\(.*X_OK'				\
 | 
			
		||||
	halt='use virFileIsExecutable instead of access''(,X_OK)'	\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Similar to the gnulib maint.mk rule for sc_prohibit_strcmp
 | 
			
		||||
# Use STREQLEN or STRPREFIX rather than comparing strncmp == 0, or != 0.
 | 
			
		||||
snp_ = strncmp *\(.+\)
 | 
			
		||||
sc_prohibit_strncmp:
 | 
			
		||||
	@prohibit='! *strncmp *\(|\<$(snp_) *[!=]=|[!=]= *$(snp_)'	\
 | 
			
		||||
	exclude=':# *define STR(N?EQLEN|PREFIX)\('			\
 | 
			
		||||
	halt='use STREQLEN or STRPREFIX instead of str''ncmp'		\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# strtol and friends are too easy to misuse
 | 
			
		||||
sc_prohibit_strtol:
 | 
			
		||||
	@prohibit='\bstrto(u?ll?|[ui]max) *\('				\
 | 
			
		||||
	exclude='exempt from syntax-check'				\
 | 
			
		||||
	halt='use virStrToLong_*, not strtol variants'			\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
	@prohibit='\bstrto[df] *\('					\
 | 
			
		||||
	exclude='exempt from syntax-check'				\
 | 
			
		||||
	halt='use virStrToDouble, not strtod variants'			\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Use virAsprintf rather than as'printf since *strp is undefined on error.
 | 
			
		||||
sc_prohibit_asprintf:
 | 
			
		||||
	@prohibit='\<v?a[s]printf\>'					\
 | 
			
		||||
	halt='use virAsprintf, not as'printf				\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Prefer virSetUIDGID.
 | 
			
		||||
sc_prohibit_setuid:
 | 
			
		||||
	@prohibit='\<set(re)?[ug]id\> *\('				\
 | 
			
		||||
	halt='use virSetUIDGID, not raw set*id'				\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Use snprintf rather than s'printf, even if buffer is provably large enough,
 | 
			
		||||
# since gnulib has more guarantees for snprintf portability
 | 
			
		||||
sc_prohibit_sprintf:
 | 
			
		||||
	@prohibit='\<[s]printf\>'					\
 | 
			
		||||
	halt='use snprintf, not s'printf				\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
sc_prohibit_readlink:
 | 
			
		||||
	@prohibit='\<readlink *\('					\
 | 
			
		||||
	halt='use virFileResolveLink, not readlink'			\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
sc_prohibit_gethostname:
 | 
			
		||||
	@prohibit='gethostname *\('					\
 | 
			
		||||
	halt='use virGetHostname, not gethostname'			\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
sc_prohibit_gettext_noop:
 | 
			
		||||
	@prohibit='gettext_noop *\('					\
 | 
			
		||||
	halt='use N_, not gettext_noop'					\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
sc_prohibit_VIR_ERR_NO_MEMORY:
 | 
			
		||||
	@prohibit='\<V''IR_ERR_NO_MEMORY\>'				\
 | 
			
		||||
	halt='use virReportOOMError, not V'IR_ERR_NO_MEMORY		\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
sc_prohibit_PATH_MAX:
 | 
			
		||||
	@prohibit='\<P''ATH_MAX\>'				\
 | 
			
		||||
	halt='dynamically allocate paths, do not use P'ATH_MAX	\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Use a subshell for each function, to give the optimal warning message.
 | 
			
		||||
include $(srcdir)/Makefile.nonreentrant
 | 
			
		||||
sc_prohibit_nonreentrant:
 | 
			
		||||
	@fail=0 ; \
 | 
			
		||||
	for i in $(NON_REENTRANT) ; \
 | 
			
		||||
	do \
 | 
			
		||||
	    (prohibit="\\<$$i *\\("					\
 | 
			
		||||
	     halt="use $${i}_r, not $$i"				\
 | 
			
		||||
	     $(_sc_search_regexp)					\
 | 
			
		||||
	    ) || fail=1;						\
 | 
			
		||||
	done ; \
 | 
			
		||||
	exit $$fail
 | 
			
		||||
 | 
			
		||||
# Prohibit the inclusion of <ctype.h>.
 | 
			
		||||
sc_prohibit_ctype_h:
 | 
			
		||||
	@prohibit='^# *include  *<ctype\.h>'				\
 | 
			
		||||
	halt="don't use ctype.h; instead, use c-ctype.h"		\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Insist on correct types for [pug]id.
 | 
			
		||||
sc_correct_id_types:
 | 
			
		||||
	@prohibit='\<(int|long) *[pug]id\>'				\
 | 
			
		||||
	halt="use pid_t for pid, uid_t for uid, gid_t for gid"		\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Forbid sizeof foo or sizeof (foo), require sizeof(foo)
 | 
			
		||||
sc_size_of_brackets:
 | 
			
		||||
	@prohibit='sizeof\s'						\
 | 
			
		||||
	halt='use sizeof(foo), not sizeof (foo) or sizeof foo'		\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Ensure that no C source file, docs, or rng schema uses TABs for
 | 
			
		||||
# indentation.  Also match *.h.in files, to get libvirt.h.in.  Exclude
 | 
			
		||||
# files in gnulib, since they're imported.
 | 
			
		||||
space_indent_files=(\.(rng|s?[ch](\.in)?|html.in|py|pl|syms)|(daemon|tools)/.*\.in)
 | 
			
		||||
sc_TAB_in_indentation:
 | 
			
		||||
	@prohibit='^ *	'						\
 | 
			
		||||
	in_vc_files='$(space_indent_files)$$'				\
 | 
			
		||||
	halt='indent with space, not TAB, in C, sh, html, py, syms and RNG schemas' \
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
ctype_re = isalnum|isalpha|isascii|isblank|iscntrl|isdigit|isgraph|islower\
 | 
			
		||||
|isprint|ispunct|isspace|isupper|isxdigit|tolower|toupper
 | 
			
		||||
 | 
			
		||||
sc_avoid_ctype_macros:
 | 
			
		||||
	@prohibit='\b($(ctype_re)) *\('					\
 | 
			
		||||
	halt="don't use ctype macros (use c-ctype.h)"			\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
sc_avoid_strcase:
 | 
			
		||||
	@prohibit='\bstrn?case(cmp|str) *\('				\
 | 
			
		||||
	halt="don't use raw strcase functions (use c-strcase instead)"	\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
sc_prohibit_virBufferAdd_with_string_literal:
 | 
			
		||||
	@prohibit='\<virBufferAdd *\([^,]+, *"[^"]'			\
 | 
			
		||||
	halt='use virBufferAddLit, not virBufferAdd, with a string literal' \
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Not only do they fail to deal well with ipv6, but the gethostby*
 | 
			
		||||
# functions are also not thread-safe.
 | 
			
		||||
sc_prohibit_gethostby:
 | 
			
		||||
	@prohibit='\<gethostby(addr|name2?) *\('			\
 | 
			
		||||
	halt='use getaddrinfo, not gethostby*'				\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# raw xmlGetProp requires some nasty casts
 | 
			
		||||
sc_prohibit_xmlGetProp:
 | 
			
		||||
	@prohibit='\<xmlGetProp *\('					\
 | 
			
		||||
	halt='use virXMLPropString, not xmlGetProp'			\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# xml(ParseURI|SaveUri) doesn't handle IPv6 URIs well
 | 
			
		||||
sc_prohibit_xmlURI:
 | 
			
		||||
	@prohibit='\<xml(ParseURI|SaveUri) *\('				\
 | 
			
		||||
	halt='use virURI(Parse|Format), not xml(ParseURI|SaveUri)'	\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# we don't want old old-style return with parentheses around argument
 | 
			
		||||
sc_prohibit_return_as_function:
 | 
			
		||||
	@prohibit='\<return *\(([^()]*(\([^()]*\)[^()]*)*)\) *;'    \
 | 
			
		||||
	halt='avoid extra () with return statements'                \
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# ATTRIBUTE_UNUSED should only be applied in implementations, not
 | 
			
		||||
# header declarations
 | 
			
		||||
sc_avoid_attribute_unused_in_header:
 | 
			
		||||
	@prohibit='^[^#]*ATTRIBUTE_UNUSED([^:]|$$)'			\
 | 
			
		||||
	in_vc_files='\.h$$'						\
 | 
			
		||||
	halt='use ATTRIBUTE_UNUSED in .c rather than .h files'		\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Many of the function names below came from this filter:
 | 
			
		||||
# git grep -B2 '\<_('|grep -E '\.c- *[[:alpha:]_][[:alnum:]_]* ?\(.*[,;]$' \
 | 
			
		||||
# |sed 's/.*\.c-  *//'|perl -pe 's/ ?\(.*//'|sort -u \
 | 
			
		||||
# |grep -vE '^(qsort|if|close|assert|fputc|free|N_|vir.*GetName|.*Unlock|virNodeListDevices|virHashRemoveEntry|freeaddrinfo|.*[fF]ree|xdrmem_create|xmlXPathFreeObject|virUUIDFormat|openvzSetProgramSentinal|polkit_action_unref)$'
 | 
			
		||||
 | 
			
		||||
msg_gen_function =
 | 
			
		||||
msg_gen_function += VIR_ERROR
 | 
			
		||||
msg_gen_function += lxcError
 | 
			
		||||
msg_gen_function += regerror
 | 
			
		||||
msg_gen_function += vah_error
 | 
			
		||||
msg_gen_function += vah_warning
 | 
			
		||||
msg_gen_function += virGenericReportError
 | 
			
		||||
msg_gen_function += virLibConnError
 | 
			
		||||
msg_gen_function += virLibDomainError
 | 
			
		||||
msg_gen_function += virLibDomainSnapshotError
 | 
			
		||||
msg_gen_function += virLibInterfaceError
 | 
			
		||||
msg_gen_function += virLibNetworkError
 | 
			
		||||
msg_gen_function += virLibNodeDeviceError
 | 
			
		||||
msg_gen_function += virLibNWFilterError
 | 
			
		||||
msg_gen_function += virLibSecretError
 | 
			
		||||
msg_gen_function += virLibStoragePoolError
 | 
			
		||||
msg_gen_function += virLibStorageVolError
 | 
			
		||||
msg_gen_function += virRaiseError
 | 
			
		||||
msg_gen_function += virReportError
 | 
			
		||||
msg_gen_function += virReportErrorHelper
 | 
			
		||||
msg_gen_function += virReportSystemError
 | 
			
		||||
msg_gen_function += xenapiSessionErrorHandler
 | 
			
		||||
 | 
			
		||||
# Uncomment the following and run "make syntax-check" to see diagnostics
 | 
			
		||||
# that are not yet marked for translation, but that need to be rewritten
 | 
			
		||||
# so that they are translatable.
 | 
			
		||||
# msg_gen_function += fprintf
 | 
			
		||||
# msg_gen_function += testError
 | 
			
		||||
# msg_gen_function += vshPrint
 | 
			
		||||
# msg_gen_function += vshError
 | 
			
		||||
 | 
			
		||||
func_or := $(shell echo $(msg_gen_function)|tr -s ' ' '|')
 | 
			
		||||
func_re := ($(func_or))
 | 
			
		||||
 | 
			
		||||
# Look for diagnostics that aren't marked for translation.
 | 
			
		||||
# This won't find any for which error's format string is on a separate line.
 | 
			
		||||
# The sed filters eliminate false-positives like these:
 | 
			
		||||
#    _("...: "
 | 
			
		||||
#    "%s", _("no storage vol w..."
 | 
			
		||||
sc_libvirt_unmarked_diagnostics:
 | 
			
		||||
	@prohibit='\<$(func_re) *\([^"]*"[^"]*[a-z]{3}'			\
 | 
			
		||||
	exclude='_\('							\
 | 
			
		||||
	halt='found unmarked diagnostic(s)'				\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
	@{ grep     -nE '\<$(func_re) *\(.*;$$' $$($(VC_LIST_EXCEPT));   \
 | 
			
		||||
	   grep -A1 -nE '\<$(func_re) *\(.*,$$' $$($(VC_LIST_EXCEPT)); } \
 | 
			
		||||
	   | sed 's/_("\([^\"]\|\\.\)\+"//;s/[	 ]"%s"//'		\
 | 
			
		||||
	   | grep '[	 ]"' &&						\
 | 
			
		||||
	  { echo '$(ME): found unmarked diagnostic(s)' 1>&2;		\
 | 
			
		||||
	    exit 1; } || :
 | 
			
		||||
 | 
			
		||||
# Like the above, but prohibit a newline at the end of a diagnostic.
 | 
			
		||||
# This is subject to false positives partly because it naively looks for
 | 
			
		||||
# `\n"', which may not be the end of the string, and also because it takes
 | 
			
		||||
# two lines of context (the -A2) after the line with the function name.
 | 
			
		||||
# FIXME: this rule might benefit from a separate function list, in case
 | 
			
		||||
# there are functions to which this one applies but that do not get marked
 | 
			
		||||
# diagnostics.
 | 
			
		||||
sc_prohibit_newline_at_end_of_diagnostic:
 | 
			
		||||
	@grep -A2 -nE							\
 | 
			
		||||
	    '\<$(func_re) *\(' $$($(VC_LIST_EXCEPT))			\
 | 
			
		||||
	    | grep '\\n"'						\
 | 
			
		||||
	  && { echo '$(ME): newline at end of message(s)' 1>&2;		\
 | 
			
		||||
	    exit 1; } || :
 | 
			
		||||
 | 
			
		||||
# Look for diagnostics that lack a % in the format string, except that we
 | 
			
		||||
# allow VIR_ERROR to do this, and ignore functions that take a single
 | 
			
		||||
# string rather than a format argument.
 | 
			
		||||
sc_prohibit_diagnostic_without_format:
 | 
			
		||||
	@{ grep     -nE '\<$(func_re) *\(.*;$$' $$($(VC_LIST_EXCEPT));   \
 | 
			
		||||
	   grep -A2 -nE '\<$(func_re) *\(.*,$$' $$($(VC_LIST_EXCEPT)); } \
 | 
			
		||||
	   | sed -rn -e ':l; /[,"]$$/ {N;b l;}'				 \
 | 
			
		||||
		-e '/(xenapiSessionErrorHandler|vah_(error|warning))/d'	 \
 | 
			
		||||
		-e '/\<$(func_re) *\([^"]*"([^%"]|"\n[^"]*")*"[,)]/p'	 \
 | 
			
		||||
           | grep -vE 'VIR_ERROR' &&					 \
 | 
			
		||||
	  { echo '$(ME): found diagnostic without %' 1>&2;		 \
 | 
			
		||||
	    exit 1; } || :
 | 
			
		||||
 | 
			
		||||
# The strings "" and "%s" should never be marked for translation.
 | 
			
		||||
# Files under tests/ and examples/ should not be translated.
 | 
			
		||||
sc_prohibit_useless_translation:
 | 
			
		||||
	@prohibit='_\("(%s)?"\)'					\
 | 
			
		||||
	halt='found useless translation'				\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
	@prohibit='\<N?_ *\('						\
 | 
			
		||||
	in_vc_files='^(tests|examples)/'				\
 | 
			
		||||
	halt='no translations in tests or examples'			\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# When splitting a diagnostic across lines, ensure that there is a space
 | 
			
		||||
# or \n on one side of the split.
 | 
			
		||||
sc_require_whitespace_in_translation:
 | 
			
		||||
	@grep -n -A1 '"$$' $$($(VC_LIST_EXCEPT))   			\
 | 
			
		||||
	   | sed -ne ':l; /"$$/ {N;b l;}; s/"\n[^"]*"/""/g; s/\\n/ /g'	\
 | 
			
		||||
		-e '/_(.*[^\ ]""[^\ ]/p' | grep . &&			\
 | 
			
		||||
	  { echo '$(ME): missing whitespace at line split' 1>&2;	\
 | 
			
		||||
	    exit 1; } || :
 | 
			
		||||
 | 
			
		||||
# Enforce recommended preprocessor indentation style.
 | 
			
		||||
sc_preprocessor_indentation:
 | 
			
		||||
	@if cppi --version >/dev/null 2>&1; then			\
 | 
			
		||||
	  $(VC_LIST_EXCEPT) | grep '\.[ch]$$' | xargs cppi -a -c	\
 | 
			
		||||
	    || { echo '$(ME): incorrect preprocessor indentation' 1>&2;	\
 | 
			
		||||
		exit 1; };						\
 | 
			
		||||
	else								\
 | 
			
		||||
	  echo '$(ME): skipping test $@: cppi not installed' 1>&2;	\
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
# Enforce similar spec file indentation style, by running cppi on a
 | 
			
		||||
# (comment-only) C file that mirrors the same layout as the spec file.
 | 
			
		||||
sc_spec_indentation:
 | 
			
		||||
	@if cppi --version >/dev/null 2>&1; then			\
 | 
			
		||||
	  for f in $$($(VC_LIST_EXCEPT) | grep '\.spec\.in$$'); do	\
 | 
			
		||||
	    sed -e 's|#|// #|; s|%ifn*\(arch\)* |#if a // |'		\
 | 
			
		||||
		-e 's/%\(else\|endif\|define\)/#\1/'			\
 | 
			
		||||
		-e 's/^\( *\)\1\1\1#/#\1/'				\
 | 
			
		||||
		-e 's|^\( *[^#/ ]\)|// \1|; s|^\( */[^/]\)|// \1|' $$f	\
 | 
			
		||||
	    | cppi -a -c 2>&1 | sed "s|standard input|$$f|";		\
 | 
			
		||||
	  done | { if grep . >&2; then false; else :; fi; }		\
 | 
			
		||||
	    || { echo '$(ME): incorrect preprocessor indentation' 1>&2;	\
 | 
			
		||||
		exit 1; };						\
 | 
			
		||||
	else								\
 | 
			
		||||
	  echo '$(ME): skipping test $@: cppi not installed' 1>&2;	\
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
sc_copyright_format:
 | 
			
		||||
	@require='Copyright .*Red 'Hat', Inc\.'				\
 | 
			
		||||
	containing='Copyright .*Red 'Hat				\
 | 
			
		||||
	halt='Red Hat copyright is missing Inc.'			\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
	@prohibit='Copyright [^(].*Red 'Hat				\
 | 
			
		||||
	halt='consistently use (C) in Red Hat copyright'		\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
	@prohibit='\<Red''Hat\>'					\
 | 
			
		||||
	halt='spell Red Hat as two words'				\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Prefer the new URL listing over the old street address listing when
 | 
			
		||||
# calling out where to get a copy of the [L]GPL.
 | 
			
		||||
sc_copyright_address:
 | 
			
		||||
	@prohibit=Boston,' MA'						\
 | 
			
		||||
	halt='Point to <http://www.gnu.org/licenses/>, not an address'	\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Some functions/macros produce messages intended solely for developers
 | 
			
		||||
# and maintainers.  Do not mark them for translation.
 | 
			
		||||
sc_prohibit_gettext_markup:
 | 
			
		||||
	@prohibit='\<VIR_(WARN|INFO|DEBUG) *\(_\('			\
 | 
			
		||||
	halt='do not mark these strings for translation'		\
 | 
			
		||||
	  $(_sc_search_regexp)
 | 
			
		||||
 | 
			
		||||
# Our code is divided into modular subdirectories for a reason, and
 | 
			
		||||
# lower-level code must not include higher-level headers.
 | 
			
		||||
cross_dirs=$(patsubst $(srcdir)/src/%.,%,$(wildcard $(srcdir)/src/*/.))
 | 
			
		||||
cross_dirs_re=($(subst / ,/|,$(cross_dirs)))
 | 
			
		||||
sc_prohibit_cross_inclusion:
 | 
			
		||||
	@for dir in $(cross_dirs); do					\
 | 
			
		||||
	  case $$dir in							\
 | 
			
		||||
	    util/) safe="util";;					\
 | 
			
		||||
	    locking/)							\
 | 
			
		||||
	      safe="($$dir|util|conf|rpc)";;				\
 | 
			
		||||
	    cpu/ | locking/ | network/ | rpc/ | security/)		\
 | 
			
		||||
	      safe="($$dir|util|conf)";;				\
 | 
			
		||||
	    xenapi/ | xenxs/ ) safe="($$dir|util|conf|xen)";;		\
 | 
			
		||||
	    *) safe="($$dir|util|conf|cpu|network|locking|rpc|security)";; \
 | 
			
		||||
	  esac;								\
 | 
			
		||||
	  in_vc_files="^src/$$dir"					\
 | 
			
		||||
	  prohibit='^# *include .$(cross_dirs_re)'			\
 | 
			
		||||
	  exclude="# *include .$$safe"					\
 | 
			
		||||
	  halt='unsafe cross-directory include'				\
 | 
			
		||||
	    $(_sc_search_regexp)					\
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
# When converting an enum to a string, make sure that we track any new
 | 
			
		||||
# elements added to the enum by using a _LAST marker.
 | 
			
		||||
sc_require_enum_last_marker:
 | 
			
		||||
	@grep -A1 -nE '^[^#]*VIR_ENUM_IMPL *\(' $$($(VC_LIST_EXCEPT))	\
 | 
			
		||||
	   | sed -ne '/VIR_ENUM_IMPL[^,]*,$$/N'				\
 | 
			
		||||
	     -e '/VIR_ENUM_IMPL[^,]*,[^,]*[^_,][^L,][^A,][^S,][^T,],/p'	\
 | 
			
		||||
	     -e '/VIR_ENUM_IMPL[^,]*,[^,]\{0,4\},/p'			\
 | 
			
		||||
	   | grep . &&							\
 | 
			
		||||
	  { echo '$(ME): enum impl needs to use _LAST marker' 1>&2;	\
 | 
			
		||||
	    exit 1; } || :
 | 
			
		||||
 | 
			
		||||
# We don't use this feature of maint.mk.
 | 
			
		||||
prev_version_file = /dev/null
 | 
			
		||||
 | 
			
		||||
ifeq (0,$(MAKELEVEL))
 | 
			
		||||
  _curr_status = .git-module-status
 | 
			
		||||
  # The sed filter accommodates those who check out on a commit from which
 | 
			
		||||
  # no tag is reachable.  In that case, git submodule status prints a "-"
 | 
			
		||||
  # in column 1 and does not print a "git describe"-style string after the
 | 
			
		||||
  # submodule name.  Contrast these:
 | 
			
		||||
  # -b653eda3ac4864de205419d9f41eec267cb89eeb .gnulib
 | 
			
		||||
  #  b653eda3ac4864de205419d9f41eec267cb89eeb .gnulib (v0.0-2286-gb653eda)
 | 
			
		||||
  # $ cat .git-module-status
 | 
			
		||||
  # b653eda3ac4864de205419d9f41eec267cb89eeb
 | 
			
		||||
  #
 | 
			
		||||
  # Keep this logic in sync with autogen.sh.
 | 
			
		||||
  _submodule_hash = sed 's/^[ +-]//;s/ .*//'
 | 
			
		||||
  _update_required := $(shell						\
 | 
			
		||||
      cd '$(srcdir)';							\
 | 
			
		||||
      test -d .git || { echo 0; exit; };				\
 | 
			
		||||
      test -f po/Makevars || { echo 1; exit; };				\
 | 
			
		||||
      test -f AUTHORS || { echo 1; exit; };				\
 | 
			
		||||
      actual=$$(git submodule status | $(_submodule_hash);		\
 | 
			
		||||
		git hash-object bootstrap.conf;				\
 | 
			
		||||
		git ls-tree -d HEAD gnulib/local | awk '{print $$3}';	\
 | 
			
		||||
		git diff .gnulib);					\
 | 
			
		||||
      stamp="$$($(_submodule_hash) $(_curr_status) 2>/dev/null)";	\
 | 
			
		||||
      test "$$stamp" = "$$actual"; echo $$?)
 | 
			
		||||
  _clean_requested = $(filter %clean,$(MAKECMDGOALS))
 | 
			
		||||
  ifeq (1,$(_update_required)$(_clean_requested))
 | 
			
		||||
    $(info INFO: gnulib update required; running ./autogen.sh first)
 | 
			
		||||
    $(shell touch $(srcdir)/AUTHORS $(srcdir)/ChangeLog)
 | 
			
		||||
maint.mk Makefile: _autogen
 | 
			
		||||
  endif
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
# It is necessary to call autogen any time gnulib changes.  Autogen
 | 
			
		||||
# reruns configure, then we regenerate all Makefiles at once.
 | 
			
		||||
.PHONY: _autogen
 | 
			
		||||
_autogen:
 | 
			
		||||
	$(srcdir)/autogen.sh
 | 
			
		||||
	./config.status
 | 
			
		||||
 | 
			
		||||
# regenerate HACKING as part of the syntax-check
 | 
			
		||||
syntax-check: $(top_srcdir)/HACKING bracket-spacing-check
 | 
			
		||||
 | 
			
		||||
bracket-spacing-check:
 | 
			
		||||
	$(AM_V_GEN)files=`$(VC_LIST) | grep '\.c$$'`; \
 | 
			
		||||
	$(PERL) $(top_srcdir)/build-aux/bracket-spacing.pl $$files || \
 | 
			
		||||
          (echo $(ME): incorrect whitespace around brackets, see HACKING for rules && exit 1)
 | 
			
		||||
 | 
			
		||||
# sc_po_check can fail if generated files are not built first
 | 
			
		||||
sc_po_check: \
 | 
			
		||||
		$(srcdir)/daemon/remote_dispatch.h \
 | 
			
		||||
		$(srcdir)/daemon/qemu_dispatch.h \
 | 
			
		||||
		$(srcdir)/src/remote/remote_client_bodies.h
 | 
			
		||||
$(srcdir)/daemon/remote_dispatch.h: $(srcdir)/src/remote/remote_protocol.x
 | 
			
		||||
	$(MAKE) -C daemon remote_dispatch.h
 | 
			
		||||
$(srcdir)/daemon/qemu_dispatch.h: $(srcdir)/src/remote/qemu_protocol.x
 | 
			
		||||
	$(MAKE) -C daemon qemu_dispatch.h
 | 
			
		||||
$(srcdir)/src/remote/remote_client_bodies.h: $(srcdir)/src/remote/remote_protocol.x
 | 
			
		||||
	$(MAKE) -C src remote/remote_client_bodies.h
 | 
			
		||||
 | 
			
		||||
# List all syntax-check exemptions:
 | 
			
		||||
exclude_file_name_regexp--sc_avoid_strcase = ^tools/virsh\.h$$
 | 
			
		||||
 | 
			
		||||
_src1=libvirt|fdstream|qemu/qemu_monitor|util/(vircommand|virutil)|xen/xend_internal|rpc/virnetsocket|lxc/lxc_controller|locking/lock_daemon
 | 
			
		||||
exclude_file_name_regexp--sc_avoid_write = \
 | 
			
		||||
  ^(src/($(_src1))|daemon/libvirtd|tools/console|tests/(shunload|virnettlscontext)test)\.c$$
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_bindtextdomain = ^(tests|examples)/
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_copyright_address = \
 | 
			
		||||
  ^COPYING\.LIB$$
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_flags_usage = ^(docs/|src/util/virnetdevtap\.c$$)
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_libvirt_unmarked_diagnostics = \
 | 
			
		||||
  ^(src/rpc/gendispatch\.pl$$|tests/)
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_po_check = ^(docs/|src/rpc/gendispatch\.pl$$)
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_VIR_ERR_NO_MEMORY = \
 | 
			
		||||
  ^(include/libvirt/virterror\.h|daemon/dispatch\.c|src/util/virerror\.c)$$
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_access_xok = ^src/util/virutil\.c$$
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_always_true_header_tests = \
 | 
			
		||||
  ^python/(libvirt-(lxc-|qemu-)?override|typewrappers)\.c$$
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_asprintf = \
 | 
			
		||||
  ^(bootstrap.conf$$|src/util/virutil\.c$$|examples/domain-events/events-c/event-test\.c$$)
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_close = \
 | 
			
		||||
  (\.p[yl]$$|^docs/|^(src/util/virfile\.c|src/libvirt\.c)$$)
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = \
 | 
			
		||||
  (^tests/(qemuhelp|nodeinfo)data/|\.(gif|ico|png|diff)$$)
 | 
			
		||||
 | 
			
		||||
_src2=src/(util/vircommand|libvirt|lxc/lxc_controller|locking/lock_daemon)
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_fork_wrappers = \
 | 
			
		||||
  (^($(_src2)|tests/testutils|daemon/libvirtd)\.c$$)
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_gethostname = ^src/util/virutil\.c$$
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_internal_functions = \
 | 
			
		||||
  ^src/(util/(viralloc|virutil|virfile)\.[hc]|esx/esx_vi\.c)$$
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_newline_at_end_of_diagnostic = \
 | 
			
		||||
  ^src/rpc/gendispatch\.pl$$
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_nonreentrant = \
 | 
			
		||||
  ^((po|tests)/|docs/.*py|run.in$$)
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_raw_allocation = \
 | 
			
		||||
  ^(src/util/viralloc\.[ch]|examples/.*|tests/securityselinuxhelper.c)$$
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_readlink = \
 | 
			
		||||
  ^src/(util/virutil|lxc/lxc_container)\.c$$
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_setuid = ^src/util/virutil\.c$$
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_sprintf = \
 | 
			
		||||
  ^(docs/hacking\.html\.in)|(examples/systemtap/.*stp)|(src/dtrace2systemtap\.pl)|(src/rpc/gensystemtap\.pl)$$
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_strncpy = ^src/util/virutil\.c$$
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_strtol = \
 | 
			
		||||
  ^src/(util/virsexpr|(vbox|xen|xenxs)/.*)\.c$$
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_xmlGetProp = ^src/util/virxml\.c$$
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_xmlURI = ^src/util/viruri\.c$$
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_prohibit_return_as_function = \.py$$
 | 
			
		||||
 | 
			
		||||
_virsh_includes=(edit|domain-monitor|domain|volume|pool|network|interface|nwfilter|secret|snapshot|host|nodedev)
 | 
			
		||||
exclude_file_name_regexp--sc_require_config_h = ^(examples/|tools/virsh-$(_virsh_includes)\.c$$)
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_require_config_h_first = ^(examples/|tools/virsh-$(_virsh_includes)\.c$$)
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_trailing_blank = \
 | 
			
		||||
  (/qemuhelpdata/|/sysinfodata/.*\.data|\.(fig|gif|ico|png)$$)
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_unmarked_diagnostics = \
 | 
			
		||||
  ^(docs/apibuild.py|tests/virt-aa-helper-test)$$
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_size_of_brackets = cfg.mk
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_correct_id_types = \
 | 
			
		||||
  (^src/locking/lock_protocol.x$$)
 | 
			
		||||
 | 
			
		||||
exclude_file_name_regexp--sc_m4_quote_check = m4/virt-lib.m4
 | 
			
		||||
							
								
								
									
										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,87 +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/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
							
								
								
									
										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,16 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
CCACHE='/usr/local/bin/ccache'
 | 
			
		||||
CPAN_PKGS=''
 | 
			
		||||
CROSS_PKGS=''
 | 
			
		||||
MAKE='/usr/local/bin/gmake'
 | 
			
		||||
NINJA='/usr/local/bin/ninja'
 | 
			
		||||
PACKAGING_COMMAND='pkg'
 | 
			
		||||
PIP3='/usr/local/bin/pip-3.8'
 | 
			
		||||
PKGS='augeas bash-completion ca_root_nss ccache codespell cppi curl cyrus-sasl 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 readline yajl'
 | 
			
		||||
PYPI_PKGS=''
 | 
			
		||||
PYTHON='/usr/local/bin/python3'
 | 
			
		||||
@@ -1,16 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
CCACHE='/usr/local/bin/ccache'
 | 
			
		||||
CPAN_PKGS=''
 | 
			
		||||
CROSS_PKGS=''
 | 
			
		||||
MAKE='/usr/local/bin/gmake'
 | 
			
		||||
NINJA='/usr/local/bin/ninja'
 | 
			
		||||
PACKAGING_COMMAND='pkg'
 | 
			
		||||
PIP3='/usr/local/bin/pip-3.8'
 | 
			
		||||
PKGS='augeas bash-completion ca_root_nss ccache codespell cppi curl cyrus-sasl 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 readline yajl'
 | 
			
		||||
PYPI_PKGS=''
 | 
			
		||||
PYTHON='/usr/local/bin/python3'
 | 
			
		||||
@@ -1,16 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
CCACHE='/usr/local/bin/ccache'
 | 
			
		||||
CPAN_PKGS=''
 | 
			
		||||
CROSS_PKGS=''
 | 
			
		||||
MAKE='/usr/local/bin/gmake'
 | 
			
		||||
NINJA='/usr/local/bin/ninja'
 | 
			
		||||
PACKAGING_COMMAND='pkg'
 | 
			
		||||
PIP3='/usr/local/bin/pip-3.8'
 | 
			
		||||
PKGS='augeas bash-completion ca_root_nss ccache codespell cppi curl cyrus-sasl 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 readline yajl'
 | 
			
		||||
PYPI_PKGS=''
 | 
			
		||||
PYTHON='/usr/local/bin/python3'
 | 
			
		||||
@@ -1,16 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
CCACHE='/usr/local/bin/ccache'
 | 
			
		||||
CPAN_PKGS=''
 | 
			
		||||
CROSS_PKGS=''
 | 
			
		||||
MAKE='/usr/local/bin/gmake'
 | 
			
		||||
NINJA='/usr/local/bin/ninja'
 | 
			
		||||
PACKAGING_COMMAND='brew'
 | 
			
		||||
PIP3='/usr/local/bin/pip3'
 | 
			
		||||
PKGS='augeas bash-completion ccache codespell cppi curl 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'
 | 
			
		||||
PYPI_PKGS=''
 | 
			
		||||
PYTHON='/usr/local/bin/python3'
 | 
			
		||||
@@ -1,100 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
FROM docker.io/library/almalinux: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 \
 | 
			
		||||
        bash-completion \
 | 
			
		||||
        ca-certificates \
 | 
			
		||||
        ccache \
 | 
			
		||||
        clang \
 | 
			
		||||
        cpp \
 | 
			
		||||
        cyrus-sasl-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 \
 | 
			
		||||
        libwsman-devel \
 | 
			
		||||
        libxml2 \
 | 
			
		||||
        libxml2-devel \
 | 
			
		||||
        libxslt \
 | 
			
		||||
        lvm2 \
 | 
			
		||||
        make \
 | 
			
		||||
        meson \
 | 
			
		||||
        netcf-devel \
 | 
			
		||||
        nfs-utils \
 | 
			
		||||
        ninja-build \
 | 
			
		||||
        numactl-devel \
 | 
			
		||||
        numad \
 | 
			
		||||
        parted-devel \
 | 
			
		||||
        perl \
 | 
			
		||||
        pkgconfig \
 | 
			
		||||
        polkit \
 | 
			
		||||
        python3 \
 | 
			
		||||
        python3-docutils \
 | 
			
		||||
        python3-flake8 \
 | 
			
		||||
        qemu-img \
 | 
			
		||||
        readline-devel \
 | 
			
		||||
        rpcgen \
 | 
			
		||||
        rpm-build \
 | 
			
		||||
        sanlock-devel \
 | 
			
		||||
        scrub \
 | 
			
		||||
        sed \
 | 
			
		||||
        systemd-devel \
 | 
			
		||||
        systemtap-sdt-devel \
 | 
			
		||||
        wireshark-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
 | 
			
		||||
 | 
			
		||||
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,100 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
        bash-completion \
 | 
			
		||||
        ca-certificates \
 | 
			
		||||
        ccache \
 | 
			
		||||
        clang \
 | 
			
		||||
        cpp \
 | 
			
		||||
        cyrus-sasl-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 \
 | 
			
		||||
        libwsman-devel \
 | 
			
		||||
        libxml2 \
 | 
			
		||||
        libxml2-devel \
 | 
			
		||||
        libxslt \
 | 
			
		||||
        lvm2 \
 | 
			
		||||
        make \
 | 
			
		||||
        meson \
 | 
			
		||||
        netcf-devel \
 | 
			
		||||
        nfs-utils \
 | 
			
		||||
        ninja-build \
 | 
			
		||||
        numactl-devel \
 | 
			
		||||
        numad \
 | 
			
		||||
        parted-devel \
 | 
			
		||||
        perl \
 | 
			
		||||
        pkgconfig \
 | 
			
		||||
        polkit \
 | 
			
		||||
        python3 \
 | 
			
		||||
        python3-docutils \
 | 
			
		||||
        python3-flake8 \
 | 
			
		||||
        qemu-img \
 | 
			
		||||
        readline-devel \
 | 
			
		||||
        rpcgen \
 | 
			
		||||
        rpm-build \
 | 
			
		||||
        sanlock-devel \
 | 
			
		||||
        scrub \
 | 
			
		||||
        sed \
 | 
			
		||||
        systemd-devel \
 | 
			
		||||
        systemtap-sdt-devel \
 | 
			
		||||
        wireshark-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
 | 
			
		||||
 | 
			
		||||
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,90 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
FROM quay.io/centos/centos:stream9
 | 
			
		||||
 | 
			
		||||
RUN dnf update -y && \
 | 
			
		||||
    dnf install 'dnf-command(config-manager)' -y && \
 | 
			
		||||
    dnf config-manager --set-enabled -y crb && \
 | 
			
		||||
    dnf install -y \
 | 
			
		||||
        https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm \
 | 
			
		||||
        https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm && \
 | 
			
		||||
    dnf install -y \
 | 
			
		||||
        audit-libs-devel \
 | 
			
		||||
        augeas \
 | 
			
		||||
        bash-completion \
 | 
			
		||||
        ca-certificates \
 | 
			
		||||
        clang \
 | 
			
		||||
        cpp \
 | 
			
		||||
        cyrus-sasl-devel \
 | 
			
		||||
        device-mapper-devel \
 | 
			
		||||
        diffutils \
 | 
			
		||||
        dnsmasq \
 | 
			
		||||
        dwarves \
 | 
			
		||||
        ebtables \
 | 
			
		||||
        firewalld-filesystem \
 | 
			
		||||
        fuse-devel \
 | 
			
		||||
        gcc \
 | 
			
		||||
        gettext \
 | 
			
		||||
        git \
 | 
			
		||||
        glib2-devel \
 | 
			
		||||
        glibc-devel \
 | 
			
		||||
        glibc-langpack-en \
 | 
			
		||||
        gnutls-devel \
 | 
			
		||||
        grep \
 | 
			
		||||
        iproute \
 | 
			
		||||
        iproute-tc \
 | 
			
		||||
        iptables \
 | 
			
		||||
        iscsi-initiator-utils \
 | 
			
		||||
        kmod \
 | 
			
		||||
        libacl-devel \
 | 
			
		||||
        libattr-devel \
 | 
			
		||||
        libblkid-devel \
 | 
			
		||||
        libcap-ng-devel \
 | 
			
		||||
        libcurl-devel \
 | 
			
		||||
        libnl3-devel \
 | 
			
		||||
        libpcap-devel \
 | 
			
		||||
        libpciaccess-devel \
 | 
			
		||||
        librbd-devel \
 | 
			
		||||
        libselinux-devel \
 | 
			
		||||
        libssh-devel \
 | 
			
		||||
        libtirpc-devel \
 | 
			
		||||
        libwsman-devel \
 | 
			
		||||
        libxml2 \
 | 
			
		||||
        libxml2-devel \
 | 
			
		||||
        libxslt \
 | 
			
		||||
        lvm2 \
 | 
			
		||||
        make \
 | 
			
		||||
        meson \
 | 
			
		||||
        nfs-utils \
 | 
			
		||||
        ninja-build \
 | 
			
		||||
        numactl-devel \
 | 
			
		||||
        numad \
 | 
			
		||||
        parted-devel \
 | 
			
		||||
        perl-base \
 | 
			
		||||
        pkgconfig \
 | 
			
		||||
        polkit \
 | 
			
		||||
        python3 \
 | 
			
		||||
        python3-docutils \
 | 
			
		||||
        qemu-img \
 | 
			
		||||
        readline-devel \
 | 
			
		||||
        rpcgen \
 | 
			
		||||
        rpm-build \
 | 
			
		||||
        sanlock-devel \
 | 
			
		||||
        scrub \
 | 
			
		||||
        sed \
 | 
			
		||||
        systemd-devel \
 | 
			
		||||
        systemtap-sdt-devel \
 | 
			
		||||
        wireshark-devel \
 | 
			
		||||
        yajl-devel && \
 | 
			
		||||
    dnf autoremove -y && \
 | 
			
		||||
    dnf clean all -y && \
 | 
			
		||||
    rpm -qa | sort > /packages.txt
 | 
			
		||||
 | 
			
		||||
ENV LANG "en_US.UTF-8"
 | 
			
		||||
ENV MAKE "/usr/bin/make"
 | 
			
		||||
ENV NINJA "/usr/bin/ninja"
 | 
			
		||||
ENV PYTHON "/usr/bin/python3"
 | 
			
		||||
@@ -1,126 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            python3-pip \
 | 
			
		||||
            python3-setuptools \
 | 
			
		||||
            python3-wheel \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:arm64 \
 | 
			
		||||
            libc6-dev:arm64 \
 | 
			
		||||
            libcap-ng-dev:arm64 \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "aarch64-linux-gnu"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=aarch64-linux-gnu"
 | 
			
		||||
@@ -1,125 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            python3-pip \
 | 
			
		||||
            python3-setuptools \
 | 
			
		||||
            python3-wheel \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:armel \
 | 
			
		||||
            libc6-dev:armel \
 | 
			
		||||
            libcap-ng-dev:armel \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "arm-linux-gnueabi"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabi"
 | 
			
		||||
@@ -1,126 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            python3-pip \
 | 
			
		||||
            python3-setuptools \
 | 
			
		||||
            python3-wheel \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:armhf \
 | 
			
		||||
            libc6-dev:armhf \
 | 
			
		||||
            libcap-ng-dev:armhf \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "arm-linux-gnueabihf"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabihf"
 | 
			
		||||
@@ -1,125 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            python3-pip \
 | 
			
		||||
            python3-setuptools \
 | 
			
		||||
            python3-wheel \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:i386 \
 | 
			
		||||
            libc6-dev:i386 \
 | 
			
		||||
            libcap-ng-dev:i386 \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "i686-linux-gnu"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=i686-linux-gnu"
 | 
			
		||||
@@ -1,125 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            python3-pip \
 | 
			
		||||
            python3-setuptools \
 | 
			
		||||
            python3-wheel \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:mips \
 | 
			
		||||
            libc6-dev:mips \
 | 
			
		||||
            libcap-ng-dev:mips \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "mips-linux-gnu"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=mips-linux-gnu"
 | 
			
		||||
@@ -1,125 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            python3-pip \
 | 
			
		||||
            python3-setuptools \
 | 
			
		||||
            python3-wheel \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:mips64el \
 | 
			
		||||
            libc6-dev:mips64el \
 | 
			
		||||
            libcap-ng-dev:mips64el \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "mips64el-linux-gnuabi64"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=mips64el-linux-gnuabi64"
 | 
			
		||||
@@ -1,125 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            python3-pip \
 | 
			
		||||
            python3-setuptools \
 | 
			
		||||
            python3-wheel \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:mipsel \
 | 
			
		||||
            libc6-dev:mipsel \
 | 
			
		||||
            libcap-ng-dev:mipsel \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "mipsel-linux-gnu"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=mipsel-linux-gnu"
 | 
			
		||||
@@ -1,125 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            python3-pip \
 | 
			
		||||
            python3-setuptools \
 | 
			
		||||
            python3-wheel \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:ppc64el \
 | 
			
		||||
            libc6-dev:ppc64el \
 | 
			
		||||
            libcap-ng-dev:ppc64el \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "powerpc64le-linux-gnu"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=powerpc64le-linux-gnu"
 | 
			
		||||
@@ -1,125 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            python3-pip \
 | 
			
		||||
            python3-setuptools \
 | 
			
		||||
            python3-wheel \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:s390x \
 | 
			
		||||
            libc6-dev:s390x \
 | 
			
		||||
            libcap-ng-dev:s390x \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "s390x-linux-gnu"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=s390x-linux-gnu"
 | 
			
		||||
@@ -1,106 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            cpp \
 | 
			
		||||
            diffutils \
 | 
			
		||||
            dnsmasq-base \
 | 
			
		||||
            dwarves \
 | 
			
		||||
            ebtables \
 | 
			
		||||
            flake8 \
 | 
			
		||||
            gcc \
 | 
			
		||||
            gettext \
 | 
			
		||||
            git \
 | 
			
		||||
            grep \
 | 
			
		||||
            iproute2 \
 | 
			
		||||
            iptables \
 | 
			
		||||
            kmod \
 | 
			
		||||
            libacl1-dev \
 | 
			
		||||
            libapparmor-dev \
 | 
			
		||||
            libattr1-dev \
 | 
			
		||||
            libaudit-dev \
 | 
			
		||||
            libblkid-dev \
 | 
			
		||||
            libc-dev-bin \
 | 
			
		||||
            libc6-dev \
 | 
			
		||||
            libcap-ng-dev \
 | 
			
		||||
            libcurl4-gnutls-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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            python3-pip \
 | 
			
		||||
            python3-setuptools \
 | 
			
		||||
            python3-wheel \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            systemtap-sdt-dev \
 | 
			
		||||
            wireshark-dev \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    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,122 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
FROM docker.io/library/debian:11-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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:arm64 \
 | 
			
		||||
            libc6-dev:arm64 \
 | 
			
		||||
            libcap-ng-dev:arm64 \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "aarch64-linux-gnu"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=aarch64-linux-gnu"
 | 
			
		||||
@@ -1,121 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
FROM docker.io/library/debian:11-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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:armel \
 | 
			
		||||
            libc6-dev:armel \
 | 
			
		||||
            libcap-ng-dev:armel \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "arm-linux-gnueabi"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabi"
 | 
			
		||||
@@ -1,122 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
FROM docker.io/library/debian:11-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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:armhf \
 | 
			
		||||
            libc6-dev:armhf \
 | 
			
		||||
            libcap-ng-dev:armhf \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "arm-linux-gnueabihf"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabihf"
 | 
			
		||||
@@ -1,121 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
FROM docker.io/library/debian:11-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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:i386 \
 | 
			
		||||
            libc6-dev:i386 \
 | 
			
		||||
            libcap-ng-dev:i386 \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "i686-linux-gnu"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=i686-linux-gnu"
 | 
			
		||||
@@ -1,121 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
FROM docker.io/library/debian:11-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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:mips64el \
 | 
			
		||||
            libc6-dev:mips64el \
 | 
			
		||||
            libcap-ng-dev:mips64el \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "mips64el-linux-gnuabi64"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=mips64el-linux-gnuabi64"
 | 
			
		||||
@@ -1,121 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
FROM docker.io/library/debian:11-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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:mipsel \
 | 
			
		||||
            libc6-dev:mipsel \
 | 
			
		||||
            libcap-ng-dev:mipsel \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "mipsel-linux-gnu"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=mipsel-linux-gnu"
 | 
			
		||||
@@ -1,121 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
FROM docker.io/library/debian:11-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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:ppc64el \
 | 
			
		||||
            libc6-dev:ppc64el \
 | 
			
		||||
            libcap-ng-dev:ppc64el \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "powerpc64le-linux-gnu"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=powerpc64le-linux-gnu"
 | 
			
		||||
@@ -1,121 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
FROM docker.io/library/debian:11-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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:s390x \
 | 
			
		||||
            libc6-dev:s390x \
 | 
			
		||||
            libcap-ng-dev:s390x \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "s390x-linux-gnu"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=s390x-linux-gnu"
 | 
			
		||||
@@ -1,102 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
FROM docker.io/library/debian:11-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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            cpp \
 | 
			
		||||
            diffutils \
 | 
			
		||||
            dnsmasq-base \
 | 
			
		||||
            dwarves \
 | 
			
		||||
            ebtables \
 | 
			
		||||
            flake8 \
 | 
			
		||||
            gcc \
 | 
			
		||||
            gettext \
 | 
			
		||||
            git \
 | 
			
		||||
            grep \
 | 
			
		||||
            iproute2 \
 | 
			
		||||
            iptables \
 | 
			
		||||
            kmod \
 | 
			
		||||
            libacl1-dev \
 | 
			
		||||
            libapparmor-dev \
 | 
			
		||||
            libattr1-dev \
 | 
			
		||||
            libaudit-dev \
 | 
			
		||||
            libblkid-dev \
 | 
			
		||||
            libc-dev-bin \
 | 
			
		||||
            libc6-dev \
 | 
			
		||||
            libcap-ng-dev \
 | 
			
		||||
            libcurl4-gnutls-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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            systemtap-sdt-dev \
 | 
			
		||||
            wireshark-dev \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    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,122 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:arm64 \
 | 
			
		||||
            libc6-dev:arm64 \
 | 
			
		||||
            libcap-ng-dev:arm64 \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "aarch64-linux-gnu"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=aarch64-linux-gnu"
 | 
			
		||||
@@ -1,121 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:armel \
 | 
			
		||||
            libc6-dev:armel \
 | 
			
		||||
            libcap-ng-dev:armel \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "arm-linux-gnueabi"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabi"
 | 
			
		||||
@@ -1,122 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:armhf \
 | 
			
		||||
            libc6-dev:armhf \
 | 
			
		||||
            libcap-ng-dev:armhf \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "arm-linux-gnueabihf"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabihf"
 | 
			
		||||
@@ -1,121 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:i386 \
 | 
			
		||||
            libc6-dev:i386 \
 | 
			
		||||
            libcap-ng-dev:i386 \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "i686-linux-gnu"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=i686-linux-gnu"
 | 
			
		||||
@@ -1,121 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:mips64el \
 | 
			
		||||
            libc6-dev:mips64el \
 | 
			
		||||
            libcap-ng-dev:mips64el \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "mips64el-linux-gnuabi64"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=mips64el-linux-gnuabi64"
 | 
			
		||||
@@ -1,121 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:mipsel \
 | 
			
		||||
            libc6-dev:mipsel \
 | 
			
		||||
            libcap-ng-dev:mipsel \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "mipsel-linux-gnu"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=mipsel-linux-gnu"
 | 
			
		||||
@@ -1,121 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:ppc64el \
 | 
			
		||||
            libc6-dev:ppc64el \
 | 
			
		||||
            libcap-ng-dev:ppc64el \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "powerpc64le-linux-gnu"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=powerpc64le-linux-gnu"
 | 
			
		||||
@@ -1,121 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    eatmydata apt-get autoremove -y && \
 | 
			
		||||
    eatmydata apt-get autoclean -y && \
 | 
			
		||||
    sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
 | 
			
		||||
    dpkg-reconfigure locales
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            libblkid-dev:s390x \
 | 
			
		||||
            libc6-dev:s390x \
 | 
			
		||||
            libcap-ng-dev:s390x \
 | 
			
		||||
            libcurl4-gnutls-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 && \
 | 
			
		||||
    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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "s390x-linux-gnu"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=s390x-linux-gnu"
 | 
			
		||||
@@ -1,101 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            cpp \
 | 
			
		||||
            diffutils \
 | 
			
		||||
            dnsmasq-base \
 | 
			
		||||
            dwarves \
 | 
			
		||||
            ebtables \
 | 
			
		||||
            flake8 \
 | 
			
		||||
            gcc \
 | 
			
		||||
            gettext \
 | 
			
		||||
            git \
 | 
			
		||||
            grep \
 | 
			
		||||
            iproute2 \
 | 
			
		||||
            iptables \
 | 
			
		||||
            kmod \
 | 
			
		||||
            libacl1-dev \
 | 
			
		||||
            libapparmor-dev \
 | 
			
		||||
            libattr1-dev \
 | 
			
		||||
            libaudit-dev \
 | 
			
		||||
            libblkid-dev \
 | 
			
		||||
            libc-dev-bin \
 | 
			
		||||
            libc6-dev \
 | 
			
		||||
            libcap-ng-dev \
 | 
			
		||||
            libcurl4-gnutls-dev \
 | 
			
		||||
            libdevmapper-dev \
 | 
			
		||||
            libfuse-dev \
 | 
			
		||||
            libglib2.0-dev \
 | 
			
		||||
            libglusterfs-dev \
 | 
			
		||||
            libgnutls28-dev \
 | 
			
		||||
            libiscsi-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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            systemtap-sdt-dev \
 | 
			
		||||
            wireshark-dev \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    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,110 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
        bash-completion \
 | 
			
		||||
        ca-certificates \
 | 
			
		||||
        ccache \
 | 
			
		||||
        clang \
 | 
			
		||||
        codespell \
 | 
			
		||||
        cpp \
 | 
			
		||||
        cppi \
 | 
			
		||||
        cyrus-sasl-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 \
 | 
			
		||||
        libwsman-devel \
 | 
			
		||||
        libxml2 \
 | 
			
		||||
        libxml2-devel \
 | 
			
		||||
        libxslt \
 | 
			
		||||
        lvm2 \
 | 
			
		||||
        make \
 | 
			
		||||
        meson \
 | 
			
		||||
        netcf-devel \
 | 
			
		||||
        nfs-utils \
 | 
			
		||||
        ninja-build \
 | 
			
		||||
        numactl-devel \
 | 
			
		||||
        numad \
 | 
			
		||||
        parted-devel \
 | 
			
		||||
        perl-base \
 | 
			
		||||
        pkgconfig \
 | 
			
		||||
        polkit \
 | 
			
		||||
        python3 \
 | 
			
		||||
        python3-docutils \
 | 
			
		||||
        python3-flake8 \
 | 
			
		||||
        qemu-img \
 | 
			
		||||
        readline-devel \
 | 
			
		||||
        rpcgen \
 | 
			
		||||
        rpm-build \
 | 
			
		||||
        sanlock-devel \
 | 
			
		||||
        scrub \
 | 
			
		||||
        sed \
 | 
			
		||||
        sheepdog \
 | 
			
		||||
        systemd-devel \
 | 
			
		||||
        systemtap-sdt-devel \
 | 
			
		||||
        wireshark-devel \
 | 
			
		||||
        xen-devel \
 | 
			
		||||
        yajl-devel && \
 | 
			
		||||
    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,89 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
FROM registry.fedoraproject.org/fedora:35
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
        augeas \
 | 
			
		||||
        bash-completion \
 | 
			
		||||
        ca-certificates \
 | 
			
		||||
        ccache \
 | 
			
		||||
        codespell \
 | 
			
		||||
        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 \
 | 
			
		||||
        perl-base \
 | 
			
		||||
        polkit \
 | 
			
		||||
        python3 \
 | 
			
		||||
        python3-docutils \
 | 
			
		||||
        python3-flake8 \
 | 
			
		||||
        qemu-img \
 | 
			
		||||
        rpcgen \
 | 
			
		||||
        rpm-build \
 | 
			
		||||
        scrub \
 | 
			
		||||
        sed \
 | 
			
		||||
        sheepdog && \
 | 
			
		||||
    nosync dnf autoremove -y && \
 | 
			
		||||
    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"
 | 
			
		||||
 | 
			
		||||
RUN nosync dnf install -y \
 | 
			
		||||
        mingw32-curl \
 | 
			
		||||
        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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "i686-w64-mingw32"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw32.meson"
 | 
			
		||||
@@ -1,89 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
FROM registry.fedoraproject.org/fedora:35
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
        augeas \
 | 
			
		||||
        bash-completion \
 | 
			
		||||
        ca-certificates \
 | 
			
		||||
        ccache \
 | 
			
		||||
        codespell \
 | 
			
		||||
        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 \
 | 
			
		||||
        perl-base \
 | 
			
		||||
        polkit \
 | 
			
		||||
        python3 \
 | 
			
		||||
        python3-docutils \
 | 
			
		||||
        python3-flake8 \
 | 
			
		||||
        qemu-img \
 | 
			
		||||
        rpcgen \
 | 
			
		||||
        rpm-build \
 | 
			
		||||
        scrub \
 | 
			
		||||
        sed \
 | 
			
		||||
        sheepdog && \
 | 
			
		||||
    nosync dnf autoremove -y && \
 | 
			
		||||
    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"
 | 
			
		||||
 | 
			
		||||
RUN nosync dnf install -y \
 | 
			
		||||
        mingw64-curl \
 | 
			
		||||
        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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "x86_64-w64-mingw32"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw64.meson"
 | 
			
		||||
@@ -1,110 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
FROM registry.fedoraproject.org/fedora:35
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
        bash-completion \
 | 
			
		||||
        ca-certificates \
 | 
			
		||||
        ccache \
 | 
			
		||||
        clang \
 | 
			
		||||
        codespell \
 | 
			
		||||
        cpp \
 | 
			
		||||
        cppi \
 | 
			
		||||
        cyrus-sasl-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 \
 | 
			
		||||
        libwsman-devel \
 | 
			
		||||
        libxml2 \
 | 
			
		||||
        libxml2-devel \
 | 
			
		||||
        libxslt \
 | 
			
		||||
        lvm2 \
 | 
			
		||||
        make \
 | 
			
		||||
        meson \
 | 
			
		||||
        netcf-devel \
 | 
			
		||||
        nfs-utils \
 | 
			
		||||
        ninja-build \
 | 
			
		||||
        numactl-devel \
 | 
			
		||||
        numad \
 | 
			
		||||
        parted-devel \
 | 
			
		||||
        perl-base \
 | 
			
		||||
        pkgconfig \
 | 
			
		||||
        polkit \
 | 
			
		||||
        python3 \
 | 
			
		||||
        python3-docutils \
 | 
			
		||||
        python3-flake8 \
 | 
			
		||||
        qemu-img \
 | 
			
		||||
        readline-devel \
 | 
			
		||||
        rpcgen \
 | 
			
		||||
        rpm-build \
 | 
			
		||||
        sanlock-devel \
 | 
			
		||||
        scrub \
 | 
			
		||||
        sed \
 | 
			
		||||
        sheepdog \
 | 
			
		||||
        systemd-devel \
 | 
			
		||||
        systemtap-sdt-devel \
 | 
			
		||||
        wireshark-devel \
 | 
			
		||||
        xen-devel \
 | 
			
		||||
        yajl-devel && \
 | 
			
		||||
    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,90 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 distro-sync -y && \
 | 
			
		||||
    nosync dnf install -y \
 | 
			
		||||
        augeas \
 | 
			
		||||
        bash-completion \
 | 
			
		||||
        ca-certificates \
 | 
			
		||||
        ccache \
 | 
			
		||||
        codespell \
 | 
			
		||||
        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 \
 | 
			
		||||
        perl-base \
 | 
			
		||||
        polkit \
 | 
			
		||||
        python3 \
 | 
			
		||||
        python3-docutils \
 | 
			
		||||
        python3-flake8 \
 | 
			
		||||
        qemu-img \
 | 
			
		||||
        rpcgen \
 | 
			
		||||
        rpm-build \
 | 
			
		||||
        scrub \
 | 
			
		||||
        sed \
 | 
			
		||||
        sheepdog && \
 | 
			
		||||
    nosync dnf autoremove -y && \
 | 
			
		||||
    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"
 | 
			
		||||
 | 
			
		||||
RUN nosync dnf install -y \
 | 
			
		||||
        mingw32-curl \
 | 
			
		||||
        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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "i686-w64-mingw32"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw32.meson"
 | 
			
		||||
@@ -1,90 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 distro-sync -y && \
 | 
			
		||||
    nosync dnf install -y \
 | 
			
		||||
        augeas \
 | 
			
		||||
        bash-completion \
 | 
			
		||||
        ca-certificates \
 | 
			
		||||
        ccache \
 | 
			
		||||
        codespell \
 | 
			
		||||
        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 \
 | 
			
		||||
        perl-base \
 | 
			
		||||
        polkit \
 | 
			
		||||
        python3 \
 | 
			
		||||
        python3-docutils \
 | 
			
		||||
        python3-flake8 \
 | 
			
		||||
        qemu-img \
 | 
			
		||||
        rpcgen \
 | 
			
		||||
        rpm-build \
 | 
			
		||||
        scrub \
 | 
			
		||||
        sed \
 | 
			
		||||
        sheepdog && \
 | 
			
		||||
    nosync dnf autoremove -y && \
 | 
			
		||||
    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"
 | 
			
		||||
 | 
			
		||||
RUN nosync dnf install -y \
 | 
			
		||||
        mingw64-curl \
 | 
			
		||||
        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 && \
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
ENV ABI "x86_64-w64-mingw32"
 | 
			
		||||
ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw64.meson"
 | 
			
		||||
@@ -1,110 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 distro-sync -y && \
 | 
			
		||||
    nosync dnf install -y \
 | 
			
		||||
        audit-libs-devel \
 | 
			
		||||
        augeas \
 | 
			
		||||
        bash-completion \
 | 
			
		||||
        ca-certificates \
 | 
			
		||||
        ccache \
 | 
			
		||||
        clang \
 | 
			
		||||
        codespell \
 | 
			
		||||
        cpp \
 | 
			
		||||
        cppi \
 | 
			
		||||
        cyrus-sasl-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 \
 | 
			
		||||
        libwsman-devel \
 | 
			
		||||
        libxml2 \
 | 
			
		||||
        libxml2-devel \
 | 
			
		||||
        libxslt \
 | 
			
		||||
        lvm2 \
 | 
			
		||||
        make \
 | 
			
		||||
        meson \
 | 
			
		||||
        nfs-utils \
 | 
			
		||||
        ninja-build \
 | 
			
		||||
        numactl-devel \
 | 
			
		||||
        numad \
 | 
			
		||||
        parted-devel \
 | 
			
		||||
        perl-base \
 | 
			
		||||
        pkgconfig \
 | 
			
		||||
        polkit \
 | 
			
		||||
        python3 \
 | 
			
		||||
        python3-docutils \
 | 
			
		||||
        python3-flake8 \
 | 
			
		||||
        qemu-img \
 | 
			
		||||
        readline-devel \
 | 
			
		||||
        rpcgen \
 | 
			
		||||
        rpm-build \
 | 
			
		||||
        sanlock-devel \
 | 
			
		||||
        scrub \
 | 
			
		||||
        sed \
 | 
			
		||||
        sheepdog \
 | 
			
		||||
        systemd-devel \
 | 
			
		||||
        systemtap-sdt-devel \
 | 
			
		||||
        wireshark-devel \
 | 
			
		||||
        xen-devel \
 | 
			
		||||
        yajl-devel && \
 | 
			
		||||
    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,101 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
FROM registry.opensuse.org/opensuse/leap:15.2
 | 
			
		||||
 | 
			
		||||
RUN zypper update -y && \
 | 
			
		||||
    zypper install -y \
 | 
			
		||||
           audit-devel \
 | 
			
		||||
           augeas \
 | 
			
		||||
           augeas-lenses \
 | 
			
		||||
           bash-completion \
 | 
			
		||||
           ca-certificates \
 | 
			
		||||
           ccache \
 | 
			
		||||
           clang \
 | 
			
		||||
           codespell \
 | 
			
		||||
           cpp \
 | 
			
		||||
           cppi \
 | 
			
		||||
           cyrus-sasl-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-devel \
 | 
			
		||||
           perl-base \
 | 
			
		||||
           pkgconfig \
 | 
			
		||||
           polkit \
 | 
			
		||||
           python3-base \
 | 
			
		||||
           python3-docutils \
 | 
			
		||||
           python3-flake8 \
 | 
			
		||||
           python3-pip \
 | 
			
		||||
           python3-setuptools \
 | 
			
		||||
           python3-wheel \
 | 
			
		||||
           qemu-tools \
 | 
			
		||||
           readline-devel \
 | 
			
		||||
           rpcgen \
 | 
			
		||||
           rpm-build \
 | 
			
		||||
           sanlock-devel \
 | 
			
		||||
           scrub \
 | 
			
		||||
           sed \
 | 
			
		||||
           systemtap-sdt-devel \
 | 
			
		||||
           wireshark-devel \
 | 
			
		||||
           xen-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,97 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
FROM registry.opensuse.org/opensuse/tumbleweed:latest
 | 
			
		||||
 | 
			
		||||
RUN zypper dist-upgrade -y && \
 | 
			
		||||
    zypper install -y \
 | 
			
		||||
           audit-devel \
 | 
			
		||||
           augeas \
 | 
			
		||||
           augeas-lenses \
 | 
			
		||||
           bash-completion \
 | 
			
		||||
           ca-certificates \
 | 
			
		||||
           ccache \
 | 
			
		||||
           clang \
 | 
			
		||||
           codespell \
 | 
			
		||||
           cpp \
 | 
			
		||||
           cppi \
 | 
			
		||||
           cyrus-sasl-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-devel \
 | 
			
		||||
           perl-base \
 | 
			
		||||
           pkgconfig \
 | 
			
		||||
           polkit \
 | 
			
		||||
           python3-base \
 | 
			
		||||
           python3-docutils \
 | 
			
		||||
           python3-flake8 \
 | 
			
		||||
           qemu-tools \
 | 
			
		||||
           readline-devel \
 | 
			
		||||
           rpcgen \
 | 
			
		||||
           rpm-build \
 | 
			
		||||
           sanlock-devel \
 | 
			
		||||
           scrub \
 | 
			
		||||
           sed \
 | 
			
		||||
           systemtap-sdt-devel \
 | 
			
		||||
           wireshark-devel \
 | 
			
		||||
           xen-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,108 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            cpp \
 | 
			
		||||
            diffutils \
 | 
			
		||||
            dnsmasq-base \
 | 
			
		||||
            dwarves \
 | 
			
		||||
            ebtables \
 | 
			
		||||
            flake8 \
 | 
			
		||||
            gcc \
 | 
			
		||||
            gettext \
 | 
			
		||||
            git \
 | 
			
		||||
            glusterfs-common \
 | 
			
		||||
            grep \
 | 
			
		||||
            iproute2 \
 | 
			
		||||
            iptables \
 | 
			
		||||
            kmod \
 | 
			
		||||
            libacl1-dev \
 | 
			
		||||
            libapparmor-dev \
 | 
			
		||||
            libattr1-dev \
 | 
			
		||||
            libaudit-dev \
 | 
			
		||||
            libblkid-dev \
 | 
			
		||||
            libc-dev-bin \
 | 
			
		||||
            libc6-dev \
 | 
			
		||||
            libcap-ng-dev \
 | 
			
		||||
            libcurl4-gnutls-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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            python3-pip \
 | 
			
		||||
            python3-setuptools \
 | 
			
		||||
            python3-wheel \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            sheepdog \
 | 
			
		||||
            systemtap-sdt-dev \
 | 
			
		||||
            wireshark-dev \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    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,107 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
            codespell \
 | 
			
		||||
            cpp \
 | 
			
		||||
            diffutils \
 | 
			
		||||
            dnsmasq-base \
 | 
			
		||||
            dwarves \
 | 
			
		||||
            ebtables \
 | 
			
		||||
            flake8 \
 | 
			
		||||
            gcc \
 | 
			
		||||
            gettext \
 | 
			
		||||
            git \
 | 
			
		||||
            grep \
 | 
			
		||||
            iproute2 \
 | 
			
		||||
            iptables \
 | 
			
		||||
            kmod \
 | 
			
		||||
            libacl1-dev \
 | 
			
		||||
            libapparmor-dev \
 | 
			
		||||
            libattr1-dev \
 | 
			
		||||
            libaudit-dev \
 | 
			
		||||
            libblkid-dev \
 | 
			
		||||
            libc-dev-bin \
 | 
			
		||||
            libc6-dev \
 | 
			
		||||
            libcap-ng-dev \
 | 
			
		||||
            libcurl4-gnutls-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 \
 | 
			
		||||
            perl-base \
 | 
			
		||||
            pkgconf \
 | 
			
		||||
            policykit-1 \
 | 
			
		||||
            python3 \
 | 
			
		||||
            python3-docutils \
 | 
			
		||||
            python3-pip \
 | 
			
		||||
            python3-setuptools \
 | 
			
		||||
            python3-wheel \
 | 
			
		||||
            qemu-utils \
 | 
			
		||||
            scrub \
 | 
			
		||||
            sed \
 | 
			
		||||
            systemtap-sdt-dev \
 | 
			
		||||
            wireshark-dev \
 | 
			
		||||
            xsltproc && \
 | 
			
		||||
    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"
 | 
			
		||||
							
								
								
									
										704
									
								
								ci/gitlab.yml
									
									
									
									
									
								
							
							
						
						
									
										704
									
								
								ci/gitlab.yml
									
									
									
									
									
								
							@@ -1,704 +0,0 @@
 | 
			
		||||
# THIS FILE WAS AUTO-GENERATED
 | 
			
		||||
#
 | 
			
		||||
#  $ lcitool manifest ci/manifest.yml
 | 
			
		||||
#
 | 
			
		||||
# https://gitlab.com/libvirt/libvirt-ci
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.container_job:
 | 
			
		||||
  image: docker:stable
 | 
			
		||||
  stage: containers
 | 
			
		||||
  needs: []
 | 
			
		||||
  services:
 | 
			
		||||
    - name: registry.gitlab.com/libvirt/libvirt-ci/docker-dind:master
 | 
			
		||||
      alias: docker
 | 
			
		||||
  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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.gitlab_native_build_job:
 | 
			
		||||
  image: $CI_REGISTRY_IMAGE/ci-$NAME:latest
 | 
			
		||||
  stage: builds
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.gitlab_cross_build_job:
 | 
			
		||||
  image: $CI_REGISTRY_IMAGE/ci-$NAME-cross-$CROSS:latest
 | 
			
		||||
  stage: builds
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.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"
 | 
			
		||||
          -e "s|[@]XML_CATALOG_FILES@|$XML_CATALOG_FILES|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: "$CIRRUS_GITHUB_REPO && $CIRRUS_API_TOKEN"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
check-dco:
 | 
			
		||||
  stage: sanity_checks
 | 
			
		||||
  needs: []
 | 
			
		||||
  image: registry.gitlab.com/libvirt/libvirt-ci/check-dco:master
 | 
			
		||||
  script:
 | 
			
		||||
    - /check-dco libvirt
 | 
			
		||||
  except:
 | 
			
		||||
    variables:
 | 
			
		||||
      - $CI_PROJECT_NAMESPACE == 'libvirt'
 | 
			
		||||
  variables:
 | 
			
		||||
    GIT_DEPTH: 1000
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Native container jobs
 | 
			
		||||
 | 
			
		||||
x86_64-almalinux-8-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: almalinux-8
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-centos-stream-8-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: centos-stream-8
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-centos-stream-9-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: centos-stream-9
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-debian-10-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-10
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-debian-11-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-11
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-debian-sid-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-sid
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-fedora-34-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: fedora-34
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-fedora-35-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: fedora-35
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-fedora-rawhide-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: fedora-rawhide
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-opensuse-leap-152-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: opensuse-leap-152
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-opensuse-tumbleweed-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: opensuse-tumbleweed
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-ubuntu-1804-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: ubuntu-1804
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-ubuntu-2004-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: ubuntu-2004
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Cross container jobs
 | 
			
		||||
 | 
			
		||||
aarch64-debian-10-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-10-cross-aarch64
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
armv6l-debian-10-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-10-cross-armv6l
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
armv7l-debian-10-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-10-cross-armv7l
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
i686-debian-10-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-10-cross-i686
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
mips-debian-10-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-10-cross-mips
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
mips64el-debian-10-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-10-cross-mips64el
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
mipsel-debian-10-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-10-cross-mipsel
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ppc64le-debian-10-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-10-cross-ppc64le
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
s390x-debian-10-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-10-cross-s390x
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
aarch64-debian-11-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-11-cross-aarch64
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
armv6l-debian-11-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-11-cross-armv6l
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
armv7l-debian-11-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-11-cross-armv7l
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
i686-debian-11-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-11-cross-i686
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
mips64el-debian-11-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-11-cross-mips64el
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
mipsel-debian-11-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-11-cross-mipsel
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ppc64le-debian-11-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-11-cross-ppc64le
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
s390x-debian-11-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-11-cross-s390x
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
aarch64-debian-sid-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-sid-cross-aarch64
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
armv6l-debian-sid-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-sid-cross-armv6l
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
armv7l-debian-sid-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-sid-cross-armv7l
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
i686-debian-sid-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-sid-cross-i686
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
mips64el-debian-sid-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-sid-cross-mips64el
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
mipsel-debian-sid-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-sid-cross-mipsel
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ppc64le-debian-sid-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-sid-cross-ppc64le
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
s390x-debian-sid-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-sid-cross-s390x
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
mingw32-fedora-35-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: fedora-35-cross-mingw32
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
mingw64-fedora-35-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: fedora-35-cross-mingw64
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
mingw32-fedora-rawhide-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: fedora-rawhide-cross-mingw32
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
mingw64-fedora-rawhide-container:
 | 
			
		||||
  extends: .container_job
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: fedora-rawhide-cross-mingw64
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Native build jobs
 | 
			
		||||
 | 
			
		||||
x86_64-almalinux-8:
 | 
			
		||||
  extends: .native_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-almalinux-8-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: almalinux-8
 | 
			
		||||
    RPM: skip
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-almalinux-8-clang:
 | 
			
		||||
  extends: .native_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-almalinux-8-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    CC: clang
 | 
			
		||||
    NAME: almalinux-8
 | 
			
		||||
    RPM: skip
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-centos-stream-8:
 | 
			
		||||
  extends: .native_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-centos-stream-8-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: centos-stream-8
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-centos-stream-9:
 | 
			
		||||
  extends: .native_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-centos-stream-9-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: centos-stream-9
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-debian-10:
 | 
			
		||||
  extends: .native_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-debian-10-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-10
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-debian-11:
 | 
			
		||||
  extends: .native_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-debian-11-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-11
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-debian-11-clang:
 | 
			
		||||
  extends: .native_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-debian-11-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-11
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-debian-sid:
 | 
			
		||||
  extends: .native_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-debian-sid-container
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: debian-sid
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-fedora-34:
 | 
			
		||||
  extends: .native_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-fedora-34-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: fedora-34
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-fedora-35:
 | 
			
		||||
  extends: .native_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-fedora-35-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: fedora-35
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-fedora-rawhide:
 | 
			
		||||
  extends: .native_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-fedora-rawhide-container
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: fedora-rawhide
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-fedora-rawhide-clang:
 | 
			
		||||
  extends: .native_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-fedora-rawhide-container
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    CC: clang
 | 
			
		||||
    NAME: fedora-rawhide
 | 
			
		||||
    RPM: skip
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-opensuse-leap-152:
 | 
			
		||||
  extends: .native_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-opensuse-leap-152-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: opensuse-leap-152
 | 
			
		||||
    RPM: skip
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-opensuse-tumbleweed:
 | 
			
		||||
  extends: .native_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-opensuse-tumbleweed-container
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: opensuse-tumbleweed
 | 
			
		||||
    RPM: skip
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-ubuntu-1804:
 | 
			
		||||
  extends: .native_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-ubuntu-1804-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    NAME: ubuntu-1804
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-ubuntu-2004:
 | 
			
		||||
  extends: .native_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-ubuntu-2004-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    ASAN_OPTIONS: verify_asan_link_order=0
 | 
			
		||||
    MESON_ARGS: -Db_lundef=false -Db_sanitize=address,undefined
 | 
			
		||||
    NAME: ubuntu-2004
 | 
			
		||||
    UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-ubuntu-2004-clang:
 | 
			
		||||
  extends: .native_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - x86_64-ubuntu-2004-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    CC: clang
 | 
			
		||||
    MESON_ARGS: -Db_lundef=false -Db_sanitize=address,undefined
 | 
			
		||||
    NAME: ubuntu-2004
 | 
			
		||||
    UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Cross build jobs
 | 
			
		||||
 | 
			
		||||
armv6l-debian-10:
 | 
			
		||||
  extends: .cross_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - armv6l-debian-10-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    CROSS: armv6l
 | 
			
		||||
    NAME: debian-10
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
mips-debian-10:
 | 
			
		||||
  extends: .cross_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - mips-debian-10-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    CROSS: mips
 | 
			
		||||
    NAME: debian-10
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
mipsel-debian-10:
 | 
			
		||||
  extends: .cross_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - mipsel-debian-10-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    CROSS: mipsel
 | 
			
		||||
    NAME: debian-10
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
armv7l-debian-11:
 | 
			
		||||
  extends: .cross_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - armv7l-debian-11-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    CROSS: armv7l
 | 
			
		||||
    NAME: debian-11
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
mips64el-debian-11:
 | 
			
		||||
  extends: .cross_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - mips64el-debian-11-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    CROSS: mips64el
 | 
			
		||||
    NAME: debian-11
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ppc64le-debian-11:
 | 
			
		||||
  extends: .cross_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - ppc64le-debian-11-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    CROSS: ppc64le
 | 
			
		||||
    NAME: debian-11
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
aarch64-debian-sid:
 | 
			
		||||
  extends: .cross_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - aarch64-debian-sid-container
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    CROSS: aarch64
 | 
			
		||||
    NAME: debian-sid
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
i686-debian-sid:
 | 
			
		||||
  extends: .cross_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - i686-debian-sid-container
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    CROSS: i686
 | 
			
		||||
    NAME: debian-sid
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
s390x-debian-sid:
 | 
			
		||||
  extends: .cross_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - s390x-debian-sid-container
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    CROSS: s390x
 | 
			
		||||
    NAME: debian-sid
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
mingw64-fedora-35:
 | 
			
		||||
  extends: .cross_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - mingw64-fedora-35-container
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    CROSS: mingw64
 | 
			
		||||
    NAME: fedora-35
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
mingw32-fedora-rawhide:
 | 
			
		||||
  extends: .cross_build_job
 | 
			
		||||
  needs:
 | 
			
		||||
    - mingw32-fedora-rawhide-container
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  variables:
 | 
			
		||||
    CROSS: mingw32
 | 
			
		||||
    NAME: fedora-rawhide
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Native cirrus build jobs
 | 
			
		||||
 | 
			
		||||
x86_64-freebsd-12:
 | 
			
		||||
  extends: .cirrus_build_job
 | 
			
		||||
  needs: []
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    CIRRUS_VM_IMAGE_NAME: freebsd-12-2
 | 
			
		||||
    CIRRUS_VM_IMAGE_SELECTOR: image_family
 | 
			
		||||
    CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
 | 
			
		||||
    INSTALL_COMMAND: pkg install -y
 | 
			
		||||
    NAME: freebsd-12
 | 
			
		||||
    UPDATE_COMMAND: pkg update
 | 
			
		||||
    UPGRADE_COMMAND: pkg upgrade -y
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-freebsd-13:
 | 
			
		||||
  extends: .cirrus_build_job
 | 
			
		||||
  needs: []
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    CIRRUS_VM_IMAGE_NAME: freebsd-13-0
 | 
			
		||||
    CIRRUS_VM_IMAGE_SELECTOR: image_family
 | 
			
		||||
    CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
 | 
			
		||||
    INSTALL_COMMAND: pkg install -y
 | 
			
		||||
    NAME: freebsd-13
 | 
			
		||||
    UPDATE_COMMAND: pkg update
 | 
			
		||||
    UPGRADE_COMMAND: pkg upgrade -y
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x86_64-macos-11:
 | 
			
		||||
  extends: .cirrus_build_job
 | 
			
		||||
  needs: []
 | 
			
		||||
  allow_failure: false
 | 
			
		||||
  variables:
 | 
			
		||||
    CIRRUS_VM_IMAGE_NAME: big-sur-base
 | 
			
		||||
    CIRRUS_VM_IMAGE_SELECTOR: image
 | 
			
		||||
    CIRRUS_VM_INSTANCE_TYPE: osx_instance
 | 
			
		||||
    INSTALL_COMMAND: brew install
 | 
			
		||||
    NAME: macos-11
 | 
			
		||||
    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
 | 
			
		||||
    UPDATE_COMMAND: brew update
 | 
			
		||||
    UPGRADE_COMMAND: brew upgrade
 | 
			
		||||
							
								
								
									
										240
									
								
								ci/helper
									
									
									
									
									
								
							
							
						
						
									
										240
									
								
								ci/helper
									
									
									
									
									
								
							@@ -1,240 +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 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 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)
 | 
			
		||||
 | 
			
		||||
        # check_stale action
 | 
			
		||||
        check_staleparser = subparsers.add_parser(
 | 
			
		||||
            "check-stale",
 | 
			
		||||
            help="check for existence of stale images on the GitLab instance",
 | 
			
		||||
            parents=[gitlabparser],
 | 
			
		||||
            formatter_class=argparse.ArgumentDefaultsHelpFormatter,
 | 
			
		||||
        )
 | 
			
		||||
        check_staleparser.set_defaults(func=Application._action_check_stale)
 | 
			
		||||
 | 
			
		||||
    def parse(self):
 | 
			
		||||
        return self._parser.parse_args()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Application:
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        self._basedir = pathlib.Path(__file__).resolve().parent
 | 
			
		||||
        self._args = Parser().parse()
 | 
			
		||||
 | 
			
		||||
    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_targets(self):
 | 
			
		||||
        output = self._lcitool_run(["targets"])
 | 
			
		||||
        return output.splitlines()
 | 
			
		||||
 | 
			
		||||
    def _check_stale_images(self):
 | 
			
		||||
        namespace = self._args.namespace
 | 
			
		||||
        gitlab_uri = self._args.gitlab_uri
 | 
			
		||||
        registry_uri = util.get_registry_uri(namespace, gitlab_uri)
 | 
			
		||||
 | 
			
		||||
        stale_images = util.get_registry_stale_images(registry_uri, self._basedir)
 | 
			
		||||
        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_check_stale(self):
 | 
			
		||||
        self._check_stale_images()
 | 
			
		||||
 | 
			
		||||
    def run(self):
 | 
			
		||||
        self._args.func(self)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    Application().run()
 | 
			
		||||
							
								
								
									
										205
									
								
								ci/manifest.yml
									
									
									
									
									
								
							
							
						
						
									
										205
									
								
								ci/manifest.yml
									
									
									
									
									
								
							@@ -1,205 +0,0 @@
 | 
			
		||||
projects:
 | 
			
		||||
  - libvirt
 | 
			
		||||
 | 
			
		||||
gitlab:
 | 
			
		||||
  namespace: libvirt
 | 
			
		||||
  project: libvirt
 | 
			
		||||
 | 
			
		||||
targets:
 | 
			
		||||
  almalinux-8:
 | 
			
		||||
    jobs:
 | 
			
		||||
      - arch: x86_64
 | 
			
		||||
        variables:
 | 
			
		||||
          RPM: skip
 | 
			
		||||
 | 
			
		||||
      - arch: x86_64
 | 
			
		||||
        suffix: -clang
 | 
			
		||||
        variables:
 | 
			
		||||
          RPM: skip
 | 
			
		||||
          CC: clang
 | 
			
		||||
 | 
			
		||||
  centos-stream-8:
 | 
			
		||||
    jobs:
 | 
			
		||||
      - arch: x86_64
 | 
			
		||||
 | 
			
		||||
  centos-stream-9:
 | 
			
		||||
    jobs:
 | 
			
		||||
      - arch: x86_64
 | 
			
		||||
  debian-10:
 | 
			
		||||
    jobs:
 | 
			
		||||
      - arch: x86_64
 | 
			
		||||
 | 
			
		||||
      - arch: aarch64
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: false
 | 
			
		||||
 | 
			
		||||
      - arch: armv6l
 | 
			
		||||
 | 
			
		||||
      - arch: armv7l
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: false
 | 
			
		||||
 | 
			
		||||
      - arch: i686
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: false
 | 
			
		||||
 | 
			
		||||
      - arch: mips
 | 
			
		||||
 | 
			
		||||
      - arch: mips64el
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: false
 | 
			
		||||
 | 
			
		||||
      - arch: mipsel
 | 
			
		||||
 | 
			
		||||
      - arch: ppc64le
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: false
 | 
			
		||||
 | 
			
		||||
      - arch: s390x
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: false
 | 
			
		||||
 | 
			
		||||
  debian-11:
 | 
			
		||||
    jobs:
 | 
			
		||||
      - arch: x86_64
 | 
			
		||||
 | 
			
		||||
      - arch: x86_64
 | 
			
		||||
        suffix: -clang
 | 
			
		||||
 | 
			
		||||
      - arch: aarch64
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: false
 | 
			
		||||
 | 
			
		||||
      - arch: armv6l
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: false
 | 
			
		||||
 | 
			
		||||
      - arch: armv7l
 | 
			
		||||
 | 
			
		||||
      - arch: i686
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: false
 | 
			
		||||
 | 
			
		||||
      - arch: mips64el
 | 
			
		||||
 | 
			
		||||
      - arch: mipsel
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: false
 | 
			
		||||
 | 
			
		||||
      - arch: ppc64le
 | 
			
		||||
 | 
			
		||||
      - arch: s390x
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: false
 | 
			
		||||
 | 
			
		||||
  debian-sid:
 | 
			
		||||
    jobs:
 | 
			
		||||
      - arch: x86_64
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
 | 
			
		||||
      - arch: aarch64
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
 | 
			
		||||
      - arch: armv6l
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: false
 | 
			
		||||
 | 
			
		||||
      - arch: armv7l
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: false
 | 
			
		||||
 | 
			
		||||
      - arch: i686
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
 | 
			
		||||
      - arch: mips64el
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: false
 | 
			
		||||
 | 
			
		||||
      - arch: mipsel
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: false
 | 
			
		||||
 | 
			
		||||
      - arch: ppc64le
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: false
 | 
			
		||||
 | 
			
		||||
      - arch: s390x
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
 | 
			
		||||
  fedora-34: x86_64
 | 
			
		||||
 | 
			
		||||
  fedora-35:
 | 
			
		||||
    jobs:
 | 
			
		||||
      - arch: x86_64
 | 
			
		||||
 | 
			
		||||
      - arch: mingw32
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: false
 | 
			
		||||
 | 
			
		||||
      - arch: mingw64
 | 
			
		||||
 | 
			
		||||
  fedora-rawhide:
 | 
			
		||||
    jobs:
 | 
			
		||||
      - arch: x86_64
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
 | 
			
		||||
      - arch: x86_64
 | 
			
		||||
        suffix: -clang
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        variables:
 | 
			
		||||
          CC: clang
 | 
			
		||||
          RPM: skip
 | 
			
		||||
 | 
			
		||||
      - arch: mingw32
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
 | 
			
		||||
      - arch: mingw64
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: false
 | 
			
		||||
 | 
			
		||||
  freebsd-12: x86_64
 | 
			
		||||
 | 
			
		||||
  freebsd-13: x86_64
 | 
			
		||||
 | 
			
		||||
  freebsd-current:
 | 
			
		||||
    jobs:
 | 
			
		||||
      - arch: x86_64
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        builds: False
 | 
			
		||||
 | 
			
		||||
  opensuse-leap-152:
 | 
			
		||||
    jobs:
 | 
			
		||||
      - arch: x86_64
 | 
			
		||||
        variables:
 | 
			
		||||
          RPM: skip
 | 
			
		||||
 | 
			
		||||
  opensuse-tumbleweed:
 | 
			
		||||
    jobs:
 | 
			
		||||
      - arch: x86_64
 | 
			
		||||
        allow-failure: true
 | 
			
		||||
        variables:
 | 
			
		||||
          RPM: skip
 | 
			
		||||
 | 
			
		||||
  macos-11:
 | 
			
		||||
    jobs:
 | 
			
		||||
      - arch: x86_64
 | 
			
		||||
        variables:
 | 
			
		||||
          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
 | 
			
		||||
 | 
			
		||||
  ubuntu-1804: x86_64
 | 
			
		||||
 | 
			
		||||
  ubuntu-2004:
 | 
			
		||||
    jobs:
 | 
			
		||||
      - arch: x86_64
 | 
			
		||||
        variables:
 | 
			
		||||
          ASAN_OPTIONS: verify_asan_link_order=0
 | 
			
		||||
          MESON_ARGS: -Db_lundef=false -Db_sanitize=address,undefined
 | 
			
		||||
          UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1
 | 
			
		||||
 | 
			
		||||
      - arch: x86_64
 | 
			
		||||
        suffix: -clang
 | 
			
		||||
        variables:
 | 
			
		||||
          CC: clang
 | 
			
		||||
          MESON_ARGS: -Db_lundef=false -Db_sanitize=address,undefined
 | 
			
		||||
          UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1
 | 
			
		||||
							
								
								
									
										78
									
								
								ci/util.py
									
									
									
									
									
								
							
							
						
						
									
										78
									
								
								ci/util.py
									
									
									
									
									
								
							@@ -1,78 +0,0 @@
 | 
			
		||||
import json
 | 
			
		||||
import pathlib
 | 
			
		||||
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_dockerfiles(base_dir) -> List:
 | 
			
		||||
    """
 | 
			
		||||
    List all container dockerfiles in the local directory.
 | 
			
		||||
 | 
			
		||||
    :return: list of dockerfile names
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    dkrs = []
 | 
			
		||||
    d = pathlib.Path(base_dir, "containers")
 | 
			
		||||
    for f in d.iterdir():
 | 
			
		||||
        if f.suffix == ".Dockerfile":
 | 
			
		||||
            dkrs.append(f.stem)
 | 
			
		||||
    return dkrs
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_registry_stale_images(registry_uri: str, base_dir: 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 base_dir: local repository base directory
 | 
			
		||||
    :return: dictionary formatted as: {<gitlab_image_name>: <gitlab_image_id>}
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    dockerfiles = get_dockerfiles(base_dir)
 | 
			
		||||
    images = get_registry_images(registry_uri)
 | 
			
		||||
    name_prefix = "ci-"
 | 
			
		||||
 | 
			
		||||
    stale_images = {}
 | 
			
		||||
    for img in images:
 | 
			
		||||
        if img["name"][len(name_prefix):] not in dockerfiles:
 | 
			
		||||
            stale_images[img["name"]] = img["id"]
 | 
			
		||||
 | 
			
		||||
    return stale_images
 | 
			
		||||
							
								
								
									
										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__ < 10 || (__clang_major__ == 10 && __clang_minor__ < 0)
 | 
			
		||||
#   error You need at least XCode Clang v10.0 to compile libvirt
 | 
			
		||||
#  endif
 | 
			
		||||
# else
 | 
			
		||||
#  if __clang_major__ < 6 || (__clang_major__ == 6 && __clang_minor__ < 4)
 | 
			
		||||
#   error You need at least Clang v6.0 to compile libvirt
 | 
			
		||||
#  endif
 | 
			
		||||
# endif
 | 
			
		||||
#elif defined(__GNUC__) && defined(__GNUC_MINOR__)
 | 
			
		||||
# if __GNUC__ < 7 || (__GNUC__ == 7 && __GNUC_MINOR__ < 4)
 | 
			
		||||
#  error You need at least GCC v7.4.0 to compile libvirt
 | 
			
		||||
# endif
 | 
			
		||||
#else
 | 
			
		||||
# error You either need at least GCC 7.4.0 or Clang 6.0 or XCode Clang 10.0 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
 | 
			
		||||
							
								
								
									
										2578
									
								
								configure.ac
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2578
									
								
								configure.ac
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										420
									
								
								daemon/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										420
									
								
								daemon/Makefile.am
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,420 @@
 | 
			
		||||
## Process this file with automake to produce Makefile.in
 | 
			
		||||
 | 
			
		||||
## Copyright (C) 2005-2013 Red Hat, Inc.
 | 
			
		||||
## See COPYING.LIB for the License of this software
 | 
			
		||||
 | 
			
		||||
INCLUDES = \
 | 
			
		||||
	-I$(top_builddir)/gnulib/lib -I$(top_srcdir)/gnulib/lib \
 | 
			
		||||
	-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 \
 | 
			
		||||
	$(GETTEXT_CPPFLAGS)
 | 
			
		||||
 | 
			
		||||
CLEANFILES =
 | 
			
		||||
 | 
			
		||||
DAEMON_GENERATED =					\
 | 
			
		||||
		$(srcdir)/remote_dispatch.h		\
 | 
			
		||||
		$(srcdir)/lxc_dispatch.h		\
 | 
			
		||||
		$(srcdir)/qemu_dispatch.h		\
 | 
			
		||||
		$(NULL)
 | 
			
		||||
 | 
			
		||||
DAEMON_SOURCES =					\
 | 
			
		||||
		libvirtd.c libvirtd.h			\
 | 
			
		||||
		libvirtd-config.c libvirtd-config.h	\
 | 
			
		||||
		remote.c remote.h			\
 | 
			
		||||
		stream.c stream.h			\
 | 
			
		||||
		../src/remote/remote_protocol.c		\
 | 
			
		||||
		../src/remote/lxc_protocol.c		\
 | 
			
		||||
		../src/remote/qemu_protocol.c		\
 | 
			
		||||
		$(DAEMON_GENERATED)
 | 
			
		||||
 | 
			
		||||
DISTCLEANFILES =
 | 
			
		||||
EXTRA_DIST =						\
 | 
			
		||||
	remote_dispatch.h				\
 | 
			
		||||
	lxc_dispatch.h					\
 | 
			
		||||
	qemu_dispatch.h					\
 | 
			
		||||
	libvirtd.conf					\
 | 
			
		||||
	libvirtd.init.in				\
 | 
			
		||||
	libvirtd.upstart				\
 | 
			
		||||
	libvirtd.policy.in				\
 | 
			
		||||
	libvirtd.sasl					\
 | 
			
		||||
	libvirtd.service.in				\
 | 
			
		||||
	libvirtd.sysconf				\
 | 
			
		||||
	libvirtd.sysctl					\
 | 
			
		||||
	libvirtd.aug                                    \
 | 
			
		||||
	libvirtd.logrotate.in                           \
 | 
			
		||||
	libvirtd.qemu.logrotate.in                      \
 | 
			
		||||
	libvirtd.lxc.logrotate.in                       \
 | 
			
		||||
	libvirtd.uml.logrotate.in                       \
 | 
			
		||||
	test_libvirtd.aug.in                             \
 | 
			
		||||
	THREADS.txt					\
 | 
			
		||||
	libvirtd.pod.in					\
 | 
			
		||||
	libvirtd.8.in					\
 | 
			
		||||
	$(DAEMON_SOURCES)
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
$(srcdir)/remote_dispatch.h: $(srcdir)/../src/rpc/gendispatch.pl \
 | 
			
		||||
		$(REMOTE_PROTOCOL)
 | 
			
		||||
	$(AM_V_GEN)$(PERL) -w $(srcdir)/../src/rpc/gendispatch.pl -b remote REMOTE \
 | 
			
		||||
	  $(REMOTE_PROTOCOL) > $@
 | 
			
		||||
 | 
			
		||||
$(srcdir)/lxc_dispatch.h: $(srcdir)/../src/rpc/gendispatch.pl \
 | 
			
		||||
		$(LXC_PROTOCOL)
 | 
			
		||||
	$(AM_V_GEN)$(PERL) -w $(srcdir)/../src/rpc/gendispatch.pl -b lxc LXC \
 | 
			
		||||
	  $(LXC_PROTOCOL) > $@
 | 
			
		||||
 | 
			
		||||
$(srcdir)/qemu_dispatch.h: $(srcdir)/../src/rpc/gendispatch.pl \
 | 
			
		||||
		$(QEMU_PROTOCOL)
 | 
			
		||||
	$(AM_V_GEN)$(PERL) -w $(srcdir)/../src/rpc/gendispatch.pl -b qemu QEMU \
 | 
			
		||||
	  $(QEMU_PROTOCOL) > $@
 | 
			
		||||
 | 
			
		||||
if WITH_LIBVIRTD
 | 
			
		||||
 | 
			
		||||
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.8: $(srcdir)/libvirtd.8.in
 | 
			
		||||
	$(AM_V_GEN)sed \
 | 
			
		||||
	    -e 's|[@]sysconfdir[@]|$(sysconfdir)|g' \
 | 
			
		||||
	    -e 's|[@]localstatedir[@]|$(localstatedir)|g' \
 | 
			
		||||
	    < $< > $@-t && \
 | 
			
		||||
	mv $@-t $@
 | 
			
		||||
 | 
			
		||||
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) $(POLKIT_CFLAGS) $(DBUS_CFLAGS) $(LIBNL_CFLAGS) \
 | 
			
		||||
	$(WARN_CFLAGS) \
 | 
			
		||||
	$(COVERAGE_CFLAGS) \
 | 
			
		||||
	-DQEMUD_PID_FILE="\"$(QEMUD_PID_FILE)\""
 | 
			
		||||
 | 
			
		||||
libvirtd_LDFLAGS =					\
 | 
			
		||||
	$(WARN_CFLAGS)					\
 | 
			
		||||
	$(COVERAGE_LDFLAGS)
 | 
			
		||||
 | 
			
		||||
libvirtd_LDADD =					\
 | 
			
		||||
	$(LIBXML_LIBS)					\
 | 
			
		||||
	$(GNUTLS_LIBS)					\
 | 
			
		||||
	$(SASL_LIBS)					\
 | 
			
		||||
	$(DBUS_LIBS)					\
 | 
			
		||||
	$(POLKIT_LIBS)					\
 | 
			
		||||
	$(LIBNL_LIBS)
 | 
			
		||||
 | 
			
		||||
if WITH_DTRACE_PROBES
 | 
			
		||||
libvirtd_LDADD += ../src/libvirt_probes.lo
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
libvirtd_LDADD += \
 | 
			
		||||
	../src/libvirt-lxc.la \
 | 
			
		||||
	../src/libvirt-qemu.la
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
if WITH_LXC
 | 
			
		||||
    libvirtd_LDADD += ../src/libvirt_driver_lxc.la
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
if WITH_XEN
 | 
			
		||||
    libvirtd_LDADD += ../src/libvirt_driver_xen.la
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
if WITH_LIBXL
 | 
			
		||||
    libvirtd_LDADD += ../src/libvirt_driver_libxl.la
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
if WITH_UML
 | 
			
		||||
    libvirtd_LDADD += ../src/libvirt_driver_uml.la
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
if WITH_STORAGE
 | 
			
		||||
    libvirtd_LDADD += ../src/libvirt_driver_storage.la
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
if WITH_NETWORK
 | 
			
		||||
    libvirtd_LDADD += ../src/libvirt_driver_network.la
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
if WITH_INTERFACE
 | 
			
		||||
    libvirtd_LDADD += ../src/libvirt_driver_interface.la
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
if WITH_NODE_DEVICES
 | 
			
		||||
    libvirtd_LDADD += ../src/libvirt_driver_nodedev.la
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
if WITH_SECRETS
 | 
			
		||||
    libvirtd_LDADD += ../src/libvirt_driver_secret.la
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
if WITH_NWFILTER
 | 
			
		||||
    libvirtd_LDADD += ../src/libvirt_driver_nwfilter.la
 | 
			
		||||
endif
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
libvirtd_LDADD += ../src/libvirt.la
 | 
			
		||||
 | 
			
		||||
if WITH_POLKIT
 | 
			
		||||
if WITH_POLKIT0
 | 
			
		||||
policydir = $(datadir)/PolicyKit/policy
 | 
			
		||||
policyauth = auth_admin_keep_session
 | 
			
		||||
else
 | 
			
		||||
policydir = $(datadir)/polkit-1/actions
 | 
			
		||||
policyauth = auth_admin_keep
 | 
			
		||||
endif
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
uninstall-data-polkit::
 | 
			
		||||
	rm -f $(DESTDIR)$(policydir)/org.libvirt.unix.policy
 | 
			
		||||
	rmdir $(DESTDIR)$(policydir) || :
 | 
			
		||||
else
 | 
			
		||||
install-data-polkit::
 | 
			
		||||
uninstall-data-polkit::
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
remote.c: $(DAEMON_GENERATED)
 | 
			
		||||
remote.h: $(DAEMON_GENERATED)
 | 
			
		||||
 | 
			
		||||
LOGROTATE_CONFS = libvirtd.qemu.logrotate libvirtd.lxc.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.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.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.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/libvirtd.conf
 | 
			
		||||
 | 
			
		||||
uninstall-sysctl:
 | 
			
		||||
	rm -f $(DESTDIR)$(prefix)/lib/sysctl.d/libvirtd.conf
 | 
			
		||||
	rmdir $(DESTDIR)$(prefix)/lib/sysctl.d || :
 | 
			
		||||
else
 | 
			
		||||
install-sysctl:
 | 
			
		||||
uninstall-sysctl:
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
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
 | 
			
		||||
install-init-upstart:
 | 
			
		||||
uninstall-init-upstart:
 | 
			
		||||
endif # LIBVIRT_INIT_SCRIPT_UPSTART
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if LIBVIRT_INIT_SCRIPT_SYSTEMD
 | 
			
		||||
 | 
			
		||||
SYSTEMD_UNIT_DIR = /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
 | 
			
		||||
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)" -s 8
 | 
			
		||||
 | 
			
		||||
$(srcdir)/libvirtd.8.in: libvirtd.pod.in $(top_srcdir)/configure.ac
 | 
			
		||||
	$(AM_V_GEN)$(POD2MAN) --name LIBVIRTD $< $@ \
 | 
			
		||||
	    && if grep 'POD ERROR' $@ ; then rm $@; exit 1; fi
 | 
			
		||||
 | 
			
		||||
# 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
 | 
			
		||||
install-data-sasl:
 | 
			
		||||
uninstall-data-sasl:
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
CLEANFILES += $(BUILT_SOURCES) $(man8_MANS)
 | 
			
		||||
CLEANFILES += *.cov *.gcov .libs/*.gcda .libs/*.gcno *.gcno *.gcda
 | 
			
		||||
MAINTAINERCLEANFILES = $(srcdir)/libvirtd.8.in $(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 onto 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
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user