Commit graph

2403 commits

Author SHA1 Message Date
Weblate
bec341ae2d Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.fedoraproject.org/projects/plymouth/master/
Translation: plymouth/master
2020-09-20 14:53:12 +02:00
Ray Strode
f28deaefdc Merge branch 'wip/fix-client-disconnect-crash' into 'master'
boot-server: Handle client disconnecting while trigger pending

See merge request plymouth/plymouth!123
2020-09-18 20:53:01 +00:00
Ray Strode
9f89239367 boot-server: Handle client disconnecting while trigger pending
At the moment if a client disconnects while the daemon is completely
an asynchronous request, the daemon crashes trying to access a freed
connection object.

This commit changes the boot server code to keep the connection object
alive after the client disconnects, if there's pending work to do.

https://gitlab.freedesktop.org/plymouth/plymouth/-/issues/125
2020-09-18 20:48:59 +00:00
Ray Strode
104d83d5f5 boot-server: Ref count the connections
This commit adds reference counting to ply_boot_connection_t.

This will be needed by a subsequent commit to fix a crasher bug.
2020-09-18 20:48:59 +00:00
Ray Strode
5ee1aa665e Merge branch 'update-l10n' into 'master'
Update translations

Closes #87

See merge request plymouth/plymouth!85
2020-09-16 17:16:23 +00:00
Rafael Fontenelle
85b72d61e5 Update translations from Zanata
Download latest translations from Fedora Zanata
2020-09-16 17:12:11 +00:00
Hans de Goede
15d80bd115 Merge branch 'drm-usermode' into 'master'
drm: Honor modes selected by the user through video= kernel cmdline argument

See merge request plymouth/plymouth!84
2020-09-16 16:57:41 +00:00
Hans de Goede
8dba434b2d NL translation update 2020-09-15 09:45:35 +02:00
Hans de Goede
18f87e81aa drm: Honor modes selected by the user through video= kernel cmdline argument
Before this commit we would skip preferred-mode selection if a video=
kernel cmdline is argument, instead relying on the kernel to have activated
all the outputs and then we would inherit those modes.

But this relies on fbcon having initialized the outputs, which it does not
do when deferred-fbcon-takeover is used. Deferred-fbcon-takeover is
necessary for flickerfree boot, so this is now the default in many distros.

Instead of relying on the kernel having setup everything for us, honor
the video= mode selection by checking for modes with a DRM_MODE_TYPE_USERDEF
flag before checking for modes with a DRM_MODE_TYPE_PREFERRED flag.

Note that the DRM_MODE_TYPE_USERDEF flag is only ever set based on a
video= argument. So on systems without a video= argument on the kernel
cmdline nothing changes.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2020-09-15 09:45:35 +02:00
Ray Strode
9a55f5866e Merge branch 'patch-mismatched-monitors' into 'master'
use resolution of higher res monitor for window size

Closes #122

See merge request plymouth/plymouth!121
2020-08-24 14:51:52 +00:00
Kayran Schmidt
b2bf5d5cc9 use resolution of higher res monitor for window size 2020-08-23 11:24:48 +00:00
Hans de Goede
8176dc59b7 Merge branch 'translations-set-locale' into 'master'
Enable translations by having the init calling setlocale

See merge request plymouth/plymouth!120
2020-08-08 09:27:35 +00:00
Sebastien
f33e2014a8 Initialize the translations on start if they are available
setlocale was already called on filesystem mounting but that's not enough
to cover all the cases. The call needs to be conditional because doing it
at a time where the locales are not available (in the initrd) would
result in translations to not be working.
2020-08-07 16:51:35 +02:00
Ray Strode
6465e779c6 Merge branch 'master' into 'master'
Use the correct key name for title and subtitle

See merge request plymouth/plymouth!119
2020-08-01 00:47:24 +00:00
Sebastien
66bf171eae Use the correct key name for title and subtitle
The '_' was removed in the conversion to use gettext
2020-07-31 14:45:46 +00:00
Ray Strode
ab986a9582 autogoo: use /proc/self/fd/0 instead of /dev/stdin
The symlink isn't available in some sandboxes:

