Commit graph

1268 commits

Author SHA1 Message Date
Lennart Poettering cc37738108 logind: port logind to libsystemd-bus 2013-11-05 01:13:05 +01:00
Tom Gundersen be32eb9b7f net-config: start split out matching and parsing logic
Move this to src/share/net-util.c, so it can be used elsewhere.
2013-11-04 23:00:12 +01:00
David Herrmann 0a8da8305a rules: load path_id on DRM devices
The path_id-builtin provides useful unique aliases for DRM devices. If we
want to configure DRM render-nodes for compositors, we want to avoid
storing the whole sys-path in configuration files. Hence, allow users to
store the short PATH_ID instead.

Load path_id-builtin unconditionally on DRM devices now to always provide
this alias.
2013-11-03 13:12:13 +01:00
Simon Peeters b028f3e410 hostnamectl: port to sd-bus
Kay:
 - rebase to new transport logic
 - replaced iteration macro with property map
2013-11-02 02:15:54 +01:00
Ronny Chevalier d74ab85216 zsh-completion: add systemd-run 2013-10-30 22:45:18 -04:00
Lennart Poettering 04d3927924 machinectl: add new command to spawn a getty inside a container 2013-10-31 01:43:38 +01:00
Lennart Poettering 4ba9328022 nspawn: split out pty forwaring logic into ptyfwd.c 2013-10-31 01:43:38 +01:00
Kay Sievers 4d7859d173 localectl: port to libsystemd-bus 2013-10-30 22:50:09 +01:00
Thomas Hindoe Paaboel Andersen a281d9c785 timedatectl: port to sd-bus 2013-10-30 21:13:46 +01:00
Lennart Poettering a7893c6b28 bus: add API call to create bus connection to the system bus of local containers
Also, add support for this to machinectl, so that we can enumerate the
machines that run inside a container. We must go deeper!
2013-10-30 15:37:02 +01:00
Tom Gundersen 3e137a1b9a udev: link-config - let udevd set the ifname 2013-10-30 15:36:04 +01:00
Tom Gundersen a1da85830b machinectl: port to sd-bus 2013-10-30 03:40:23 +01:00
Kay Sievers 77632684f3 build-sys: remove default CFLAGS assignment 2013-10-30 02:39:32 +01:00
Lennart Poettering c335068380 machined: port over to libsystemd-bus 2013-10-30 02:08:57 +01:00
Tom Gundersen 3aeb37bc4f rtnl: move set_link_properties to rtnl-utils 2013-10-29 21:26:22 +01:00
Tom Gundersen 5fde13d748 udev: link-config - add proper parsing 2013-10-29 14:17:57 +01:00
Tom Gundersen 0b99c9f8f0 udev: builtin - rename net_link to net_setup_link
Also add shell completions.
2013-10-29 14:17:57 +01:00
Tom Gundersen 9dc670ea76 network: move configuration to /etc/systemd/network
This is private configuraiton, so let's not pollute the namespace (and hence make Debian happy :) ).
2013-10-29 14:17:57 +01:00
Tom Gundersen 3716e8c99c udev: don't mix static and dynamic libs 2013-10-28 18:58:19 +01:00
Tom Gundersen 16b9b87aee udev: link-config - add mac address policy
This introduces a new key MACAddressPolicy.

The possible policies are 'persistent' and 'random'.

'persistent' will do nothing if the current address is the hardware address,
but if the hardware does not have an address (or another address is set for
whatever reason), we will generate an address which will be random, but
persistent between boots (based on machineid and persistent netif name).

'random' will do nothing if the kernel already set a random address, otherwise
it will generate a random one and use that instead.

This patch sets MACAddressPolicy=persistent in the default .link file.
2013-10-28 18:10:23 +01:00
Tom Gundersen daeb71a36a udev: link-config - move naming policy from udev rules
This introduces a new key NamePolicy, which takes an ordered list of naming
policies. The first successful one is applide. If all fail the value of Name
(if any) is used.

