meson: use a convenience static library for nspawn core

This makes it easier to link the nspawn implementation to the tests.
Right now this just means that nspawn-patch-uid.c is not compiled
twice, which is nice, but results in test-patch-uid being slightly bigger,
which is not nice. But in general, we should use convenience libs to
compile everything just once, as far as possible. Otherwise, once we
start compiling a few files here twice, and a few file there thrice, we
soon end up in a state where we are doing hundreds of extra compilations.
So let's do the "right" thing, even if is might not be more efficient.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2018-05-28 10:37:11 +02:00
parent 018eaf7445
commit 97d9061563
2 changed files with 20 additions and 13 deletions

View File

@ -1258,6 +1258,7 @@ includes = include_directories('src/basic',
'src/shared',
'src/systemd',
'src/journal',
'src/nspawn',
'src/resolve',
'src/timesync',
'src/time-wait-sync',
@ -2461,12 +2462,10 @@ exe = executable('systemd-nspawn',
'src/core/mount-setup.h',
'src/core/loopback-setup.c',
'src/core/loopback-setup.h',
include_directories : [includes, include_directories('src/nspawn')],
link_with : [libshared],
dependencies : [libacl,
libblkid,
libseccomp,
libselinux],
include_directories : includes,
link_with : [libnspawn_core,
libshared],
dependencies : [libblkid],
install_rpath : rootlibexecdir,
install : true)
public_programs += [exe]

View File

@ -2,7 +2,7 @@
#
# Copyright 2017 Zbigniew Jędrzejewski-Szmek
systemd_nspawn_sources = files('''
libnspawn_core_sources = files('''
nspawn-cgroup.c
nspawn-cgroup.h
nspawn-def.h
@ -24,7 +24,6 @@ systemd_nspawn_sources = files('''
nspawn-setuid.h
nspawn-stub-pid1.c
nspawn-stub-pid1.h
nspawn.c
'''.split())
nspawn_gperf_c = custom_target(
@ -33,13 +32,22 @@ nspawn_gperf_c = custom_target(
output : 'nspawn-gperf.c',
command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@'])
systemd_nspawn_sources += [nspawn_gperf_c]
libnspawn_core_sources += [nspawn_gperf_c]
libnspawn_core = static_library(
'nspawn-core',
libnspawn_core_sources,
include_directories : includes,
dependencies : [libacl,
libseccomp,
libselinux])
systemd_nspawn_sources = files('nspawn.c')
tests += [
[['src/nspawn/test-patch-uid.c',
'src/nspawn/nspawn-patch-uid.c',
'src/nspawn/nspawn-patch-uid.h'],
[libshared],
[['src/nspawn/test-patch-uid.c'],
[libnspawn_core,
libshared],
[libacl],
'', 'manual'],
]