## START: Set by rpmautospec ## (rpmautospec version 0.7.3) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: release_number = 14; base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); print(release_number + base_release_number - 1); }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} ## END: Set by rpmautospec Name: input-remapper Version: 2.0.1 Release: %autorelease Summary: An easy to use tool to change the behaviour of your input devices License: GPL-3.0-or-later URL: https://github.com/sezanzeb/%{name} Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz Source1: README.Fedora BuildArch: noarch BuildRequires: desktop-file-utils BuildRequires: libappstream-glib BuildRequires: pyproject-rpm-macros BuildRequires: systemd-rpm-macros BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-wheel BuildRequires: gettext # Called from inputremapper/gui/reader_service.py BuildRequires: /usr/bin/pgrep Requires: /usr/bin/pgrep # inputremapper/gui/components/editor.py BuildRequires: %{py3_dist pycairo} Requires: %{py3_dist pycairo} # Extra test dependencies (see scripts/ci-install-deps.sh): BuildRequires: %{py3_dist psutil} # Using pytest as the test runner lets us ignore modules and skip tests BuildRequires: %{py3_dist pytest} BuildRequires: gobject-introspection Requires: gobject-introspection # Grep for require_version to find these: # gi.require_version("Gdk", "3.0") # gi.require_version("Gtk", "3.0") BuildRequires: gtk3 Requires: gtk3 # gi.require_version("GLib", "2.0") BuildRequires: glib2 Requires: glib2 # gi.require_version("GtkSource", "4") BuildRequires: gtksourceview4 Requires: gtksourceview4 %generate_buildrequires %pyproject_buildrequires -r %description An easy to use tool to change the mapping of your input device buttons. Supports mice, keyboards, gamepads, X11, Wayland, combined buttons and programmable macros. Allows mapping non-keyboard events (click, joystick, wheel) to keys of keyboard devices. The program works at the evdev interface level, by filtering and redirecting the output of physical devices to that of virtual ones. %prep %autosetup -p1 -n %{name}-%{version} cp %{SOURCE1} ./ #Fix rpmlint errors #find inputremapper/ -iname "*.py" -type f -print0 | xargs -0 sed -i -e 's+\s*#\s*!/usr/bin/python3++' %build %pyproject_wheel %install %pyproject_install %pyproject_save_files inputremapper mv %{buildroot}%{python3_sitelib}/etc %{buildroot}/etc mv %{buildroot}%{python3_sitelib}/usr/bin %{buildroot}/usr/bin mv %{buildroot}%{python3_sitelib}/usr/lib/systemd %{buildroot}/usr/lib/systemd mv %{buildroot}%{python3_sitelib}/usr/lib/udev %{buildroot}/usr/lib/udev mv %{buildroot}%{python3_sitelib}/usr/share %{buildroot}/usr/share mkdir -p %{buildroot}/usr/share/dbus-1/system.d/ mv %{buildroot}/etc/dbus-1/system.d/inputremapper.Control.conf %{buildroot}/usr/share/dbus-1/system.d/ # clean up duplicate files rm %{buildroot}%{_datadir}/%{name}/inputremapper.Control.conf rm %{buildroot}%{_datadir}/%{name}/io.github.sezanzeb.input_remapper.metainfo.xml rm %{buildroot}%{_datadir}/%{name}/%{name}-gtk.desktop rm %{buildroot}%{_datadir}/%{name}/%{name}.policy %post -n %{name} %systemd_post %{name}.service %preun -n %{name} %systemd_preun %{name}.service %postun -n %{name} %systemd_postun_with_restart %{name}.service %check desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}-gtk.desktop appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.metainfo.xml # See .github/workflows/test.yml # Note that setting TMPDIR="${PWD}/test_tmp" tends to form paths that are too # long for UNIX domain sockets, causing test failures, so we just use the # default temporary directory. export DATA_DIR='%{buildroot}%{_datadir}/%{name}' # Make sure everything is at least importable: %pyproject_check_import # Run the unit tests. # Upstream would run them like this... # PYTHONPATH='%%{buildroot}%%{python3_sitelib}' PYTHONDONTWRITEBYTECODE=1 \ # %%{python3} tests/test.py --start-dir unit || : # ... but using pytest allows us to ignore modules and skip tests easily. # E gi.repository.GLib.GError: g-io-error-quark: Could not connect: No such # file or directory (1) ignore="${ignore-} --ignore=tests/unit/test_daemon.py" # These tests only work when executed under a user whose home directory # (based on the passwd entry, not on $HOME) begins with /tmp. Obviously, we # can’t satisfy that, and we need to skip the affected tests. ignore="${ignore-} --ignore=tests/unit/test_migrations.py" # TODO: What is wrong? # E AssertionError: Lists differ: [, # ] != [, ] # E # E Second list contains 2 additional elements. # E First extra element 4: # E # E # E Diff is 1044 characters long. Set self.maxDiff to None to see it. k="${k-}${k+ and }not (TestRelToAbs and test_rel_to_abs)" # This seems to fail only in Koji, not in mock… # > self.assertAlmostEqual(len(mouse_history), rel_rate * sleep * 2, delta=5) # E AssertionError: 51 != 60.0 within 5 delta (9.0 difference) k="${k-}${k+ and }not (TestAbsToRel and test_abs_to_rel)" # These tests are based on timing/sleeps, and seem to experience flaky and/or # arch-dependent failures in koji. The failures generally appear to be # noisy/spurious. # k="${k-}${k+ and }not (TestIdk and test_axis_switch)" # > self.assertAlmostEqual(len(mouse_history), rel_rate * sleep, delta=3) # E AssertionError: 26 != 30.0 within 3 delta (4.0 difference) # > self.assertLess(time.time() - start, sleep_time * 1.3) # E AssertionError: 0.5397047996520996 not less than 0.52 k="${k-}${k+ and }not (TestMacros and test_2)" # > self.assertLess(time.time() - start, total_time * 1.2) # E AssertionError: 0.44843482971191406 not less than 0.432 k="${k-}${k+ and }not (TestMacros and test_3)" # > self.assertLess(time.time() - start, total_time * 1.2) # E AssertionError: 0.511094331741333 not less than 0.48 k="${k-}${k+ and }not (TestMacros and test_5)" # # this seems to have a tendency of injecting less wheel events, # # especially if the sleep is short # > self.assertGreater(actual_wheel_event_count, expected_wheel_event_count * 0.8) # E AssertionError: 2 not greater than 2.4000000000000004 k="${k-}${k+ and }not (TestMacros and test_mouse)" %pytest tests/unit ${ignore-} -k "${k-}" -v %files -f %{pyproject_files} %doc README.md README.Fedora %license LICENSE %{_datadir}/dbus-1/system.d/inputremapper.Control.conf %{_sysconfdir}/xdg/autostart/%{name}-autoload.desktop %{_bindir}/%{name}* %{_unitdir}/%{name}.service %{_udevrulesdir}/99-%{name}.rules %{_datadir}/%{name} # deal with non-standard location of localization files %exclude %dir %{_datadir}/%{name}/lang %lang(fr) %{_datadir}/%{name}/lang/fr %lang(fr) %{_datadir}/%{name}/lang/fr_FR %lang(it) %{_datadir}/%{name}/lang/it %lang(it) %{_datadir}/%{name}/lang/it_IT %lang(pt) %{_datadir}/%{name}/lang/pt %lang(pt) %{_datadir}/%{name}/lang/pt_BR %lang(ru) %{_datadir}/%{name}/lang/ru %lang(ru) %{_datadir}/%{name}/lang/ru_RU %lang(sk) %{_datadir}/%{name}/lang/sk %lang(sk) %{_datadir}/%{name}/lang/sk_SK %lang(uk) %{_datadir}/%{name}/lang/uk %lang(uk) %{_datadir}/%{name}/lang/uk_UA %lang(zh) %{_datadir}/%{name}/lang/zh %lang(zh) %{_datadir}/%{name}/lang/zh_CN %{_datadir}/applications/%{name}-gtk.desktop %{_datadir}/polkit-1/actions/%{name}.policy %{_metainfodir}/*.metainfo.xml %changelog ## START: Generated by rpmautospec * Thu Jul 18 2024 Fedora Release Engineering - 2.0.1-14 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild * Sat Jun 29 2024 Python Maint - 2.0.1-13 - Rebuilt for Python 3.13 * Thu May 30 2024 Benjamin A. Beasley - 2.0.1-12 - Do not override TMPDIR for the tests - Fixes FTBFS due to too-long UNIX domain socket paths * Wed Jan 24 2024 Fedora Release Engineering - 2.0.1-11 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Sat Jan 20 2024 Fedora Release Engineering - 2.0.1-10 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Sat Sep 30 2023 Benjamin A. Beasley - 2.0.1-9 - Actually run the unit tests * Fri Sep 29 2023 Benjamin A. Beasley - 2.0.1-8 - Run the unit tests (but don’t error on the remaining failures) * Fri Sep 29 2023 Benjamin A. Beasley - 2.0.1-7 - Run an import-only “smoke test” * Fri Sep 29 2023 Benjamin A. Beasley - 2.0.1-6 - Add a BR on psutil for testing * Fri Sep 29 2023 Benjamin A. Beasley - 2.0.1-5 - Add missing PyCairo dependency * Fri Sep 29 2023 Benjamin A. Beasley - 2.0.1-4 - Add missing GTK dependencies for GObject Introspection * Fri Sep 29 2023 Benjamin A. Beasley - 2.0.1-3 - Correct the Source0 URL - Now it always downloads the specified version, not “master” * Fri Sep 29 2023 Benjamin A. Beasley - 2.0.1-2 - Add missing dependency on /usr/bin/pgrep * Tue Sep 19 2023 Alexander Ploumistos - 2.0.1-1 - Update to v2.0.1 * Mon May 29 2023 Alexander Ploumistos - 2.0.0-5 - Work around non-standard location of localization files * Tue May 23 2023 Alexander Ploumistos - 2.0.0-4 - Import into Fedora proper (fedora#2180418) * Tue May 23 2023 Alexander Ploumistos - 2.0.0-3 - Remove duplicate files - Add README.Fedora - Drop direct systemctl calls * Sun May 21 2023 Alexander Ploumistos - 2.0.0-2 - Rename package to input-remapper - Switch to autorelease and autochangelog - Use find_lang macro - Remove explicit python runtime dependencies * Mon Mar 20 2023 Alexander Ploumistos - 2.0.0-1 - Update to 2.0.0 * Thu Nov 17 2022 Alexander Ploumistos - 1.5.0-2 - Rework files stanza * Wed Nov 16 2022 Alexander Ploumistos - 1.5.0-1 - Version 1.5.0 - Spec file based on Paweł Marciniak's work - Fix license ## END: Generated by rpmautospec