The possible policies are 'onboard', 'slot', 'path' and 'mac'.

This patch introduces a default link file, which replaces the equivalent udev
rule.
2013-10-28 01:18:04 +01:00
Tom Gundersen 43b3a5ef61 udev: link-config: add rtnl support
This adds support for setting the mac address, name and mtu.

Example:

[Link]
MTU=1450
MACAddress=98:76:54:32:10:ab
Name=wireless0
2013-10-27 22:23:58 +01:00
Tom Gundersen 65f568bbeb libsystemd-rtnl: add a rtnetlink library
This is intentionally as similar to sd-bus as possible. While it
would be simple to export it, the intentions is to keep this
internal (at least for the forseeable future).

Currently only synchronous communication is implemented
2013-10-27 22:18:34 +01:00
Tom Gundersen a501033335 udev: link-config: add ethtool support
This adds support for setting the link speed, duplex and WakeOnLan
settings.

Example:

[Link]
SpeedMBytes=100
Duplex=half
WakeOnLan=magic
2013-10-26 22:09:20 +02:00
Tom Gundersen af6f0d422c udev: add network link configuration tool
This tool applies hardware specific settings to network devices before they
are announced via libudev.

Settings that will probably eventually be supported are MTU, Speed,
DuplexMode, WakeOnLan, MACAddress, MACAddressPolicy (e.g., 'hardware',
'synthetic' or 'random'), Name and NamePolicy (replacing our current
interface naming logic). This patch only introduces support for
Description, as a proof of concept.

Some of these settings may later be overriden by a network management
daemon/script. However, these tools should always listen and wait on libudev
before touching a device (listening on netlink is not enough). This is no
different from how things used to be, as we always supported changing the
network interface name from udev rules, which does not work if someone
has already started using it.

The tool is configured by .link files in /etc/net/links/ (with the usual
overriding logic in /run and /lib). The first (in lexicographical order)
matching .link file is applied to a given device, and all others are ignored.

The .link files contain a [Match] section with (currently) the keys
MACAddress, Driver, Type (see DEVTYPE in udevadm info) and Path (this
matches on the stable device path as exposed as ID_PATH, and not the
unstable DEVPATH). A .link file matches a given device if all of the
specified keys do. Currently the keys are treated as plain strings,
but some limited globbing may later be added to the keys where it
makes sense.

Example:

/etc/net/links/50-wireless.link
[Match]
MACAddress=98:f2:e4:42:c6:92
Path=pci-0000:02:00.0-bcma-0
Type=wlan

[Link]
Description=The wireless link
2013-10-26 22:09:20 +02:00
Thomas Hindoe Paaboel Andersen 048ecf5b84 analyze: port to sd-bus 2013-10-25 20:59:01 +02:00
Zbigniew Jędrzejewski-Szmek d8c9d3a468 systemd: use unit name in PrivateTmp directories
Unit name is used whole in the directory name, so that the unit name
can be easily extracted from it, e.g. "/tmp/systemd-abcd.service-DEDBIF1".

https://bugzilla.redhat.com/show_bug.cgi?id=957439
2013-10-22 22:54:09 -04:00
Tom Gundersen 0fb0c56f52 inhibit: port to sd-bus 2013-10-22 13:00:54 +01:00
Kay Sievers b0770377ab analyze: systemd-analyze.c -> analyze.c 2013-10-22 13:55:50 +02:00
Kay Sievers 8d45130966 localed: port from libdbus to libsystemd-bus 2013-10-22 13:25:17 +02:00
Kay Sievers ca2871d9b0 bus: remove static introspection file export 2013-10-21 00:41:26 +02:00
Kay Sievers 145d22584f build-sys: unify foo_CFLAGS = usage and add explaining comments
Always add the default AM_CFLAGS first.

