Skip to content

distutil.dep_util compatibility #11

@rafspiny

Description

@rafspiny

Hi!

I am using python-efl 1.26.1 from the release tarball.
I noticed that I cannot build any package when using at least python3.10 or newer (tried 3.11 and 3.12). I did not tried with lower versions.

2024-07-23 22:24:33,689 root INFO running build_i18n
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/lib/python3.11/site-packages/gpep517/__main__.py", line 443, in <module>
    sys.exit(main())
             ^^^^^^
  File "/usr/lib/python3.11/site-packages/gpep517/__main__.py", line 439, in main
    return func(args)
           ^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/gpep517/__main__.py", line 229, in build_wheel
    print(build_wheel_impl(args, args.wheel_dir), file=out)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/gpep517/__main__.py", line 221, in build_wheel_impl
    wheel_name = backend.build_wheel(str(wheel_dir), args.config_json)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 410, in build_wheel
    return self._build_with_temp_dir(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 395, in _build_with_temp_dir
    self.run_setup()
  File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 487, in run_setup
    super().run_setup(setup_script=setup_script)
  File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 311, in run_setup
    exec(code, locals())
  File "<string>", line 15, in <module>
  File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 184, in setup
    return run_commands(dist)
           ^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 200, in run_commands
    dist.run_commands()
  File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 968, in run_command
    super().run_command(command)
  File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
    cmd_obj.run()
  File "/usr/lib/python3.11/site-packages/wheel/bdist_wheel.py", line 368, in run
    self.run_command("build")
  File "/usr/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 316, in run_command
    self.distribution.run_command(command)
  File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 968, in run_command
    super().run_command(command)
  File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
    cmd_obj.run()
  File "/usr/lib/python3.11/site-packages/efl/utils/setup.py", line 28, in run
    self.run_command('build_i18n')
  File "/usr/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 316, in run_command
    self.distribution.run_command(command)
  File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 968, in run_command
    super().run_command(command)
  File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
    cmd_obj.run()
  File "/usr/lib/python3.11/site-packages/efl/utils/setup.py", line 123, in run
    self.compile_po(lang)
  File "/usr/lib/python3.11/site-packages/efl/utils/setup.py", line 164, in compile_po
    if distutils.dep_util.newer(po_file, mo_file):
       ^^^^^^^^^^^^^^^^^^
AttributeError: module 'distutils' has no attribute 'dep_util'. Did you mean: 'dir_util'?
 * ERROR: media-gfx/eluminance-9999::enlightenment-live failed (compile phase):
 *   Wheel build failed

This is due to the weird behaviour of distutils.

Python 3.10.14 (main, Jul  3 2024, 03:50:21) [GCC 13.2.1 20240210] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import distutils
>>> distutils.dep_util
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'distutils' has no attribute 'dep_util'. Did you mean: 'dir_util'?
>>> from distutil import dep_util
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'distutil'
>>> from distutils import dep_util
>>> dep_util
<module 'distutils.dep_util' from '/usr/lib/python3.10/site-packages/setuptools/_distutils/dep_util.py'>
>>>

I am keeping a patch that I apply on my systems. Do you think it can be applied directly here?

index e47578f..5990489 100644
--- a/efl/utils/setup.py
+++ b/efl/utils/setup.py
@@ -16,7 +16,7 @@
 # along with this Python-EFL.  If not, see <http://www.gnu.org/licenses/>.

 import os
-import distutils
+from distutils import dep_util
 import distutils.command.build
 from distutils.log import warn, info, error

@@ -68,7 +68,7 @@ class build_edc(distutils.cmd.Command):
             sources.extend( os.path.join(root, name) for name in files )

         edj_file = os.path.join('build', 'themes', '%s.edj' % name)
-        if distutils.dep_util.newer_group(sources, edj_file):
+        if dep_util.newer_group(sources, edj_file):
             info('compiling theme "%s" from edc file: "%s"' % (name, edc_file))
             cmd = ['edje_cc', '-v',
                    '-id', theme_dir, '-id', os.path.join(theme_dir, 'images'),

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions