Skip to content

Commit

Permalink
udev: single binary replacing udevd and udevadm
Browse files Browse the repository at this point in the history
Since the separate binaries contain mostly the same code,
this almost halves the size of the installation.

before:
398K /bin/udevadm
391K /lib/systemd/systemd-udevd

after:
431K /bin/udevadm
0    /lib/systemd/systemd-udevd -> ../../bin/udevadm

Fixes: #14200
  • Loading branch information
nolange authored and keszybz committed Jun 1, 2020
1 parent 0e77fc6 commit 63e2d17
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 23 deletions.
22 changes: 4 additions & 18 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -2198,6 +2198,10 @@ foreach alias : (['halt', 'poweroff', 'reboot', 'shutdown'] +
join_paths(rootsbindir, alias))
endforeach

meson.add_install_script(meson_make_symlink,
join_paths(rootbindir, 'udevadm'),
join_paths(rootlibexecdir, 'systemd-udevd'))

if conf.get('ENABLE_BACKLIGHT') == 1
executable(
'systemd-backlight',
Expand Down Expand Up @@ -2983,24 +2987,6 @@ public_programs += executable(
install : true,
install_dir : rootlibexecdir)

public_programs += executable(
'systemd-udevd',
systemd_udevd_sources,
include_directories : includes,
c_args : '-DLOG_REALM=LOG_REALM_UDEV',
link_with : [libudev_core,
libsystemd_network,
libudev_static],
dependencies : [versiondep,
threads,
libkmod,
libidn,
libacl,
libblkid],
install_rpath : udev_rpath,
install : true,
install_dir : rootlibexecdir)

public_programs += executable(
'udevadm',
udevadm_sources,
Expand Down
3 changes: 1 addition & 2 deletions src/udev/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,9 @@ udevadm_sources = files('''
udevadm-trigger.c
udevadm-util.c
udevadm-util.h
udevd.c
'''.split())

systemd_udevd_sources = files('udevd.c')

libudev_core_sources = '''
udev-ctrl.c
udev-ctrl.h
Expand Down
4 changes: 4 additions & 0 deletions src/udev/udevadm.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include "selinux-util.h"
#include "string-util.h"
#include "udevadm.h"
#include "udevd.h"
#include "udev-util.h"
#include "verbs.h"
#include "util.h"
Expand Down Expand Up @@ -110,6 +111,9 @@ static int udevadm_main(int argc, char *argv[]) {
static int run(int argc, char *argv[]) {
int r;

if (strstr(program_invocation_short_name, "udevd"))
return run_udevd(argc, argv);

udev_parse_config();
log_parse_environment();
log_open();
Expand Down
5 changes: 2 additions & 3 deletions src/udev/udevd.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
#include "strv.h"
#include "strxcpyx.h"
#include "syslog-util.h"
#include "udevd.h"
#include "udev-builtin.h"
#include "udev-ctrl.h"
#include "udev-event.h"
Expand Down Expand Up @@ -1713,7 +1714,7 @@ static int main_loop(Manager *manager) {
return r;
}

static int run(int argc, char *argv[]) {
int run_udevd(int argc, char *argv[]) {
_cleanup_free_ char *cgroup = NULL;
_cleanup_(manager_freep) Manager *manager = NULL;
int fd_ctrl = -1, fd_uevent = -1;
Expand Down Expand Up @@ -1828,5 +1829,3 @@ static int run(int argc, char *argv[]) {

return main_loop(manager);
}

DEFINE_MAIN_FUNCTION(run);
4 changes: 4 additions & 0 deletions src/udev/udevd.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/* SPDX-License-Identifier: GPL-2.0+ */
#pragma once

int run_udevd(int argc, char *argv[]);

0 comments on commit 63e2d17

Please sign in to comment.