%define _debugsource_template %{nil} %define debug_package %{nil} %bcond_with vendored Name: scx-tools Version: 1.1.0 Release: 2%{?dist} Summary: scx_loader and scxctl for managing sched_ext schedulers License: GPL-2.0-only URL: https://github.com/sched-ext/scx-loader Source0: https://github.com/sched-ext/scx-loader/archive/refs/tags/v%{version}.tar.gz#/%{name}-%{version}.tar.gz %if %{with vendored} Source1: %{name}-%{version}-vendor.tar.zst %endif ExclusiveArch: x86_64 aarch64 BuildRequires: cargo >= 1.82 BuildRequires: rust >= 1.82 BuildRequires: gcc BuildRequires: make BuildRequires: pkgconf-pkg-config BuildRequires: systemd-rpm-macros BuildRequires: clang >= 17 BuildRequires: clang-devel BuildRequires: llvm >= 17 BuildRequires: llvm-devel BuildRequires: lld >= 17 BuildRequires: bpftool BuildRequires: libseccomp-devel Requires: scx-scheds >= %{version} Requires: polkit %{?systemd_requires} Provides: scxctl = %{version}-%{release} Obsoletes: scxctl < %{version}-%{release} Conflicts: scx-tools-git %description scx-tools provides scx_loader, a DBus on-demand loader for sched_ext schedulers, and scxctl, a command-line client used to control scx_loader. %prep %autosetup -n scx-loader-%{version} rm -f rust-toolchain.toml %if %{with vendored} tar -xaf %{SOURCE1} test -d vendor test -f .cargo/config.toml %endif %build export CARGO_HOME="$PWD/.cargo-home" export RUSTFLAGS="%{?build_rustflags}" export LIBCLANG_PATH=%{_libdir} %if %{with vendored} export CARGO_NET_OFFLINE=true cargo build --release --frozen --offline --all-features --workspace %else cargo fetch --locked cargo build --release --frozen --all-features --workspace %endif %install find target/release \ -maxdepth 1 \ -type f \ -executable \ ! -name '*.so' \ ! -name '*.d' \ ! -name 'xtask' \ -exec install -Dpm 0755 -t %{buildroot}%{_bindir} {} + export VENDOR_PREFIX=%{_prefix} export VENDOR_DATADIR=%{_datadir} export VENDOR_SYSCONFDIR=%{_sysconfdir} export VENDOR_LIBDIR=%{_prefix}/lib target/release/xtask install --destdir %{buildroot} install -d -m 0755 %{buildroot}%{_unitdir}/scx_loader.service.d cat > %{buildroot}%{_unitdir}/scx_loader.service.d/10-fedora-kconfig.conf <<'EOF' [Service] ExecStartPre=/usr/bin/install -d -m 0755 /run/scx_loader ExecStartPre=/usr/bin/sh -ec 'cfg="/boot/config-$(uname -r)"; test -r "$cfg" || cfg="/lib/modules/$(uname -r)/config"; if test -r "$cfg"; then ln -sfn "$cfg" /run/scx_loader/kconfig; echo "scx_loader kconfig -> $cfg"; else echo "kconfig not found (install kernel-devel?)"; fi' EOF cat > %{buildroot}%{_datadir}/scx_loader/config.toml <<'EOF' default_sched = "scx_lavd" default_mode = "Auto" [scheds.scx_lavd] auto_mode = ["--autopilot", "--kconfig", "/run/scx_loader/kconfig"] gaming_mode = ["--performance", "--kconfig", "/run/scx_loader/kconfig"] lowlatency_mode = ["--performance", "--kconfig", "/run/scx_loader/kconfig"] powersave_mode = ["--powersave", "--kconfig", "/run/scx_loader/kconfig"] server_mode = ["--autopilot", "--kconfig", "/run/scx_loader/kconfig"] EOF %check test -x %{buildroot}%{_bindir}/scx_loader test -x %{buildroot}%{_bindir}/scxctl test -f %{buildroot}%{_unitdir}/scx_loader.service test -f %{buildroot}%{_unitdir}/scx_loader.service.d/10-fedora-kconfig.conf test -f %{buildroot}%{_datadir}/dbus-1/system-services/org.scx.Loader.service test -f %{buildroot}%{_datadir}/dbus-1/system.d/org.scx.Loader.conf test -f %{buildroot}%{_datadir}/dbus-1/interfaces/org.scx.Loader.xml test -f %{buildroot}%{_datadir}/polkit-1/actions/org.scx.Loader.policy test -f %{buildroot}%{_datadir}/scx_loader/config.toml %post %systemd_post scx_loader.service %preun %systemd_preun scx_loader.service %postun %systemd_postun_with_restart scx_loader.service %files %license LICENSE %doc README.md %{_bindir}/* %{_unitdir}/scx_loader.service %{_unitdir}/scx_loader.service.d/10-fedora-kconfig.conf %{_datadir}/dbus-1/interfaces/org.scx.Loader.xml %{_datadir}/dbus-1/system-services/org.scx.Loader.service %{_datadir}/dbus-1/system.d/org.scx.Loader.conf %{_datadir}/polkit-1/actions/org.scx.Loader.policy %{_datadir}/scx_loader/config.toml %changelog * Tue May 05 2026 sachesi - 1.1.0-3 - Default to online build (--without vendored). Set enable_net=True in Copr. * Sun Apr 26 2026 sachesi - 1.1.0-2 - Recreate packaging with default vendored COPR mode and local online build support - Add Fedora kconfig runtime symlink drop-in for scx_lavd - Ship default scx_loader config using /run/scx_loader/kconfig * Sun Apr 26 2026 sachesi - 1.1.0-1 - Initial RPM package for scx-tools 1.1.0