If variables are used in conditionals, the default assignment
of AM variables is disabled, even when the conditional is not
in use; foo_CFLAGS = $(AM_CFLAGS) is needed, even when it looks
like a no-op.
2013-10-20 17:34:15 +02:00
Colin Walters a54156a297 Revert "build-sys: move journalctl CFLAGS= to one line"
This reverts commit e5d5aa1d0f4e143f12f5e00ca072547369d37e53; it
breaks if !HAVE_QRENCODE since then we aren't using $(AM_CFLAGS) for
journalctl.
2013-10-20 09:53:05 -04:00
Kay Sievers e5d5aa1d0f build-sys: move journalctl CFLAGS= to one line 2013-10-20 01:00:23 +02:00
Tom Gundersen a7623afb7a fsck-root: only run when requested in fstab
fsck-root is redundant in case an initrd is used, or in case the rootfs
is never remounted 'rw', so the new default is the correct behavior for
most users. For the rest, they should enable it in fstab.
2013-10-19 12:23:17 +02:00
Colin Walters 4ca302b967 build-sys: Honor CFLAGS for journalctl again
Regression from e905a45681.
2013-10-18 10:13:52 -04:00
Lennart Poettering 58c5d4215a build-sys: fix += vs = in Makefile 2013-10-18 14:21:36 +02:00
Tom Gundersen 89456fcee4 update-utmp: port to sd-bus
Change from GetUnit to LoadUnit to make sure we can detect the current legacy
runlevel, even if nothing loaded the legacy target files yet.
2013-10-18 06:21:26 +02:00
Lennart Poettering 96c374d0a5 socket-proxyd: rename from saproxy
The thing is a daemon, hence needs a "d" prefix. Also, we tend to not
abbreviate names of background components unnecessarily, since they are
not primary commands people type. Then, the fact that this thing does
socket actviation is mostly in implementationd detail for the proxy.

Also, do some minor indenting clean-ups and other code updates.
2013-10-18 02:58:47 +02:00
Lennart Poettering e905a45681 build-sys: drop a number CFLAGS assignments in Makefile that are pointless 2013-10-18 02:37:38 +02:00
Tom Gundersen b75b4db0af initctl: port to sd-bus 2013-10-18 01:34:55 +02:00
Tom Gundersen d05f1cae2f cgroup-agent: port to sd-bus 2013-10-18 00:55:24 +02:00
Tom Gundersen 0c842e0ac0 fsck: port to sd-bus 2013-10-18 00:55:24 +02:00
Lennart Poettering 66a4c743c0 hostnamed: port over from libdbus to libsystemd-bus 2013-10-18 00:49:01 +02:00
Lennart Poettering aacf3b483b api: unify some common bits used by public systemd APIs 2013-10-16 17:01:26 +02:00
Lennart Poettering 40ca29a137 timedated: use libsystemd-bus instead of libdbus for bus communication
Among other things this also adds a few things necessary for the change:

- Considerably more powerful error returning APIs in libsystemd-bus

- Adapter for connecting an sd_bus to an sd_event

- As I reworked the PolicyKit logic to the new library I also made it
  asynchronous, so that PolicyKit requests of one user cannot block out
  another user anymore.

- We always use the macro names for common bus error. That way it is
  harder to mistype them since the compiler will notice
2013-10-16 06:15:02 +02:00
David Strauss d1b38fac57 Rename sabridge to saproxy to be less cryptic 2013-10-15 17:00:18 -07:00
David Strauss 912b54ad47 Add sabridge for socket activation of traditional daemons 2013-10-15 16:13:30 -07:00
Kay Sievers b0130bf608 build-sys: libsystemd-id128 - get rid of the needless selinux linking (again)
$ ldd libsystemd-id128.so
        linux-vdso.so.1 =>  (0x00007fffce377000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f4de1fc1000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f4de1db9000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f4de1bb4000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f4de17f5000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f4de2406000)
        libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f4de158f000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4de1371000)

