mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-09-19 01:44:56 +03:00
Compare commits
321 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
35472c9274 | ||
|
5c881f35c7 | ||
|
ff05b2c4f9 | ||
|
6ca5649625 | ||
|
39a427e8ba | ||
|
ca1cebdb9e | ||
|
1917cc05a3 | ||
|
35ca0db359 | ||
|
2abde0ac07 | ||
|
fe98b65947 | ||
|
db7159a150 | ||
|
220c90e4bb | ||
|
ee92a735cb | ||
|
b50e896cee | ||
|
c1e7b1fbd1 | ||
|
71d4ccb253 | ||
|
80550d01ae | ||
|
083962fa05 | ||
|
b520cf07f0 | ||
|
dd2f524c6b | ||
|
d325704a3f | ||
|
997d97c34e | ||
|
7725e01c1f | ||
|
38e6d7b981 | ||
|
3fcc90968c | ||
|
b2c5a91197 | ||
|
d6bce88ca3 | ||
|
758a066ab3 | ||
|
086c3fbab1 | ||
|
e9c00cbc63 | ||
|
f8e651117f | ||
|
6180670cd2 | ||
|
4d695acd86 | ||
|
400a5a9290 | ||
|
e48596773f | ||
|
2c5b4c5621 | ||
|
419cb87283 | ||
|
4779cf0ff5 | ||
|
5badf8c44b | ||
|
8cb0d0893f | ||
|
b1dcd198fa | ||
|
6f42946997 | ||
|
2fd84d39b4 | ||
|
69cba17cb0 | ||
|
c02482bdd8 | ||
|
20d781692a | ||
|
9649b0a8b4 | ||
|
819df25518 | ||
|
3883ef0360 | ||
|
b9964013c3 | ||
|
9a7bbc246b | ||
|
d13b354bf0 | ||
|
eddceda2f3 | ||
|
c27523e635 | ||
|
f81800cf23 | ||
|
d4ffc36fbc | ||
|
40b0176129 | ||
|
cba63bbc22 | ||
|
a69e46813f | ||
|
cf640bdf8e | ||
|
f7ebe9d012 | ||
|
00b610c8e9 | ||
|
4da16535d0 | ||
|
3fb882a3fe | ||
|
9af9f46b09 | ||
|
95b065590f | ||
|
b20e330d67 | ||
|
ca2765a2a0 | ||
|
b1b449b3e2 | ||
|
da284a74fb | ||
|
dfd51bfc21 | ||
|
87924a1345 | ||
|
6fba8c1f37 | ||
|
870094c1e1 | ||
|
568e6651ba | ||
|
aa57eae7b1 | ||
|
2a71d969e4 | ||
|
9a5d10efc9 | ||
|
8512c27e23 | ||
|
20b07c28ec | ||
|
da54890f52 | ||
|
d838a6bca8 | ||
|
2a6cfe8ee8 | ||
|
9fc5b7da1d | ||
|
cba21fd98d | ||
|
d020d73f30 | ||
|
66d095e673 | ||
|
340ab1c91c | ||
|
91b4315b81 | ||
|
49cb53fae9 | ||
|
855d8612a2 | ||
|
e858eda3a0 | ||
|
bba793dcf5 | ||
|
e8603e5f73 | ||
|
4cb2da8cd4 | ||
|
9373f0b71b | ||
|
d312193630 | ||
|
5814e39b32 | ||
|
d2c5e42fdd | ||
|
7223766077 | ||
|
762fcc7760 | ||
|
794d6c40a1 | ||
|
f1c2127bec | ||
|
45d6729f98 | ||
|
56f97e14ab | ||
|
96aedd9aa1 | ||
|
27e6e9f212 | ||
|
d66fa967b3 | ||
|
89a3feb8b6 | ||
|
04d6469141 | ||
|
3c3aaaf95f | ||
|
e570f87a3d | ||
|
52c4d49ca3 | ||
|
e6c5ae46f7 | ||
|
0889bdb844 | ||
|
73908b1d10 | ||
|
661a2e83ef | ||
|
934e7c2217 | ||
|
a570ecd600 | ||
|
dd85b621cf | ||
|
9225f9e12f | ||
|
a016b20fa4 | ||
|
17c787562d | ||
|
6503cb1217 | ||
|
2e2a81be22 | ||
|
a52a99f5d3 | ||
|
a25ac3ac7e | ||
|
a9846e98c7 | ||
|
95ae1a06bc | ||
|
84daddb0b9 | ||
|
5840d413ad | ||
|
29263ec243 | ||
|
55157abb0b | ||
|
c7bd2b052f | ||
|
4b5a793070 | ||
|
9274256d5b | ||
|
65a405dd04 | ||
|
b24a9f3e12 | ||
|
33ada8f147 | ||
|
07fdce4fd3 | ||
|
f6e7865d27 | ||
|
2a75b756d0 | ||
|
25a35c9ce5 | ||
|
5b3c356015 | ||
|
114b726f0d | ||
|
4e1e20c3a7 | ||
|
b5df0ffe74 | ||
|
bd670db3f0 | ||
|
1ae2604552 | ||
|
aa7d50ce82 | ||
|
ab73fe59be | ||
|
37b07d90bb | ||
|
b3f0d2ecba | ||
|
0089a2058f | ||
|
dfa1548496 | ||
|
c82cbf1d48 | ||
|
da5eb7f119 | ||
|
9096dc1a5f | ||
|
cb724f8d13 | ||
|
af57c143d4 | ||
|
eb6ef1f53e | ||
|
b4bbe640ef | ||
|
0f031d181f | ||
|
99f07394f4 | ||
|
52ab82bd1c | ||
|
7fba39bc52 | ||
|
e39afdb898 | ||
|
3e416ba91f | ||
|
f44e18ed93 | ||
|
328d7da106 | ||
|
158e70fc3b | ||
|
d4d8774468 | ||
|
3600eec4d1 | ||
|
67f5578681 | ||
|
fc8700e919 | ||
|
c82da02253 | ||
|
50f508efca | ||
|
e240feae95 | ||
|
5b66c62d47 | ||
|
f9ff58276f | ||
|
50b594e486 | ||
|
6b184ba1ce | ||
|
19d309025b | ||
|
73cfdbff65 | ||
|
9a42097bf4 | ||
|
7f756f519c | ||
|
3291646d45 | ||
|
e88212d583 | ||
|
d8a1c6b70c | ||
|
856a23c2bc | ||
|
ecd9a50b76 | ||
|
6ef9ea9bbf | ||
|
a0be049f67 | ||
|
48b9eb2d55 | ||
|
d1186c589f | ||
|
df4b23c9de | ||
|
d8978c90f9 | ||
|
6884836d95 | ||
|
4f1b3e4243 | ||
|
b5b4faea50 | ||
|
1d3218ab5e | ||
|
fd9f487aca | ||
|
41a3072338 | ||
|
8f755aa295 | ||
|
0ddca6ab09 | ||
|
ce5d17b316 | ||
|
443e37da42 | ||
|
3cc52164b1 | ||
|
d617c987b7 | ||
|
18c1491697 | ||
|
05aa969fc9 | ||
|
f6936215f1 | ||
|
68563e7ad6 | ||
|
b5f86fc038 | ||
|
282bd9dc61 | ||
|
a14f23f05c | ||
|
cd94771b1d | ||
|
cf2d303d0c | ||
|
2b25ea3e15 | ||
|
ab26f4e372 | ||
|
052ef069b1 | ||
|
655d3b2b87 | ||
|
707624b3d9 | ||
|
656875281a | ||
|
20c0657406 | ||
|
7dc3258a3c | ||
|
8d19662026 | ||
|
e28cfeb11d | ||
|
d0714c927c | ||
|
4a9f92f283 | ||
|
f065174ede | ||
|
763f71e51f | ||
|
180fb3b2b4 | ||
|
588b16bbd5 | ||
|
e36af9f8c1 | ||
|
aa829d7bcd | ||
|
75a5c8225b | ||
|
2cb6a0e887 | ||
|
0f28a21bb6 | ||
|
45e60ff0f1 | ||
|
6bbfd92d22 | ||
|
d070e1d1bc | ||
|
30e02e12c1 | ||
|
30aede2279 | ||
|
fae6eb83e7 | ||
|
ce43e865a1 | ||
|
9404d15dc1 | ||
|
f587a073c6 | ||
|
7910b77c29 | ||
|
3d8345422e | ||
|
99e11c19af | ||
|
da62dd1d13 | ||
|
05cee1a9ab | ||
|
54c3a530c7 | ||
|
18adb6cf82 | ||
|
d9f909d4cd | ||
|
f80cf4938a | ||
|
b5c7516e46 | ||
|
b109b1140c | ||
|
e173e81ed9 | ||
|
0129b9ac1d | ||
|
d63f0754e3 | ||
|
5531a13c5f | ||
|
6e2847b277 | ||
|
acae5f8633 | ||
|
c954ad8a3e | ||
|
3cf61dd5f0 | ||
|
372a14c673 | ||
|
1d655dd1bb | ||
|
622c0c7f70 | ||
|
881dd9dc43 | ||
|
ac620c2e4a | ||
|
8a55d381ae | ||
|
834bb44834 | ||
|
e3f725a171 | ||
|
dde004a70f | ||
|
b38be9da8c | ||
|
3dab791fc7 | ||
|
d2aec1138f | ||
|
9963f590c1 | ||
|
e3cac12ca8 | ||
|
0efe7ecc2d | ||
|
f2be8879b8 | ||
|
92d9128a77 | ||
|
61544d310e | ||
|
455d222457 | ||
|
3f76415724 | ||
|
4ceabdf570 | ||
|
4ecd1d6983 | ||
|
cea0c393aa | ||
|
7175699cbb | ||
|
413d8670ec | ||
|
965e7f1452 | ||
|
27ef74ff40 | ||
|
9b72feecc3 | ||
|
8dce8b828c | ||
|
3f62b1135e | ||
|
28f8deb29a | ||
|
f9d589cc41 | ||
|
194d0b8b0a | ||
|
ad8a04697f | ||
|
47e6324545 | ||
|
f25ef09fb5 | ||
|
c5031e2d1d | ||
|
a791cde7cb | ||
|
cc8b3237c5 | ||
|
3506eb7a7b | ||
|
07530184d5 | ||
|
a6c441662d | ||
|
2bfb07cb05 | ||
|
df7a458f66 | ||
|
26fdec39b4 | ||
|
cf51433172 | ||
|
e9df9ab66e | ||
|
bc5355bb57 | ||
|
8a98a23900 | ||
|
8fca254f5d | ||
|
779ac7ab69 | ||
|
cde4c634e7 | ||
|
d3b7ad3f33 | ||
|
b2ff41d81f |
@@ -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
|
@@ -14,7 +14,4 @@
|
||||
(nxml-mode . (
|
||||
(indent-tabs-mode . nil)
|
||||
))
|
||||
(perl-mode . (
|
||||
(indent-tabs-mode . nil)
|
||||
))
|
||||
)
|
||||
|
@@ -1,21 +0,0 @@
|
||||
# EditorConfig is a file format and collection of text editor plugins
|
||||
# for maintaining consistent coding styles between different editors
|
||||
# and IDEs. Most popular editors support this either natively or via
|
||||
# plugin.
|
||||
#
|
||||
# Check https://editorconfig.org for details.
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
charset = utf-8
|
||||
|
||||
[*.c]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
[*.{rng,xml}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
38
.github/lockdown.yml
vendored
38
.github/lockdown.yml
vendored
@@ -1,38 +0,0 @@
|
||||
# Configuration for Repo Lockdown - https://github.com/dessant/repo-lockdown
|
||||
|
||||
skipCreatedBefore: 2020-01-01
|
||||
|
||||
# Close issues and pull requests
|
||||
close: true
|
||||
|
||||
# Lock issues and pull requests
|
||||
lock: true
|
||||
|
||||
# Optionally, specify configuration settings just for `issues` or `pulls`
|
||||
issues:
|
||||
comment: |
|
||||
Thank you for your interest in the libvirt project.
|
||||
|
||||
Since this repository is a read-only mirror of the project's master repostory hosted on GitLab, issues opened here are not processed.
|
||||
|
||||
We kindly request that new issues are reported to
|
||||
|
||||
https://gitlab.com/libvirt/libvirt/-/issues/new
|
||||
|
||||
Thank you for your time and understanding.
|
||||
|
||||
pulls:
|
||||
comment: |
|
||||
Thank you for your interest in the libvirt project.
|
||||
|
||||
Since this repository is a read-only mirror of the project's master repostory hosted on GitLab, merge requests opened here are not processed.
|
||||
|
||||
We kindly request that contributors fork the project at
|
||||
|
||||
https://gitlab.com/libvirt/libvirt/
|
||||
|
||||
push changes to the fork, and then open a new merge request at
|
||||
|
||||
https://gitlab.com/libvirt/libvirt/-/merge_requests/new
|
||||
|
||||
Thank you for your time and understanding.
|
190
.gitignore
vendored
190
.gitignore
vendored
@@ -1,23 +1,177 @@
|
||||
# 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
|
||||
.git
|
||||
.git-module-status
|
||||
|
||||
# libvirt related ignores
|
||||
.libs
|
||||
.lvimrc
|
||||
.memdump
|
||||
.sc-start-sc_*
|
||||
/ABOUT-NLS
|
||||
/COPYING
|
||||
/ChangeLog
|
||||
/GNUmakefile
|
||||
/INSTALL
|
||||
/NEWS
|
||||
/aclocal.m4
|
||||
/autom4te.cache
|
||||
/build-aux
|
||||
/build-aux/
|
||||
/build/
|
||||
/ci/scratch/
|
||||
tags
|
||||
|
||||
# clangd related ignores
|
||||
.clangd
|
||||
compile_commands.json
|
||||
/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.service
|
||||
/docs/apibuild.py.stamp
|
||||
/docs/devhelp/libvirt.devhelp
|
||||
/docs/hvsupport.html.in
|
||||
/docs/libvirt-api.xml
|
||||
/docs/libvirt-qemu-*.xml
|
||||
/docs/libvirt-refs.xml
|
||||
/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
|
||||
/mingw32-libvirt.spec
|
||||
/mkinstalldirs
|
||||
/po/*
|
||||
/proxy/
|
||||
/python/generated.stamp
|
||||
/python/generator.py.stamp
|
||||
/python/libvirt-export.c
|
||||
/python/libvirt-qemu-export.c
|
||||
/python/libvirt-qemu.[ch]
|
||||
/python/libvirt.[ch]
|
||||
/python/libvirt.py
|
||||
/python/libvirt_qemu.py
|
||||
/sc_*
|
||||
/src/esx/*.generated.*
|
||||
/src/hyperv/*.generated.*
|
||||
/src/libvirt*.def
|
||||
/src/libvirt.syms
|
||||
/src/libvirt_*.stp
|
||||
/src/libvirt_*helper
|
||||
/src/libvirt_lxc
|
||||
/src/locking/qemu-sanlock.conf
|
||||
/src/probes.h
|
||||
/src/remote/*_client_bodies.h
|
||||
/src/remote/*_protocol.[ch]
|
||||
/src/rpc/virkeepaliveprotocol.[ch]
|
||||
/src/rpc/virnetprotocol.[ch]
|
||||
/src/util/virkeymaps.h
|
||||
/src/virt-aa-helper
|
||||
/tests/*.log
|
||||
/tests/*.pid
|
||||
/tests/*xml2*test
|
||||
/tests/commandhelper
|
||||
/tests/commandtest
|
||||
/tests/conftest
|
||||
/tests/cputest
|
||||
/tests/domainsnapshotxml2xmltest
|
||||
/tests/esxutilstest
|
||||
/tests/eventtest
|
||||
/tests/hashtest
|
||||
/tests/jsontest
|
||||
/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/qemumonitortest
|
||||
/tests/qemuxmlnstest
|
||||
/tests/qparamtest
|
||||
/tests/reconnect
|
||||
/tests/secaatest
|
||||
/tests/seclabeltest
|
||||
/tests/sexpr2xmltest
|
||||
/tests/shunloadtest
|
||||
/tests/sockettest
|
||||
/tests/ssh
|
||||
/tests/statstest
|
||||
/tests/utiltest
|
||||
/tests/virauthconfigtest
|
||||
/tests/virbuftest
|
||||
/tests/virhashtest
|
||||
/tests/virkeyfiletest
|
||||
/tests/virnet*test
|
||||
/tests/virshtest
|
||||
/tests/virtimetest
|
||||
/tests/viruritest
|
||||
/tests/vmx2xmltest
|
||||
/tests/xencapstest
|
||||
/tests/xmconfigtest
|
||||
/tools/*.[18]
|
||||
/tools/libvirt-guests.init
|
||||
/tools/libvirt-guests.service
|
||||
/tools/virsh
|
||||
/tools/virsh-*-edit.c
|
||||
/tools/virt-*-validate
|
||||
/tools/virt-sanlock-cleanup
|
||||
/update.log
|
||||
Makefile
|
||||
Makefile.in
|
||||
TAGS
|
||||
coverage
|
||||
cscope.files
|
||||
cscope.out
|
||||
results.log
|
||||
stamp-h
|
||||
stamp-h.in
|
||||
stamp-h1
|
||||
!/gnulib/lib/Makefile.am
|
||||
!/gnulib/tests/Makefile.am
|
||||
!/m4/virt-*.m4
|
||||
!/po/*.po
|
||||
!/po/POTFILES.in
|
||||
!/po/libvirt.pot
|
||||
|
607
.gitlab-ci.yml
607
.gitlab-ci.yml
@@ -1,607 +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"
|
||||
|
||||
# Common templates
|
||||
|
||||
.container_job_template: &container_job_definition
|
||||
image: docker:stable
|
||||
stage: containers
|
||||
needs: []
|
||||
services:
|
||||
- docker:dind
|
||||
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/libvirt-$NAME.Dockerfile" ci/containers
|
||||
- docker push "$TAG"
|
||||
after_script:
|
||||
- docker logout
|
||||
|
||||
# We build many containers which can be useful to debug problems but are not
|
||||
# needed for the pipeline itself to complete: those sometimes fail, and when
|
||||
# that happens it's mostly because of temporary issues with Debian sid. We
|
||||
# don't want those failures to affect the overall pipeline status
|
||||
.container_optional_job_template: &container_optional_job_definition
|
||||
<<: *container_job_definition
|
||||
allow_failure: true
|
||||
|
||||
.native_build_job_template: &native_build_job_definition
|
||||
stage: builds
|
||||
image: $CI_REGISTRY_IMAGE/ci-$NAME:latest
|
||||
cache:
|
||||
paths:
|
||||
- ccache/
|
||||
key: "$CI_JOB_NAME"
|
||||
before_script:
|
||||
- *script_variables
|
||||
script:
|
||||
- meson build --werror || (cat build/meson-logs/meson-log.txt && exit 1)
|
||||
- if test "$DIST" != "skip";
|
||||
then
|
||||
ninja -C build dist;
|
||||
else
|
||||
ninja -C build;
|
||||
ninja -C build test;
|
||||
fi
|
||||
- if test -x /usr/bin/rpmbuild && test "$RPM" != "skip";
|
||||
then
|
||||
rpmbuild --nodeps -ta build/meson-dist/libvirt-*.tar.xz;
|
||||
fi
|
||||
|
||||
# Jobs that we delegate to Cirrus CI because they require an operating
|
||||
# system other than Linux. These jobs will only run if the required
|
||||
# setup has been performed on the GitLab account (see ci/README.rst).
|
||||
#
|
||||
# The Cirrus CI configuration is generated by replacing target-specific
|
||||
# variables in a generic template: some of these variables are provided
|
||||
# when the GitLab CI job is defined, others are taken from a shell
|
||||
# snippet generated using lcitool.
|
||||
#
|
||||
# Note that the $PATH environment variable has to be treated with
|
||||
# special care, because we can't just override it at the GitLab CI job
|
||||
# definition level or we risk breaking it completely.
|
||||
.cirrus_build_job_template: &cirrus_build_job_definition
|
||||
stage: builds
|
||||
image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
|
||||
needs: []
|
||||
script:
|
||||
- source ci/cirrus/libvirt-$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|[@]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|[@]PIP@|$PIP|g"
|
||||
-e "s|[@]PYPI_PKGS@|$PYPI_PKGS|g"
|
||||
<ci/cirrus/build.yml >ci/cirrus/$NAME.yml
|
||||
- cat ci/cirrus/$NAME.yml
|
||||
- cirrus-run -v --show-build-log always ci/cirrus/$NAME.yml
|
||||
only:
|
||||
variables:
|
||||
- $CIRRUS_GITHUB_REPO
|
||||
- $CIRRUS_API_TOKEN
|
||||
|
||||
.cross_build_default_job_template: &cross_build_job_definition
|
||||
stage: builds
|
||||
image: $CI_REGISTRY_IMAGE/ci-$NAME-cross-$CROSS:latest
|
||||
cache:
|
||||
paths:
|
||||
- ccache/
|
||||
key: "$CI_JOB_NAME"
|
||||
before_script:
|
||||
- *script_variables
|
||||
script:
|
||||
- meson build --werror $MESON_OPTS || (cat build/meson-logs/meson-log.txt && exit 1)
|
||||
- ninja -C build
|
||||
- if test "$CROSS" = "i686" ; then ninja -C build test ; fi
|
||||
|
||||
|
||||
# Native container build jobs
|
||||
|
||||
x64-centos-7-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: centos-7
|
||||
|
||||
x64-centos-8-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: centos-8
|
||||
|
||||
x64-centos-stream-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: centos-stream
|
||||
|
||||
x64-debian-10-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: debian-10
|
||||
|
||||
x64-debian-sid-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: debian-sid
|
||||
|
||||
x64-fedora-31-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: fedora-31
|
||||
|
||||
x64-fedora-32-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: fedora-32
|
||||
|
||||
x64-fedora-rawhide-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: fedora-rawhide
|
||||
|
||||
x64-opensuse-151-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: opensuse-151
|
||||
|
||||
x64-ubuntu-1804-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: ubuntu-1804
|
||||
|
||||
x64-ubuntu-2004-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: ubuntu-2004
|
||||
|
||||
|
||||
# Cross-build containers build jobs
|
||||
|
||||
aarch64-debian-10-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: debian-10-cross-aarch64
|
||||
|
||||
armv6l-debian-10-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: debian-10-cross-armv6l
|
||||
|
||||
armv7l-debian-10-container:
|
||||
<<: *container_optional_job_definition
|
||||
variables:
|
||||
NAME: debian-10-cross-armv7l
|
||||
|
||||
i686-debian-10-container:
|
||||
<<: *container_optional_job_definition
|
||||
variables:
|
||||
NAME: debian-10-cross-i686
|
||||
|
||||
mips-debian-10-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: debian-10-cross-mips
|
||||
|
||||
mips64el-debian-10-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: debian-10-cross-mips64el
|
||||
|
||||
mipsel-debian-10-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: debian-10-cross-mipsel
|
||||
|
||||
ppc64le-debian-10-container:
|
||||
<<: *container_optional_job_definition
|
||||
variables:
|
||||
NAME: debian-10-cross-ppc64le
|
||||
|
||||
s390x-debian-10-container:
|
||||
<<: *container_optional_job_definition
|
||||
variables:
|
||||
NAME: debian-10-cross-s390x
|
||||
|
||||
aarch64-debian-sid-container:
|
||||
<<: *container_optional_job_definition
|
||||
variables:
|
||||
NAME: debian-sid-cross-aarch64
|
||||
|
||||
armv6l-debian-sid-container:
|
||||
<<: *container_optional_job_definition
|
||||
variables:
|
||||
NAME: debian-sid-cross-armv6l
|
||||
|
||||
armv7l-debian-sid-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: debian-sid-cross-armv7l
|
||||
|
||||
i686-debian-sid-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: debian-sid-cross-i686
|
||||
|
||||
mips64el-debian-sid-container:
|
||||
<<: *container_optional_job_definition
|
||||
variables:
|
||||
NAME: debian-sid-cross-mips64el
|
||||
|
||||
mipsel-debian-sid-container:
|
||||
<<: *container_optional_job_definition
|
||||
variables:
|
||||
NAME: debian-sid-cross-mipsel
|
||||
|
||||
ppc64le-debian-sid-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: debian-sid-cross-ppc64le
|
||||
|
||||
s390x-debian-sid-container:
|
||||
<<: *container_optional_job_definition
|
||||
variables:
|
||||
NAME: debian-sid-cross-s390x
|
||||
|
||||
mingw32-fedora-rawhide-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: fedora-rawhide-cross-mingw32
|
||||
|
||||
mingw64-fedora-rawhide-container:
|
||||
<<: *container_job_definition
|
||||
variables:
|
||||
NAME: fedora-rawhide-cross-mingw64
|
||||
|
||||
|
||||
# Native architecture build + test jobs
|
||||
|
||||
x64-debian-10:
|
||||
<<: *native_build_job_definition
|
||||
needs:
|
||||
- x64-debian-10-container
|
||||
variables:
|
||||
NAME: debian-10
|
||||
|
||||
x64-debian-10-clang:
|
||||
<<: *native_build_job_definition
|
||||
needs:
|
||||
- x64-debian-10-container
|
||||
variables:
|
||||
NAME: debian-10
|
||||
CC: clang
|
||||
|
||||
x64-debian-sid:
|
||||
<<: *native_build_job_definition
|
||||
needs:
|
||||
- x64-debian-sid-container
|
||||
variables:
|
||||
NAME: debian-sid
|
||||
|
||||
x64-centos-7:
|
||||
<<: *native_build_job_definition
|
||||
needs:
|
||||
- x64-centos-7-container
|
||||
variables:
|
||||
NAME: centos-7
|
||||
# meson dist fails on CentOS 7 because of old git that fails to clone
|
||||
# from shallow git repository which is done when running meson dist
|
||||
DIST: skip
|
||||
RPM: skip
|
||||
|
||||
x64-centos-8:
|
||||
<<: *native_build_job_definition
|
||||
needs:
|
||||
- x64-centos-8-container
|
||||
variables:
|
||||
NAME: centos-8
|
||||
RPM: skip
|
||||
|
||||
x64-centos-8-clang:
|
||||
<<: *native_build_job_definition
|
||||
needs:
|
||||
- x64-centos-8-container
|
||||
variables:
|
||||
NAME: centos-8
|
||||
CC: clang
|
||||
RPM: skip
|
||||
|
||||
x64-centos-stream:
|
||||
<<: *native_build_job_definition
|
||||
needs:
|
||||
- x64-centos-stream-container
|
||||
variables:
|
||||
NAME: centos-stream
|
||||
RPM: skip
|
||||
|
||||
x64-fedora-31:
|
||||
<<: *native_build_job_definition
|
||||
needs:
|
||||
- x64-fedora-31-container
|
||||
variables:
|
||||
NAME: fedora-31
|
||||
RPM: skip
|
||||
|
||||
x64-fedora-32:
|
||||
<<: *native_build_job_definition
|
||||
needs:
|
||||
- x64-fedora-32-container
|
||||
variables:
|
||||
NAME: fedora-32
|
||||
|
||||
x64-fedora-rawhide:
|
||||
<<: *native_build_job_definition
|
||||
needs:
|
||||
- x64-fedora-rawhide-container
|
||||
variables:
|
||||
NAME: fedora-rawhide
|
||||
|
||||
x64-fedora-rawhide-clang:
|
||||
<<: *native_build_job_definition
|
||||
needs:
|
||||
- x64-fedora-rawhide-container
|
||||
variables:
|
||||
NAME: fedora-rawhide
|
||||
CC: clang
|
||||
RPM: skip
|
||||
|
||||
x64-opensuse-151:
|
||||
<<: *native_build_job_definition
|
||||
needs:
|
||||
- x64-opensuse-151-container
|
||||
variables:
|
||||
NAME: opensuse-151
|
||||
RPM: skip
|
||||
|
||||
x64-ubuntu-1804:
|
||||
<<: *native_build_job_definition
|
||||
needs:
|
||||
- x64-ubuntu-1804-container
|
||||
variables:
|
||||
NAME: ubuntu-1804
|
||||
|
||||
x64-ubuntu-2004:
|
||||
<<: *native_build_job_definition
|
||||
needs:
|
||||
- x64-ubuntu-2004-container
|
||||
variables:
|
||||
NAME: ubuntu-2004
|
||||
|
||||
x64-freebsd-11-build:
|
||||
<<: *cirrus_build_job_definition
|
||||
variables:
|
||||
NAME: freebsd-11
|
||||
CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
|
||||
CIRRUS_VM_IMAGE_SELECTOR: image_family
|
||||
CIRRUS_VM_IMAGE_NAME: freebsd-11-4
|
||||
INSTALL_COMMAND: pkg install -y
|
||||
|
||||
x64-freebsd-12-build:
|
||||
<<: *cirrus_build_job_definition
|
||||
variables:
|
||||
NAME: freebsd-12
|
||||
CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
|
||||
CIRRUS_VM_IMAGE_SELECTOR: image_family
|
||||
CIRRUS_VM_IMAGE_NAME: freebsd-12-1
|
||||
INSTALL_COMMAND: pkg install -y
|
||||
|
||||
x64-macos-1015-build:
|
||||
<<: *cirrus_build_job_definition
|
||||
variables:
|
||||
NAME: macos-1015
|
||||
CIRRUS_VM_INSTANCE_TYPE: osx_instance
|
||||
CIRRUS_VM_IMAGE_SELECTOR: image
|
||||
CIRRUS_VM_IMAGE_NAME: catalina-base
|
||||
INSTALL_COMMAND: brew install
|
||||
PATH_EXTRA: /usr/local/opt/ccache/libexec:/usr/local/opt/gettext/bin:/usr/local/opt/libpcap/bin:/usr/local/opt/libxslt/bin:/usr/local/opt/rpcgen/bin
|
||||
PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/libpcap/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig:/usr/local/opt/ncurses/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig
|
||||
|
||||
|
||||
# Cross compiled build jobs
|
||||
|
||||
armv6l-debian-10:
|
||||
<<: *cross_build_job_definition
|
||||
needs:
|
||||
- armv6l-debian-10-container
|
||||
variables:
|
||||
NAME: debian-10
|
||||
CROSS: armv6l
|
||||
|
||||
armv7l-debian-10:
|
||||
<<: *cross_build_job_definition
|
||||
needs:
|
||||
- armv7l-debian-10-container
|
||||
variables:
|
||||
NAME: debian-10
|
||||
CROSS: armv7l
|
||||
|
||||
mips64el-debian-10:
|
||||
<<: *cross_build_job_definition
|
||||
needs:
|
||||
- mips64el-debian-10-container
|
||||
variables:
|
||||
NAME: debian-10
|
||||
CROSS: mips64el
|
||||
|
||||
mips-debian-10:
|
||||
<<: *cross_build_job_definition
|
||||
needs:
|
||||
- mips-debian-10-container
|
||||
variables:
|
||||
NAME: debian-10
|
||||
CROSS: mips
|
||||
|
||||
aarch64-debian-10:
|
||||
<<: *cross_build_job_definition
|
||||
needs:
|
||||
- aarch64-debian-10-container
|
||||
variables:
|
||||
NAME: debian-10
|
||||
CROSS: aarch64
|
||||
|
||||
mipsel-debian-10:
|
||||
<<: *cross_build_job_definition
|
||||
needs:
|
||||
- mipsel-debian-10-container
|
||||
variables:
|
||||
NAME: debian-10
|
||||
CROSS: mipsel
|
||||
|
||||
s390x-debian-sid:
|
||||
<<: *cross_build_job_definition
|
||||
needs:
|
||||
- s390x-debian-10-container
|
||||
variables:
|
||||
NAME: debian-sid
|
||||
CROSS: s390x
|
||||
|
||||
i686-debian-sid:
|
||||
<<: *cross_build_job_definition
|
||||
needs:
|
||||
- i686-debian-sid-container
|
||||
variables:
|
||||
NAME: debian-sid
|
||||
CROSS: i686
|
||||
|
||||
ppc64le-debian-sid:
|
||||
<<: *cross_build_job_definition
|
||||
needs:
|
||||
- ppc64le-debian-10-container
|
||||
variables:
|
||||
NAME: debian-sid
|
||||
CROSS: ppc64le
|
||||
|
||||
mingw32-fedora-rawhide:
|
||||
<<: *cross_build_job_definition
|
||||
needs:
|
||||
- mingw32-fedora-rawhide-container
|
||||
variables:
|
||||
NAME: fedora-rawhide
|
||||
CROSS: mingw32
|
||||
|
||||
mingw64-fedora-rawhide:
|
||||
<<: *cross_build_job_definition
|
||||
needs:
|
||||
- mingw64-fedora-rawhide-container
|
||||
variables:
|
||||
NAME: fedora-rawhide
|
||||
CROSS: mingw64
|
||||
|
||||
|
||||
# This artifact published by this job is downloaded by libvirt.org to
|
||||
# be deployed to the web root:
|
||||
# https://gitlab.com/libvirt/libvirt/-/jobs/artifacts/master/download?job=website
|
||||
website:
|
||||
stage: builds
|
||||
image: $CI_REGISTRY_IMAGE/ci-centos-8:latest
|
||||
needs:
|
||||
- x64-centos-8-container
|
||||
before_script:
|
||||
- *script_variables
|
||||
script:
|
||||
- meson build --prefix=$(pwd)/vroot || (cat build/meson-logs/meson-log.txt && exit 1)
|
||||
- ninja -C build install-web
|
||||
- mv vroot/share/doc/libvirt/html/ website
|
||||
artifacts:
|
||||
expose_as: 'Website'
|
||||
name: 'website'
|
||||
when: on_success
|
||||
expire_in: 30 days
|
||||
paths:
|
||||
- website
|
||||
|
||||
|
||||
codestyle:
|
||||
stage: builds
|
||||
image: $CI_REGISTRY_IMAGE/ci-opensuse-151:latest
|
||||
needs:
|
||||
- x64-opensuse-151-container
|
||||
before_script:
|
||||
- *script_variables
|
||||
script:
|
||||
- meson build || (cat build/meson-logs/meson-log.txt && exit 1)
|
||||
- ninja -C build libvirt-pot-dep
|
||||
- meson test -C build --suite syntax-check --no-rebuild || (cat build/meson-logs/testlog.txt && exit 1)
|
||||
|
||||
|
||||
# This artifact published by this job is downloaded to push to Weblate
|
||||
# for translation usage:
|
||||
# https://gitlab.com/libvirt/libvirt/-/jobs/artifacts/master/download?job=potfile
|
||||
potfile:
|
||||
stage: builds
|
||||
image: $CI_REGISTRY_IMAGE/ci-centos-8:latest
|
||||
needs:
|
||||
- x64-centos-8-container
|
||||
only:
|
||||
- master
|
||||
before_script:
|
||||
- *script_variables
|
||||
script:
|
||||
- meson build || (cat build/meson-logs/meson-log.txt && exit 1)
|
||||
- ninja -C build libvirt-pot-dep
|
||||
- ninja -C build libvirt-pot
|
||||
- cp po/libvirt.pot libvirt.pot
|
||||
artifacts:
|
||||
expose_as: 'Potfile'
|
||||
name: 'potfile'
|
||||
when: on_success
|
||||
expire_in: 30 days
|
||||
paths:
|
||||
- libvirt.pot
|
||||
|
||||
|
||||
# Check that all commits are signed-off for the DCO.
|
||||
# Skip on "libvirt" namespace, since we only need to run
|
||||
# this test on developer's personal forks from which
|
||||
# merge requests are submitted
|
||||
check-dco:
|
||||
stage: sanity_checks
|
||||
needs: []
|
||||
image: registry.gitlab.com/libvirt/libvirt-ci/check-dco:master
|
||||
script:
|
||||
- /check-dco
|
||||
except:
|
||||
variables:
|
||||
- $CI_PROJECT_NAMESPACE == 'libvirt'
|
||||
variables:
|
||||
GIT_DEPTH: 1000
|
||||
|
||||
|
||||
# Coverity job that is run only by schedules
|
||||
coverity:
|
||||
image: $CI_REGISTRY_IMAGE/ci-centos-8:latest
|
||||
needs:
|
||||
- x64-centos-8-container
|
||||
stage: builds
|
||||
script:
|
||||
- curl https://scan.coverity.com/download/linux64 --form project=$COVERITY_SCAN_PROJECT_NAME --form token=$COVERITY_SCAN_TOKEN -o /tmp/cov-analysis-linux64.tgz
|
||||
- tar xfz /tmp/cov-analysis-linux64.tgz
|
||||
- meson build
|
||||
- cov-analysis-linux64-*/bin/cov-build --dir cov-int ninja -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"
|
||||
only:
|
||||
refs:
|
||||
- schedules
|
||||
variables:
|
||||
- $COVERITY_SCAN_PROJECT_NAME && $COVERITY_SCAN_TOKEN
|
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 dbd914496c
49
.mailmap
49
.mailmap
@@ -3,12 +3,10 @@
|
||||
# Email consolidation:
|
||||
# <Preferred address in AUTHORS> <other alias used by same author>
|
||||
|
||||
<amy.griffis@hp.com> <aron.griffis@hp.com>
|
||||
<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 +18,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>
|
||||
@@ -29,52 +28,10 @@
|
||||
<supriyak@linux.vnet.ibm.com> <supriyak@in.ibm.com>
|
||||
<neil@aldur.co.uk> <neil@brightbox.co.uk>
|
||||
<stefanb@us.ibm.com> <stefanb@linux.vnet.ibm.com>
|
||||
<stefanb@us.ibm.com> <stefannb@linux.vnet.ibm.com>
|
||||
<josh.durgin@inktank.com> <joshd@hq.newdream.net>
|
||||
<josh.durgin@inktank.com> <josh.durgin@dreamhost.com>
|
||||
<gerd@egidy.de> <lists@egidy.de>
|
||||
<gerd@egidy.de> <gerd.von.egidy@intra2net.com>
|
||||
<benoar@dolka.fr> <benjamin.cama@telecom-bretagne.eu>
|
||||
<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>
|
||||
Alex Jia <ajia@redhat.com>
|
||||
Royce Lv <lvroyce@linux.vnet.ibm.com>
|
||||
Daniel J Walsh <dwalsh@redhat.com>
|
||||
Ján Tomko <jtomko@redhat.com>
|
||||
Gerd von Egidy <gerd@egidy.de>
|
||||
MATSUDA Daiki <matsudadik@intellilink.co.jp>
|
||||
Tang Chen <tangchen@cn.fujitsu.com>
|
||||
Peng Zhou <ailvpeng25@gmail.com>
|
||||
Dirk Herrendoerfer <d.herrendoerfer@herrendoerfer.name>
|
||||
Thibault VINCENT <thibault.vincent@smartjog.com>
|
||||
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>
|
||||
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>
|
||||
Wen Ruo Lv <lvroyce@linux.vnet.ibm.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 }
|
255
AUTHORS
Normal file
255
AUTHORS
Normal file
@@ -0,0 +1,255 @@
|
||||
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:
|
||||
|
||||
Daniel Veillard <veillard@redhat.com>
|
||||
Daniel Berrange <berrange@redhat.com>
|
||||
Richard W.M. Jones <rjones@redhat.com>
|
||||
Mark McLoughlin <markmc@redhat.com>
|
||||
Anthony Liguori <aliguori@us.ibm.com>
|
||||
Jim Meyering <meyering@redhat.com>
|
||||
Jim Fehlig <jfehlig@suse.com>
|
||||
Chris Lalancette <clalance@redhat.com>
|
||||
Cole Robinson <crobinso@redhat.com>
|
||||
Guido Günther <agx@sigxcpu.org>
|
||||
John Levon <john.levon@sun.com>
|
||||
Matthias Bolte <matthias.bolte@googlemail.com>
|
||||
Jiří Denemark <jdenemar@redhat.com>
|
||||
Dave Allan <dallan@redhat.com>
|
||||
Laine Stump <laine@redhat.com>
|
||||
Stefan Berger <stefanb@us.ibm.com>
|
||||
Eric Blake <eblake@redhat.com>
|
||||
Justin Clift <jclift@redhat.com>
|
||||
Osier Yang <jyang@redhat.com>
|
||||
Wen Congyang <wency@cn.fujitsu.com>
|
||||
Michal Prívozník <mprivozn@redhat.com>
|
||||
Peter Krempa <pkrempa@redhat.com>
|
||||
Christophe Fergeau <cfergeau@redhat.com>
|
||||
Alex Jia <ajia@redhat.com>
|
||||
|
||||
Previous maintainers:
|
||||
Karel Zak <kzak@redhat.com>
|
||||
Atsushi SAKAI <sakaia@jp.fujitsu.com>
|
||||
Dave Leskovec <dlesko@linux.vnet.ibm.com>
|
||||
Dan Smith <danms@us.ibm.com>
|
||||
|
||||
Patches have also been contributed by:
|
||||
|
||||
David Lutterkort <dlutter@redhat.com>
|
||||
Andrew Puch <apuch@redhat.com>
|
||||
Philippe Berthault <philippe.berthault@Bull.net>
|
||||
Hugh Brock <hbrock@redhat.com>
|
||||
Michel Ponceau <michel.ponceau@bull.net>
|
||||
Jeremy Katz <katzj@redhat.com>
|
||||
Pete Vetere <pvetere@redhat.com>
|
||||
Kazuki Mizushima <mizushima.kazuk@jp.fujitsu.com>
|
||||
Saori Fukuta <fukuta.saori@jp.fujitsu.com>
|
||||
Tatsuro Enokura <fj7716hz@aa.jp.fujitsu.com>
|
||||
Takahashi Tomohiro <takatom@jp.fujitsu.com>
|
||||
Nobuhiro Itou <fj0873gn@aa.jp.fujitsu.com>
|
||||
Masayuki Sunou <fj1826dm@aa.jp.fujitsu.com>
|
||||
Mark Johnson <johnson.nh@gmail.com>
|
||||
Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
|
||||
Shuveb Hussain <shuveb@binarykarma.com>
|
||||
Jim Paris <jim@jtan.com>
|
||||
Daniel Hokka Zakrisson <daniel@hozac.com>
|
||||
Mads Chr. Olesen <shiyee@shiyee.dk>
|
||||
Anton Protopopov <aspsk2@gmail.com>
|
||||
Stefan de Konink <dekonink@kinkrsoftware.nl>
|
||||
Kaitlin Rupert <kaitlin@linux.vnet.ibm.com>
|
||||
Evgeniy Sokolov <evg@openvz.org>
|
||||
David Lively <dlively@virtualiron.com>
|
||||
Charles Duffy <Charles_Duffy@messageone.com>
|
||||
Nguyen Anh Quynh <aquynh@gmail.com>
|
||||
James Morris <jmorris@namei.org>
|
||||
Chris Wright <chrisw@redhat.com>
|
||||
Ben Guthro <ben.guthro@gmail.com>
|
||||
Shigeki Sakamoto <fj0588di@aa.jp.fujitsu.com>
|
||||
Gerd von Egidy <lists@egidy.de>
|
||||
Itamar Heim <iheim@redhat.com>
|
||||
Markus Armbruster <armbru@redhat.com>
|
||||
Ryota Ozaki <ozaki.ryota@gmail.com>
|
||||
Daniel J Walsh <dwalsh@redhat.com>
|
||||
Maximilian Wilhelm <max@rfc2324.org>
|
||||
Pritesh Kothari <Pritesh.Kothari@Sun.COM>
|
||||
Amit Shah <amit.shah@redhat.com>
|
||||
Florian Vichot <florian.vichot@diateam.net>
|
||||
Serge E. Hallyn <serue@us.ibm.com>
|
||||
Soren Hansen <soren@linux2go.dk>
|
||||
Abel Míguez Rodríguez<amiguezr@pdi.ucm.es>
|
||||
Doug Goldstein <cardoe@cardoe.com>
|
||||
Javier Fontan <jfontan@gmail.com>
|
||||
Federico Simoncelli <fsimonce@redhat.com>
|
||||
Amy Griffis <amy.griffis@hp.com>
|
||||
Henrik Persson E <henrik.e.persson@ericsson.com>
|
||||
Satoru SATOH <satoru.satoh@gmail.com>
|
||||
Paolo Bonzini <pbonzini@redhat.com>
|
||||
Miloslav Trmač <mitr@redhat.com>
|
||||
Jamie Strandboge <jamie@canonical.com>
|
||||
Gerhard Stenzel <gerhard.stenzel@de.ibm.com>
|
||||
Matthew Booth <mbooth@redhat.com>
|
||||
Diego Elio Pettenò <flameeyes@gmail.com>
|
||||
Adam Litke <agl@us.ibm.com>
|
||||
Steve Yarmie <steve.yarmie@gmail.com>
|
||||
Dan Kenigsberg <danken@redhat.com>
|
||||
Yuji NISHIDA <nishidy@nict.go.jp>
|
||||
Dustin Xiong <x_k_123@hotmail.com>
|
||||
Rolf Eike Beer <eike@sf-mail.de>
|
||||
Wolfgang Mauerer <wolfgang.mauerer@siemens.com>
|
||||
Philipp Hahn <hahn@univention.de>
|
||||
Ed Swierk <eswierk@aristanetworks.com>
|
||||
Paolo Smiraglia <paolo.smiraglia@gmail.com>
|
||||
Sharadha Prabhakar <sharadha.prabhakar@citrix.com>
|
||||
Chris Wong <wongc-redhat@hoku.net>
|
||||
Daniel Berteaud <daniel@firewall-services.com>
|
||||
Dustin Kirkland <kirkland@canonical.com>
|
||||
Luiz Capitulino <lcapitulino@redhat.com>
|
||||
Ryan Harper <ryanh@us.ibm.com>
|
||||
Spencer Shimko <sshimko@tresys.com>
|
||||
Marco Bozzolan <bozzolan@gmail.com>
|
||||
Alex Williamson <alex.williamson@redhat.com>
|
||||
Ersek Laszlo <lacos@caesar.elte.hu>
|
||||
Kenneth Nagin <NAGIN@il.ibm.com>
|
||||
Klaus Ethgen <Klaus@Ethgen.de>
|
||||
Bryan Kearney <bkearney@redhat.com>
|
||||
Darry L. Pierce <dpierce@redhat.com>
|
||||
David Jorm <dfj@redhat.com>
|
||||
Eduardo Otubo <otubo@linux.vnet.ibm.com>
|
||||
Garry Dolley <gdolley@arpnetworks.com>
|
||||
Harshavardhana <harsha@gluster.com>
|
||||
Jonas Eriksson <jonas.j.eriksson@ericsson.com>
|
||||
Jun Koi <junkoi2004@gmail.com>
|
||||
Olivier Fourdan <ofourdan@redhat.com>
|
||||
Ron Yorston <rmy@tigress.co.uk>
|
||||
Shahar Klein <shaharklein@yahoo.com>
|
||||
Taizo ITO <taizo.ito@hde.co.jp>
|
||||
Thomas Treutner <thomas@scripty.at>
|
||||
Jean-Baptiste Rouault <jean-baptiste.rouault@diateam.net>
|
||||
Марк Коренберг <socketpair@gmail.com>
|
||||
Alan Pevec <apevec@redhat.com>
|
||||
Aurelien Rougemont <beorn@binaries.fr>
|
||||
Patrick Dignan <pat_dignan@dell.com>
|
||||
Serge Hallyn <serge.hallyn@canonical.com>
|
||||
Nikunj A. Dadhania <nikunj@linux.vnet.ibm.com>
|
||||
Lai Jiangshan <laijs@cn.fujitsu.com>
|
||||
Harsh Prateek Bora <harsh@linux.vnet.ibm.com>
|
||||
John Morrissey <jwm@horde.net>
|
||||
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
|
||||
Hu Tao <hutao@cn.fujitsu.com>
|
||||
Laurent Léonard <laurent@open-minds.org>
|
||||
MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
|
||||
Josh Durgin <josh.durgin@inktank.com>
|
||||
Roopa Prabhu <roprabhu@cisco.com>
|
||||
Paweł Krześniak <pawel.krzesniak@gmail.com>
|
||||
Kay Schubert <kayegypt@web.de>
|
||||
Marc-André Lureau <marcandre.lureau@redhat.com>
|
||||
Juerg Haefliger <juerg.haefliger@hp.com>
|
||||
Matthias Dahl <mdvirt@designassembly.de>
|
||||
Niels de Vos <ndevos@redhat.com>
|
||||
Davidlohr Bueso <dave@gnu.org>
|
||||
Alon Levy <alevy@redhat.com>
|
||||
Hero Phương <herophuong93@gmail.com>
|
||||
Zdenek Styblik <stybla@turnovfree.net>
|
||||
Gui Jianfeng <guijianfeng@cn.fujitsu.com>
|
||||
Michal Novotny <minovotn@redhat.com>
|
||||
Markus Groß <gross@univention.de>
|
||||
Phil Petty <phpetty@cisco.com>
|
||||
Taku Izumi <izumi.taku@jp.fujitsu.com>
|
||||
Minoru Usui <usui@mxm.nes.nec.co.jp>
|
||||
Tiziano Mueller <dev-zero@gentoo.org>
|
||||
Thibault VINCENT <thibault.vincent@smartjog.com>
|
||||
Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
|
||||
Jesse Cook <code.crashenx@gmail.com>
|
||||
Alexander Todorov <atodorov@otb.bg>
|
||||
Richard Laager <rlaager@wiktel.com>
|
||||
Mark Wu <dwu@redhat.com>
|
||||
Yufang Zhang <yuzhang@redhat.com>
|
||||
Supriya Kannery <supriyak@linux.vnet.ibm.com>
|
||||
Dirk Herrendoerfer <d.herrendoerfer@herrendoerfer.name>
|
||||
Taisuke Yamada <tai@rakugaki.org>
|
||||
Heath Petersen <HeathPetersen@Kandre.com>
|
||||
Neil Wilson <neil@aldur.co.uk>
|
||||
Ohad Levy <ohadlevy@gmail.com>
|
||||
Michael Chapman <mike@very.puzzling.org>
|
||||
Daniel Gollub <gollub@b1-systems.de>
|
||||
David S. Wang <dwang2@cisco.com>
|
||||
Ruben Kerkhof <ruben@rubenkerkhof.com>
|
||||
Scott Moser <smoser@ubuntu.com>
|
||||
Guannan Ren <gren@redhat.com>
|
||||
John Williams <john.williams@petalogix.com>
|
||||
Michael Santos <michael.santos@gmail.com>
|
||||
Oskari Saarenmaa <os@ohmu.fi>
|
||||
Nan Zhang <nzhang@redhat.com>
|
||||
Wieland Hoffmann <themineo@googlemail.com>
|
||||
Douglas Schilling Landgraf <dougsland@redhat.com>
|
||||
Tom Vijlbrief <tom.vijlbrief@xs4all.nl>
|
||||
Shradha Shah <sshah@solarflare.com>
|
||||
Steve Hodgson <shodgson@solarflare.com>
|
||||
Xu He Jie <xuhj@linux.vnet.ibm.com>
|
||||
Lei Li <lilei@linux.vnet.ibm.com>
|
||||
Matthias Witte <witte@netzquadrat.de>
|
||||
Tang Chen <tangchen@cn.fujitsu.com>
|
||||
Dan Horák <dan@danny.cz>
|
||||
Sage Weil <sage@newdream.net>
|
||||
David L Stevens <dlstevens@us.ibm.com>
|
||||
Tyler Coumbes <coumbes@gmail.com>
|
||||
Wen Ruo Lv <lvroyce@linux.vnet.ibm.com>
|
||||
Patrice LACHANCE <patlachance@gmail.com>
|
||||
Eli Qiao <taget@linux.vnet.ibm.com>
|
||||
Michael Wood <esiotrot@gmail.com>
|
||||
Bharata B Rao <bharata@linux.vnet.ibm.com>
|
||||
Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
|
||||
Chang Liu <lingjiao.lc@taobao.com>
|
||||
Lorin Hochstein <lorin@isi.edu>
|
||||
Christian Franke <nobody@nowhere.ws>
|
||||
Prerna Saxena <prerna@linux.vnet.ibm.com>
|
||||
Michael Ellerman <michael@ellerman.id.au>
|
||||
Rommer <rommer@active.by>
|
||||
Yuri Chornoivan <yurchor@ukr.net>
|
||||
Deepak C Shetty <deepakcs@linux.vnet.ibm.com>
|
||||
Martin Kletzander <mkletzan@redhat.com>
|
||||
Laszlo Ersek <lersek@redhat.com>
|
||||
Zeeshan Ali (Khattak) <zeeshanak@gnome.org>
|
||||
Marcelo Cerri <mhcerri@linux.vnet.ibm.com>
|
||||
Hendrik Schwartke <hendrik@os-t.de>
|
||||
Ansis Atteka <aatteka@nicira.com>
|
||||
Dan Wendlandt <dan@nicira.com>
|
||||
Kyle Mestery <kmestery@cisco.com>
|
||||
Lincoln Myers <lincoln_myers@yahoo.com>
|
||||
Peter Robinson <pbrobinson@gmail.com>
|
||||
Benjamin Cama <benoar@dolka.fr>
|
||||
Duncan Rance <libvirt@dunquino.com>
|
||||
Peng Zhou <ailvpeng25@gmail.com>
|
||||
Li Zhang <zhlcindy@linux.vnet.ibm.com>
|
||||
Stef Walter <stefw@gnome.org>
|
||||
Christian Benvenuti <benve@cisco.com>
|
||||
Ilja Livenson <ilja.livenson@gmail.com>
|
||||
Stefan Bader <stefan.bader@canonical.com>
|
||||
MATSUDA Daiki <matsudadik@intellilink.co.jp>
|
||||
Jan Kiszka <jan.kiszka@siemens.com>
|
||||
Ryan Woodsmall <rwoodsmall@gmail.com>
|
||||
Radu Caragea <dmns_serp@yahoo.com>
|
||||
Beat Jörg <Beat.Joerg@ssatr.ch>
|
||||
Gao feng <gaofeng@cn.fujitsu.com>
|
||||
Dipankar Sarma <dipankar@in.ibm.com>
|
||||
Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
|
||||
Thang Pham <thang.pham@us.ibm.com>
|
||||
Eiichi Tsukata <eiichi.tsukata.xh@hitachi.com>
|
||||
Wido den Hollander <wido@widodh.nl>
|
||||
Gene Czarcinski <gene@czarc.net>
|
||||
Stefan Hajnoczi <stefanha@redhat.com>
|
||||
Vladislav Bogdanov <bubble@hoster-ok.com>
|
||||
|
||||
[....send patches to get your name here....]
|
||||
|
||||
The libvirt Logo was designed by Diana Fong
|
||||
|
||||
-- End
|
||||
;; Local Variables:
|
||||
;; coding: utf-8
|
||||
;; End:
|
@@ -1,99 +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>
|
||||
|
||||
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
714
HACKING
Normal file
714
HACKING
Normal file
@@ -0,0 +1,714 @@
|
||||
-*- buffer-read-only: t -*- vi: set ro:
|
||||
DO NOT EDIT THIS FILE! IT IS GENERATED AUTOMATICALLY!
|
||||
|
||||
|
||||
|
||||
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. A command similar to this should work:
|
||||
|
||||
diff -urp libvirt.orig/ libvirt.modified/ > libvirt-myfeature.patch
|
||||
|
||||
or:
|
||||
|
||||
git diff > libvirt-myfeature.patch
|
||||
|
||||
(3) 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.
|
||||
|
||||
(4) Make sure your patches apply against libvirt GIT. Developers only follow GIT
|
||||
and don't care much about released versions.
|
||||
|
||||
(5) Run the automated tests on your code before submitting any changes. In
|
||||
particular, configure with compile warnings set to -Werror:
|
||||
|
||||
./configure --enable-compile-warnings=error
|
||||
|
||||
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
|
||||
|
||||
(6) 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.
|
||||
|
||||
|
||||
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 particulary dangerous in a multi-threaded applications. 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 HAVE_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.
|
92
Makefile.am
Normal file
92
Makefile.am
Normal file
@@ -0,0 +1,92 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
## Copyright (C) 2005-2011 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 \
|
||||
mingw32-libvirt.spec.in \
|
||||
libvirt.pc.in \
|
||||
autobuild.sh \
|
||||
Makefile.nonreentrant \
|
||||
autogen.sh \
|
||||
cfg.mk \
|
||||
examples/domain-events/events-python \
|
||||
$(XML_EXAMPLES)
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = libvirt.pc
|
||||
|
||||
NEWS: $(top_srcdir)/docs/news.xsl $(top_srcdir)/docs/news.html.in
|
||||
-@(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
|
||||
-@(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
|
||||
|
||||
# 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:
|
||||
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
|
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
|
93
autobuild.sh
Executable file
93
autobuild.sh
Executable file
@@ -0,0 +1,93 @@
|
||||
#!/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 [ -n "$AUTOBUILD_COUNTER" ]; then
|
||||
EXTRA_RELEASE=".auto$AUTOBUILD_COUNTER"
|
||||
else
|
||||
NOW=`date +"%s"`
|
||||
EXTRA_RELEASE=".$USER$NOW"
|
||||
fi
|
||||
|
||||
if [ -f /usr/bin/rpmbuild ]; then
|
||||
rpmbuild --nodeps \
|
||||
--define "extra_release $EXTRA_RELEASE" \
|
||||
--define "_sourcedir `pwd`" \
|
||||
-ba --clean libvirt.spec
|
||||
fi
|
||||
|
||||
# Test mingw cross-compile
|
||||
if [ -x /usr/bin/i686-pc-mingw32-gcc ]; then
|
||||
make distclean
|
||||
|
||||
PKG_CONFIG_PATH="$AUTOBUILD_INSTALL_ROOT/i686-pc-mingw32/sys-root/mingw/lib/pkgconfig" \
|
||||
CC="i686-pc-mingw32-gcc" \
|
||||
../configure \
|
||||
--build=$(uname -m)-pc-linux \
|
||||
--host=i686-pc-mingw32 \
|
||||
--prefix="$AUTOBUILD_INSTALL_ROOT/i686-pc-mingw32/sys-root/mingw" \
|
||||
--enable-werror \
|
||||
--without-libvirtd \
|
||||
--without-python
|
||||
|
||||
make
|
||||
make install
|
||||
|
||||
#set -o pipefail
|
||||
#make check 2>&1 | tee "$RESULTS"
|
||||
|
||||
if [ -f /usr/bin/rpmbuild ]; then
|
||||
rpmbuild --nodeps \
|
||||
--define "extra_release $EXTRA_RELEASE" \
|
||||
--define "_sourcedir `pwd`" \
|
||||
-ba --clean mingw32-libvirt.spec
|
||||
fi
|
||||
fi
|
87
autogen.sh
Executable file
87
autogen.sh
Executable file
@@ -0,0 +1,87 @@
|
||||
#!/bin/sh
|
||||
# Run this to generate all the initial makefiles, etc.
|
||||
|
||||
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 "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
|
||||
|
||||
# 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=$(bootstrap_hash; git diff .gnulib)
|
||||
if test "$t" = "$(cat $curr_status 2>/dev/null)" \
|
||||
&& test -f "po/Makevars"; then
|
||||
# good, it's up to date, all we need is autoreconf
|
||||
autoreconf -if
|
||||
else
|
||||
echo running bootstrap$no_git...
|
||||
./bootstrap$no_git --bootstrap-sync && bootstrap_hash > $curr_status \
|
||||
|| { echo "Failed to bootstrap, please investigate."; exit 1; }
|
||||
fi
|
||||
fi
|
||||
|
||||
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."
|
||||
}
|
976
bootstrap
Executable file
976
bootstrap
Executable file
@@ -0,0 +1,976 @@
|
||||
#! /bin/sh
|
||||
# Print a version string.
|
||||
scriptversion=2012-07-19.14; # UTC
|
||||
|
||||
# Bootstrap this package from checked-out sources.
|
||||
|
||||
# Copyright (C) 2003-2012 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
|
||||
|
||||
# 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.
|
||||
no_recursive=
|
||||
case $($AUTORECONF --help) in
|
||||
*--no-recursive*) no_recursive=--no-recursive;;
|
||||
esac
|
||||
|
||||
# Tell autoreconf not to invoke autopoint or libtoolize; they were run above.
|
||||
echo "running: AUTOPOINT=true LIBTOOLIZE=true " \
|
||||
"$AUTORECONF --verbose --install $no_recursive -I $m4_base $ACLOCAL_FLAGS"
|
||||
AUTOPOINT=true LIBTOOLIZE=true \
|
||||
$AUTORECONF --verbose --install $no_recursive -I $m4_base $ACLOCAL_FLAGS \
|
||||
|| 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:
|
241
bootstrap.conf
Normal file
241
bootstrap.conf
Normal file
@@ -0,0 +1,241 @@
|
||||
# Bootstrap configuration.
|
||||
|
||||
# Copyright (C) 2010-2012 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, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
# gnulib modules used by this package.
|
||||
gnulib_modules='
|
||||
accept
|
||||
areadlink
|
||||
base64
|
||||
bind
|
||||
bitrotate
|
||||
byteswap
|
||||
c-ctype
|
||||
c-strcase
|
||||
c-strcasestr
|
||||
calloc-posix
|
||||
canonicalize-lgpl
|
||||
chown
|
||||
close
|
||||
connect
|
||||
configmake
|
||||
count-one-bits
|
||||
crypto/md5
|
||||
dirname-lgpl
|
||||
environ
|
||||
fclose
|
||||
fcntl
|
||||
fcntl-h
|
||||
fdatasync
|
||||
ffs
|
||||
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
|
||||
listen
|
||||
maintainer-makefile
|
||||
manywarnings
|
||||
mkstemp
|
||||
mkstemps
|
||||
mktempd
|
||||
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
|
||||
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 exist.
|
||||
touch 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,10 +0,0 @@
|
||||
# define variables
|
||||
|
||||
top_srcdir = @top_srcdir@
|
||||
top_builddir = @top_builddir@
|
||||
FLAKE8 = @flake8_path@
|
||||
RUNUTF8 = @runutf8@
|
||||
PYTHON = @PYTHON3@
|
||||
|
||||
# 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))
|
@@ -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,49 +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())
|
||||
|
||||
configure_file(
|
||||
input: 'Makefile.in',
|
||||
output: '@BASENAME@',
|
||||
configuration: syntax_check_conf,
|
||||
)
|
||||
|
||||
if host_machine.system() == 'freebsd'
|
||||
make_prog = find_program('gmake')
|
||||
else
|
||||
make_prog = find_program('make')
|
||||
endif
|
||||
|
||||
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
@@ -1,226 +0,0 @@
|
||||
#!/bin/sh
|
||||
#! -*-perl-*-
|
||||
|
||||
# Detect instances of "if (p) free (p);".
|
||||
# Likewise "if (p != 0)", "if (0 != p)", or with NULL; and with braces.
|
||||
|
||||
# Copyright (C) 2008-2019 Free Software Foundation, Inc.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Written by Jim Meyering
|
||||
|
||||
# This is a prologue that allows to run a perl script as an executable
|
||||
# on systems that are compliant to a POSIX version before POSIX:2017.
|
||||
# On such systems, the usual invocation of an executable through execlp()
|
||||
# or execvp() fails with ENOEXEC if it is a script that does not start
|
||||
# with a #! line. The script interpreter mentioned in the #! line has
|
||||
# to be /bin/sh, because on GuixSD systems that is the only program that
|
||||
# has a fixed file name. The second line is essential for perl and is
|
||||
# also useful for editing this file in Emacs. The next two lines below
|
||||
# are valid code in both sh and perl. When executed by sh, they re-execute
|
||||
# the script through the perl program found in $PATH. The '-x' option
|
||||
# is essential as well; without it, perl would re-execute the script
|
||||
# through /bin/sh. When executed by perl, the next two lines are a no-op.
|
||||
eval 'exec perl -wSx "$0" "$@"'
|
||||
if 0;
|
||||
|
||||
my $VERSION = '2018-03-07 03:47'; # UTC
|
||||
# The definition above must lie within the first 8 lines in order
|
||||
# for the Emacs time-stamp write hook (at end) to update it.
|
||||
# If you change this file with Emacs, please let the write hook
|
||||
# do its job. Otherwise, update this string manually.
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Getopt::Long;
|
||||
|
||||
(my $ME = $0) =~ s|.*/||;
|
||||
|
||||
# use File::Coda; # https://meyering.net/code/Coda/
|
||||
END {
|
||||
defined fileno STDOUT or return;
|
||||
close STDOUT and return;
|
||||
warn "$ME: failed to close standard output: $!\n";
|
||||
$? ||= 1;
|
||||
}
|
||||
|
||||
sub usage ($)
|
||||
{
|
||||
my ($exit_code) = @_;
|
||||
my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
|
||||
if ($exit_code != 0)
|
||||
{
|
||||
print $STREAM "Try '$ME --help' for more information.\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
print $STREAM <<EOF;
|
||||
Usage: $ME [OPTIONS] FILE...
|
||||
|
||||
Detect any instance in FILE of a useless "if" test before a free call, e.g.,
|
||||
"if (p) free (p);". Any such test may be safely removed without affecting
|
||||
the semantics of the C code in FILE. Use --name=FOO --name=BAR to also
|
||||
detect free-like functions named FOO and BAR.
|
||||
|
||||
OPTIONS:
|
||||
|
||||
--list print only the name of each matching FILE (\\0-terminated)
|
||||
--name=N add name N to the list of \'free\'-like functions to detect;
|
||||
may be repeated
|
||||
|
||||
--help display this help and exit
|
||||
--version output version information and exit
|
||||
|
||||
Exit status:
|
||||
|
||||
0 one or more matches
|
||||
1 no match
|
||||
2 an error
|
||||
|
||||
EXAMPLE:
|
||||
|
||||
For example, this command prints all removable "if" tests before "free"
|
||||
and "kfree" calls in the linux kernel sources:
|
||||
|
||||
git ls-files -z |xargs -0 $ME --name=kfree
|
||||
|
||||
EOF
|
||||
}
|
||||
exit $exit_code;
|
||||
}
|
||||
|
||||
sub is_NULL ($)
|
||||
{
|
||||
my ($expr) = @_;
|
||||
return ($expr eq 'NULL' || $expr eq '0');
|
||||
}
|
||||
|
||||
{
|
||||
sub EXIT_MATCH {0}
|
||||
sub EXIT_NO_MATCH {1}
|
||||
sub EXIT_ERROR {2}
|
||||
my $err = EXIT_NO_MATCH;
|
||||
|
||||
my $list;
|
||||
my @name = qw(free);
|
||||
GetOptions
|
||||
(
|
||||
help => sub { usage 0 },
|
||||
version => sub { print "$ME version $VERSION\n"; exit },
|
||||
list => \$list,
|
||||
'name=s@' => \@name,
|
||||
) or usage 1;
|
||||
|
||||
# Make sure we have the right number of non-option arguments.
|
||||
# Always tell the user why we fail.
|
||||
@ARGV < 1
|
||||
and (warn "$ME: missing FILE argument\n"), usage EXIT_ERROR;
|
||||
|
||||
my $or = join '|', @name;
|
||||
my $regexp = qr/(?:$or)/;
|
||||
|
||||
# Set the input record separator.
|
||||
# Note: this makes it impractical to print line numbers.
|
||||
$/ = '"';
|
||||
|
||||
my $found_match = 0;
|
||||
FILE:
|
||||
foreach my $file (@ARGV)
|
||||
{
|
||||
open FH, '<', $file
|
||||
or (warn "$ME: can't open '$file' for reading: $!\n"),
|
||||
$err = EXIT_ERROR, next;
|
||||
while (defined (my $line = <FH>))
|
||||
{
|
||||
# Skip non-matching lines early to save time
|
||||
$line =~ /\bif\b/
|
||||
or next;
|
||||
while ($line =~
|
||||
/\b(if\s*\(\s*([^)]+?)(?:\s*!=\s*([^)]+?))?\s*\)
|
||||
# 1 2 3
|
||||
(?: \s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)\s*;|
|
||||
\s*\{\s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)\s*;\s*\}))/sxg)
|
||||
{
|
||||
my $all = $1;
|
||||
my ($lhs, $rhs) = ($2, $3);
|
||||
my ($free_opnd, $braced_free_opnd) = ($4, $5);
|
||||
my $non_NULL;
|
||||
if (!defined $rhs) { $non_NULL = $lhs }
|
||||
elsif (is_NULL $rhs) { $non_NULL = $lhs }
|
||||
elsif (is_NULL $lhs) { $non_NULL = $rhs }
|
||||
else { next }
|
||||
|
||||
# Compare the non-NULL part of the "if" expression and the
|
||||
# free'd expression, without regard to white space.
|
||||
$non_NULL =~ tr/ \t//d;
|
||||
my $e2 = defined $free_opnd ? $free_opnd : $braced_free_opnd;
|
||||
$e2 =~ tr/ \t//d;
|
||||
if ($non_NULL eq $e2)
|
||||
{
|
||||
$found_match = 1;
|
||||
$list
|
||||
and (print "$file\0"), next FILE;
|
||||
print "$file: $all\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
continue
|
||||
{
|
||||
close FH;
|
||||
}
|
||||
|
||||
$found_match && $err == EXIT_NO_MATCH
|
||||
and $err = EXIT_MATCH;
|
||||
|
||||
exit $err;
|
||||
}
|
||||
|
||||
my $foo = <<'EOF';
|
||||
# The above is to *find* them.
|
||||
# This adjusts them, removing the unnecessary "if (p)" part.
|
||||
|
||||
# FIXME: do something like this as an option (doesn't do braces):
|
||||
free=xfree
|
||||
git grep -l -z "$free *(" \
|
||||
| xargs -0 useless-if-before-free -l --name="$free" \
|
||||
| xargs -0 perl -0x3b -pi -e \
|
||||
's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s+('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\)\s*;)/$2/s'
|
||||
|
||||
# Use the following to remove redundant uses of kfree inside braces.
|
||||
# Note that -0777 puts perl in slurp-whole-file mode;
|
||||
# but we have plenty of memory, these days...
|
||||
free=kfree
|
||||
git grep -l -z "$free *(" \
|
||||
| xargs -0 useless-if-before-free -l --name="$free" \
|
||||
| xargs -0 perl -0777 -pi -e \
|
||||
's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s*\{\s*('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\);)\s*\}[^\n]*$/$2/gms'
|
||||
|
||||
Be careful that the result of the above transformation is valid.
|
||||
If the matched string is followed by "else", then obviously, it won't be.
|
||||
|
||||
When modifying files, refuse to process anything other than a regular file.
|
||||
EOF
|
||||
|
||||
## Local Variables:
|
||||
## mode: perl
|
||||
## indent-tabs-mode: nil
|
||||
## eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
## time-stamp-line-limit: 50
|
||||
## time-stamp-start: "my $VERSION = '"
|
||||
## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
|
||||
## time-stamp-time-zone: "UTC0"
|
||||
## time-stamp-end: "'; # UTC"
|
||||
## End:
|
@@ -1,113 +0,0 @@
|
||||
#!/bin/sh
|
||||
# List version-controlled file names.
|
||||
|
||||
# Print a version string.
|
||||
scriptversion=2018-03-07.03; # UTC
|
||||
|
||||
# Copyright (C) 2006-2019 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# List the specified version-controlled files.
|
||||
# With no argument, list them all. With a single DIRECTORY argument,
|
||||
# list the version-controlled files in that directory.
|
||||
|
||||
# If there's an argument, it must be a single, "."-relative directory name.
|
||||
# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
|
||||
|
||||
postprocess=
|
||||
case $1 in
|
||||
--help) cat <<EOF
|
||||
Usage: $0 [-C SRCDIR] [DIR...]
|
||||
|
||||
Output a list of version-controlled files in DIR (default .), relative to
|
||||
SRCDIR (default .). SRCDIR must be the top directory of a checkout.
|
||||
|
||||
Options:
|
||||
--help print this help, then exit
|
||||
--version print version number, then exit
|
||||
-C SRCDIR change directory to SRCDIR before generating list
|
||||
|
||||
Report bugs and patches to <bug-gnulib@gnu.org>.
|
||||
EOF
|
||||
exit ;;
|
||||
|
||||
--version)
|
||||
year=`echo "$scriptversion" | sed 's/[^0-9].*//'`
|
||||
cat <<EOF
|
||||
vc-list-files $scriptversion
|
||||
Copyright (C) $year Free Software Foundation, Inc,
|
||||
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
|
||||
This is free software: you are free to change and redistribute it.
|
||||
There is NO WARRANTY, to the extent permitted by law.
|
||||
EOF
|
||||
exit ;;
|
||||
|
||||
-C)
|
||||
test "$2" = . || postprocess="| sed 's|^|$2/|'"
|
||||
cd "$2" || exit 1
|
||||
shift; shift ;;
|
||||
esac
|
||||
|
||||
test $# = 0 && set .
|
||||
|
||||
for dir
|
||||
do
|
||||
if test -d .git || test -f .git; then
|
||||
test "x$dir" = x. \
|
||||
&& dir= sed_esc= \
|
||||
|| { dir="$dir/"; sed_esc=`echo "$dir"|env sed 's,\([\\/]\),\\\\\1,g'`; }
|
||||
# Ignore git symlinks - either they point into the tree, in which case
|
||||
# we don't need to visit the target twice, or they point somewhere
|
||||
# else (often into a submodule), in which case the content does not
|
||||
# belong to this package.
|
||||
eval exec git ls-tree -r 'HEAD:"$dir"' \
|
||||
\| sed -n '"s/^100[^ ]*./$sed_esc/p"' $postprocess
|
||||
elif test -d .hg; then
|
||||
eval exec hg locate '"$dir/*"' $postprocess
|
||||
elif test -d .bzr; then
|
||||
test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
|
||||
eval exec bzr ls -R --versioned '"$dir"' $postprocess
|
||||
elif test -d CVS; then
|
||||
test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
|
||||
if test -x build-aux/cvsu; then
|
||||
eval build-aux/cvsu --find --types=AFGM '"$dir"' $postprocess
|
||||
elif (cvsu --help) >/dev/null 2>&1; then
|
||||
eval cvsu --find --types=AFGM '"$dir"' $postprocess
|
||||
else
|
||||
eval awk -F/ \''{ \
|
||||
if (!$1 && $3 !~ /^-/) { \
|
||||
f=FILENAME; \
|
||||
if (f ~ /CVS\/Entries$/) \
|
||||
f = substr(f, 1, length(f)-11); \
|
||||
print f $2; \
|
||||
}}'\'' \
|
||||
`find "$dir" -name Entries -print` /dev/null' $postprocess
|
||||
fi
|
||||
elif test -d .svn; then
|
||||
eval exec svn list -R '"$dir"' $postprocess
|
||||
else
|
||||
echo "$0: Failed to determine type of version control used in `pwd`" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
828
cfg.mk
Normal file
828
cfg.mk
Normal file
@@ -0,0 +1,828 @@
|
||||
# Customize Makefile.maint. -*- makefile -*-
|
||||
# Copyright (C) 2008-2012 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 \
|
||||
check-AUTHORS \
|
||||
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
|
||||
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=VIR_FREE \
|
||||
--name=qemuCapsFree \
|
||||
--name=qemuMigrationCookieFree \
|
||||
--name=qemuMigrationCookieGraphicsFree \
|
||||
--name=sexpr_free \
|
||||
--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=virNetClientFree \
|
||||
--name=virNetClientProgramFree \
|
||||
--name=virNetClientStreamFree \
|
||||
--name=virNetServerFree \
|
||||
--name=virNetServerClientFree \
|
||||
--name=virNetServerMDNSFree \
|
||||
--name=virNetServerMDNSEntryFree \
|
||||
--name=virNetServerMDNSGroupFree \
|
||||
--name=virNetServerProgramFree \
|
||||
--name=virNetServerServiceFree \
|
||||
--name=virNetSocketFree \
|
||||
--name=virNetSASLContextFree \
|
||||
--name=virNetSASLSessionFree \
|
||||
--name=virNetTLSSessionFree \
|
||||
--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=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 \
|
||||
| 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|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 memory.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)
|
||||
|
||||
# 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='$(ME): use STREQLEN or STRPREFIX instead of str''ncmp' \
|
||||
$(_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|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 += ESX_ERROR
|
||||
msg_gen_function += ESX_VI_ERROR
|
||||
msg_gen_function += HYPERV_ERROR
|
||||
msg_gen_function += PHYP_ERROR
|
||||
msg_gen_function += VIR_ERROR
|
||||
msg_gen_function += VMX_ERROR
|
||||
msg_gen_function += XENXS_ERROR
|
||||
msg_gen_function += eventReportError
|
||||
msg_gen_function += ifaceError
|
||||
msg_gen_function += interfaceReportError
|
||||
msg_gen_function += iptablesError
|
||||
msg_gen_function += lxcError
|
||||
msg_gen_function += libxlError
|
||||
msg_gen_function += macvtapError
|
||||
msg_gen_function += networkReportError
|
||||
msg_gen_function += nodeReportError
|
||||
msg_gen_function += openvzError
|
||||
msg_gen_function += pciReportError
|
||||
msg_gen_function += qemuReportError
|
||||
msg_gen_function += qemudDispatchClientFailure
|
||||
msg_gen_function += regerror
|
||||
msg_gen_function += remoteError
|
||||
msg_gen_function += remoteDispatchFormatError
|
||||
msg_gen_function += statsError
|
||||
msg_gen_function += streamsReportError
|
||||
msg_gen_function += usbReportError
|
||||
msg_gen_function += umlReportError
|
||||
msg_gen_function += vah_error
|
||||
msg_gen_function += vah_warning
|
||||
msg_gen_function += vboxError
|
||||
msg_gen_function += virCommandError
|
||||
msg_gen_function += virConfError
|
||||
msg_gen_function += virCPUReportError
|
||||
msg_gen_function += virEventError
|
||||
msg_gen_function += virDomainReportError
|
||||
msg_gen_function += virGenericReportError
|
||||
msg_gen_function += virHashError
|
||||
msg_gen_function += virHookReportError
|
||||
msg_gen_function += virInterfaceReportError
|
||||
msg_gen_function += virJSONError
|
||||
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 += virNetworkReportError
|
||||
msg_gen_function += virNodeDeviceReportError
|
||||
msg_gen_function += virNWFilterReportError
|
||||
msg_gen_function += virRaiseError
|
||||
msg_gen_function += virReportErrorHelper
|
||||
msg_gen_function += virReportSystemError
|
||||
msg_gen_function += virSecretReportError
|
||||
msg_gen_function += virSecurityReportError
|
||||
msg_gen_function += virSexprError
|
||||
msg_gen_function += virSmbiosReportError
|
||||
msg_gen_function += virSocketError
|
||||
msg_gen_function += virStatsError
|
||||
msg_gen_function += virStorageReportError
|
||||
msg_gen_function += virUtilError
|
||||
msg_gen_function += virXMLError
|
||||
msg_gen_function += virXenInotifyError
|
||||
msg_gen_function += virXenStoreError
|
||||
msg_gen_function += virXendError
|
||||
msg_gen_function += vmwareError
|
||||
msg_gen_function += xenapiSessionErrorHandler
|
||||
msg_gen_function += xenUnifiedError
|
||||
msg_gen_function += xenXMError
|
||||
|
||||
# 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 += virXenError
|
||||
# msg_gen_function += vshPrint
|
||||
# msg_gen_function += vshError
|
||||
|
||||
func_or := $(shell printf '$(msg_gen_function)'|tr -s '[[:space:]]' '|')
|
||||
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='$(ME): 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; } || :
|
||||
|
||||
# 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
|
||||
|
||||
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)
|
||||
|
||||
# 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";; \
|
||||
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
|
||||
_submodule_hash = sed 's/^[ +-]//;s/ .*//'
|
||||
_update_required := $(shell \
|
||||
cd '$(srcdir)'; \
|
||||
test -d .git || { echo 0; exit; }; \
|
||||
test -f po/Makevars || { 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)
|
||||
Makefile: _autogen
|
||||
endif
|
||||
endif
|
||||
|
||||
# Give credit where due:
|
||||
# Ensure that each commit author email address (possibly mapped via
|
||||
# git log's .mailmap) appears in our AUTHORS file.
|
||||
sc_check_author_list:
|
||||
@fail=0; \
|
||||
for i in $$(git log --pretty=format:%aE%n|sort -u|grep -v '^$$'); do \
|
||||
sanitized=$$(echo "$$i"|LC_ALL=C sed 's/\([^a-zA-Z0-9_@-]\)/\\\1/g'); \
|
||||
grep -iq "<$$sanitized>" $(srcdir)/AUTHORS \
|
||||
|| { printf '%s\n' "$$i" >&2; fail=1; }; \
|
||||
done; \
|
||||
test $$fail = 1 \
|
||||
&& echo '$(ME): committer(s) not listed in AUTHORS' >&2; \
|
||||
test $$fail = 0
|
||||
|
||||
# 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
|
||||
|
||||
# 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\.c$$
|
||||
|
||||
_src1=libvirt|fdstream|qemu/qemu_monitor|util/(command|util)|xen/xend_internal|rpc/virnetsocket|lxc/lxc_controller
|
||||
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_flags_usage = ^(docs/|src/util/virnetdevtap\.c$$)
|
||||
|
||||
exclude_file_name_regexp--sc_libvirt_unmarked_diagnostics = \
|
||||
^src/rpc/gendispatch\.pl$$
|
||||
|
||||
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/virterror\.c)$$
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_access_xok = ^src/util/util\.c$$
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_always_true_header_tests = \
|
||||
^python/(libvirt-(qemu-)?override|typewrappers)\.c$$
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_asprintf = \
|
||||
^(bootstrap.conf$$|src/util/util\.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/qemuhelpdata/|\.(gif|ico|png|diff)$$)
|
||||
|
||||
_src2=src/(util/command|libvirt|lxc/lxc_controller)
|
||||
exclude_file_name_regexp--sc_prohibit_fork_wrappers = \
|
||||
(^($(_src2)|tests/testutils|daemon/libvirtd)\.c$$)
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_gethostname = ^src/util/util\.c$$
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_internal_functions = \
|
||||
^src/(util/(memory|util|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$$|tools/(virsh|console)\.c$$)
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_raw_allocation = \
|
||||
^(src/util/memory\.[ch]|examples/.*)$$
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_readlink = ^src/util/util\.c$$
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_setuid = ^src/util/util\.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/util|tools/virsh)\.c$$
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_xmlGetProp = ^src/util/xml\.c$$
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_xmlURI = ^src/util/viruri\.c$$
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_return_as_function = \.py$$
|
||||
|
||||
exclude_file_name_regexp--sc_require_config_h = ^examples/
|
||||
|
||||
exclude_file_name_regexp--sc_require_config_h_first = ^examples/
|
||||
|
||||
exclude_file_name_regexp--sc_trailing_blank = \.(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
|
247
ci/Makefile
247
ci/Makefile
@@ -1,247 +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 environment preparation steps
|
||||
CI_PREPARE_SCRIPT = $(CI_ROOTDIR)/prepare.sh
|
||||
|
||||
# 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 container process to run with current host IDs
|
||||
# so that it can access the passed in build directory
|
||||
CI_UID = $(shell id -u)
|
||||
CI_GID = $(shell id -g)
|
||||
|
||||
# We also need the user's login and home directory to prepare the
|
||||
# environment the way some programs expect it
|
||||
CI_USER_LOGIN = $(shell echo "$$USER")
|
||||
CI_USER_HOME = $(shell echo "$$HOME")
|
||||
|
||||
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)/prepare:$(CI_USER_HOME)/prepare:z \
|
||||
--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))))
|
||||
|
||||
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
|
||||
|
||||
# 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
|
||||
# --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 \
|
||||
$(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_PREPARE_SCRIPT)" $(CI_SCRATCHDIR)/prepare; \
|
||||
cp "$(CI_BUILD_SCRIPT)" $(CI_SCRATCHDIR)/build; \
|
||||
chmod +x "$(CI_SCRATCHDIR)/prepare" "$(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) \
|
||||
/bin/bash -c ' \
|
||||
$(CI_USER_HOME)/prepare || exit 1; \
|
||||
sudo \
|
||||
--login \
|
||||
--user="#$(CI_UID)" \
|
||||
--group="#$(CI_GID)" \
|
||||
MESON_OPTS="$$MESON_OPTS" \
|
||||
CI_CONT_SRCDIR="$(CI_CONT_SRCDIR)" \
|
||||
CI_MESON_ARGS="$(CI_MESON_ARGS)" \
|
||||
CI_NINJA_ARGS="$(CI_NINJA_ARGS)" \
|
||||
$(CI_COMMAND) || exit 1'
|
||||
@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-list-images:
|
||||
@echo
|
||||
@echo "Available x86 container images:"
|
||||
@echo
|
||||
@sh list-images.sh "$(CI_IMAGE_PREFIX)" | grep -v cross
|
||||
@echo
|
||||
@echo "Available cross-compiler container images:"
|
||||
@echo
|
||||
@sh list-images.sh "$(CI_IMAGE_PREFIX)" | grep cross
|
||||
@echo
|
||||
|
||||
ci-help:
|
||||
@echo "Build libvirt inside containers used for CI"
|
||||
@echo
|
||||
@echo "Available targets:"
|
||||
@echo
|
||||
@echo " ci-build@\$$IMAGE - run a default 'ninja' build"
|
||||
@echo " ci-check@\$$IMAGE - run a 'ninja test'"
|
||||
@echo " ci-shell@\$$IMAGE - run an interactive shell"
|
||||
@echo " ci-list-images - list available images"
|
||||
@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_MESON_ARGS= - extra arguments passed to meson"
|
||||
@echo " CI_NINJA_ARGS= - extra arguments passed to ninja"
|
||||
@echo
|
@@ -1,59 +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;
|
||||
|
||||
* 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/
|
21
ci/build.sh
21
ci/build.sh
@@ -1,21 +0,0 @@
|
||||
# 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,23 +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@"
|
||||
|
||||
build_task:
|
||||
install_script:
|
||||
- @INSTALL_COMMAND@ @PKGS@
|
||||
- @PIP@ install @PYPI_PKGS@
|
||||
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 build --prefix=$(pwd)/install-root
|
||||
- ninja -C build dist
|
@@ -1,9 +0,0 @@
|
||||
PACKAGING_COMMAND='pkg'
|
||||
CC='/usr/bin/clang'
|
||||
CCACHE='/usr/local/bin/ccache'
|
||||
MAKE='/usr/local/bin/gmake'
|
||||
NINJA='/usr/local/bin/ninja'
|
||||
PYTHON='/usr/local/bin/python3'
|
||||
PIP='/usr/local/bin/pip-3.7'
|
||||
PKGS='augeas autoconf automake avahi bash bash-completion ca_root_nss ccache chrony cppi curl cyrus-sasl dbus diskscrub dnsmasq fusefs-libs gdb gettext gettext-tools git glib gmake gnutls hal libpcap libpciaccess libssh libssh2 libtool libxml2 libxslt lsof ncurses ninja p5-App-cpanminus patch perl5 pkgconf polkit py37-docutils py37-flake8 py37-pip py37-setuptools py37-wheel python3 qemu-utils radvd readline screen sudo vim yajl'
|
||||
PYPI_PKGS='meson==0.54.0'
|
@@ -1,9 +0,0 @@
|
||||
PACKAGING_COMMAND='pkg'
|
||||
CC='/usr/bin/clang'
|
||||
CCACHE='/usr/local/bin/ccache'
|
||||
MAKE='/usr/local/bin/gmake'
|
||||
NINJA='/usr/local/bin/ninja'
|
||||
PYTHON='/usr/local/bin/python3'
|
||||
PIP='/usr/local/bin/pip-3.7'
|
||||
PKGS='augeas autoconf automake avahi bash bash-completion ca_root_nss ccache chrony cppi curl cyrus-sasl dbus diskscrub dnsmasq fusefs-libs gdb gettext gettext-tools git glib gmake gnutls hal libpcap libpciaccess libssh libssh2 libtool libxml2 libxslt lsof ncurses ninja p5-App-cpanminus patch perl5 pkgconf polkit py37-docutils py37-flake8 py37-pip py37-setuptools py37-wheel python3 qemu-utils radvd readline screen sudo vim yajl'
|
||||
PYPI_PKGS='meson==0.54.0'
|
@@ -1,9 +0,0 @@
|
||||
PACKAGING_COMMAND='brew'
|
||||
CC='/usr/bin/clang'
|
||||
CCACHE='/usr/local/bin/ccache'
|
||||
MAKE='/usr/local/bin/gmake'
|
||||
NINJA='/usr/local/bin/ninja'
|
||||
PYTHON='/usr/local/bin/python3'
|
||||
PIP='/usr/local/bin/pip3'
|
||||
PKGS='augeas autoconf automake bash bash-completion ccache cpanminus cppi curl dbus dnsmasq docutils flake8 gdb gettext git glib gnutls gpatch libiscsi libpcap libssh libssh2 libtool libxml2 libxslt lsof make ncurses ninja perl pkg-config python3 qemu readline rpcgen screen scrub vim xz yajl'
|
||||
PYPI_PKGS='meson==0.54.0'
|
@@ -1,22 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
if test -z "$1"
|
||||
then
|
||||
echo "syntax: $0 PATH-TO-LCITOOL"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
LCITOOL=$1
|
||||
|
||||
if ! test -x "$LCITOOL"
|
||||
then
|
||||
echo "$LCITOOL is not executable"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
HOSTS=$($LCITOOL hosts | grep -E 'freebsd-12|macos')
|
||||
|
||||
for host in $HOSTS
|
||||
do
|
||||
$LCITOOL variables "$host" libvirt >"$host.vars"
|
||||
done
|
@@ -1,36 +0,0 @@
|
||||
CI job assets
|
||||
=============
|
||||
|
||||
This directory contains assets used in the automated CI jobs, most
|
||||
notably the Dockerfiles used to build container images in which the
|
||||
CI jobs then run.
|
||||
|
||||
The ``refresh`` script is used to re-create the Dockerfiles using the
|
||||
``lcitool`` command that is provided by repo
|
||||
https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
The containers are built during the CI process and cached in the GitLab
|
||||
container registry of the project doing the build. The cached containers
|
||||
can be deleted at any time and will be correctly rebuilt.
|
||||
|
||||
|
||||
Coverity scan integration
|
||||
=========================
|
||||
|
||||
This will be used only by the main repository for master branch by running
|
||||
scheduled pipeline in GitLab.
|
||||
|
||||
The service is proved by `Coverity Scan`_ and requires that the project is
|
||||
registered there to get free coverity analysis which we already have for
|
||||
`libvirt project`_.
|
||||
|
||||
To run the coverity job it requires two new variables:
|
||||
|
||||
* ``COVERITY_SCAN_PROJECT_NAME``, containing the `libvirt project`_
|
||||
name.
|
||||
|
||||
* ``COVERITY_SCAN_TOKEN``, token visible to admins of `libvirt project`_
|
||||
|
||||
|
||||
.. _Coverity Scan: https://scan.coverity.com/
|
||||
.. _libvirt project: https://scan.coverity.com/projects/libvirt
|
@@ -1,140 +0,0 @@
|
||||
FROM centos:7
|
||||
|
||||
RUN echo -e '[openvz]\n\
|
||||
name=OpenVZ addons\n\
|
||||
baseurl=https://download.openvz.org/virtuozzo/releases/openvz-7.0.11-235/x86_64/os/\n\
|
||||
enabled=1\n\
|
||||
gpgcheck=1\n\
|
||||
skip_if_unavailable=0\n\
|
||||
metadata_expire=6h\n\
|
||||
priority=90\n\
|
||||
includepkgs=libprl*' > /etc/yum.repos.d/openvz.repo && \
|
||||
echo -e '-----BEGIN PGP PUBLIC KEY BLOCK-----\n\
|
||||
Version: GnuPG v2.0.22 (GNU/Linux)\n\
|
||||
\n\
|
||||
mI0EVl80nQEEAKrEeyeTCwrzS9kYedZ/sAc/GUqlb81C7pA9SaR3fyck5mVw1Ogk\n\
|
||||
YdmNBPM2kY7QDxR9F0EpSpnxSCAXZXugsQ8KzZ0DRLVeBDQyGs9IGK5hI0zzxIil\n\
|
||||
BzfvIexLiQQhLy7YlIi8Jt/uUqKkW0pIMNMGcduY97VATtczpncpkmSzABEBAAG0\n\
|
||||
SFZpcnR1b3p6byBUZWFtIChHUEcga2V5IHNpZ25hdHVyZSBmb3IgcGFja2FnZXMp\n\
|
||||
IDxzZWN1cml0eUB2aXJ0dW96em8uY29tPoi5BBMBAgAjBQJWXzSdAhsDBwsJCAcD\n\
|
||||
AgEGFQgCCQoLBBYCAwECHgECF4AACgkQygt9GUTNrSruIgP/er70Eyo73A1gfrjv\n\
|
||||
oPUkyo4rslVRZu3qqCwoMFtJc/Z/UxWgEka1buorlcGLa6eO/EZ49c0n+KGa4Kvt\n\
|
||||
EUboIq0yEu5i0FyAj92ifm+hNhoAbGfm0cZ4/fD0oGr3l8OsQo4+iHX4xAPwFe7Y\n\
|
||||
zABuB8I1ZDZ4OIp5tDfTTuF2LT24jQRWXzSdAQQAog2Aqb+Ptl68O7cQhWLjVGkj\n\
|
||||
yyigZrdeReLx3HloKJPBeQ/kA6uvMJc/IYS3uppMWXv9v+QenS6uhP1TUJ2k9FvM\n\
|
||||
t94MQZfALN7Vpf8AF+UeWu4Ru+y4BNzcFhrPhIFNFChOR2QqW6FkgE57D9I177NC\n\
|
||||
oJMyrlNe8wcGa178An8AEQEAAYifBBgBAgAJBQJWXzSdAhsMAAoJEMoLfRlEza0q\n\
|
||||
bKwD/3+OFVIEXnIv5XgdGRNX5fHggsUN1bb8gva7HANRlKdd4LD8foDM3F/yv/3V\n\
|
||||
igG14D5EjKz56SaBDNgiI4++hOzb2M8jhAsR86jxkXFrrP1U3ZNRKg6av9DPFAPS\n\
|
||||
WEiJKtQrZDJloqtyi/mmRa1VsV7RYR0VPJjhK/R8EQ7Ysshy\n\
|
||||
=fRMg\n\
|
||||
-----END PGP PUBLIC KEY BLOCK-----' > /etc/pki/rpm-gpg/RPM-GPG-KEY-OpenVZ && \
|
||||
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-OpenVZ && \
|
||||
yum install -y epel-release && \
|
||||
yum update -y && \
|
||||
yum install -y \
|
||||
audit-libs-devel \
|
||||
augeas \
|
||||
autoconf \
|
||||
automake \
|
||||
avahi-devel \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cyrus-sasl-devel \
|
||||
dbus-devel \
|
||||
device-mapper-devel \
|
||||
dnsmasq \
|
||||
dwarves \
|
||||
ebtables \
|
||||
firewalld-filesystem \
|
||||
fuse-devel \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
gettext-devel \
|
||||
git \
|
||||
glib2-devel \
|
||||
glibc-common \
|
||||
glibc-devel \
|
||||
glusterfs-api-devel \
|
||||
gnutls-devel \
|
||||
iproute \
|
||||
iscsi-initiator-utils \
|
||||
kmod \
|
||||
libacl-devel \
|
||||
libattr-devel \
|
||||
libblkid-devel \
|
||||
libcap-ng-devel \
|
||||
libcurl-devel \
|
||||
libiscsi-devel \
|
||||
libnl3-devel \
|
||||
libpcap-devel \
|
||||
libpciaccess-devel \
|
||||
libprlsdk-devel \
|
||||
librbd1-devel \
|
||||
libselinux-devel \
|
||||
libssh-devel \
|
||||
libssh2-devel \
|
||||
libtirpc-devel \
|
||||
libtool \
|
||||
libudev-devel \
|
||||
libwsman-devel \
|
||||
libxml2 \
|
||||
libxml2-devel \
|
||||
libxslt \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
net-tools \
|
||||
netcf-devel \
|
||||
nfs-utils \
|
||||
ninja-build \
|
||||
numactl-devel \
|
||||
numad \
|
||||
parted \
|
||||
parted-devel \
|
||||
patch \
|
||||
perl \
|
||||
perl-App-cpanminus \
|
||||
pkgconfig \
|
||||
polkit \
|
||||
python3 \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
python36-docutils \
|
||||
qemu-img \
|
||||
radvd \
|
||||
readline-devel \
|
||||
rpm-build \
|
||||
sanlock-devel \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
systemtap-sdt-devel \
|
||||
vim \
|
||||
wireshark-devel \
|
||||
xfsprogs-devel \
|
||||
xz \
|
||||
yajl-devel && \
|
||||
yum autoremove -y && \
|
||||
yum clean all -y && \
|
||||
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/$(basename /usr/bin/gcc)
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.54.0
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja-build"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
@@ -1,114 +0,0 @@
|
||||
FROM centos:8
|
||||
|
||||
RUN dnf install 'dnf-command(config-manager)' -y && \
|
||||
dnf config-manager --set-enabled -y PowerTools && \
|
||||
dnf install -y epel-release && \
|
||||
dnf update -y && \
|
||||
dnf install -y \
|
||||
audit-libs-devel \
|
||||
augeas \
|
||||
autoconf \
|
||||
automake \
|
||||
avahi-devel \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cyrus-sasl-devel \
|
||||
dbus-devel \
|
||||
device-mapper-devel \
|
||||
dnsmasq \
|
||||
dwarves \
|
||||
ebtables \
|
||||
firewalld-filesystem \
|
||||
fuse-devel \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
gettext-devel \
|
||||
git \
|
||||
glib2-devel \
|
||||
glibc-devel \
|
||||
glibc-langpack-en \
|
||||
glusterfs-api-devel \
|
||||
gnutls-devel \
|
||||
iproute \
|
||||
iproute-tc \
|
||||
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 \
|
||||
libtool \
|
||||
libudev-devel \
|
||||
libwsman-devel \
|
||||
libxml2 \
|
||||
libxml2-devel \
|
||||
libxslt \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
net-tools \
|
||||
netcf-devel \
|
||||
nfs-utils \
|
||||
ninja-build \
|
||||
numactl-devel \
|
||||
numad \
|
||||
parted \
|
||||
parted-devel \
|
||||
patch \
|
||||
perl \
|
||||
perl-App-cpanminus \
|
||||
pkgconfig \
|
||||
polkit \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-flake8 \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-img \
|
||||
radvd \
|
||||
readline-devel \
|
||||
rpcgen \
|
||||
rpm-build \
|
||||
sanlock-devel \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
systemtap-sdt-devel \
|
||||
vim \
|
||||
wireshark-devel \
|
||||
xfsprogs-devel \
|
||||
xz \
|
||||
yajl-devel && \
|
||||
dnf autoremove -y && \
|
||||
dnf clean all -y && \
|
||||
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/$(basename /usr/bin/gcc)
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.54.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,115 +0,0 @@
|
||||
FROM centos:8
|
||||
|
||||
RUN dnf install -y centos-release-stream && \
|
||||
dnf install 'dnf-command(config-manager)' -y && \
|
||||
dnf config-manager --set-enabled -y Stream-PowerTools && \
|
||||
dnf install -y epel-release && \
|
||||
dnf update -y && \
|
||||
dnf install -y \
|
||||
audit-libs-devel \
|
||||
augeas \
|
||||
autoconf \
|
||||
automake \
|
||||
avahi-devel \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cyrus-sasl-devel \
|
||||
dbus-devel \
|
||||
device-mapper-devel \
|
||||
dnsmasq \
|
||||
dwarves \
|
||||
ebtables \
|
||||
firewalld-filesystem \
|
||||
fuse-devel \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
gettext-devel \
|
||||
git \
|
||||
glib2-devel \
|
||||
glibc-devel \
|
||||
glibc-langpack-en \
|
||||
glusterfs-api-devel \
|
||||
gnutls-devel \
|
||||
iproute \
|
||||
iproute-tc \
|
||||
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 \
|
||||
libtool \
|
||||
libudev-devel \
|
||||
libwsman-devel \
|
||||
libxml2 \
|
||||
libxml2-devel \
|
||||
libxslt \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
net-tools \
|
||||
netcf-devel \
|
||||
nfs-utils \
|
||||
ninja-build \
|
||||
numactl-devel \
|
||||
numad \
|
||||
parted \
|
||||
parted-devel \
|
||||
patch \
|
||||
perl \
|
||||
perl-App-cpanminus \
|
||||
pkgconfig \
|
||||
polkit \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-flake8 \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-img \
|
||||
radvd \
|
||||
readline-devel \
|
||||
rpcgen \
|
||||
rpm-build \
|
||||
sanlock-devel \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
systemtap-sdt-devel \
|
||||
vim \
|
||||
wireshark-devel \
|
||||
xfsprogs-devel \
|
||||
xz \
|
||||
yajl-devel && \
|
||||
dnf autoremove -y && \
|
||||
dnf clean all -y && \
|
||||
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/$(basename /usr/bin/gcc)
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.54.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,140 +0,0 @@
|
||||
FROM debian:10
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libc-dev-bin \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libxml2-utils \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture arm64 && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
gcc-aarch64-linux-gnu \
|
||||
libacl1-dev:arm64 \
|
||||
libapparmor-dev:arm64 \
|
||||
libattr1-dev:arm64 \
|
||||
libaudit-dev:arm64 \
|
||||
libavahi-client-dev:arm64 \
|
||||
libblkid-dev:arm64 \
|
||||
libc6-dev:arm64 \
|
||||
libcap-ng-dev:arm64 \
|
||||
libcurl4-gnutls-dev:arm64 \
|
||||
libdbus-1-dev:arm64 \
|
||||
libdevmapper-dev:arm64 \
|
||||
libfuse-dev:arm64 \
|
||||
libglib2.0-dev:arm64 \
|
||||
libglusterfs-dev:arm64 \
|
||||
libgnutls28-dev:arm64 \
|
||||
libiscsi-dev:arm64 \
|
||||
libnl-3-dev:arm64 \
|
||||
libnl-route-3-dev:arm64 \
|
||||
libnuma-dev:arm64 \
|
||||
libparted-dev:arm64 \
|
||||
libpcap0.8-dev:arm64 \
|
||||
libpciaccess-dev:arm64 \
|
||||
librbd-dev:arm64 \
|
||||
libreadline-dev:arm64 \
|
||||
libsanlock-dev:arm64 \
|
||||
libsasl2-dev:arm64 \
|
||||
libselinux1-dev:arm64 \
|
||||
libssh-gcrypt-dev:arm64 \
|
||||
libssh2-1-dev:arm64 \
|
||||
libtirpc-dev:arm64 \
|
||||
libudev-dev:arm64 \
|
||||
libxen-dev:arm64 \
|
||||
libxml2-dev:arm64 \
|
||||
libyajl-dev:arm64 \
|
||||
xfslibs-dev:arm64 && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/aarch64-linux-gnu-gcc'\n\
|
||||
ar = '/usr/bin/aarch64-linux-gnu-gcc-ar'\n\
|
||||
strip = '/usr/bin/aarch64-linux-gnu-strip'\n\
|
||||
pkgconfig = '/usr/bin/aarch64-linux-gnu-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'aarch64'\n\
|
||||
cpu = 'aarch64'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/aarch64-linux-gnu
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.54.0
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "aarch64-linux-gnu"
|
||||
ENV CONFIGURE_OPTS "--host=aarch64-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=aarch64-linux-gnu"
|
@@ -1,139 +0,0 @@
|
||||
FROM debian:10
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libc-dev-bin \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libxml2-utils \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture armel && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
gcc-arm-linux-gnueabi \
|
||||
libacl1-dev:armel \
|
||||
libapparmor-dev:armel \
|
||||
libattr1-dev:armel \
|
||||
libaudit-dev:armel \
|
||||
libavahi-client-dev:armel \
|
||||
libblkid-dev:armel \
|
||||
libc6-dev:armel \
|
||||
libcap-ng-dev:armel \
|
||||
libcurl4-gnutls-dev:armel \
|
||||
libdbus-1-dev:armel \
|
||||
libdevmapper-dev:armel \
|
||||
libfuse-dev:armel \
|
||||
libglib2.0-dev:armel \
|
||||
libglusterfs-dev:armel \
|
||||
libgnutls28-dev:armel \
|
||||
libiscsi-dev:armel \
|
||||
libnl-3-dev:armel \
|
||||
libnl-route-3-dev:armel \
|
||||
libnuma-dev:armel \
|
||||
libparted-dev:armel \
|
||||
libpcap0.8-dev:armel \
|
||||
libpciaccess-dev:armel \
|
||||
librbd-dev:armel \
|
||||
libreadline-dev:armel \
|
||||
libsanlock-dev:armel \
|
||||
libsasl2-dev:armel \
|
||||
libselinux1-dev:armel \
|
||||
libssh-gcrypt-dev:armel \
|
||||
libssh2-1-dev:armel \
|
||||
libtirpc-dev:armel \
|
||||
libudev-dev:armel \
|
||||
libxml2-dev:armel \
|
||||
libyajl-dev:armel \
|
||||
xfslibs-dev:armel && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/arm-linux-gnueabi-gcc'\n\
|
||||
ar = '/usr/bin/arm-linux-gnueabi-gcc-ar'\n\
|
||||
strip = '/usr/bin/arm-linux-gnueabi-strip'\n\
|
||||
pkgconfig = '/usr/bin/arm-linux-gnueabi-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'arm'\n\
|
||||
cpu = 'arm'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/arm-linux-gnueabi
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.54.0
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "arm-linux-gnueabi"
|
||||
ENV CONFIGURE_OPTS "--host=arm-linux-gnueabi"
|
||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabi"
|
@@ -1,140 +0,0 @@
|
||||
FROM debian:10
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libc-dev-bin \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libxml2-utils \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture armhf && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
gcc-arm-linux-gnueabihf \
|
||||
libacl1-dev:armhf \
|
||||
libapparmor-dev:armhf \
|
||||
libattr1-dev:armhf \
|
||||
libaudit-dev:armhf \
|
||||
libavahi-client-dev:armhf \
|
||||
libblkid-dev:armhf \
|
||||
libc6-dev:armhf \
|
||||
libcap-ng-dev:armhf \
|
||||
libcurl4-gnutls-dev:armhf \
|
||||
libdbus-1-dev:armhf \
|
||||
libdevmapper-dev:armhf \
|
||||
libfuse-dev:armhf \
|
||||
libglib2.0-dev:armhf \
|
||||
libglusterfs-dev:armhf \
|
||||
libgnutls28-dev:armhf \
|
||||
libiscsi-dev:armhf \
|
||||
libnl-3-dev:armhf \
|
||||
libnl-route-3-dev:armhf \
|
||||
libnuma-dev:armhf \
|
||||
libparted-dev:armhf \
|
||||
libpcap0.8-dev:armhf \
|
||||
libpciaccess-dev:armhf \
|
||||
librbd-dev:armhf \
|
||||
libreadline-dev:armhf \
|
||||
libsanlock-dev:armhf \
|
||||
libsasl2-dev:armhf \
|
||||
libselinux1-dev:armhf \
|
||||
libssh-gcrypt-dev:armhf \
|
||||
libssh2-1-dev:armhf \
|
||||
libtirpc-dev:armhf \
|
||||
libudev-dev:armhf \
|
||||
libxen-dev:armhf \
|
||||
libxml2-dev:armhf \
|
||||
libyajl-dev:armhf \
|
||||
xfslibs-dev:armhf && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/arm-linux-gnueabihf-gcc'\n\
|
||||
ar = '/usr/bin/arm-linux-gnueabihf-gcc-ar'\n\
|
||||
strip = '/usr/bin/arm-linux-gnueabihf-strip'\n\
|
||||
pkgconfig = '/usr/bin/arm-linux-gnueabihf-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'arm'\n\
|
||||
cpu = 'armhf'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/arm-linux-gnueabihf
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.54.0
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "arm-linux-gnueabihf"
|
||||
ENV CONFIGURE_OPTS "--host=arm-linux-gnueabihf"
|
||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabihf"
|
@@ -1,139 +0,0 @@
|
||||
FROM debian:10
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libc-dev-bin \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libxml2-utils \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture i386 && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
gcc-i686-linux-gnu \
|
||||
libacl1-dev:i386 \
|
||||
libapparmor-dev:i386 \
|
||||
libattr1-dev:i386 \
|
||||
libaudit-dev:i386 \
|
||||
libavahi-client-dev:i386 \
|
||||
libblkid-dev:i386 \
|
||||
libc6-dev:i386 \
|
||||
libcap-ng-dev:i386 \
|
||||
libcurl4-gnutls-dev:i386 \
|
||||
libdbus-1-dev:i386 \
|
||||
libdevmapper-dev:i386 \
|
||||
libfuse-dev:i386 \
|
||||
libglib2.0-dev:i386 \
|
||||
libglusterfs-dev:i386 \
|
||||
libgnutls28-dev:i386 \
|
||||
libiscsi-dev:i386 \
|
||||
libnl-3-dev:i386 \
|
||||
libnl-route-3-dev:i386 \
|
||||
libnuma-dev:i386 \
|
||||
libparted-dev:i386 \
|
||||
libpcap0.8-dev:i386 \
|
||||
libpciaccess-dev:i386 \
|
||||
librbd-dev:i386 \
|
||||
libreadline-dev:i386 \
|
||||
libsanlock-dev:i386 \
|
||||
libsasl2-dev:i386 \
|
||||
libselinux1-dev:i386 \
|
||||
libssh-gcrypt-dev:i386 \
|
||||
libssh2-1-dev:i386 \
|
||||
libtirpc-dev:i386 \
|
||||
libudev-dev:i386 \
|
||||
libxml2-dev:i386 \
|
||||
libyajl-dev:i386 \
|
||||
xfslibs-dev:i386 && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/i686-linux-gnu-gcc'\n\
|
||||
ar = '/usr/bin/i686-linux-gnu-gcc-ar'\n\
|
||||
strip = '/usr/bin/i686-linux-gnu-strip'\n\
|
||||
pkgconfig = '/usr/bin/i686-linux-gnu-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'x86'\n\
|
||||
cpu = 'i686'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/i686-linux-gnu
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.54.0
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "i686-linux-gnu"
|
||||
ENV CONFIGURE_OPTS "--host=i686-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=i686-linux-gnu"
|
@@ -1,139 +0,0 @@
|
||||
FROM debian:10
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libc-dev-bin \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libxml2-utils \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture mips && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
gcc-mips-linux-gnu \
|
||||
libacl1-dev:mips \
|
||||
libapparmor-dev:mips \
|
||||
libattr1-dev:mips \
|
||||
libaudit-dev:mips \
|
||||
libavahi-client-dev:mips \
|
||||
libblkid-dev:mips \
|
||||
libc6-dev:mips \
|
||||
libcap-ng-dev:mips \
|
||||
libcurl4-gnutls-dev:mips \
|
||||
libdbus-1-dev:mips \
|
||||
libdevmapper-dev:mips \
|
||||
libfuse-dev:mips \
|
||||
libglib2.0-dev:mips \
|
||||
libglusterfs-dev:mips \
|
||||
libgnutls28-dev:mips \
|
||||
libiscsi-dev:mips \
|
||||
libnl-3-dev:mips \
|
||||
libnl-route-3-dev:mips \
|
||||
libnuma-dev:mips \
|
||||
libparted-dev:mips \
|
||||
libpcap0.8-dev:mips \
|
||||
libpciaccess-dev:mips \
|
||||
librbd-dev:mips \
|
||||
libreadline-dev:mips \
|
||||
libsanlock-dev:mips \
|
||||
libsasl2-dev:mips \
|
||||
libselinux1-dev:mips \
|
||||
libssh-gcrypt-dev:mips \
|
||||
libssh2-1-dev:mips \
|
||||
libtirpc-dev:mips \
|
||||
libudev-dev:mips \
|
||||
libxml2-dev:mips \
|
||||
libyajl-dev:mips \
|
||||
xfslibs-dev:mips && \
|
||||
apt-get autoremove -y && \
|
||||
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 = 'little'" > /usr/local/share/meson/cross/mips-linux-gnu
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.54.0
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "mips-linux-gnu"
|
||||
ENV CONFIGURE_OPTS "--host=mips-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=mips-linux-gnu"
|
@@ -1,139 +0,0 @@
|
||||
FROM debian:10
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libc-dev-bin \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libxml2-utils \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture mips64el && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
gcc-mips64el-linux-gnuabi64 \
|
||||
libacl1-dev:mips64el \
|
||||
libapparmor-dev:mips64el \
|
||||
libattr1-dev:mips64el \
|
||||
libaudit-dev:mips64el \
|
||||
libavahi-client-dev:mips64el \
|
||||
libblkid-dev:mips64el \
|
||||
libc6-dev:mips64el \
|
||||
libcap-ng-dev:mips64el \
|
||||
libcurl4-gnutls-dev:mips64el \
|
||||
libdbus-1-dev:mips64el \
|
||||
libdevmapper-dev:mips64el \
|
||||
libfuse-dev:mips64el \
|
||||
libglib2.0-dev:mips64el \
|
||||
libglusterfs-dev:mips64el \
|
||||
libgnutls28-dev:mips64el \
|
||||
libiscsi-dev:mips64el \
|
||||
libnl-3-dev:mips64el \
|
||||
libnl-route-3-dev:mips64el \
|
||||
libnuma-dev:mips64el \
|
||||
libparted-dev:mips64el \
|
||||
libpcap0.8-dev:mips64el \
|
||||
libpciaccess-dev:mips64el \
|
||||
librbd-dev:mips64el \
|
||||
libreadline-dev:mips64el \
|
||||
libsanlock-dev:mips64el \
|
||||
libsasl2-dev:mips64el \
|
||||
libselinux1-dev:mips64el \
|
||||
libssh-gcrypt-dev:mips64el \
|
||||
libssh2-1-dev:mips64el \
|
||||
libtirpc-dev:mips64el \
|
||||
libudev-dev:mips64el \
|
||||
libxml2-dev:mips64el \
|
||||
libyajl-dev:mips64el \
|
||||
xfslibs-dev:mips64el && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/mips64el-linux-gnuabi64-gcc'\n\
|
||||
ar = '/usr/bin/mips64el-linux-gnuabi64-gcc-ar'\n\
|
||||
strip = '/usr/bin/mips64el-linux-gnuabi64-strip'\n\
|
||||
pkgconfig = '/usr/bin/mips64el-linux-gnuabi64-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'mips64'\n\
|
||||
cpu = 'mips64el'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/mips64el-linux-gnuabi64
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.54.0
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "mips64el-linux-gnuabi64"
|
||||
ENV CONFIGURE_OPTS "--host=mips64el-linux-gnuabi64"
|
||||
ENV MESON_OPTS "--cross-file=mips64el-linux-gnuabi64"
|
@@ -1,139 +0,0 @@
|
||||
FROM debian:10
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libc-dev-bin \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libxml2-utils \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture mipsel && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
gcc-mipsel-linux-gnu \
|
||||
libacl1-dev:mipsel \
|
||||
libapparmor-dev:mipsel \
|
||||
libattr1-dev:mipsel \
|
||||
libaudit-dev:mipsel \
|
||||
libavahi-client-dev:mipsel \
|
||||
libblkid-dev:mipsel \
|
||||
libc6-dev:mipsel \
|
||||
libcap-ng-dev:mipsel \
|
||||
libcurl4-gnutls-dev:mipsel \
|
||||
libdbus-1-dev:mipsel \
|
||||
libdevmapper-dev:mipsel \
|
||||
libfuse-dev:mipsel \
|
||||
libglib2.0-dev:mipsel \
|
||||
libglusterfs-dev:mipsel \
|
||||
libgnutls28-dev:mipsel \
|
||||
libiscsi-dev:mipsel \
|
||||
libnl-3-dev:mipsel \
|
||||
libnl-route-3-dev:mipsel \
|
||||
libnuma-dev:mipsel \
|
||||
libparted-dev:mipsel \
|
||||
libpcap0.8-dev:mipsel \
|
||||
libpciaccess-dev:mipsel \
|
||||
librbd-dev:mipsel \
|
||||
libreadline-dev:mipsel \
|
||||
libsanlock-dev:mipsel \
|
||||
libsasl2-dev:mipsel \
|
||||
libselinux1-dev:mipsel \
|
||||
libssh-gcrypt-dev:mipsel \
|
||||
libssh2-1-dev:mipsel \
|
||||
libtirpc-dev:mipsel \
|
||||
libudev-dev:mipsel \
|
||||
libxml2-dev:mipsel \
|
||||
libyajl-dev:mipsel \
|
||||
xfslibs-dev:mipsel && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/mipsel-linux-gnu-gcc'\n\
|
||||
ar = '/usr/bin/mipsel-linux-gnu-gcc-ar'\n\
|
||||
strip = '/usr/bin/mipsel-linux-gnu-strip'\n\
|
||||
pkgconfig = '/usr/bin/mipsel-linux-gnu-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'mips'\n\
|
||||
cpu = 'mipsel'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/mipsel-linux-gnu
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.54.0
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "mipsel-linux-gnu"
|
||||
ENV CONFIGURE_OPTS "--host=mipsel-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=mipsel-linux-gnu"
|
@@ -1,139 +0,0 @@
|
||||
FROM debian:10
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libc-dev-bin \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libxml2-utils \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture ppc64el && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
gcc-powerpc64le-linux-gnu \
|
||||
libacl1-dev:ppc64el \
|
||||
libapparmor-dev:ppc64el \
|
||||
libattr1-dev:ppc64el \
|
||||
libaudit-dev:ppc64el \
|
||||
libavahi-client-dev:ppc64el \
|
||||
libblkid-dev:ppc64el \
|
||||
libc6-dev:ppc64el \
|
||||
libcap-ng-dev:ppc64el \
|
||||
libcurl4-gnutls-dev:ppc64el \
|
||||
libdbus-1-dev:ppc64el \
|
||||
libdevmapper-dev:ppc64el \
|
||||
libfuse-dev:ppc64el \
|
||||
libglib2.0-dev:ppc64el \
|
||||
libglusterfs-dev:ppc64el \
|
||||
libgnutls28-dev:ppc64el \
|
||||
libiscsi-dev:ppc64el \
|
||||
libnl-3-dev:ppc64el \
|
||||
libnl-route-3-dev:ppc64el \
|
||||
libnuma-dev:ppc64el \
|
||||
libparted-dev:ppc64el \
|
||||
libpcap0.8-dev:ppc64el \
|
||||
libpciaccess-dev:ppc64el \
|
||||
librbd-dev:ppc64el \
|
||||
libreadline-dev:ppc64el \
|
||||
libsanlock-dev:ppc64el \
|
||||
libsasl2-dev:ppc64el \
|
||||
libselinux1-dev:ppc64el \
|
||||
libssh-gcrypt-dev:ppc64el \
|
||||
libssh2-1-dev:ppc64el \
|
||||
libtirpc-dev:ppc64el \
|
||||
libudev-dev:ppc64el \
|
||||
libxml2-dev:ppc64el \
|
||||
libyajl-dev:ppc64el \
|
||||
xfslibs-dev:ppc64el && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/powerpc64le-linux-gnu-gcc'\n\
|
||||
ar = '/usr/bin/powerpc64le-linux-gnu-gcc-ar'\n\
|
||||
strip = '/usr/bin/powerpc64le-linux-gnu-strip'\n\
|
||||
pkgconfig = '/usr/bin/powerpc64le-linux-gnu-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'ppc64'\n\
|
||||
cpu = 'powerpc64le'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/powerpc64le-linux-gnu
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.54.0
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "powerpc64le-linux-gnu"
|
||||
ENV CONFIGURE_OPTS "--host=powerpc64le-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=powerpc64le-linux-gnu"
|
@@ -1,139 +0,0 @@
|
||||
FROM debian:10
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libc-dev-bin \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libxml2-utils \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture s390x && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
gcc-s390x-linux-gnu \
|
||||
libacl1-dev:s390x \
|
||||
libapparmor-dev:s390x \
|
||||
libattr1-dev:s390x \
|
||||
libaudit-dev:s390x \
|
||||
libavahi-client-dev:s390x \
|
||||
libblkid-dev:s390x \
|
||||
libc6-dev:s390x \
|
||||
libcap-ng-dev:s390x \
|
||||
libcurl4-gnutls-dev:s390x \
|
||||
libdbus-1-dev:s390x \
|
||||
libdevmapper-dev:s390x \
|
||||
libfuse-dev:s390x \
|
||||
libglib2.0-dev:s390x \
|
||||
libglusterfs-dev:s390x \
|
||||
libgnutls28-dev:s390x \
|
||||
libiscsi-dev:s390x \
|
||||
libnl-3-dev:s390x \
|
||||
libnl-route-3-dev:s390x \
|
||||
libnuma-dev:s390x \
|
||||
libparted-dev:s390x \
|
||||
libpcap0.8-dev:s390x \
|
||||
libpciaccess-dev:s390x \
|
||||
librbd-dev:s390x \
|
||||
libreadline-dev:s390x \
|
||||
libsanlock-dev:s390x \
|
||||
libsasl2-dev:s390x \
|
||||
libselinux1-dev:s390x \
|
||||
libssh-gcrypt-dev:s390x \
|
||||
libssh2-1-dev:s390x \
|
||||
libtirpc-dev:s390x \
|
||||
libudev-dev:s390x \
|
||||
libxml2-dev:s390x \
|
||||
libyajl-dev:s390x \
|
||||
xfslibs-dev:s390x && \
|
||||
apt-get autoremove -y && \
|
||||
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 = 'little'" > /usr/local/share/meson/cross/s390x-linux-gnu
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.54.0
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "s390x-linux-gnu"
|
||||
ENV CONFIGURE_OPTS "--host=s390x-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=s390x-linux-gnu"
|
@@ -1,117 +0,0 @@
|
||||
FROM debian:10
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libacl1-dev \
|
||||
libapparmor-dev \
|
||||
libattr1-dev \
|
||||
libaudit-dev \
|
||||
libavahi-client-dev \
|
||||
libblkid-dev \
|
||||
libc-dev-bin \
|
||||
libc6-dev \
|
||||
libcap-ng-dev \
|
||||
libcurl4-gnutls-dev \
|
||||
libdbus-1-dev \
|
||||
libdevmapper-dev \
|
||||
libfuse-dev \
|
||||
libglib2.0-dev \
|
||||
libglusterfs-dev \
|
||||
libgnutls28-dev \
|
||||
libiscsi-dev \
|
||||
libnetcf-dev \
|
||||
libnl-3-dev \
|
||||
libnl-route-3-dev \
|
||||
libnuma-dev \
|
||||
libparted-dev \
|
||||
libpcap0.8-dev \
|
||||
libpciaccess-dev \
|
||||
librbd-dev \
|
||||
libreadline-dev \
|
||||
libsanlock-dev \
|
||||
libsasl2-dev \
|
||||
libselinux1-dev \
|
||||
libssh-gcrypt-dev \
|
||||
libssh2-1-dev \
|
||||
libtirpc-dev \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libudev-dev \
|
||||
libxen-dev \
|
||||
libxml2-dev \
|
||||
libxml2-utils \
|
||||
libyajl-dev \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
systemtap-sdt-dev \
|
||||
vim \
|
||||
wireshark-dev \
|
||||
xfslibs-dev \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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/$(basename /usr/bin/gcc)
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.54.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,138 +0,0 @@
|
||||
FROM debian:sid
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libc-dev-bin \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libxml2-utils \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
meson \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture arm64 && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
gcc-aarch64-linux-gnu \
|
||||
libacl1-dev:arm64 \
|
||||
libapparmor-dev:arm64 \
|
||||
libattr1-dev:arm64 \
|
||||
libaudit-dev:arm64 \
|
||||
libavahi-client-dev:arm64 \
|
||||
libblkid-dev:arm64 \
|
||||
libc6-dev:arm64 \
|
||||
libcap-ng-dev:arm64 \
|
||||
libcurl4-gnutls-dev:arm64 \
|
||||
libdbus-1-dev:arm64 \
|
||||
libdevmapper-dev:arm64 \
|
||||
libfuse-dev:arm64 \
|
||||
libglib2.0-dev:arm64 \
|
||||
libglusterfs-dev:arm64 \
|
||||
libgnutls28-dev:arm64 \
|
||||
libiscsi-dev:arm64 \
|
||||
libnl-3-dev:arm64 \
|
||||
libnl-route-3-dev:arm64 \
|
||||
libnuma-dev:arm64 \
|
||||
libparted-dev:arm64 \
|
||||
libpcap0.8-dev:arm64 \
|
||||
libpciaccess-dev:arm64 \
|
||||
librbd-dev:arm64 \
|
||||
libreadline-dev:arm64 \
|
||||
libsanlock-dev:arm64 \
|
||||
libsasl2-dev:arm64 \
|
||||
libselinux1-dev:arm64 \
|
||||
libssh-gcrypt-dev:arm64 \
|
||||
libssh2-1-dev:arm64 \
|
||||
libtirpc-dev:arm64 \
|
||||
libudev-dev:arm64 \
|
||||
libxen-dev:arm64 \
|
||||
libxml2-dev:arm64 \
|
||||
libyajl-dev:arm64 \
|
||||
xfslibs-dev:arm64 && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/aarch64-linux-gnu-gcc'\n\
|
||||
ar = '/usr/bin/aarch64-linux-gnu-gcc-ar'\n\
|
||||
strip = '/usr/bin/aarch64-linux-gnu-strip'\n\
|
||||
pkgconfig = '/usr/bin/aarch64-linux-gnu-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'aarch64'\n\
|
||||
cpu = 'aarch64'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/aarch64-linux-gnu
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "aarch64-linux-gnu"
|
||||
ENV CONFIGURE_OPTS "--host=aarch64-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=aarch64-linux-gnu"
|
@@ -1,137 +0,0 @@
|
||||
FROM debian:sid
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libc-dev-bin \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libxml2-utils \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
meson \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture armel && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
gcc-arm-linux-gnueabi \
|
||||
libacl1-dev:armel \
|
||||
libapparmor-dev:armel \
|
||||
libattr1-dev:armel \
|
||||
libaudit-dev:armel \
|
||||
libavahi-client-dev:armel \
|
||||
libblkid-dev:armel \
|
||||
libc6-dev:armel \
|
||||
libcap-ng-dev:armel \
|
||||
libcurl4-gnutls-dev:armel \
|
||||
libdbus-1-dev:armel \
|
||||
libdevmapper-dev:armel \
|
||||
libfuse-dev:armel \
|
||||
libglib2.0-dev:armel \
|
||||
libglusterfs-dev:armel \
|
||||
libgnutls28-dev:armel \
|
||||
libiscsi-dev:armel \
|
||||
libnl-3-dev:armel \
|
||||
libnl-route-3-dev:armel \
|
||||
libnuma-dev:armel \
|
||||
libparted-dev:armel \
|
||||
libpcap0.8-dev:armel \
|
||||
libpciaccess-dev:armel \
|
||||
librbd-dev:armel \
|
||||
libreadline-dev:armel \
|
||||
libsanlock-dev:armel \
|
||||
libsasl2-dev:armel \
|
||||
libselinux1-dev:armel \
|
||||
libssh-gcrypt-dev:armel \
|
||||
libssh2-1-dev:armel \
|
||||
libtirpc-dev:armel \
|
||||
libudev-dev:armel \
|
||||
libxml2-dev:armel \
|
||||
libyajl-dev:armel \
|
||||
xfslibs-dev:armel && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/arm-linux-gnueabi-gcc'\n\
|
||||
ar = '/usr/bin/arm-linux-gnueabi-gcc-ar'\n\
|
||||
strip = '/usr/bin/arm-linux-gnueabi-strip'\n\
|
||||
pkgconfig = '/usr/bin/arm-linux-gnueabi-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'arm'\n\
|
||||
cpu = 'arm'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/arm-linux-gnueabi
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "arm-linux-gnueabi"
|
||||
ENV CONFIGURE_OPTS "--host=arm-linux-gnueabi"
|
||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabi"
|
@@ -1,138 +0,0 @@
|
||||
FROM debian:sid
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libc-dev-bin \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libxml2-utils \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
meson \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture armhf && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
gcc-arm-linux-gnueabihf \
|
||||
libacl1-dev:armhf \
|
||||
libapparmor-dev:armhf \
|
||||
libattr1-dev:armhf \
|
||||
libaudit-dev:armhf \
|
||||
libavahi-client-dev:armhf \
|
||||
libblkid-dev:armhf \
|
||||
libc6-dev:armhf \
|
||||
libcap-ng-dev:armhf \
|
||||
libcurl4-gnutls-dev:armhf \
|
||||
libdbus-1-dev:armhf \
|
||||
libdevmapper-dev:armhf \
|
||||
libfuse-dev:armhf \
|
||||
libglib2.0-dev:armhf \
|
||||
libglusterfs-dev:armhf \
|
||||
libgnutls28-dev:armhf \
|
||||
libiscsi-dev:armhf \
|
||||
libnl-3-dev:armhf \
|
||||
libnl-route-3-dev:armhf \
|
||||
libnuma-dev:armhf \
|
||||
libparted-dev:armhf \
|
||||
libpcap0.8-dev:armhf \
|
||||
libpciaccess-dev:armhf \
|
||||
librbd-dev:armhf \
|
||||
libreadline-dev:armhf \
|
||||
libsanlock-dev:armhf \
|
||||
libsasl2-dev:armhf \
|
||||
libselinux1-dev:armhf \
|
||||
libssh-gcrypt-dev:armhf \
|
||||
libssh2-1-dev:armhf \
|
||||
libtirpc-dev:armhf \
|
||||
libudev-dev:armhf \
|
||||
libxen-dev:armhf \
|
||||
libxml2-dev:armhf \
|
||||
libyajl-dev:armhf \
|
||||
xfslibs-dev:armhf && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/arm-linux-gnueabihf-gcc'\n\
|
||||
ar = '/usr/bin/arm-linux-gnueabihf-gcc-ar'\n\
|
||||
strip = '/usr/bin/arm-linux-gnueabihf-strip'\n\
|
||||
pkgconfig = '/usr/bin/arm-linux-gnueabihf-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'arm'\n\
|
||||
cpu = 'armhf'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/arm-linux-gnueabihf
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "arm-linux-gnueabihf"
|
||||
ENV CONFIGURE_OPTS "--host=arm-linux-gnueabihf"
|
||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabihf"
|
@@ -1,137 +0,0 @@
|
||||
FROM debian:sid
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libc-dev-bin \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libxml2-utils \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
meson \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture i386 && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
gcc-i686-linux-gnu \
|
||||
libacl1-dev:i386 \
|
||||
libapparmor-dev:i386 \
|
||||
libattr1-dev:i386 \
|
||||
libaudit-dev:i386 \
|
||||
libavahi-client-dev:i386 \
|
||||
libblkid-dev:i386 \
|
||||
libc6-dev:i386 \
|
||||
libcap-ng-dev:i386 \
|
||||
libcurl4-gnutls-dev:i386 \
|
||||
libdbus-1-dev:i386 \
|
||||
libdevmapper-dev:i386 \
|
||||
libfuse-dev:i386 \
|
||||
libglib2.0-dev:i386 \
|
||||
libglusterfs-dev:i386 \
|
||||
libgnutls28-dev:i386 \
|
||||
libiscsi-dev:i386 \
|
||||
libnl-3-dev:i386 \
|
||||
libnl-route-3-dev:i386 \
|
||||
libnuma-dev:i386 \
|
||||
libparted-dev:i386 \
|
||||
libpcap0.8-dev:i386 \
|
||||
libpciaccess-dev:i386 \
|
||||
librbd-dev:i386 \
|
||||
libreadline-dev:i386 \
|
||||
libsanlock-dev:i386 \
|
||||
libsasl2-dev:i386 \
|
||||
libselinux1-dev:i386 \
|
||||
libssh-gcrypt-dev:i386 \
|
||||
libssh2-1-dev:i386 \
|
||||
libtirpc-dev:i386 \
|
||||
libudev-dev:i386 \
|
||||
libxml2-dev:i386 \
|
||||
libyajl-dev:i386 \
|
||||
xfslibs-dev:i386 && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/i686-linux-gnu-gcc'\n\
|
||||
ar = '/usr/bin/i686-linux-gnu-gcc-ar'\n\
|
||||
strip = '/usr/bin/i686-linux-gnu-strip'\n\
|
||||
pkgconfig = '/usr/bin/i686-linux-gnu-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'x86'\n\
|
||||
cpu = 'i686'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/i686-linux-gnu
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "i686-linux-gnu"
|
||||
ENV CONFIGURE_OPTS "--host=i686-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=i686-linux-gnu"
|
@@ -1,137 +0,0 @@
|
||||
FROM debian:sid
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libc-dev-bin \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libxml2-utils \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
meson \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture mips64el && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
gcc-mips64el-linux-gnuabi64 \
|
||||
libacl1-dev:mips64el \
|
||||
libapparmor-dev:mips64el \
|
||||
libattr1-dev:mips64el \
|
||||
libaudit-dev:mips64el \
|
||||
libavahi-client-dev:mips64el \
|
||||
libblkid-dev:mips64el \
|
||||
libc6-dev:mips64el \
|
||||
libcap-ng-dev:mips64el \
|
||||
libcurl4-gnutls-dev:mips64el \
|
||||
libdbus-1-dev:mips64el \
|
||||
libdevmapper-dev:mips64el \
|
||||
libfuse-dev:mips64el \
|
||||
libglib2.0-dev:mips64el \
|
||||
libglusterfs-dev:mips64el \
|
||||
libgnutls28-dev:mips64el \
|
||||
libiscsi-dev:mips64el \
|
||||
libnl-3-dev:mips64el \
|
||||
libnl-route-3-dev:mips64el \
|
||||
libnuma-dev:mips64el \
|
||||
libparted-dev:mips64el \
|
||||
libpcap0.8-dev:mips64el \
|
||||
libpciaccess-dev:mips64el \
|
||||
librbd-dev:mips64el \
|
||||
libreadline-dev:mips64el \
|
||||
libsanlock-dev:mips64el \
|
||||
libsasl2-dev:mips64el \
|
||||
libselinux1-dev:mips64el \
|
||||
libssh-gcrypt-dev:mips64el \
|
||||
libssh2-1-dev:mips64el \
|
||||
libtirpc-dev:mips64el \
|
||||
libudev-dev:mips64el \
|
||||
libxml2-dev:mips64el \
|
||||
libyajl-dev:mips64el \
|
||||
xfslibs-dev:mips64el && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/mips64el-linux-gnuabi64-gcc'\n\
|
||||
ar = '/usr/bin/mips64el-linux-gnuabi64-gcc-ar'\n\
|
||||
strip = '/usr/bin/mips64el-linux-gnuabi64-strip'\n\
|
||||
pkgconfig = '/usr/bin/mips64el-linux-gnuabi64-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'mips64'\n\
|
||||
cpu = 'mips64el'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/mips64el-linux-gnuabi64
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "mips64el-linux-gnuabi64"
|
||||
ENV CONFIGURE_OPTS "--host=mips64el-linux-gnuabi64"
|
||||
ENV MESON_OPTS "--cross-file=mips64el-linux-gnuabi64"
|
@@ -1,137 +0,0 @@
|
||||
FROM debian:sid
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libc-dev-bin \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libxml2-utils \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
meson \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture mipsel && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
gcc-mipsel-linux-gnu \
|
||||
libacl1-dev:mipsel \
|
||||
libapparmor-dev:mipsel \
|
||||
libattr1-dev:mipsel \
|
||||
libaudit-dev:mipsel \
|
||||
libavahi-client-dev:mipsel \
|
||||
libblkid-dev:mipsel \
|
||||
libc6-dev:mipsel \
|
||||
libcap-ng-dev:mipsel \
|
||||
libcurl4-gnutls-dev:mipsel \
|
||||
libdbus-1-dev:mipsel \
|
||||
libdevmapper-dev:mipsel \
|
||||
libfuse-dev:mipsel \
|
||||
libglib2.0-dev:mipsel \
|
||||
libglusterfs-dev:mipsel \
|
||||
libgnutls28-dev:mipsel \
|
||||
libiscsi-dev:mipsel \
|
||||
libnl-3-dev:mipsel \
|
||||
libnl-route-3-dev:mipsel \
|
||||
libnuma-dev:mipsel \
|
||||
libparted-dev:mipsel \
|
||||
libpcap0.8-dev:mipsel \
|
||||
libpciaccess-dev:mipsel \
|
||||
librbd-dev:mipsel \
|
||||
libreadline-dev:mipsel \
|
||||
libsanlock-dev:mipsel \
|
||||
libsasl2-dev:mipsel \
|
||||
libselinux1-dev:mipsel \
|
||||
libssh-gcrypt-dev:mipsel \
|
||||
libssh2-1-dev:mipsel \
|
||||
libtirpc-dev:mipsel \
|
||||
libudev-dev:mipsel \
|
||||
libxml2-dev:mipsel \
|
||||
libyajl-dev:mipsel \
|
||||
xfslibs-dev:mipsel && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/mipsel-linux-gnu-gcc'\n\
|
||||
ar = '/usr/bin/mipsel-linux-gnu-gcc-ar'\n\
|
||||
strip = '/usr/bin/mipsel-linux-gnu-strip'\n\
|
||||
pkgconfig = '/usr/bin/mipsel-linux-gnu-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'mips'\n\
|
||||
cpu = 'mipsel'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/mipsel-linux-gnu
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "mipsel-linux-gnu"
|
||||
ENV CONFIGURE_OPTS "--host=mipsel-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=mipsel-linux-gnu"
|
@@ -1,137 +0,0 @@
|
||||
FROM debian:sid
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libc-dev-bin \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libxml2-utils \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
meson \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture ppc64el && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
gcc-powerpc64le-linux-gnu \
|
||||
libacl1-dev:ppc64el \
|
||||
libapparmor-dev:ppc64el \
|
||||
libattr1-dev:ppc64el \
|
||||
libaudit-dev:ppc64el \
|
||||
libavahi-client-dev:ppc64el \
|
||||
libblkid-dev:ppc64el \
|
||||
libc6-dev:ppc64el \
|
||||
libcap-ng-dev:ppc64el \
|
||||
libcurl4-gnutls-dev:ppc64el \
|
||||
libdbus-1-dev:ppc64el \
|
||||
libdevmapper-dev:ppc64el \
|
||||
libfuse-dev:ppc64el \
|
||||
libglib2.0-dev:ppc64el \
|
||||
libglusterfs-dev:ppc64el \
|
||||
libgnutls28-dev:ppc64el \
|
||||
libiscsi-dev:ppc64el \
|
||||
libnl-3-dev:ppc64el \
|
||||
libnl-route-3-dev:ppc64el \
|
||||
libnuma-dev:ppc64el \
|
||||
libparted-dev:ppc64el \
|
||||
libpcap0.8-dev:ppc64el \
|
||||
libpciaccess-dev:ppc64el \
|
||||
librbd-dev:ppc64el \
|
||||
libreadline-dev:ppc64el \
|
||||
libsanlock-dev:ppc64el \
|
||||
libsasl2-dev:ppc64el \
|
||||
libselinux1-dev:ppc64el \
|
||||
libssh-gcrypt-dev:ppc64el \
|
||||
libssh2-1-dev:ppc64el \
|
||||
libtirpc-dev:ppc64el \
|
||||
libudev-dev:ppc64el \
|
||||
libxml2-dev:ppc64el \
|
||||
libyajl-dev:ppc64el \
|
||||
xfslibs-dev:ppc64el && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/powerpc64le-linux-gnu-gcc'\n\
|
||||
ar = '/usr/bin/powerpc64le-linux-gnu-gcc-ar'\n\
|
||||
strip = '/usr/bin/powerpc64le-linux-gnu-strip'\n\
|
||||
pkgconfig = '/usr/bin/powerpc64le-linux-gnu-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'ppc64'\n\
|
||||
cpu = 'powerpc64le'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/powerpc64le-linux-gnu
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "powerpc64le-linux-gnu"
|
||||
ENV CONFIGURE_OPTS "--host=powerpc64le-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=powerpc64le-linux-gnu"
|
@@ -1,137 +0,0 @@
|
||||
FROM debian:sid
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libc-dev-bin \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libxml2-utils \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
meson \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture s390x && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
gcc-s390x-linux-gnu \
|
||||
libacl1-dev:s390x \
|
||||
libapparmor-dev:s390x \
|
||||
libattr1-dev:s390x \
|
||||
libaudit-dev:s390x \
|
||||
libavahi-client-dev:s390x \
|
||||
libblkid-dev:s390x \
|
||||
libc6-dev:s390x \
|
||||
libcap-ng-dev:s390x \
|
||||
libcurl4-gnutls-dev:s390x \
|
||||
libdbus-1-dev:s390x \
|
||||
libdevmapper-dev:s390x \
|
||||
libfuse-dev:s390x \
|
||||
libglib2.0-dev:s390x \
|
||||
libglusterfs-dev:s390x \
|
||||
libgnutls28-dev:s390x \
|
||||
libiscsi-dev:s390x \
|
||||
libnl-3-dev:s390x \
|
||||
libnl-route-3-dev:s390x \
|
||||
libnuma-dev:s390x \
|
||||
libparted-dev:s390x \
|
||||
libpcap0.8-dev:s390x \
|
||||
libpciaccess-dev:s390x \
|
||||
librbd-dev:s390x \
|
||||
libreadline-dev:s390x \
|
||||
libsanlock-dev:s390x \
|
||||
libsasl2-dev:s390x \
|
||||
libselinux1-dev:s390x \
|
||||
libssh-gcrypt-dev:s390x \
|
||||
libssh2-1-dev:s390x \
|
||||
libtirpc-dev:s390x \
|
||||
libudev-dev:s390x \
|
||||
libxml2-dev:s390x \
|
||||
libyajl-dev:s390x \
|
||||
xfslibs-dev:s390x && \
|
||||
apt-get autoremove -y && \
|
||||
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 = 'little'" > /usr/local/share/meson/cross/s390x-linux-gnu
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "s390x-linux-gnu"
|
||||
ENV CONFIGURE_OPTS "--host=s390x-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=s390x-linux-gnu"
|
@@ -1,115 +0,0 @@
|
||||
FROM debian:sid
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libacl1-dev \
|
||||
libapparmor-dev \
|
||||
libattr1-dev \
|
||||
libaudit-dev \
|
||||
libavahi-client-dev \
|
||||
libblkid-dev \
|
||||
libc-dev-bin \
|
||||
libc6-dev \
|
||||
libcap-ng-dev \
|
||||
libcurl4-gnutls-dev \
|
||||
libdbus-1-dev \
|
||||
libdevmapper-dev \
|
||||
libfuse-dev \
|
||||
libglib2.0-dev \
|
||||
libglusterfs-dev \
|
||||
libgnutls28-dev \
|
||||
libiscsi-dev \
|
||||
libnetcf-dev \
|
||||
libnl-3-dev \
|
||||
libnl-route-3-dev \
|
||||
libnuma-dev \
|
||||
libparted-dev \
|
||||
libpcap0.8-dev \
|
||||
libpciaccess-dev \
|
||||
librbd-dev \
|
||||
libreadline-dev \
|
||||
libsanlock-dev \
|
||||
libsasl2-dev \
|
||||
libselinux1-dev \
|
||||
libssh-gcrypt-dev \
|
||||
libssh2-1-dev \
|
||||
libtirpc-dev \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libudev-dev \
|
||||
libxen-dev \
|
||||
libxml2-dev \
|
||||
libxml2-utils \
|
||||
libyajl-dev \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
meson \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
systemtap-sdt-dev \
|
||||
vim \
|
||||
wireshark-dev \
|
||||
xfslibs-dev \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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/$(basename /usr/bin/gcc)
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
@@ -1,115 +0,0 @@
|
||||
FROM fedora:31
|
||||
|
||||
RUN dnf update -y && \
|
||||
dnf install -y \
|
||||
audit-libs-devel \
|
||||
augeas \
|
||||
autoconf \
|
||||
automake \
|
||||
avahi-devel \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cppi \
|
||||
cyrus-sasl-devel \
|
||||
dbus-devel \
|
||||
device-mapper-devel \
|
||||
dnsmasq \
|
||||
dwarves \
|
||||
ebtables \
|
||||
firewalld-filesystem \
|
||||
fuse-devel \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
gettext-devel \
|
||||
git \
|
||||
glib2-devel \
|
||||
glibc-devel \
|
||||
glibc-langpack-en \
|
||||
glusterfs-api-devel \
|
||||
gnutls-devel \
|
||||
iproute \
|
||||
iproute-tc \
|
||||
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 \
|
||||
libtool \
|
||||
libudev-devel \
|
||||
libwsman-devel \
|
||||
libxml2 \
|
||||
libxml2-devel \
|
||||
libxslt \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
net-tools \
|
||||
netcf-devel \
|
||||
nfs-utils \
|
||||
ninja-build \
|
||||
numactl-devel \
|
||||
numad \
|
||||
parted \
|
||||
parted-devel \
|
||||
patch \
|
||||
perl \
|
||||
perl-App-cpanminus \
|
||||
pkgconfig \
|
||||
polkit \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-flake8 \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-img \
|
||||
radvd \
|
||||
readline-devel \
|
||||
rpcgen \
|
||||
rpm-build \
|
||||
sanlock-devel \
|
||||
screen \
|
||||
scrub \
|
||||
sheepdog \
|
||||
strace \
|
||||
sudo \
|
||||
systemtap-sdt-devel \
|
||||
vim \
|
||||
wireshark-devel \
|
||||
xen-devel \
|
||||
xfsprogs-devel \
|
||||
xz \
|
||||
yajl-devel \
|
||||
zfs-fuse && \
|
||||
dnf autoremove -y && \
|
||||
dnf clean all -y && \
|
||||
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/$(basename /usr/bin/gcc)
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.54.0
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
@@ -1,113 +0,0 @@
|
||||
FROM fedora:32
|
||||
|
||||
RUN dnf update -y && \
|
||||
dnf install -y \
|
||||
audit-libs-devel \
|
||||
augeas \
|
||||
autoconf \
|
||||
automake \
|
||||
avahi-devel \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cppi \
|
||||
cyrus-sasl-devel \
|
||||
dbus-devel \
|
||||
device-mapper-devel \
|
||||
dnsmasq \
|
||||
dwarves \
|
||||
ebtables \
|
||||
firewalld-filesystem \
|
||||
fuse-devel \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
gettext-devel \
|
||||
git \
|
||||
glib2-devel \
|
||||
glibc-devel \
|
||||
glibc-langpack-en \
|
||||
glusterfs-api-devel \
|
||||
gnutls-devel \
|
||||
iproute \
|
||||
iproute-tc \
|
||||
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 \
|
||||
libtool \
|
||||
libudev-devel \
|
||||
libwsman-devel \
|
||||
libxml2 \
|
||||
libxml2-devel \
|
||||
libxslt \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
meson \
|
||||
net-tools \
|
||||
netcf-devel \
|
||||
nfs-utils \
|
||||
ninja-build \
|
||||
numactl-devel \
|
||||
numad \
|
||||
parted \
|
||||
parted-devel \
|
||||
patch \
|
||||
perl \
|
||||
perl-App-cpanminus \
|
||||
pkgconfig \
|
||||
polkit \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-flake8 \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-img \
|
||||
radvd \
|
||||
readline-devel \
|
||||
rpcgen \
|
||||
rpm-build \
|
||||
sanlock-devel \
|
||||
screen \
|
||||
scrub \
|
||||
sheepdog \
|
||||
strace \
|
||||
sudo \
|
||||
systemtap-sdt-devel \
|
||||
vim \
|
||||
wireshark-devel \
|
||||
xen-devel \
|
||||
xfsprogs-devel \
|
||||
xz \
|
||||
yajl-devel \
|
||||
zfs-fuse && \
|
||||
dnf autoremove -y && \
|
||||
dnf clean all -y && \
|
||||
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/$(basename /usr/bin/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,96 +0,0 @@
|
||||
FROM fedora:rawhide
|
||||
|
||||
RUN dnf update -y --nogpgcheck fedora-gpg-keys && \
|
||||
dnf update -y && \
|
||||
dnf install -y \
|
||||
augeas \
|
||||
autoconf \
|
||||
automake \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cppi \
|
||||
dnsmasq \
|
||||
dwarves \
|
||||
ebtables \
|
||||
firewalld-filesystem \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext-devel \
|
||||
git \
|
||||
glibc-langpack-en \
|
||||
iproute \
|
||||
iproute-tc \
|
||||
iscsi-initiator-utils \
|
||||
kmod \
|
||||
libtool \
|
||||
libwsman-devel \
|
||||
libxml2 \
|
||||
libxslt \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
meson \
|
||||
net-tools \
|
||||
nfs-utils \
|
||||
ninja-build \
|
||||
numad \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
perl-App-cpanminus \
|
||||
polkit \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-flake8 \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-img \
|
||||
radvd \
|
||||
rpcgen \
|
||||
rpm-build \
|
||||
screen \
|
||||
scrub \
|
||||
sheepdog \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xz \
|
||||
zfs-fuse && \
|
||||
dnf autoremove -y && \
|
||||
dnf clean all -y && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN dnf install -y \
|
||||
mingw32-curl \
|
||||
mingw32-dbus \
|
||||
mingw32-dlfcn \
|
||||
mingw32-gcc \
|
||||
mingw32-gettext \
|
||||
mingw32-glib2 \
|
||||
mingw32-gnutls \
|
||||
mingw32-headers \
|
||||
mingw32-libssh2 \
|
||||
mingw32-libxml2 \
|
||||
mingw32-pkg-config \
|
||||
mingw32-portablexdr \
|
||||
mingw32-readline && \
|
||||
dnf clean all -y
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "i686-w64-mingw32"
|
||||
ENV CONFIGURE_OPTS "--host=i686-w64-mingw32"
|
||||
ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw32.meson"
|
@@ -1,96 +0,0 @@
|
||||
FROM fedora:rawhide
|
||||
|
||||
RUN dnf update -y --nogpgcheck fedora-gpg-keys && \
|
||||
dnf update -y && \
|
||||
dnf install -y \
|
||||
augeas \
|
||||
autoconf \
|
||||
automake \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cppi \
|
||||
dnsmasq \
|
||||
dwarves \
|
||||
ebtables \
|
||||
firewalld-filesystem \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext-devel \
|
||||
git \
|
||||
glibc-langpack-en \
|
||||
iproute \
|
||||
iproute-tc \
|
||||
iscsi-initiator-utils \
|
||||
kmod \
|
||||
libtool \
|
||||
libwsman-devel \
|
||||
libxml2 \
|
||||
libxslt \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
meson \
|
||||
net-tools \
|
||||
nfs-utils \
|
||||
ninja-build \
|
||||
numad \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
perl-App-cpanminus \
|
||||
polkit \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-flake8 \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-img \
|
||||
radvd \
|
||||
rpcgen \
|
||||
rpm-build \
|
||||
screen \
|
||||
scrub \
|
||||
sheepdog \
|
||||
strace \
|
||||
sudo \
|
||||
vim \
|
||||
xz \
|
||||
zfs-fuse && \
|
||||
dnf autoremove -y && \
|
||||
dnf clean all -y && \
|
||||
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-$(basename /usr/bin/gcc)
|
||||
|
||||
RUN dnf install -y \
|
||||
mingw64-curl \
|
||||
mingw64-dbus \
|
||||
mingw64-dlfcn \
|
||||
mingw64-gcc \
|
||||
mingw64-gettext \
|
||||
mingw64-glib2 \
|
||||
mingw64-gnutls \
|
||||
mingw64-headers \
|
||||
mingw64-libssh2 \
|
||||
mingw64-libxml2 \
|
||||
mingw64-pkg-config \
|
||||
mingw64-portablexdr \
|
||||
mingw64-readline && \
|
||||
dnf clean all -y
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
ENV ABI "x86_64-w64-mingw32"
|
||||
ENV CONFIGURE_OPTS "--host=x86_64-w64-mingw32"
|
||||
ENV MESON_OPTS "--cross-file=/usr/share/mingw/toolchain-mingw64.meson"
|
@@ -1,114 +0,0 @@
|
||||
FROM fedora:rawhide
|
||||
|
||||
RUN dnf update -y --nogpgcheck fedora-gpg-keys && \
|
||||
dnf update -y && \
|
||||
dnf install -y \
|
||||
audit-libs-devel \
|
||||
augeas \
|
||||
autoconf \
|
||||
automake \
|
||||
avahi-devel \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cppi \
|
||||
cyrus-sasl-devel \
|
||||
dbus-devel \
|
||||
device-mapper-devel \
|
||||
dnsmasq \
|
||||
dwarves \
|
||||
ebtables \
|
||||
firewalld-filesystem \
|
||||
fuse-devel \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
gettext-devel \
|
||||
git \
|
||||
glib2-devel \
|
||||
glibc-devel \
|
||||
glibc-langpack-en \
|
||||
glusterfs-api-devel \
|
||||
gnutls-devel \
|
||||
iproute \
|
||||
iproute-tc \
|
||||
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 \
|
||||
libtool \
|
||||
libudev-devel \
|
||||
libwsman-devel \
|
||||
libxml2 \
|
||||
libxml2-devel \
|
||||
libxslt \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
meson \
|
||||
net-tools \
|
||||
netcf-devel \
|
||||
nfs-utils \
|
||||
ninja-build \
|
||||
numactl-devel \
|
||||
numad \
|
||||
parted \
|
||||
parted-devel \
|
||||
patch \
|
||||
perl \
|
||||
perl-App-cpanminus \
|
||||
pkgconfig \
|
||||
polkit \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-flake8 \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-img \
|
||||
radvd \
|
||||
readline-devel \
|
||||
rpcgen \
|
||||
rpm-build \
|
||||
sanlock-devel \
|
||||
screen \
|
||||
scrub \
|
||||
sheepdog \
|
||||
strace \
|
||||
sudo \
|
||||
systemtap-sdt-devel \
|
||||
vim \
|
||||
wireshark-devel \
|
||||
xen-devel \
|
||||
xfsprogs-devel \
|
||||
xz \
|
||||
yajl-devel \
|
||||
zfs-fuse && \
|
||||
dnf autoremove -y && \
|
||||
dnf clean all -y && \
|
||||
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/$(basename /usr/bin/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,111 +0,0 @@
|
||||
FROM opensuse/leap:15.1
|
||||
|
||||
RUN zypper update -y && \
|
||||
zypper install -y \
|
||||
audit-devel \
|
||||
augeas \
|
||||
augeas-lenses \
|
||||
autoconf \
|
||||
automake \
|
||||
avahi-devel \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cppi \
|
||||
cyrus-sasl-devel \
|
||||
dbus-1-devel \
|
||||
device-mapper-devel \
|
||||
dnsmasq \
|
||||
dwarves \
|
||||
ebtables \
|
||||
fuse-devel \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
gettext-devel \
|
||||
git \
|
||||
glib2-devel \
|
||||
glibc-devel \
|
||||
glibc-locale \
|
||||
glusterfs-devel \
|
||||
iproute2 \
|
||||
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 \
|
||||
libtool \
|
||||
libudev-devel \
|
||||
libwsman-devel \
|
||||
libxml2 \
|
||||
libxml2-devel \
|
||||
libxslt \
|
||||
libyajl-devel \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
net-tools \
|
||||
nfs-utils \
|
||||
ninja \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
parted-devel \
|
||||
patch \
|
||||
perl \
|
||||
perl-App-cpanminus \
|
||||
pkgconfig \
|
||||
polkit \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-flake8 \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-tools \
|
||||
radvd \
|
||||
readline-devel \
|
||||
rpcgen \
|
||||
rpm-build \
|
||||
sanlock-devel \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
systemtap-sdt-devel \
|
||||
vim \
|
||||
wireshark-devel \
|
||||
xen-devel \
|
||||
xfsprogs-devel \
|
||||
xz && \
|
||||
zypper clean --all && \
|
||||
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/$(basename /usr/bin/gcc)
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.54.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,119 +0,0 @@
|
||||
FROM ubuntu:18.04
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
glusterfs-common \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libacl1-dev \
|
||||
libapparmor-dev \
|
||||
libattr1-dev \
|
||||
libaudit-dev \
|
||||
libavahi-client-dev \
|
||||
libblkid-dev \
|
||||
libc-dev-bin \
|
||||
libc6-dev \
|
||||
libcap-ng-dev \
|
||||
libcurl4-gnutls-dev \
|
||||
libdbus-1-dev \
|
||||
libdevmapper-dev \
|
||||
libfuse-dev \
|
||||
libglib2.0-dev \
|
||||
libgnutls28-dev \
|
||||
libiscsi-dev \
|
||||
libnetcf-dev \
|
||||
libnl-3-dev \
|
||||
libnl-route-3-dev \
|
||||
libnuma-dev \
|
||||
libopenwsman-dev \
|
||||
libparted-dev \
|
||||
libpcap0.8-dev \
|
||||
libpciaccess-dev \
|
||||
librbd-dev \
|
||||
libreadline-dev \
|
||||
libsanlock-dev \
|
||||
libsasl2-dev \
|
||||
libselinux1-dev \
|
||||
libssh-dev \
|
||||
libssh2-1-dev \
|
||||
libtirpc-dev \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libudev-dev \
|
||||
libxen-dev \
|
||||
libxml2-dev \
|
||||
libxml2-utils \
|
||||
libyajl-dev \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
sheepdog \
|
||||
strace \
|
||||
sudo \
|
||||
systemtap-sdt-dev \
|
||||
vim \
|
||||
wireshark-dev \
|
||||
xfslibs-dev \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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/$(basename /usr/bin/gcc)
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.54.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,118 +0,0 @@
|
||||
FROM ubuntu:20.04
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get dist-upgrade -y && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
augeas-lenses \
|
||||
augeas-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
autopoint \
|
||||
bash \
|
||||
bash-completion \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
chrony \
|
||||
clang \
|
||||
cpanminus \
|
||||
dnsmasq-base \
|
||||
dwarves \
|
||||
ebtables \
|
||||
flake8 \
|
||||
gcc \
|
||||
gdb \
|
||||
gettext \
|
||||
git \
|
||||
iproute2 \
|
||||
kmod \
|
||||
libacl1-dev \
|
||||
libapparmor-dev \
|
||||
libattr1-dev \
|
||||
libaudit-dev \
|
||||
libavahi-client-dev \
|
||||
libblkid-dev \
|
||||
libc-dev-bin \
|
||||
libc6-dev \
|
||||
libcap-ng-dev \
|
||||
libcurl4-gnutls-dev \
|
||||
libdbus-1-dev \
|
||||
libdevmapper-dev \
|
||||
libfuse-dev \
|
||||
libglib2.0-dev \
|
||||
libglusterfs-dev \
|
||||
libgnutls28-dev \
|
||||
libiscsi-dev \
|
||||
libnetcf-dev \
|
||||
libnl-3-dev \
|
||||
libnl-route-3-dev \
|
||||
libnuma-dev \
|
||||
libopenwsman-dev \
|
||||
libparted-dev \
|
||||
libpcap0.8-dev \
|
||||
libpciaccess-dev \
|
||||
librbd-dev \
|
||||
libreadline-dev \
|
||||
libsanlock-dev \
|
||||
libsasl2-dev \
|
||||
libselinux1-dev \
|
||||
libssh-dev \
|
||||
libssh2-1-dev \
|
||||
libtirpc-dev \
|
||||
libtool \
|
||||
libtool-bin \
|
||||
libudev-dev \
|
||||
libxen-dev \
|
||||
libxml2-dev \
|
||||
libxml2-utils \
|
||||
libyajl-dev \
|
||||
locales \
|
||||
lsof \
|
||||
lvm2 \
|
||||
make \
|
||||
net-tools \
|
||||
nfs-common \
|
||||
ninja-build \
|
||||
numad \
|
||||
open-iscsi \
|
||||
parted \
|
||||
patch \
|
||||
perl \
|
||||
pkgconf \
|
||||
policykit-1 \
|
||||
python3 \
|
||||
python3-docutils \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
qemu-utils \
|
||||
radvd \
|
||||
screen \
|
||||
scrub \
|
||||
strace \
|
||||
sudo \
|
||||
systemtap-sdt-dev \
|
||||
vim \
|
||||
wireshark-dev \
|
||||
xfslibs-dev \
|
||||
xsltproc \
|
||||
xz-utils \
|
||||
zfs-fuse && \
|
||||
apt-get autoremove -y && \
|
||||
apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
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/$(basename /usr/bin/gcc)
|
||||
|
||||
RUN pip3 install \
|
||||
meson==0.54.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,42 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
if test -z "$1"
|
||||
then
|
||||
echo "syntax: $0 PATH-TO-LCITOOL"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
LCITOOL=$1
|
||||
|
||||
if ! test -x "$LCITOOL"
|
||||
then
|
||||
echo "$LCITOOL is not executable"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
HOSTS=$($LCITOOL hosts | grep -Ev 'freebsd|macos')
|
||||
|
||||
for host in $HOSTS
|
||||
do
|
||||
case "$host" in
|
||||
libvirt-fedora-rawhide)
|
||||
for cross in mingw32 mingw64
|
||||
do
|
||||
$LCITOOL dockerfile $host libvirt --cross $cross >$host-cross-$cross.Dockerfile
|
||||
done
|
||||
;;
|
||||
libvirt-debian-*)
|
||||
for cross in aarch64 armv6l armv7l i686 mips mips64el mipsel ppc64le s390x
|
||||
do
|
||||
if test "$host-cross-$cross" = "libvirt-debian-9-cross-i686" ||
|
||||
test "$host-cross-$cross" = "libvirt-debian-sid-cross-mips"
|
||||
then
|
||||
continue
|
||||
fi
|
||||
$LCITOOL dockerfile $host libvirt --cross $cross >$host-cross-$cross.Dockerfile
|
||||
done
|
||||
;;
|
||||
esac
|
||||
|
||||
$LCITOOL dockerfile $host libvirt >$host.Dockerfile
|
||||
done
|
@@ -1,14 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
prefix="${1##registry.gitlab.com/}"
|
||||
|
||||
PROJECT_ID=192693
|
||||
|
||||
all_repos() {
|
||||
curl -s "https://gitlab.com/api/v4/projects/$PROJECT_ID/registry/repositories?per_page=100" \
|
||||
| tr , '\n' | grep '"path":' | sed 's,"path":",,g;s,"$,,g'
|
||||
}
|
||||
|
||||
all_repos | grep "^$prefix" | sed "s,^$prefix,,g" | while read repo; do
|
||||
echo " $repo"
|
||||
done | sort -u
|
@@ -1,13 +0,0 @@
|
||||
# This script is used to prepare the environment that will be used
|
||||
# to build libvirt inside the container.
|
||||
#
|
||||
# You can customize it to your liking, or alternatively use a
|
||||
# completely different script by passing
|
||||
#
|
||||
# CI_PREPARE_SCRIPT=/path/to/your/prepare/script
|
||||
#
|
||||
# to make.
|
||||
#
|
||||
# Note that this script will have root privileges inside the
|
||||
# container, so it can be used for things like installing additional
|
||||
# packages.
|
67
config.h
67
config.h
@@ -1,67 +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
|
||||
|
||||
#ifndef __GNUC__
|
||||
# error "Libvirt requires GCC >= 4.8, or Clang"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Define __GNUC_PREREQ to a sane default if it isn't yet defined.
|
||||
* This is done here so that it's included as early as possible;
|
||||
*/
|
||||
#ifndef __GNUC_PREREQ
|
||||
# define __GNUC_PREREQ(maj, min) \
|
||||
((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
|
||||
#endif
|
||||
|
||||
#if defined(__clang_major__) && defined(__clang_minor__)
|
||||
# ifdef __apple_build_version__
|
||||
# if __clang_major__ < 5 || (__clang_major__ == 5 && __clang_minor__ < 1)
|
||||
# error You need at least XCode Clang v5.1 to compile QEMU
|
||||
# endif
|
||||
# else
|
||||
# if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 4)
|
||||
# error You need at least Clang v3.4 to compile QEMU
|
||||
# endif
|
||||
# endif
|
||||
#elif defined(__GNUC__) && defined(__GNUC_MINOR__)
|
||||
# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8)
|
||||
# error You need at least GCC v4.8 to compile QEMU
|
||||
# endif
|
||||
#else
|
||||
# error You either need at least GCC 4.8 or Clang 3.4 or XCode Clang 5.1 to compile libvirt
|
||||
#endif
|
||||
|
||||
/* Ask for warnings for anything that was marked deprecated in
|
||||
* the defined version, or before. It is a candidate for rewrite.
|
||||
*/
|
||||
#define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_48
|
||||
|
||||
/* Ask for warnings if code tries to use function that did not
|
||||
* exist in the defined version. These risk breaking builds
|
||||
*/
|
||||
#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_48
|
@@ -1,16 +0,0 @@
|
||||
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
|
||||
#if WIN32
|
||||
# include <winsock2.h> /* avoid mingw pollution on DATADIR */
|
||||
#endif
|
||||
#mesondefine BINDIR
|
||||
#mesondefine DATADIR
|
||||
#mesondefine LIBDIR
|
||||
#mesondefine LIBEXECDIR
|
||||
#mesondefine LOCALEDIR
|
||||
#mesondefine LOCALSTATEDIR
|
||||
#mesondefine MANDIR
|
||||
#mesondefine PKGDATADIR
|
||||
#mesondefine PREFIX
|
||||
#mesondefine RUNSTATEDIR
|
||||
#mesondefine SBINDIR
|
||||
#mesondefine SYSCONFDIR
|
2895
configure.ac
Normal file
2895
configure.ac
Normal file
File diff suppressed because it is too large
Load Diff
384
daemon/Makefile.am
Normal file
384
daemon/Makefile.am
Normal file
@@ -0,0 +1,384 @@
|
||||
## 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
|
||||
|
||||
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)/qemu_dispatch.h
|
||||
|
||||
DAEMON_SOURCES = \
|
||||
libvirtd.c libvirtd.h \
|
||||
remote.c remote.h \
|
||||
stream.c stream.h \
|
||||
../src/remote/remote_protocol.c \
|
||||
../src/remote/qemu_protocol.c \
|
||||
$(DAEMON_GENERATED)
|
||||
|
||||
DISTCLEANFILES =
|
||||
EXTRA_DIST = \
|
||||
remote_dispatch.h \
|
||||
qemu_dispatch.h \
|
||||
libvirtd.conf \
|
||||
libvirtd.init.in \
|
||||
libvirtd.upstart \
|
||||
libvirtd.policy-0 \
|
||||
libvirtd.policy-1 \
|
||||
libvirtd.sasl \
|
||||
libvirtd.sysconf \
|
||||
libvirtd.sysctl \
|
||||
libvirtd.aug \
|
||||
libvirtd.logrotate.in \
|
||||
libvirtd.qemu.logrotate.in \
|
||||
libvirtd.lxc.logrotate.in \
|
||||
libvirtd.uml.logrotate.in \
|
||||
test_libvirtd.aug \
|
||||
THREADS.txt \
|
||||
libvirtd.pod.in \
|
||||
libvirtd.8.in \
|
||||
$(DAEMON_SOURCES)
|
||||
|
||||
BUILT_SOURCES =
|
||||
|
||||
REMOTE_PROTOCOL = $(top_srcdir)/src/remote/remote_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_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_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
|
||||
|
||||
libvirtd.8: $(srcdir)/libvirtd.8.in
|
||||
sed \
|
||||
-e 's![@]sysconfdir[@]!$(sysconfdir)!g' \
|
||||
-e 's![@]localstatedir[@]!$(localstatedir)!g' \
|
||||
-e 's![@]remote_pid_file[@]!$(REMOTE_PID_FILE)!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) \
|
||||
$(WARN_CFLAGS) \
|
||||
$(COVERAGE_CFLAGS) \
|
||||
-DQEMUD_PID_FILE="\"$(QEMUD_PID_FILE)\"" \
|
||||
-DREMOTE_PID_FILE="\"$(REMOTE_PID_FILE)\""
|
||||
|
||||
libvirtd_LDFLAGS = \
|
||||
$(WARN_CFLAGS) \
|
||||
$(COVERAGE_LDFLAGS)
|
||||
|
||||
libvirtd_LDADD = \
|
||||
$(LIBXML_LIBS) \
|
||||
$(GNUTLS_LIBS) \
|
||||
$(SASL_LIBS) \
|
||||
$(POLKIT_LIBS)
|
||||
|
||||
if WITH_DTRACE_PROBES
|
||||
libvirtd_LDADD += ../src/probes.o
|
||||
endif
|
||||
|
||||
libvirtd_LDADD += \
|
||||
../src/libvirt-qemu.la
|
||||
|
||||
if ! WITH_DRIVER_MODULES
|
||||
if WITH_QEMU
|
||||
libvirtd_LDADD += ../src/libvirt_driver_qemu.la
|
||||
endif
|
||||
|
||||
if WITH_LXC
|
||||
libvirtd_LDADD += ../src/libvirt_driver_lxc.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_DIR
|
||||
libvirtd_LDADD += ../src/libvirt_driver_storage.la
|
||||
endif
|
||||
|
||||
if WITH_NETWORK
|
||||
libvirtd_LDADD += ../src/libvirt_driver_network.la
|
||||
endif
|
||||
|
||||
if WITH_NETCF
|
||||
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 HAVE_POLKIT
|
||||
if HAVE_POLKIT0
|
||||
policydir = $(datadir)/PolicyKit/policy
|
||||
policyfile = libvirtd.policy-0
|
||||
else
|
||||
policydir = $(datadir)/polkit-1/actions
|
||||
policyfile = libvirtd.policy-1
|
||||
endif
|
||||
endif
|
||||
|
||||
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 HAVE_POLKIT
|
||||
install-data-polkit::
|
||||
$(MKDIR_P) $(DESTDIR)$(policydir)
|
||||
$(INSTALL_DATA) $(srcdir)/$(policyfile) $(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
|
||||
sed \
|
||||
-e 's![@]localstatedir[@]!$(localstatedir)!g' \
|
||||
< $< > $@-t
|
||||
mv $@-t $@
|
||||
|
||||
libvirtd.qemu.logrotate: libvirtd.qemu.logrotate.in
|
||||
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
|
||||
install-sysctl:
|
||||
$(MKDIR_P) $(DESTDIR)$(sysconfdir)/sysctl.d
|
||||
$(INSTALL_DATA) $(srcdir)/libvirtd.sysctl \
|
||||
$(DESTDIR)$(sysconfdir)/sysctl.d/libvirtd
|
||||
|
||||
uninstall-sysctl:
|
||||
rm -f $(DESTDIR)$(sysconfdir)/sysctl.d/libvirtd
|
||||
rmdir $(DESTDIR)$(sysconfdir)/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
|
||||
|
||||
|
||||
EXTRA_DIST += libvirtd.service.in
|
||||
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 && \
|
||||
chmod a+x $@-t && \
|
||||
mv $@-t $@
|
||||
|
||||
|
||||
check-local:
|
||||
$(AM_V_GEN)if test -x '$(AUGPARSE)'; then \
|
||||
'$(AUGPARSE)' -I $(srcdir) $(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
|
||||
$(AM_V_GEN)$(POD2MAN) $< $@
|
||||
|
||||
# This is needed for clients too, so can't wrap in
|
||||
# the WITH_LIBVIRTD conditional
|
||||
if HAVE_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
|
97
daemon/libvirtd.aug
Normal file
97
daemon/libvirtd.aug
Normal file
@@ -0,0 +1,97 @@
|
||||
(* /etc/libvirt/libvirtd.conf *)
|
||||
|
||||
module Libvirtd =
|
||||
autoload xfm
|
||||
|
||||
let eol = del /[ \t]*\n/ "\n"
|
||||
let value_sep = del /[ \t]*=[ \t]*/ " = "
|
||||
let indent = del /[ \t]*/ ""
|
||||
|
||||
let array_sep = del /,[ \t\n]*/ ", "
|
||||
let array_start = del /\[[ \t\n]*/ "[ "
|
||||
let array_end = del /\]/ "]"
|
||||
|
||||
let str_val = del /\"/ "\"" . store /[^\"]*/ . del /\"/ "\""
|
||||
let bool_val = store /0|1/
|
||||
let int_val = store /[0-9]+/
|
||||
let str_array_element = [ seq "el" . str_val ] . del /[ \t\n]*/ ""
|
||||
let str_array_val = counter "el" . array_start . ( str_array_element . ( array_sep . str_array_element ) * ) ? . array_end
|
||||
|
||||
let str_entry (kw:string) = [ key kw . value_sep . str_val ]
|
||||
let bool_entry (kw:string) = [ key kw . value_sep . bool_val ]
|
||||
let int_entry (kw:string) = [ key kw . value_sep . int_val ]
|
||||
let str_array_entry (kw:string) = [ key kw . value_sep . str_array_val ]
|
||||
|
||||
|
||||
(* Config entry grouped by function - same order as example config *)
|
||||
let network_entry = bool_entry "listen_tls"
|
||||
| bool_entry "listen_tcp"
|
||||
| str_entry "tls_port"
|
||||
| str_entry "tcp_port"
|
||||
| str_entry "listen_addr"
|
||||
| bool_entry "mdns_adv"
|
||||
| str_entry "mdns_name"
|
||||
|
||||
let sock_acl_entry = str_entry "unix_sock_group"
|
||||
| str_entry "unix_sock_ro_perms"
|
||||
| str_entry "unix_sock_rw_perms"
|
||||
| str_entry "unix_sock_dir"
|
||||
|
||||
let authentication_entry = str_entry "auth_unix_ro"
|
||||
| str_entry "auth_unix_rw"
|
||||
| str_entry "auth_tcp"
|
||||
| str_entry "auth_tls"
|
||||
|
||||
let certificate_entry = str_entry "key_file"
|
||||
| str_entry "cert_file"
|
||||
| str_entry "ca_file"
|
||||
| str_entry "crl_file"
|
||||
|
||||
let authorization_entry = bool_entry "tls_no_verify_certificate"
|
||||
| bool_entry "tls_no_sanity_certificate"
|
||||
| str_array_entry "tls_allowed_dn_list"
|
||||
| str_array_entry "sasl_allowed_username_list"
|
||||
|
||||
let processing_entry = int_entry "min_workers"
|
||||
| int_entry "max_workers"
|
||||
| int_entry "max_clients"
|
||||
| int_entry "max_requests"
|
||||
| int_entry "max_client_requests"
|
||||
| int_entry "prio_workers"
|
||||
|
||||
let logging_entry = int_entry "log_level"
|
||||
| str_entry "log_filters"
|
||||
| str_entry "log_outputs"
|
||||
| int_entry "log_buffer_size"
|
||||
|
||||
let auditing_entry = int_entry "audit_level"
|
||||
| bool_entry "audit_logging"
|
||||
|
||||
let keepalive_entry = int_entry "keepalive_interval"
|
||||
| int_entry "keepalive_count"
|
||||
| bool_entry "keepalive_required"
|
||||
|
||||
let misc_entry = str_entry "host_uuid"
|
||||
|
||||
(* Each enty in the config is one of the following three ... *)
|
||||
let entry = network_entry
|
||||
| sock_acl_entry
|
||||
| authentication_entry
|
||||
| certificate_entry
|
||||
| authorization_entry
|
||||
| processing_entry
|
||||
| logging_entry
|
||||
| auditing_entry
|
||||
| keepalive_entry
|
||||
| misc_entry
|
||||
let comment = [ label "#comment" . del /#[ \t]*/ "# " . store /([^ \t\n][^\n]*)?/ . del /\n/ "\n" ]
|
||||
let empty = [ label "#empty" . eol ]
|
||||
|
||||
let record = indent . entry . eol
|
||||
|
||||
let lns = ( record | comment | empty ) *
|
||||
|
||||
let filter = incl "/etc/libvirt/libvirtd.conf"
|
||||
. Util.stdexcl
|
||||
|
||||
let xfm = transform lns filter
|
1659
daemon/libvirtd.c
Normal file
1659
daemon/libvirtd.c
Normal file
File diff suppressed because it is too large
Load Diff
392
daemon/libvirtd.conf
Normal file
392
daemon/libvirtd.conf
Normal file
@@ -0,0 +1,392 @@
|
||||
# Master libvirt daemon configuration file
|
||||
#
|
||||
# For further information consult http://libvirt.org/format.html
|
||||
#
|
||||
# NOTE: the tests/daemon-conf regression test script requires
|
||||
# that each "PARAMETER = VALUE" line in this file have the parameter
|
||||
# name just after a leading "#".
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# Network connectivity controls
|
||||
#
|
||||
|
||||
# Flag listening for secure TLS connections on the public TCP/IP port.
|
||||
# NB, must pass the --listen flag to the libvirtd process for this to
|
||||
# have any effect.
|
||||
#
|
||||
# It is necessary to setup a CA and issue server certificates before
|
||||
# using this capability.
|
||||
#
|
||||
# This is enabled by default, uncomment this to disable it
|
||||
#listen_tls = 0
|
||||
|
||||
# Listen for unencrypted TCP connections on the public TCP/IP port.
|
||||
# NB, must pass the --listen flag to the libvirtd process for this to
|
||||
# have any effect.
|
||||
#
|
||||
# Using the TCP socket requires SASL authentication by default. Only
|
||||
# SASL mechanisms which support data encryption are allowed. This is
|
||||
# DIGEST_MD5 and GSSAPI (Kerberos5)
|
||||
#
|
||||
# This is disabled by default, uncomment this to enable it.
|
||||
#listen_tcp = 1
|
||||
|
||||
|
||||
|
||||
# Override the port for accepting secure TLS connections
|
||||
# This can be a port number, or service name
|
||||
#
|
||||
#tls_port = "16514"
|
||||
|
||||
# Override the port for accepting insecure TCP connections
|
||||
# This can be a port number, or service name
|
||||
#
|
||||
#tcp_port = "16509"
|
||||
|
||||
|
||||
# Override the default configuration which binds to all network
|
||||
# interfaces. This can be a numeric IPv4/6 address, or hostname
|
||||
#
|
||||
#listen_addr = "192.168.0.1"
|
||||
|
||||
|
||||
# Flag toggling mDNS advertizement of the libvirt service.
|
||||
#
|
||||
# Alternatively can disable for all services on a host by
|
||||
# stopping the Avahi daemon
|
||||
#
|
||||
# This is disabled by default, uncomment this to enable it
|
||||
#mdns_adv = 1
|
||||
|
||||
# Override the default mDNS advertizement name. This must be
|
||||
# unique on the immediate broadcast network.
|
||||
#
|
||||
# The default is "Virtualization Host HOSTNAME", where HOSTNAME
|
||||
# is subsituted for the short hostname of the machine (without domain)
|
||||
#
|
||||
#mdns_name = "Virtualization Host Joe Demo"
|
||||
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# UNIX socket access controls
|
||||
#
|
||||
|
||||
# Set the UNIX domain socket group ownership. This can be used to
|
||||
# allow a 'trusted' set of users access to management capabilities
|
||||
# without becoming root.
|
||||
#
|
||||
# This is restricted to 'root' by default.
|
||||
#unix_sock_group = "libvirt"
|
||||
|
||||
# Set the UNIX socket permissions for the R/O socket. This is used
|
||||
# for monitoring VM status only
|
||||
#
|
||||
# Default allows any user. If setting group ownership may want to
|
||||
# restrict this to:
|
||||
#unix_sock_ro_perms = "0777"
|
||||
|
||||
# Set the UNIX socket permissions for the R/W socket. This is used
|
||||
# for full management of VMs
|
||||
#
|
||||
# Default allows only root. If PolicyKit is enabled on the socket,
|
||||
# the default will change to allow everyone (eg, 0777)
|
||||
#
|
||||
# If not using PolicyKit and setting group ownership for access
|
||||
# control then you may want to relax this to:
|
||||
#unix_sock_rw_perms = "0770"
|
||||
|
||||
# Set the name of the directory in which sockets will be found/created.
|
||||
#unix_sock_dir = "/var/run/libvirt"
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# Authentication.
|
||||
#
|
||||
# - none: do not perform auth checks. If you can connect to the
|
||||
# socket you are allowed. This is suitable if there are
|
||||
# restrictions on connecting to the socket (eg, UNIX
|
||||
# socket permissions), or if there is a lower layer in
|
||||
# the network providing auth (eg, TLS/x509 certificates)
|
||||
#
|
||||
# - sasl: use SASL infrastructure. The actual auth scheme is then
|
||||
# controlled from /etc/sasl2/libvirt.conf. For the TCP
|
||||
# socket only GSSAPI & DIGEST-MD5 mechanisms will be used.
|
||||
# For non-TCP or TLS sockets, any scheme is allowed.
|
||||
#
|
||||
# - polkit: use PolicyKit to authenticate. This is only suitable
|
||||
# for use on the UNIX sockets. The default policy will
|
||||
# require a user to supply their own password to gain
|
||||
# full read/write access (aka sudo like), while anyone
|
||||
# is allowed read/only access.
|
||||
#
|
||||
# Set an authentication scheme for UNIX read-only sockets
|
||||
# By default socket permissions allow anyone to connect
|
||||
#
|
||||
# To restrict monitoring of domains you may wish to enable
|
||||
# an authentication mechanism here
|
||||
#auth_unix_ro = "none"
|
||||
|
||||
# Set an authentication scheme for UNIX read-write sockets
|
||||
# By default socket permissions only allow root. If PolicyKit
|
||||
# support was compiled into libvirt, the default will be to
|
||||
# use 'polkit' auth.
|
||||
#
|
||||
# If the unix_sock_rw_perms are changed you may wish to enable
|
||||
# an authentication mechanism here
|
||||
#auth_unix_rw = "none"
|
||||
|
||||
# Change the authentication scheme for TCP sockets.
|
||||
#
|
||||
# If you don't enable SASL, then all TCP traffic is cleartext.
|
||||
# Don't do this outside of a dev/test scenario. For real world
|
||||
# use, always enable SASL and use the GSSAPI or DIGEST-MD5
|
||||
# mechanism in /etc/sasl2/libvirt.conf
|
||||
#auth_tcp = "sasl"
|
||||
|
||||
# Change the authentication scheme for TLS sockets.
|
||||
#
|
||||
# TLS sockets already have encryption provided by the TLS
|
||||
# layer, and limited authentication is done by certificates
|
||||
#
|
||||
# It is possible to make use of any SASL authentication
|
||||
# mechanism as well, by using 'sasl' for this option
|
||||
#auth_tls = "none"
|
||||
|
||||
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# TLS x509 certificate configuration
|
||||
#
|
||||
|
||||
|
||||
# Override the default server key file path
|
||||
#
|
||||
#key_file = "/etc/pki/libvirt/private/serverkey.pem"
|
||||
|
||||
# Override the default server certificate file path
|
||||
#
|
||||
#cert_file = "/etc/pki/libvirt/servercert.pem"
|
||||
|
||||
# Override the default CA certificate path
|
||||
#
|
||||
#ca_file = "/etc/pki/CA/cacert.pem"
|
||||
|
||||
# Specify a certificate revocation list.
|
||||
#
|
||||
# Defaults to not using a CRL, uncomment to enable it
|
||||
#crl_file = "/etc/pki/CA/crl.pem"
|
||||
|
||||
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# Authorization controls
|
||||
#
|
||||
|
||||
|
||||
# Flag to disable verification of our own server certificates
|
||||
#
|
||||
# When libvirtd starts it performs some sanity checks against
|
||||
# its own certificates.
|
||||
#
|
||||
# Default is to always run sanity checks. Uncommenting this
|
||||
# will disable sanity checks which is not a good idea
|
||||
#tls_no_sanity_certificate = 1
|
||||
|
||||
# Flag to disable verification of client certificates
|
||||
#
|
||||
# Client certificate verification is the primary authentication mechanism.
|
||||
# Any client which does not present a certificate signed by the CA
|
||||
# will be rejected.
|
||||
#
|
||||
# Default is to always verify. Uncommenting this will disable
|
||||
# verification - make sure an IP whitelist is set
|
||||
#tls_no_verify_certificate = 1
|
||||
|
||||
|
||||
# A whitelist of allowed x509 Distinguished Names
|
||||
# This list may contain wildcards such as
|
||||
#
|
||||
# "C=GB,ST=London,L=London,O=Red Hat,CN=*"
|
||||
#
|
||||
# See the POSIX fnmatch function for the format of the wildcards.
|
||||
#
|
||||
# NB If this is an empty list, no client can connect, so comment out
|
||||
# entirely rather than using empty list to disable these checks
|
||||
#
|
||||
# By default, no DN's are checked
|
||||
#tls_allowed_dn_list = ["DN1", "DN2"]
|
||||
|
||||
|
||||
# A whitelist of allowed SASL usernames. The format for usernames
|
||||
# depends on the SASL authentication mechanism. Kerberos usernames
|
||||
# look like username@REALM
|
||||
#
|
||||
# This list may contain wildcards such as
|
||||
#
|
||||
# "*@EXAMPLE.COM"
|
||||
#
|
||||
# See the POSIX fnmatch function for the format of the wildcards.
|
||||
#
|
||||
# NB If this is an empty list, no client can connect, so comment out
|
||||
# entirely rather than using empty list to disable these checks
|
||||
#
|
||||
# By default, no Username's are checked
|
||||
#sasl_allowed_username_list = ["joe@EXAMPLE.COM", "fred@EXAMPLE.COM" ]
|
||||
|
||||
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# Processing controls
|
||||
#
|
||||
|
||||
# The maximum number of concurrent client connections to allow
|
||||
# over all sockets combined.
|
||||
#max_clients = 20
|
||||
|
||||
|
||||
# The minimum limit sets the number of workers to start up
|
||||
# initially. If the number of active clients exceeds this,
|
||||
# then more threads are spawned, upto max_workers limit.
|
||||
# Typically you'd want max_workers to equal maximum number
|
||||
# of clients allowed
|
||||
#min_workers = 5
|
||||
#max_workers = 20
|
||||
|
||||
|
||||
# The number of priority workers. If all workers from above
|
||||
# pool will stuck, some calls marked as high priority
|
||||
# (notably domainDestroy) can be executed in this pool.
|
||||
#prio_workers = 5
|
||||
|
||||
# Total global limit on concurrent RPC calls. Should be
|
||||
# at least as large as max_workers. Beyond this, RPC requests
|
||||
# will be read into memory and queued. This directly impact
|
||||
# memory usage, currently each request requires 256 KB of
|
||||
# memory. So by default upto 5 MB of memory is used
|
||||
#
|
||||
# XXX this isn't actually enforced yet, only the per-client
|
||||
# limit is used so far
|
||||
#max_requests = 20
|
||||
|
||||
# Limit on concurrent requests from a single client
|
||||
# connection. To avoid one client monopolizing the server
|
||||
# this should be a small fraction of the global max_requests
|
||||
# and max_workers parameter
|
||||
#max_client_requests = 5
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# Logging controls
|
||||
#
|
||||
|
||||
# Logging level: 4 errors, 3 warnings, 2 information, 1 debug
|
||||
# basically 1 will log everything possible
|
||||
#log_level = 3
|
||||
|
||||
# Logging filters:
|
||||
# A filter allows to select a different logging level for a given category
|
||||
# of logs
|
||||
# The format for a filter is:
|
||||
# x:name
|
||||
# where name is a match string e.g. remote or qemu
|
||||
# the x prefix is the minimal level where matching messages should be logged
|
||||
# 1: DEBUG
|
||||
# 2: INFO
|
||||
# 3: WARNING
|
||||
# 4: ERROR
|
||||
#
|
||||
# Multiple filter can be defined in a single @filters, they just need to be
|
||||
# separated by spaces.
|
||||
#
|
||||
# e.g. to only get warning or errors from the remote layer and only errors
|
||||
# from the event layer:
|
||||
#log_filters = "3:remote 4:event"
|
||||
|
||||
# Logging outputs:
|
||||
# An output is one of the places to save logging information
|
||||
# The format for an output can be:
|
||||
# x:stderr
|
||||
# output goes to stderr
|
||||
# x:syslog:name
|
||||
# use syslog for the output and use the given name as the ident
|
||||
# x:file:file_path
|
||||
# output to a file, with the given filepath
|
||||
# In all case the x prefix is the minimal level, acting as a filter
|
||||
# 1: DEBUG
|
||||
# 2: INFO
|
||||
# 3: WARNING
|
||||
# 4: ERROR
|
||||
#
|
||||
# Multiple output can be defined, they just need to be separated by spaces.
|
||||
# e.g. to log all warnings and errors to syslog under the libvirtd ident:
|
||||
#log_outputs = "3:syslog:libvirtd"
|
||||
#
|
||||
|
||||
# Log debug buffer size: default 64
|
||||
# The daemon keeps an internal debug log buffer which will be dumped in case
|
||||
# of crash or upon receiving a SIGUSR2 signal. This setting allows to override
|
||||
# the default buffer size in kilobytes.
|
||||
# If value is 0 or less the debug log buffer is deactivated
|
||||
#log_buffer_size = 64
|
||||
|
||||
|
||||
##################################################################
|
||||
#
|
||||
# Auditing
|
||||
#
|
||||
# This setting allows usage of the auditing subsystem to be altered:
|
||||
#
|
||||
# audit_level == 0 -> disable all auditing
|
||||
# audit_level == 1 -> enable auditing, only if enabled on host (default)
|
||||
# audit_level == 2 -> enable auditing, and exit if disabled on host
|
||||
#
|
||||
#audit_level = 2
|
||||
#
|
||||
# If set to 1, then audit messages will also be sent
|
||||
# via libvirt logging infrastructure. Defaults to 0
|
||||
#
|
||||
#audit_logging = 1
|
||||
|
||||
###################################################################
|
||||
# UUID of the host:
|
||||
# Provide the UUID of the host here in case the command
|
||||
# 'dmidecode -s system-uuid' does not provide a valid uuid. In case
|
||||
# 'dmidecode' does not provide a valid UUID and none is provided here, a
|
||||
# temporary UUID will be generated.
|
||||
# Keep the format of the example UUID below. UUID must not have all digits
|
||||
# be the same.
|
||||
|
||||
# NB This default all-zeros UUID will not work. Replace
|
||||
# it with the output of the 'uuidgen' command and then
|
||||
# uncomment this entry
|
||||
#host_uuid = "00000000-0000-0000-0000-000000000000"
|
||||
|
||||
###################################################################
|
||||
# Keepalive protocol:
|
||||
# This allows libvirtd to detect broken client connections or even
|
||||
# dead client. A keepalive message is sent to a client after
|
||||
# keepalive_interval seconds of inactivity to check if the client is
|
||||
# still responding; keepalive_count is a maximum number of keepalive
|
||||
# messages that are allowed to be sent to the client without getting
|
||||
# any response before the connection is considered broken. In other
|
||||
# words, the connection is automatically closed approximately after
|
||||
# keepalive_interval * (keepalive_count + 1) seconds since the last
|
||||
# message received from the client. If keepalive_interval is set to
|
||||
# -1, libvirtd will never send keepalive requests; however clients
|
||||
# can still send them and the deamon will send responses. When
|
||||
# keepalive_count is set to 0, connections will be automatically
|
||||
# closed after keepalive_interval seconds of inactivity without
|
||||
# sending any keepalive messages.
|
||||
#
|
||||
#keepalive_interval = 5
|
||||
#keepalive_count = 5
|
||||
#
|
||||
# If set to 1, libvirtd will refuse to talk to clients that do not
|
||||
# support keepalive protocol. Defaults to 0.
|
||||
#
|
||||
#keepalive_required = 1
|
75
daemon/libvirtd.h
Normal file
75
daemon/libvirtd.h
Normal file
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* libvirtd.h: daemon data structure definitions
|
||||
*
|
||||
* Copyright (C) 2006-2012 Red Hat, Inc.
|
||||
* Copyright (C) 2006 Daniel P. Berrange
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Daniel P. Berrange <berrange@redhat.com>
|
||||
*/
|
||||
|
||||
|
||||
#ifndef LIBVIRTD_H__
|
||||
# define LIBVIRTD_H__
|
||||
|
||||
# define VIR_ENUM_SENTINELS
|
||||
|
||||
# include <config.h>
|
||||
|
||||
# include <rpc/types.h>
|
||||
# include <rpc/xdr.h>
|
||||
# include "remote_protocol.h"
|
||||
# include "qemu_protocol.h"
|
||||
# include "logging.h"
|
||||
# include "threads.h"
|
||||
# if HAVE_SASL
|
||||
# include "virnetsaslcontext.h"
|
||||
# endif
|
||||
# include "virnetserverprogram.h"
|
||||
|
||||
typedef struct daemonClientStream daemonClientStream;
|
||||
typedef daemonClientStream *daemonClientStreamPtr;
|
||||
typedef struct daemonClientPrivate daemonClientPrivate;
|
||||
typedef daemonClientPrivate *daemonClientPrivatePtr;
|
||||
|
||||
/* Stores the per-client connection state */
|
||||
struct daemonClientPrivate {
|
||||
/* Hold while accessing any data except conn */
|
||||
virMutex lock;
|
||||
|
||||
int domainEventCallbackID[VIR_DOMAIN_EVENT_ID_LAST];
|
||||
|
||||
# if HAVE_SASL
|
||||
virNetSASLSessionPtr sasl;
|
||||
# endif
|
||||
|
||||
/* This is only valid if a remote open call has been made on this
|
||||
* connection, otherwise it will be NULL. Also if remote close is
|
||||
* called, it will be set back to NULL if that succeeds.
|
||||
*/
|
||||
virConnectPtr conn;
|
||||
|
||||
daemonClientStreamPtr streams;
|
||||
bool keepalive_supported;
|
||||
};
|
||||
|
||||
# if HAVE_SASL
|
||||
extern virNetSASLContextPtr saslCtxt;
|
||||
# endif
|
||||
extern virNetServerProgramPtr remoteProgram;
|
||||
extern virNetServerProgramPtr qemuProgram;
|
||||
|
||||
#endif
|
123
daemon/libvirtd.init.in
Normal file
123
daemon/libvirtd.init.in
Normal file
@@ -0,0 +1,123 @@
|
||||
#!/bin/sh
|
||||
|
||||
# the following is the LSB init header see
|
||||
# http://www.linux-foundation.org/spec//booksets/LSB-Core-generic/LSB-Core-generic.html#INITSCRCOMCONV
|
||||
#
|
||||
### BEGIN INIT INFO
|
||||
# Provides: libvirtd
|
||||
# Required-Start: $network messagebus
|
||||
# Should-Start: $named
|
||||
# Should-Start: xend
|
||||
# Should-Start: avahi-daemon
|
||||
# Required-Stop: $network messagebus
|
||||
# Should-Stop: $named
|
||||
# Default-Start: 3 4 5
|
||||
# Short-Description: daemon for libvirt virtualization API
|
||||
# Description: This is a daemon for managing guest instances
|
||||
# and libvirt virtual networks
|
||||
# See http://libvirt.org
|
||||
### END INIT INFO
|
||||
|
||||
# the following is chkconfig init header
|
||||
#
|
||||
# libvirtd: guest and virtual network management daemon
|
||||
#
|
||||
# chkconfig: 345 97 03
|
||||
# description: This is a daemon for managing guest instances \
|
||||
# and libvirt virtual networks \
|
||||
# See http://libvirt.org
|
||||
#
|
||||
# processname: libvirtd
|
||||
# pidfile: @localstatedir@/run/libvirtd.pid
|
||||
#
|
||||
|
||||
# Source function library.
|
||||
. @sysconfdir@/rc.d/init.d/functions
|
||||
|
||||
SERVICE=libvirtd
|
||||
PROCESS=libvirtd
|
||||
PIDFILE=@localstatedir@/run/$SERVICE.pid
|
||||
|
||||
LIBVIRTD_CONFIG=
|
||||
LIBVIRTD_ARGS=
|
||||
KRB5_KTNAME=/etc/libvirt/krb5.tab
|
||||
|
||||
test -f @sysconfdir@/sysconfig/libvirtd && . @sysconfdir@/sysconfig/libvirtd
|
||||
|
||||
export QEMU_AUDIO_DRV
|
||||
export SDL_AUDIODRIVER
|
||||
|
||||
LIBVIRTD_CONFIG_ARGS=
|
||||
if [ -n "$LIBVIRTD_CONFIG" ]
|
||||
then
|
||||
LIBVIRTD_CONFIG_ARGS="--config $LIBVIRTD_CONFIG"
|
||||
fi
|
||||
|
||||
RETVAL=0
|
||||
|
||||
start() {
|
||||
echo -n $"Starting $SERVICE daemon: "
|
||||
mkdir -p @localstatedir@/cache/libvirt
|
||||
rm -rf @localstatedir@/cache/libvirt/*
|
||||
|
||||
# LIBVIRTD_NOFILES_LIMIT from /etc/sysconfig/libvirtd is not handled
|
||||
# automatically
|
||||
if [ -n "$LIBVIRTD_NOFILES_LIMIT" ]; then
|
||||
ulimit -n "$LIBVIRTD_NOFILES_LIMIT"
|
||||
fi
|
||||
|
||||
KRB5_KTNAME=$KRB5_KTNAME daemon --pidfile $PIDFILE --check $SERVICE $PROCESS --daemon $LIBVIRTD_CONFIG_ARGS $LIBVIRTD_ARGS
|
||||
RETVAL=$?
|
||||
echo
|
||||
[ $RETVAL -eq 0 ] && touch @localstatedir@/lock/subsys/$SERVICE
|
||||
}
|
||||
|
||||
stop() {
|
||||
echo -n $"Stopping $SERVICE daemon: "
|
||||
|
||||
killproc -p $PIDFILE $PROCESS
|
||||
RETVAL=$?
|
||||
echo
|
||||
if [ $RETVAL -eq 0 ]; then
|
||||
rm -f @localstatedir@/lock/subsys/$SERVICE
|
||||
rm -rf @localstatedir@/cache/libvirt/*
|
||||
else
|
||||
exit $RETVAL
|
||||
fi
|
||||
}
|
||||
|
||||
restart() {
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
reload() {
|
||||
echo -n $"Reloading $SERVICE configuration: "
|
||||
|
||||
killproc -p $PIDFILE $PROCESS -HUP
|
||||
RETVAL=$?
|
||||
echo
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
# See how we were called.
|
||||
case "$1" in
|
||||
start|stop|restart|reload)
|
||||
$1
|
||||
;;
|
||||
status)
|
||||
status -p $PIDFILE $PROCESS
|
||||
RETVAL=$?
|
||||
;;
|
||||
force-reload)
|
||||
reload
|
||||
;;
|
||||
condrestart|try-restart)
|
||||
[ -f @localstatedir@/lock/subsys/$SERVICE ] && restart || :
|
||||
;;
|
||||
*)
|
||||
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload|try-restart}"
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
exit $RETVAL
|
@@ -1,8 +1,9 @@
|
||||
@localstatedir@/log/libvirt/lxc/*.log {
|
||||
size 2097153
|
||||
weekly
|
||||
missingok
|
||||
rotate 4
|
||||
compress
|
||||
delaycompress
|
||||
copytruncate
|
||||
minsize 100k
|
||||
}
|
168
daemon/libvirtd.pod.in
Normal file
168
daemon/libvirtd.pod.in
Normal file
@@ -0,0 +1,168 @@
|
||||
=head1 NAME
|
||||
|
||||
libvirtd - libvirtd management daemon
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
B<libvirtd> [ -dlv ] [ -f config_file ] [ -p pid_file ] [ -t timeout_seconds ]
|
||||
|
||||
B<libvirtd> --version
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
The B<libvirtd> program is the server side daemon component of the libvirt
|
||||
virtualization management system.
|
||||
|
||||
This daemon runs on host servers and performs required management tasks for
|
||||
virtualized guests. This includes activities such as starting, stopping
|
||||
and migrating guests between host servers, configuring and manipulating
|
||||
networking, and managing storage for use by guests.
|
||||
|
||||
The libvirt client libraries and utilities connect to this daemon to issue
|
||||
tasks and collect information about the configuration and resources of the host
|
||||
system and guests.
|
||||
|
||||
By default, the libvirtd daemon listens for requests on a local Unix domain
|
||||
socket. Using the B<-l>|B<--listen> command line option, the libvirtd daemon
|
||||
can be instructed to additionally listen on a TCP/IP socket. The TCP/IP socket
|
||||
to use is defined in the libvirtd configuration file.
|
||||
|
||||
Restarting libvirtd does not impact running guests. Guests continue to operate
|
||||
and will be picked up automatically if their XML configuration has been
|
||||
defined. Any guests whose XML configuration has not been defined will be lost
|
||||
from the configuration.
|
||||
|
||||
=head1 OPTIONS
|
||||
|
||||
=over
|
||||
|
||||
=item B<-d, --daemon>
|
||||
|
||||
Run as a daemon & write PID file.
|
||||
|
||||
=item B<-f, --config> I<FILE>
|
||||
|
||||
Use this configuration file, overriding the default value.
|
||||
|
||||
=item B<-l, --listen>
|
||||
|
||||
Listen for TCP/IP connections.
|
||||
|
||||
=item B<-p, --pid-file> I<FILE>
|
||||
|
||||
Use this name for the PID file, overriding the default value.
|
||||
|
||||
=item B<-t, --timeout> I<SECONDS>
|
||||
|
||||
Exit after timeout period (in seconds) expires.
|
||||
|
||||
=item B<-v, --verbose>
|
||||
|
||||
Enable output of verbose messages.
|
||||
|
||||
=item B< --version>
|
||||
|
||||
Display version information then exit.
|
||||
|
||||
=back
|
||||
|
||||
=head1 SIGNALS
|
||||
|
||||
On receipt of B<SIGHUP> libvirtd will reload its configuration.
|
||||
|
||||
=head1 FILES
|
||||
|
||||
=over
|
||||
|
||||
=item F<@sysconfdir@/libvirtd.conf>
|
||||
|
||||
The default configuration file used by libvirtd, unless overridden on the
|
||||
command line using the B<-f>|B<--config> option.
|
||||
|
||||
=item F<@localstatedir@/run/libvirt/libvirt-sock>
|
||||
|
||||
=item F<@localstatedir@/run/libvirt/libvirt-sock-ro>
|
||||
|
||||
The sockets libvirtd will use when B<run as root>.
|
||||
|
||||
=item F<$HOME/.libvirt/libvirt-sock>
|
||||
|
||||
The socket libvirtd will use when run as a B<non-root> user.
|
||||
|
||||
=item F<@sysconfdir@/pki/CA/cacert.pem>
|
||||
|
||||
The TLS B<Certificate Authority> certificate libvirtd will use.
|
||||
|
||||
=item F<@sysconfdir@/pki/libvirt/servercert.pem>
|
||||
|
||||
The TLS B<Server> certificate libvirtd will use.
|
||||
|
||||
=item F<@sysconfdir@/pki/libvirt/private/serverkey.pem>
|
||||
|
||||
The TLS B<Server> private key libvirtd will use.
|
||||
|
||||
=item F<@remote_pid_file@>
|
||||
|
||||
The PID file to use, unless overridden by the B<-p>|B<--pid-file> option.
|
||||
|
||||
=back
|
||||
|
||||
=head1 EXAMPLES
|
||||
|
||||
To retrieve the version of libvirtd:
|
||||
|
||||
# libvirtd --version
|
||||
libvirtd (libvirt) 0.8.2
|
||||
#
|
||||
|
||||
To start libvirtd, instructing it to daemonize and create a PID file:
|
||||
|
||||
# libvirtd -d
|
||||
# ls -la @remote_pid_file@
|
||||
-rw-r--r-- 1 root root 6 Jul 9 02:40 @remote_pid_file@
|
||||
#
|
||||
|
||||
=head1 BUGS
|
||||
|
||||
Please report all bugs you discover. This should be done via either:
|
||||
|
||||
=over
|
||||
|
||||
=item a) the mailing list
|
||||
|
||||
L<http://libvirt.org/contact.html>
|
||||
|
||||
=item or,
|
||||
|
||||
B<>
|
||||
|
||||
=item b) the bug tracker
|
||||
|
||||
L<http://libvirt.org/bugs.html>
|
||||
|
||||
=item Alternatively, you may report bugs to your software distributor / vendor.
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHORS
|
||||
|
||||
Please refer to the AUTHORS file distributed with libvirt.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright (C) 2006-2010 Red Hat, Inc., and the authors listed in the
|
||||
libvirt AUTHORS file.
|
||||
|
||||
=head1 LICENSE
|
||||
|
||||
libvirtd is distributed under the terms of the GNU LGPL v2.1+.
|
||||
This is free software; see the source for copying conditions. There
|
||||
is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
PURPOSE
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<virsh(1)>, L<virt-install(1)>, L<virt-xml-validate(1)>, L<virt-top(1)>,
|
||||
L<virt-df(1)>, L<http://www.libvirt.org/>
|
||||
|
||||
=cut
|
42
daemon/libvirtd.policy-0
Normal file
42
daemon/libvirtd.policy-0
Normal file
@@ -0,0 +1,42 @@
|
||||
<!DOCTYPE policyconfig PUBLIC
|
||||
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
|
||||
"http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
|
||||
|
||||
<!--
|
||||
Policy definitions for libvirt daemon
|
||||
|
||||
Copyright (c) 2007 Daniel P. Berrange <berrange redhat com>
|
||||
|
||||
libvirt is licensed to you under the GNU Lesser General Public License
|
||||
version 2. See COPYING for details.
|
||||
|
||||
NOTE: If you make changes to this file, make sure to validate the file
|
||||
using the polkit-policy-file-validate(1) tool. Changes made to this
|
||||
file are instantly applied.
|
||||
-->
|
||||
|
||||
<policyconfig>
|
||||
<action id="org.libvirt.unix.monitor">
|
||||
<description>Monitor local virtualized systems</description>
|
||||
<message>System policy prevents monitoring of local virtualized systems</message>
|
||||
<defaults>
|
||||
<!-- Any program can use libvirt in read-only mode for monitoring,
|
||||
even if not part of a session -->
|
||||
<allow_any>yes</allow_any>
|
||||
<allow_inactive>yes</allow_inactive>
|
||||
<allow_active>yes</allow_active>
|
||||
</defaults>
|
||||
</action>
|
||||
|
||||
<action id="org.libvirt.unix.manage">
|
||||
<description>Manage local virtualized systems</description>
|
||||
<message>System policy prevents management of local virtualized systems</message>
|
||||
<defaults>
|
||||
<!-- Only a program in the active host session can use libvirt in
|
||||
read-write mode for management, and we require user password -->
|
||||
<allow_any>auth_admin</allow_any>
|
||||
<allow_inactive>auth_admin</allow_inactive>
|
||||
<allow_active>auth_admin_keep_session</allow_active>
|
||||
</defaults>
|
||||
</action>
|
||||
</policyconfig>
|
42
daemon/libvirtd.policy-1
Normal file
42
daemon/libvirtd.policy-1
Normal file
@@ -0,0 +1,42 @@
|
||||
<!DOCTYPE policyconfig PUBLIC
|
||||
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
|
||||
"http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
|
||||
|
||||
<!--
|
||||
Policy definitions for libvirt daemon
|
||||
|
||||
Copyright (c) 2007 Daniel P. Berrange <berrange redhat com>
|
||||
|
||||
libvirt is licensed to you under the GNU Lesser General Public License
|
||||
version 2. See COPYING for details.
|
||||
|
||||
NOTE: If you make changes to this file, make sure to validate the file
|
||||
using the polkit-policy-file-validate(1) tool. Changes made to this
|
||||
file are instantly applied.
|
||||
-->
|
||||
|
||||
<policyconfig>
|
||||
<action id="org.libvirt.unix.monitor">
|
||||
<description>Monitor local virtualized systems</description>
|
||||
<message>System policy prevents monitoring of local virtualized systems</message>
|
||||
<defaults>
|
||||
<!-- Any program can use libvirt in read-only mode for monitoring,
|
||||
even if not part of a session -->
|
||||
<allow_any>yes</allow_any>
|
||||
<allow_inactive>yes</allow_inactive>
|
||||
<allow_active>yes</allow_active>
|
||||
</defaults>
|
||||
</action>
|
||||
|
||||
<action id="org.libvirt.unix.manage">
|
||||
<description>Manage local virtualized systems</description>
|
||||
<message>System policy prevents management of local virtualized systems</message>
|
||||
<defaults>
|
||||
<!-- Only a program in the active host session can use libvirt in
|
||||
read-write mode for management, and we require user password -->
|
||||
<allow_any>auth_admin</allow_any>
|
||||
<allow_inactive>auth_admin</allow_inactive>
|
||||
<allow_active>auth_admin_keep</allow_active>
|
||||
</defaults>
|
||||
</action>
|
||||
</policyconfig>
|
9
daemon/libvirtd.qemu.logrotate.in
Normal file
9
daemon/libvirtd.qemu.logrotate.in
Normal file
@@ -0,0 +1,9 @@
|
||||
@localstatedir@/log/libvirt/qemu/*.log {
|
||||
weekly
|
||||
missingok
|
||||
rotate 4
|
||||
compress
|
||||
delaycompress
|
||||
copytruncate
|
||||
minsize 100k
|
||||
}
|
31
daemon/libvirtd.sasl
Normal file
31
daemon/libvirtd.sasl
Normal file
@@ -0,0 +1,31 @@
|
||||
# If you want to use the non-TLS socket, then you *must* include
|
||||
# the GSSAPI or DIGEST-MD5 mechanisms, because they are the only
|
||||
# ones that can offer session encryption as well as authentication.
|
||||
#
|
||||
# If you're only using TLS, then you can turn on any mechanisms
|
||||
# you like for authentication, because TLS provides the encryption
|
||||
#
|
||||
# Default to a simple username+password mechanism
|
||||
mech_list: digest-md5
|
||||
|
||||
# Before you can use GSSAPI, you need a service principle on the
|
||||
# KDC server for libvirt, and that to be exported to the keytab
|
||||
# file listed below
|
||||
#mech_list: gssapi
|
||||
#
|
||||
# You can also list many mechanisms at once, then the user can choose
|
||||
# by adding '?auth=sasl.gssapi' to their libvirt URI, eg
|
||||
# qemu+tcp://hostname/system?auth=sasl.gssapi
|
||||
#mech_list: digest-md5 gssapi
|
||||
|
||||
# Some older builds of MIT kerberos on Linux ignore this option &
|
||||
# instead need KRB5_KTNAME env var.
|
||||
# For modern Linux, and other OS, this should be sufficient
|
||||
#
|
||||
# There is no default value here, uncomment if you need this
|
||||
#keytab: /etc/libvirt/krb5.tab
|
||||
|
||||
# If using digest-md5 for username/passwds, then this is the file
|
||||
# containing the passwds. Use 'saslpasswd2 -a libvirt [username]'
|
||||
# to add entries, and 'sasldblistusers2 -a libvirt' to browse it
|
||||
sasldb_path: /etc/libvirt/passwd.db
|
20
daemon/libvirtd.service.in
Normal file
20
daemon/libvirtd.service.in
Normal file
@@ -0,0 +1,20 @@
|
||||
# NB we don't use socket activation. When libvirtd starts it will
|
||||
# spawn any virtual machines registered for autostart. We want this
|
||||
# to occur on every boot, regardless of whether any client connects
|
||||
# to a socket. Thus socket activation doesn't have any benefit
|
||||
|
||||
[Unit]
|
||||
Description=Virtualization daemon
|
||||
Before=libvirt-guests.service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
EnvironmentFile=-/etc/sysconfig/libvirtd
|
||||
ExecStart=@sbindir@/libvirtd $LIBVIRTD_ARGS
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
||||
KillMode=process
|
||||
# Override the maximum number of opened files
|
||||
#LimitNOFILE=2048
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user