]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-94404: makesetup: use correct CFLAGS and macOS workaround (GH-94405)
authorChristian Heimes <christian@python.org>
Wed, 29 Jun 2022 07:46:39 +0000 (09:46 +0200)
committerGitHub <noreply@github.com>
Wed, 29 Jun 2022 07:46:39 +0000 (09:46 +0200)
``makesetup`` now works around an issue with sed on macOS and uses correct
CFLAGS for object files that end up in a shared extension.

Misc/NEWS.d/next/Build/2022-06-29-08-58-31.gh-issue-94404.3MadM6.rst [new file with mode: 0644]
Modules/makesetup

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 (file)
index 0000000..519a5ce
--- /dev/null
@@ -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.
index 9b20e3c9f634424cbaae8cf6602ea7929faf7de8..a45b7de5215ce5280e869e0b19a25580eac974af 100755 (executable)
@@ -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