about summary refs log tree commit diff
path: root/nixpkgs/pkgs/os-specific/linux/firmware/fwupd/add-option-for-installation-sysconfdir.patch
blob: d77053f5d3971bbbf0e4c8ec4e605e8ecd592dfb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
From 44887227f7f617cbf84713ec45685cb4999039ff Mon Sep 17 00:00:00 2001
From: Jan Tojnar <jtojnar@gmail.com>
Date: Tue, 30 Oct 2018 22:26:30 +0100
Subject: [PATCH] build: Add option for installation sysconfdir

On NixOS, sysconfdir is read-only by default, and packages are not supposed to
install files there. Instead, NixOS has a concept of modules that declaratively
describe the system configuration.

We still want to install the config files and certificates to fwupd prefix,
so that the modules can use them as they see fit, but at the same time, we
cannot set sysconfdir=${prefix}/etc because the daemon needs to read the
configuration from the directory created by the module.

With autotools, we could easily solve this by passing a the sysconfdir inside
prefix only to `make install`, but Meson does not support anything like that.
Until we manage to convince Meson to support install flags, we need to create
our own install flag.
---
 data/meson.build                 | 4 ++--
 data/pki/meson.build             | 8 ++++----
 data/remotes.d/meson.build       | 6 +++---
 meson.build                      | 6 ++++++
 meson_options.txt                | 1 +
 plugins/redfish/meson.build      | 2 +-
 plugins/uefi/meson.build         | 2 +-
 7 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/data/meson.build b/data/meson.build
index 8dd2ac9a..d4ad1cbc 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -9,7 +9,7 @@ if get_option('tests') and get_option('daemon')
 endif
 
 install_data(['daemon.conf'],
-  install_dir : join_paths(sysconfdir, 'fwupd')
+  install_dir : join_paths(sysconfdir_install, 'fwupd')
 )
 
 install_data(['org.freedesktop.fwupd.metainfo.xml'],
@@ -17,7 +17,7 @@ install_data(['org.freedesktop.fwupd.metainfo.xml'],
 )
 
 install_data(['org.freedesktop.fwupd.conf'],
-  install_dir : join_paths(sysconfdir, 'dbus-1', 'system.d')
+  install_dir : join_paths(sysconfdir_install, 'dbus-1', 'system.d')
 )
 
 install_data(['metadata.xml'],
diff --git a/data/pki/meson.build b/data/pki/meson.build
index eefcc914..dc801fa1 100644
--- a/data/pki/meson.build
+++ b/data/pki/meson.build
@@ -4,14 +4,14 @@ if get_option('gpg')
       'GPG-KEY-Linux-Foundation-Firmware',
       'GPG-KEY-Linux-Vendor-Firmware-Service',
     ],
-    install_dir : join_paths(sysconfdir, 'pki', 'fwupd')
+    install_dir : join_paths(sysconfdir_install, 'pki', 'fwupd')
   )
 
   install_data([
       'GPG-KEY-Linux-Foundation-Metadata',
       'GPG-KEY-Linux-Vendor-Firmware-Service',
     ],
-    install_dir : join_paths(sysconfdir, 'pki', 'fwupd-metadata')
+    install_dir : join_paths(sysconfdir_install, 'pki', 'fwupd-metadata')
   )
 endif
 
@@ -19,12 +19,12 @@ if get_option('pkcs7')
   install_data([
       'LVFS-CA.pem',
     ],
-    install_dir : join_paths(sysconfdir, 'pki', 'fwupd')
+    install_dir : join_paths(sysconfdir_install, 'pki', 'fwupd')
   )
   install_data([
       'LVFS-CA.pem',
     ],
-    install_dir : join_paths(sysconfdir, 'pki', 'fwupd-metadata')
+    install_dir : join_paths(sysconfdir_install, 'pki', 'fwupd-metadata')
   )
 endif
 