$ ldd libsystemd-id128.so
        linux-vdso.so.1 =>  (0x00007fff25187000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f41a3964000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f41a35a5000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f41a3d89000)
2013-10-15 02:29:29 +02:00
Kay Sievers 9cada1952a build-sys: libudev - get rid of the needless selinux linking (again) 2013-10-15 02:11:56 +02:00
Lennart Poettering 3990f24765 rfkill: add new rfkill tool to save/restore rfkill state across reboots
This works analogous to the existing backlight and random seed services
2013-10-14 04:31:49 +02:00
Zbigniew Jędrzejewski-Szmek 1ca208fb4f Introduce udev object cleanup functions 2013-10-13 17:56:55 -04:00
Shawn Landden 35d811f521 test: test for ellipsize 2013-10-13 17:56:54 -04:00
Shawn Landden f405e86de3 util, utf8: make ellipsize take multi-byte characters into account
rename old versions to ascii_*

Do not take into account zerowidth characters, but do consider double-wide characters.
Import needed utf8 helper code from glib.

v3: rebase ontop of utf8 restructuring work

[zj: tweak the algorithm a bit, move new code to separate file]
2013-10-13 17:56:54 -04:00
Lennart Poettering 992c052c34 bus: split up overly long sd-bus.c into three files 2013-10-11 20:18:10 +02:00
Lennart Poettering d682b3a7e7 security: rework selinux, smack, ima, apparmor detection logic
Always cache the results, and bypass low-level security calls when the
respective subsystem is not enabled.
2013-10-10 16:35:44 +02:00
Lennart Poettering fd38203a2a bus: add minimal event loop API
So far we tried to use epoll directly wherever we needed an event loop.
However, that has various shortcomings, such as the inability to handle
larger amounts of timers (since each timerfd costs one fd, which is a
very limited resource, usually bounded to 1024), and inability to do
priorisation between multiple queued events.

Let's add a minimal event loop API around epoll that is suitable for
implementation of our own daemons and maybe one day can become public
API for those who desire it.

This loop is part of libsystemd-bus, but may be used independently of
it.
2013-10-10 04:44:48 +02:00
Auke Kok 8552b17660 Smack: Test if smack is enabled before mounting
Since on most systems with xattr systemd will compile with Smack
support enabled, we still attempt to mount various fs's with
Smack-only options.

Before mounting any of these Smack-related filesystems with
Smack specific mount options, check if Smack is functionally
active on the running kernel.

If Smack is really enabled in the kernel, all these Smack mounts
are now *fatal*, as they should be.

We no longer mount smackfs if systemd was compiled without
Smack support. This makes it easier to make smackfs mount
failures a critical error when Smack is enabled.

We no longer mount these filesystems with their Smack specific
options inside containers. There these filesystems will be
mounted with there non-mount smack options for now.
2013-10-09 15:06:17 -07:00
Lennart Poettering cac914e643 build-sys: add a makefile target to run all tests through valgrind 2013-10-09 04:08:00 +02:00
Kay Sievers 87b20a8118 build-sys: add sd-bus-vtable.h header 2013-10-09 03:39:57 +02:00
Lennart Poettering 29ddb38fea libsystemd-bus: add lightweight object vtable implementation for exposing objects on the bus
This adds a lightweight scheme how to define interfaces in static fixed
arrays which then can be easily registered on a bus connection. This
makes it much easier to write bus services.

This automatically handles implementation of the Properties,
ObjectManager, and Introspection bus interfaces.
2013-10-09 02:40:07 +02:00
Lennart Poettering 1434ae6fd4 cgroup: there's no point in labelling cgroupfs dirs, so let's not do that
This allows us to get rid of the dep on libsystemd-label for cgroup
management.

