1 |
commit: b3efea2940080e990146fe378af976cd13fe6885 |
2 |
Author: Austin English <austin.m.english <AT> sony <DOT> com> |
3 |
AuthorDate: Sat May 2 03:40:32 2020 +0000 |
4 |
Commit: Patrick McLean <chutzpah <AT> gentoo <DOT> org> |
5 |
CommitDate: Wed May 6 01:02:06 2020 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b3efea29 |
7 |
|
8 |
app-emulation/ganeti: add patches to fix building manpages/newer pyopenssl |
9 |
|
10 |
Closes: https://bugs.gentoo.org/719846 |
11 |
Signed-off-by: Austin English <austin.m.english <AT> sony.com> |
12 |
Signed-off-by: Patrick McLean <chutzpah <AT> gentoo.org> |
13 |
|
14 |
.../files/ganeti-2.15.2-check-man-warnings.patch | 13 + |
15 |
.../files/ganeti-2.15.2-ftbfs-sphinx-warning.patch | 41 +++ |
16 |
.../ganeti/files/ganeti-2.15.2-pyopenssl.patch | 33 ++ |
17 |
app-emulation/ganeti/ganeti-2.15.2-r10.ebuild | 386 +++++++++++++++++++++ |
18 |
4 files changed, 473 insertions(+) |
19 |
|
20 |
diff --git a/app-emulation/ganeti/files/ganeti-2.15.2-check-man-warnings.patch b/app-emulation/ganeti/files/ganeti-2.15.2-check-man-warnings.patch |
21 |
new file mode 100644 |
22 |
index 00000000000..913033dde4b |
23 |
--- /dev/null |
24 |
+++ b/app-emulation/ganeti/files/ganeti-2.15.2-check-man-warnings.patch |
25 |
@@ -0,0 +1,13 @@ |
26 |
+# https://bugs.gentoo.org/719846 |
27 |
+# Redirecting both stdout and stderr to /dev/null leaves nothing for grep to search |
28 |
+# Given that there aren't any warnings in the manpages, no need to filter, either |
29 |
+--- a/autotools/check-man-warnings 2020-04-30 23:10:08.140721582 +0000 |
30 |
++++ b/autotools/check-man-warnings 2020-04-30 23:21:06.708945592 +0000 |
31 |
+@@ -37,6 +37,4 @@ |
32 |
+ fi |
33 |
+ |
34 |
+ LANG="$loc" LC_ALL="$loc" MANWIDTH=80 \ |
35 |
+- man --warnings --encoding=utf8 --local-file "$1" 2>&1 >/dev/null | \ |
36 |
+- grep -v -e "cannot adjust line" -e "can't break line" | \ |
37 |
+- grep . |
38 |
++ man --warnings --encoding=utf8 --local-file "$1" >/dev/null |
39 |
|
40 |
diff --git a/app-emulation/ganeti/files/ganeti-2.15.2-ftbfs-sphinx-warning.patch b/app-emulation/ganeti/files/ganeti-2.15.2-ftbfs-sphinx-warning.patch |
41 |
new file mode 100644 |
42 |
index 00000000000..3da34eed165 |
43 |
--- /dev/null |
44 |
+++ b/app-emulation/ganeti/files/ganeti-2.15.2-ftbfs-sphinx-warning.patch |
45 |
@@ -0,0 +1,41 @@ |
46 |
+# https://bugs.gentoo.org/719846 |
47 |
+# Probably related to https://github.com/sphinx-doc/sphinx/issues/4225 |
48 |
+# |
49 |
+# Warning, treated as error: |
50 |
+# /var/tmp/portage/app-emulation/ganeti-2.15.2-r9/temp/gntbuild.tiR1shJ6/doc/design-impexp2.rst:512:Could not lex literal_block as "python". Highlighting skipped. |
51 |
+ |
52 |
+--- a/doc/design-impexp2.rst 2020-04-30 23:40:50.121698365 +0000 |
53 |
++++ b/doc/design-impexp2.rst 2020-04-30 23:41:05.692129339 +0000 |
54 |
+@@ -507,32 +507,6 @@ |
55 |
+ respective system (measured for the CGI/FastCGI program using ``time |
56 |
+ -v``). |
57 |
+ |
58 |
+-:: |
59 |
+- |
60 |
+- ---------------------------------------------------------------------- |
61 |
+- Block size 4 KB 64 KB 128 KB 1 MB 4 MB |
62 |
+- ====================================================================== |
63 |
+- Plain CGI script reading 83 174 180 122 120 |
64 |
+- from ``/dev/zero`` |
65 |
+- 0.6/3.9 0.1/2.4 0.1/2.2 0.0/1.9 0.0/2.1 |
66 |
+- ---------------------------------------------------------------------- |
67 |
+- FastCGI with ``fcgiwrap``, 86 167 170 177 174 |
68 |
+- ``dd`` reading from |
69 |
+- ``/dev/zero`` 1.1/5 0.5/2.9 0.5/2.7 0.7/3.1 0.7/2.8 |
70 |
+- ---------------------------------------------------------------------- |
71 |
+- FastCGI with ``fcgiwrap``, 68 146 150 170 170 |
72 |
+- Python script copying from |
73 |
+- ``/dev/zero`` to stdout |
74 |
+- 1.3/5.1 0.8/3.7 0.7/3.3 0.9/2.9 0.8/3 |
75 |
+- ---------------------------------------------------------------------- |
76 |
+- FastCGI, Python script using 31 48 47 5 1 |
77 |
+- ``flup`` library (version |
78 |
+- 1.0.2) reading from |
79 |
+- ``/dev/zero`` |
80 |
+- 23.5/9.8 14.3/8.5 16.1/8 - - |
81 |
+- ---------------------------------------------------------------------- |
82 |
+- |
83 |
+- |
84 |
+ It should be mentioned that the ``flup`` library is not implemented in |
85 |
+ the most efficient way, but even with some changes it doesn't get much |
86 |
+ faster. It is fine for small amounts of data, but not for huge |
87 |
|
88 |
diff --git a/app-emulation/ganeti/files/ganeti-2.15.2-pyopenssl.patch b/app-emulation/ganeti/files/ganeti-2.15.2-pyopenssl.patch |
89 |
new file mode 100644 |
90 |
index 00000000000..882c4f19acb |
91 |
--- /dev/null |
92 |
+++ b/app-emulation/ganeti/files/ganeti-2.15.2-pyopenssl.patch |
93 |
@@ -0,0 +1,33 @@ |
94 |
+--- a/lib/http/__init__.py |
95 |
++++ b/lib/http/__init__.py |
96 |
+@@ -88,6 +88,12 @@ |
97 |
+ # send/receive quantum |
98 |
+ SOCK_BUF_SIZE = 32768 |
99 |
+ |
100 |
++# OpenSSL.SSL.ConnectionType was deprecated in pyopenssl-19.1.0: |
101 |
++try: |
102 |
++ ssl_conn_type = OpenSSL.SSL.Connection |
103 |
++except AttributeError: |
104 |
++ ssl_conn_type = OpenSSL.SSL.ConnectionType |
105 |
++ |
106 |
+ |
107 |
+ class HttpError(Exception): |
108 |
+ """Internal exception for HTTP errors. |
109 |
+@@ -377,7 +383,7 @@ |
110 |
+ |
111 |
+ # Handshake is only supported by SSL sockets |
112 |
+ if (op == SOCKOP_HANDSHAKE and |
113 |
+- not isinstance(sock, OpenSSL.SSL.ConnectionType)): |
114 |
++ not isinstance(sock, ssl_conn_type)): |
115 |
+ return |
116 |
+ |
117 |
+ # No override by default |
118 |
+@@ -414,7 +420,7 @@ |
119 |
+ return sock.recv(arg1) |
120 |
+ |
121 |
+ elif op == SOCKOP_SHUTDOWN: |
122 |
+- if isinstance(sock, OpenSSL.SSL.ConnectionType): |
123 |
++ if isinstance(sock, ssl_conn_type): |
124 |
+ # PyOpenSSL's shutdown() doesn't take arguments |
125 |
+ return sock.shutdown() |
126 |
+ else: |
127 |
|
128 |
diff --git a/app-emulation/ganeti/ganeti-2.15.2-r10.ebuild b/app-emulation/ganeti/ganeti-2.15.2-r10.ebuild |
129 |
new file mode 100644 |
130 |
index 00000000000..4427da82567 |
131 |
--- /dev/null |
132 |
+++ b/app-emulation/ganeti/ganeti-2.15.2-r10.ebuild |
133 |
@@ -0,0 +1,386 @@ |
134 |
+# Copyright 1999-2020 Gentoo Authors |
135 |
+# Distributed under the terms of the GNU General Public License v2 |
136 |
+ |
137 |
+EAPI=7 |
138 |
+PYTHON_COMPAT=(python2_7) |
139 |
+PYTHON_REQ_USE="ipv6(+)?" |
140 |
+ |
141 |
+inherit user autotools bash-completion-r1 python-single-r1 |
142 |
+ |
143 |
+MY_PV="${PV/_rc/~rc}" |
144 |
+MY_PV="${MY_PV/_beta/~beta}" |
145 |
+MY_P="${PN}-${MY_PV}" |
146 |
+SERIES="$(ver_cut 1-2)" |
147 |
+ |
148 |
+DEBIAN_PATCH=11 |
149 |
+SRC_URI=" |
150 |
+ http://downloads.ganeti.org/releases/${SERIES}/${MY_P}.tar.gz |
151 |
+ mirror://debian/pool/main/g/ganeti-${SERIES}/ganeti-${SERIES}_${PV}-${DEBIAN_PATCH}.debian.tar.xz |
152 |
+" |
153 |
+KEYWORDS="~amd64 ~x86" |
154 |
+PATCHES=( |
155 |
+ "${FILESDIR}"/ganeti-2.15-use-balloon-device.patch |
156 |
+ "${WORKDIR}"/debian/patches/do-not-backup-export-dir.patch |
157 |
+ "${WORKDIR}"/debian/patches/Makefile.am-use-C.UTF-8 |
158 |
+ "${WORKDIR}"/debian/patches/relax-deps |
159 |
+ "${WORKDIR}"/debian/patches/zlib-0.6-compatibility |
160 |
+ "${WORKDIR}"/debian/patches/fix_FTBFS_with_sphinx-1.3.5 |
161 |
+ "${WORKDIR}"/debian/patches/fix_ftbfs_with_sphinx_1.4 |
162 |
+ "${WORKDIR}"/debian/patches/use-proper-cabal-dev.patch |
163 |
+ "${WORKDIR}"/debian/patches/0001-Drop-dependency-on-MonadCatchIO-transformers.patch |
164 |
+ "${WORKDIR}"/debian/patches/0001-GHC-8-support.patch |
165 |
+ "${WORKDIR}"/debian/patches/ghc8-fixes |
166 |
+ "${WORKDIR}"/debian/patches/snap-server-1.0-compat |
167 |
+ "${WORKDIR}"/debian/patches/non-DSA-SSH-key-support.patch |
168 |
+ "${WORKDIR}"/debian/patches/fix-ssh-key-renewal-on-single-node-clusters.patch |
169 |
+ "${WORKDIR}"/debian/patches/set-defaults-for-ssh-type-bits.patch |
170 |
+ "${WORKDIR}"/debian/patches/use-hv-class-to-check-for-migration.patch |
171 |
+ "${WORKDIR}"/debian/patches/do-not-specify-socat-ssl-method.patch |
172 |
+ "${WORKDIR}"/debian/patches/fix-ftbfs-with-sphinx-1.5.patch |
173 |
+ "${WORKDIR}"/debian/patches/fix-failover-from-dead-node.patch |
174 |
+ "${WORKDIR}"/debian/patches/fix-cpu-affinity.patch |
175 |
+ "${WORKDIR}"/debian/patches/fix-fcntl-i386.patch |
176 |
+ "${WORKDIR}"/debian/patches/fix-ovf-test-path.patch |
177 |
+ "${WORKDIR}"/debian/patches/fix-qa-ssconf-race.patch |
178 |
+ "${WORKDIR}"/debian/patches/relax-sphinx-version-check.patch |
179 |
+ #"${WORKDIR}"/debian/patches/THH-2.12.patch |
180 |
+ "${WORKDIR}"/debian/patches/sphinx-1.7.patch |
181 |
+ "${WORKDIR}"/debian/patches/ca-use-sha256-md.patch |
182 |
+ "${WORKDIR}"/debian/patches/impexpd-fix-certificate-verification-with-new-socat.patch |
183 |
+ "${WORKDIR}"/debian/patches/impexpd-fix-certificate-verification-with-new-socat-2.patch |
184 |
+) |
185 |
+ |
186 |
+DESCRIPTION="Ganeti is a virtual server management software tool" |
187 |
+HOMEPAGE="http://www.ganeti.org/" |
188 |
+ |
189 |
+LICENSE="GPL-2" |
190 |
+SLOT="0" |
191 |
+IUSE="drbd experimental haskell-daemons htools ipv6 kvm lxc monitoring multiple-users rbd syslog test xen restricted-commands" |
192 |
+RESTRICT="!test? ( test )" |
193 |
+ |
194 |
+REQUIRED_USE="|| ( kvm xen lxc ) |
195 |
+ test? ( ipv6 ) |
196 |
+ kvm? ( || ( amd64 x86 ) ) |
197 |
+ ${PYTHON_REQUIRED_USE}" |
198 |
+ |
199 |
+USER_PREFIX="${GANETI_USER_PREFIX:-"gnt-"}" |
200 |
+GROUP_PREFIX="${GANETI_GROUP_PREFIX:-"${USER_PREFIX}"}" |
201 |
+ |
202 |
+DEPEND=" |
203 |
+ dev-libs/openssl:0 |
204 |
+ $(python_gen_cond_dep ' |
205 |
+ dev-python/paramiko[${PYTHON_MULTI_USEDEP}] |
206 |
+ dev-python/pyopenssl[${PYTHON_MULTI_USEDEP}] |
207 |
+ dev-python/simplejson[${PYTHON_MULTI_USEDEP}] |
208 |
+ dev-python/pyparsing[${PYTHON_MULTI_USEDEP}] |
209 |
+ dev-python/pyinotify[${PYTHON_MULTI_USEDEP}] |
210 |
+ dev-python/pycurl[${PYTHON_MULTI_USEDEP}] |
211 |
+ dev-python/ipaddr[${PYTHON_MULTI_USEDEP}] |
212 |
+ dev-python/bitarray[${PYTHON_MULTI_USEDEP}] |
213 |
+ dev-python/docutils[${PYTHON_MULTI_USEDEP}] |
214 |
+ dev-python/fdsend[${PYTHON_MULTI_USEDEP}] |
215 |
+ ') |
216 |
+ || ( |
217 |
+ net-misc/iputils[arping] |
218 |
+ net-analyzer/arping |
219 |
+ ) |
220 |
+ net-analyzer/fping |
221 |
+ net-misc/bridge-utils |
222 |
+ net-misc/curl[ssl] |
223 |
+ net-misc/openssh |
224 |
+ net-misc/socat |
225 |
+ sys-apps/iproute2 |
226 |
+ >=sys-fs/lvm2-2.02.181 |
227 |
+ >=sys-apps/baselayout-2.0 |
228 |
+ >=dev-lang/ghc-8.0:0= |
229 |
+ <dev-lang/ghc-8.1:0= |
230 |
+ dev-haskell/cabal:0= |
231 |
+ dev-haskell/cabal-install:0= |
232 |
+ !<app-emulation/ganeti-instance-image-0.6-r1 |
233 |
+ >=dev-haskell/mtl-2.1.1:0= |
234 |
+ >=dev-haskell/old-time-1.1.0.0:0= |
235 |
+ >=dev-haskell/random-1.0.1.1:0= |
236 |
+ haskell-daemons? ( >=dev-haskell/text-0.11.1.13:0= ) |
237 |
+ >=dev-haskell/transformers-0.3.0.0:0= |
238 |
+ |
239 |
+ >=dev-haskell/attoparsec-0.10.1.1:0= |
240 |
+ <dev-haskell/attoparsec-0.14:0 |
241 |
+ >=dev-haskell/base64-bytestring-1.0.0.1:0= |
242 |
+ <dev-haskell/base64-bytestring-1.1:0= |
243 |
+ >=dev-haskell/crypto-4.2.4:0= |
244 |
+ <dev-haskell/crypto-4.3:0= |
245 |
+ >=dev-haskell/curl-1.3.7:0= |
246 |
+ <dev-haskell/curl-1.4:0= |
247 |
+ >=dev-haskell/hinotify-0.3.2:0= |
248 |
+ <dev-haskell/hinotify-0.4:0= |
249 |
+ >=dev-haskell/hslogger-1.1.4:0= |
250 |
+ <dev-haskell/hslogger-1.3:0= |
251 |
+ >=dev-haskell/json-0.5:0= |
252 |
+ >=dev-haskell/lens-3.10:0= |
253 |
+ >=dev-haskell/lifted-base-0.2.0.3:0= |
254 |
+ <dev-haskell/lifted-base-0.3:0= |
255 |
+ >=dev-haskell/monad-control-1.0.1.0:0= |
256 |
+ <dev-haskell/monad-control-1.0.2:0= |
257 |
+ >=dev-haskell/network-2.3.0.13:0= |
258 |
+ <dev-haskell/network-2.7:0= |
259 |
+ >=dev-haskell/parallel-3.2.0.2:3= |
260 |
+ <dev-haskell/parallel-3.3:3= |
261 |
+ >=dev-haskell/temporary-1.1.2.3:0= |
262 |
+ <dev-haskell/temporary-1.3:0= |
263 |
+ >=dev-haskell/regex-pcre-0.94.2:0= |
264 |
+ <dev-haskell/regex-pcre-0.95:0= |
265 |
+ >=dev-haskell/transformers-base-0.4:0= |
266 |
+ <dev-haskell/transformers-base-0.5:0= |
267 |
+ >=dev-haskell/utf8-string-0.3.7:0= |
268 |
+ >=dev-haskell/zlib-0.5.3.3:0= |
269 |
+ <dev-haskell/zlib-0.7:0= |
270 |
+ |
271 |
+ >=dev-haskell/psqueue-1.1:0= |
272 |
+ <dev-haskell/psqueue-1.2:0= |
273 |
+ >=dev-haskell/snap-core-1.0.1:0= |
274 |
+ <dev-haskell/snap-core-1.1:0= |
275 |
+ >=dev-haskell/snap-server-1.0.1:0= |
276 |
+ <dev-haskell/snap-server-1.1:0= |
277 |
+ >=dev-haskell/case-insensitive-0.4.0.1 |
278 |
+ |
279 |
+ dev-haskell/vector:0= |
280 |
+ xen? ( >=app-emulation/xen-3.0 ) |
281 |
+ kvm? ( |
282 |
+ dev-python/psutil |
283 |
+ app-emulation/qemu |
284 |
+ ) |
285 |
+ lxc? ( app-emulation/lxc ) |
286 |
+ drbd? ( sys-cluster/drbd-utils ) |
287 |
+ rbd? ( sys-cluster/ceph ) |
288 |
+ ipv6? ( net-misc/ndisc6 ) |
289 |
+ ${PYTHON_DEPS}" |
290 |
+RDEPEND="${DEPEND} |
291 |
+ !app-emulation/ganeti-htools" |
292 |
+DEPEND+=" |
293 |
+ sys-devel/m4 |
294 |
+ app-text/pandoc |
295 |
+ $(python_gen_cond_dep ' |
296 |
+ dev-python/sphinx[${PYTHON_MULTI_USEDEP}] |
297 |
+ ') |
298 |
+ media-fonts/urw-fonts |
299 |
+ media-gfx/graphviz |
300 |
+ >=dev-haskell/test-framework-0.6:0= |
301 |
+ <dev-haskell/test-framework-0.9:0= |
302 |
+ >=dev-haskell/test-framework-hunit-0.2.7:0= |
303 |
+ <dev-haskell/test-framework-hunit-0.4:0= |
304 |
+ >=dev-haskell/test-framework-quickcheck2-0.2.12.1:0= |
305 |
+ <dev-haskell/test-framework-quickcheck2-0.4:0= |
306 |
+ test? ( |
307 |
+ dev-python/mock |
308 |
+ dev-python/pyyaml |
309 |
+ dev-haskell/haddock:0= |
310 |
+ >=dev-haskell/hunit-1.2.4.2:0= |
311 |
+ <dev-haskell/hunit-1.3:0= |
312 |
+ >=dev-haskell/quickcheck-2.4.2:2= |
313 |
+ <dev-haskell/quickcheck-2.8.3:2= |
314 |
+ sys-apps/fakeroot |
315 |
+ >=net-misc/socat-1.7 |
316 |
+ dev-util/shelltestrunner |
317 |
+ )" |
318 |
+ |
319 |
+PATCHES+=( |
320 |
+ "${FILESDIR}/${PN}-2.12-start-stop-daemon-args.patch" |
321 |
+ "${FILESDIR}/${PN}-2.11-add-pgrep.patch" |
322 |
+ "${FILESDIR}/${PN}-2.15-daemon-util.patch" |
323 |
+ "${FILESDIR}/${PN}-2.9-disable-root-tests.patch" |
324 |
+ "${FILESDIR}/${PN}-2.9-skip-cli-test.patch" |
325 |
+ "${FILESDIR}/${PN}-2.10-rundir.patch" |
326 |
+ "${FILESDIR}/${PN}-2.12-qemu-enable-kvm.patch" |
327 |
+ "${FILESDIR}/${PN}-2.11-tests.patch" |
328 |
+ "${FILESDIR}/${PN}-lockdir.patch" |
329 |
+ "${FILESDIR}/${PN}-2.11-dont-nest-libdir.patch" |
330 |
+ "${FILESDIR}/${PN}-2.11-dont-print-man-help.patch" |
331 |
+ "${FILESDIR}/${PN}-2.11-daemon-util-tests.patch" |
332 |
+ "${FILESDIR}/${PN}-2.13-process_unittest.patch" |
333 |
+ "${FILESDIR}/${PN}-2.15-python-mock.patch" |
334 |
+ "${FILESDIR}/${PN}-2.15.2-remove-sandbox-failing-tests.patch" |
335 |
+ "${FILESDIR}/${PN}-2.15-noded-must-run-as-root.patch" |
336 |
+ "${FILESDIR}/${PN}-2.15-kvmd-run-as-daemon-user.patch" |
337 |
+ "${FILESDIR}/${PN}-2.15-dont-invert-return-values-for-man-warnings.patch" |
338 |
+ "${FILESDIR}/${PN}-2.15-respect-HFLAGS.patch" |
339 |
+ "${FILESDIR}/ganeti-2.15.2-bdev_py.patch" |
340 |
+ "${FILESDIR}/ganeti-2.15.2-check-man-warnings.patch" |
341 |
+ "${FILESDIR}/ganeti-2.15.2-ftbfs-sphinx-warning.patch" |
342 |
+ "${FILESDIR}/ganeti-2.15.2-pyopenssl.patch" |
343 |
+) |
344 |
+ |
345 |
+S="${WORKDIR}/${MY_P}" |
346 |
+ |
347 |
+QA_WX_LOAD=" |
348 |
+ usr/lib*/${PN}/${SERIES}/usr/sbin/ganeti-*d |
349 |
+ usr/lib*/${PN}/${SERIES}/usr/bin/htools |
350 |
+" |
351 |
+# haskell... |
352 |
+QA_FLAGS_IGNORED=" |
353 |
+ /usr/lib64/ganeti/2.15/usr/sbin/ganeti-metad |
354 |
+ /usr/lib64/ganeti/2.15/usr/sbin/ganeti-wconfd |
355 |
+ /usr/lib64/ganeti/2.15/usr/sbin/ganeti-confd |
356 |
+ /usr/lib64/ganeti/2.15/usr/sbin/ganeti-luxid |
357 |
+ /usr/lib64/ganeti/2.15/usr/sbin/ganeti-kvmd |
358 |
+ /usr/lib64/ganeti/2.15/usr/bin/htools |
359 |
+" |
360 |
+ |
361 |
+pkg_setup() { |
362 |
+ local user |
363 |
+ python-single-r1_pkg_setup |
364 |
+ |
365 |
+ if use multiple-users; then |
366 |
+ for user in gnt-{masterd,confd,luxid,rapi,daemons,admin}; do |
367 |
+ enewgroup ${user} |
368 |
+ enewuser ${user} -1 -1 -1 ${user} |
369 |
+ done |
370 |
+ fi |
371 |
+} |
372 |
+ |
373 |
+src_prepare() { |
374 |
+ local testfile |
375 |
+ if has_version '>=dev-lang/ghc-7.10'; then |
376 |
+ # Breaks the build on 7.8 |
377 |
+ PATCHES+=( |
378 |
+ "${WORKDIR}"/debian/patches/ghc-7.10-compatibility.patch |
379 |
+ ) |
380 |
+ fi |
381 |
+ if use experimental; then |
382 |
+ ewarn "Experimental patches have been applied! RPC between daemons with different patches applied may cause breakage!" |
383 |
+ PATCHES+=( |
384 |
+ # QEMU Agent accepted upstream for 2.16, not yet in a tagged release |
385 |
+ # backport available for 2.15, but refused upstream due to RPC breakage. |
386 |
+ "${FILESDIR}"/0001-kvm-use_guest_agent-QEMU-Guest-Agent-sup.stable-2.15.patch |
387 |
+ ) |
388 |
+ fi |
389 |
+ eapply "${PATCHES[@]}" |
390 |
+ # Upstream commits: |
391 |
+ # 4c3c2ca2a97a69c0287a3d23e064bc17978105eb |
392 |
+ # 24618882737fd7c189adf99f4acc767d48f572c3 |
393 |
+ sed -i \ |
394 |
+ -e '/QuickCheck/s,< 2.8,< 2.8.3,g' \ |
395 |
+ cabal/ganeti.template.cabal |
396 |
+ # Neuter -Werror |
397 |
+ sed -i \ |
398 |
+ -e '/^if DEVELOPER_MODE/,/^endif/s/-Werror//' \ |
399 |
+ Makefile.am |
400 |
+ |
401 |
+ # not sure why these tests are failing |
402 |
+ # should remove this on next version bump if possible |
403 |
+ for testfile in test/py/import-export_unittest.bash; do |
404 |
+ printf '#!/bin/bash\ntrue\n' > "${testfile}" |
405 |
+ done |
406 |
+ |
407 |
+ # take the sledgehammer approach to bug #526270 |
408 |
+ grep -lr '/bin/sh' "${S}" | xargs -r -- sed -i 's:/bin/sh:/bin/bash:g' |
409 |
+ |
410 |
+ sed "s:%LIBDIR%:$(get_libdir):g" "${FILESDIR}/ganeti.initd-r4" \ |
411 |
+ > "${T}/ganeti.initd" |
412 |
+ |
413 |
+ eapply_user |
414 |
+ |
415 |
+ [[ ${PV} =~ [9]{4,} ]] && ./autogen.sh |
416 |
+ rm autotools/missing |
417 |
+ eautoreconf |
418 |
+} |
419 |
+ |
420 |
+src_configure() { |
421 |
+ # this is kind of a hack to work around the removal of the qemu-kvm wrapper |
422 |
+ local kvm_arch |
423 |
+ |
424 |
+ if use amd64; then |
425 |
+ kvm_arch=x86_64 |
426 |
+ elif use x86; then |
427 |
+ kvm_arch=i386 |
428 |
+ elif use kvm; then |
429 |
+ die "Could not determine qemu system to use for kvm" |
430 |
+ fi |
431 |
+ |
432 |
+ econf --localstatedir=/var \ |
433 |
+ --sharedstatedir=/var \ |
434 |
+ --disable-symlinks \ |
435 |
+ --with-ssh-initscript=/etc/init.d/sshd \ |
436 |
+ --with-export-dir=/var/lib/ganeti-storage/export \ |
437 |
+ --with-os-search-path=/usr/share/${PN}/os \ |
438 |
+ $(use_enable restricted-commands) \ |
439 |
+ $(use_enable test haskell-tests) \ |
440 |
+ $(usex multiple-users "--with-default-user=" "" "gnt-daemons" "") \ |
441 |
+ $(usex multiple-users "--with-user-prefix=" "" "${USER_PREFIX}" "") \ |
442 |
+ $(usex multiple-users "--with-default-group=" "" "gnt-daemons" "") \ |
443 |
+ $(usex multiple-users "--with-group-prefix=" "" "${GROUP_PREFIX}" "") \ |
444 |
+ $(use_enable syslog) \ |
445 |
+ $(use_enable monitoring) \ |
446 |
+ $(usex kvm '--with-kvm-path=' '' "/usr/bin/qemu-system-${kvm_arch}" '') \ |
447 |
+ $(usex haskell-daemons "--enable-confd=haskell" '' '' '') \ |
448 |
+ --with-haskell-flags="-optl -Wl,-z,relro -optl -Wl,--as-needed" \ |
449 |
+ --enable-socat-escape \ |
450 |
+ --enable-socat-compress |
451 |
+} |
452 |
+ |
453 |
+src_install() { |
454 |
+ emake V=1 DESTDIR="${D}" install |
455 |
+ |
456 |
+ newinitd "${T}"/ganeti.initd ${PN} |
457 |
+ newconfd "${FILESDIR}"/ganeti.confd-r2 ${PN} |
458 |
+ |
459 |
+ if use kvm; then |
460 |
+ newinitd "${FILESDIR}"/ganeti-kvm-poweroff.initd ganeti-kvm-poweroff |
461 |
+ newconfd "${FILESDIR}"/ganeti-kvm-poweroff.confd ganeti-kvm-poweroff |
462 |
+ fi |
463 |
+ |
464 |
+ # ganeti installs it's own docs in a generic location |
465 |
+ rm -rf "${D}"/{usr/share/doc/${PN},run} |
466 |
+ |
467 |
+ sed -i "s:/usr/$(get_libdir)/${PN}/tools/burnin:burnin:" doc/examples/bash_completion |
468 |
+ newbashcomp doc/examples/bash_completion gnt-instance |
469 |
+ bashcomp_alias gnt-instance burnin ganeti-{cleaner,confd} \ |
470 |
+ h{space,check,scan,info,ail,arep,roller,squeeze,bal} \ |
471 |
+ gnt-{os,job,filter,debug,storage,group,node,network,backup,cluster} |
472 |
+ |
473 |
+ use monitoring && bashcomp_alias gnt-instance mon-collector |
474 |
+ |
475 |
+ dodoc INSTALL UPGRADE NEWS README doc/*.rst |
476 |
+ |
477 |
+ docinto html |
478 |
+ dodoc -r doc/html/* doc/css/*.css |
479 |
+ |
480 |
+ docinto examples |
481 |
+ dodoc doc/examples/{ganeti.cron,gnt-config-backup} doc/examples/*.ocf |
482 |
+ |
483 |
+ docinto examples/hooks |
484 |
+ dodoc doc/examples/hooks/{ipsec,ethers} |
485 |
+ |
486 |
+ insinto /etc/cron.d |
487 |
+ newins doc/examples/ganeti.cron ${PN} |
488 |
+ |
489 |
+ insinto /etc/logrotate.d |
490 |
+ newins doc/examples/ganeti.logrotate ${PN} |
491 |
+ |
492 |
+ # need to dodir rather than keepdir here (bug #552482) |
493 |
+ dodir /var/lib/${PN} |
494 |
+ |
495 |
+ keepdir /var/log/${PN}/ |
496 |
+ keepdir /usr/share/${PN}/${SERIES}/os/ |
497 |
+ keepdir /var/lib/ganeti-storage/{export,file,shared}/ |
498 |
+ |
499 |
+ dosym ${SERIES} "/usr/share/${PN}/default" |
500 |
+ dosym ${SERIES} "/usr/$(get_libdir)/${PN}/default" |
501 |
+ |
502 |
+ python_fix_shebang "${ED}" "${D}"/usr/"$(get_libdir)"/${PN}/${SERIES} |
503 |
+} |
504 |
+ |
505 |
+pkg_postinst() { |
506 |
+ if use multiple-users; then |
507 |
+ elog "You have enable multiple user support, the users for this must" |
508 |
+ elog "be created. You can use the provided tool for this, which is" |
509 |
+ elog "located at:" |
510 |
+ elog " /usr/$(get_libdir)/${PN}/tools/users-setup" |
511 |
+ fi |
512 |
+} |
513 |
+ |
514 |
+src_test() { |
515 |
+ PATH="${S}/scripts:${S}/src:${PATH}" \ |
516 |
+ TMPDIR="/tmp" \ |
517 |
+ GANETI_MASTER="$(hostname -f)" \ |
518 |
+ emake check |
519 |
+} |