99bf64efdc (note_860312)
2020-07-09 09:34:36 -04:00
Ray Strode
e3a2cb9566 configure: bump to 0.9.6 2020-07-08 16:48:19 -04:00
Ray Strode
60c8359f2b Merge branch 'ci' into 'master'
Add CI pipeline for Plymouth

See merge request plymouth/plymouth!48
2020-07-08 20:01:28 +00:00
Emmanuele Bassi
d4741329c4 Apply suggestion to .gitlab-ci.yml 2020-07-08 19:20:46 +00:00
Emmanuele Bassi
f76485a560 ci: Add a distcheck step
We want to ensure that the CI is "release ready".
2020-07-08 19:20:46 +00:00
Emmanuele Bassi
9b485f6655 Add CI pipeline for Plymouth
We can use GitLab's CI/CD support to run a build.
2020-07-08 19:20:46 +00:00
Ray Strode
480f3e6daa Merge branch 'drop-intltool' into 'master'
Drop intltool

See merge request plymouth/plymouth!117
2020-07-08 19:20:30 +00:00
Ray Strode
e5baa1a4c5 configure: quiet a warning
I really don't like autogoo
2020-07-08 15:14:40 -04:00
Ray Strode
6114e48404 po: drop intltool usage
gettext can do most everything intltool can do anyway, so just
drop intltool.
2020-07-08 15:12:54 -04:00
Ray Strode
1e36e303e0 Merge branch 'docs-man-page-xref' into 'master'
docs: fix man page cross-reference

See merge request plymouth/plymouth!116
2020-05-30 13:07:50 +00:00
Jan Pokorný
a0d3f52551
docs: fix man page cross-reference 2020-05-30 13:51:47 +02:00
Ray Strode
23afdeb212 Merge branch 'not-a-percentage' into 'master'
Rename 'percent_done' to 'fraction_done'

See merge request plymouth/plymouth!111
2020-05-01 15:29:49 +00:00
Daniel van Vugt
6e8542f95f Rename 'percent_done' to 'fraction_done'
Because they are not percentages but fractional values in the range [0,1]
2020-04-21 13:38:21 +08:00
Ray Strode
14e91cc8d2 Merge branch 'optional-theme' into 'master'
main: Don't bail out of load_settings if "Theme" is missing

See merge request plymouth/plymouth!109
2020-04-18 12:40:50 +00:00
Daniel van Vugt
3a4b35b69f main: Don't bail out of load_settings if "Theme" is missing
Because on some systems (like Ubuntu with its alternatives) the "Theme="
line will be missing from plymouthd.defaults. And bailing out early was
causing other settings like DeviceTimeout to never be loaded, which would
then cause the graphics renderers to fail.
2020-04-17 17:27:12 +08:00
Ray Strode
6ca4b5b24d Merge branch 'wip/close-the-log' into 'master'
main: switch log file when switching mode

See merge request plymouth/plymouth!102
2020-04-07 13:28:48 +00:00
Laurent Bigonville
702fd05feb main: fix mode changing before splash is shown
At the moment switching modes affects two aspects of how plymouth
runs.

1) What log file is opened (i.e., boot.log or no log file at all)
2) What type of splash gets shown (the details of which are relegated
   to the individual splash plugins)

The mode change handler has a check in place to avoid changing the
type of splash getting shown in the event no splash is supposed to
be shown yet.  This check just makes the function return without
doing anything.

Unfortunately, the check is placed at the top of the function, so
it runs before the log file is changed.

This commit moves the check lower down, so the log file gets properly
updated when the mode is changed.
2020-04-07 09:22:02 -04:00
Ray Strode
5cb1ad3af5 main: switch log file when switching mode
plymouthd can be run in various modes, for, e.g., boot up,
shutdown, and software upgrades.

The mode plymouthd is using can be changed at runtime.

The "boot" mode keeps a log of the console messages that
happen during boot up.  At the moment, when changing from
the "boot" mode to any other mode, the log file is kept
open.

That open file can cause problems during shutdown.

This commit makes sure the log file is properly closed when
the mode is changed from boot to another mode.

https://gitlab.freedesktop.org/plymouth/plymouth/issues/88
2020-04-07 09:19:44 -04:00
Ray Strode
8c42f8e1ff Merge branch 'fix-99' into 'master'
two-step: Center message text within labels if labels are centered

