As of python 3.13, the xdrlib module is no longer included. Fortunately there is an xdrlib3 module, which is a fork of the bundled module: https://pypi.org/project/xdrlib3/ Change pynfs to use that instead and revise the documentation to include a step to install that module. Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> --- README | 8 +++++++- nfs4.0/lib/rpc/rpc.py | 2 +- nfs4.0/lib/rpc/rpcsec/sec_auth_sys.py | 2 +- nfs4.0/nfs4lib.py | 2 +- nfs4.0/nfs4server.py | 2 +- rpc/security.py | 2 +- xdr/xdrgen.py | 4 ++-- 7 files changed, 14 insertions(+), 8 deletions(-) diff --git a/README b/README index b8b4e775f7766086f870f2dda4a60b3e9f9bac6f..efdc23807e8107b8fcd575e8a4c80b9c73e3cd07 100644 --- a/README +++ b/README @@ -14,8 +14,14 @@ Install dependent modules: * openSUSE zypper install krb5-devel python3-devel swig python3-gssapi python3-ply -You can prepare both for use with +Install the xdrlib3 module: + + pip install xdrlib3 + +You can prepare both versions for use with + ./setup.py build + which will create auto-generated files and compile any shared libraries in place. diff --git a/nfs4.0/lib/rpc/rpc.py b/nfs4.0/lib/rpc/rpc.py index 243ef9e31aa83eb6be18800065b63cf78d99f833..475179042530a8d602a51e7bad1af7958ff5dd56 100644 --- a/nfs4.0/lib/rpc/rpc.py +++ b/nfs4.0/lib/rpc/rpc.py @@ -9,7 +9,7 @@ from __future__ import absolute_import import struct -import xdrlib +import xdrlib3 as xdrlib import socket import select import threading diff --git a/nfs4.0/lib/rpc/rpcsec/sec_auth_sys.py b/nfs4.0/lib/rpc/rpcsec/sec_auth_sys.py index 1e990a369e6588f24dff75e9569c104d775ff710..2581a1e1dca22f637dc32144a05c88c66c57665e 100644 --- a/nfs4.0/lib/rpc/rpcsec/sec_auth_sys.py +++ b/nfs4.0/lib/rpc/rpcsec/sec_auth_sys.py @@ -1,7 +1,7 @@ from .base import SecFlavor, SecError from rpc.rpc_const import AUTH_SYS from rpc.rpc_type import opaque_auth -from xdrlib import Packer, Error +from xdrlib3 import Packer, Error class SecAuthSys(SecFlavor): # XXX need better defaults diff --git a/nfs4.0/nfs4lib.py b/nfs4.0/nfs4lib.py index eddcd862bc2fe2061414fb4de61e52aed93495ae..2337d8cd190de90e4d158b3ef9e3dfd6a61027c5 100644 --- a/nfs4.0/nfs4lib.py +++ b/nfs4.0/nfs4lib.py @@ -41,7 +41,7 @@ import xdrdef.nfs4_const as nfs4_const from xdrdef.nfs4_const import * import xdrdef.nfs4_type as nfs4_type from xdrdef.nfs4_type import * -from xdrlib import Error as XDRError +from xdrlib3 import Error as XDRError import xdrdef.nfs4_pack as nfs4_pack import nfs_ops diff --git a/nfs4.0/nfs4server.py b/nfs4.0/nfs4server.py index 2dbad3046709ea57c1503a36649d85c25e6301a8..10bf28ee5794684912fa8e6d19406e06bf88b742 100755 --- a/nfs4.0/nfs4server.py +++ b/nfs4.0/nfs4server.py @@ -34,7 +34,7 @@ import time, StringIO, random, traceback, codecs import StringIO import nfs4state from nfs4state import NFS4Error, printverf -from xdrlib import Error as XDRError +from xdrlib3 import Error as XDRError unacceptable_names = [ "", ".", ".." ] unacceptable_characters = [ "/", "~", "#", ] diff --git a/rpc/security.py b/rpc/security.py index 0682f438cd6237334c59e7cb280c8b192e7c8a76..789280c5d7328a928b2f6c1af95397d17180eff9 100644 --- a/rpc/security.py +++ b/rpc/security.py @@ -3,7 +3,7 @@ from .rpc_const import AUTH_NONE, AUTH_SYS, RPCSEC_GSS, SUCCESS, CALL, \ from .rpc_type import opaque_auth, authsys_parms from .rpc_pack import RPCPacker, RPCUnpacker from .gss_pack import GSSPacker, GSSUnpacker -from xdrlib import Packer, Unpacker +from xdrlib3 import Packer, Unpacker from . import rpclib from .gss_const import * from . import gss_type diff --git a/xdr/xdrgen.py b/xdr/xdrgen.py index b472e50676799915ea3b6a14f6686a5973484fb2..f802ba80045e79716a71fa7a64d72f1b8831128d 100755 --- a/xdr/xdrgen.py +++ b/xdr/xdrgen.py @@ -1357,8 +1357,8 @@ pack_header = """\ import sys,os from . import %s as const from . import %s as types -import xdrlib -from xdrlib import Error as XDRError +import xdrlib3 as xdrlib +from xdrlib3 import Error as XDRError class nullclass(object): pass --- base-commit: d042a1f6421985b7c9d17edf8eb0d59bcf7f5908 change-id: 20250122-master-68414e8f6d5f Best regards, -- Jeff Layton <jlayton@xxxxxxxxxx>