python / python/cpython

Compiling `--with-lto` results in `test_embed` failures on Darwin

Open
#153,285 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

build OS-mac type-bug
Dominant language
Python
Stars
77.2k
Forks
35.9k
PR merge metrics
PR metrics pending

Description

Bug report

Bug description:

On Darwin, configure.ac:1998 sets:

LTOFLAGS="-flto=thin -Wl,-export_dynamic -Wl,-object_path_lto,\"\$@\".lto"

Which gets expanded too early in Makefile.pre.in:130 into "".lto (notice the :=):

PY_CORE_EXE_LDFLAGS:= $(if $(CONFIGURE_EXE_LDFLAGS), $(CONFIGURE_EXE_LDFLAGS) $(PY_LDFLAGS_NODIST), $(PY_CORE_LDFLAGS))

Linking results in:

gcc    -flto=thin -Wl,-export_dynamic -Wl,-object_path_lto,"".lto -g  ...

Which happens to link Programs/_testembed as the interpreter, so that launching it results in:

$ ./Programs/_testembed           
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
WARN: Could not find the standard library directory! sys.prefix is set to /usr/local, is this correct?
Python 3.16.0a0 (heads/main:4f39efc47de, Jul  7 2026, 17:34:29) [Clang 21.0.0 (clang-2100.1.1.101)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

And related tests in the test_embed suite fail:

$ ./python.exe -m test -v test_embed
== CPython 3.16.0a0 (heads/main:4f39efc47de, Jul 7 2026, 17:34:29) [Clang 21.0.0 (clang-2100.1.1.101)]
== macOS-26.5.1-arm64-arm-64bit-Mach-O little-endian
== Python build: release ThinLTO
== cwd: ***
== CPU count: 16
== encodings: locale=UTF-8 FS=utf-8
== resources: all test resources are disabled, use -u option to unskip tests

Using random seed: 2037373937
0:00:00 load avg: 2.73 mem: 31.0 MiB Run 1 test sequentially in a single process
0:00:00 load avg: 2.73 mem: 31.0 MiB [1/1] test_embed
test_audit (test.test_embed.AuditingTests.test_audit) ... --- ['***/cpython/Programs/_testembed', 'test_audit'] failed ---
stdout:

stderr:
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
WARN: Could not find the standard library directory! sys.prefix is set to /usr/local, is this correct?
***/Programs/_testembed: can't open file '***/test_audit': [Errno 2] No such file or directory

------
FAIL

It seems to me this was introduced by 4e45c9c.

CPython versions tested on:

CPython main branch

Operating systems tested on:

macOS

Linked PRs
  • gh-153532

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by comparing configure.ac:1998 with Makefile.pre.in:130, focusing on how LTOFLAGS is expanded during the Darwin build. Reproduce the ThinLTO build and run ./python.exe -m test -v test_embed. Done means _testembed launches correctly and the test_embed suite passes; linked PR gh-153532 indicates work may already be underway.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos, python
Domain
build-system, testing-qa
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.