X Tutup
Skip to content

Commit d7aa78c

Browse files
Mic92keszybz
authored andcommitted
meson: add option to skip installing to $sysconfdir
This is useful for development where overwriting files out side the configured prefix will affect the host as well as stateless systems such as NixOS that don't let packages install to /etc but handle configuration on their own. Alternative to systemd#17501 tested with: $ mkdir inst build && cd build $ meson \ -Dcreate-log-dirs=false \ -Dsysvrcnd-path=$(realpath ../inst)/etc/rc.d \ -Dsysvinit-path=$(realpath ../inst)/etc/init.d \ -Drootprefix=$(realpath ../inst) \ -Dinstall-sysconfdir=false \ --prefix=$(realpath ../inst) .. $ ninja install
1 parent faa73d4 commit d7aa78c

File tree

20 files changed

+111
-63
lines changed

20 files changed

+111
-63
lines changed

hwdb.d/meson.build

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,14 @@ if conf.get('ENABLE_HWDB') == 1
4242
hwdb_files_test,
4343
install_dir : udevhwdbdir)
4444

45-
meson.add_install_script('sh', '-c',
46-
mkdir_p.format(join_paths(sysconfdir, 'udev/hwdb.d')))
45+
if install_sysconfdir
46+
meson.add_install_script('sh', '-c',
47+
mkdir_p.format(join_paths(sysconfdir, 'udev/hwdb.d')))
4748

48-
meson.add_install_script('sh', '-c',
49-
'test -n "$DESTDIR" || @0@/systemd-hwdb update'
50-
.format(rootbindir))
49+
meson.add_install_script('sh', '-c',
50+
'test -n "$DESTDIR" || @0@/systemd-hwdb update'
51+
.format(rootbindir))
52+
endif
5153

5254
if want_tests != 'false'
5355
parse_hwdb_py = find_program('parse_hwdb.py')

meson.build

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ if rootlibdir == ''
126126
rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
127127
endif
128128

129+
install_sysconfdir = get_option('install-sysconfdir')
129130
# Dirs of external packages
130131
pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
131132
pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
@@ -2776,8 +2777,10 @@ if conf.get('ENABLE_BINFMT') == 1
27762777

27772778
meson.add_install_script('sh', '-c',
27782779
mkdir_p.format(binfmtdir))
2779-
meson.add_install_script('sh', '-c',
2780-
mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2780+
if install_sysconfdir
2781+
meson.add_install_script('sh', '-c',
2782+
mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2783+
endif
27812784
endif
27822785

27832786
if conf.get('ENABLE_REPART') == 1
@@ -2891,8 +2894,10 @@ executable(
28912894
install : true,
28922895
install_dir : rootlibexecdir)
28932896

2894-
install_data('src/sleep/sleep.conf',
2895-
install_dir : pkgsysconfdir)
2897+
if install_sysconfdir
2898+
install_data('src/sleep/sleep.conf',
2899+
install_dir : pkgsysconfdir)
2900+
endif
28962901

28972902
public_programs += executable(
28982903
'systemd-sysctl',
@@ -3243,8 +3248,10 @@ if conf.get('HAVE_KMOD') == 1
32433248

32443249
meson.add_install_script('sh', '-c',
32453250
mkdir_p.format(modulesloaddir))
3246-
meson.add_install_script('sh', '-c',
3247-
mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
3251+
if install_sysconfdir
3252+
meson.add_install_script('sh', '-c',
3253+
mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
3254+
endif
32483255
endif
32493256

32503257
public_programs += executable(
@@ -3489,8 +3496,10 @@ subdir('docs/var-log')
34893496
install_subdir('factory/etc',
34903497
install_dir : factorydir)
34913498

3492-
install_data('xorg/50-systemd-user.sh',
3493-
install_dir : xinitrcdir)
3499+
if install_sysconfdir
3500+
install_data('xorg/50-systemd-user.sh',
3501+
install_dir : xinitrcdir)
3502+
endif
34943503
install_data('modprobe.d/systemd.conf',
34953504
install_dir : modprobedir)
34963505
install_data('LICENSE.GPL2',

meson_options.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,8 @@ option('pamconfdir', type : 'string',
180180
description : 'directory for PAM configuration ["no" disables]')
181181
option('docdir', type : 'string',
182182
description : 'documentation directory')
183+
option('install-sysconfdir', type : 'boolean', value : true,
184+
description : 'install configuration files to $sysconfdir')
183185

184186
option('fallback-hostname', type : 'string', value : 'localhost',
185187
description : 'the hostname used if none configured')

network/meson.build

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ if conf.get('ENABLE_NETWORKD') == 1
1010
'80-wifi-station.network.example',
1111
install_dir : networkdir)
1212

13-
meson.add_install_script('sh', '-c',
14-
mkdir_p.format(join_paths(sysconfdir, 'systemd/network')))
13+
if install_sysconfdir
14+
meson.add_install_script('sh', '-c',
15+
mkdir_p.format(join_paths(sysconfdir, 'systemd/network')))
16+
endif
1517
endif
1618

1719
install_data('99-default.link',

src/core/meson.build

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -192,12 +192,14 @@ in_files = [['macros.systemd', rpmmacrosdir],
192192
foreach item : in_files
193193
file = item[0]
194194
dir = item[1]
195+
if install_sysconfdir or dir != pkgsysconfdir
196+
configure_file(
197+
input : file + '.in',
198+
output : file,
199+
configuration : substs,
200+
install_dir : dir == 'no' ? '' : dir)
201+
endif
195202

196-
configure_file(
197-
input : file + '.in',
198-
output : file,
199-
configuration : substs,
200-
install_dir : dir == 'no' ? '' : dir)
201203
endforeach
202204

203205
install_data('org.freedesktop.systemd1.conf',
@@ -217,6 +219,8 @@ meson.add_install_script('sh', '-c', mkdir_p.format(systemsleepdir))
217219
meson.add_install_script('sh', '-c', mkdir_p.format(systemgeneratordir))
218220
meson.add_install_script('sh', '-c', mkdir_p.format(usergeneratordir))
219221

220-
meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'system')))
221-
meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'user')))
222-
meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(sysconfdir, 'xdg/systemd')))
222+
if install_sysconfdir
223+
meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'system')))
224+
meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'user')))
225+
meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(sysconfdir, 'xdg/systemd')))
226+
endif

