Bug#946456: systemd: Provide systemd-sysusers as an independent package

Felipe Sateler fsateler at debian.org
Mon Feb 3 18:50:35 GMT 2020


On Sun, Feb 2, 2020, 17:04 Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
wrote:

> On Thu, Jan 30, 2020 at 11:51:48PM -0300, Felipe Sateler wrote:
> > On Thu, Jan 30, 2020 at 6:40 PM Michael Biebl <biebl at 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 <biebl at debian.org
> > > > <mailto:biebl at 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
> > +)
>
> Is creating a separate static library actually necessary?  What would
> the results be if those binaries were linked to the static version of
> libshared that we already provide support for? I hope the compiler
> would be able to drop any unused objects and achieve the same size,
> without having to maintain yet another list of files.
>

I'd have to recheck, but that was my first idea and didn't pan out (at
least with the flags we use for the debian package).


> >  # 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],
>
> To upstream this, the change in behaviour must be configuration-time
> selectable.
>

Right. And the unrelated b_lto change above removed too ;)


Saludos
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-systemd-maintainers/attachments/20200203/59892347/attachment.html>


More information about the Pkg-systemd-maintainers mailing list