Re: git: 9a31e1b6d3bf - main - lang/python3*: add LTO option and enable by default everywhere except powerpc64 and riscv64

From: Piotr Kubaj <pkubaj_at_anongoth.pl>
Date: Wed, 09 Mar 2022 17:39:44 UTC
I meant:
Approved by:    python (maintainer timeout, koobs got his commit bit revoked during review process)

On 22-03-09 17:35:15, Piotr Kubaj wrote:
> The branch main has been updated by pkubaj:
> 
> URL: https://cgit.FreeBSD.org/ports/commit/?id=9a31e1b6d3bff1eef9fcd5e72268c238ec5335fb
> 
> commit 9a31e1b6d3bff1eef9fcd5e72268c238ec5335fb
> Author:     Piotr Kubaj <pkubaj@FreeBSD.org>
> AuthorDate: 2022-03-09 17:30:00 +0000
> Commit:     Piotr Kubaj <pkubaj@FreeBSD.org>
> CommitDate: 2022-03-09 17:30:00 +0000
> 
>     lang/python3*: add LTO option and enable by default everywhere except powerpc64 and riscv64
>     
>     PR:     261974
>     Approved by:    python (koobs got his commit bit revoked during review process)
> ---
>  lang/python310/Makefile              |  9 +++++++--
>  lang/python310/files/patch-configure | 11 +++++++++++
>  lang/python311/Makefile              |  9 +++++++--
>  lang/python311/files/patch-configure | 11 +++++++++++
>  lang/python37/Makefile               | 10 +++++++---
>  lang/python37/files/patch-configure  | 11 +++++++++++
>  lang/python38/Makefile               | 10 +++++++---
>  lang/python38/files/patch-configure  | 11 +++++++++++
>  lang/python39/Makefile               |  9 +++++++--
>  lang/python39/files/patch-configure  | 11 +++++++++++
>  10 files changed, 90 insertions(+), 12 deletions(-)
> 
> diff --git a/lang/python310/Makefile b/lang/python310/Makefile
> index 8084d9b8c66a..dd524e80e451 100644
> --- a/lang/python310/Makefile
> +++ b/lang/python310/Makefile
> @@ -2,6 +2,7 @@
>  
>  PORTNAME=	python
>  DISTVERSION=	${PYTHON_DISTVERSION}
> +PORTREVISION=	1
>  CATEGORIES=	lang python
>  MASTER_SITES=	PYTHON/ftp/python/${DISTVERSION:C/[a-z].*//}
>  PKGNAMESUFFIX=	${PYTHON_SUFFIX}
> @@ -52,8 +53,10 @@ PLIST_SUB=		ABI=${ABIFLAGS} \
>  			XYZDOT=${DISTVERSION:C/[a-z].*//} \
>  			OSMAJOR=${OSVERSION:C/([0-9]*)[0-9]{5}/\1/}		# For plat-freebsd* in pkg-plist. https://bugs.python.org/issue19554
>  
> -OPTIONS_DEFINE=		DEBUG IPV6 LIBMPDEC NLS PYMALLOC
> -OPTIONS_DEFAULT=	LIBMPDEC PYMALLOC
> +OPTIONS_DEFINE=		DEBUG IPV6 LIBMPDEC LTO NLS PYMALLOC
> +OPTIONS_DEFAULT=	LIBMPDEC LTO PYMALLOC
> +OPTIONS_EXCLUDE_powerpc64=	LTO
> +OPTIONS_EXCLUDE_riscv64=	LTO
>  OPTIONS_RADIO=		HASH
>  OPTIONS_RADIO_HASH=	FNV SIPHASH
>  OPTIONS_SUB=		yes
> @@ -75,6 +78,8 @@ IPV6_CONFIGURE_ENABLE=	ipv6
>  LIBMPDEC_CONFIGURE_ON=	--with-system-libmpdec
>  LIBMPDEC_LIB_DEPENDS=	libmpdec.so:math/mpdecimal
>  
> +LTO_CONFIGURE_ON=	--with-lto
> +
>  # Use CPPFLAGS over CFLAGS due to -I ordering, causing elementtree and pyexpat
>  # to break in Python 2.7, or preprocessor complaints in Python >= 3.3
>  # Upstream Issue: https://bugs.python.org/issue6299
> diff --git a/lang/python310/files/patch-configure b/lang/python310/files/patch-configure
> new file mode 100644
> index 000000000000..c78047439605
> --- /dev/null
> +++ b/lang/python310/files/patch-configure
> @@ -0,0 +1,11 @@
> +--- configure.orig	2022-02-23 19:52:00 UTC
> ++++ configure
> +@@ -6625,7 +6625,7 @@ fi
> + 
> + if test "$Py_LTO" = 'true' ; then
> +   case $CC in
> +-    *clang*)
> ++    *clang*|cc)
> + 
> +       if test -n "$ac_tool_prefix"; then
> +   # Extract the first word of "${ac_tool_prefix}llvm-ar", so it can be a program name with args.
> diff --git a/lang/python311/Makefile b/lang/python311/Makefile
> index 676094889cc5..2cf3cc6bdb44 100644
> --- a/lang/python311/Makefile
> +++ b/lang/python311/Makefile
> @@ -2,6 +2,7 @@
>  
>  PORTNAME=	python
>  DISTVERSION=	${PYTHON_DISTVERSION}
> +PORTREVISION=	1
>  CATEGORIES=	lang python
>  MASTER_SITES=	PYTHON/ftp/python/${DISTVERSION:C/[a-z].*//}
>  PKGNAMESUFFIX=	${PYTHON_SUFFIX}
> @@ -52,8 +53,10 @@ PLIST_SUB=		ABI=${ABIFLAGS} \
>  			XYZDOT=${DISTVERSION:C/[a-z].*//} \
>  			OSMAJOR=${OSVERSION:C/([0-9]*)[0-9]{5}/\1/}		# For plat-freebsd* in pkg-plist. https://bugs.python.org/issue19554
>  
> -OPTIONS_DEFINE=		DEBUG IPV6 LIBMPDEC NLS PYMALLOC
> -OPTIONS_DEFAULT=	LIBMPDEC PYMALLOC
> +OPTIONS_DEFINE=		DEBUG IPV6 LIBMPDEC LTO NLS PYMALLOC
> +OPTIONS_DEFAULT=	LIBMPDEC LTO PYMALLOC
> +OPTIONS_EXCLUDE_powerpc64=	LTO
> +OPTIONS_EXCLUDE_riscv64=	LTO
>  OPTIONS_RADIO=		HASH
>  OPTIONS_RADIO_HASH=	FNV SIPHASH
>  OPTIONS_SUB=		yes
> @@ -75,6 +78,8 @@ IPV6_CONFIGURE_ENABLE=	ipv6
>  LIBMPDEC_CONFIGURE_ON=	--with-system-libmpdec
>  LIBMPDEC_LIB_DEPENDS=	libmpdec.so:math/mpdecimal
>  
> +LTO_CONFIGURE_ON=	--with-lto=thin
> +
>  # Use CPPFLAGS over CFLAGS due to -I ordering, causing elementtree and pyexpat
>  # to break in Python 2.7, or preprocessor complaints in Python >= 3.3
>  # Upstream Issue: https://bugs.python.org/issue6299
> diff --git a/lang/python311/files/patch-configure b/lang/python311/files/patch-configure
> new file mode 100644
> index 000000000000..aa89baed8cc0
> --- /dev/null
> +++ b/lang/python311/files/patch-configure
> @@ -0,0 +1,11 @@
> +--- configure.orig	2022-02-23 19:32:58 UTC
> ++++ configure
> +@@ -7244,7 +7244,7 @@ fi
> + 
> + if test "$Py_LTO" = 'true' ; then
> +   case $CC in
> +-    *clang*)
> ++    *clang*|cc)
> +             LDFLAGS_NOLTO="-fno-lto"
> + 
> +       if test -n "$ac_tool_prefix"; then
> diff --git a/lang/python37/Makefile b/lang/python37/Makefile
> index 43de00c66dd0..442732efc459 100644
> --- a/lang/python37/Makefile
> +++ b/lang/python37/Makefile
> @@ -2,7 +2,7 @@
>  
>  PORTNAME=	python
>  DISTVERSION=	${PYTHON_DISTVERSION}
> -PORTREVISION=	1
> +PORTREVISION=	2
>  CATEGORIES=	lang python
>  MASTER_SITES=	PYTHON/ftp/python/${DISTVERSION}
>  PKGNAMESUFFIX=	${PYTHON_SUFFIX}
> @@ -49,8 +49,10 @@ PLIST_SUB=		ABI=${ABIFLAGS} \
>  			XYZDOT=${DISTVERSION} \
>  			OSMAJOR=${OSVERSION:C/([0-9]*)[0-9]{5}/\1/}		# For plat-freebsd* in pkg-plist. https://bugs.python.org/issue19554
>  
> -OPTIONS_DEFINE=		DEBUG IPV6 NLS PYMALLOC
> -OPTIONS_DEFAULT=	PYMALLOC
> +OPTIONS_DEFINE=		DEBUG IPV6 LTO NLS PYMALLOC
> +OPTIONS_DEFAULT=	LTO PYMALLOC
> +OPTIONS_EXCLUDE_powerpc64=	LTO
> +OPTIONS_EXCLUDE_riscv64=	LTO
>  OPTIONS_RADIO=		HASH
>  OPTIONS_RADIO_HASH=	FNV SIPHASH
>  OPTIONS_SUB=		yes
> @@ -68,6 +70,8 @@ SIPHASH_CONFIGURE_ON=	--with-hash-algorithm=siphash24
>  DEBUG_CONFIGURE_WITH=	pydebug
>  IPV6_CONFIGURE_ENABLE=	ipv6
>  
> +LTO_CONFIGURE_ON=	--with-lto
> +
>  # Use CPPFLAGS over CFLAGS due to -I ordering, causing elementtree and pyexpat
>  # to break in Python 2.7, or preprocessor complaints in Python >= 3.3
>  # Upstream Issue: https://bugs.python.org/issue6299
> diff --git a/lang/python37/files/patch-configure b/lang/python37/files/patch-configure
> new file mode 100644
> index 000000000000..c78047439605
> --- /dev/null
> +++ b/lang/python37/files/patch-configure
> @@ -0,0 +1,11 @@
> +--- configure.orig	2022-02-23 19:52:00 UTC
> ++++ configure
> +@@ -6625,7 +6625,7 @@ fi
> + 
> + if test "$Py_LTO" = 'true' ; then
> +   case $CC in
> +-    *clang*)
> ++    *clang*|cc)
> + 
> +       if test -n "$ac_tool_prefix"; then
> +   # Extract the first word of "${ac_tool_prefix}llvm-ar", so it can be a program name with args.
> diff --git a/lang/python38/Makefile b/lang/python38/Makefile
> index 14fa1346d41c..d5a3247abef1 100644
> --- a/lang/python38/Makefile
> +++ b/lang/python38/Makefile
> @@ -2,7 +2,7 @@
>  
>  PORTNAME=	python
>  DISTVERSION=	${PYTHON_DISTVERSION}
> -PORTREVISION=	1
> +PORTREVISION=	2
>  CATEGORIES=	lang python
>  MASTER_SITES=	PYTHON/ftp/python/${DISTVERSION}
>  PKGNAMESUFFIX=	${PYTHON_SUFFIX}
> @@ -52,8 +52,10 @@ PLIST_SUB=		ABI=${ABIFLAGS} \
>  			XYZDOT=${DISTVERSION} \
>  			OSMAJOR=${OSVERSION:C/([0-9]*)[0-9]{5}/\1/}		# For plat-freebsd* in pkg-plist. https://bugs.python.org/issue19554
>  
> -OPTIONS_DEFINE=		DEBUG IPV6 LIBMPDEC NLS PYMALLOC
> -OPTIONS_DEFAULT=	LIBMPDEC PYMALLOC
> +OPTIONS_DEFINE=		DEBUG IPV6 LIBMPDEC LTO NLS PYMALLOC
> +OPTIONS_DEFAULT=	LIBMPDEC LTO PYMALLOC
> +OPTIONS_EXCLUDE_powerpc64=	LTO
> +OPTIONS_EXCLUDE_riscv64=	LTO
>  OPTIONS_RADIO=		HASH
>  OPTIONS_RADIO_HASH=	FNV SIPHASH
>  OPTIONS_SUB=		yes
> @@ -75,6 +77,8 @@ IPV6_CONFIGURE_ENABLE=	ipv6
>  LIBMPDEC_CONFIGURE_ON=	--with-system-libmpdec
>  LIBMPDEC_LIB_DEPENDS=	libmpdec.so:math/mpdecimal
>  
> +LTO_CONFIGURE_ON=	--with-lto
> +
>  # Use CPPFLAGS over CFLAGS due to -I ordering, causing elementtree and pyexpat
>  # to break in Python 2.7, or preprocessor complaints in Python >= 3.3
>  # Upstream Issue: https://bugs.python.org/issue6299
> diff --git a/lang/python38/files/patch-configure b/lang/python38/files/patch-configure
> new file mode 100644
> index 000000000000..c78047439605
> --- /dev/null
> +++ b/lang/python38/files/patch-configure
> @@ -0,0 +1,11 @@
> +--- configure.orig	2022-02-23 19:52:00 UTC
> ++++ configure
> +@@ -6625,7 +6625,7 @@ fi
> + 
> + if test "$Py_LTO" = 'true' ; then
> +   case $CC in
> +-    *clang*)
> ++    *clang*|cc)
> + 
> +       if test -n "$ac_tool_prefix"; then
> +   # Extract the first word of "${ac_tool_prefix}llvm-ar", so it can be a program name with args.
> diff --git a/lang/python39/Makefile b/lang/python39/Makefile
> index 25a7509e4959..8185af11c466 100644
> --- a/lang/python39/Makefile
> +++ b/lang/python39/Makefile
> @@ -2,6 +2,7 @@
>  
>  PORTNAME=	python
>  DISTVERSION=	${PYTHON_DISTVERSION}
> +PORTREVISION=	1
>  CATEGORIES=	lang python
>  MASTER_SITES=	PYTHON/ftp/python/${DISTVERSION}
>  PKGNAMESUFFIX=	${PYTHON_SUFFIX}
> @@ -52,8 +53,10 @@ PLIST_SUB=		ABI=${ABIFLAGS} \
>  			XYZDOT=${DISTVERSION} \
>  			OSMAJOR=${OSVERSION:C/([0-9]*)[0-9]{5}/\1/}		# For plat-freebsd* in pkg-plist. https://bugs.python.org/issue19554
>  
> -OPTIONS_DEFINE=		DEBUG IPV6 LIBMPDEC NLS PYMALLOC
> -OPTIONS_DEFAULT=	LIBMPDEC PYMALLOC
> +OPTIONS_DEFINE=		DEBUG IPV6 LIBMPDEC LTO NLS PYMALLOC
> +OPTIONS_DEFAULT=	LIBMPDEC LTO PYMALLOC
> +OPTIONS_EXCLUDE_powerpc64=	LTO
> +OPTIONS_EXCLUDE_riscv64=	LTO
>  OPTIONS_RADIO=		HASH
>  OPTIONS_RADIO_HASH=	FNV SIPHASH
>  OPTIONS_SUB=		yes
> @@ -75,6 +78,8 @@ IPV6_CONFIGURE_ENABLE=	ipv6
>  LIBMPDEC_CONFIGURE_ON=	--with-system-libmpdec
>  LIBMPDEC_LIB_DEPENDS=	libmpdec.so:math/mpdecimal
>  
> +LTO_CONFIGURE_ON=	--with-lto
> +
>  # Use CPPFLAGS over CFLAGS due to -I ordering, causing elementtree and pyexpat
>  # to break in Python 2.7, or preprocessor complaints in Python >= 3.3
>  # Upstream Issue: https://bugs.python.org/issue6299
> diff --git a/lang/python39/files/patch-configure b/lang/python39/files/patch-configure
> new file mode 100644
> index 000000000000..c78047439605
> --- /dev/null
> +++ b/lang/python39/files/patch-configure
> @@ -0,0 +1,11 @@
> +--- configure.orig	2022-02-23 19:52:00 UTC
> ++++ configure
> +@@ -6625,7 +6625,7 @@ fi
> + 
> + if test "$Py_LTO" = 'true' ; then
> +   case $CC in
> +-    *clang*)
> ++    *clang*|cc)
> + 
> +       if test -n "$ac_tool_prefix"; then
> +   # Extract the first word of "${ac_tool_prefix}llvm-ar", so it can be a program name with args.