Skip to content
This repository has been archived by the owner on Aug 6, 2020. It is now read-only.

[WIP] nixos v241 #27

Closed
wants to merge 493 commits into from
Closed

[WIP] nixos v241 #27

wants to merge 493 commits into from

Conversation

Mic92
Copy link
Member

@Mic92 Mic92 commented Feb 21, 2019

Hold on. This is just the rebase on top of systemd-stable/v241-stable. I have not even build yet

bl33pbl0p and others added 30 commits January 17, 2019 13:10
…s state.

Meanwhile, change dead -> inactive as it is not a unit state.
hwdb: Add support for 'Huawei WMI hotkeys' driver

Since 'Huawei WMI hotkeys' driver finally got merged into kernel
[commit](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/platform/x86/huawei-wmi.c?id=bf4fb28c6e74495de9e1e4ad359cd2272ac12c53),
this remaps 'KEY_MICMUTE' to 'F20' to make the key work and disables
brightness keys on (MACH-WX9) since it's already supported by kernel.
If "keep" policy is specified, and the interface has a name that is
NET_NAME_USER or NET_NAME_RENAMED, we stop processing rules. "keep" should
probably be specified either first or last depending on the preference.

This partially reimplements 55b6530, in the
sense that if the "keep" policy is not specified, and if the interface has
a NamingPolicy, it will be renamed, even if it had a name previously.
So this breaks backwards compatibility in this case, but that's more in line
with what users expect.

Closes systemd#9006.
This makes the new (>=240) behaviour conditional, restoring backwards compat, as least
as long as an old naming scheme is used.
This looks better and allows those terms to be indexed in systemd.directives.
In particular, <literal></literal> is dropped from around section names
([Match] and others) because the parens are distinctive enough on their own.
The same style is used in systemd.unit(5) and other pages that describe
sections.
Fixes systemd#10659.

This changes the behaviour of parsing environment files to more closely
follow POSIX shell standards.

This has the effect that these variables defined in a file:

    VAR1='\value'
    VAR2="\value"

