summary refs log tree commit diff
path: root/pkgs/misc
diff options
context:
space:
mode:
authorgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>2022-02-22 00:02:51 +0000
committerGitHub <noreply@github.com>2022-02-22 00:02:51 +0000
commitf8210665fc8886d37f94aa0499b87f9f3ab227d5 (patch)
tree43db454c7943c2df4fced03980f002e37150bfaf /pkgs/misc
parent586b897693ecc4166c0c0802963516a2ca37961c (diff)
parent377a5c7e44b139658a549a3b85689f8dc7d8b05c (diff)
downloadnixpkgs-f8210665fc8886d37f94aa0499b87f9f3ab227d5.tar
nixpkgs-f8210665fc8886d37f94aa0499b87f9f3ab227d5.tar.gz
nixpkgs-f8210665fc8886d37f94aa0499b87f9f3ab227d5.tar.bz2
nixpkgs-f8210665fc8886d37f94aa0499b87f9f3ab227d5.tar.lz
nixpkgs-f8210665fc8886d37f94aa0499b87f9f3ab227d5.tar.xz
nixpkgs-f8210665fc8886d37f94aa0499b87f9f3ab227d5.tar.zst
nixpkgs-f8210665fc8886d37f94aa0499b87f9f3ab227d5.zip
Merge staging-next into staging
Diffstat (limited to 'pkgs/misc')
-rw-r--r--pkgs/misc/drivers/xboxdrv/default.nix12
-rw-r--r--pkgs/misc/drivers/xboxdrv/fix-60-sec-delay.patch27
-rw-r--r--pkgs/misc/drivers/xboxdrv/scons-py3.patch63
-rw-r--r--pkgs/misc/drivers/xboxdrv/scons-v4.2.0.patch20
-rw-r--r--pkgs/misc/drivers/xboxdrv/xboxdrvctl-py3.patch73
5 files changed, 193 insertions, 2 deletions
diff --git a/pkgs/misc/drivers/xboxdrv/default.nix b/pkgs/misc/drivers/xboxdrv/default.nix
index 72c342e7b6a..f81e81ecbea 100644
--- a/pkgs/misc/drivers/xboxdrv/default.nix
+++ b/pkgs/misc/drivers/xboxdrv/default.nix
@@ -1,7 +1,7 @@
 { lib
 , stdenv
 , fetchFromGitHub
-, sconsPackages
+, scons
 , libX11
 , pkg-config
 , libusb1
@@ -22,10 +22,18 @@ stdenv.mkDerivation rec {
   };
 
   makeFlags = [ "PREFIX=$(out)" ];
-  nativeBuildInputs = [ pkg-config sconsPackages.scons_3_1_2 ];
+  nativeBuildInputs = [ pkg-config scons ];
   buildInputs = [ libX11 libusb1 boost glib dbus-glib ];
+  enableParallelBuilding = true;
   dontUseSconsInstall = true;
 
+  patches = [
+    ./fix-60-sec-delay.patch
+    ./scons-py3.patch
+    ./scons-v4.2.0.patch
+    ./xboxdrvctl-py3.patch
+  ];
+
   meta = with lib; {
     homepage = "https://xboxdrv.gitlab.io/";
     description = "Xbox/Xbox360 (and more) gamepad driver for Linux that works in userspace";
diff --git a/pkgs/misc/drivers/xboxdrv/fix-60-sec-delay.patch b/pkgs/misc/drivers/xboxdrv/fix-60-sec-delay.patch
new file mode 100644
index 00000000000..da543d2cfa0
--- /dev/null
+++ b/pkgs/misc/drivers/xboxdrv/fix-60-sec-delay.patch
@@ -0,0 +1,27 @@
+From 7326421eeaadbc2aeb3828628c2e65bb7be323a9 Mon Sep 17 00:00:00 2001
+From: buxit <buti@bux.at>
+Date: Wed, 2 Nov 2016 16:25:14 +0100
+Subject: [PATCH] fix 60 seconds delay
+
+use `libusb_handle_events_timeout_completed()` instead of `libusb_handle_events()`
+should fix #144
+---
+ src/usb_gsource.cpp | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/usb_gsource.cpp b/src/usb_gsource.cpp
+index 00bf1315..afb38f65 100644
+--- a/src/usb_gsource.cpp
++++ b/src/usb_gsource.cpp
+@@ -174,7 +174,10 @@ USBGSource::on_source_dispatch(GSource* source, GSourceFunc callback, gpointer u
+ gboolean
+ USBGSource::on_source()
+ {
+-  libusb_handle_events(NULL);
++  struct timeval to;
++  to.tv_sec = 0;
++  to.tv_usec = 0;
++  libusb_handle_events_timeout_completed(NULL, &to, NULL);
+   return TRUE;
+ }
+ 
diff --git a/pkgs/misc/drivers/xboxdrv/scons-py3.patch b/pkgs/misc/drivers/xboxdrv/scons-py3.patch
new file mode 100644
index 00000000000..4aa6fa61931
--- /dev/null
+++ b/pkgs/misc/drivers/xboxdrv/scons-py3.patch
@@ -0,0 +1,63 @@
+From 17bd43a7d3ef86216abc36b42b4e6a1f70aa9979 Mon Sep 17 00:00:00 2001
+From: xnick <xnick@users.noreply.github.com>
+Date: Thu, 12 Oct 2017 20:34:35 +0300
+Subject: [PATCH] Update SConstruct
+
+python3 compatible
+---
+ SConstruct | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/SConstruct b/SConstruct
+index 4cd79704..c0007054 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -19,7 +19,7 @@ def build_dbus_glue(target, source, env):
+     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  "
+-                 "callback = conv.fn;", xml)
++                 "callback = conv.fn;", xml.decode('utf-8'))
+ 
+     with open(target[0].get_path(), "w") as f:
+         f.write(xml)
+@@ -29,10 +29,10 @@ 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(bytes.maketrans(b"/.-", b"___"))
+     
+-    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")
+ 
+@@ -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])
+@@ -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()
diff --git a/pkgs/misc/drivers/xboxdrv/scons-v4.2.0.patch b/pkgs/misc/drivers/xboxdrv/scons-v4.2.0.patch
new file mode 100644
index 00000000000..04b05e8d6ff
--- /dev/null
+++ b/pkgs/misc/drivers/xboxdrv/scons-v4.2.0.patch
@@ -0,0 +1,20 @@
+--- a/SConstruct	2021-10-31 20:42:44.232084185 -0400
++++ b/SConstruct	2021-10-31 20:42:54.063024444 -0400
+@@ -36,7 +36,7 @@
+     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
+@@ -62,7 +62,7 @@
+                                     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")
diff --git a/pkgs/misc/drivers/xboxdrv/xboxdrvctl-py3.patch b/pkgs/misc/drivers/xboxdrv/xboxdrvctl-py3.patch
new file mode 100644
index 00000000000..71d8762cb9c
--- /dev/null
+++ b/pkgs/misc/drivers/xboxdrv/xboxdrvctl-py3.patch
@@ -0,0 +1,73 @@
+--- a/xboxdrvctl	2021-06-21 19:39:51.000000000 -0400
++++ b/xboxdrvctl 19:43:27.467984928 -0400
+@@ -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>
+@@ -37,23 +37,23 @@
+                   help="print controller status")
+ 
+ group.add_option("-s", "--slot", metavar="SLOT", type="int",
+-                  dest="slot", 
++                  dest="slot",
+                   help="use slot SLOT for actions")
+ 
+ group.add_option("-l", "--led", metavar="NUM", type="int",
+-                  dest="led", 
++                  dest="led",
+                   help="set LED")
+ 
+-group.add_option("-r", "--rumble", metavar="L:R", 
+-                  dest="rumble", 
++group.add_option("-r", "--rumble", metavar="L:R",
++                  dest="rumble",
+                   help="print controller status")
+ 
+ group.add_option("-c", "--config", metavar="NUM", type="int",
+-                  dest="config", 
++                  dest="config",
+                   help="switches to controller configuration NUM")
+ 
+ group.add_option("--shutdown", action="store_true",
+-                  dest="shutdown", 
++                  dest="shutdown",
+                   help="shuts down the daemon")
+ 
+ parser.add_option_group(group)
+@@ -69,9 +69,9 @@
+     try:
+         bus.get_object("org.seul.Xboxdrv", '/org/seul/Xboxdrv/Daemon')
+     except dbus.exceptions.DBusException:
+-				bus = dbus.SystemBus()
++        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,19 +82,19 @@
+     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:
+             slot = bus.get_object("org.seul.Xboxdrv", '/org/seul/Xboxdrv/ControllerSlots/%d' % options.slot)
+-    
++
+             if options.led != None:
+                 slot.SetLed(options.led)
+ 
+             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))