Skip to content

Added rpm build using cargo generate-rpm #403

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

Conversation

paul
Copy link

@paul paul commented Jun 22, 2023

Added metadata needed to Cargo.toml, and an rpm target to the Makefile.

Caveat: I know very little about building RPMs, so I don't know if any of this is right or best-practices. However, it works on my machine™.

jacobgkau
jacobgkau previously approved these changes Oct 11, 2024
Copy link
Member

@jacobgkau jacobgkau left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested on Fedora 40.

Before this worked, I did need to run cargo install cargo-generate-rpm in order for the cargo generate-rpm command to be available.

After that, running make rpm produced an RPM file that I was able to install. After installation, I needed to manually start com.system76.PowerDaemon.service before subcommands such as system76-power graphics would work (before that, I got org.freedesktop.DBus.Error.ServiceUnknown: The name is not activatable).

If either of those sound like something additional needs to be added to the code/config to reduce the amount of manual steps, then further changes can be made. Otherwise, this seems to work as expected. @pop-os/engineering can decide whether this is something we want to include upstream.

@paul
Copy link
Author

paul commented Oct 15, 2024

I created, this, and am glad to see its getting traction! That said, I do have a couple issues running it on fedora I haven't really spent any time debugging.

  1. No matter how many different ways I try to systemctl enable com.system76.PowerDaemon.service, it never actually starts on boot. I have to run systemctl start com.system76.PowerDaemon.service once I log in to my DE.
  2. Once I start it, sometimes it just randomly stops. Sometimes it takes a day, sometimes it'll go a week, but at some point I'll notice my fans have gotten loud, and have to manually start it again. There's not much useful in the logs when it happens:
