diff options
author | Joonas Niilola <juippis@gentoo.org> | 2021-08-02 16:15:03 +0300 |
---|---|---|
committer | Joonas Niilola <juippis@gentoo.org> | 2021-08-02 16:16:39 +0300 |
commit | d124cff10bbf1f7970b0e950c1f2eaba051c57a9 (patch) | |
tree | 4fcde8df1b19e2902d37c7b0ca43659bb3388e1f /games-util | |
parent | profiles/*: Remove eapi file from otherwise empty dirs (diff) | |
download | gentoo-d124cff10bbf1f7970b0e950c1f2eaba051c57a9.tar.gz gentoo-d124cff10bbf1f7970b0e950c1f2eaba051c57a9.tar.bz2 gentoo-d124cff10bbf1f7970b0e950c1f2eaba051c57a9.zip |
games-util/xboxdrv: update with new scons
- move back to non-forked upstream release, add patches so it builds.
Closes: https://bugs.gentoo.org/806082
Signed-off-by: Joonas Niilola <juippis@gentoo.org>
Diffstat (limited to 'games-util')
5 files changed, 406 insertions, 0 deletions
diff --git a/games-util/xboxdrv/Manifest b/games-util/xboxdrv/Manifest index 3e0cab331729..484b4a26efbd 100644 --- a/games-util/xboxdrv/Manifest +++ b/games-util/xboxdrv/Manifest @@ -1 +1,2 @@ DIST xboxdrv-0.8.8_p20190118.tar.gz 322541 BLAKE2B ffa1021f974414ab9efebccf89e8be9137647ba7e1adf3bc9dad3b17b362b340f087fdac42c9b91a29a4cfe13295df6d3861fe953d9f96e80df08d4a6b1ce754 SHA512 ede650090c67642dc4729acc37630ae807f354d76f9bf31e23357668b6ae2b8d0261d2cf6e33090ab2120083b0664332dab22f1ed682bcdcbf1cac88b97e67af +DIST xboxdrv-v0.8.8.tar.bz2 268046 BLAKE2B 3092a0e1e1cf1ee351879e791212445c567772f4115eb09eeb0c28bc1692b1951837ae7f6488091eb57d06cd38edae4e964502524606370f1ccd8fc39b307db8 SHA512 9b90f866ab322aaf3223215c78120a7aeacb56970fedf2e603f14704bd517b8316a3e28edb6a75e1a47729e9ced4cde5cac3a2f7a95d8514b83219b8821eb9db diff --git a/games-util/xboxdrv/files/xboxdrv-0.8.8-Update-SConstruct-to-python3.patch b/games-util/xboxdrv/files/xboxdrv-0.8.8-Update-SConstruct-to-python3.patch new file mode 100644 index 000000000000..accb4317fad4 --- /dev/null +++ b/games-util/xboxdrv/files/xboxdrv-0.8.8-Update-SConstruct-to-python3.patch @@ -0,0 +1,79 @@ +From 39a334fbc0482626455f417e97308e52aa8746a7 Mon Sep 17 00:00:00 2001 +From: Ingo Ruhnke <grumbel@gmail.com> +Date: Sun, 24 Nov 2019 18:16:16 +0100 +Subject: [PATCH 1/3] Update SConstruct to python3 + +--- + SConstruct | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git SConstruct SConstruct +index 4cd7970..54fa11f 100644 +--- a/SConstruct ++++ b/SConstruct +@@ -15,7 +15,7 @@ def build_dbus_glue(target, source, env): + "--mode=glib-server", + "--prefix=" + env['DBUS_PREFIX'], source[0].get_path()], + stdout=subprocess.PIPE).communicate()[0] +- ++ xml = xml.decode() + xml = re.sub(r"callback = \(([A-Za-z_]+)\) \(marshal_data \? marshal_data : cc->callback\);", + r"union { \1 fn; void* obj; } conv;\n " + "conv.obj = (marshal_data ? marshal_data : cc->callback);\n " +@@ -29,14 +29,14 @@ def build_bin2h(target, source, env): + Takes a list of files and converts them into a C source that can be included + """ + def c_escape(str): +- return str.translate(string.maketrans("/.-", "___")) ++ return str.translate(str.maketrans("/.-", "___")) + +- print target +- print source ++ print(target) ++ print(source) + with open(target[0].get_path(), "w") as fout: + fout.write("// autogenerated by scons Bin2H builder, do not edit by hand!\n\n") + +- if env.has_key("BIN2H_NAMESPACE"): ++ if "BIN2H_NAMESPACE" in env: + fout.write("namespace %s {\n\n" % env["BIN2H_NAMESPACE"]) + + # write down data +@@ -45,8 +45,8 @@ def build_bin2h(target, source, env): + data = fin.read() + fout.write("// \"%s\"\n" % src.get_path()) + fout.write("const char %s[] = {" % c_escape(src.get_path())) +- bytes_arr = ["0x%02x" % ord(c) for c in data] +- for i in xrange(len(bytes_arr)): ++ bytes_arr = ["0x%02x" % c for c in data] ++ for i in range(len(bytes_arr)): + if i % 13 == 0: + fout.write("\n ") + fout.write(bytes_arr[i]) +@@ -62,7 +62,7 @@ def build_bin2h(target, source, env): + for src in source], ",\n")) + fout.write("\n}\n\n") + +- if env.has_key("BIN2H_NAMESPACE"): ++ if "BIN2H_NAMESPACE" in env: + fout.write("} // namespace %s\n\n" % env["BIN2H_NAMESPACE"]) + + fout.write("/* EOF */\n") +@@ -131,12 +131,12 @@ env.Append(CPPDEFINES = { 'PACKAGE_VERSION': "'\"%s\"'" % package_version }) + conf = Configure(env) + + if not conf.env['CXX']: +- print "g++ must be installed!" ++ print("g++ must be installed!") + Exit(1) + + # X11 checks + if not conf.CheckLibWithHeader('X11', 'X11/Xlib.h', 'C++'): +- print 'libx11-dev must be installed!' ++ print('libx11-dev must be installed!') + Exit(1) + + env = conf.Finish() +-- +2.29.0.rc1 + diff --git a/games-util/xboxdrv/files/xboxdrv-0.8.8-Updating-python-code-to-python3.patch b/games-util/xboxdrv/files/xboxdrv-0.8.8-Updating-python-code-to-python3.patch new file mode 100644 index 000000000000..139336affd90 --- /dev/null +++ b/games-util/xboxdrv/files/xboxdrv-0.8.8-Updating-python-code-to-python3.patch @@ -0,0 +1,238 @@ +From e37d3558a1a8a36fbc5d693c53893127a288fd02 Mon Sep 17 00:00:00 2001 +From: Ingo Ruhnke <grumbel@gmail.com> +Date: Sun, 24 Nov 2019 18:36:25 +0100 +Subject: [PATCH 3/3] Updating python code to python3 + +--- + examples/responsecurve-generator.py | 14 ++++----- + runxboxdrv/runxboxdrv | 46 ++++++++++++++--------------- + xboxdrvctl | 8 ++--- + 3 files changed, 34 insertions(+), 34 deletions(-) + +diff --git examples/responsecurve-generator.py examples/responsecurve-generator.py +index c74e34d..942463b 100755 +--- a/examples/responsecurve-generator.py ++++ b/examples/responsecurve-generator.py +@@ -1,14 +1,14 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + import sys + import string + + if len(sys.argv) != 3: +- print "Usage:", sys.argv[0], "STEPS", "EQUATION" +- print "Simple generator for generating responsecurve data from equations." +- print "" +- print "Example:" +- print " ", sys.argv[0], "6 i**2" ++ print("Usage:", sys.argv[0], "STEPS", "EQUATION") ++ print("Simple generator for generating responsecurve data from equations.") ++ print("") ++ print("Example:") ++ print(" ", sys.argv[0], "6 i**2") + else: + steps = int(sys.argv[1]) + equation = sys.argv[2] +@@ -19,6 +19,6 @@ else: + left.reverse() + left = left[0:-1] + +- print string.join([str(x) for x in (left + right)], ":") ++ print(string.join([str(x) for x in (left + right)], ":")) + + # EOF # +diff --git runxboxdrv/runxboxdrv runxboxdrv/runxboxdrv +index 360c836..6983496 100755 +--- a/runxboxdrv/runxboxdrv ++++ b/runxboxdrv/runxboxdrv +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # This program is free software: you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by + # the Free Software Foundation, either version 3 of the License, or +@@ -409,7 +409,7 @@ class ProcessManager(object): + """ + # Since reap() modifies __procs, we have to iterate over a copy + # of the keys in it. Thus, do not remove the .keys() call. +- for procid in self.__procs.keys(): ++ for procid in list(self.__procs.keys()): + self.reap(procid) + + +@@ -445,7 +445,7 @@ import os, sys + import os.path + import fcntl + import time +-import ConfigParser ++import configparser + from subprocess import check_call, Popen, PIPE + from signal import SIGINT, SIGKILL + from optparse import OptionParser +@@ -482,7 +482,7 @@ class RunXBoxDrv(object): + + @staticmethod + def runCommandAndGetOutput(command): +- print command ++ print(command) + callcommand = Popen(command, shell=True, stdout=PIPE) + outputcommand = callcommand.communicate() + return outputcommand[0].split("\n") +@@ -517,7 +517,7 @@ class RunXBoxDrv(object): + if RunXBoxDrv.which(RunXBoxDrv.sudo_command) is None: + raise Exception("Cannot find %s!" % RunXBoxDrv.sudo_command) + commandline = "%s %s" % (RunXBoxDrv.sudo_command, command) +- print commandline ++ print(commandline) + callcommand = Popen(commandline, shell=True, stdout=PIPE) + outputcommand = callcommand.communicate() + return outputcommand[0] +@@ -525,14 +525,14 @@ class RunXBoxDrv(object): + @staticmethod + def killExistingXBoxDrv(sig, signame): + for line in RunXBoxDrv.runCommandAndGetOutput("ps"): +- print line ++ print(line) + fields = line.split() + if len(fields) < 4: + continue + pid = fields[0] + process = fields[3] + if process.find(XBOXDRVNAME) != -1: +- print "Using %s on existing %s" % (signame, XBOXDRVNAME) ++ print("Using %s on existing %s" % (signame, XBOXDRVNAME)) + os.kill(int(pid), sig) + return True + return False +@@ -542,7 +542,7 @@ class RunXBoxDrv(object): + loadedmodules = [] + unloadedmodules = [] + for line in RunXBoxDrv.runCommandAndGetOutput("lsmod"): +- print line ++ print(line) + fields = line.split() + if len(fields) < 3: + continue +@@ -555,17 +555,17 @@ class RunXBoxDrv(object): + unloadedmodules.append(modulename) + for modulename in MODULELOAD: + if modulename in loadedmodules: +- print "%s already loaded!" % modulename ++ print("%s already loaded!" % modulename) + else: +- print "Loading %s!" % modulename +- print RunXBoxDrv.runCommandAsRoot("modprobe %s" % modulename) ++ print("Loading %s!" % modulename) ++ print(RunXBoxDrv.runCommandAsRoot("modprobe %s" % modulename)) + + for modulename in MODULEUNLOAD: + if modulename in unloadedmodules: +- print "Unloading %s!" % modulename +- print RunXBoxDrv.runCommandAsRoot("rmmod %s" % modulename) ++ print("Unloading %s!" % modulename) ++ print(RunXBoxDrv.runCommandAsRoot("rmmod %s" % modulename)) + else: +- print "%s already unloaded!" % modulename ++ print("%s already unloaded!" % modulename) + + + @staticmethod +@@ -579,11 +579,11 @@ class RunXBoxDrv(object): + raise Exception("Cannot find one of: %s!" % str(UINPUT_LOCATIONS)) + + if not os.access(location, os.W_OK): +- print "Trying to change permissions of: %s" % location +- print RunXBoxDrv.runCommandAsRoot("chmod 0660 %s" % location) ++ print("Trying to change permissions of: %s" % location) ++ print(RunXBoxDrv.runCommandAsRoot("chmod 0660 %s" % location)) + + if os.access(location, os.W_OK): +- print "%s is writable!" % location ++ print("%s is writable!" % location) + else: + raise Exception("Could not set write permissions on %s" % location) + +@@ -614,36 +614,36 @@ class RunXBoxDrv(object): + out = "" + while out.lower().find(LOADEDTEXT) == -1: + out = RunXBoxDrv.getNext(myProc) +- print out ++ print(out) + + def process(self): + commandlist = [self.xboxdrvpath] + + if self.configfile: + commandlist = commandlist + ["--config=%s" % self.configfile] +- print commandlist ++ print(commandlist) + myProc = Process(commandlist) + with_timeout(1, self.checkLoaded, myProc) + if len(self.appandparams) == 0: + print("WARNING: No path to application specified!") + else: +- print(self.appandparams) ++ print((self.appandparams)) + check_call(self.appandparams) +- print "Sending SIGINT" ++ print("Sending SIGINT") + myProc.kill(SIGINT) + try: + with_timeout(1, myProc.wait) + sys.exit(0) + except Timeout: + pass +- print "Sending SIGINT again" ++ print("Sending SIGINT again") + myProc.kill(SIGINT) + try: + with_timeout(1, myProc.wait) + sys.exit(0) + except Timeout: + pass +- print "Killing" ++ print("Killing") + myProc.terminate() + + def main(): +diff --git xboxdrvctl xboxdrvctl +index 4807a11..57177dc 100755 +--- a/xboxdrvctl ++++ b/xboxdrvctl +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python2 ++#!/usr/bin/env python3 + + ## Xbox360 USB Gamepad Userspace Driver + ## Copyright (C) 2011 Ingo Ruhnke <grumbel@gmail.com> +@@ -71,7 +71,7 @@ elif options.bus == "auto": + except dbus.exceptions.DBusException: + bus = dbus.SystemBus() + else: +- print "Error: invalid argument to --bus. Must be 'auto', 'session, or 'system'" ++ print("Error: invalid argument to --bus. Must be 'auto', 'session, or 'system'") + exit() + + if options.status: +@@ -82,7 +82,7 @@ elif options.shutdown: + daemon.Shutdown() + else: + if (options.led or options.rumble or options.config) and options.slot == None: +- print "Error: --slot argument required" ++ print("Error: --slot argument required") + exit() + else: + if options.slot != None: +@@ -94,7 +94,7 @@ else: + if options.rumble: + m = re.match('^(\d+):(\d+)$', options.rumble) + if not m: +- print "Error: invalid argument to --rumble" ++ print("Error: invalid argument to --rumble") + exit() + else: + left = int(m.group(1)) +-- +2.29.0.rc1 + diff --git a/games-util/xboxdrv/files/xboxdrv-0.8.8-some-boost-fix.patch b/games-util/xboxdrv/files/xboxdrv-0.8.8-some-boost-fix.patch new file mode 100644 index 000000000000..2063979fee4f --- /dev/null +++ b/games-util/xboxdrv/files/xboxdrv-0.8.8-some-boost-fix.patch @@ -0,0 +1,12 @@ +diff -Naur a/src/controller_slot.cpp b/src/controller_slot.cpp +--- a/src/controller_slot.cpp 2015-11-09 10:19:35.000000000 -0000 ++++ b/src/controller_slot.cpp 2021-08-02 13:05:48.647684177 -0000 +@@ -69,7 +69,7 @@ + bool + ControllerSlot::is_connected() const + { +- return m_thread; ++ return m_thread.get(); + } + + /* EOF */ diff --git a/games-util/xboxdrv/xboxdrv-0.8.8_p20190118-r1.ebuild b/games-util/xboxdrv/xboxdrv-0.8.8_p20190118-r1.ebuild new file mode 100644 index 000000000000..c2ce54f034b1 --- /dev/null +++ b/games-util/xboxdrv/xboxdrv-0.8.8_p20190118-r1.ebuild @@ -0,0 +1,76 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{8..10} ) + +inherit linux-info python-any-r1 scons-utils toolchain-funcs systemd udev + +DESCRIPTION="Userspace Xbox 360 Controller driver" +HOMEPAGE="https://xboxdrv.gitlab.io" +SRC_URI="https://gitlab.com/xboxdrv/xboxdrv/-/archive/v0.8.8/xboxdrv-v0.8.8.tar.bz2" +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~x86" + +RDEPEND=" + dev-libs/boost:= + dev-libs/dbus-glib + dev-libs/glib:2 + sys-apps/dbus + virtual/libudev:= + virtual/libusb:1 + x11-libs/libX11 +" + +DEPEND=" + ${RDEPEND} +" + +BDEPEND=" + dev-util/glib-utils + virtual/pkgconfig +" + +S="${WORKDIR}/xboxdrv-v0.8.8" + +PATCHES=( "${FILESDIR}/"xboxdrv-0.8.8-some-boost-fix.patch + "${FILESDIR}/"xboxdrv-0.8.8-Update-SConstruct-to-python3.patch + "${FILESDIR}/"xboxdrv-0.8.8-Updating-python-code-to-python3.patch ) + +CONFIG_CHECK="~INPUT_EVDEV ~INPUT_JOYDEV ~INPUT_UINPUT ~!JOYSTICK_XPAD" + +pkg_setup() { + linux-info_pkg_setup + python_setup +} + +src_compile() { + escons \ + BUILD=custom \ + CXX="$(tc-getCXX)" \ + AR="$(tc-getAR)" \ + RANLIB="$(tc-getRANLIB)" \ + CXXFLAGS="-Wall ${CXXFLAGS}" \ + LINKFLAGS="${LDFLAGS}" +} + +src_install() { + dobin xboxdrv + doman doc/xboxdrv.1 + dodoc AUTHORS NEWS PROTOCOL README.md TODO + + newinitd "${FILESDIR}"/xboxdrv.initd xboxdrv + newconfd "${FILESDIR}"/xboxdrv.confd xboxdrv + + insinto /etc/dbus-1/system.d + doins "${FILESDIR}"/org.seul.Xboxdrv.conf + + udev_newrules "${FILESDIR}"/xboxdrv.udev-rules 99-xbox-controller.rules + systemd_dounit "${FILESDIR}"/xboxdrv.service +} + +pkg_postinst() { + udev_reload +} |