Gentoo Archives: gentoo-commits

From: Patrick McLean <chutzpah@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: app-emulation/ganeti/files/, app-emulation/ganeti/
Date: Fri, 01 Apr 2016 23:57:11
Message-Id: 1459554961.b3b274b57fc6d07cae1dad8272c3904d78e982aa.chutzpah@gentoo
1 commit: b3b274b57fc6d07cae1dad8272c3904d78e982aa
2 Author: Patrick McLean <chutzpah <AT> gentoo <DOT> org>
3 AuthorDate: Fri Apr 1 23:56:01 2016 +0000
4 Commit: Patrick McLean <chutzpah <AT> gentoo <DOT> org>
5 CommitDate: Fri Apr 1 23:56:01 2016 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b3b274b5
7
8 app-emulation/ganeti: revision bump, make sure kvmd is running as the right user
9
10 Package-Manager: portage-2.2.28
11
12 .../ganeti-2.15-kvmd-run-as-daemon-user.patch | 14 +
13 app-emulation/ganeti/ganeti-2.15.2-r2.ebuild | 309 +++++++++++++++++++++
14 2 files changed, 323 insertions(+)
15
16 diff --git a/app-emulation/ganeti/files/ganeti-2.15-kvmd-run-as-daemon-user.patch b/app-emulation/ganeti/files/ganeti-2.15-kvmd-run-as-daemon-user.patch
17 new file mode 100644
18 index 0000000..bb1bd09
19 --- /dev/null
20 +++ b/app-emulation/ganeti/files/ganeti-2.15-kvmd-run-as-daemon-user.patch
21 @@ -0,0 +1,14 @@
22 +diff --git a/daemons/daemon-util.in b/daemons/daemon-util.in
23 +index 7636fc9..aec5c92 100644
24 +--- a/daemons/daemon-util.in
25 ++++ b/daemons/daemon-util.in
26 +@@ -102,6 +102,9 @@ _daemon_usergroup() {
27 + rapi)
28 + echo "@GNTRAPIUSER@:@GNTRAPIGROUP@"
29 + ;;
30 ++ kvmd)
31 ++ echo "@GNTDAEMONSUSER@:@GNTDAEMONSGROUP@"
32 ++ ;;
33 + noded)
34 + echo "@GNTNODEDUSER@:@GNTNODEDGROUP@"
35 + ;;
36
37 diff --git a/app-emulation/ganeti/ganeti-2.15.2-r2.ebuild b/app-emulation/ganeti/ganeti-2.15.2-r2.ebuild
38 new file mode 100644
39 index 0000000..9e7840c
40 --- /dev/null
41 +++ b/app-emulation/ganeti/ganeti-2.15.2-r2.ebuild
42 @@ -0,0 +1,309 @@
43 +# Copyright 1999-2016 Gentoo Foundation
44 +# Distributed under the terms of the GNU General Public License v2
45 +# $Id$
46 +
47 +EAPI=5
48 +PYTHON_COMPAT=(python2_7)
49 +PYTHON_REQ_USE="ipv6(+)?"
50 +
51 +inherit eutils user autotools bash-completion-r1 python-single-r1 versionator
52 +
53 +MY_PV="${PV/_rc/~rc}"
54 +MY_PV="${MY_PV/_beta/~beta}"
55 +MY_P="${PN}-${MY_PV}"
56 +SERIES="$(get_version_component_range 1-2)"
57 +
58 +if [[ ${PV} =~ [9]{4,} ]] ; then
59 + EGIT_REPO_URI="git://git.ganeti.org/ganeti.git"
60 + inherit git-2
61 + KEYWORDS=""
62 + GIT_DEPEND="dev-python/docutils
63 + dev-python/sphinx[${PYTHON_USEDEP}]
64 + media-gfx/graphviz
65 + media-fonts/urw-fonts"
66 +else
67 + SRC_URI="http://downloads.ganeti.org/releases/${SERIES}/${MY_P}.tar.gz"
68 + KEYWORDS="~amd64 ~x86"
69 +fi
70 +
71 +DESCRIPTION="Ganeti is a virtual server management software tool"
72 +HOMEPAGE="http://www.ganeti.org/"
73 +
74 +LICENSE="GPL-2"
75 +SLOT="0"
76 +IUSE="drbd haskell-daemons htools ipv6 kvm lxc monitoring multiple-users rbd syslog test xen"
77 +REQUIRED_USE="|| ( kvm xen lxc ) test? ( ipv6 ) ${PYTHON_REQUIRED_USE}"
78 +
79 +USER_PREFIX="${GANETI_USER_PREFIX:-"gnt-"}"
80 +GROUP_PREFIX="${GANETI_GROUP_PREFIX:-"${USER_PREFIX}"}"
81 +
82 +DEPEND="
83 + dev-libs/openssl:0
84 + dev-python/paramiko[${PYTHON_USEDEP}]
85 + dev-python/pyopenssl[${PYTHON_USEDEP}]
86 + dev-python/simplejson[${PYTHON_USEDEP}]
87 + dev-python/pyparsing[${PYTHON_USEDEP}]
88 + dev-python/pyinotify[${PYTHON_USEDEP}]
89 + dev-python/pycurl[${PYTHON_USEDEP}]
90 + dev-python/ipaddr[${PYTHON_USEDEP}]
91 + dev-python/bitarray[${PYTHON_USEDEP}]
92 + dev-python/docutils[${PYTHON_USEDEP}]
93 + net-analyzer/arping
94 + net-analyzer/fping
95 + net-misc/bridge-utils
96 + net-misc/curl[ssl]
97 + net-misc/openssh
98 + net-misc/socat
99 + sys-apps/iproute2
100 + sys-fs/lvm2
101 + >=sys-apps/baselayout-2.0
102 + dev-lang/ghc
103 + dev-haskell/cabal:0=
104 + dev-haskell/cabal-install:0=
105 + >=dev-haskell/mtl-2.1.1:0=
106 + >=dev-haskell/old-time-1.1.0.0:0=
107 + >=dev-haskell/random-1.0.1.1:0=
108 + haskell-daemons? ( >=dev-haskell/text-0.11.1.13:0= )
109 + >=dev-haskell/transformers-0.3.0.0:0=
110 +
111 + >=dev-haskell/attoparsec-0.10.1.1:0=
112 + <dev-haskell/attoparsec-0.13:0
113 + >=dev-haskell/base64-bytestring-1.0.0.1:0=
114 + <dev-haskell/base64-bytestring-1.1:0=
115 + >=dev-haskell/crypto-4.2.4:0=
116 + <dev-haskell/crypto-4.3:0=
117 + >=dev-haskell/curl-1.3.7:0=
118 + <dev-haskell/curl-1.4:0=
119 + >=dev-haskell/hinotify-0.3.2:0=
120 + <dev-haskell/hinotify-0.4:0=
121 + >=dev-haskell/hslogger-1.1.4:0=
122 + <dev-haskell/hslogger-1.3:0=
123 + >=dev-haskell/json-0.5:0=
124 + <dev-haskell/json-0.9:0=
125 + >=dev-haskell/lens-3.10:0=
126 + <dev-haskell/lens-4.8:0=
127 + >=dev-haskell/lifted-base-0.2.0.3:0=
128 + <dev-haskell/lifted-base-0.3:0=
129 + >=dev-haskell/monad-control-0.3.1.3:0=
130 + <dev-haskell/monad-control-1.1:0=
131 + >=dev-haskell/network-2.3.0.13:0=
132 + <dev-haskell/network-2.7:0=
133 + >=dev-haskell/parallel-3.2.0.2:3=
134 + <dev-haskell/parallel-3.3:3=
135 + >=dev-haskell/temporary-1.1.2.3:0=
136 + <dev-haskell/temporary-1.3:0=
137 + >=dev-haskell/regex-pcre-0.94.2:0=
138 + <dev-haskell/regex-pcre-0.95:0=
139 + >=dev-haskell/transformers-base-0.4.1:0=
140 + <dev-haskell/transformers-base-0.5:0=
141 + >=dev-haskell/utf8-string-0.3.7:0=
142 + <dev-haskell/utf8-string-0.4:0=
143 + >=dev-haskell/zlib-0.5.3.3:0=
144 + <dev-haskell/zlib-0.6:0=
145 +
146 + >=dev-haskell/psqueue-1.1:0=
147 + <dev-haskell/psqueue-1.2:0=
148 + >=dev-haskell/snap-core-0.8.1:0=
149 + <dev-haskell/snap-core-0.10:0=
150 + >=dev-haskell/snap-server-0.8.1:0=
151 + <dev-haskell/snap-server-0.10:0=
152 + >=dev-haskell/case-insensitive-0.4.0.1
153 +
154 + dev-haskell/vector:0=
155 + <dev-haskell/semigroupoids-4.1:0=
156 + <dev-haskell/contravariant-0.6
157 + <dev-haskell/transformers-compat-0.4[three]
158 + xen? ( >=app-emulation/xen-3.0 )
159 + kvm? (
160 + dev-python/psutil
161 + app-emulation/qemu
162 + )
163 + lxc? ( app-emulation/lxc )
164 + drbd? (
165 + || (
166 + <sys-cluster/drbd-8.5
167 + sys-cluster/drbd-utils
168 + )
169 + )
170 + rbd? ( sys-cluster/ceph )
171 + ipv6? ( net-misc/ndisc6 )
172 + ${PYTHON_DEPS}
173 + ${GIT_DEPEND}"
174 +RDEPEND="${DEPEND}
175 + !app-emulation/ganeti-htools"
176 +DEPEND+="sys-devel/m4
177 + app-text/pandoc
178 + dev-python/sphinx[${PYTHON_USEDEP}]
179 + media-fonts/urw-fonts
180 + media-gfx/graphviz
181 + >=dev-haskell/test-framework-0.6:0=
182 + <dev-haskell/test-framework-0.9:0=
183 + >=dev-haskell/test-framework-hunit-0.2.7:0=
184 + <dev-haskell/test-framework-hunit-0.4:0=
185 + >=dev-haskell/test-framework-quickcheck2-0.2.12.1:0=
186 + <dev-haskell/test-framework-quickcheck2-0.4:0=
187 + test? (
188 + dev-python/mock
189 + dev-python/pyyaml
190 + dev-haskell/haddock:0=
191 + >=dev-haskell/hunit-1.2.4.2:0=
192 + <dev-haskell/hunit-1.3:0=
193 + >=dev-haskell/quickcheck-2.4.2:2=
194 + <dev-haskell/quickcheck-2.8:2=
195 + sys-apps/fakeroot
196 + net-misc/socat
197 + dev-util/shelltestrunner
198 + )"
199 +
200 +PATCHES=(
201 + "${FILESDIR}/${PN}-2.12-start-stop-daemon-args.patch"
202 + "${FILESDIR}/${PN}-2.11-add-pgrep.patch"
203 + "${FILESDIR}/${PN}-2.15-daemon-util.patch"
204 + "${FILESDIR}/${PN}-2.9-disable-root-tests.patch"
205 + "${FILESDIR}/${PN}-2.9-skip-cli-test.patch"
206 + "${FILESDIR}/${PN}-2.10-rundir.patch"
207 + "${FILESDIR}/${PN}-2.12-qemu-enable-kvm.patch"
208 + "${FILESDIR}/${PN}-2.11-tests.patch"
209 + "${FILESDIR}/${PN}-lockdir.patch"
210 + "${FILESDIR}/${PN}-2.11-dont-nest-libdir.patch"
211 + "${FILESDIR}/${PN}-2.11-dont-print-man-help.patch"
212 + "${FILESDIR}/${PN}-2.11-daemon-util-tests.patch"
213 + "${FILESDIR}/${PN}-2.13-process_unittest.patch"
214 + "${FILESDIR}/${PN}-2.15-python-mock.patch"
215 + "${FILESDIR}/${PN}-2.15.2-remove-sandbox-failing-tests.patch"
216 + "${FILESDIR}/${PN}-2.15-noded-must-run-as-root.patch"
217 + "${FILESDIR}/${PN}-2.15-kvmd-run-as-daemon-user.patch"
218 +)
219 +
220 +REQUIRED_USE="kvm? ( || ( amd64 x86 ) )"
221 +
222 +S="${WORKDIR}/${MY_P}"
223 +
224 +QA_WX_LOAD="
225 + usr/lib*/${PN}/${SERIES}/usr/sbin/ganeti-*d
226 + usr/lib*/${PN}/${SERIES}/usr/bin/htools
227 +"
228 +
229 +pkg_setup () {
230 + local user
231 + python-single-r1_pkg_setup
232 +
233 + if use multiple-users; then
234 + for user in gnt-{masterd,confd,luxid,rapi,daemons,admin}; do
235 + enewgroup ${user}
236 + enewuser ${user} -1 -1 -1 ${user}
237 + done
238 + fi
239 +}
240 +
241 +src_prepare() {
242 + local testfile
243 + epatch "${PATCHES[@]}"
244 +
245 + # not sure why these tests are failing
246 + # should remove this on next version bump if possible
247 + for testfile in test/py/import-export_unittest.bash; do
248 + printf '#!/bin/bash\ntrue\n' > "${testfile}"
249 + done
250 +
251 + # take the sledgehammer approach to bug #526270
252 + grep -lr '/bin/sh' "${S}" | xargs -r -- sed -i 's:/bin/sh:/bin/bash:g'
253 +
254 + [[ ${PV} =~ [9]{4,} ]] && ./autogen.sh
255 + rm autotools/missing
256 + eautoreconf
257 +}
258 +
259 +src_configure () {
260 + # this is kind of a hack to work around the removal of the qemu-kvm wrapper
261 + local kvm_arch
262 +
263 + if use amd64; then
264 + kvm_arch=x86_64
265 + elif use x86; then
266 + kvm_arch=i386
267 + elif use kvm; then
268 + die "Could not determine qemu system to use for kvm"
269 + fi
270 +
271 + econf --localstatedir=/var \
272 + --sharedstatedir=/var \
273 + --disable-symlinks \
274 + --docdir=/usr/share/doc/${P} \
275 + --with-ssh-initscript=/etc/init.d/sshd \
276 + --with-export-dir=/var/lib/ganeti-storage/export \
277 + --with-os-search-path=/usr/share/${PN}/os \
278 + $(use_enable test haskell-tests) \
279 + $(usex multiple-users "--with-default-user=" "" "gnt-daemons" "") \
280 + $(usex multiple-users "--with-user-prefix=" "" "${USER_PREFIX}" "") \
281 + $(usex multiple-users "--with-default-group=" "" "gnt-daemons" "") \
282 + $(usex multiple-users "--with-group-prefix=" "" "${GROUP_PREFIX}" "") \
283 + $(use_enable syslog) \
284 + $(use_enable monitoring) \
285 + $(usex kvm '--with-kvm-path=' '' "/usr/bin/qemu-system-${kvm_arch}" '') \
286 + $(usex haskell-daemons "--enable-confd=haskell" '' '' '')
287 +}
288 +
289 +src_install () {
290 + emake V=1 DESTDIR="${D}" install || die "emake install failed"
291 +
292 + newinitd "${FILESDIR}"/ganeti.initd-r3 ${PN}
293 + newconfd "${FILESDIR}"/ganeti.confd-r2 ${PN}
294 +
295 + if use kvm; then
296 + newinitd "${FILESDIR}"/ganeti-kvm-poweroff.initd ganeti-kvm-poweroff
297 + newconfd "${FILESDIR}"/ganeti-kvm-poweroff.confd ganeti-kvm-poweroff
298 + fi
299 +
300 + # ganeti installs it's own docs in a generic location
301 + rm -rf "${D}"/{usr/share/doc/${PN},run}
302 +
303 + sed -i "s:/usr/$(get_libdir)/${PN}/tools/burnin:burnin:" doc/examples/bash_completion
304 + newbashcomp doc/examples/bash_completion gnt-instance
305 + bashcomp_alias gnt-instance burnin ganeti-{cleaner,confd} \
306 + h{space,check,scan,info,ail,arep,roller,squeeze,bal} \
307 + gnt-{os,job,filter,debug,storage,group,node,network,backup,cluster}
308 +
309 + dodoc INSTALL UPGRADE NEWS README doc/*.rst
310 + dohtml -r doc/html/* doc/css/*.css
311 +
312 + docinto examples
313 + dodoc doc/examples/{ganeti.cron,gnt-config-backup} doc/examples/*.ocf
314 +
315 + docinto examples/hooks
316 + dodoc doc/examples/hooks/{ipsec,ethers}
317 +
318 + insinto /etc/cron.d
319 + newins doc/examples/ganeti.cron ${PN}
320 +
321 + insinto /etc/logrotate.d
322 + newins doc/examples/ganeti.logrotate ${PN}
323 +
324 + # need to dodir rather than keepdir here (bug #552482)
325 + dodir /var/lib/${PN}
326 +
327 + keepdir /var/log/${PN}/
328 + keepdir /usr/share/${PN}/${SERIES}/os/
329 + keepdir /var/lib/ganeti-storage/{export,file,shared}/
330 +
331 + dosym ${SERIES} "/usr/share/${PN}/default"
332 + dosym ${SERIES} "/usr/$(get_libdir)/${PN}/default"
333 +
334 + python_fix_shebang "${ED}" "${D}"/usr/"$(get_libdir)"/${PN}/${SERIES}
335 +}
336 +
337 +pkg_postinst() {
338 + if use multiple-users; then
339 + elog "You have enable multiple user support, the users for this must"
340 + elog "be created. You can use the provided tool for this, which is"
341 + elog "located at:"
342 + elog " /usr/$(get_libdir)/${PN}/tools/users-setup"
343 + fi
344 +}
345 +
346 +src_test () {
347 + PATH="${S}/scripts:${S}/src:${PATH}" \
348 + TMPDIR="/tmp" \
349 + GANETI_MASTER="$(hostname -f)" \
350 + emake check || die "emake check failed"
351 +}