Skip to content

Commit

Permalink
sysconfig: use get_makefile_filename() from stdlib sysconfig
Browse files Browse the repository at this point in the history
Instead of guessing the filename just refer to the stdlib.

This also removes the "_makefile_tmpl" hook added in #16, but

1) It was never implemented by the distro requesting it from what I can see:
   https://github.com/NetBSD/pkgsrc/blob/586097714897b1b4d4a9e0a32c1658a1335442b7/devel/py-setuptools/Makefile#L28
2) The stdlib version should hopefully return a proper result

Also adds a small test checking that the file exists on Unix platforms
  • Loading branch information
lazka committed Dec 26, 2021
1 parent a5af364 commit 83da08d
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 15 deletions.
17 changes: 2 additions & 15 deletions distutils/sysconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import os
import re
import sys
import sysconfig

from .errors import DistutilsPlatformError

Expand Down Expand Up @@ -280,25 +281,11 @@ def get_config_h_filename():
return os.path.join(inc_dir, 'pyconfig.h')


# Allow this value to be patched by pkgsrc. Ref pypa/distutils#16.
_makefile_tmpl = 'config-{python_ver}{build_flags}{multiarch}'


def get_makefile_filename():
"""Return full pathname of installed Makefile from the Python build."""
if python_build:
return os.path.join(_sys_home or project_base, "Makefile")
lib_dir = get_python_lib(plat_specific=0, standard_lib=1)
multiarch = (
'-%s' % sys.implementation._multiarch
if hasattr(sys.implementation, '_multiarch') else ''
)
config_file = _makefile_tmpl.format(
python_ver=get_python_version(),
build_flags=build_flags,
multiarch=multiarch,
)
return os.path.join(lib_dir, config_file, 'Makefile')
return sysconfig.get_makefile_filename()


def parse_config_h(fp, g=None):
Expand Down
6 changes: 6 additions & 0 deletions distutils/tests/test_sysconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@ def test_get_config_h_filename(self):
config_h = sysconfig.get_config_h_filename()
self.assertTrue(os.path.isfile(config_h), config_h)

@unittest.skipIf(sys.platform == 'win32',
'Makefile only exists on Unix like systems')
def test_get_makefile_filename(self):
makefile = sysconfig.get_makefile_filename()
self.assertTrue(os.path.isfile(makefile), makefile)

def test_get_python_lib(self):
# XXX doesn't work on Linux when Python was never installed before
#self.assertTrue(os.path.isdir(lib_dir), lib_dir)
Expand Down

0 comments on commit 83da08d

Please sign in to comment.