com.system76.PowerDaemon.service logs
$ journalctl --boot -u com.system76.PowerDaemon.service
Oct 12 17:37:46 ava.home systemd[1]: Starting com.system76.PowerDaemon.service - System76 Power Daemon...
Oct 12 17:37:46 ava.home system76-power[13935]: [INFO] Starting daemon
Oct 12 17:37:46 ava.home system76-power[13935]: [INFO] Connecting to dbus system bus
Oct 12 17:37:46 ava.home system76-power[13935]: [INFO] Rescanning PCI bus
Oct 12 17:37:46 ava.home system76-power[13935]: [INFO] 0000:0c:00.0: AMD graphics
Oct 12 17:37:46 ava.home system76-power[13935]: [INFO] 0000:0c:00.0: Function for 0000:0c:00.0
Oct 12 17:37:46 ava.home system76-power[13935]: [INFO] 0000:0c:00.1: Function for 0000:0c:00.0
Oct 12 17:37:46 ava.home system76-power[13935]: [INFO] Disabling NMI Watchdog (for kernel debugging only)
Oct 12 17:37:46 ava.home system76-power[13935]: [INFO] Setting automatic graphics power
Oct 12 17:37:46 ava.home system76-power[13935]: [WARN] Failed to set automatic graphics power: does not have switchable graphics
Oct 12 17:37:46 ava.home system76-power[13935]: [INFO] Initializing with the balanced profile
Oct 12 17:37:46 ava.home system76-power[13935]: setting schedutil with max 4558886
Oct 12 17:37:46 ava.home system76-power[13935]: [INFO] Registering dbus name com.system76.PowerDaemon
Oct 12 17:37:46 ava.home system76-power[13935]: [INFO] Adding dbus path /com/system76/PowerDaemon with interface com.system76.PowerDaemon
Oct 12 17:37:46 ava.home systemd[1]: Started com.system76.PowerDaemon.service - System76 Power Daemon.
Oct 12 17:37:46 ava.home system76-power[13935]: [INFO] Handling dbus requests
Oct 12 17:37:46 ava.home system76-power[13935]: [ERROR] hid_backlight: no system76_acpi::kbd_backlight led
Oct 13 10:49:27 ava.home systemd[1]: Stopping com.system76.PowerDaemon.service - System76 Power Daemon...
Oct 13 10:49:27 ava.home system76-power[13935]: [INFO] caught signal: SIGTERM
Oct 13 10:49:28 ava.home system76-power[13935]: [INFO] daemon exited from loop
Oct 13 10:49:28 ava.home systemd[1]: com.system76.PowerDaemon.service: Deactivated successfully.
Oct 13 10:49:28 ava.home systemd[1]: Stopped com.system76.PowerDaemon.service - System76 Power Daemon.
Oct 13 10:49:28 ava.home systemd[1]: com.system76.PowerDaemon.service: Consumed 1min 4.785s CPU time.
Oct 14 08:54:28 ava.home systemd[1]: Starting com.system76.PowerDaemon.service - System76 Power Daemon...
Oct 14 08:54:28 ava.home system76-power[146588]: [INFO] Starting daemon
Oct 14 08:54:28 ava.home system76-power[146588]: [INFO] Connecting to dbus system bus
Oct 14 08:54:28 ava.home system76-power[146588]: [INFO] Rescanning PCI bus
Oct 14 08:54:28 ava.home system76-power[146588]: [INFO] 0000:0c:00.0: AMD graphics
Oct 14 08:54:28 ava.home system76-power[146588]: [INFO] 0000:0c:00.0: Function for 0000:0c:00.0
Oct 14 08:54:28 ava.home system76-power[146588]: [INFO] 0000:0c:00.1: Function for 0000:0c:00.0
Oct 14 08:54:28 ava.home system76-power[146588]: [INFO] Disabling NMI Watchdog (for kernel debugging only)
Oct 14 08:54:28 ava.home system76-power[146588]: [INFO] Setting automatic graphics power
Oct 14 08:54:28 ava.home system76-power[146588]: [WARN] Failed to set automatic graphics power: does not have switchable graphics
Oct 14 08:54:28 ava.home system76-power[146588]: [INFO] Initializing with the balanced profile
Oct 14 08:54:28 ava.home system76-power[146588]: setting schedutil with max 4558886
Oct 14 08:54:28 ava.home system76-power[146588]: [INFO] Registering dbus name com.system76.PowerDaemon
Oct 14 08:54:28 ava.home system76-power[146588]: [INFO] Adding dbus path /com/system76/PowerDaemon with interface com.system76.PowerDaemon
Oct 14 08:54:28 ava.home systemd[1]: Started com.system76.PowerDaemon.service - System76 Power Daemon.
Oct 14 08:54:28 ava.home system76-power[146588]: [INFO] Handling dbus requests
Oct 14 08:54:28 ava.home system76-power[146588]: [ERROR] hid_backlight: no system76_acpi::kbd_backlight led
Oct 15 09:59:46 ava.home system76-power[146588]: [INFO] caught signal: SIGTERM
Oct 15 09:59:46 ava.home systemd[1]: Stopping com.system76.PowerDaemon.service - System76 Power Daemon...
Oct 15 09:59:47 ava.home system76-power[146588]: [INFO] daemon exited from loop
Oct 15 09:59:47 ava.home systemd[1]: com.system76.PowerDaemon.service: Deactivated successfully.
Oct 15 09:59:47 ava.home systemd[1]: Stopped com.system76.PowerDaemon.service - System76 Power Daemon.
Oct 15 09:59:47 ava.home systemd[1]: com.system76.PowerDaemon.service: Consumed 2min 59.257s CPU time, 1.7M memory peak, 0B memory swap peak.

Actually, now that I take the time to look at it, it looks like something's happening with the power-profiles-daemon.service at the same time. Here's the whole system log around the time that com.system76.PowerDaemon.service get stopped:

