xboxdrv: convert to Python 3

Cherry-Picked from their stable branch.
This commit is contained in:
Đoàn Trần Công Danh 2020-10-21 22:09:51 +07:00
parent df444b7ea0
commit 33463f5194
3 changed files with 319 additions and 2 deletions

View file

@ -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
--- 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

View file

@ -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
--- 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 <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

View file

@ -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