platform/upstream/systemd.git
8 years agoshared/install: add helper function unit_file_changes_have_modification()
Zbigniew Jędrzejewski-Szmek [Sun, 17 Apr 2016 19:56:46 +0000 (15:56 -0400)]
shared/install: add helper function unit_file_changes_have_modification()

As suggested in review of #3049.

8 years agoVarious formatting and style fixes
Zbigniew Jędrzejewski-Szmek [Sun, 17 Apr 2016 19:43:16 +0000 (15:43 -0400)]
Various formatting and style fixes

8 years agoinstall: allow paths like LookupPath.generator to be NULL
Zbigniew Jędrzejewski-Szmek [Sun, 17 Apr 2016 03:08:23 +0000 (23:08 -0400)]
install: allow paths like LookupPath.generator to be NULL

Fixes #3047.

8 years agotree-wide: introduce PATH_IN_SET macro
Zbigniew Jędrzejewski-Szmek [Sun, 17 Apr 2016 02:52:06 +0000 (22:52 -0400)]
tree-wide: introduce PATH_IN_SET macro

8 years agosystemctl/core: ignore masked units in preset-all
Zbigniew Jędrzejewski-Szmek [Sat, 16 Apr 2016 23:31:53 +0000 (19:31 -0400)]
systemctl/core: ignore masked units in preset-all

With any masked unit that would that would be enabled by presets, we'd get:

test@rawhide $ sudo systemctl preset-all
Failed to execute operation: Unit file is masked.

test@rawhide $ sudo systemctl --root=/ preset-all
Operation failed: Cannot send after transport endpoint shutdown

Simply ignore those units:

test@rawhide $ sudo systemctl preset-all
Unit xxx.service is masked, ignoring.

8 years agotree-wide: use ERFKILL instead of ESHUTDOWN for "unit masked"
Zbigniew Jędrzejewski-Szmek [Sat, 16 Apr 2016 22:41:34 +0000 (18:41 -0400)]
tree-wide: use ERFKILL instead of ESHUTDOWN for "unit masked"

If the error code ever leaks (we print the strerror error instead of providing
our own), the message for ESHUTDOWN is "Cannot send after transport endpoint
shutdown", which can be misleading. In particular it suggest that some
mishandling of the dbus connection occured. Let's change that to ERFKILL which
has the advantage that a) it sounds implausible as actual error, b) has the
connotation of disabling something manually.

8 years agojournald: rewrite function with switch, fix handling of -ESHUTDOWN
Zbigniew Jędrzejewski-Szmek [Sat, 16 Apr 2016 22:31:42 +0000 (18:31 -0400)]
journald: rewrite function with switch, fix handling of -ESHUTDOWN

The comments and the log messages are next to one another, so it's easier
to check that the messages match the comments.

The sign was omitted in the check for -ESHUTDOWN, so it was never matched.

8 years agosd-bus: use IN_SET
Zbigniew Jędrzejewski-Szmek [Sat, 16 Apr 2016 22:21:58 +0000 (18:21 -0400)]
sd-bus: use IN_SET

8 years agosystemctl: make --root=/ disable dbus again
Zbigniew Jędrzejewski-Szmek [Sat, 16 Apr 2016 21:41:46 +0000 (17:41 -0400)]
systemctl: make --root=/ disable dbus again

Before 0f03c2a4c093 specifying any path would cause the systemctl client
to do the installation itself, instead of going over dbus. Restore that
behaviour.