diff --git a/data/remotes.d/meson.build b/data/remotes.d/meson.build
index 824291fc..d0599a00 100644
--- a/data/remotes.d/meson.build
+++ b/data/remotes.d/meson.build
@@ -3,7 +3,7 @@ if get_option('daemon') and get_option('lvfs')
       'lvfs.conf',
       'lvfs-testing.conf',
     ],
-    install_dir : join_paths(sysconfdir, 'fwupd', 'remotes.d')
+    install_dir : join_paths(sysconfdir_install, 'fwupd', 'remotes.d')
   )
   i18n.merge_file(
     input: 'lvfs.metainfo.xml',
@@ -37,12 +37,12 @@ configure_file(
   output : 'fwupd.conf',
   configuration : con2,
   install: true,
-  install_dir: join_paths(sysconfdir, 'fwupd', 'remotes.d'),
+  install_dir: join_paths(sysconfdir_install, 'fwupd', 'remotes.d'),
 )
 configure_file(
   input : 'vendor.conf',
   output : 'vendor.conf',
   configuration : con2,
   install: true,
-  install_dir: join_paths(sysconfdir, 'fwupd', 'remotes.d'),
+  install_dir: join_paths(sysconfdir_install, 'fwupd', 'remotes.d'),
 )
diff --git a/meson.build b/meson.build
index b6df98b3..d672ee37 100644
--- a/meson.build
+++ b/meson.build
@@ -145,6 +145,12 @@ localstatedir = join_paths(prefix, get_option('localstatedir'))
 mandir = join_paths(prefix, get_option('mandir'))
 localedir = join_paths(prefix, get_option('localedir'))
 
+if get_option('sysconfdir_install') != ''
+  sysconfdir_install = join_paths(prefix, get_option('sysconfdir_install'))
+else
+  sysconfdir_install = sysconfdir
+endif
+
 gio = dependency('gio-2.0', version : '>= 2.45.8')
 if gio.version().version_compare ('>= 2.55.0')
   conf.set('HAVE_GIO_2_55_0', '1')
diff --git a/meson_options.txt b/meson_options.txt
index 23ef8cdb..db8f93b6 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -17,6 +17,7 @@ option('plugin_uefi', type : 'boolean', value : true, description : 'enable UEFI
 option('plugin_nvme', type : 'boolean', value : true, description : 'enable NVMe support')
 option('systemd', type : 'boolean', value : true, description : 'enable systemd support')
 option('systemdunitdir', type: 'string', value: '', description: 'Directory for systemd units')
+option('sysconfdir_install', type: 'string', value: '', description: 'sysconfdir to use during installation')
 option('tests', type : 'boolean', value : true, description : 'enable tests')
 option('udevdir', type: 'string', value: '', description: 'Directory for udev rules')
 option('efi-cc', type : 'string', value : 'gcc', description : 'the compiler to use for EFI modules')
diff --git a/plugins/redfish/meson.build b/plugins/redfish/meson.build
index ef07bd81..d2c7e259 100644
--- a/plugins/redfish/meson.build
+++ b/plugins/redfish/meson.build
@@ -25,7 +25,7 @@ shared_module('fu_plugin_redfish',
 )
 
 install_data(['redfish.conf'],
-  install_dir:  join_paths(sysconfdir, 'fwupd')
+  install_dir:  join_paths(sysconfdir_install, 'fwupd')
 )
 
 if get_option('tests')
diff --git a/plugins/uefi/meson.build b/plugins/uefi/meson.build
index 09ebdf82..02fc0661 100644
--- a/plugins/uefi/meson.build
+++ b/plugins/uefi/meson.build
@@ -73,7 +73,7 @@ executable(
 )
 
 install_data(['uefi.conf'],
-  install_dir:  join_paths(sysconfdir, 'fwupd')
+  install_dir:  join_paths(sysconfdir_install, 'fwupd')
 )
 
 if get_option('tests')
-- 
2.19.1