- Update to version 1.8.2

* Fix idle inhibitor closing bus connection too early
  * Fix hybrid CPU core pinning
  * Fix unreadable process maps in gamemodelist
  * Fixed crash if dbus is not accesible
  * Various bugfixes and improvements to documentation

OBS-URL: https://build.opensuse.org/package/show/games:tools/gamemode?expand=0&rev=39
This commit is contained in:
Matthias Bach
2024-08-20 19:22:56 +00:00
committed by Git OBS Bridge
commit f7fc3a4c90
12 changed files with 560 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.osc

19
README.openSUSE Normal file
View File

@@ -0,0 +1,19 @@
Launching the GameMode Daemon
=============================
The GameMode daemon is activated via D-Bus launch automatically on access by
the first client.
Reloading the GameMode configuration file
=========================================
Although activated via D-Bus. The daemon is run using Systemd and can easily
be restarted via systemctl.
systemctl --user restart gamemoded
Permissions
===========
Some feature, like renicing the process run in GameMode, require elevated priviledges.
To grant these, add your user to the "gamemode" group.

2
baselibs.conf Normal file
View File

@@ -0,0 +1,2 @@
libgamemode0
libgamemodeauto0

52
feral.keyring Normal file
View File

@@ -0,0 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
k2pbXuk=
=gj5V
-----END PGP PUBLIC KEY BLOCK-----

3
gamemode-1.8.1.tar.xz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cdb117d05d65dbd03c0bd2104df874a1f878db8f23cc4d55bfa44e832482269e
size 78284

16
gamemode-1.8.1.tar.xz.asc Normal file
View File

@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEE3jph1YCSt+zQQwmVCPnBx4jMdRUFAmV4hNoACgkQCPnBx4jM
dRVMvQ/+La1ik2eAdBMJPHXMPI3vXNiZ5WQVezTvERk0c/YYrSJcrX5q3ayUNoRv
OAbcrcK5U6fr8dJYmVR66kXi14j9PvhmvHDelPBMmUzS5hyCUKkmG7qs3iyyHzOO
Wo2RgO/2+wPsBqGrlC9s6JHqxdOU6KMu6WiqDvF2+eDnx1e14xOsZjMJ75DD6w7+
+HJI4x3tme7h8zu3w/cO8TcovM9C/VU1jk/uNqhyC/DG3ZULzZc47JjdKQffoyaZ
IZyZwDUwJqiu5RVIquqDOuTZhgV3rPZsdtPhr+RT8sSqYAd9t6CkSUPGw1Elr0/7
jL9dH60AurDw0xu96uaDM1AOtpWwUT9E8kH8vUivmgutNVEo/EuD4R2pDhnrKY7e
YXTJ4OztaPMVSswq9WhYi6hGj+Lf/slh99zQvWz8M/sftzhnUAgLBjUoD5ZwvEp8
TuQLo2QGBoMIbHZqf7Mjapt8apBuqvjqk+WqsI0y+wz3cDG4HQOCq+8gowAeNEpO
JwDvrvZjaUXI9SL6s+n4jufbgWh9E9frmc7IcBawBUekI+Zx7VOwwRQXtLkjJSvU
jtAhCsHUqcYNSiij+gpULnkcvyeRRKbgigULs9e2ixul8kA9iY0Y2E+vePZn3Nnb
6/YZKdM390qG1jTtTyM7j/bBO4ZSoG72JirABeN8tLtnjT1pX1U=
=Begx
-----END PGP SIGNATURE-----

3
gamemode-1.8.2.tar.xz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1169f294424c566988a0cab8c543f0aecec360ecb8ce2f91abc1460b1c59a439
size 78724

16
gamemode-1.8.2.tar.xz.asc Normal file
View File

