From 97d90615631d80b95251f163c47d9e4e337ad8d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 28 May 2018 10:37:11 +0200 Subject: [PATCH] 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. --- meson.build | 11 +++++------ src/nspawn/meson.build | 22 +++++++++++++++------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/meson.build b/meson.build index 48851d4af2..83fed46cc7 100644 --- a/meson.build +++ b/meson.build @@ -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] diff --git a/src/nspawn/meson.build b/src/nspawn/meson.build index 0dae12f25f..f80339b335 100644 --- a/src/nspawn/meson.build +++ b/src/nspawn/meson.build @@ -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'], ]