summaryrefslogtreecommitdiff
path: root/Makefile.am
AgeCommit message (Collapse)Author
2013-09-26Move part of logind.c into a separate fileZbigniew Jędrzejewski-Szmek
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-24support acpi firmware performance data (FPDT)Kay Sievers
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-19device-nodes: move device node specific code to own fileDave Reisner
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-17backlight,random-seed: move state files into /var/lib/systemdLennart Poettering
Let's not scatter (private) files in /var around, let's place them all in /var/lib/systemd and below.
2013-09-17logind: introduce session-devicesDavid Herrmann
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-17move utf8 functions from libudev-private.h to utf8.hDave Reisner
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-17tmpfiles: support simple specifier expansion for specified pathsLennart Poettering
2013-09-17Make tmpdir removal asynchronousZbigniew Jędrzejewski-Szmek
https://bugs.freedesktop.org/show_bug.cgi?id=68232
2013-09-16login: fix login_is_valid testZbigniew Jędrzejewski-Szmek
2013-09-16Verify validity of session name when received from outsideZbigniew Jędrzejewski-Szmek
Only ASCII letters and digits are allowed.
2013-09-16Remove duplicate entries from syscall listZbigniew Jędrzejewski-Szmek
ARM syscall list includes SYS_OABI_SYSCALL_BASE and SYS_SYSCALL_BASE which were obsuring real syscall names.
2013-09-13build-sys: prepare 207Lennart Poettering
2013-09-12bash-completion: add systemd-runZbigniew Jędrzejewski-Szmek
2013-09-11Add pam configuration to allow user sessions to work out of the boxZbigniew Jędrzejewski-Szmek
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-09build-sys: gpt-auto-generator depends on HAVE_BLKIDMarcel Holtmann
2013-08-22test: Make testing work on systems without or old systemdHolger Hans Peter Freyther
* 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-15build-sys: add clean-python targetZbigniew Jędrzejewski-Szmek
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-15zsh_completion: Allow specifying multiple argumentsWilliam Giokas
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-14zsh_completion: Move helper function to autoloadWilliam Giokas
_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-14backlight: add minimal tool to save/restore screen brightness across rebootsLennart Poettering
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-13gpt-auto-generator: add basic auto-discovery of GPT partitionsLennart Poettering
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-03build-sys: link with librt if linking with libsd-daemon-intZbigniew Jędrzejewski-Szmek
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-03zsh completion: add _kernel-installDaniel Wallace
2013-08-03pkg-config: export systemd{system,user}generatordir and catalogdirZbigniew Jędrzejewski-Szmek
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-02tests: add a program for repetitive opening and closing of the journalZbigniew Jędrzejewski-Szmek
Basically wraps an example provided by George McCollister. Should help with leaks in the future.
2013-08-02coredumpctl: add more debug outputZbigniew Jędrzejewski-Szmek
It can be quite useful when somebody confuses _PID with COREDUMP_PID :).
2013-08-02zsh_completion: Split out zsh _systemd-tmpfilesWilliam Giokas
You can choose to have systemd-tmpfiles at configuration time, so only install the completion for this if configured to do so.
2013-08-02zsh_completion: Split out zsh _machinectlWilliam Giokas
2013-08-02zsh_completion: Split out zsh _systemd-analyzeWilliam Giokas
2013-08-02zsh_completion: Split out zsh _systemd-inhibitWilliam Giokas
2013-08-02zsh_completion: Split out zsh _systemd-nspawnWilliam Giokas
Also fix the random lack of completion
2013-08-02zsh_completion: Split out zsh _udevadmWilliam Giokas
2013-08-02zsh_completion: Split out zsh _timedatectlWilliam Giokas
2013-08-02zsh_completion: Split out zsh _coredumpctlWilliam Giokas
2013-08-02zsh_completion: Split out zsh _localectlWilliam Giokas
2013-08-02zsh_completion: Split out zsh _journalctlWilliam Giokas
Re-ordered some of the options and added a few that were missing previously as well.
2013-08-02zsh_completion: Split out zsh _hostnamectlWilliam Giokas
2013-08-02zsh_completion: Split out zsh _loginctlWilliam Giokas
2013-08-02zsh_completion: Split out zsh _systemctlWilliam Giokas
2013-08-02zsh_completion: fix zsh completion installationWilliam Giokas
Moved zsh shell completion to shell-completion/zsh/_systemd for automake's sake. Also allow users to specify where the files should go with:: ./configure --with-zshcompletiondir=/path/to/some/where and by default going to `$datadir/zsh/site-functions`
2013-07-30build: do not link everything with -lrt (and therefore -pthread)Shawn Landden
2013-07-26build-sys: use pkg-config for python compilation flagsZbigniew Jędrzejewski-Szmek
Python 2.7, and 3.2 and higher support querying compilation flags through pkg-config. This makes python support follow rules similar to various other optional compilation-time libraries. New flags are called PYTHON_DEVEL_CFLAGS and PYTHON_DEVEL_LIBS, because PYTHON (without _DEVEL), is already used for the python binary name, and things would be confusing if the same prefix was used for two things. configure has --disable-python-devel to disable python modules. One advantage is that CFLAGS for modules gets smaller: - -I/usr/include/python3.3m -I/usr/include/python3.3m -Wno-unused-result -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv + -I/usr/include/python3.3m as does LIBS: - -lpthread -ldl -lutil -lm -lpython3.3m + -lpython3.3m Support for Python 2.6 is removed, but can be easily restored by using PYTHON_DEVEL_CFLAGS="$(python2.6-config --cflags)", etc., as ./configure parameters. https://bugs.freedesktop.org/show_bug.cgi?id=57800
2013-07-26shared: split mkdir_*() and mkdir_*_label() from each otherKay Sievers
Avoid pulling-in selinux for tools which just create directories but not need to fix the selinux label.
2013-07-26shell-completion: add kernel-installKay Sievers
2013-07-23remove systemd-timestamp from sourcesDave Reisner
No sense in keeping this around if support for reading RD_TIMESTAMP has been removed.
2013-07-23build-sys: prepare 206systemd/v206Lennart Poettering
2013-07-19make: Automake is complaining about .PRECIOUS being redefinedHolger Hans Peter Freyther
Yesterday I added test-suite.log as dependency to the .PRECIOUS target. Automake is warning about this target being redefined and from what I see there is no way I can stop the warning but I can add the %MAKEFILE% as dependency. automake warning: Makefile.am:35: warning: user target '.PRECIOUS' defined here ... /usr/share/automake-1.13/am/configure.am: ... overrides Automake target '.PRECIOUS' defined here [zj: s/%MAKEFILE%/Makefile/ because %MAKEFILE% wasn't actually substituted properly.]
2013-07-18test: Keep the test-suite.log around in case of a test failureHolger Hans Peter Freyther
The addition of .DELETE_ON_ERROR will lead to the removal of the test-suite.log in case of a test failure. Mark the rule as PRECIOUS to keep that file around.
2013-07-16switch from udev keymaps to hwdbKay Sievers
2013-07-15build-sys: make generated man pages part of the distribution tarballZbigniew Jędrzejewski-Szmek
They were removed by mistake, and since we ship .html files, we certainly should ship man pages. https://bugs.freedesktop.org/show_bug.cgi?id=61753