@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEE3jph1YCSt+zQQwmVCPnBx4jMdRUFAmbDJOUACgkQCPnBx4jM
dRV7Uw/+Ox5Y5HFzCE5N+njD69ZnLRqVZQ+l6FYhfqQaEjc/NLEldr7aLk6EcGLd
Tae+T5vFJBTEeGO4I/qLr0r7idcZAfrDIRJTFxpD0KYC4zrtYyOB9yLtN+hfW4o+
jCY1U3CTYf++rmbRO9erOAYNj+HcA9JK3B7mSgQBF09E+ORj19ZVTc0Cq3VPENMc
wee2TPEHxLiAVMnly0z4vhnj/2FR3ZbvX/PTSpxwqUJtjzY4M4llZgCH2GKVo8Uk
YCoRDWhrELsTIkjwcPXqeq5N069Xk3rYXYTlsrxgABI1YOHZzhYygb3G8zKcf8gz
lSJ1ZFoFfP7K1QN4GW3XmtKKqqGp8Gx6y2kCIrqKncoR/FlU3ijMALQTCNAupvus
brKZluFOQn1X7Re2bOeYj7tgtHtqBGHyonEqsw3sI9pDRYQxwGd4mJTDnl3BZtPh
HueGoPhsahHCD8KuuCeeWsZUVB4UljJsdDxRwpKK6lXcuS+siDaIQU6YLTWVFTLL
i6Ap2o6d1VsCubbA7ec/ELbvJk4jxHkLS0XrcPRlTNnFmBGyt5CTYFUDzApjHan/
A9BncDife4sPvaFZW7Q+jMvSyKwbfY0JICr97zJkhjONFGiyX0kECDCdy8k0HOKq
LDrQ/PWHXUWRu2zn5V0+x/8b/YOrGoTlylJXrr+I6pvAHGtMN9M=
=q+pF
-----END PGP SIGNATURE-----

12
gamemode-rpmlintrc Normal file
View File

@@ -0,0 +1,12 @@
# In a perfect world this would be a noarch package. But we cannot make the main package
# noarch as the sub-packages are architecture dependent.
addFilter('gamemode.* no-binary')
# gamemoderun loads the dependency via dlopen, so it cannot be picked up automatically.
addFilter('gamemode.* explicit-lib-dependency libgamemodeauto')
# Gamemode actually has a % in its description.
addFilter('gamemode.* unexpanded-macro %description -l C %command')
# Libgamemodeauto loads the dependency via dlopen, so it cannot be picked up automatically.
addFilter('libgamemodeauto.* explicit-lib-dependency libgamemode')

212
gamemode.changes Normal file
View File