Closes #99

See merge request plymouth/plymouth!103
2020-04-06 18:23:46 +00:00
Daniel van Vugt
7a63f395d3 two-step: Center message text within labels if labels are centered
This makes a difference when you start rendering multiple lines in
a single label. For a single line label you won't see any difference.

Closes: https://gitlab.freedesktop.org/plymouth/plymouth/-/issues/99
2020-04-06 18:23:40 +00:00
Ray Strode
451aad42ea Merge branch 'master' into 'master'
Added Indonesian translation

See merge request plymouth/plymouth!107
2020-04-06 18:20:51 +00:00
Andika Triwidada
1d6c2feec4 po: add Indonesian translation 2020-04-06 18:20:51 +00:00
Hans de Goede
e31c81f984 Merge branch 'drm-probe-speedups' into 'master'
drm/kms probe speedups

See merge request plymouth/plymouth!101
2020-03-25 19:27:11 +00:00
Hans de Goede
3aa76fcd87 drm: Do not unnecessarily get output info twice
When a kernel-mode-setting driver loads it will trigger an add udev event
for /dev/dri/card0, followed by one udev change event per connector on the
card. This means that after our initial probe of the card,
create_heads_for_active_connectors is called a number of times for all the
udev change events.

After the initial enum our outputs array will contain active entries for
all connected displays. Meaning that the first loop in
create_heads_for_active_connectors would call get_output_info for
these outputs. Under the hood this does a number of ioctls and especially
the drmModeGetConnector call can be quite expensive.

Then in the second loop create_heads_for_active_connectors would call
get_output_info for all connectors, including for the once which were
checked in the first loop.

There is no reason why we cannot check if active connectors in the
old outputs array have changed when we are calling get_output_info for
all connectors to build the new array. This avoids unnecessarily making
the expensive get_output_info call twice for active connectors in the
old outputs array.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2020-03-25 18:14:54 +01:00
Hans de Goede
b127363982 ply-device-manager: Only consume one udev event at a time
Commit f9e376797a ("ply-device-manager: Consume all events in one go")
changed ply-device-manager to consume all pending udev events in one go
instead of consuming only 1 and then returning back to the mainloop.

The idea here was to avoid the overhead of returning back to the mainloop,
doing the poll again, seeing more events were pending and then re-enter
ply-device-manager.

In retrospect this is not a good idea. Systemd waits for oneshot units
like plymouth-switch-root.service to finish and this can block the boot.
Specifically plymouth-switch-root.service must complete before systemd in
the initrd will exec the systemd from the real rootfs. This means that
systemd inside the initrd waits for the:

ExecStart=-/usr/bin/plymouth update-root-fs --new-root-dir=/sysroot

Command to complete, if this command runs while we are consuming udev
events from the graphics card (which sends a change event per probed
connector during the initial probe), then plymouth will not send the ack
to the plymouth boot-client (completing the ExecStart) until all udev
events are consumed.

On my main workstation with i915 graphics and 2 HDMI connected FHD monitors,
this delays the actual switching of the root by 1.9 - 2.1 seconds,
because the re-enumaration of the connectors in the drm plugin takes
about 0.4 seconds per run.

Other upcoming changes will greatly reduce that 0.4 seconds, but still
returning to the main-loop after a single udev event so that we can
answer any waiting boot-clients ASAP is a good idea.

This reverts commit f9e376797a.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2020-03-25 00:00:06 +01:00
Hans de Goede
f7358f1535 Merge branch 'two-step-end-animation-fix' into 'master'
two-step: Do not jump to end-animation on halt/reboot if it is disabled

See merge request plymouth/plymouth!100
2020-03-24 18:29:37 +00:00
Hans de Goede
69ddb497e2 two-step: Do not jump to end-animation on halt/reboot if it is disabled
If the end-animation is disabled then directly becoming idle on halt /
reboot leads to no animation at all being shown.

Fix this by not jumping to the end-animation on halt/reboot if the
end-animation is disabled.

Fixes: 50c619ed41 ("two-step: Add UseEndAnimation setting")
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2020-03-23 19:16:05 +00:00
Hans de Goede
e0a90f8ad5 Merge branch 'systemd-RemainAfterExit' into 'master'
Add RemainAfterExit=yes to plymouth's systemd service files

