5ecaaf1ba8
The previous commit updates to a newer libvirt with a newer build setup. This commit carries forward that work into a mergeable state. Based on the suggestion in https://github.com/NixOS/nixpkgs/pull/103309#issuecomment-724958608, I did a fwupd-like patch for the various meson.build files.
340 lines
12 KiB
Diff
340 lines
12 KiB
Diff
From a896b0be849455edb83a9305dfec9b41447ef3e4 Mon Sep 17 00:00:00 2001
|
|
From: Euan Kemp <euank@euank.com>
|
|
Date: Thu, 14 Jan 2021 00:32:00 -0800
|
|
Subject: [PATCH] meson: patch in an install prefix for building on nix
|
|
|
|
Used in the nixpkgs version of libvirt so that we can install things in
|
|
the nix store, but read them from the root filesystem.
|
|
---
|
|
meson.build | 9 +++++++++
|
|
meson_options.txt | 2 ++
|
|
src/libxl/meson.build | 6 +++---
|
|
src/locking/meson.build | 8 ++++----
|
|
src/lxc/meson.build | 6 +++---
|
|
src/meson.build | 18 +++++++++---------
|
|
src/network/meson.build | 12 ++++++------
|
|
src/nwfilter/xml/meson.build | 2 +-
|
|
src/qemu/meson.build | 14 +++++++-------
|
|
src/remote/meson.build | 6 +++---
|
|
src/security/apparmor/meson.build | 8 ++++----
|
|
tools/meson.build | 4 ++--
|
|
12 files changed, 53 insertions(+), 42 deletions(-)
|
|
|
|
diff --git a/meson.build b/meson.build
|
|
index 2e57a435df..4a72902a63 100644
|
|
--- a/meson.build
|
|
+++ b/meson.build
|
|
@@ -39,6 +39,8 @@ if host_machine.system() == 'windows'
|
|
conf.set('WINVER', '0x0600') # Win Vista / Server 2008
|
|
endif
|
|
|
|
+# patched in for nix
|
|
+install_prefix = get_option('install_prefix')
|
|
|
|
# set various paths
|
|
|
|
@@ -57,6 +59,13 @@ else
|
|
sysconfdir = prefix / get_option('sysconfdir')
|
|
endif
|
|
|
|
+# nix: don't prefix the localstatedir; some things need to write to it, so it
|
|
+# can't be in the nix store, and that's what the prefix is.
|
|
+# We'll prefix things ourselves where needed
|
|
+localstatedir = get_option('localstatedir')
|
|
+# Same for sysconfidr
|
|
+sysconfdir = get_option('sysconfdir')
|
|
+
|
|
# if --prefix is /usr, don't use /usr/var for localstatedir or /usr/etc for
|
|
# sysconfdir as this makes a lot of things break in testing situations
|
|
if prefix == '/usr'
|
|
diff --git a/meson_options.txt b/meson_options.txt
|
|
index 74de064384..0a21eb845e 100644
|
|
--- a/meson_options.txt
|
|
+++ b/meson_options.txt
|
|
@@ -1,3 +1,5 @@
|
|
+option('install_prefix', type: 'string', value: '', description: 'prefix for nix store installation')
|
|
+
|
|
option('no_git', type: 'boolean', value: false, description: 'Disable git submodule update')
|
|
option('packager', type: 'string', value: '', description: 'Extra packager name')
|
|
option('packager_version', type: 'string', value: '', description: 'Extra packager version')
|
|
diff --git a/src/libxl/meson.build b/src/libxl/meson.build
|
|
index 3bb6cc5f2e..78d7be0ace 100644
|
|
--- a/src/libxl/meson.build
|
|
+++ b/src/libxl/meson.build
|
|
@@ -84,8 +84,8 @@ if conf.has('WITH_LIBXL')
|
|
}
|
|
|
|
virt_install_dirs += [
|
|
- localstatedir / 'lib' / 'libvirt' / 'libxl',
|
|
- runstatedir / 'libvirt' / 'libxl',
|
|
- localstatedir / 'log' / 'libvirt' / 'libxl',
|
|
+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'libxl',
|
|
+ install_prefix + runstatedir / 'libvirt' / 'libxl',
|
|
+ install_prefix + localstatedir / 'log' / 'libvirt' / 'libxl',
|
|
]
|
|
endif
|
|
diff --git a/src/locking/meson.build b/src/locking/meson.build
|
|
index 8a28310e40..9da81cc574 100644
|
|
--- a/src/locking/meson.build
|
|
+++ b/src/locking/meson.build
|
|
@@ -243,14 +243,14 @@ if conf.has('WITH_LIBVIRTD')
|
|
}
|
|
|
|
virt_install_dirs += [
|
|
- localstatedir / 'lib' / 'libvirt' / 'lockd',
|
|
- localstatedir / 'lib' / 'libvirt' / 'lockd' / 'files',
|
|
- runstatedir / 'libvirt' / 'lockd',
|
|
+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'lockd',
|
|
+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'lockd' / 'files',
|
|
+ install_prefix + runstatedir / 'libvirt' / 'lockd',
|
|
]
|
|
|
|
if conf.has('WITH_SANLOCK')
|
|
virt_install_dirs += [
|
|
- localstatedir / 'lib' / 'libvirt' / 'sanlock',
|
|
+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'sanlock',
|
|
]
|
|
endif
|
|
endif
|
|
diff --git a/src/lxc/meson.build b/src/lxc/meson.build
|
|
index f8e2a8852a..96d6687c5d 100644
|
|
--- a/src/lxc/meson.build
|
|
+++ b/src/lxc/meson.build
|
|
@@ -182,8 +182,8 @@ if conf.has('WITH_LXC')
|
|
}
|
|
|
|
virt_install_dirs += [
|
|
- localstatedir / 'lib' / 'libvirt' / 'lxc',
|
|
- runstatedir / 'libvirt' / 'lxc',
|
|
- localstatedir / 'log' / 'libvirt' / 'lxc',
|
|
+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'lxc',
|
|
+ install_prefix + runstatedir / 'libvirt' / 'lxc',
|
|
+ install_prefix + localstatedir / 'log' / 'libvirt' / 'lxc',
|
|
]
|
|
endif
|
|
diff --git a/src/meson.build b/src/meson.build
|
|
index 29c8210ab2..bc960e0b69 100644
|
|
--- a/src/meson.build
|
|
+++ b/src/meson.build
|
|
@@ -669,7 +669,7 @@ endforeach
|
|
|
|
virt_conf_files += 'libvirt.conf'
|
|
|
|
-install_data(virt_conf_files, install_dir: confdir)
|
|
+install_data(virt_conf_files, install_dir: install_prefix + confdir)
|
|
install_data(virt_aug_files, install_dir: virt_aug_dir)
|
|
|
|
# augeas_test_data:
|
|
@@ -729,7 +729,7 @@ foreach data : virt_daemon_confs
|
|
output: '@0@.conf'.format(data['name']),
|
|
configuration: daemon_conf,
|
|
install: true,
|
|
- install_dir: confdir,
|
|
+ install_dir: install_prefix + confdir,
|
|
)
|
|
|
|
if data.get('with_ip', false)
|
|
@@ -853,14 +853,14 @@ if conf.has('WITH_LIBVIRTD')
|
|
|
|
install_data(
|
|
init_file,
|
|
- install_dir: sysconfdir / 'init.d',
|
|
+ install_dir: install_prefix + sysconfdir / 'init.d',
|
|
rename: [ init['name'] ],
|
|
)
|
|
|
|
if init.has_key('confd')
|
|
install_data(
|
|
init['confd'],
|
|
- install_dir: sysconfdir / 'conf.d',
|
|
+ install_dir: install_prefix + sysconfdir / 'conf.d',
|
|
rename: [ init['name'] ],
|
|
)
|
|
endif
|
|
@@ -872,7 +872,7 @@ if init_script != 'none'
|
|
foreach sysconf : sysconf_files
|
|
install_data(
|
|
sysconf['file'],
|
|
- install_dir: sysconfdir / 'sysconfig',
|
|
+ install_dir: install_prefix + sysconfdir / 'sysconfig',
|
|
rename: [ sysconf['name'] ],
|
|
)
|
|
endforeach
|
|
@@ -897,10 +897,10 @@ endif
|
|
# Install empty directories
|
|
|
|
virt_install_dirs += [
|
|
- localstatedir / 'cache' / 'libvirt',
|
|
- localstatedir / 'lib' / 'libvirt' / 'images',
|
|
- localstatedir / 'lib' / 'libvirt' / 'filesystems',
|
|
- localstatedir / 'lib' / 'libvirt' / 'boot',
|
|
+ install_prefix + localstatedir / 'cache' / 'libvirt',
|
|
+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'images',
|
|
+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'filesystems',
|
|
+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'boot',
|
|
]
|
|
|
|
meson.add_install_script(
|
|
diff --git a/src/network/meson.build b/src/network/meson.build
|
|
index 13dd2c26b2..1be020081f 100644
|
|
--- a/src/network/meson.build
|
|
+++ b/src/network/meson.build
|
|
@@ -79,9 +79,9 @@ if conf.has('WITH_NETWORK')
|
|
}
|
|
|
|
virt_install_dirs += [
|
|
- localstatedir / 'lib' / 'libvirt' / 'network',
|
|
- localstatedir / 'lib' / 'libvirt' / 'dnsmasq',
|
|
- runstatedir / 'libvirt' / 'network',
|
|
+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'network',
|
|
+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'dnsmasq',
|
|
+ install_prefix + runstatedir / 'libvirt' / 'network',
|
|
]
|
|
|
|
uuidgen_prog = find_program('uuidgen', required: false)
|
|
@@ -98,7 +98,7 @@ if conf.has('WITH_NETWORK')
|
|
],
|
|
capture: true,
|
|
install: true,
|
|
- install_dir: confdir / 'qemu' / 'networks',
|
|
+ install_dir: install_prefix + confdir / 'qemu' / 'networks',
|
|
)
|
|
else
|
|
configure_file(
|
|
@@ -106,13 +106,13 @@ if conf.has('WITH_NETWORK')
|
|
output: '@BASENAME@',
|
|
copy: true,
|
|
install: true,
|
|
- install_dir: confdir / 'qemu' / 'networks',
|
|
+ install_dir: install_prefix + confdir / 'qemu' / 'networks',
|
|
)
|
|
endif
|
|
|
|
meson.add_install_script(
|
|
meson_python_prog.path(), python3_prog.path(), meson_install_symlink_prog.path(),
|
|
- confdir / 'qemu' / 'networks' / 'autostart',
|
|
+ install_prefix + confdir / 'qemu' / 'networks' / 'autostart',
|
|
'../default.xml', 'default.xml',
|
|
)
|
|
|
|
diff --git a/src/nwfilter/xml/meson.build b/src/nwfilter/xml/meson.build
|
|
index 95af75bb15..7fe99076f4 100644
|
|
--- a/src/nwfilter/xml/meson.build
|
|
+++ b/src/nwfilter/xml/meson.build
|
|
@@ -19,4 +19,4 @@ nwfilter_xml_files = [
|
|
'qemu-announce-self.xml',
|
|
]
|
|
|
|
-install_data(nwfilter_xml_files, install_dir: sysconfdir / 'libvirt' / 'nwfilter')
|
|
+install_data(nwfilter_xml_files, install_dir: install_prefix + sysconfdir / 'libvirt' / 'nwfilter')
|
|
diff --git a/src/qemu/meson.build b/src/qemu/meson.build
|
|
index 4e599d1e69..ba558d78f8 100644
|
|
--- a/src/qemu/meson.build
|
|
+++ b/src/qemu/meson.build
|
|
@@ -171,12 +171,12 @@ if conf.has('WITH_QEMU')
|
|
}
|
|
|
|
virt_install_dirs += [
|
|
- localstatedir / 'lib' / 'libvirt' / 'qemu',
|
|
- runstatedir / 'libvirt' / 'qemu',
|
|
- localstatedir / 'cache' / 'libvirt' / 'qemu',
|
|
- localstatedir / 'log' / 'libvirt' / 'qemu',
|
|
- localstatedir / 'lib' / 'libvirt' / 'swtpm',
|
|
- runstatedir / 'libvirt' / 'qemu' / 'swtpm',
|
|
- localstatedir / 'log' / 'swtpm' / 'libvirt' / 'qemu',
|
|
+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'qemu',
|
|
+ install_prefix + runstatedir / 'libvirt' / 'qemu',
|
|
+ install_prefix + localstatedir / 'cache' / 'libvirt' / 'qemu',
|
|
+ install_prefix + localstatedir / 'log' / 'libvirt' / 'qemu',
|
|
+ install_prefix + localstatedir / 'lib' / 'libvirt' / 'swtpm',
|
|
+ install_prefix + runstatedir / 'libvirt' / 'qemu' / 'swtpm',
|
|
+ install_prefix + localstatedir / 'log' / 'swtpm' / 'libvirt' / 'qemu',
|
|
]
|
|
endif
|
|
diff --git a/src/remote/meson.build b/src/remote/meson.build
|
|
index 9ad2f6ab1c..429a15b326 100644
|
|
--- a/src/remote/meson.build
|
|
+++ b/src/remote/meson.build
|
|
@@ -245,7 +245,7 @@ if conf.has('WITH_REMOTE')
|
|
}
|
|
|
|
virt_install_dirs += [
|
|
- localstatedir / 'log' / 'libvirt',
|
|
+ install_prefix + localstatedir / 'log' / 'libvirt',
|
|
]
|
|
|
|
logrotate_conf = configuration_data()
|
|
@@ -259,7 +259,7 @@ if conf.has('WITH_REMOTE')
|
|
)
|
|
install_data(
|
|
log_file,
|
|
- install_dir: sysconfdir / 'logrotate.d',
|
|
+ install_dir: install_prefix + sysconfdir / 'logrotate.d',
|
|
rename: [ name ],
|
|
)
|
|
endforeach
|
|
@@ -309,7 +309,7 @@ endif
|
|
if conf.has('WITH_SASL')
|
|
install_data(
|
|
'libvirtd.sasl',
|
|
- install_dir: sysconfdir / 'sasl2',
|
|
+ install_dir: install_prefix + sysconfdir / 'sasl2',
|
|
rename: [ 'libvirt.conf' ],
|
|
)
|
|
endif
|
|
diff --git a/src/security/apparmor/meson.build b/src/security/apparmor/meson.build
|
|
index af43780211..e2d6c812f8 100644
|
|
--- a/src/security/apparmor/meson.build
|
|
+++ b/src/security/apparmor/meson.build
|
|
@@ -17,22 +17,22 @@ foreach name : apparmor_gen_profiles
|
|
output: name,
|
|
configuration: apparmor_gen_profiles_conf,
|
|
install: true,
|
|
- install_dir: apparmor_dir,
|
|
+ install_dir: install_prefix + apparmor_dir,
|
|
)
|
|
endforeach
|
|
|
|
install_data(
|
|
[ 'libvirt-qemu', 'libvirt-lxc' ],
|
|
- install_dir: apparmor_dir / 'abstractions',
|
|
+ install_dir: install_prefix + apparmor_dir / 'abstractions',
|
|
)
|
|
|
|
install_data(
|
|
[ 'TEMPLATE.qemu', 'TEMPLATE.lxc' ],
|
|
- install_dir: apparmor_dir / 'libvirt',
|
|
+ install_dir: install_prefix + apparmor_dir / 'libvirt',
|
|
)
|
|
|
|
install_data(
|
|
'usr.lib.libvirt.virt-aa-helper.local',
|
|
- install_dir: apparmor_dir / 'local',
|
|
+ install_dir: install_prefix + apparmor_dir / 'local',
|
|
rename: 'usr.lib.libvirt.virt-aa-helper',
|
|
)
|
|
diff --git a/tools/meson.build b/tools/meson.build
|
|
index b8c6802f0a..dacd0ff1ce 100644
|
|
--- a/tools/meson.build
|
|
+++ b/tools/meson.build
|
|
@@ -115,7 +115,7 @@ if conf.has('WITH_LOGIN_SHELL')
|
|
install_rpath: libvirt_rpath,
|
|
)
|
|
|
|
- install_data('virt-login-shell.conf', install_dir: sysconfdir / 'libvirt')
|
|
+ install_data('virt-login-shell.conf', install_dir: install_prefix + sysconfdir / 'libvirt')
|
|
endif
|
|
|
|
if host_machine.system() == 'windows'
|
|
@@ -274,7 +274,7 @@ configure_file(
|
|
if init_script == 'systemd'
|
|
install_data(
|
|
'libvirt-guests.sysconf',
|
|
- install_dir: sysconfdir / 'sysconfig',
|
|
+ install_dir: install_prefix + sysconfdir / 'sysconfig',
|
|
rename: 'libvirt-guests',
|
|
)
|
|
|
|
--
|
|
2.29.2
|
|
|