System logs
Oct 15 09:59:46 ava.home dbus-daemon[443293]: [session uid=0 pid=443291] SELinux support is enabled
Oct 15 09:59:46 ava.home dbus-daemon[443293]: [session uid=0 pid=443291] Activating service name='org.freedesktop.portal.Desktop' requested by ':1.0' (>
Oct 15 09:59:46 ava.home dbus-daemon[443293]: [session uid=0 pid=443291] Activating service name='org.freedesktop.portal.Documents' requested by ':1.1'>
Oct 15 09:59:46 ava.home dbus-daemon[443293]: [session uid=0 pid=443291] Activating service name='org.freedesktop.impl.portal.PermissionStore' requeste>
Oct 15 09:59:46 ava.home dbus-daemon[443293]: [session uid=0 pid=443291] Successfully activated service 'org.freedesktop.impl.portal.PermissionStore'
Oct 15 09:59:46 ava.home dbus-daemon[443293]: [session uid=0 pid=443291] Successfully activated service 'org.freedesktop.portal.Documents'
Oct 15 09:59:46 ava.home xdg-desktop-por[443297]: No skeleton to export
Oct 15 09:59:46 ava.home xdg-desktop-por[443297]: Choosing gtk.portal for org.freedesktop.impl.portal.FileChooser as a last-resort fallback
Oct 15 09:59:46 ava.home dbus-daemon[443293]: [session uid=0 pid=443291] Activating service name='org.freedesktop.impl.portal.desktop.gtk' requested by>
Oct 15 09:59:46 ava.home xdg-desktop-por[443297]: The preferred method to match portal implementations to desktop environments is to use the portals.co>
Oct 15 09:59:46 ava.home dbus-daemon[443293]: [session uid=0 pid=443291] Activating service name='org.gtk.vfs.Daemon' requested by ':1.4' (uid=0 pid=44>
Oct 15 09:59:46 ava.home dbus-daemon[443293]: [session uid=0 pid=443291] Successfully activated service 'org.gtk.vfs.Daemon'
Oct 15 09:59:46 ava.home dbus-daemon[443293]: [session uid=0 pid=443291] Successfully activated service 'org.freedesktop.impl.portal.desktop.gtk'
Oct 15 09:59:46 ava.home xdg-desktop-por[443297]: Choosing gtk.portal for org.freedesktop.impl.portal.AppChooser as a last-resort fallback
Oct 15 09:59:46 ava.home xdg-desktop-por[443297]: Choosing gtk.portal for org.freedesktop.impl.portal.Print as a last-resort fallback
Oct 15 09:59:46 ava.home xdg-desktop-por[443297]: Choosing gtk.portal for org.freedesktop.impl.portal.Notification as a last-resort fallback
Oct 15 09:59:46 ava.home xdg-desktop-por[443297]: Choosing gtk.portal for org.freedesktop.impl.portal.Inhibit as a last-resort fallback
Oct 15 09:59:46 ava.home xdg-desktop-por[443297]: Choosing gtk.portal for org.freedesktop.impl.portal.Access as a last-resort fallback
Oct 15 09:59:46 ava.home xdg-desktop-por[443297]: Failed connect to PipeWire: Couldn't connect to PipeWire
Oct 15 09:59:46 ava.home xdg-desktop-por[443297]: Choosing gtk.portal for org.freedesktop.impl.portal.Account as a last-resort fallback
Oct 15 09:59:46 ava.home xdg-desktop-por[443297]: Choosing gtk.portal for org.freedesktop.impl.portal.Email as a last-resort fallback
Oct 15 09:59:46 ava.home xdg-desktop-por[443297]: Choosing gtk.portal for org.freedesktop.impl.portal.DynamicLauncher as a last-resort fallback
Oct 15 09:59:46 ava.home dbus-daemon[443293]: [session uid=0 pid=443291] Successfully activated service 'org.freedesktop.portal.Desktop'
Oct 15 09:59:46 ava.home system76-power[146588]: [INFO] caught signal: SIGTERM
Oct 15 09:59:46 ava.home systemd[1]: Stopping com.system76.PowerDaemon.service - System76 Power Daemon...
Oct 15 09:59:46 ava.home audit: BPF prog-id=288 op=LOAD
Oct 15 09:59:46 ava.home systemd[1]: Starting power-profiles-daemon.service - Power Profiles daemon...
Oct 15 09:59:46 ava.home systemd[1]: Started power-profiles-daemon.service - Power Profiles daemon.
Oct 15 09:59:46 ava.home audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=power-profiles-d>
Oct 15 09:59:46 ava.home kwin_wayland[8613]: kf.windowsystem: static bool KX11Extras::mapViewport() may only be used on X11
Oct 15 09:59:47 ava.home system76-power[146588]: [INFO] daemon exited from loop
Oct 15 09:59:47 ava.home systemd[1]: com.system76.PowerDaemon.service: Deactivated successfully.
Oct 15 09:59:47 ava.home systemd[1]: Stopped com.system76.PowerDaemon.service - System76 Power Daemon.

Not at all related to packaging this as an RPM, though 😉

paul added 2 commits October 15, 2024 10:26
Added metadata needed to Cargo.toml, and an `rpm` target to the Makefile
@paul
Copy link
Author

paul commented Oct 15, 2024

@jacobgkau Actually, thanks for spurring me to investigate this! 😀

It looks like system76-power conflicts with the built-in power-profile-daemon: pop-os/pop#3234 From my logs, it looks like power-profile-daemon switching modes is what causes system76-power to stop.

I added a conflicts and provides to the RPM, and installed it. It uninstalled power-profile-daemon, so now we'll see if it stays running.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants