Submitted By: Bruce Dubbs Date: 2018-04-01 Initial Package Version: 238 Upstream Status: Committed Origin: Upstream git repository diff by Thanos Baloukas Description: Fix building issues with various depenencies diff -Naur systemd-238/hwdb/60-evdev.hwdb systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/hwdb/60-evdev.hwdb --- systemd-238/hwdb/60-evdev.hwdb 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/hwdb/60-evdev.hwdb 2018-03-22 12:50:37.000000000 +0200 @@ -114,8 +114,10 @@ EVDEV_ABS_35=::18 EVDEV_ABS_36=::16 -# Asus X550CC and S550CB -evdev:name:ETPS/2 Elantech Touchpad:dmi:*:svnASUSTeKCOMPUTERINC.:pn?550C?:* +# Asus X550CC, S550CB and N550JV +evdev:name:ETPS/2 Elantech Touchpad:dmi:*:svnASUSTeKCOMPUTERINC.:pnX550CC:* +evdev:name:ETPS/2 Elantech Touchpad:dmi:*:svnASUSTeKCOMPUTERINC.:pnS550CB:* +evdev:name:ETPS/2 Elantech Touchpad:dmi:*:svnASUSTeKCOMPUTERINC.:pnN550JV:* EVDEV_ABS_00=::31 EVDEV_ABS_01=::30 EVDEV_ABS_35=::31 @@ -144,6 +146,20 @@ EVDEV_ABS_00=::14 EVDEV_ABS_01=::18 +# Dell Inspiron 3537 - PS/2 +evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnDellInc.:pnInspiron3537* + EVDEV_ABS_00=1268:5675:41 + EVDEV_ABS_01=1101:4792:61 + EVDEV_ABS_35=1268:5675:41 + EVDEV_ABS_36=1101:4792:61 + +# Dell Inspiron 3537 - RMI4 +evdev:name:Synaptics TM2382-001:dmi:*svnDellInc.:pnInspiron3537* + EVDEV_ABS_00=::24 + EVDEV_ABS_01=::34 + EVDEV_ABS_35=::24 + EVDEV_ABS_36=::34 + # Dell Inspiron N5040 evdev:name:AlpsPS/2 ALPS DualPoint TouchPad:dmi:bvn*:bvr*:bd*:svnDellInc.:pnInspironN5040* EVDEV_ABS_00=25:2000:22 @@ -241,6 +257,13 @@ EVDEV_ABS_35=1068:5805:44 EVDEV_ABS_36=1197:4890:57 +# HP Pavilion 15 +evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnHP:pnHPLaptop15-bs0xx:* + EVDEV_ABS_00=1272:5689:38 + EVDEV_ABS_01=1029:4916:78 + EVDEV_ABS_35=1272:5689:38 + EVDEV_ABS_36=1029:4916:78 + # HP Spectre evdev:name:SynPS/2 Synaptics TouchPad:dmi:i*svnHP:pnHPSpectreNotebook* EVDEV_ABS_00=1205:5691:47 @@ -390,6 +413,17 @@ EVDEV_ABS_36=653:5395:116 ######################################### +# Razer +######################################### + +# Razer Blade Stealth +evdev:name:1A586753:00 06CB:8323 Touchpad:dmi:*svnRazer:pnBladeStealth:* + EVDEV_ABS_00=::12:8 + EVDEV_ABS_01=::11:8 + EVDEV_ABS_35=::12:8 + EVDEV_ABS_36=::11:8 + +######################################### # Samsung ######################################### diff -Naur systemd-238/hwdb/60-keyboard.hwdb systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/hwdb/60-keyboard.hwdb --- systemd-238/hwdb/60-keyboard.hwdb 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/hwdb/60-keyboard.hwdb 2018-03-22 12:50:37.000000000 +0200 @@ -1421,3 +1421,24 @@ evdev:input:b0003v046Dp4002* KEYBOARD_LED_NUMLOCK=0 KEYBOARD_LED_CAPSLOCK=0 + +# Lenovo ThinkPad T430s +evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadT430s + KEYBOARD_LED_CAPSLOCK=0 + +# Lenovo ThinkPad T440s +evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadT440s + KEYBOARD_LED_CAPSLOCK=0 + +# Lenovo ThinkPad T450s +evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadT450s + KEYBOARD_LED_CAPSLOCK=0 + +# Lenovo ThinkPad T560s +evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadT560s + KEYBOARD_LED_CAPSLOCK=0 + KEYBOARD_LED_NUMLOCK=0 + +# Lenovo ThinkPad X1 Carbon 3rd Gen +evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadX1Carbon3rd + KEYBOARD_LED_CAPSLOCK=0 diff -Naur systemd-238/hwdb/60-sensor.hwdb systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/hwdb/60-sensor.hwdb --- systemd-238/hwdb/60-sensor.hwdb 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/hwdb/60-sensor.hwdb 2018-03-22 12:50:37.000000000 +0200 @@ -15,7 +15,7 @@ # /etc/udev/hwdb.d/61-sensor-local.hwdb # and add your rules there. To load the new rules execute (as root): # systemd-hwdb update -# udevadm trigger -y `dirname $(udevadm info -n "/dev/iio:deviceXXX" -q path)` +# udevadm trigger -v -p DEVNAME=/dev/iio:deviceXXX # where /dev/iio:deviceXXX is the device in question. # # If your changes are generally applicable, preferably send them as a pull @@ -82,7 +82,7 @@ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 sensor:modalias:acpi:SMO8500*:dmi:*svn*ASUSTeK*:*pn*TP300LD* - ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 + ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ######################################### # Axxo @@ -148,6 +148,12 @@ ACCEL_MOUNT_MATRIX=0, 1, 0; 0, 0, -1; -1, 0, 0 ######################################### +# Eve Technology +######################################### +sensor:modalias:acpi:KIOX000A*:dmi:*:svnEVE*:pnEveV:* + ACCEL_MOUNT_MATRIX=0, 1, 0; -1, 0, 0; 0, 0, 1 + +######################################### # GP-electronic ######################################### sensor:modalias:acpi:KIOX000A*:dmi:bvnINSYDECorp.:bvrBYT70A.YNCHENG.WIN.007:*:svnInsyde:pnT701:* diff -Naur systemd-238/man/hostnamectl.xml systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/man/hostnamectl.xml --- systemd-238/man/hostnamectl.xml 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/man/hostnamectl.xml 2018-03-22 12:50:37.000000000 +0200 @@ -121,6 +121,10 @@ + + + + Commands The following commands are understood: @@ -128,9 +132,8 @@ status - Show current system - hostname and related - information. + Show current system hostname and related information. If no command is specified, + this is the implied default. diff -Naur systemd-238/man/localectl.xml systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/man/localectl.xml --- systemd-238/man/localectl.xml 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/man/localectl.xml 2018-03-22 12:50:37.000000000 +0200 @@ -118,6 +118,10 @@ + + + + Commands The following commands are understood: @@ -125,8 +129,8 @@ status - Show current settings of the system locale and - keyboard mapping. + Show current settings of the system locale and keyboard mapping. + If no command is specified, this is the implied default. diff -Naur systemd-238/man/timedatectl.xml systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/man/timedatectl.xml --- systemd-238/man/timedatectl.xml 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/man/timedatectl.xml 2018-03-22 12:50:37.000000000 +0200 @@ -98,6 +98,10 @@ + + + + Commands The following commands are understood: @@ -109,6 +113,7 @@ including whether network time synchronization through systemd-timesyncd.service is active. Even if it is inactive, a different service might still synchronize the clock. + If no command is specified, this is the implied default. diff -Naur systemd-238/meson.build systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/meson.build --- systemd-238/meson.build 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/meson.build 2018-03-22 12:50:37.000000000 +0200 @@ -604,7 +604,7 @@ conf.set_quoted('TELINIT', get_option('telinit-path')) if run_command('ln', '--relative', '--help').returncode() != 0 - error('ln does not support --relative') + error('ln does not support --relative (added in coreutils 8.16)') endif ############################################################ @@ -2903,8 +2903,9 @@ ['debug mmap cache'], ] - cond = tuple.get(1, '') - if cond == '' + if tuple.length() >= 2 + cond = tuple[1] + else ident1 = 'HAVE_' + tuple[0].underscorify().to_upper() ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper() cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1 diff -Naur systemd-238/NEWS systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/NEWS --- systemd-238/NEWS 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/NEWS 2018-03-22 12:50:37.000000000 +0200 @@ -11,7 +11,7 @@ other forms of resource accounting (CPU, IO, IP) remain off for now, because it's not clear yet that their impact is small enough to move from opt-in to opt-out. We recommend downstreams to leave memory - accounting on by default if kernel 4.14 or higher is are primarily + accounting on by default if kernel 4.14 or higher is primarily used. On very resource constrained systems or when support for old kernels is a necessity, -Dmemory-accounting-default=false can be used to revert this change. @@ -35,12 +35,12 @@ disk (in case some of those files are owned by that user), while still allowing local admin overrides. - This functionality is exposed to rpm scriplets through a new + This functionality is exposed to rpm scriptlets through a new %sysusers_create_package macro. Old %sysusers_create and %sysusers_create_inline macros are deprecated. A transfiletrigger for sysusers.d configuration is now installed, - which means that it should be uncessary to call systemd-sysusers from + which means that it should be unnecessary to call systemd-sysusers from package installation scripts, unless the package installs any files owned by those newly-created users, in which case %sysusers_create_package should be used. diff -Naur systemd-238/shell-completion/zsh/_systemd-analyze systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/shell-completion/zsh/_systemd-analyze --- systemd-238/shell-completion/zsh/_systemd-analyze 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/shell-completion/zsh/_systemd-analyze 2018-03-22 12:50:37.000000000 +0200 @@ -33,12 +33,13 @@ 'plot:Output SVG graphic showing service initialization' 'dot:Dump dependency graph (in dot(1) format)' 'dump:Dump server status' - 'unit-paths':List unit load paths' + 'unit-paths:List unit load paths' 'log-level:Get/set systemd log threshold' 'log-target:Get/set systemd log target' 'service-watchdogs:Get/set service watchdog status' 'syscall-filter:List syscalls in seccomp filter' 'verify:Check unit files for correctness' + 'calendar:Validate repetitive calendar time events' ) if (( CURRENT == 1 )); then diff -Naur systemd-238/src/basic/cgroup-util.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/cgroup-util.c --- systemd-238/src/basic/cgroup-util.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/cgroup-util.c 2018-03-22 12:50:37.000000000 +0200 @@ -2038,7 +2038,6 @@ char **ret_values) { _cleanup_free_ char *filename = NULL, *contents = NULL; - _cleanup_fclose_ FILE *f = NULL; const char *p; size_t n, i, n_done = 0; char **v; diff -Naur systemd-238/src/basic/log.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/log.c --- systemd-238/src/basic/log.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/log.c 2018-03-22 12:50:37.000000000 +0200 @@ -814,7 +814,7 @@ log_dispatch_internal(level, 0, file, line, func, NULL, NULL, NULL, NULL, buffer); } -noreturn void log_assert_failed_realm( +_noreturn_ void log_assert_failed_realm( LogRealm realm, const char *text, const char *file, @@ -826,7 +826,7 @@ abort(); } -noreturn void log_assert_failed_unreachable_realm( +_noreturn_ void log_assert_failed_unreachable_realm( LogRealm realm, const char *text, const char *file, diff -Naur systemd-238/src/basic/log.h systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/log.h --- systemd-238/src/basic/log.h 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/log.h 2018-03-22 12:50:37.000000000 +0200 @@ -186,7 +186,7 @@ char *buffer); /* Logging for various assertions */ -noreturn void log_assert_failed_realm( +_noreturn_ void log_assert_failed_realm( LogRealm realm, const char *text, const char *file, @@ -195,7 +195,7 @@ #define log_assert_failed(text, ...) \ log_assert_failed_realm(LOG_REALM, (text), __VA_ARGS__) -noreturn void log_assert_failed_unreachable_realm( +_noreturn_ void log_assert_failed_unreachable_realm( LogRealm realm, const char *text, const char *file, diff -Naur systemd-238/src/basic/macro.h systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/macro.h --- systemd-238/src/basic/macro.h 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/macro.h 2018-03-22 12:50:37.000000000 +0200 @@ -53,6 +53,15 @@ #else #define _fallthrough_ #endif +/* Define C11 noreturn without and even on older gcc + * compiler versions */ +#ifndef _noreturn_ +#if __STDC_VERSION__ >= 201112L +#define _noreturn_ _Noreturn +#else +#define _noreturn_ __attribute__((noreturn)) +#endif +#endif /* Temporarily disable some warnings */ #define DISABLE_WARNING_DECLARATION_AFTER_STATEMENT \ @@ -414,16 +423,6 @@ #endif #endif -/* Define C11 noreturn without and even on older gcc - * compiler versions */ -#ifndef noreturn -#if __STDC_VERSION__ >= 201112L -#define noreturn _Noreturn -#else -#define noreturn __attribute__((noreturn)) -#endif -#endif - #define DEFINE_TRIVIAL_CLEANUP_FUNC(type, func) \ static inline void func##p(type *p) { \ if (*p) \ diff -Naur systemd-238/src/basic/process-util.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/process-util.c --- systemd-238/src/basic/process-util.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/process-util.c 2018-03-22 12:50:37.000000000 +0200 @@ -987,7 +987,7 @@ return cached > 0; } -noreturn void freeze(void) { +_noreturn_ void freeze(void) { log_close(); diff -Naur systemd-238/src/basic/process-util.h systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/process-util.h --- systemd-238/src/basic/process-util.h 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/basic/process-util.h 2018-03-22 12:50:37.000000000 +0200 @@ -91,7 +91,7 @@ bool is_main_thread(void); -noreturn void freeze(void); +_noreturn_ void freeze(void); bool oom_score_adjust_is_valid(int oa); diff -Naur systemd-238/src/busctl/busctl.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/busctl/busctl.c --- systemd-238/src/busctl/busctl.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/busctl/busctl.c 2018-03-22 12:50:37.000000000 +0200 @@ -112,6 +112,9 @@ } merged = new(char*, hashmap_size(names) + 1); + if (!merged) + return log_oom(); + HASHMAP_FOREACH_KEY(v, k, names, iterator) merged[n++] = k; @@ -283,8 +286,6 @@ static void print_tree(const char *prefix, char **l) { - pager_open(arg_no_pager, false); - prefix = strempty(prefix); if (arg_list) { diff -Naur systemd-238/src/core/cgroup.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/cgroup.c --- systemd-238/src/core/cgroup.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/cgroup.c 2018-03-22 12:50:37.000000000 +0200 @@ -2272,19 +2272,20 @@ /* 5. Make sure we are in the special "init.scope" unit in the root slice. */ scope_path = strjoina(m->cgroup_root, "/" SPECIAL_INIT_SCOPE); r = cg_create_and_attach(SYSTEMD_CGROUP_CONTROLLER, scope_path, 0); - if (r < 0) - return log_error_errno(r, "Failed to create %s control group: %m", scope_path); + if (r >= 0) { + /* Also, move all other userspace processes remaining in the root cgroup into that scope. */ + r = cg_migrate(SYSTEMD_CGROUP_CONTROLLER, m->cgroup_root, SYSTEMD_CGROUP_CONTROLLER, scope_path, 0); + if (r < 0) + log_warning_errno(r, "Couldn't move remaining userspace processes, ignoring: %m"); - /* Also, move all other userspace processes remaining in the root cgroup into that scope. */ - r = cg_migrate(SYSTEMD_CGROUP_CONTROLLER, m->cgroup_root, SYSTEMD_CGROUP_CONTROLLER, scope_path, 0); - if (r < 0) - log_warning_errno(r, "Couldn't move remaining userspace processes, ignoring: %m"); + /* 6. And pin it, so that it cannot be unmounted */ + safe_close(m->pin_cgroupfs_fd); + m->pin_cgroupfs_fd = open(path, O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_NOCTTY|O_NONBLOCK); + if (m->pin_cgroupfs_fd < 0) + return log_error_errno(errno, "Failed to open pin file: %m"); - /* 6. And pin it, so that it cannot be unmounted */ - safe_close(m->pin_cgroupfs_fd); - m->pin_cgroupfs_fd = open(path, O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_NOCTTY|O_NONBLOCK); - if (m->pin_cgroupfs_fd < 0) - return log_error_errno(errno, "Failed to open pin file: %m"); + } else if (r < 0 && !m->test_run_flags) + return log_error_errno(r, "Failed to create %s control group: %m", scope_path); /* 7. Always enable hierarchical support if it exists... */ if (!all_unified && m->test_run_flags == 0) diff -Naur systemd-238/src/core/macros.systemd.in systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/macros.systemd.in --- systemd-238/src/core/macros.systemd.in 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/macros.systemd.in 2018-03-22 12:50:37.000000000 +0200 @@ -101,7 +101,9 @@ %{nil} %sysusers_create_inline() \ -echo %{?*} | systemd-sysusers - >/dev/null 2>&1 || : \ +systemd-sysusers - </dev/null 2>&1 || : \ +%{?*} \ +SYSTEMD_INLINE_EOF \ %{nil} # This should be used by package installation scripts which require users or @@ -118,7 +120,9 @@ # %files # %{_sysusersdir}/%{name}.conf %sysusers_create_package() \ -echo "%(cat %2)" | systemd-sysusers --replace=%_sysusersdir/%1.conf - >/dev/null 2>&1 || : \ +systemd-sysusers --replace=%_sysusersdir/%1.conf - </dev/null 2>&1 || : \ +%(cat %2) \ +SYSTEMD_INLINE_EOF \ %{nil} # This may be used by package installation scripts to create files according to @@ -135,7 +139,9 @@ # %files # %{_tmpfilesdir}/%{name}.conf %tmpfiles_create_package() \ -echo "%(cat %2)" | systemd-tmpfiles --replace=%_tmpfilesdir/%1.conf --create - >/dev/null 2>&1 || : \ +systemd-tmpfiles --replace=%_tmpfilesdir/%1.conf --create - </dev/null 2>&1 || : \ +%(cat %2) \ +SYSTEMD_INLINE_EOF \ %{nil} %sysctl_apply() \ diff -Naur systemd-238/src/core/main.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/main.c --- systemd-238/src/core/main.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/main.c 2018-03-22 12:50:37.000000000 +0200 @@ -141,7 +141,7 @@ static sd_id128_t arg_machine_id = {}; static EmergencyAction arg_cad_burst_action = EMERGENCY_ACTION_REBOOT_FORCE; -noreturn static void freeze_or_reboot(void) { +_noreturn_ static void freeze_or_reboot(void) { if (arg_crash_reboot) { log_notice("Rebooting in 10s..."); @@ -156,7 +156,7 @@ freeze(); } -noreturn static void crash(int sig) { +_noreturn_ static void crash(int sig) { struct sigaction sa; pid_t pid; diff -Naur systemd-238/src/core/mount-setup.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/mount-setup.c --- systemd-238/src/core/mount-setup.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/mount-setup.c 2018-03-22 12:50:37.000000000 +0200 @@ -248,6 +248,7 @@ int mount_cgroup_controllers(char ***join_controllers) { _cleanup_set_free_free_ Set *controllers = NULL; + bool has_argument = !!join_controllers; int r; if (!cg_is_legacy_wanted()) @@ -255,7 +256,7 @@ /* Mount all available cgroup controllers that are built into the kernel. */ - if (!join_controllers) + if (!has_argument) /* The defaults: * mount "cpu" + "cpuacct" together, and "net_cls" + "net_prio". * @@ -300,7 +301,8 @@ t = set_remove(controllers, *i); if (!t) { - free(*i); + if (has_argument) + free(*i); continue; } } diff -Naur systemd-238/src/core/triggers.systemd.in systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/triggers.systemd.in --- systemd-238/src/core/triggers.systemd.in 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/triggers.systemd.in 2018-03-22 12:50:37.000000000 +0200 @@ -84,7 +84,7 @@ end end -%transfiletriggerin -P 100500 -- @tmpfilesdir@ +%transfiletriggerin -P 100500 -p -- @tmpfilesdir@ -- This script will process files installed in @tmpfilesdir@ to create -- tmpfiles automatically. The priority is set such that it will run -- after the sysusers file trigger, but before any other triggers. @@ -97,7 +97,7 @@ end end -%transfiletriggerin -- @udevhwdbdir@ +%transfiletriggerin -p -- @udevhwdbdir@ -- This script will automatically invoke hwdb update if files have been -- installed or updated in @udevhwdbdir@. if posix.access("/run/systemd/system") then @@ -109,7 +109,7 @@ end end -%transfiletriggerin -- @catalogdir@ +%transfiletriggerin -p -- @catalogdir@ -- This script will automatically invoke journal catalog update if files -- have been installed or updated in @catalogdir@. if posix.access("/run/systemd/system") then @@ -121,7 +121,7 @@ end end -%transfiletriggerin -- @udevrulesdir@ +%transfiletriggerin -p -- @udevrulesdir@ -- This script will automatically update udev with new rules if files -- have been installed or updated in @udevrulesdir@. if posix.access("/run/systemd/system") then @@ -133,7 +133,7 @@ end end -%transfiletriggerin -- @sysctldir@ +%transfiletriggerin -p -- @sysctldir@ -- This script will automatically apply sysctl rules if files have been -- installed or updated in @sysctldir@. if posix.access("/run/systemd/system") then @@ -145,7 +145,7 @@ end end -%transfiletriggerin -- @binfmtdir@ +%transfiletriggerin -p -- @binfmtdir@ -- This script will automatically apply binfmt rules if files have been -- installed or updated in @binfmtdir@. if posix.access("/run/systemd/system") then diff -Naur systemd-238/src/core/umount.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/umount.c --- systemd-238/src/core/umount.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/umount.c 2018-03-22 12:50:37.000000000 +0200 @@ -61,6 +61,8 @@ LIST_REMOVE(mount_point, *head, m); free(m->path); + free(m->options); + free(m->type); free(m); } @@ -313,7 +315,7 @@ if (!node) return -ENOMEM; - m = new(MountPoint, 1); + m = new0(MountPoint, 1); if (!m) { free(node); return -ENOMEM; diff -Naur systemd-238/src/core/unit.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/unit.c --- systemd-238/src/core/unit.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/core/unit.c 2018-03-22 12:50:37.000000000 +0200 @@ -2502,8 +2502,11 @@ } } - manager_recheck_journal(m); - manager_recheck_dbus(m); + if (!MANAGER_IS_RELOADING(u->manager)) { + manager_recheck_journal(m); + manager_recheck_dbus(m); + } + unit_trigger_notify(u); if (!MANAGER_IS_RELOADING(u->manager)) { diff -Naur systemd-238/src/journal/journal-verify.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/journal/journal-verify.c --- systemd-238/src/journal/journal-verify.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/journal/journal-verify.c 2018-03-22 12:50:37.000000000 +0200 @@ -1245,7 +1245,7 @@ } if (entry_monotonic_set && - (!sd_id128_equal(entry_boot_id, f->header->boot_id) || + (sd_id128_equal(entry_boot_id, f->header->boot_id) && entry_monotonic != le64toh(f->header->tail_entry_monotonic))) { error(0, "Invalid tail monotonic timestamp"); r = -EBADMSG; diff -Naur systemd-238/src/journal/test-journal-interleaving.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/journal/test-journal-interleaving.c --- systemd-238/src/journal/test-journal-interleaving.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/journal/test-journal-interleaving.c 2018-03-22 12:50:37.000000000 +0200 @@ -37,7 +37,7 @@ static bool arg_keep = false; -noreturn static void log_assert_errno(const char *text, int error, const char *file, int line, const char *func) { +_noreturn_ static void log_assert_errno(const char *text, int error, const char *file, int line, const char *func) { log_internal(LOG_CRIT, error, file, line, func, "'%s' failed at %s:%u (%s): %m", text, file, line, func); abort(); diff -Naur systemd-238/src/journal-remote/meson.build systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/journal-remote/meson.build --- systemd-238/src/journal-remote/meson.build 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/journal-remote/meson.build 2018-03-22 12:50:37.000000000 +0200 @@ -61,6 +61,6 @@ meson.add_install_script('sh', '-c', mkdir_p.format('/var/log/journal/remote')) meson.add_install_script('sh', '-c', - 'chown 0:0 $DESTDIR/var/log/journal/remote && - chmod 755 $DESTDIR/var/log/journal/remote || :') + '''chown 0:0 $DESTDIR/var/log/journal/remote && + chmod 755 $DESTDIR/var/log/journal/remote || :''') endif diff -Naur systemd-238/src/libsystemd/sd-bus/bus-socket.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/libsystemd/sd-bus/bus-socket.c --- systemd-238/src/libsystemd/sd-bus/bus-socket.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/libsystemd/sd-bus/bus-socket.c 2018-03-22 12:50:37.000000000 +0200 @@ -960,14 +960,9 @@ if (r == 0) { /* Child */ - safe_close(s[0]); - if (rearrange_stdio(s[1], s[1], STDERR_FILENO) < 0) _exit(EXIT_FAILURE); - (void) fd_nonblock(STDIN_FILENO, false); - (void) fd_nonblock(STDOUT_FILENO, false); - if (b->exec_argv) execvp(b->exec_path, b->exec_argv); else { diff -Naur systemd-238/src/nspawn/nspawn.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/nspawn/nspawn.c --- systemd-238/src/nspawn/nspawn.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/nspawn/nspawn.c 2018-03-22 12:50:37.000000000 +0200 @@ -2323,10 +2323,15 @@ arg_uid_shift, arg_uid_range, arg_selinux_apifs_context); - if (r < 0) return r; + if (!arg_network_namespace_path && arg_private_network) { + r = unshare(CLONE_NEWNET); + if (r < 0) + return log_error_errno(errno, "Failed to unshare network namespace: %m"); + } + r = mount_sysfs(NULL, arg_mount_settings); if (r < 0) return r; @@ -2341,7 +2346,7 @@ if (arg_use_cgns && cg_ns_supported()) { r = unshare(CLONE_NEWCGROUP); if (r < 0) - return log_error_errno(errno, "Failed to unshare cgroup namespace"); + return log_error_errno(errno, "Failed to unshare cgroup namespace: %m"); r = mount_cgroups( "", arg_unified_cgroup_hierarchy, @@ -2568,7 +2573,6 @@ ssize_t l; int r; _cleanup_close_ int fd = -1; - bool create_netns; assert(barrier); assert(directory); @@ -2811,11 +2815,8 @@ if (fd < 0) return fd; - create_netns = !arg_network_namespace_path && arg_private_network; - pid = raw_clone(SIGCHLD|CLONE_NEWNS| arg_clone_ns_flags | - (create_netns ? CLONE_NEWNET : 0) | (arg_userns_mode != USER_NAMESPACE_NO ? CLONE_NEWUSER : 0)); if (pid < 0) return log_error_errno(errno, "Failed to fork inner child: %m"); diff -Naur systemd-238/src/shared/pager.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/shared/pager.c --- systemd-238/src/shared/pager.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/shared/pager.c 2018-03-22 12:50:37.000000000 +0200 @@ -47,7 +47,7 @@ static bool stdout_redirected = false; static bool stderr_redirected = false; -noreturn static void pager_fallback(void) { +_noreturn_ static void pager_fallback(void) { int r; r = copy_bytes(STDIN_FILENO, STDOUT_FILENO, (uint64_t) -1, 0); diff -Naur systemd-238/src/systemctl/systemctl.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/systemctl/systemctl.c --- systemd-238/src/systemctl/systemctl.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/systemctl/systemctl.c 2018-03-22 12:50:37.000000000 +0200 @@ -2915,8 +2915,8 @@ return log_error_errno(r, "Failed to request match for PropertiesChanged signal: %m"); } - log_debug("%s manager for %s on %s, %s", - arg_dry_run ? "Would call" : "Calling", + log_debug("%s dbus call org.freedesktop.systemd1.Manager %s(%s, %s)", + arg_dry_run ? "Would execute" : "Executing", method, name, mode); if (arg_dry_run) return 0; @@ -3215,6 +3215,10 @@ if (!m) return log_oom(); + log_debug("%s wall message \"%s\".", arg_dry_run ? "Would set" : "Setting", m); + if (arg_dry_run) + return 0; + r = sd_bus_call_method( bus, "org.freedesktop.login1", @@ -3285,6 +3289,10 @@ polkit_agent_open_maybe(); (void) logind_set_wall_message(); + log_debug("%s org.freedesktop.login1.Manager %s dbus call.", arg_dry_run ? "Would execute" : "Executing", method); + if (arg_dry_run) + return 0; + r = sd_bus_call_method( bus, "org.freedesktop.login1", @@ -3483,6 +3491,9 @@ return 0; } + if (access(KEXEC, X_OK) < 0) + return log_error_errno(errno, KEXEC" is not available: %m"); + r = find_esp_and_warn(arg_esp_path, false, &where, NULL, NULL, NULL, NULL); if (r == -ENOKEY) /* find_esp_and_warn() doesn't warn about this case */ return log_error_errno(r, "Cannot find the ESP partition mount point."); @@ -3511,9 +3522,12 @@ if (!options) return log_oom(); - log_debug("%s kexec kernel %s initrd %s options \"%s\".", - arg_dry_run ? "Would load" : "loading", - kernel, initrd, options); + log_full(arg_quiet ? LOG_DEBUG : LOG_INFO, + "%s "KEXEC" --load \"%s\" --append \"%s\"%s%s%s", + arg_dry_run ? "Would run" : "Running", + kernel, + options, + initrd ? " --initrd \"" : NULL, strempty(initrd), initrd ? "\"" : ""); if (arg_dry_run) return 0; @@ -3521,7 +3535,6 @@ if (r < 0) return r; if (r == 0) { - const char* const args[] = { KEXEC, "--load", kernel, @@ -3534,7 +3547,13 @@ _exit(EXIT_FAILURE); } - return wait_for_terminate_and_check("kexec", pid, WAIT_LOG); + r = wait_for_terminate_and_check("kexec", pid, WAIT_LOG); + if (r < 0) + return r; + if (r > 0) + /* Command failed */ + return -EPROTO; + return 0; } static int set_exit_code(uint8_t code) { @@ -3592,7 +3611,9 @@ } else if (a == ACTION_KEXEC) { r = load_kexec_kernel(); - if (r < 0) + if (r < 0 && arg_force >= 1) + log_notice("Failed to load kexec kernel, continuing without."); + else if (r < 0) return r; } else if (a == ACTION_EXIT && argc > 1) { diff -Naur systemd-238/src/sysusers/sysusers.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/sysusers/sysusers.c --- systemd-238/src/sysusers/sysusers.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/sysusers/sysusers.c 2018-03-22 12:50:37.000000000 +0200 @@ -396,6 +396,7 @@ static int write_temporary_passwd(const char *passwd_path, FILE **tmpfile, char **tmpfile_path) { _cleanup_fclose_ FILE *original = NULL, *passwd = NULL; _cleanup_(unlink_and_freep) char *passwd_tmp = NULL; + struct passwd *pw = NULL; Iterator iterator; Item *i; int r; @@ -409,7 +410,6 @@ original = fopen(passwd_path, "re"); if (original) { - struct passwd *pw; r = sync_rights(original, passwd); if (r < 0) @@ -430,6 +430,11 @@ } errno = 0; + + /* Make sure we keep the NIS entries (if any) at the end. */ + if (IN_SET(pw->pw_name[0], '+', '-')) + break; + if (putpwent(pw, passwd) < 0) return errno ? -errno : -EIO; @@ -467,6 +472,19 @@ if (putpwent(&n, passwd) != 0) return errno ? -errno : -EIO; } + errno = 0; + + /* Append the remaining NIS entries if any */ + while (pw) { + errno = 0; + if (putpwent(pw, passwd) < 0) + return errno ? -errno : -EIO; + + errno = 0; + pw = fgetpwent(original); + } + if (!IN_SET(errno, 0, ENOENT)) + return -errno; r = fflush_and_check(passwd); if (r < 0) @@ -482,6 +500,7 @@ static int write_temporary_shadow(const char *shadow_path, FILE **tmpfile, char **tmpfile_path) { _cleanup_fclose_ FILE *original = NULL, *shadow = NULL; _cleanup_(unlink_and_freep) char *shadow_tmp = NULL; + struct spwd *sp = NULL; Iterator iterator; long lstchg; Item *i; @@ -498,7 +517,6 @@ original = fopen(shadow_path, "re"); if (original) { - struct spwd *sp; r = sync_rights(original, shadow); if (r < 0) @@ -519,6 +537,11 @@ } errno = 0; + + /* Make sure we keep the NIS entries (if any) at the end. */ + if (IN_SET(sp->sp_namp[0], '+', '-')) + break; + if (putspent(sp, shadow) < 0) return errno ? -errno : -EIO; @@ -551,6 +574,19 @@ if (putspent(&n, shadow) != 0) return errno ? -errno : -EIO; } + errno = 0; + + /* Append the remaining NIS entries if any */ + while (sp) { + errno = 0; + if (putspent(sp, shadow) < 0) + return errno ? -errno : -EIO; + + errno = 0; + sp = fgetspent(original); + } + if (!IN_SET(errno, 0, ENOENT)) + return -errno; r = fflush_sync_and_check(shadow); if (r < 0) @@ -567,6 +603,7 @@ _cleanup_fclose_ FILE *original = NULL, *group = NULL; _cleanup_(unlink_and_freep) char *group_tmp = NULL; bool group_changed = false; + struct group *gr = NULL; Iterator iterator; Item *i; int r; @@ -580,7 +617,6 @@ original = fopen(group_path, "re"); if (original) { - struct group *gr; r = sync_rights(original, group); if (r < 0) @@ -604,6 +640,12 @@ return -EEXIST; } + errno = 0; + + /* Make sure we keep the NIS entries (if any) at the end. */ + if (IN_SET(gr->gr_name[0], '+', '-')) + break; + r = putgrent_with_members(gr, group); if (r < 0) return r; @@ -635,6 +677,19 @@ group_changed = true; } + errno = 0; + + /* Append the remaining NIS entries if any */ + while (gr) { + errno = 0; + if (putgrent(gr, group) != 0) + return errno > 0 ? -errno : -EIO; + + errno = 0; + gr = fgetgrent(original); + } + if (!IN_SET(errno, 0, ENOENT)) + return -errno; r = fflush_sync_and_check(group); if (r < 0) diff -Naur systemd-238/src/test/test-cgroup-util.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/test/test-cgroup-util.c --- systemd-238/src/test/test-cgroup-util.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/test/test-cgroup-util.c 2018-03-22 12:50:37.000000000 +0200 @@ -408,9 +408,15 @@ static void test_cg_get_keyed_attribute(void) { _cleanup_free_ char *val = NULL; char *vals3[3] = {}, *vals3a[3] = {}; - int i; + int i, r; - assert_se(cg_get_keyed_attribute("cpu", "/init.scope", "no_such_file", STRV_MAKE("no_such_attr"), &val) == -ENOENT); + r = cg_get_keyed_attribute("cpu", "/init.scope", "no_such_file", STRV_MAKE("no_such_attr"), &val); + if (r == -ENOMEDIUM) { + log_info_errno(r, "Skipping most of %s, /sys/fs/cgroup not accessible: %m", __func__); + return; + } + + assert_se(r == -ENOENT); assert_se(val == NULL); if (access("/sys/fs/cgroup/init.scope/cpu.stat", R_OK) < 0) { diff -Naur systemd-238/src/test/test-fileio.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/test/test-fileio.c --- systemd-238/src/test/test-fileio.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/test/test-fileio.c 2018-03-22 12:50:37.000000000 +0200 @@ -406,7 +406,7 @@ static void test_write_string_stream(void) { char fn[] = "/tmp/test-write_string_stream-XXXXXX"; - _cleanup_fclose_ FILE *f = NULL; + FILE *f = NULL; int fd; char buf[64]; @@ -416,8 +416,9 @@ f = fdopen(fd, "r"); assert_se(f); assert_se(write_string_stream(f, "boohoo", 0) < 0); + f = safe_fclose(f); - f = freopen(fn, "r+", f); + f = fopen(fn, "r+"); assert_se(f); assert_se(write_string_stream(f, "boohoo", 0) == 0); @@ -425,8 +426,9 @@ assert_se(fgets(buf, sizeof(buf), f)); assert_se(streq(buf, "boohoo\n")); + f = safe_fclose(f); - f = freopen(fn, "w+", f); + f = fopen(fn, "w+"); assert_se(f); assert_se(write_string_stream(f, "boohoo", WRITE_STRING_FILE_AVOID_NEWLINE) == 0); @@ -435,6 +437,7 @@ assert_se(fgets(buf, sizeof(buf), f)); printf(">%s<", buf); assert_se(streq(buf, "boohoo")); + f = safe_fclose(f); unlink(fn); } @@ -607,7 +610,8 @@ char name[] = "/tmp/test-systemd_writing_tmpfile.XXXXXX"; _cleanup_free_ char *contents = NULL; size_t size; - int fd, r; + int r; + _cleanup_close_ int fd = -1; struct iovec iov[3]; iov[0] = IOVEC_MAKE_STRING("abc\n"); diff -Naur systemd-238/src/test/test-mount-util.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/test/test-mount-util.c --- systemd-238/src/test/test-mount-util.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/test/test-mount-util.c 2018-03-22 12:50:37.000000000 +0200 @@ -80,12 +80,8 @@ int mnt_id = PTR_TO_INT(k), mnt_id2; r = path_get_mnt_id(p, &mnt_id2); - if (r == -EOPNOTSUPP) { /* kernel or file system too old? */ - log_debug("%s doesn't support mount IDs\n", p); - continue; - } - if (IN_SET(r, -EACCES, -EPERM)) { - log_debug("Can't access %s\n", p); + if (r < 0) { + log_debug_errno(r, "Failed to get the mnt id of %s: %m\n", p); continue; } diff -Naur systemd-238/src/test/test-process-util.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/test/test-process-util.c --- systemd-238/src/test/test-process-util.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/test/test-process-util.c 2018-03-22 12:50:37.000000000 +0200 @@ -193,6 +193,8 @@ assert_se(pid == 0); assert_se(unshare(CLONE_NEWNS) >= 0); + assert_se(mount(NULL, "/", NULL, MS_PRIVATE|MS_REC, NULL) >= 0); + fd = mkostemp(path, O_CLOEXEC); assert_se(fd >= 0); diff -Naur systemd-238/src/udev/collect/collect.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/udev/collect/collect.c --- systemd-238/src/udev/collect/collect.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/udev/collect/collect.c 2018-03-22 12:50:37.000000000 +0200 @@ -58,7 +58,7 @@ return container_of(node, struct _mate, node); } -noreturn static void sig_alrm(int signo) +_noreturn_ static void sig_alrm(int signo) { exit(4); } diff -Naur systemd-238/src/udev/udev-builtin-net_id.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/udev/udev-builtin-net_id.c --- systemd-238/src/udev/udev-builtin-net_id.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/udev/udev-builtin-net_id.c 2018-03-22 12:50:37.000000000 +0200 @@ -297,7 +297,7 @@ if (snprintf_ok(str, sizeof str, "%s/%s/address", slots, dent->d_name) && read_one_line_file(str, &address) >= 0) /* match slot address with device by stripping the function */ - if (streq(address, udev_device_get_sysname(names->pcidev))) + if (startswith(udev_device_get_sysname(names->pcidev), address)) hotplug_slot = i; if (hotplug_slot > 0) diff -Naur systemd-238/src/udev/v4l_id/v4l_id.c systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/udev/v4l_id/v4l_id.c --- systemd-238/src/udev/v4l_id/v4l_id.c 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/src/udev/v4l_id/v4l_id.c 2018-03-22 12:50:37.000000000 +0200 @@ -68,9 +68,11 @@ printf("ID_V4L_VERSION=2\n"); printf("ID_V4L_PRODUCT=%s\n", v2cap.card); printf("ID_V4L_CAPABILITIES=:"); - if ((v2cap.capabilities & V4L2_CAP_VIDEO_CAPTURE) > 0) + if ((v2cap.capabilities & V4L2_CAP_VIDEO_CAPTURE) > 0 || + (v2cap.capabilities & V4L2_CAP_VIDEO_CAPTURE_MPLANE) > 0) printf("capture:"); - if ((v2cap.capabilities & V4L2_CAP_VIDEO_OUTPUT) > 0) + if ((v2cap.capabilities & V4L2_CAP_VIDEO_OUTPUT) > 0 || + (v2cap.capabilities & V4L2_CAP_VIDEO_OUTPUT_MPLANE) > 0) printf("video_output:"); if ((v2cap.capabilities & V4L2_CAP_VIDEO_OVERLAY) > 0) printf("video_overlay:"); diff -Naur systemd-238/units/system-update-cleanup.service.in systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/units/system-update-cleanup.service.in --- systemd-238/units/system-update-cleanup.service.in 2018-03-06 00:16:37.000000000 +0200 +++ systemd-stable-c58ab03f64890e7db88745a843bd4520e307099b/units/system-update-cleanup.service.in 2018-03-22 12:50:37.000000000 +0200 @@ -14,6 +14,7 @@ DefaultDependencies=no Conflicts=shutdown.target Before=shutdown.target +SuccessAction=reboot # system-update-generator uses laccess("/system-update"), while a plain # ConditionPathExists=/system-update uses access("/system-update"), so @@ -32,4 +33,3 @@ [Service] Type=oneshot ExecStart=/bin/rm -fv /system-update -SuccessAction=reboot