From a81a2a545d2529233a6e0faa776fbd2d851442fb Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Fri, 27 Sep 2024 11:59:47 -0700
Subject: [PATCH] carla_host_control: import from pyliblo3 if available

pyliblo has not been touched upstream since 2015 and doesn't
work out of the box with Python releases since 3.11. There is an
actively-maintained fork called 'pyliblo3' at
https://github.com/gesellkammer/pyliblo3 which *does* work with
current upstream Python releases. It provides a library called
'pyliblo3' rather than 'liblo'. Let's support it, and prefer it
over the dead library (though the dead one will still be used if
it is present and pyliblo3 is not).

Signed-off-by: Adam Williamson <awilliam@redhat.com>
---
 source/frontend/carla_host_control.py | 32 ++++++++++++++++++---------
 1 file changed, 22 insertions(+), 10 deletions(-)

diff --git a/source/frontend/carla_host_control.py b/source/frontend/carla_host_control.py
index 7defa8435..8df839d3a 100755
--- a/source/frontend/carla_host_control.py
+++ b/source/frontend/carla_host_control.py
@@ -23,16 +23,28 @@ from carla_host import *
 # ------------------------------------------------------------------------------------------------------------
 # Imports (liblo)
 
-from liblo import (
-  Address,
-  AddressError,
-  ServerError,
-  Server,
-  make_method,
-  send as lo_send,
-  TCP as LO_TCP,
-  UDP as LO_UDP,
-)
+try:
+    from pyliblo3 import (
+      Address,
+      AddressError,
+      ServerError,
+      Server,
+      make_method,
+      send as lo_send,
+      TCP as LO_TCP,
+      UDP as LO_UDP,
+    )
+except ModuleNotFoundError:
+    from liblo import (
+      Address,
+      AddressError,
+      ServerError,
+      Server,
+      make_method,
+      send as lo_send,
+      TCP as LO_TCP,
+      UDP as LO_UDP,
+    )
 
 from random import random
 
-- 
2.46.2

