[Mesa-dev] [PATCH mesa 2/3] egl: fix python lib deprecation warning

Kyle Brenneman kyle.brenneman at gmail.com
Wed Nov 7 16:51:12 UTC 2018


On 11/07/2018 06:20 AM, Eric Engestrom wrote:
>    DeprecationWarning: the imp module is deprecated in favour of importlib
>
> importlib is available since python 2.7 and 3.1, and we already require
> 2.7 and 3.4 so we can simply use the new lib.
>
> Signed-off-by: Eric Engestrom <eric.engestrom at intel.com>
> ---
>   src/egl/generate/gen_egl_dispatch.py | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/egl/generate/gen_egl_dispatch.py b/src/egl/generate/gen_egl_dispatch.py
> index eeb3f3f9a5a2051b9585..0c4d2956eff28911336c 100644
> --- a/src/egl/generate/gen_egl_dispatch.py
> +++ b/src/egl/generate/gen_egl_dispatch.py
> @@ -34,7 +34,7 @@
>   
>   import argparse
>   import collections
> -import imp
> +import importlib.machinery
>   import sys
>   import textwrap
>   
> @@ -51,7 +51,7 @@ def main():
>   
>       # The function list is a Python module, but it's specified on the command
>       # line.
> -    eglFunctionList = imp.load_source("eglFunctionList", args.func_list_file)
> +    eglFunctionList = importlib.machinery.SourceFileLoader("eglFunctionList", args.func_list_file).load_module()
>   
>       xmlFunctions = genCommon.getFunctions(args.xml_files)
>       xmlByName = dict((f.name, f) for f in xmlFunctions)
I think importlib.machinery.SourceFileLoader is only available starting 
with Python 3.3, so the script would break if you tried to run it with 
Python 2.

For what it's worth, though, loading the eglFunctionList module 
dynamically like that was originally intended just to make it easier for 
a vendor library to use the gen_egl_dispatch.py script from libglvnd, 
but with its own function list. In Mesa's case, just a simple "import 
eglFunctionList" would probably work just as well.

-Kyle



More information about the mesa-dev mailing list