Are now interpreted as `\value` instead of interpreting the `\`
character and interpreting them as `value`.

For more information about the behaviour followed, see:

	http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_02
It's similar to sd_bus_flush_close_unref() but doesn't do the flushing.
This is useful since this will still discnnect the connection properly
but not synchronously wait for the peer to take our messages.

Primary usecase is within _cleanup_() expressions where synchronously
waiting on the peer is not OK.
…ons exit

Let's make sure everything is written out ebfore we exit, so that no
messages keep our bus connections referenced.

Fixes: systemd#11462
…pping final ref

This doesn't really change much, but feels more correct to do, as it
ensures that all messages currently queued in the bus connections are
definitely unreffed and thus destryoing of the connection object will
follow immediately.

Strictly speaking this change is entirely unnecessary, since nothing
else could have acquired a ref to the connection and queued a message
in, however, now that we have the new sd_bus_close_unref() helper it
makes a lot of sense to use it here, to ensure that whatever happens
nothing that might have been queued fucks with us.
The escape used previously was redundant and made things more confusing.
The script does not use any bash features.
On NixOS we have /bin/sh and /usr/bin/env for posix compatibility
but not /bin/bash as it is stored in our nix store.
With this change one can run the `meson configure` without patching
which greatly helps, when working on upstream contributions.
network: Fix IPv6 PreferredSource routes
…ditionally

Export dbus address conditionally
@bl33pbl0p, please fix your editor

(Apparently you never configured the source tree? If you did, then the
git pre-commit hook would have been enabled which doesn't allow
commiting non-whitespace clean stuff...)
flush+close bus connections explicitly when our daemons go down
add hwdb rule for Bangho touchpad
Instead of having just a single INITRD field, add support for all
additional parameters being INITRD fields in order.

Signed-off-by: Mike Auty <mike.auty@gmail.com>
util-lib: follow shell syntax for escape in quotes
Fixes: systemd#11305
Fixes: systemd#3260
Related: systemd#11456

So, here's what happens in the described scenario in systemd#11305. A unit goes
down, and that triggeres stop jobs for the other two units as they were
bound to it. Now, the timer for manager triggered restarts kicks in and
schedules a restart job with the JOB_FAIL job mode. This means there is
a stop job installed on those units, and now due to them being bound to
us they also get a restart job enqueued. This however is a conflicts, as
neither stop can merge into restart, nor restart into stop. However,
restart should be able to replace stop in any case. If the stop
procedure is ongoing, it can cancel the stop job, install itself, and
then after reaching dead finish and convert itself to a start job.
However, if we increase the timer, then it can always take those units
from inactive -> auto-restart.

We change the job mode to JOB_REPLACE so the restart job cancels the
stop job and installs itself.

Also, the original bug could be worked around by bumping RestartSec= to
avoid the conflicting.

This doesn't seem to be something that is going to break uses. That is
because for those who already had it working, there must have never been
conflicting jobs, as that would result in a desctructive transaction by
virtue of the job mode used.

After this change, the test case is able to work nicely without issues.
We already have event_free_inotify_data() and event_free_inode_data().
This exposes `udev_ctrl_send_ping()`.
yuwata and others added 26 commits February 19, 2019 08:38
(cherry picked from commit 36d28eb)
Even though the dbus specification does not enforce any length limit on the
path of a dbus message, having to analyze too long strings in PID1 may be
time-consuming and it may have security impacts.

In any case, the limit is set so high that real-life applications should not
have a problem with it.

(cherry picked from commit 61397a6)
Paths are limited to BUS_PATH_SIZE_MAX but the maximum size is anyway too big
to be allocated on the stack, so let's switch to the heap where there is a
clear way to understand if the allocation fails.

(cherry picked from commit f519a19)
This is necessary because the NixOS service that initialises the
filesystem depends on the appearance of the device unit.  Also, this
makes more sense to me: the device is ready; it's the filesystem
that's not, but taking care of that is the responsibility of the mount
unit.  (However, this ignores the fsck unit, so it's not perfect...)
Having all services with DefaultDependencies=yes depend on
local-fs.target is annoying, because some of those services might be
necessary to mount local filesystems.  For instance, Charon's
send-keys feature requires sshd to be running in order to receive LUKS
encryption keys, which in turn requires dhcpcd, and so on.  So we drop
this dependency (and swap.target as well for consistency).  If
services require a specific mount, they should use RequiresMountsFor
in any case.
They'll still be remounted read-only.

NixOS/nixos#126
In NixOS containers, the init script is bind-mounted into the
container, so checking early whether it exists will fail.
systemd-tmpfiles-setup.service pulls in local-fs.target, which
interferes with NixOps' send-keys feature (since sshd.service depends
indirectly on sysinit.target). Since in NixOS we don't use
systemd-tmpfiles for creating files (that's done by activation scripts
and preStart scripts), it's not a problem to start it a bit later.
Look in /nix/var/nix/profiles/default/lib/systemd for units provided
by packages in the default (system-wide) profile, and in
/etc/systemd-mutable/system for persistent, mutable units (not
recommended).

Also, remove /usr and /lib as these don't exist on NixOS.
Namely lots of variants of

  Unit nix-var-nix-db.mount is bound to inactive unit dev-disk-by\x2dlabel-nixos.device. Stopping, too.

in containers.
Patch by vcunat.
NixOS has an option to link the xkb data files to /etc/X11, but not to
/usr/share/X11.
By default systemd should read all its configuration from /etc. Therefor
we rely on -Dsysconfdir=/etc in meson as default value. Unfortunately
this would also lead to installation of systemd's own configuration
files to `/etc` whereas we are limited to /nix/store. To counter that
this commit introduces two new configuration variables `factoryconfdir`
and `factorypkgconfdir` to install systemd's own configuration into nix
store again, while having executables looking up files in /etc.
@Mic92
Copy link
Member Author

Mic92 commented Feb 22, 2019

@Mic92 Mic92 closed this Feb 22, 2019
@Mic92 Mic92 deleted the nixos-v241 branch February 22, 2019 07:48
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet