projects/guix·blob javascript-team · refs

482 lines · 17.5 KiB

1Patch from NixOS:
2
3 https://github.com/NixOS/nixpkgs/blob/master/pkgs/by-name/li/libvirt/0001-meson-patch-in-an-install-prefix-for-building-on-nix.patch
4
5From 58c07f1d59ef683faf8b747e40bd75401306acf4 Mon Sep 17 00:00:00 2001
6From: Euan Kemp <[email protected]>
7Date: Mon, 24 Jun 2024 15:59:48 +0200
8Subject: [PATCH] meson: patch in an install prefix for building on nix
9
10Used in the nixpkgs version of libvirt so that we can install things in
11the nix store, but read them from the root filesystem.
12---
13 meson.build | 9 +++++++
14 meson_options.txt | 2 ++
15 src/ch/meson.build | 6 ++---
16 src/interface/meson.build | 2 +-
17 src/libxl/meson.build | 18 +++++++-------
18 src/locking/meson.build | 8 +++----
19 src/lxc/meson.build | 10 ++++----
20 src/meson.build | 18 +++++++-------
21 src/network/meson.build | 14 +++++------
22 src/node_device/meson.build | 2 +-
23 src/nwfilter/meson.build | 6 ++---
24 src/nwfilter/xml/meson.build | 2 +-
25 src/qemu/meson.build | 40 +++++++++++++++----------------
26 src/remote/meson.build | 10 ++++----
27 src/secret/meson.build | 4 ++--
28 src/security/apparmor/meson.build | 8 +++----
29 src/storage/meson.build | 6 ++---
30 tools/meson.build | 2 +-
31 tools/ssh-proxy/meson.build | 2 +-
32 19 files changed, 90 insertions(+), 79 deletions(-)
33
34diff --git a/meson.build b/meson.build
35index e98ab0d5ac..376f241c07 100644
36--- a/meson.build
37+++ b/meson.build
38@@ -47,6 +47,8 @@ if host_machine.system() == 'windows'
39 conf.set('WINVER', '0x0600') # Win Vista / Server 2008
40 endif
41
42+# patched in for nix
43+install_prefix = get_option('install_prefix')
44
45 # set various paths
46
47@@ -65,6 +67,13 @@ else
48 sysconfdir = prefix / get_option('sysconfdir')
49 endif
50
51+# nix: don't prefix the localstatedir; some things need to write to it, so it
52+# can't be in the nix store, and that's what the prefix is.
53+# We'll prefix things ourselves where needed
54+localstatedir = get_option('localstatedir')
55+# Same for sysconfidr
56+sysconfdir = get_option('sysconfdir')
57+
58 # if --prefix is /usr, don't use /usr/var for localstatedir or /usr/etc for
59 # sysconfdir as this makes a lot of things break in testing situations
60 if prefix == '/usr'
61diff --git a/meson_options.txt b/meson_options.txt
62index cdc8687795..c2b6da140c 100644
63--- a/meson_options.txt
64+++ b/meson_options.txt
65@@ -1,3 +1,5 @@
66+option('install_prefix', type: 'string', value: '', description: 'prefix for nix store installation')
67+
68 option('no_git', type: 'boolean', value: false, description: 'Disable git submodule update')
69 option('packager', type: 'string', value: '', description: 'Extra packager name')
70 option('packager_version', type: 'string', value: '', description: 'Extra packager version')
71diff --git a/src/ch/meson.build b/src/ch/meson.build
72index 633966aac7..c0ce823345 100644
73--- a/src/ch/meson.build
74+++ b/src/ch/meson.build
75@@ -74,8 +74,8 @@ if conf.has('WITH_CH')
76 }
77
78 virt_install_dirs += [
79- localstatedir / 'lib' / 'libvirt' / 'ch',
80- localstatedir / 'log' / 'libvirt' / 'ch',
81- runstatedir / 'libvirt' / 'ch',
82+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'ch',
83+ install_prefix + localstatedir / 'log' / 'libvirt' / 'ch',
84+ install_prefix + runstatedir / 'libvirt' / 'ch',
85 ]
86 endif
87diff --git a/src/interface/meson.build b/src/interface/meson.build
88index 3d2991315e..20f3266738 100644
89--- a/src/interface/meson.build
90+++ b/src/interface/meson.build
91@@ -59,6 +59,6 @@ if conf.has('WITH_INTERFACE')
92 }
93
94 virt_install_dirs += [
95- runstatedir / 'libvirt' / 'interface',
96+ install_prefix + runstatedir / 'libvirt' / 'interface',
97 ]
98 endif
99diff --git a/src/libxl/meson.build b/src/libxl/meson.build
100index e75a8f2fdb..d1800b4ea5 100644
101--- a/src/libxl/meson.build
102+++ b/src/libxl/meson.build
103@@ -81,14 +81,14 @@ if conf.has('WITH_LIBXL')
104 }
105
106 virt_install_dirs += [
107- confdir / 'libxl',
108- confdir / 'libxl' / 'autostart',
109- localstatedir / 'lib' / 'libvirt' / 'libxl',
110- localstatedir / 'lib' / 'libvirt' / 'libxl' / 'channel',
111- localstatedir / 'lib' / 'libvirt' / 'libxl' / 'channel' / 'target',
112- localstatedir / 'lib' / 'libvirt' / 'libxl' / 'dump',
113- localstatedir / 'lib' / 'libvirt' / 'libxl' / 'save',
114- localstatedir / 'log' / 'libvirt' / 'libxl',
115- runstatedir / 'libvirt' / 'libxl',
116+ install_prefix + confdir / 'libxl',
117+ install_prefix + confdir / 'libxl' / 'autostart',
118+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'libxl',
119+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'libxl' / 'channel',
120+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'libxl' / 'channel' / 'target',
121+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'libxl' / 'dump',
122+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'libxl' / 'save',
123+ install_prefix + localstatedir / 'log' / 'libvirt' / 'libxl',
124+ install_prefix + runstatedir / 'libvirt' / 'libxl',
125 ]
126 endif
127diff --git a/src/locking/meson.build b/src/locking/meson.build
128index c3dfcf2961..cdc1442775 100644
129--- a/src/locking/meson.build
130+++ b/src/locking/meson.build
131@@ -249,14 +249,14 @@ if conf.has('WITH_LIBVIRTD')
132 }
133
134 virt_install_dirs += [
135- localstatedir / 'lib' / 'libvirt' / 'lockd',
136- localstatedir / 'lib' / 'libvirt' / 'lockd' / 'files',
137- runstatedir / 'libvirt' / 'lockd',
138+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'lockd',
139+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'lockd' / 'files',
140+ install_prefix + runstatedir / 'libvirt' / 'lockd',
141 ]
142
143 if conf.has('WITH_SANLOCK')
144 virt_install_dirs += [
145- localstatedir / 'lib' / 'libvirt' / 'sanlock',
146+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'sanlock',
147 ]
148 endif
149 endif
150diff --git a/src/lxc/meson.build b/src/lxc/meson.build
151index bf9afabc0f..6e9547000a 100644
152--- a/src/lxc/meson.build
153+++ b/src/lxc/meson.build
154@@ -190,10 +190,10 @@ if conf.has('WITH_LXC')
155 }
156
157 virt_install_dirs += [
158- confdir / 'lxc',
159- confdir / 'lxc' / 'autostart',
160- localstatedir / 'lib' / 'libvirt' / 'lxc',
161- localstatedir / 'log' / 'libvirt' / 'lxc',
162- runstatedir / 'libvirt' / 'lxc',
163+ install_prefix + confdir / 'lxc',
164+ install_prefix + confdir / 'lxc' / 'autostart',
165+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'lxc',
166+ install_prefix + localstatedir / 'log' / 'libvirt' / 'lxc',
167+ install_prefix + runstatedir / 'libvirt' / 'lxc',
168 ]
169 endif
170diff --git a/src/meson.build b/src/meson.build
171index dd2682ec19..b330d1159e 100644
172--- a/src/meson.build
173+++ b/src/meson.build
174@@ -220,7 +220,7 @@ openrc_init_files = []
175
176 # virt_install_dirs:
177 # list of directories to create during installation
178-virt_install_dirs = [ confdir ]
179+virt_install_dirs = [ install_prefix + confdir ]
180
181 # driver_source_files:
182 # driver source files to check
183@@ -697,7 +697,7 @@ endforeach
184
185 virt_conf_files += 'libvirt.conf'
186
187-install_data(virt_conf_files, install_dir: confdir)
188+install_data(virt_conf_files, install_dir: install_prefix + confdir)
189 install_data(virt_aug_files, install_dir: virt_aug_dir)
190
191 # augeas_test_data:
192@@ -760,7 +760,7 @@ foreach data : virt_daemon_confs
193 output: '@[email protected]'.format(data['name']),
194 configuration: daemon_conf,
195 install: true,
196- install_dir: confdir,
197+ install_dir: install_prefix + confdir,
198 )
199
200 if data.get('with_ip', false)
201@@ -910,7 +910,7 @@ if conf.has('WITH_LIBVIRTD')
202
203 install_data(
204 init_file,
205- install_dir: sysconfdir / 'init.d',
206+ install_dir: install_prefix + sysconfdir / 'init.d',
207 install_mode: 'rwxr-xr-x',
208 rename: [ init['name'] ],
209 )
210@@ -918,7 +918,7 @@ if conf.has('WITH_LIBVIRTD')
211 if init.has_key('confd')
212 install_data(
213 init['confd'],
214- install_dir: sysconfdir / 'conf.d',
215+ install_dir: install_prefix + sysconfdir / 'conf.d',
216 rename: [ init['name'] ],
217 )
218 endif
219@@ -945,10 +945,10 @@ endif
220 # Install empty directories
221
222 virt_install_dirs += [
223- localstatedir / 'cache' / 'libvirt',
224- localstatedir / 'lib' / 'libvirt' / 'images',
225- localstatedir / 'lib' / 'libvirt' / 'filesystems',
226- localstatedir / 'lib' / 'libvirt' / 'boot',
227+ install_prefix + localstatedir / 'cache' / 'libvirt',
228+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'images',
229+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'filesystems',
230+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'boot',
231 ]
232
233 meson.add_install_script(
234diff --git a/src/network/meson.build b/src/network/meson.build
235index 07cd5cda55..699309bb66 100644
236--- a/src/network/meson.build
237+++ b/src/network/meson.build
238@@ -115,11 +115,11 @@ if conf.has('WITH_NETWORK')
239 }
240
241 virt_install_dirs += [
242- confdir / 'qemu' / 'networks',
243- confdir / 'qemu' / 'networks' / 'autostart',
244- localstatedir / 'lib' / 'libvirt' / 'network',
245- localstatedir / 'lib' / 'libvirt' / 'dnsmasq',
246- runstatedir / 'libvirt' / 'network',
247+ install_prefix + confdir / 'qemu' / 'networks',
248+ install_prefix + confdir / 'qemu' / 'networks' / 'autostart',
249+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'network',
250+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'dnsmasq',
251+ install_prefix + runstatedir / 'libvirt' / 'network',
252 ]
253
254 configure_file(
255@@ -127,12 +127,12 @@ if conf.has('WITH_NETWORK')
256 output: '@BASENAME@',
257 configuration: configmake_conf,
258 install: true,
259- install_dir: confdir / 'qemu' / 'networks',
260+ install_dir: install_prefix + confdir / 'qemu' / 'networks',
261 )
262
263 meson.add_install_script(
264 meson_python_prog.full_path(), python3_prog.full_path(), meson_install_symlink_prog.full_path(),
265- confdir / 'qemu' / 'networks' / 'autostart',
266+ install_prefix + confdir / 'qemu' / 'networks' / 'autostart',
267 '../default.xml', 'default.xml',
268 )
269
270diff --git a/src/node_device/meson.build b/src/node_device/meson.build
271index d66c02a0e2..f883b65431 100644
272--- a/src/node_device/meson.build
273+++ b/src/node_device/meson.build
274@@ -67,6 +67,6 @@ if conf.has('WITH_NODE_DEVICES')
275 }
276
277 virt_install_dirs += [
278- runstatedir / 'libvirt' / 'nodedev',
279+ install_prefix + runstatedir / 'libvirt' / 'nodedev',
280 ]
281 endif
282diff --git a/src/nwfilter/meson.build b/src/nwfilter/meson.build
283index de3d202267..346c435ee7 100644
284--- a/src/nwfilter/meson.build
285+++ b/src/nwfilter/meson.build
286@@ -65,9 +65,9 @@ if conf.has('WITH_NWFILTER')
287 }
288
289 virt_install_dirs += [
290- confdir / 'nwfilter',
291- runstatedir / 'libvirt' / 'nwfilter-binding',
292- runstatedir / 'libvirt' / 'nwfilter',
293+ install_prefix + confdir / 'nwfilter',
294+ install_prefix + runstatedir / 'libvirt' / 'nwfilter-binding',
295+ install_prefix + runstatedir / 'libvirt' / 'nwfilter',
296 ]
297
298 subdir('xml')
299diff --git a/src/nwfilter/xml/meson.build b/src/nwfilter/xml/meson.build
300index 0d96c54ebe..66c92a1016 100644
301--- a/src/nwfilter/xml/meson.build
302+++ b/src/nwfilter/xml/meson.build
303@@ -25,4 +25,4 @@ nwfilter_xml_files = [
304 'qemu-announce-self.xml',
305 ]
306
307-install_data(nwfilter_xml_files, install_dir: sysconfdir / 'libvirt' / 'nwfilter')
308+install_data(nwfilter_xml_files, install_dir: install_prefix + sysconfdir / 'libvirt' / 'nwfilter')
309diff --git a/src/qemu/meson.build b/src/qemu/meson.build
310index 907893d431..99b62c8955 100644
311--- a/src/qemu/meson.build
312+++ b/src/qemu/meson.build
313@@ -218,25 +218,25 @@ if conf.has('WITH_QEMU')
314 endif
315
316 virt_install_dirs += [
317- confdir / 'qemu',
318- confdir / 'qemu' / 'autostart',
319- localstatedir / 'cache' / 'libvirt' / 'qemu',
320- localstatedir / 'lib' / 'libvirt' / 'qemu',
321- localstatedir / 'lib' / 'libvirt' / 'qemu' / 'channel',
322- localstatedir / 'lib' / 'libvirt' / 'qemu' / 'channel' / 'target',
323- localstatedir / 'lib' / 'libvirt' / 'qemu' / 'checkpoint',
324- localstatedir / 'lib' / 'libvirt' / 'qemu' / 'dump',
325- localstatedir / 'lib' / 'libvirt' / 'qemu' / 'nvram',
326- localstatedir / 'lib' / 'libvirt' / 'qemu' / 'ram',
327- localstatedir / 'lib' / 'libvirt' / 'qemu' / 'save',
328- localstatedir / 'lib' / 'libvirt' / 'qemu' / 'snapshot',
329- localstatedir / 'lib' / 'libvirt' / 'swtpm',
330- localstatedir / 'log' / 'libvirt' / 'qemu',
331- localstatedir / 'log' / 'swtpm' / 'libvirt' / 'qemu',
332- runstatedir / 'libvirt' / 'qemu',
333- runstatedir / 'libvirt' / 'qemu' / 'dbus',
334- runstatedir / 'libvirt' / 'qemu' / 'passt',
335- runstatedir / 'libvirt' / 'qemu' / 'slirp',
336- runstatedir / 'libvirt' / 'qemu' / 'swtpm',
337+ install_prefix + confdir / 'qemu',
338+ install_prefix + confdir / 'qemu' / 'autostart',
339+ install_prefix + localstatedir / 'cache' / 'libvirt' / 'qemu',
340+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu',
341+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu' / 'channel',
342+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu' / 'channel' / 'target',
343+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu' / 'checkpoint',
344+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu' / 'dump',
345+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu' / 'nvram',
346+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu' / 'ram',
347+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu' / 'save',
348+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu' / 'snapshot',
349+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'swtpm',
350+ install_prefix + localstatedir / 'log' / 'libvirt' / 'qemu',
351+ install_prefix + localstatedir / 'log' / 'swtpm' / 'libvirt' / 'qemu',
352+ install_prefix + runstatedir / 'libvirt' / 'qemu',
353+ install_prefix + runstatedir / 'libvirt' / 'qemu' / 'dbus',
354+ install_prefix + runstatedir / 'libvirt' / 'qemu' / 'passt',
355+ install_prefix + runstatedir / 'libvirt' / 'qemu' / 'slirp',
356+ install_prefix + runstatedir / 'libvirt' / 'qemu' / 'swtpm',
357 ]
358 endif
359diff --git a/src/remote/meson.build b/src/remote/meson.build
360index 831acaaa01..0ba34d3bad 100644
361--- a/src/remote/meson.build
362+++ b/src/remote/meson.build
363@@ -261,9 +261,9 @@ if conf.has('WITH_REMOTE')
364 }
365
366 virt_install_dirs += [
367- localstatedir / 'log' / 'libvirt',
368- runstatedir / 'libvirt',
369- runstatedir / 'libvirt' / 'common',
370+ install_prefix + localstatedir / 'log' / 'libvirt',
371+ install_prefix + runstatedir / 'libvirt',
372+ install_prefix + runstatedir / 'libvirt' / 'common',
373 ]
374
375 logrotate_conf = configuration_data({
376@@ -278,7 +278,7 @@ if conf.has('WITH_REMOTE')
377 )
378 install_data(
379 log_file,
380- install_dir: sysconfdir / 'logrotate.d',
381+ install_dir: install_prefix + sysconfdir / 'logrotate.d',
382 rename: [ name ],
383 )
384 endforeach
385@@ -328,7 +328,7 @@ endif
386 if conf.has('WITH_SASL')
387 install_data(
388 'libvirtd.sasl',
389- install_dir: sysconfdir / 'sasl2',
390+ install_dir: install_prefix + sysconfdir / 'sasl2',
391 rename: [ 'libvirt.conf' ],
392 )
393 endif
394diff --git a/src/secret/meson.build b/src/secret/meson.build
395index 3b859ea7b4..ccddb3e805 100644
396--- a/src/secret/meson.build
397+++ b/src/secret/meson.build
398@@ -48,7 +48,7 @@ if conf.has('WITH_SECRETS')
399 }
400
401 virt_install_dirs += [
402- confdir / 'secrets',
403- runstatedir / 'libvirt' / 'secrets',
404+ install_prefix + confdir / 'secrets',
405+ install_prefix + runstatedir / 'libvirt' / 'secrets',
406 ]
407 endif
408diff --git a/src/security/apparmor/meson.build b/src/security/apparmor/meson.build
409index 09d9fac02c..ee0c74ceec 100644
410--- a/src/security/apparmor/meson.build
411+++ b/src/security/apparmor/meson.build
412@@ -20,16 +20,16 @@ foreach name : apparmor_gen_profiles
413 output: name,
414 configuration: apparmor_gen_profiles_conf,
415 install: true,
416- install_dir: apparmor_dir,
417+ install_dir: install_prefix + apparmor_dir,
418 )
419 endforeach
420
421 install_data(
422 [ 'libvirt-qemu', 'libvirt-lxc' ],
423- install_dir: apparmor_dir / 'abstractions',
424+ install_dir: install_prefix + apparmor_dir / 'abstractions',
425 )
426
427 install_data(
428 [ 'TEMPLATE.qemu', 'TEMPLATE.lxc' ],
429- install_dir: apparmor_dir / 'libvirt',
430+ install_dir: install_prefix + apparmor_dir / 'libvirt',
431 )
432diff --git a/src/storage/meson.build b/src/storage/meson.build
433index 404d6a6941..fb4e67a0a8 100644
434--- a/src/storage/meson.build
435+++ b/src/storage/meson.build
436@@ -126,9 +126,9 @@ if conf.has('WITH_STORAGE')
437 }
438
439 virt_install_dirs += [
440- confdir / 'storage',
441- confdir / 'storage' / 'autostart',
442- runstatedir / 'libvirt' / 'storage',
443+ install_prefix + confdir / 'storage',
444+ install_prefix + confdir / 'storage' / 'autostart',
445+ install_prefix + runstatedir / 'libvirt' / 'storage',
446 ]
447 endif
448
449diff --git a/tools/meson.build b/tools/meson.build
450index a099148d3c..d0d6510f17 100644
451--- a/tools/meson.build
452+++ b/tools/meson.build
453@@ -123,12 +123,12 @@ if conf.has('WITH_LOGIN_SHELL')
454 install_rpath: libvirt_rpath,
455 )
456
457- install_data('virt-login-shell.conf', install_dir: sysconfdir / 'libvirt')
458+ install_data('virt-login-shell.conf', install_dir: install_prefix + sysconfdir / 'libvirt')
459
460 # Install the sysuser config for the setgid binary
461 install_data(
462 'libvirt-login-shell.sysusers.conf',
463- install_dir: sysusersdir,
464+ install_dir: install_prefix + sysusersdir,
465 rename: [ 'libvirt-login-shell.conf' ],
466 )
467 endif
468
469diff --git a/tools/ssh-proxy/meson.build b/tools/ssh-proxy/meson.build
470index e9f312fa25..95d5d8fe0b 100644
471--- a/tools/ssh-proxy/meson.build
472+++ b/tools/ssh-proxy/meson.build
473@@ -20,6 +20,6 @@ if conf.has('WITH_SSH_PROXY')
474 output: '@BASENAME@',
475 configuration: tools_conf,
476 install: true,
477- install_dir : sshconfdir,
478+ install_dir : install_prefix + sshconfdir,
479 )
480 endif
481--
4822.45.1