See merge request plymouth/plymouth!99
2020-03-23 19:15:41 +00:00
Hans de Goede
75fc290c24 Add RemainAfterExit=yes to plymouth's systemd service files
All plymouth's systemd unit files are meant to only run once, either during
boot or during shutdown/restart.

Certain events cause systemd to recheck the dependency try between systemd
units. Systemd had a bug before the 245 release which caused this check to
sometimes not restart exited services for which the dependencies are met.

Systemd 245 fixes this, this is causing problems with plymouth.
When the conditions are met for systemd to recheck the dependencies;
and the plymouthd started by plymouth-start.service has exited;
then systemd will restart the plymouth-start unit, causing plymouthd to
take over tty1 after boot. This is causing various problems, also see:

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

Since all plymouth's systemd units are intended to run only once, they
all should be marked as remaining after exit by adding:
"RemainAfterExit=yes" to them. This causes systemd to still consider them
running after e.g. plymouthd has exited, as long as they have started
successfully. This fixes systemd restarting plymouth's units when it
should not do so.

BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1803293
BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1807771
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2020-03-23 17:22:46 +01:00
Hans de Goede
ba8483fc2c Merge branch 'twostep-end-animation' into 'master'
two-step: Add UseEndAnimation setting

See merge request plymouth/plymouth!94
2020-03-11 19:23:44 +00:00
Hans de Goede
50c619ed41 two-step: Add UseEndAnimation setting
We try to start the end animation early based on our progress accounting
but this is highly unreliable because e.g.:
-It counts time to enter the diskcrypt passwd as normal boot time, while
 this varies wildly from boot to boot
-Boot times for laptops can differ significantly between docked / undocked
 state

Between gdm calling /bin/plymouth deactivate and the drm plugin's deactivate
method getting called there can be e.g. 2.1 seconds (from a random boot),
with a theoretical maximum of 3 seconds (2 seconds to finish the throbber +
1 second for the end animation).

On a modern system userland boot should be able to finish in say 5 seconds,
making gdm wait an additional 1 - 3 seconds for deactivation is a huge amount
of extra wait time!

This commit adds a new "UseEndAnimation" option to the two-step plugin,
which defaults to true. Setting this to false makes deactivation immediate.

This works nicely with the spinner (and bgrt) themes since we do not really
do anything special in the end animation there anyways and since we fade-over
into gdm things will still look ok, while shaving a signifcant chunk of our
boot time.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2020-03-11 19:22:31 +00:00
Ray Strode
16997ce639 Merge branch 'script-image-crop' into 'master'
script: add Image.Crop(x, y, width, height)

See merge request plymouth/plymouth!98
2020-03-11 13:44:35 +00:00
J-P Nurmi
f4cf64abfd script: add Image.Crop(x, y, width, height)
The script plugin currently allows pixel buffers to be resized and
scaled, but provides no mechanism for script theme authors to just crop
the buffer, which is necessary for images that cannot be stretched,
such as progress bars with gradients.

This commit adds that feature as a new Crop method.
2020-03-11 13:44:05 +00:00
Ray Strode
ae2fedb1eb Merge branch 'drm-hotplug-fixes' into 'master'
Drm hotplug fixes

See merge request plymouth/plymouth!92
2020-03-10 23:51:41 +00:00
Hans de Goede
1535655ee4 ply-throbber: Do not redraw when we need to stop throbbing on free
One case where the various widgets are being freed is the pixel-display-s
being removed because of a monitor being hot(un)plugged. When the monitor
configuration changes ply-device-manager removes all old pixel-displays
and then adds the pixel-displays from the new config.

Calling ply_pixel_display_draw_area on a pixel-display which is about to be
freed is a bad idea, if the monitor was actually unplugged this leads to
various sort of errors, including crashes in some cases.

ply-throbber is the only (older) widget which does a redraw on free,
this likely was not noticed until now because typically the throbber
will already have been stopped on free.

This commit adds a redraw parameter to ply_throbber_stop_now and sets
this to false when calling ply_throbber_stop_now from ply_throbber_free.
This fixes plymouth sometimes crashing when monitors are hot(un)plugged
while plymouth is running.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2020-03-10 23:51:38 +00:00