@@ -0,0 +1,212 @@
-------------------------------------------------------------------
Tue Aug 20 18:57:16 UTC 2024 - Matthias Bach <marix@marix.org> - 1.8.2
- Update to version 1.8.2
* Fix idle inhibitor closing bus connection too early
* Fix hybrid CPU core pinning
* Fix unreadable process maps in gamemodelist
* Fixed crash if dbus is not accesible
* Various bugfixes and improvements to documentation
-------------------------------------------------------------------
Thu Dec 21 20:13:21 UTC 2023 - Matthias Bach <marix@marix.org>
- Fix package setting a wrong mode for /etc/security/limits.d.
- Drop unused rpmlint filter.
-------------------------------------------------------------------
Wed Dec 13 11:54:01 UTC 2023 - Matthias Bach <marix@marix.org>
- Fix GameMode's PolicyKit rules not applying.
-------------------------------------------------------------------
Wed Dec 13 08:03:00 UTC 2023 - Matthias Bach <marix@marix.org>
- Update to version 1.8.1
* Fix syntax error in polkit rules.
-------------------------------------------------------------------
Fri Dec 8 18:07:49 UTC 2023 - Matthias Bach <marix@marix.org> - 1.8
- Update to version 1.8
* Requires users to be a member of the "gamemode" group to
utilise priviledged functionality like modifying the CPU
governor.
* Adds CPU core pinning and parking capability.
* Allows disabling the Linux kernel split lock mitigation.
* Fixes building when pidfd_open is available.
* Unifies privileged group configuration between pam, systemd,
and polkit.
* Various other bugfixes and improved default configuration
- Drop workaround for problematic pidfd_open dection on Tumbleweed
now that compilation with pidfd_open is fixed upstream.
- Drop no longer required only-build-shared-library.patch.
-------------------------------------------------------------------
Wed May 10 20:35:53 UTC 2023 - Matthias Bach <marix@marix.org> - 1.7
- Add a new gamemode binary package
* This provides gamemoderun and gamemodelist commands previously
provided via the gamemoded package. However, these actually
require libgamemodeauto0 which was missed.
* You can now install the gamemode package to get the full set
of GameMode functionality. Not being able to do this admittedly
was confusing as was reported in bsc#1211086.
- Add feral.keyring to enable verifying the source signature.
-------------------------------------------------------------------
Sat Sep 3 11:47:40 UTC 2022 - Matthias Bach <marix@marix.org> - 1.7
- Add a workaround for building on Tumbleweed where detection of
the pidfd_open function does not work properly.
-------------------------------------------------------------------
Fri Jul 22 18:27:05 UTC 2022 - Matthias Bach <marix@marix.org> - 1.7
- Update to version 1.7
* New utility: gamemode
* Run executables from PATH instead of /usr/bin
-------------------------------------------------------------------
Thu Apr 29 14:02:30 UTC 2021 - Ferdinand Thiessen <rpm@fthiessen.de>
- Update to version 1.6.1
* Use inih r53
* Minor metainfo improvements
- Use SourceUrl and signature
-------------------------------------------------------------------
Wed Sep 23 18:12:20 UTC 2020 - marix@marix.org
- Update to version 1.6:
* Improved man pages
* Bug fixes
- Added only-build-shared-library.patch.
- Drop special handling for no longer supported Leap 42.
-------------------------------------------------------------------
Thu Jan 23 18:32:54 UTC 2020 - marix@marix.org
- Update to version 1.5:
* Introduce a new pidfd based set of D-Bus APIs.
* Dynamically change governor on integrated GPUs for improved
performance.
* Various other fixes and improvements.
-------------------------------------------------------------------
Tue Jul 23 11:19:07 UTC 2019 - Andreas Prittwitz <m4ng4n@gmx.de>
- Update to version 1.4
* Add new D-Bus methods/properties for use by external tools
such as the GameMode GNOME Shell extension.
* Fix I/O priority and niceness optimisations to apply to the
whole process rather than just the thread that
requests GameMode.
* gamemoded will now automatically reload the configuration
file when it is changed and update optimisations on
current clients.
* Add support for using the client library inside Flatpak by
communicating with the daemon via a portal.
* Client library now uses libdbus rather than sd-bus.
* Fix gamemoderun to use the correct library path depending on
whether the app is 32-bit or 64-bit.
* Support the GAMEMODERUNEXEC environment variable to specify
an extra wrapper command for games launched with gamemoderun
(e.g. a hybrid GPU wrapper such as optirun).
* Various other fixes and improvements.
- Removed gpuctl-fixes.patch already included in 1.4
- Added "BuildRequires: pkgconfig(dbus-1)" to spec file which
is needed by version 1.4
-------------------------------------------------------------------
Wed May 22 13:58:09 UTC 2019 - Christophe Giboudeaux <christophe@krop.fr>
- Fix the gamemode build requirement.
-------------------------------------------------------------------
Tue Apr 9 19:39:24 UTC 2019 - Matthias Bach <marix@marix.org>
- Update to version 1.3.1
* Disables screensaver when the game is running.
* New `gamemoderun` script to run games in GameMode which don't
support it themselves.
* Add GPU managment capabilities.
- Removed hardening.patch already included in 1.3.
- Add gpuctl-fixes.patch hardening the new GPU features.
-------------------------------------------------------------------
Sat Mar 16 19:34:04 UTC 2019 - Matthias Bach <marix@marix.org>
- Include the baselibs.conf in the source RPM.
-------------------------------------------------------------------
Wed Mar 13 21:21:43 UTC 2019 - Andreas Prittwitz <m4ng4n@gmx.de>
- Add baselibs.conf to also build -32bit packages for the x86-64
arch as they are required by 32bit games in wine.
See https://github.com/FeralInteractive/gamemode/issues/25.
-------------------------------------------------------------------
Thu Aug 16 11:06:03 UTC 2018 - jengelh@inai.de
- Wrap descriptions. Add missing Group: lines.
- Use noun phrase in summary.
-------------------------------------------------------------------
Mon Aug 13 20:47:23 UTC 2018 - marix@marix.org
- Add hardening.patch: This backports bugfixes and hardenings
resulting from the Factory-inclusion security review and already
accepted by upstream.
- Stop suppressing linter warning for the PolicyKit priviledge
escalation. This has been properly handled via boo#1093979 now.
- Suppress false positive lintian caused by a % symbol in the
description of the libgamemodeauto library.
-------------------------------------------------------------------
Tue Jul 24 21:11:08 UTC 2018 - marix@marix.org
- Update to version 1.2:
+ Store the initial governor state on mode enter
+ Config now supports defaultgov and desiredgov
+ Add support for renice-ing games to a higher priority (renice
config option)
+ Make libraries properly versioned.
- Gamemoded is now run as a Systemd service in the user session
but still activated via D-Bus.
-------------------------------------------------------------------
Sat May 19 11:25:26 UTC 2018 - marix@marix.org
- Fix compilation on Leap 42.3.
-------------------------------------------------------------------
Tue May 15 19:38:57 UTC 2018 - marix@marix.org
- Add Documentation files:
+ License
+ Sample configuration file
+ README.openSUSE documenting how to apply configuration
-------------------------------------------------------------------
Tue May 15 17:37:33 UTC 2018 - marix@marix.org
- Replace Systemd unit by a D-Bus service.
+ The Systemd unit does not work on openSUSE as it lacks access
to D-Bus.
+ The D-Bus service is zero configuration for the user.
-------------------------------------------------------------------
Sat May 12 19:47:14 UTC 2018 - marix@marix.org
- Work around Leap 42.3's default compiler being to old.
-------------------------------------------------------------------
Sat May 12 19:41:07 UTC 2018 - marix@marix.org
- Initial experimental package version.
+ Provides the GameMode daemon
+ Provides the auto-GameMode library
+ Provides a devel package with the GameMode client header

