On Thu, Jan 30, 2020 at 6:40 PM Michael Biebl <bi...@debian.org> wrote:
> Hi Felipe > > Am 30.01.20 um 22:30 schrieb Felipe Sateler: > > > > > > On Thu, Jan 30, 2020 at 1:39 PM Michael Biebl <bi...@debian.org > > <mailto:bi...@debian.org>> wrote: > > > > Am 28.01.20 um 17:27 schrieb Ansgar: > > > On Tue, 2020-01-28 at 16:51 +0100, Michael Biebl wrote: > > >> Am 28.01.20 um 14:59 schrieb Ansgar: > > >>> I tried linking systemd-{sysusers,tmpfiles} statically against > > >>> systemd's private library earlier this month. It increases the > > >>> binaries size by ~100 kB (compared to Installed-Size: 14.2 MB of > > >>> systemd that is just one percent). > > >> > > >> Is that 100K per binary? > > > > > > I checked my notes at it was 100 kB per binary: they are 212 kB > larger > > > (sysusers 51 kB → 137 kB, tmpfiles 84 kB → 212 kB); I tested with > > > systemd 243-8. > > > > > > It might be possible to make it a bit smaller if one was to somehow > > > link libsystemd0 for functions available there (libsystemd-shared > > > currently duplicates those). > > > > > > That is not possible. There is global state that is not to be shared. > > See https://github.com/systemd/systemd/pull/3516#issuecomment-227482524 > > What's your thought on how to solve this libsystemd-shared issue should > we consider splitting out systemd-{sysusers,tmpfiles} > > - link statically (and carry a downstream patch for eternity) > - move libsystemd-shared to systemd-utils and risk the breakage that can > result from a partial/aborted upgrade > - copy, instead of move, the binaries + libsystemd-shared and make the > resulting systemd-utils package Conflict with systemd (instead of having > systemd depend on systemd-utils) > - something else? > I tried linking statically the "can run without systemd-pid1 tools" with the attached patch. Disk usage appears to increase by about 400 kb: % dpkg --info systemd_244.1-1_amd64.deb|grep Installed Installed-Size: 13908 % dpkg --info ../systemd_244-3_amd64.deb|grep Installed Installed-Size: 14319 Maybe upstream can be persuaded to merge something like this? -- Saludos, Felipe Sateler
diff --git a/meson.build b/meson.build index b8dff8cd94..39cef6b301 100644 --- a/meson.build +++ b/meson.build @@ -1493,6 +1493,29 @@ make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py') ############################################################ + +libutil = static_library( + 'util', + [ + 'src/shared/acl-util.c', + 'src/shared/enable-mempool.c', + 'src/shared/id128-print.c', + 'src/shared/pager.c', + 'src/shared/path-lookup.c', + 'src/shared/pretty-print.c', + 'src/shared/spawn-ask-password-agent.c', + 'src/shared/spawn-polkit-agent.c', + 'src/shared/specifier.c', + 'src/shared/sysctl-util.c', + 'src/shared/sysctl-util.h', + 'src/shared/tmpfile-util-label.c', + 'src/shared/uid-range.c', + 'src/shared/verbs.c', + ] + id128_sources, + link_with: [libbasic, libsystemd_static], + include_directories: includes +) + # binaries that have --help and are intended for use by humans, # usually, but not always, installed in /bin. public_programs = [] @@ -1537,6 +1560,7 @@ test_dlopen = executable( include_directories : includes, link_with : [libbasic], dependencies : [libdl], + b_lto: false, build_by_default : want_tests != 'false') foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'], @@ -2407,7 +2431,7 @@ install_data('src/sleep/sleep.conf', exe = executable('systemd-sysctl', 'src/sysctl/sysctl.c', include_directories : includes, - link_with : [libshared], + link_with : [libutil], install_rpath : rootlibexecdir, install : true, install_dir : rootlibexecdir) @@ -2440,7 +2464,7 @@ public_programs += exe exe = executable('systemd-escape', 'src/escape/escape.c', include_directories : includes, - link_with : [libshared], + link_with : [libutil], install_rpath : rootlibexecdir, install : true, install_dir : rootbindir) @@ -2474,7 +2498,7 @@ executable('systemd-cgroups-agent', exe = executable('systemd-id128', 'src/id128/id128.c', include_directories : includes, - link_with : [libshared], + link_with : [libutil], install_rpath : rootlibexecdir, install : true) public_programs += exe @@ -2482,7 +2506,7 @@ public_programs += exe exe = executable('systemd-path', 'src/path/path.c', include_directories : includes, - link_with : [libshared], + link_with : [libutil], install_rpath : rootlibexecdir, install : true) public_programs += exe @@ -2580,7 +2604,7 @@ if conf.get('ENABLE_SYSUSERS') == 1 exe = executable('systemd-sysusers', 'src/sysusers/sysusers.c', include_directories : includes, - link_with : [libshared], + link_with : [libutil], install_rpath : rootlibexecdir, install : true, install_dir : rootbindir) @@ -2591,7 +2615,7 @@ if conf.get('ENABLE_TMPFILES') == 1 exe = executable('systemd-tmpfiles', 'src/tmpfiles/tmpfiles.c', include_directories : includes, - link_with : [libshared], + link_with : [libutil], dependencies : [libacl], install_rpath : rootlibexecdir, install : true,