8 years agocore/mount-setup.c: also relabel /dev/shm for selinux (#3039)
Harald Hoyer [Thu, 14 Apr 2016 23:14:29 +0000 (01:14 +0200)]
core/mount-setup.c: also relabel /dev/shm for selinux (#3039)

daemons, which wish to transition state from the initramfs to the real
root, might use /dev/shm for their state.

As /dev is not relabeled across mount points, /dev/shm has to be
relabled explicitly.

8 years agoMerge pull request #3036 from evverx/add-ldl
Daniel Mack [Thu, 14 Apr 2016 16:13:34 +0000 (18:13 +0200)]
Merge pull request #3036 from evverx/add-ldl

build-sys: add missing -ldl

8 years agonetworkd: Add support to configure proxy arp support to interfaces (#3020)
Susant Sahani [Thu, 14 Apr 2016 09:56:57 +0000 (15:26 +0530)]
networkd: Add support to configure proxy arp support to interfaces (#3020)

Fixes: #2889

8 years agoMerge pull request #3029 from ipuustin/supplementary-gids
Daniel Mack [Thu, 14 Apr 2016 08:41:27 +0000 (10:41 +0200)]
Merge pull request #3029 from ipuustin/supplementary-gids

sd-bus: query pid also when requesting supplementary gids information

8 years agoMerge pull request #3033 from keszybz/code-cleanups
Martin Pitt [Thu, 14 Apr 2016 08:14:41 +0000 (10:14 +0200)]
Merge pull request #3033 from keszybz/code-cleanups

Code cleanups

8 years agosystemctl: fix leak
Zbigniew Jędrzejewski-Szmek [Thu, 14 Apr 2016 01:11:28 +0000 (21:11 -0400)]
systemctl: fix leak

CID #1354670.

8 years agoshared/path-lookup: fix leak
Zbigniew Jędrzejewski-Szmek [Thu, 14 Apr 2016 01:10:33 +0000 (21:10 -0400)]
shared/path-lookup: fix leak

CID #1354671: char **l would be leaked.

Also rename l to paths, to make the code easier to read,
and do strv deduplication immediately when extending. No need to allocate
strings to remove them a few lines down.

8 years agotest-strv: add a test that extending empty strv works as expected
Zbigniew Jędrzejewski-Szmek [Thu, 14 Apr 2016 01:09:32 +0000 (21:09 -0400)]
test-strv: add a test that extending empty strv works as expected

Just making sure :)

8 years agobuild-sys: add missing -ldl
Evgeny Vereshchagin [Thu, 14 Apr 2016 00:24:58 +0000 (00:24 +0000)]
build-sys: add missing -ldl

Fixes #3035

8 years agotests: don't rely on the host's systemd-nspawn, don't register test machine (#3023)
Evgeny Vereshchagin [Wed, 13 Apr 2016 13:57:06 +0000 (16:57 +0300)]
tests: don't rely on the host's systemd-nspawn, don't register test machine (#3023)

Fixes:
$ cd test/TEST-07-ISSUE-1981/
$ sudo make clean setup run
...
timeout: failed to run command ‘systemd-nspawn’: No such file or directory
...
TEST RUN: https://github.com/systemd/systemd/issues/1981 [FAILED]
Makefile:10: recipe for target 'run' failed
make: *** [run] Error 1

8 years agosd-bus: query pid also when searching for supplementary gids
Ismo Puustinen [Wed, 13 Apr 2016 12:38:03 +0000 (15:38 +0300)]
sd-bus: query pid also when searching for supplementary gids

If the SD_BUS_CREDS_SUPPLEMENTARY_GIDS value is requested, the pid is
queried to find out the supplementary gids value from /proc/pid/status.
Otherwise sd_bus_creds_get_supplementary_gids() won't work unless some
other value in mask triggered fetching the pid information.

8 years agotree-wide: remove useless NULLs from strjoina
Zbigniew Jędrzejewski-Szmek [Sat, 9 Apr 2016 18:04:09 +0000 (14:04 -0400)]
tree-wide: remove useless NULLs from strjoina

The coccinelle patch didn't work in some places, I have no idea why.

8 years agobasic/util: silence stupid gcc warnings about unitialized variable
Zbigniew Jędrzejewski-Szmek [Sat, 9 Apr 2016 02:20:22 +0000 (22:20 -0400)]
basic/util: silence stupid gcc warnings about unitialized variable

8 years agoMerge pull request #2973 from poettering/search-path
Martin Pitt [Tue, 12 Apr 2016 16:20:13 +0000 (18:20 +0200)]
Merge pull request #2973 from poettering/search-path

Many fixes, in particular to the install logic

8 years agoload-fragment: Resolve specifiers in DeviceAllow (#3019)
Nicolas Braud-Santoni [Tue, 12 Apr 2016 16:00:19 +0000 (18:00 +0200)]
load-fragment: Resolve specifiers in DeviceAllow (#3019)

Closes #1602

8 years agosystemctl: when we want to know whether there's a native unit file, don't choke on...
Lennart Poettering [Tue, 12 Apr 2016 14:13:28 +0000 (16:13 +0200)]
systemctl: when we want to know whether there's a native unit file, don't choke on ELOOP

ELOOP indicates that there's a symlink in /etc for a native unit file, and
that's completely OK.

8 years agotest-dnssec: drop unused variable
Lennart Poettering [Tue, 12 Apr 2016 11:51:28 +0000 (13:51 +0200)]
test-dnssec: drop unused variable

8 years agocore: make sure we always free the list of changes
Lennart Poettering [Tue, 12 Apr 2016 11:51:06 +0000 (13:51 +0200)]
core: make sure we always free the list of changes

8 years agoman: shorten the list of unit file paths a bit
Lennart Poettering [Mon, 11 Apr 2016 16:48:31 +0000 (18:48 +0200)]
man: shorten the list of unit file paths a bit

Let's make this more digestable to read by making the list of documented unit
file paths a bit shorter.

Specifically, let's drop references to $XDG_CONFIG_HOME and $XDG_DATA_HOME, as
their default values are listed too already. Given that the fact that the XDG
basedir spec makes these paths configurable is probably not a strong point of
the spec, let's drop the reference to the env vars, and keep only the literal,
default paths for them in the list. Of course, we do support the full XDG
basedir spec in this regard, but it's one thing to implement it and another one
to recommend it by documenting it.

Replace "$HOME" by "~", because UNIX.

8 years agocore: keep track of the mtime of the transient unit file we wrote
Lennart Poettering [Mon, 11 Apr 2016 16:20:02 +0000 (18:20 +0200)]
core: keep track of the mtime of the transient unit file we wrote

Otherwise "systemctl status" will immediately report that our unit file is out
of date.

8 years agoupdate TODO
Lennart Poettering [Wed, 24 Feb 2016 16:20:12 +0000 (17:20 +0100)]
update TODO

8 years agosd-lldp: minor whitespace fixes
Lennart Poettering [Mon, 11 Apr 2016 16:07:45 +0000 (18:07 +0200)]
sd-lldp: minor whitespace fixes

8 years agosd-lldp: drop LLDP ethernet export from sd-lldp.h
Lennart Poettering [Mon, 11 Apr 2016 16:07:04 +0000 (18:07 +0200)]
sd-lldp: drop LLDP ethernet export from sd-lldp.h

We only use it for the Tx code anyway, hence sd-lldp.h shouldn't expose it, as
it only implements Rx.

8 years agocore: make sure we generate a nicer error when a linked unit is attempted to be enabled
Lennart Poettering [Mon, 11 Apr 2016 15:57:05 +0000 (17:57 +0200)]
core: make sure we generate a nicer error when a linked unit is attempted to be enabled

We don't allow using config symlinks to enable units, but the error message we
printed was awful. Fix that, and generate a more readable error.

Fixes #3010.

8 years agomachinectl: add new "machinectl clean" command
Lennart Poettering [Mon, 11 Apr 2016 15:24:08 +0000 (17:24 +0200)]
machinectl: add new "machinectl clean" command

This new command removes all, or all hidden container images that have been
downloaded.

8 years agoREADME: document that we only support util-linux built with --enable-libmount-force...
Lennart Poettering [Fri, 8 Apr 2016 17:13:43 +0000 (19:13 +0200)]
README: document that we only support util-linux built with --enable-libmount-force-mountinfo

Fixes: #2978

8 years agoman: clarify that DefaultDependencies= is in the [Unit] section
Lennart Poettering [Fri, 8 Apr 2016 17:00:00 +0000 (19:00 +0200)]
man: clarify that DefaultDependencies= is in the [Unit] section

This hopefully reduces confusion resulting in issues like #2992.

8 years agotests: override XDG_RUNTIME_DIR where we use the user runtime dir
Lennart Poettering [Fri, 8 Apr 2016 16:54:05 +0000 (18:54 +0200)]
tests: override XDG_RUNTIME_DIR where we use the user runtime dir

We don#t really support systems where XDG_RUNTIME_DIR is not supported for
systemd --user. Hence, let's always set our own XDG_RUNTIME_DIR for tests that
involve systemd --user, so that we know it is set, and that it doesn't polute
the user's actual runtime dir.

8 years agocore: optimize unit_write_drop_in a bit
Lennart Poettering [Fri, 8 Apr 2016 16:13:02 +0000 (18:13 +0200)]
core: optimize unit_write_drop_in a bit

There's no point in first determining the drop-in file name path, then
forgetting it again, and then determining it again. Instead, just generated it
once, and then write to ti directly.

8 years agocore: when creating a drop-in snippet, add a comment explaining this to it
Lennart Poettering [Fri, 8 Apr 2016 16:10:32 +0000 (18:10 +0200)]
core: when creating a drop-in snippet, add a comment explaining this to it

8 years agocore,systemctl: add new "systemctl revert" command
Lennart Poettering [Fri, 8 Apr 2016 16:00:36 +0000 (18:00 +0200)]
core,systemctl: add new "systemctl revert" command

This allows dropping all user configuration and reverting back to the vendor
default of a unit file. It basically undoes what "systemctl edit", "systemctl
set-property" and "systemctl mask" do.

8 years agoinstall: fix errno handling
Lennart Poettering [Fri, 8 Apr 2016 15:59:52 +0000 (17:59 +0200)]
install: fix errno handling

8 years agoinstall: simplify skip_root() a bit
Lennart Poettering [Fri, 8 Apr 2016 15:58:53 +0000 (17:58 +0200)]
install: simplify skip_root() a bit

Exit early, so that we can get rid of the large if block.

8 years agonstall: no need to export unit_file_lookup_state() anymore
Lennart Poettering [Fri, 8 Apr 2016 09:30:24 +0000 (11:30 +0200)]
nstall: no need to export unit_file_lookup_state() anymore

We only use it inside of install.c, hence let's make it static.

8 years agotree-wide: add new SIGNAL_VALID() macro-like function that validates signal numbers
Lennart Poettering [Fri, 8 Apr 2016 09:27:28 +0000 (11:27 +0200)]
tree-wide: add new SIGNAL_VALID() macro-like function that validates signal numbers

And port all code over to use it.

8 years agobasic: remove rbtree code, it's unused
Lennart Poettering [Thu, 7 Apr 2016 17:22:24 +0000 (19:22 +0200)]
basic: remove rbtree code, it's unused

it's unused, and should we need it one day we can always resurrect it from git
history.

8 years agosysv-generator: port to use new unit_file_exists() call
Lennart Poettering [Thu, 7 Apr 2016 17:18:59 +0000 (19:18 +0200)]
sysv-generator: port to use new unit_file_exists() call

The code previously queries the state of a unit file, but was only interested
in the existance of it, hence let's use unit_file_exists() instead, the same
way the SysV compat code in systemctl does it.

8 years agosystemctl: don't confuse sysv code with generated units
Lennart Poettering [Thu, 7 Apr 2016 16:48:01 +0000 (18:48 +0200)]
systemctl: don't confuse sysv code with generated units

The SysV compat code checks whether there's a native unit file before looking
for a SysV init script. Since the newest rework generated units will show up in
the unit path, and hence the checks ended up assuming that there always was a
native unit file for each init script: the generated one.

With this change the generated unit file directory is suppressed from the
search path when this check is done, to avoid the confusion.

8 years agopath-lookup: move generator_binary_paths() to end of file
Lennart Poettering [Thu, 7 Apr 2016 15:51:26 +0000 (17:51 +0200)]
path-lookup: move generator_binary_paths() to end of file

Let's keep the code that manipulates LookupPaths together, and move
generator_binary_paths() to the end of the .h and .c files, since it is not
strictly related to that.

8 years agosystemctl: add error message when we get unexpected event from waitid()
Lennart Poettering [Thu, 7 Apr 2016 15:41:48 +0000 (17:41 +0200)]
systemctl: add error message when we get unexpected event from waitid()

We should log about everything we don't expect.

Also, add a comment for one case were we do not log, on purpose, and make it
use a separate error code.

8 years agosystemctl: fix incorrect errno for error message
Lennart Poettering [Thu, 7 Apr 2016 15:41:35 +0000 (17:41 +0200)]
systemctl: fix incorrect errno for error message

8 years agosystemctl: move check whether a service exists as native unit file to install.c
Lennart Poettering [Thu, 7 Apr 2016 15:40:11 +0000 (17:40 +0200)]
systemctl: move check whether a service exists as native unit file to install.c

Move the search path check from the SysV service compat support into install.c
so that we can reuse the usual algorithm instead of rolling a private loop for
this.

8 years agocore: rework reboot parameter logic a bit
Lennart Poettering [Thu, 7 Apr 2016 14:53:37 +0000 (16:53 +0200)]
core: rework reboot parameter logic a bit

Always warn if something fails, and clarify that the involved utility functions
do so in their name.

Drop the REBOOT_PARAM_FILE macro. We don't do this for other flag file paths
like this, so don't do this for this one either. The path isn't configurable
anyway, hence let's make this easier to read by avoiding this one indirection.

8 years agocore: be more paranoid when mixing umask and fopen()
Lennart Poettering [Thu, 7 Apr 2016 14:15:26 +0000 (16:15 +0200)]
core: be more paranoid when mixing umask and fopen()

Let's be extra careful with the umask when we use simple fopen(), as this
creates files with 0777 by default.

8 years agocore: rework how transient unit files and property drop-ins work
Lennart Poettering [Thu, 7 Apr 2016 13:43:59 +0000 (15:43 +0200)]
core: rework how transient unit files and property drop-ins work

With this change the logic for placing transient unit files and drop-ins
generated via "systemctl set-property" is reworked.

The latter are now placed in the newly introduced "control" unit file
directory. The fomer are now placed in the "transient" unit file directory.

Note that the properties originally set when a transient unit was created will
be written to and stay in the transient unit file directory, while later
changes are done via drop-ins.

This is preparation for a later "systemctl revert" addition, where existing
drop-ins are flushed out, but the original transient definition is restored.

8 years agocore: introduce a "control" unit file directory
Lennart Poettering [Wed, 6 Apr 2016 19:02:36 +0000 (21:02 +0200)]
core: introduce a "control" unit file directory

This patch adds a concept of a "control" unit file directory, which is supposed
to be used as place for unit file drop-ins created by "systemctl set-property"
(note that this directory is not actually hooked up to "systemctl set-property"
yet, that's coming in a later patch).

The rationale for this: previously changes made by the user and by "systemctl
set-property" were done in the same directory, which made semantics very
unclear: the changes made by "systemctl set-property" were applied instantly,
and their drop-ins only written to not lose settings on a later "systemctl
daemon-reload", while drop-ins made by the user would only be in effect after
"systemctl daemon-reload". This is particular problematic as the changes made
by "systemctl set-property" would really apply immediately without any respect
for the unit search path. This meant that using "set-property" could have an
effect that is lsot as soon as "daemon-reload" is issued, in case there was a
"later" drop-in already in place.

With this change the directories are seperated, and the "control" directory
always takes the highest priority of all, to avoid any confusion.

8 years agoinstall: rename generator_paths() → generator_binary_paths()
Lennart Poettering [Wed, 6 Apr 2016 18:48:58 +0000 (20:48 +0200)]
install: rename generator_paths() → generator_binary_paths()

This is too confusing, as this funciton returns the paths to the generator
binaries, while usually when we refer to the just the "generator path" we mean
the generated unit files. Let's clean this up.

8 years agocore: move flushing of generated unit files to path-lookup.c
Lennart Poettering [Wed, 6 Apr 2016 18:47:44 +0000 (20:47 +0200)]
core: move flushing of generated unit files to path-lookup.c

It's very similar to the mkdir and trim operations for the generator dirs,
hence let's unify this at a single place.

8 years agocore: minor coding style fix
Lennart Poettering [Wed, 6 Apr 2016 18:46:52 +0000 (20:46 +0200)]
core: minor coding style fix

8 years agotests: make sure test-path-lookup can run even when no units are installed on test...
Lennart Poettering [Wed, 6 Apr 2016 17:15:12 +0000 (19:15 +0200)]
tests: make sure test-path-lookup can run even when no units are installed on test system

8 years agolocaled: downgrade libxkbcommon to an optional runtime dependency
Lennart Poettering [Wed, 6 Apr 2016 16:23:37 +0000 (18:23 +0200)]
localed: downgrade libxkbcommon to an optional runtime dependency

Previously, libxkbcommon was a compile-time option. When enabled the localed
binary would strictly depend on it, thus pulling in libxkbcommon and its
dependencies, which are non-trivial in size.

With this change we dlopen() libxkbcommon when it is available instead. If the
library is available behaviour is as before. However, if it isn't the system is
considered "headless", i.e. without local hardware and all attempts to set the
local keyboard configuration will be refused.

This is useful for general-purpose distributions which want to support
"headless" (such as container systems) and "full" systems with the same build.

8 years agotest: bump up log level for install root test
Lennart Poettering [Wed, 6 Apr 2016 15:49:27 +0000 (17:49 +0200)]
test: bump up log level for install root test

8 years agoshared: add a temporary work-around for kernel header inclusion fuck-up
Lennart Poettering [Tue, 5 Apr 2016 17:30:31 +0000 (19:30 +0200)]
shared: add a temporary work-around for kernel header inclusion fuck-up

See: #2864

8 years agoinstall: unify checking whether operations may be applied to a unit file in a new...
Lennart Poettering [Mon, 7 Mar 2016 18:15:51 +0000 (19:15 +0100)]
install: unify checking whether operations may be applied to a unit file in a new function

Let's replace repeated code by a single implementation in a single function.

8 years agoinstall: introduce a new unit file state "transient"
Lennart Poettering [Mon, 7 Mar 2016 18:07:30 +0000 (19:07 +0100)]
install: introduce a new unit file state "transient"

Now, that the search path logic knows the unit path for transient units we also
can introduce an explicit unit file state "transient" that clarifies to the
user what kind of unit file he is encountering.

8 years agoinstall: fix root prefix handling
Lennart Poettering [Mon, 7 Mar 2016 16:40:07 +0000 (17:40 +0100)]
install: fix root prefix handling

Previously, we'd execute some operations with the root prefix applied, while
others without (which was a bug). Clean this up: all paths are now prefixed
properly with the root path, and we strip it off when necessary.

(Of course, an alternative option would be to strictly pass around paths
without the prefix prepended and only prepend it right before hitting the disk,
however, I am came to the conclusion this would result in more code.)

8 years agopath-lookup: make user_runtime_dir() more generic
Lennart Poettering [Mon, 29 Feb 2016 19:56:47 +0000 (20:56 +0100)]
path-lookup: make user_runtime_dir() more generic

Let's make the suffix it appends configurable. This way we can reuse it at a second place.

8 years agopath-lookup: clean up user_config_home() and user_runtime_dir()
Lennart Poettering [Mon, 29 Feb 2016 19:41:54 +0000 (20:41 +0100)]
path-lookup: clean up user_config_home() and user_runtime_dir()

Let's modernize these calls a bit.

Also, don't call them from user_dirs() anymore, as we already have both dirs in
the list a second time via the persistent_config and runtime_config function
parameters.

8 years agoupdate CODING_STYLE a bit
Lennart Poettering [Mon, 29 Feb 2016 19:29:53 +0000 (20:29 +0100)]
update CODING_STYLE a bit

8 years agopath-lookup: stop exporting two functions
Lennart Poettering [Fri, 26 Feb 2016 17:35:46 +0000 (18:35 +0100)]
path-lookup: stop exporting two functions

user_runtime_dir() and user_config_home() are not used externally anymore,
hence let's not export them anymore.

8 years agocore: modernize manager_build_unit_patch_cache() a bit
Lennart Poettering [Fri, 26 Feb 2016 17:28:45 +0000 (18:28 +0100)]
core: modernize manager_build_unit_patch_cache() a bit

8 years agocore: don't reorder drop-ins when changing properties
Lennart Poettering [Fri, 26 Feb 2016 16:58:37 +0000 (17:58 +0100)]
core: don't reorder drop-ins when changing properties

The drop-in order we present should actually show what we is in effect, hence
let's not reorder it when writing changes. After all, just sorting
alphabetically is going to break things, as it doesn't respect that /etc breaks
/run breaks /usr...

8 years agocore: don't drop transient drop-ins when loading the rest
Lennart Poettering [Fri, 26 Feb 2016 16:05:33 +0000 (17:05 +0100)]
core: don't drop transient drop-ins when loading the rest

Previously, when creating a transient unit, we'd first add the transient
drop-ins to the unit, and then normally load any other drop-ins later on top of
this, replacing the already loaded drop-ins. Let's not do this, after all the
transient drop-ins area already in effect, let's just add what we find on disk,
but not replace it.

8 years agocore: rework logic to drop duplicate and non-existing items from search path
Lennart Poettering [Thu, 25 Feb 2016 01:32:19 +0000 (02:32 +0100)]
core: rework logic to drop duplicate and non-existing items from search path

Move this into a function of its own, so that we can run it after we ran the
generators, so that it takes into account removed generator dirs.

8 years agopath-lookup: split out logic for mkdir/rmdir of generator dirs in their own functions
Lennart Poettering [Thu, 25 Feb 2016 00:44:30 +0000 (01:44 +0100)]
path-lookup: split out logic for mkdir/rmdir of generator dirs in their own functions

8 years agocore: add a separate unit directory for transient units
Lennart Poettering [Thu, 25 Feb 2016 00:13:57 +0000 (01:13 +0100)]
core: add a separate unit directory for transient units

Previously, transient units were created below the normal runtime directory
/run/systemd/system. With this change they are created in a special transient
directory /run/systemd/transient, which only contains data for transient units.

This clarifies the life-cycle of transient units, and makes clear they are
distinct from user-provided runtime units. In particular, users may now
extend transient units via /run/systemd/system, without systemd interfering
with the life-cycle of these files.

This change also adds code so that when a transient unit exits only the
drop-ins in this new directory are removed, but nothing else.

Fixes: #2139

8 years agopath-lookup: add configured unit paths back into search path
Lennart Poettering [Wed, 24 Feb 2016 23:54:31 +0000 (00:54 +0100)]
path-lookup: add configured unit paths back into search path

After all, for test builds they might differ from /etc/systemd/{user|system},
hence they should be included.

8 years agocore: reuse manager_get_runtime_prefix() at more places
Lennart Poettering [Wed, 24 Feb 2016 23:30:32 +0000 (00:30 +0100)]
core: reuse manager_get_runtime_prefix() at more places

8 years agoinstall: add root directory to LookupPaths structure
Lennart Poettering [Wed, 24 Feb 2016 23:16:51 +0000 (00:16 +0100)]
install: add root directory to LookupPaths structure

We use the root directory parameter while putting together the LookupPaths
structure, hence let's also store it in the structure as-is. That way we can
drop a parameter from half of the functions in install.c

Also, let's move the validation of the root paths into lookup_paths_init() so
that we can drop even more code from install.c

8 years agoinstall: change in_search_path() to take a LookupPaths structure
Lennart Poettering [Wed, 24 Feb 2016 20:47:54 +0000 (21:47 +0100)]
install: change in_search_path() to take a LookupPaths structure

Similar to the other calls that operate on the collected path data.

8 years agoinstall: rename unit_file_is_generated() → path_is_generator()
Lennart Poettering [Wed, 24 Feb 2016 20:45:19 +0000 (21:45 +0100)]
install: rename unit_file_is_generated() → path_is_generator()

This way the funciton name matches nicely our other calls path_is_config() and
path_is_runtime().

8 years agoinstall: be more accurate when checking whether something is runtime configuration
Lennart Poettering [Wed, 24 Feb 2016 20:43:09 +0000 (21:43 +0100)]
install: be more accurate when checking whether something is runtime configuration

Let's actually check the runtime config dir, instead of just /run.

8 years agonetwork: hashmap_put() can fail
Lennart Poettering [Wed, 24 Feb 2016 20:37:42 +0000 (21:37 +0100)]
network: hashmap_put() can fail

Let's properly handle hashmap_put() failing.

8 years agocore: introduce MANAGER_IS_RELOADING() macro
Lennart Poettering [Wed, 24 Feb 2016 20:36:09 +0000 (21:36 +0100)]
core: introduce MANAGER_IS_RELOADING() macro

This replaces the old function call manager_is_reloading_or_reexecuting() which
was used only at very few places. Use the new macro wherever we check whether
we are reloading. This should hopefully make things a bit more readable, given
the nature of Manager:n_reloading being a counter.

8 years agocore: remove ManagerRunningAs enum
Lennart Poettering [Wed, 24 Feb 2016 20:24:23 +0000 (21:24 +0100)]
core: remove ManagerRunningAs enum

Previously, we had two enums ManagerRunningAs and UnitFileScope, that were
mostly identical and converted from one to the other all the time. The latter
had one more value UNIT_FILE_GLOBAL however.

Let's simplify things, and remove ManagerRunningAs and replace it by
UnitFileScope everywhere, thus making the translation unnecessary. Introduce
two new macros MANAGER_IS_SYSTEM() and MANAGER_IS_USER() to simplify checking
if we are running in one or the user context.

8 years agosystemctl: port systemctl over to the new LookupPaths configuration directory fields
Lennart Poettering [Wed, 24 Feb 2016 17:17:42 +0000 (18:17 +0100)]
systemctl: port systemctl over to the new LookupPaths configuration directory fields

8 years agoinstall: make use of configuration directory paths in LookupPaths
Lennart Poettering [Wed, 24 Feb 2016 16:52:45 +0000 (17:52 +0100)]
install: make use of configuration directory paths in LookupPaths

Now that the LookupPaths structure contains the directory paths, let's make use
of that everywhere instead of duplicating the logic.

8 years agocore: add configuration directories to LookupPaths
Lennart Poettering [Wed, 24 Feb 2016 16:18:42 +0000 (17:18 +0100)]
core: add configuration directories to LookupPaths

Let's add a seperate fields for the directories where we place runtime and
persistent configuration, so that we can use this in install.c (to be added in
a later commit), and we store path information in the same place everywhere.

8 years agocore: when enabling a generated unit file, return a clean error
Lennart Poettering [Wed, 24 Feb 2016 15:02:48 +0000 (16:02 +0100)]
core: when enabling a generated unit file, return a clean error

Let's be precise when the user tries to invoke an "enable" operation on a
generated unit file.

8 years agocore: add a new unit file state "generated"
Lennart Poettering [Wed, 24 Feb 2016 14:44:46 +0000 (15:44 +0100)]
core: add a new unit file state "generated"

Now that we store the generator directories in LookupPaths we can use this to
intrdouce a new unit file state called "generated", for units in these
directories.

Fixes: #2348

8 years agocore: rework generator dir logic, move the dirs into LookupPaths structure
Lennart Poettering [Wed, 24 Feb 2016 14:31:33 +0000 (15:31 +0100)]
core: rework generator dir logic, move the dirs into LookupPaths structure

A long time ago – when generators where first introduced – the directories for
them were randomly created via mkdtemp(). This was changed later so that they
use fixed name directories now. Let's make use of this, and add the genrator
dirs to the LookupPaths structure and into the unit file search path maintained
in it. This has the benefit that the generator dirs are now normal part of the
search path for all tools, and thus are shown in "systemctl list-unit-files"
too.

8 years agoman: minor nspawn doc fixes
Lennart Poettering [Wed, 24 Feb 2016 13:08:53 +0000 (14:08 +0100)]
man: minor nspawn doc fixes

8 years agocore: drop SysV paths from path-lookup logic
Lennart Poettering [Tue, 23 Feb 2016 19:38:53 +0000 (20:38 +0100)]
core: drop SysV paths from path-lookup logic

We don't need it anymore, give that sysv-generator can determine the path on
its own now.

8 years agosysv-generator: don't use LookupPath logic for determining SysV paths
Lennart Poettering [Tue, 23 Feb 2016 19:37:37 +0000 (20:37 +0100)]
sysv-generator: don't use LookupPath logic for determining SysV paths

The sysv-generator is the only user of the SysV paths these days, let's make it
figure out the right paths on its own.

(In a subsequent commit we can then drop the same logic from LookupPath).

8 years agoimport: drop unused definition
Lennart Poettering [Tue, 23 Feb 2016 19:29:06 +0000 (20:29 +0100)]
import: drop unused definition

8 years agoMerge pull request #3016 from martinpitt/systemctl-enable
Lennart Poettering [Tue, 12 Apr 2016 09:34:44 +0000 (11:34 +0200)]
Merge pull request #3016 from martinpitt/systemctl-enable

Install: correctly report symlink creations

8 years agoDo not report masked units as changed (#2921)
Zbigniew Jędrzejewski-Szmek [Tue, 12 Apr 2016 09:10:57 +0000 (05:10 -0400)]
Do not report masked units as changed (#2921)

* core/unit: extract checking of stat paths into helper function

The same code was repeated three times.

* core: treat masked files as "unchanged"

systemctl prints the "unit file changed on disk" warning
for a masked unit. I think it's better to print nothing in that
case.

When a masked unit is loaded, set mtime as 0. When checking
if a unit with mtime of 0 needs reload, check that the mask
is still in place.

* test-dnssec: fix build without gcrypt

Also reorder the test functions to follow the way they are called
from main().

8 years agorules: set SYSTEMD_READY=0 on DM_UDEV_DISABLE_OTHER_RULES_FLAG=1 only with ADD event...
Lukáš Nykrýn [Tue, 12 Apr 2016 05:44:28 +0000 (07:44 +0200)]
rules: set SYSTEMD_READY=0 on DM_UDEV_DISABLE_OTHER_RULES_FLAG=1 only with ADD event (#2747)

The "SYSTEMD_READY=0" will cause automatic unmount
of mountpoint that is on top of such DM device
if this is used with multipath which sets
DM_UDEV_DISABLE_OTHER_RULES_FLAG in case
we have a CHANGE event thatcomes after DM multipath
device reload when one of the paths is down or up.

See https://bugzilla.redhat.com/show_bug.cgi?id=1312011

8 years agotests: port udev-test to log_*_errno (#3015)
Evgeny Vereshchagin [Mon, 11 Apr 2016 19:31:57 +0000 (22:31 +0300)]
tests: port udev-test to log_*_errno (#3015)

SYSTEMD_LOG_LEVEL=debug test/udev-test.pl is working now
Also, fixes CID 1354602

8 years agoInstall: correctly report symlink creations
Martin Pitt [Mon, 11 Apr 2016 19:03:29 +0000 (21:03 +0200)]
Install: correctly report symlink creations

All callers of create_symlink(), such as install_info_symlink_wants(), expect
that to return > 0 if it actually did something, and then return that number.
unit_file_enable() uses that to determine if any action was done
(carries_install_info != 0) and if not, show a "The unit files have no
[Install] section" warning.

Return 1 instead of 0 in the two code paths of create_symlink() when the link
was created or replaced with a new value.

This fixes getting a bogus "No [Install] section" warning when enabling a unit
with full path, like "systemctl enable /some/path/myunit.service".

8 years agoMerge pull request #3014 from msekletar/nspawn-empty-machine-id-v3
Lennart Poettering [Mon, 11 Apr 2016 15:27:11 +0000 (17:27 +0200)]
Merge pull request #3014 from msekletar/nspawn-empty-machine-id-v3

nspawn: always setup machine id (v3)