]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
meson: use a convenience static library for nspawn core
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 28 May 2018 08:37:11 +0000 (10:37 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 28 May 2018 08:40:00 +0000 (10:40 +0200)
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
src/nspawn/meson.build

index 48851d4af2eab4f4392f7875cbea5ea29cd63247..83fed46cc7e9676e4cdfee1b4490dfe3e48f563e 100644 (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]
index 0dae12f25fa1f8af0f8ffd1749dd7e1d7fe002b4..f80339b335ebf1088c35ff48007c734515760d13 100644 (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'],
 ]