From 33463f5194bfa44cecaaf32326295fc36c361d69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Wed, 21 Oct 2020 22:09:51 +0700 Subject: [PATCH] xboxdrv: convert to Python 3 Cherry-Picked from their stable branch. --- .../0001-Update-SConstruct-to-python3.patch | 79 ++++++ ...0003-Updating-python-code-to-python3.patch | 238 ++++++++++++++++++ srcpkgs/xboxdrv/template | 4 +- 3 files changed, 319 insertions(+), 2 deletions(-) create mode 100644 srcpkgs/xboxdrv/patches/0001-Update-SConstruct-to-python3.patch create mode 100644 srcpkgs/xboxdrv/patches/0003-Updating-python-code-to-python3.patch diff --git a/srcpkgs/xboxdrv/patches/0001-Update-SConstruct-to-python3.patch b/srcpkgs/xboxdrv/patches/0001-Update-SConstruct-to-python3.patch new file mode 100644 index 00000000000..c33e9e1c909 --- /dev/null +++ b/srcpkgs/xboxdrv/patches/0001-Update-SConstruct-to-python3.patch @@ -0,0 +1,79 @@ +From 39a334fbc0482626455f417e97308e52aa8746a7 Mon Sep 17 00:00:00 2001 +From: Ingo Ruhnke +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 +--- SConstruct ++++ 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/srcpkgs/xboxdrv/patches/0003-Updating-python-code-to-python3.patch b/srcpkgs/xboxdrv/patches/0003-Updating-python-code-to-python3.patch new file mode 100644 index 00000000000..a19f79c7e2b --- /dev/null +++ b/srcpkgs/xboxdrv/patches/0003-Updating-python-code-to-python3.patch @@ -0,0 +1,238 @@ +From e37d3558a1a8a36fbc5d693c53893127a288fd02 Mon Sep 17 00:00:00 2001 +From: Ingo Ruhnke +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 +--- examples/responsecurve-generator.py ++++ 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 +--- runxboxdrv/runxboxdrv ++++ 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 +--- xboxdrvctl ++++ xboxdrvctl +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python2 ++#!/usr/bin/env python3 + + ## Xbox360 USB Gamepad Userspace Driver + ## Copyright (C) 2011 Ingo Ruhnke +@@ -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/srcpkgs/xboxdrv/template b/srcpkgs/xboxdrv/template index ab4ec0f9b5d..2b4905d8890 100644 --- a/srcpkgs/xboxdrv/template +++ b/srcpkgs/xboxdrv/template @@ -1,7 +1,7 @@ # Template file for 'xboxdrv' pkgname=xboxdrv version=0.8.8 -revision=2 +revision=3 wrksrc="xboxdrv-linux-${version}" build_style=scons hostmakedepends="pkg-config glib-devel dbus-glib-devel" @@ -12,7 +12,7 @@ license="GPL-3.0-or-later" homepage="https://xboxdrv.gitlab.io/" distfiles="https://xboxdrv.gitlab.io/xboxdrv-linux-${version}.tar.bz2" checksum=f4fb8c09c0ce3841798f129ae4c2caf3f6db9786d78ad941994e425e3ffc168a -python_version=2 #unverified +python_version=3 do_install() { make PREFIX=/usr DESTDIR=${DESTDIR} install