src/coredump/meson.build

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ endif
1313

1414
coredumpctl_sources = files('coredumpctl.c')
1515

16-
if conf.get('ENABLE_COREDUMP') == 1
16+
if conf.get('ENABLE_COREDUMP') == 1 and install_sysconfdir
1717
install_data('coredump.conf',
1818
install_dir : pkgsysconfdir)
1919
endif

src/home/meson.build

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,10 @@ if conf.get('ENABLE_HOMED') == 1
107107
install_data('org.freedesktop.home1.policy',
108108
install_dir : polkitpolicydir)
109109

110-
install_data('homed.conf',
111-
install_dir : pkgsysconfdir)
110+
if install_sysconfdir
111+
install_data('homed.conf',
112+
install_dir : sysconfdir)
113+
endif
112114
endif
113115

114116
tests += [

src/journal-remote/meson.build

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,21 @@ if conf.get('ENABLE_REMOTE') ==1 and conf.get('HAVE_LIBCURL') == 1
4848
input : 'journal-upload.conf.in',
4949
output : 'journal-upload.conf',
5050
configuration : substs)
51-
install_data(journal_upload_conf,
52-
install_dir : pkgsysconfdir)
51+
if install_sysconfdir
52+
install_data(journal_upload_conf,
53+
install_dir : pkgsysconfdir)
54+
endif
5355
endif
5456

5557
if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
5658
journal_remote_conf = configure_file(
5759
input : 'journal-remote.conf.in',
5860
output : 'journal-remote.conf',
5961
configuration : substs)
60-
install_data(journal_remote_conf,
61-
install_dir : pkgsysconfdir)
62+
if install_sysconfdir
63+
install_data(journal_remote_conf,
64+
install_dir : pkgsysconfdir)
65+
endif
6266

6367
install_data('browse.html',
6468
install_dir : join_paths(pkgdatadir, 'gatewayd'))

src/journal/meson.build

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,10 @@ journalctl_sources = files('''
107107
pcre2-dlopen.h
108108
'''.split())
109109

110-
install_data('journald.conf',
111-
install_dir : pkgsysconfdir)
110+
if install_sysconfdir
111+
install_data('journald.conf',
112+
install_dir : pkgsysconfdir)
113+
endif
112114

113115
if get_option('create-log-dirs')
114116
meson.add_install_script(

src/kernel-install/meson.build

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,19 @@
33
want_kernel_install = get_option('kernel-install')
44

55
if want_kernel_install
6-
install_data('kernel-install',
7-
install_mode : 'rwxr-xr-x',
8-
install_dir : bindir)
6+
install_data('kernel-install',
7+
install_mode : 'rwxr-xr-x',
8+
install_dir : bindir)
99

10-
install_data('00-entry-directory.install',
11-
'50-depmod.install',
12-
'90-loaderentry.install',
13-
install_mode : 'rwxr-xr-x',
14-
install_dir : kernelinstalldir)
10+
install_data('00-entry-directory.install',
11+
'50-depmod.install',
12+
'90-loaderentry.install',
13+
install_mode : 'rwxr-xr-x',
14+
install_dir : kernelinstalldir)
15+
16+
if install_sysconfdir
17+
meson.add_install_script('sh', '-c',
18+
mkdir_p.format(join_paths(sysconfdir, 'kernel/install.d')))
19+
endif
1520

16-
meson.add_install_script('sh', '-c',
17-
mkdir_p.format(join_paths(sysconfdir, 'kernel/install.d')))
1821
endif

0 commit comments

Comments
 (0)
X Tutup