201
gamemode.spec Normal file
View File

@@ -0,0 +1,201 @@
#
# spec file for package gamemode
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2020 Matthias Bach <marix@marix.org>.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: gamemode
Version: 1.8.2
Release: 0
Summary: Daemon/library combo for changing Linux system performance on demand
License: BSD-3-Clause
Group: Amusements/Games/Other
URL: https://github.com/FeralInteractive/gamemode
Source0: %{URL}/releases/download/%{version}/%{name}-%{version}.tar.xz
Source1: %{URL}/releases/download/%{version}/%{name}-%{version}.tar.xz.asc
Source2: gamemode-rpmlintrc
Source3: README.openSUSE
Source4: baselibs.conf
Source5: feral.keyring
BuildRequires: cmake
BuildRequires: libinih-devel
BuildRequires: meson
BuildRequires: ninja
BuildRequires: pkgconfig
BuildRequires: polkit-devel
BuildRequires: sysuser-tools
BuildRequires: pkgconfig(dbus-1)
# Yes, it needs both
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(systemd)
# We need to explicitly define the dependency as this is used via
# LD_PRELOAD from a shell script and thus cannot be inferred.
Requires: libgamemodeauto0
Provides: gamemoded:%{_bindir}/gamemoderun
Provides: gamemoded:%{_bindir}/gamemodelist
%description
GameMode is a daemon/lib combo for Linux that allows games to request
a set of optimisations be temporarily applied to the host OS.
GameMode was designed primarily as a stop-gap solution to problems
with the Intel and AMD CPU powersave or ondemand governors, but is
now able to launch custom user defined plugins, and is intended to be
expanded further, as there are a wealth of automation tasks one might
want to apply.
For applications that don't implement the GameMode activation themselves,
you can toggle the GameMode by running them via the gamemoderun command.
gamemoderun ./game
For Steam games this can be done by editing the launch options:
gamemoderun %%command%%
Note that some functionalities, like modifying the CPU governor, require
the user to be in the priviledged "gamemode" group.
%package -n gamemoded
Summary: The GameMode daemon required by GameMode enabled games
Group: Amusements/Games/Other
Recommends: libgamemode
Suggests: gamemode
Suggests: libgamemodeauto
%sysusers_requires
%description -n gamemoded
GameMode is a daemon/lib combo for Linux that allows games to request
a set of optimisations be temporarily applied to the host OS.
The GameMode daemon is installed as a D-Bus Service and will start
automatically on first access by a client.
%package -n libgamemode0
Summary: GameMode client library
Group: System/Libraries
Requires: gamemoded
%systemd_requires
%description -n libgamemode0
GameMode is a daemon/lib combo for Linux that allows games to request
a set of optimisations be temporarily applied to the host OS.
Libgamemode is the client library used by games or libgamemodeauto to
talk to the GameMode daemon.
%package -n libgamemodeauto0
Summary: Helper library allowing to equip any game with GameMode support
Group: System/Libraries
Requires: libgamemode0
%description -n libgamemodeauto0
GameMode is a daemon/lib combo for Linux that allows games to request
a set of optimisations be temporarily applied to the host OS.
Libgamemodeauto allows you to use GameMode with any Game by
preloading it into the game.
LD_PRELOAD=%{_libdir}/libgamemodeauto.so.0 ./game
For Steam games this can be done by editing the launch options:
LD_PRELOAD=$LD_PRELOAD:%{_libdir}/libgamemodeauto.so.0 %%command%%
Nowadays this however can be easier done by using the gamemoderun command
from the gamemode package.
%package -n libgamemode-devel
Summary: Headers for compiling games using GameMode
Group: Development/Libraries/C and C++
Requires: libgamemode0 = %{version}
Requires: libgamemodeauto0 = %{version}
%description -n libgamemode-devel
GameMode is a daemon/lib combo for Linux that allows games to request
a set of optimisations be temporarily applied to the host OS.
This package contains the headers required to compile games with
built-in GameMode support.
%prep
%autosetup -p1
cp %{SOURCE3} .
%build
%meson -Dwith-examples=false
%meson_build
%check
%meson_test
%install
%meson_install
# Fix gamemode PolKit rules being overriden by default rules
mv %{buildroot}/%{_datadir}/polkit-1/rules.d/gamemode.rules %{buildroot}/%{_datadir}/polkit-1/rules.d/40-gamemode.rules
%post -n libgamemode0 -p /sbin/ldconfig
%postun -n libgamemode0 -p /sbin/ldconfig
%post -n libgamemodeauto0 -p /sbin/ldconfig
%postun -n libgamemodeauto0 -p /sbin/ldconfig
%post -n gamemoded
%sysusers_create %{name}.conf
%files
%{_bindir}/gamemodelist
%{_bindir}/gamemoderun
%{_mandir}/*/gamemodelist*
%{_mandir}/*/gamemoderun*
%license LICENSE.txt
%files -n gamemoded
%{_bindir}/gamemoded
%{_libexecdir}/cpugovctl
%{_libexecdir}/cpucorectl
%{_libexecdir}/gpuclockctl
%{_libexecdir}/procsysctl
%{_userunitdir}/gamemoded.service
%{_datadir}/polkit-1/actions/com.feralinteractive.GameMode.policy
%{_datadir}/polkit-1/rules.d/40-gamemode.rules
%{_datadir}/dbus-1/services/com.feralinteractive.GameMode.service
%{_datadir}/metainfo/io.github.feralinteractive.gamemode.metainfo.xml
%{_mandir}/*/gamemoded*
%{_sysusersdir}/%{name}.conf
%dir %{_sysconfdir}/security/limits.d
%config(noreplace) %{_sysconfdir}/security/limits.d/10-gamemode.conf
%doc example/gamemode.ini README.openSUSE
%license LICENSE.txt
%files -n libgamemode0
%{_libdir}/libgamemode.so.0*
%license LICENSE.txt
%files -n libgamemodeauto0
%{_libdir}/libgamemodeauto.so.0*
%license LICENSE.txt
%files -n libgamemode-devel
%{_includedir}/gamemode_client.h
%{_libdir}/libgamemode.so
%{_libdir}/libgamemodeauto.so
%{_libdir}/pkgconfig/gamemode*
%{_libdir}/pkgconfig/libgamemode*
%license LICENSE.txt
%changelog