git: 16cca14354f3 - main - net/py-tofu: Fix build with setuptools 58.0.0+

From: Po-Chuan Hsieh <sunpoet_at_FreeBSD.org>
Date: Fri, 25 Mar 2022 13:50:44 UTC
The branch main has been updated by sunpoet:

URL: https://cgit.FreeBSD.org/ports/commit/?id=16cca14354f34f203987a44993f8d33b4548cd7c

commit 16cca14354f34f203987a44993f8d33b4548cd7c
Author:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
AuthorDate: 2022-03-25 13:33:30 +0000
Commit:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
CommitDate: 2022-03-25 13:38:18 +0000

    net/py-tofu: Fix build with setuptools 58.0.0+
    
    With hat:       python
---
 net/py-tofu/files/patch-2to3 | 300 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 300 insertions(+)

diff --git a/net/py-tofu/files/patch-2to3 b/net/py-tofu/files/patch-2to3
new file mode 100644
index 000000000000..5aa769e231d9
--- /dev/null
+++ b/net/py-tofu/files/patch-2to3
@@ -0,0 +1,300 @@
+--- __init__.py.orig	2006-05-25 20:37:11 UTC
++++ __init__.py
+@@ -208,7 +208,7 @@ You should provide your own Idler (Soya 3D includes a 
+     global IDLER
+     IDLER = self
+     
+-    print "* Tofu * IDLER created !"
++    print("* Tofu * IDLER created !")
+     
+   def stop(self, *return_values):
+     """Idler.stop()
+@@ -290,7 +290,7 @@ This static method returns the object of the given UID
+     """Unique.hasuid(uid) -> bool
+ 
+ This static method returns true if an object with the given UID exists."""
+-    return Unique._alls.has_key(uid)
++    return uid in Unique._alls
+   hasuid = staticmethod(hasuid)
+   
+   def loaded(self):
+@@ -395,7 +395,7 @@ Delete a SavedInAPath's file."""
+     Unique.discard(self)
+     
+     filename = filename or os.path.join(path[0], self.DIRNAME, self.filename.replace("/", os.sep)) + ".data"
+-    print "* Tofu * Deleting %s %s (file %s) !" % (self.__class__.__name__, self.filename, filename)
++    print("* Tofu * Deleting %s %s (file %s) !" % (self.__class__.__name__, self.filename, filename))
+     os.remove(filename)
+     
+   def get_filename(self): return self._filename
+@@ -417,13 +417,13 @@ all Players)."""
+     for p in path:
+       for filename in dircache.listdir(os.path.join(p, klass.DIRNAME)):
+         if filename.endswith(".data"): filenames[filename[:-5]] = 1
+-    filenames = filenames.keys()
++    filenames = list(filenames.keys())
+     filenames.sort()
+     return filenames
+   availables = classmethod(availables)
+   
+   def discard(self):
+-    print "* Tofu * Discard %s %s %s..." % (self.__class__.__name__.lower(), self.filename, self.uid)
++    print("* Tofu * Discard %s %s %s..." % (self.__class__.__name__.lower(), self.filename, self.uid))
+     del self._alls2[self.filename]
+     Unique.discard(self)
+     
+@@ -487,7 +487,7 @@ store some data on the client side. Default implementa
+     
+     SavedInAPath.__init__(self)
+     
+-    print "* Tofu * Creating new player %s..." % filename
++    print("* Tofu * Creating new player %s..." % filename)
+     
+     self.filename = filename
+     self.password = password
+@@ -516,7 +516,7 @@ Login the Player.
+ CLIENT_SIDE_DATA contains additional data given by the client; you can use them to
+ store some data on the client side. Default implementation ignore them."""
+     if self.address: raise ValueError("Player %s is already logged !" % self.filename)
+-    print "* Tofu * Player %s login !" % self.filename
++    print("* Tofu * Player %s login !" % self.filename)
+     
+     for mobile in self.mobiles:
+       if not mobile in mobile.level.mobiles: mobile.level.add_mobile(mobile)
+@@ -535,7 +535,7 @@ store some data on the client side. Default implementa
+ 
+ Logout the Player."""
+     if self.address:
+-      print "* Tofu * Player %s logout !" % self.filename
++      print("* Tofu * Player %s logout !" % self.filename)
+       try: self.notifier.transport.loseConnection()
+       except: pass
+       self.notifier = None
+@@ -617,8 +617,8 @@ You should not call this method directly; the level ac
+ determined by the Mobile of the Level.
+ You may want to override this method, e.g. to display an active level."""
+     if active != self.active:
+-      if active: print "* Tofu * Level %s %s activated !"  % (self.filename, self.uid)
+-      else:      print "* Tofu * Level %s %s inactivated." % (self.filename, self.uid)
++      if active: print("* Tofu * Level %s %s activated !"  % (self.filename, self.uid))
++      else:      print("* Tofu * Level %s %s inactivated." % (self.filename, self.uid))
+       if self.active: IDLER.remove_level(self)
+       self.active = active
+       if self.active: IDLER.add_level(self)
+@@ -658,7 +658,7 @@ You may override this method; the default implementati
+ 
+ This class method discards ALL non-active levels.
+ It is called by the Idler each begin_round."""
+-    for level in clazz._alls2.values():
++    for level in list(clazz._alls2.values()):
+       if not level.active: level.discard()
+   discard_inactives = classmethod(discard_inactives)
+   
+@@ -977,7 +977,7 @@ IF YOU USE CPICKLE OVER NETWORK, YOU ASSUME YOU TRUST 
+ E.g. to use cPickle for local file only, do:
+   enable_pickle(1, 0)
+ """
+-  import cPickle as pickle
++  import pickle as pickle
+   global local_serializer, network_serializer
+   if local  : local_serializer   = pickle
+   if network: network_serializer = pickle
+--- client.py.orig	2006-05-21 15:57:53 UTC
++++ client.py
+@@ -36,7 +36,7 @@ import tofu
+ try: set
+ except: from sets import Set as set
+ 
+-class ClientServerError(StandardError): pass
++class ClientServerError(Exception): pass
+ 
+ 
+ class UDP(DatagramProtocol):
+@@ -44,8 +44,9 @@ class UDP(DatagramProtocol):
+     a = "hello"
+     self.transport.write(a, ("127.0.0.1", 9999))
+     
+-  def datagramReceived(self, data, (host, port)):
+-    print "UDP received %r from %s:%d" % (data, host, port)
++  def datagramReceived(self, data, xxx_todo_changeme):
++    (host, port) = xxx_todo_changeme
++    print("UDP received %r from %s:%d" % (data, host, port))
+     
+ PLANNED_ARRIVAL_UIDS = set()
+ 
+@@ -117,7 +118,7 @@ class Notifier(NetstringReceiver, tofu.Notifier):
+       
+     elif code == tofu.CODE_OWN_CONTROL:
+       uid = struct.unpack("!i", data[1:])[0]
+-      print "* Tofu * Owning mobile %s..." % uid
++      print("* Tofu * Owning mobile %s..." % uid)
+       #def own_control(mobile):
+       #  print "own_control", mobile.level
+       #  tofu.IDLER.next_round_tasks.append(mobile.control_owned)
+@@ -130,7 +131,7 @@ class Notifier(NetstringReceiver, tofu.Notifier):
+       
+     elif code == tofu.CODE_REMOVE_MOBILE:
+       uid = struct.unpack("!i", data[1:])[0]
+-      print "* Tofu * Removing mobile %s..." % uid
++      print("* Tofu * Removing mobile %s..." % uid)
+       def remove_mobile(mobile):
+         mobile.level.remove_mobile(mobile)
+         mobile.discard()
+@@ -147,7 +148,7 @@ class Notifier(NetstringReceiver, tofu.Notifier):
+     elif code == tofu.CODE_ADD_MOBILE:
+       mobile_uid = struct.unpack("!i", data[1:5])[0]
+       level_uid  = struct.unpack("!i", data[5:9])[0]
+-      print "* Tofu * Adding mobile %s in level %s..." % (mobile_uid, level_uid)
++      print("* Tofu * Adding mobile %s in level %s..." % (mobile_uid, level_uid))
+       def add_mobile(*args):
+         mobile = tofu.Unique.getbyuid(mobile_uid)
+         level  = tofu.Unique.getbyuid(level_uid )
+@@ -158,15 +159,15 @@ class Notifier(NetstringReceiver, tofu.Notifier):
+       waiter.start()
+       
+     elif code == tofu.CODE_DATA_UNIQUE:
+-      print "* Tofu * Receiving unique..."
++      print("* Tofu * Receiving unique...")
+       unique = tofu.Unique.undump(data[1:])
+       unique.received()
+-      assert (not hasattr(unique, "level")) or (not unique.level) or (unique.level in unique.level._alls2.values()), "Level sent with non-level unique !"
++      assert (not hasattr(unique, "level")) or (not unique.level) or (unique.level in list(unique.level._alls2.values())), "Level sent with non-level unique !"
+       self.arrived(unique)
+       
+     elif code == tofu.CODE_ENTER_LEVEL:
+       uid = struct.unpack("!i", data[1:])[0]
+-      print "* Tofu * Entering level %s..." % uid
++      print("* Tofu * Entering level %s..." % uid)
+       #self.uids_arrival_planned.add(uid) # The server will send it
+       # Previous level is outdated => drop it
+       if tofu.Unique.hasuid(uid): tofu.Unique.getbyuid(uid).set_active(0)
+@@ -175,12 +176,12 @@ class Notifier(NetstringReceiver, tofu.Notifier):
+       waiter.start()
+       
+     elif code == tofu.CODE_ERROR:
+-      print "* Tofu * Server error: %s" % data[1:]
++      print("* Tofu * Server error: %s" % data[1:])
+       #self.errors.append(data[1:])
+       raise ClientServerError(data[1:])
+       
+   def arrived(self, unique):
+-    print "* Tofu * Received unique %s %s." % (unique.uid, unique)
++    print("* Tofu * Received unique %s %s." % (unique.uid, unique))
+     
+     waiters = WAITERS.get(unique.uid)
+     if waiters:
+@@ -192,7 +193,7 @@ class Notifier(NetstringReceiver, tofu.Notifier):
+     self.uids_arrival_planned.discard(unique.uid)
+       
+   def ask_unique(self, uid):
+-    print "* Tofu * Ask for UID %s..." % uid
++    print("* Tofu * Ask for UID %s..." % uid)
+     self.uids_arrival_planned.add(uid)
+     self.sendString(tofu.CODE_ASK_UNIQUE + struct.pack("!i", uid))
+     
+@@ -222,12 +223,12 @@ class TCPFactory(ClientFactory):
+   
+   def clientConnectionFailed(self, connector, reason):
+     m = reason.getErrorMessage()
+-    print "* Tofu * Connection failed:", m
++    print("* Tofu * Connection failed:", m)
+     tofu.GAME_INTERFACE.network_error(m)
+     
+   def clientConnectionLost(self, connector, reason):
+     m = reason.getErrorMessage()
+-    print "* Tofu * Connection lost:", m
++    print("* Tofu * Connection lost:", m)
+     tofu.GAME_INTERFACE.network_error(m)
+     
+       
+--- server.py.orig	2006-05-21 15:58:53 UTC
++++ server.py
+@@ -30,14 +30,15 @@ import sys, struct
+ import tofu
+ 
+ class UDP(DatagramProtocol):
+-  def datagramReceived(self, data, (host, port)):
+-    print "UDP received %r from %s:%d" % (data, host, port)
++  def datagramReceived(self, data, xxx_todo_changeme):
++    (host, port) = xxx_todo_changeme
++    print("UDP received %r from %s:%d" % (data, host, port))
+     self.transport.write(data, (host, port))
+         
+ #reactor.listenUDP(6900, UDP())
+ 
+ 
+-class SecurityError(StandardError):
++class SecurityError(Exception):
+   pass
+ 
+ 
+@@ -78,8 +79,8 @@ class PlayerNotifier(NetstringReceiver):
+         if data[1:] != tofu.VERSION: raise ValueError("Server and client use incompatible version (server: %s, client %s)" % (VERSION, data[1:]))
+         self.version_checked = 1
+         
+-    except StandardError, e:
+-      print "* Tofu * Error occured:"
++    except Exception as e:
++      print("* Tofu * Error occured:")
+       sys.excepthook(*sys.exc_info())
+       self.sendString(tofu.CODE_ERROR + "%s: %s" % (e.__class__.__name__, str(e)))
+       
+@@ -97,11 +98,11 @@ class PlayerNotifier(NetstringReceiver):
+   def connectionLost(self, reason):
+     Protocol.connectionLost(self, reason)
+     if self.player:
+-      print "* Tofu * Connection lost with player %s:" % self.player.filename, reason.getErrorMessage()
++      print("* Tofu * Connection lost with player %s:" % self.player.filename, reason.getErrorMessage())
+       self.logout_player()
+       
+   def send_unique(self, unique):
+-    print "* Tofu * Sending unique %s..." % unique.uid
++    print("* Tofu * Sending unique %s..." % unique.uid)
+     self.sendString(tofu.CODE_DATA_UNIQUE + unique.dump())
+     
+   def notify_state(self, mobile, state):
+@@ -128,7 +129,7 @@ class Notifier(tofu.Notifier):
+     pass
+   
+   def notify_state(self, mobile, state):
+-    for player in tofu.YourPlayer._alls2.values(): # XXX optimize this (maintain a list of player for each level)
++    for player in list(tofu.YourPlayer._alls2.values()): # XXX optimize this (maintain a list of player for each level)
+       if player.notifier:
+         for m in player.mobiles:
+           if m.level is mobile.level:
+@@ -136,7 +137,7 @@ class Notifier(tofu.Notifier):
+             break
+           
+   def notify_add_mobile(self, mobile):
+-    for player in tofu.YourPlayer._alls2.values(): # XXX optimize this
++    for player in list(tofu.YourPlayer._alls2.values()): # XXX optimize this
+       if player.notifier:
+         for m in player.mobiles:
+           if (not m is mobile) and (m.level is mobile.level):
+@@ -163,7 +164,7 @@ class Notifier(tofu.Notifier):
+             player.notifier.notify_enter_level(mobile.level)
+             
+   def notify_remove_mobile(self, mobile):
+-    for player in tofu.YourPlayer._alls2.values(): # XXX optimize this
++    for player in list(tofu.YourPlayer._alls2.values()): # XXX optimize this
+       if player.notifier:
+         for m in player.mobiles:
+           if m.level is mobile.level:
+@@ -184,7 +185,7 @@ class Notifier(tofu.Notifier):
+     if isinstance(unique, tofu.SavedInAPath): unique.save()
+     
+   def game_ended(self):
+-    for player in tofu.Player._alls2.values():
++    for player in list(tofu.Player._alls2.values()):
+       if player.notifier:
+         player.notifier.logout_player()
+         
+@@ -199,7 +200,7 @@ Starts a game server on TCP port PORT."""
+   f.protocol = PlayerNotifier
+   reactor.listenTCP(6900, f)
+   
+-  print "* Tofu * Server ready !"
++  print("* Tofu * Server ready !")
+   try:
+     tofu.IDLER.idle()
+