From 5150cbcd6821c0cf79b81cfc8780087bbc6985da Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Wed, 29 Jun 2022 09:46:39 +0200 Subject: [PATCH] gh-94404: makesetup: use correct CFLAGS and macOS workaround (GH-94405) ``makesetup`` now works around an issue with sed on macOS and uses correct CFLAGS for object files that end up in a shared extension. --- ...2022-06-29-08-58-31.gh-issue-94404.3MadM6.rst | 2 ++ Modules/makesetup | 16 +++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 Misc/NEWS.d/next/Build/2022-06-29-08-58-31.gh-issue-94404.3MadM6.rst diff --git a/Misc/NEWS.d/next/Build/2022-06-29-08-58-31.gh-issue-94404.3MadM6.rst b/Misc/NEWS.d/next/Build/2022-06-29-08-58-31.gh-issue-94404.3MadM6.rst new file mode 100644 index 00000000000000..519a5ce81c980c --- /dev/null +++ b/Misc/NEWS.d/next/Build/2022-06-29-08-58-31.gh-issue-94404.3MadM6.rst @@ -0,0 +1,2 @@ +``makesetup`` now works around an issue with sed on macOS and uses correct +CFLAGS for object files that end up in a shared extension. diff --git a/Modules/makesetup b/Modules/makesetup index 9b20e3c9f63442..a45b7de5215ce5 100755 --- a/Modules/makesetup +++ b/Modules/makesetup @@ -1,4 +1,5 @@ #! /bin/sh +set -e # Convert templates into Makefile and config.c, based on the module # definitions found in the file Setup. @@ -260,7 +261,7 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' | *) src='$(srcdir)/'"$srcdir/$src";; esac case $doconfig in - no) cc="$cc \$(CCSHARED) \$(PY_CFLAGS_NODIST) \$(PY_CPPFLAGS)";; + no) cc="$cc \$(PY_STDMODULE_CFLAGS) \$(CCSHARED)";; *) cc="$cc \$(PY_BUILTIN_MODULE_CFLAGS)";; esac @@ -322,8 +323,13 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' | case $makepre in -) ;; - *) sedf="@sed.in.$$" - trap 'rm -f $sedf' 0 1 2 3 + *) + # macOS' sed has issues with 'a' command. Use 'r' command with an + # external replacement file instead. + sedf="@sed.in.$$" + sedr="@sed.replace.$$" + trap 'rm -f $sedf $sedr' 0 1 2 3 + echo "$NL$NL$DEFS" | sed 's/\\$//' > $sedr echo "1i\\" >$sedf str="# Generated automatically from $makepre by makesetup." echo "$str" >>$sedf @@ -332,10 +338,10 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' | echo "s%_MODDISABLED_NAMES_%$DISABLED%" >>$sedf echo "s%_MODOBJS_%$OBJS%" >>$sedf echo "s%_MODLIBS_%$LIBS%" >>$sedf - echo "/Definitions added by makesetup/a$NL$NL$DEFS" >>$sedf + echo "/Definitions added by makesetup/r $sedr" >>$sedf sed -f $sedf $makepre >Makefile cat $rulesf >>Makefile - rm -f $sedf + rm -f $sedf $sedr ;; esac