https://bugs.freedesktop.org/show_bug.cgi?id=69966
2013-10-02 04:59:05 +02:00
Lennart Poettering fbd8ebddbe build-sys: mkdir.[ch] should be in libsystemd-shared
Otherwise, why is mkdir-label.[ch] split out?
2013-10-02 04:56:33 +02:00
Lennart Poettering cd4010b373 build-ss: prepare new release 2013-10-02 03:02:25 +02:00
Kay Sievers ae05436265 Revert "build-sys: link libsystemd-login with libsystemd-label.la"
Systemd-logind does not pull in cg_create(), if we unconditionally link
this, all users of systemd-logind qill need the label stuff and therefore
link against selinux.

It is probably a build-system issue, or something that need to be sorted
out in a differnt way than linking not needed libs.

This reverts commit ceadabb102.
2013-10-01 00:21:50 +02:00
Michał Górny ceadabb102 build-sys: link libsystemd-login with libsystemd-label.la
libsystemd-login.la uses cg_create() that currently seems to be a part
of libsystemd-label.la. However, it doesn't link against that library
and it seems that none of the (unconditional) libraries it uses do. In
the end, people end up getting «undefined reference to `cg_create'»
when trying to build e.g. dbus.
2013-10-01 00:02:08 +02:00
Zbigniew Jędrzejewski-Szmek 2b3ab29de4 Move part of logind.c into a separate file
liblogind-core.la was underlinked, missing a few functions
defined in logind.c. They are moved to a new file, logind-core.c,
and this file is linked into liblogind-core.la.
In addition, logind-acl.c is attached to the liblogind-core.la,
instead of systemd-logind directly.
2013-09-26 11:12:04 +02:00
Kay Sievers c51d84dc09 support acpi firmware performance data (FPDT)
Prefer firmware-provided performance data over loader-exported ones; if
ACPI data is available, always use it, otherwise try to read the loader
data.

The firmware-provided variables start at the time the first EFI image
is executed and end when the operating system exits the boot services;
the (loader) time calculated in systemd-analyze increases.
2013-09-24 15:43:41 +02:00
Dave Reisner 8f6ce71fe7 device-nodes: move device node specific code to own file
In the process, rename udev_encode_string which is poorly named for what
it does. It deals specifically with encoding names that udev creates and
has its own rules: utf8 is valid but some ascii is not (e.g. path
separators), and everything else is simply escaped. Rename it to
encode_devnode_name.
2013-09-19 11:50:34 -04:00
Lennart Poettering ef5bfcf668 backlight,random-seed: move state files into /var/lib/systemd
Let's not scatter (private) files in /var around, let's place them all
in /var/lib/systemd and below.
2013-09-17 17:28:35 -05:00
David Herrmann 118ecf3242 logind: introduce session-devices
A session-device is a device that is bound to a seat and used by a
session-controller to run the session. This currently includes DRM, fbdev
and evdev devices. A session-device can be created via RequestDevice() on
the dbus API of the session. You can drop it via ReleaseDevice() again.
Once the session is destroyed or you drop control of the session, all
session-devices are automatically destroyed.

Session devices follow the session "active" state. A device can be
active/running or inactive/paused. Whenever a session is not the active
session, no session-device of it can be active. That is, if a session is
not in foreground, all session-devices are paused.
Whenever a session becomes active, all devices are resumed/activated by
logind. If it fails, a device may stay paused.

With every session-device you request, you also get a file-descriptor
back. logind keeps a copy of this fd and uses kernel specific calls to
pause/resume the file-descriptors. For example, a DRM fd is muted
by logind as long as a given session is not active. Hence, the fd of the
application is also muted. Once the session gets active, logind unmutes
the fd and the application will get DRM access again.
This, however, requires kernel support. DRM devices provide DRM-Master for
synchronization, evdev devices have EVIOCREVOKE (pending on
linux-input-ML). fbdev devices do not provide such synchronization methods
(and never will).
Note that for evdev devices, we call EVIOCREVOKE once a session gets
inactive. However, this cannot be undone (the fd is still valid but mostly
unusable). So we reopen a new fd once the session is activated and send it
together with the ResumeDevice() signal.

With this infrastructure in place, compositors can now run without
CAP_SYS_ADMIN (that is, without being root). They use RequestControl() to
acquire a session and listen for devices via udev_monitor. For every
device they want to open, they call RequestDevice() on logind. This
returns a fd which they can use now. They no longer have to open the
devices themselves or call any privileged ioctls. This is all done by
logind.
Session-switches are still bound to VTs. Hence, compositors will get
notified via the usual VT mechanisms and can cleanup their state. Once the
VT switch is acknowledged as usual, logind will get notified via sysfs and
pause the old-session's devices and resume the devices of the new session.

To allow using this infrastructure with systems without VTs, we provide
notification signals. logind sends PauseDevice("force") dbus signals to
the current session controller for every device that it pauses. And it
sends ResumeDevice signals for every device that it resumes. For
seats with VTs this is sent _after_ the VT switch is acknowledged. Because
the compositor already acknowledged that it cleaned-up all devices.
However, for seats without VTs, this is used to notify the active
compositor that the session is about to be deactivated. That is, logind
sends PauseDevice("force") for each active device and then performs the
session-switch. The session-switch changes the "Active" property of the
session which can be monitored by the compositor. The new session is
activated and the ResumeDevice events are sent.

For seats without VTs, this is a forced session-switch. As this is not
backwards-compatible (xserver actually crashes, weston drops the related
devices, ..) we also provide an acknowledged session-switch. Note that
this is never used for sessions with VTs. You use the acknowledged
VT-switch on these seats.

An acknowledged session switch sends PauseDevice("pause") instead of
PauseDevice("force") to the active session. It schedules a short timeout
and waits for the session to acknowledge each of them with
PauseDeviceComplete(). Once all are acknowledged, or the session ran out
of time, a PauseDevice("force") is sent for all remaining active devices
and the session switch is performed.
Note that this is only partially implemented, yet, as we don't allow
multi-session without VTs, yet. A follow up commit will hook it up and
implemented the acknowledgements+timeout.

The implementation is quite simple. We use major/minor exclusively to
identify devices on the bus. On RequestDevice() we retrieve the
udev_device from the major/minor and search for an existing "Device"
object. If no exists, we create it. This guarantees us that we are
notified whenever the device changes seats or is removed.

We create a new SessionDevice object and link it to the related Session
and Device. Session->devices is a hashtable to lookup SessionDevice
objects via major/minor. Device->session_devices is a linked list so we
can release all linked session-devices once a device vanishes.

Now we only have to hook this up in seat_set_active() so we correctly
change device states during session-switches. As mentioned earlier, these
are forced state-changes as VTs are currently used exclusively for
multi-session implementations.

Everything else are hooks to release all session-devices once the
controller changes or a session is closed or removed.
2013-09-17 17:15:30 -05:00
Dave Reisner 02a36bc9a1 move utf8 functions from libudev-private.h to utf8.h
There's now some more obvious overlap amongst the two utf8 validation
functions, but no more than there already was previously.

This also adds some menial tests for anyone who wants to do more
merging of these two in the future.
2013-09-17 16:31:32 -04:00
Lennart Poettering 1731e34a4e tmpfiles: support simple specifier expansion for specified paths 2013-09-17 11:02:54 -05:00
Zbigniew Jędrzejewski-Szmek f485606bf8 Make tmpdir removal asynchronous
https://bugs.freedesktop.org/show_bug.cgi?id=68232
2013-09-17 10:26:30 -05:00
Zbigniew Jędrzejewski-Szmek 35375afec5 login: fix login_is_valid test 2013-09-16 11:10:55 -05:00
Zbigniew Jędrzejewski-Szmek 4b549144d8 Verify validity of session name when received from outside
Only ASCII letters and digits are allowed.
2013-09-16 09:58:37 -05:00
Zbigniew Jędrzejewski-Szmek c32fc72f37 Remove duplicate entries from syscall list
ARM syscall list includes SYS_OABI_SYSCALL_BASE and SYS_SYSCALL_BASE
which were obsuring real syscall names.
2013-09-16 09:47:28 -05:00
Lennart Poettering 4f0be680b5 build-sys: prepare 207 2013-09-13 02:12:16 +02:00
Zbigniew Jędrzejewski-Szmek 64eed40c07 bash-completion: add systemd-run 2013-09-12 19:36:27 -04:00
Zbigniew Jędrzejewski-Szmek 5c390a4ae0 Add pam configuration to allow user sessions to work out of the box
systemd-logind will start user@.service. user@.service unit uses
PAM with service name 'systemd-user' to perform account and session
managment tasks. Previously, the name was 'systemd-shared', it is
now changed to 'systemd-user'.

Most PAM installations use one common setup for different callers.
Based on a quick poll, distributions fall into two camps: those that
have system-auth (Redhat, Fedora, CentOS, Arch, Gentoo, Mageia,
Mandriva), and those that have common-auth (Debian, Ubuntu, OpenSUSE).
Distributions that have system-auth have just one configuration file
that contains auth, password, account, and session blocks, and
distributions that have common-auth also have common-session,
common-password, and common-account. It is thus impossible to use one
configuration file which would work for everybody. systemd-user now
refers to system-auth, because it seems that the approach with one
file is more popular and also easier, so let's follow that.
2013-09-11 15:35:06 -04:00
Marcel Holtmann 046d2bd446 build-sys: gpt-auto-generator depends on HAVE_BLKID 2013-09-09 17:35:52 -04:00
Holger Hans Peter Freyther 143bfdaf0b test: Make testing work on systems without or old systemd
* Introduce a macro to conditionally execute tests. This avoids
  skipping the entire test if some parts require systemd
* Skip the journal tests when no /etc/machine-id is present
* Change test-catalog to load the catalog from the source directory
  of systemd.
* /proc/PID/comm got introduced in v2.6.33 but travis is still
  using v2.6.32.
* Enable make check and make distcheck on the travis build
* Use -D"CATALOG_DIR=STR($(abs_top_srcdir)/catalog)" as a STRINGIY
  would result in the path '/home/ich/source/linux' to be expanded
  to '/home/ich/source/1' as linux is defined to 1.
2013-08-22 00:52:14 -04:00
Zbigniew Jędrzejewski-Szmek f5853dafa1 build-sys: add clean-python target
Building for a different version of Python requires removing all
build products for the old version. There's no nice way to do it,
short of doing 'make clean'. The new 'clean-python' target is a
bit hacky, but seems to work:
  ./configure PYTHON=python2 && make && make install
  make clean-python
  ./configure PYTHON=python3 --disable-gtk-doc --disable-man-pages && make && make install
should install modules for both versions of Python.
2013-08-15 12:59:36 -04:00
William Giokas 298b9e23a6 zsh_completion: Allow specifying multiple arguments
Some of the options in systemd can take multiple arguments, such as
systemctl's --type option. Previously, you would only be able to
complete a single type after the -t, but now zsh will continue to
complete the types, separating them by commas.

systemd-inhibit's --what command has colon (:), and that has been taken
into account.
2013-08-15 11:29:08 -04:00
William Giokas 3e7f60ab32 zsh_completion: Move helper function to autoload
_hosts_or_user_at_host was used by 6 different completions, and
previously was in all 6 of those files. I moved it out to its own file,
_sd_hosts_or_user_at_host. This will be autoloaded for use in other
completion functions. It also allows external completions to use this
function by simply calling _sd_hosts_or_user_at_host as in the systemd
completions.
2013-08-14 22:42:56 -04:00
Lennart Poettering 3731acf1ac backlight: add minimal tool to save/restore screen brightness across reboots
As many laptops don't save/restore screen brightness across reboots,
let's do this in systemd with a minimal tool, that restores the
brightness as early as possible, and saves it as late as possible. This
will cover consoles and graphical logins, but graphical desktops should
do their own per-user stuff probably.

This only touches firmware brightness controls for now.
2013-08-14 01:57:02 +02:00
Lennart Poettering 1a14a53cfd gpt-auto-generator: add basic auto-discovery of GPT partitions
This adds a simple generator that is capable of automatically
discovering certain GPT partitions by their type UUID and mount/enable
them. This currently covers swap partitions and /home partitions, but is
expected to grow more features soon.

This currently doesn't handle LUKS encrypted /home.

This enables all swap partitions of type
0657fd6da4ab43c484e50933c84b4f4f, if found.

This mounts the first partition of type 933ac7e12eb44f13b8440e14e2aef915
as /home, if it is found.
2013-08-13 10:13:45 +02:00
Zbigniew Jędrzejewski-Szmek 692ec7c998 build-sys: link with librt if linking with libsd-daemon-int
In fba1ea0 'build: do not link everything with -lrt (and
therefore -pthread)' librt was removed from the list of
libraries. But libsd-daemon-internal also uses symbols from
librt and librt must thus be added everywhere where
libsd-daemon-interal is used, or otherwise linking might
fail:

/usr/bin/ld: ./.libs/libudev-core.a(sd-daemon.o): undefined reference to symbol 'mq_getattr@@GLIBC_2.3.4'
/usr/bin/ld: note: 'mq_getattr@@GLIBC_2.3.4' is defined in DSO /lib64/librt.so.1 so try adding it to the linker command line
2013-08-03 10:18:21 -04:00
Daniel Wallace 7eb942c408 zsh completion: add _kernel-install 2013-08-03 09:20:12 -04:00
Zbigniew Jędrzejewski-Szmek d267e69da4 pkg-config: export systemd{system,user}generatordir and catalogdir
We export the location of a bunch of directories this way,
so it makes sense to add those three. Especially catalogdir
is something that we want people to add things to.

Note on the naming: the first two are tied closely to systemd
itself, so I prefixed them with "systemd". The third one is
rather more generic, so no prefix.

https://bugs.freedesktop.org/show_bug.cgi?id=67635
2013-08-03 09:20:12 -04:00
Zbigniew Jędrzejewski-Szmek 3b6c7e78cf tests: add a program for repetitive opening and closing of the journal
Basically wraps an example provided by George McCollister.
Should help with leaks in the future.
2013-08-02 11:25:45 -04:00
Zbigniew Jędrzejewski-Szmek 6c17bf04b9 coredumpctl: add more debug output
It can be quite useful when somebody confuses _PID with COREDUMP_PID :).
2013-08-02 10:49:07 -04:00
William Giokas 1272ff850a zsh_completion: Split out zsh _systemd-tmpfiles
You can choose to have systemd-tmpfiles at configuration time, so only
install the completion for this if configured to do so.
2013-08-02 10:44:14 -04:00
William Giokas 439b7ce868 zsh_completion: Split out zsh _machinectl 2013-08-02 10:44:03 -04:00
William Giokas 7abfbe7903 zsh_completion: Split out zsh _systemd-analyze 2013-08-02 10:43:58 -04:00
William Giokas 67e654f830 zsh_completion: Split out zsh _systemd-inhibit 2013-08-02 10:43:55 -04:00
William Giokas 30fd4d1eb1 zsh_completion: Split out zsh _systemd-nspawn
Also fix the random lack of completion
2013-08-02 10:43:52 -04:00
William Giokas a06225fcc1 zsh_completion: Split out zsh _udevadm 2013-08-02 10:43:49 -04:00
William Giokas 20c8382ba7 zsh_completion: Split out zsh _timedatectl 2013-08-02 10:43:46 -04:00
William Giokas 70e104c4e3 zsh_completion: Split out zsh _coredumpctl 2013-08-02 10:43:42 -04:00