Skip to content

makesetup can fail on macOS and uses wrong CFLAGS #94404

Closed
@tiran

Description

@tiran

Bug report

The script Modules/makesetup has two issues

  1. It uses sed i command with multiple escapes newlines. The feature works fine in GNU sed but does not work correctly with macOS' BSD sed. @ned-deily found a workaround for the problem. The r command with an external replacement file works correctly on GNU and BSD sed.

  2. makesetup creates wrong compile rules for object files that end up in a shared library. The variables $(CCSHARED) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) are missing some flags like address sanitizer. The script should create rules with $(PY_STDMODULE_CFLAGS) $(CCSHARED) instead.

  3. the order of cflags can break builds. For example macOS ARM64 builds are broken because -I./Modules/_decimal/libmpdec comes after -I/opt/homebrew/include and the buildbot seems to come with an incompatible libmpdec header. Module-specific CFLAGs should come before Python CFLAGs. It is probably easier to move module CFLAGS before PY_STDMODULE_CFLAGS. The homebrew flag comes from PY_CPPFLAGS and CONFIGURE_CPPFLAGS.

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.11only security fixes3.12only security fixesbuildThe build process and cross-buildtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions