[OE-core] [PATCH] python/python3: use cc_basename to replace CC for checking compiler

Changqing Li changqing.li at windriver.com
Thu Nov 8 01:49:05 UTC 2018


Ping

On 10/23/18 1:22 PM, changqing.li at windriver.com wrote:
> From: Changqing Li <changqing.li at windriver.com>
>
> When working path contains "clang"/"gcc"/"icc", it might be part of $CC
> because of the "--sysroot" parameter. That could cause judgement error
> about clang/gcc/icc compilers.
>
> eg: if build under /yocto/builds/xicc/,  bitbake python,  $CC will contains
> xicc, will make $CC match *icc, but actuall xicc just folder name.
>
> When "*icc" is matched, below errors are reported when
> compiling python/python3:
> x86_64-wrs-linux-gcc: error: strict: No such file or directory
> x86_64-wrs-linux-gcc: error: unrecognized command line option '-fp-model'
>
> Here use cc_basename to replace CC for checking compiler to avoid such
> kind of issue.
>
> Signed-off-by: Li Zhou <li.zhou at windriver.com>
>
> Signed-off-by: Changqing Li <changqing.li at windriver.com>
> ---
>   ...-cc_basename-to-replace-CC-for-checking-c.patch | 114 +++++++++++++++++
>   ...-cc_basename-to-replace-CC-for-checking-c.patch | 140 +++++++++++++++++++++
>   meta/recipes-devtools/python/python3_3.5.6.bb      |   1 +
>   meta/recipes-devtools/python/python_2.7.15.bb      |   1 +
>   4 files changed, 256 insertions(+)
>   create mode 100644 meta/recipes-devtools/python/python/0001-python2-use-cc_basename-to-replace-CC-for-checking-c.patch
>   create mode 100644 meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
>
> diff --git a/meta/recipes-devtools/python/python/0001-python2-use-cc_basename-to-replace-CC-for-checking-c.patch b/meta/recipes-devtools/python/python/0001-python2-use-cc_basename-to-replace-CC-for-checking-c.patch
> new file mode 100644
> index 0000000..6e4f820
> --- /dev/null
> +++ b/meta/recipes-devtools/python/python/0001-python2-use-cc_basename-to-replace-CC-for-checking-c.patch
> @@ -0,0 +1,114 @@
> +From 3f49be81e31c164654aeb10b65ebade982ca2ed8 Mon Sep 17 00:00:00 2001
> +From: Changqing Li <changqing.li at windriver.com>
> +Date: Mon, 22 Oct 2018 15:24:48 +0800
> +Subject: [PATCH] python2: use cc_basename to replace CC for checking compiler
> +
> +When working path contains "clang"/"gcc"/"icc", it might be part of $CC
> +because of the "--sysroot" parameter. That could cause judgement error
> +about clang/gcc/icc compilers. e.g.
> +When "icc" is containded in working path, below errors are reported when
> +compiling python:
> +x86_64-wrs-linux-gcc: error: strict: No such file or directory
> +x86_64-wrs-linux-gcc: error: unrecognized command line option '-fp-model'
> +
> +Here use cc_basename to replace CC for checking compiler to avoid such
> +kind of issue.
> +
> +Upstream-Status: Pending
> +
> +Signed-off-by: Li Zhou <li.zhou at windriver.com>
> +
> +Patch orignally from Li Zhou, I just rework it to new version
> +
> +Signed-off-by: Changqing Li <changqing.li at windriver.com>
> +---
> + configure.ac | 18 +++++++++---------
> + 1 file changed, 9 insertions(+), 9 deletions(-)
> +
> +diff --git a/configure.ac b/configure.ac
> +index db1c940..dfcd89a 100644
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -684,7 +684,7 @@ AC_MSG_RESULT($with_cxx_main)
> + preset_cxx="$CXX"
> + if test -z "$CXX"
> + then
> +-        case "$CC" in
> ++        case "$cc_basename" in
> +         gcc)    AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
> +         cc)     AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
> +         esac
> +@@ -757,14 +757,14 @@ rmdir CaseSensitiveTestDir
> +
> + case $MACHDEP in
> + bsdos*)
> +-    case $CC in
> ++    case $cc_basename in
> +     gcc) CC="$CC -D_HAVE_BSDI";;
> +     esac;;
> + esac
> +
> + case $ac_sys_system in
> + hp*|HP*)
> +-    case $CC in
> ++    case $cc_basename in
> +     cc|*/cc) CC="$CC -Ae";;
> +     esac;;
> + SunOS*)
> +@@ -1084,7 +1084,7 @@ then
> +         fi
> +
> +         # Clang also needs -fwrapv
> +-        case $CC in
> ++        case $cc_basename in
> +             *clang*) WRAP="-fwrapv"
> +             ;;
> +         esac
> +@@ -1304,7 +1304,7 @@ yes)
> + esac
> +
> + # ICC needs -fp-model strict or floats behave badly
> +-case "$CC" in
> ++case "$cc_basename" in
> + *icc*)
> +     BASECFLAGS="$BASECFLAGS -fp-model strict"
> +     ;;
> +@@ -1443,7 +1443,7 @@ else
> + fi],
> + [AC_MSG_RESULT(no)])
> + if test "$Py_LTO" = 'true' ; then
> +-  case $CC in
> ++  case $cc_basename in
> +     *clang*)
> +       # Any changes made here should be reflected in the GCC+Darwin case below
> +       LTOFLAGS="-flto"
> +@@ -1508,7 +1508,7 @@ then
> +   fi
> + fi
> + LLVM_PROF_ERR=no
> +-case $CC in
> ++case $cc_basename in
> +   *clang*)
> +     # Any changes made here should be reflected in the GCC+Darwin case below
> +     PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
> +@@ -2322,7 +2322,7 @@ then
> + 		then CCSHARED="-fPIC"
> + 		else CCSHARED="-Kpic -belf"
> + 		fi;;
> +-	IRIX*/6*)  case $CC in
> ++	IRIX*/6*)  case $cc_basename in
> + 		   *gcc*) CCSHARED="-shared";;
> + 		   *) CCSHARED="";;
> + 		   esac;;
> +@@ -2366,7 +2366,7 @@ then
> + 		then
> + 			LINKFORSHARED="-Wl,--export-dynamic"
> + 		fi;;
> +-	SunOS/5*) case $CC in
> ++	SunOS/5*) case $cc_basename in
> + 		  *gcc*)
> + 		    if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
> + 		    then
> +--
> +2.7.4
> +
> diff --git a/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch b/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
> new file mode 100644
> index 0000000..ae47366
> --- /dev/null
> +++ b/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
> @@ -0,0 +1,140 @@
> +From 564a5cc634028970dc2f9d8ecc0e464a4fb1dcb6 Mon Sep 17 00:00:00 2001
> +From: Changqing Li <changqing.li at windriver.com>
> +Date: Mon, 22 Oct 2018 15:19:51 +0800
> +Subject: [PATCH] python3: use cc_basename to replace CC for checking compiler
> +
> +When working path contains "clang"/"gcc"/"icc", it might be part of $CC
> +because of the "--sysroot" parameter. That could cause judgement error
> +about clang/gcc/icc compilers. e.g.
> +When "icc" is containded in working path, below errors are reported when
> +compiling python3:
> +x86_64-wrs-linux-gcc: error: strict: No such file or directory
> +x86_64-wrs-linux-gcc: error: unrecognized command line option '-fp-model'
> +
> +Here use cc_basename to replace CC for checking compiler to avoid such
> +kind of issue.
> +
> +Upstream-Status: Pending
> +
> +Signed-off-by: Li Zhou <li.zhou at windriver.com>
> +
> +patch originally from Li Zhou, I just rework it to new version
> +
> +Signed-off-by: Changqing Li <changqing.li at windriver.com>
> +---
> + configure.ac | 23 ++++++++++++-----------
> + 1 file changed, 12 insertions(+), 11 deletions(-)
> +
> +diff --git a/configure.ac b/configure.ac
> +index 95c98d1..1b9589e 100644
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -54,6 +54,7 @@ AC_CONFIG_HEADER(pyconfig.h)
> + AC_CANONICAL_HOST
> + AC_SUBST(build)
> + AC_SUBST(host)
> ++LT_INIT
> +
> + # pybuilddir.txt will be created by --generate-posix-vars in the Makefile
> + rm -f pybuilddir.txt
> +@@ -716,7 +717,7 @@ AC_MSG_RESULT($with_cxx_main)
> + preset_cxx="$CXX"
> + if test -z "$CXX"
> + then
> +-        case "$CC" in
> ++        case "$cc_basename" in
> +         gcc)    AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
> +         cc)     AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
> +         clang|*/clang)     AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;;
> +@@ -978,14 +979,14 @@ rmdir CaseSensitiveTestDir
> +
> + case $MACHDEP in
> + bsdos*)
> +-    case $CC in
> ++    case $cc_basename in
> +     gcc) CC="$CC -D_HAVE_BSDI";;
> +     esac;;
> + esac
> +
> + case $ac_sys_system in
> + hp*|HP*)
> +-    case $CC in
> ++    case $cc_basename in
> +     cc|*/cc) CC="$CC -Ae";;
> +     esac;;
> + esac
> +@@ -1310,7 +1311,7 @@ else
> + fi],
> + [AC_MSG_RESULT(no)])
> + if test "$Py_LTO" = 'true' ; then
> +-  case $CC in
> ++  case $cc_basename in
> +     *clang*)
> +       # Any changes made here should be reflected in the GCC+Darwin case below
> +       LTOFLAGS="-flto"
> +@@ -1374,7 +1375,7 @@ then
> +   fi
> + fi
> + LLVM_PROF_ERR=no
> +-case $CC in
> ++case $cc_basename in
> +   *clang*)
> +     # Any changes made here should be reflected in the GCC+Darwin case below
> +     PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
> +@@ -1451,7 +1452,7 @@ then
> +            WRAP="-fwrapv"
> +         fi
> +
> +-        case $CC in
> ++        case $cc_basename in
> +             *clang*)
> +                 cc_is_clang=1
> +                 ;;
> +@@ -1553,7 +1554,7 @@ yes)
> +
> +     # ICC doesn't recognize the option, but only emits a warning
> +     ## XXX does it emit an unused result warning and can it be disabled?
> +-    case "$CC" in
> ++    case "$cc_basename" in
> +     *icc*)
> +     ac_cv_disable_unused_result_warning=no
> +     ;;
> +@@ -1808,7 +1809,7 @@ yes)
> + esac
> +
> + # ICC needs -fp-model strict or floats behave badly
> +-case "$CC" in
> ++case "$cc_basename" in
> + *icc*)
> +     CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict"
> +     ;;
> +@@ -2574,7 +2575,7 @@ then
> + 		then CCSHARED="-fPIC"
> + 		else CCSHARED="-Kpic -belf"
> + 		fi;;
> +-	IRIX*/6*)  case $CC in
> ++	IRIX*/6*)  case $cc_basename in
> + 		   *gcc*) CCSHARED="-shared";;
> + 		   *) CCSHARED="";;
> + 		   esac;;
> +@@ -2615,7 +2616,7 @@ then
> + 		then
> + 			LINKFORSHARED="-Wl,--export-dynamic"
> + 		fi;;
> +-	SunOS/5*) case $CC in
> ++	SunOS/5*) case $cc_basename in
> + 		  *gcc*)
> + 		    if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
> + 		    then
> +@@ -5187,7 +5188,7 @@ if test "$have_gcc_asm_for_x87" = yes; then
> +     # Some versions of gcc miscompile inline asm:
> +     # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491
> +     # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html
> +-    case $CC in
> ++    case $cc_basename in
> +         *gcc*)
> +             AC_MSG_CHECKING(for gcc ipa-pure-const bug)
> +             saved_cflags="$CFLAGS"
> +--
> +2.7.4
> +
> diff --git a/meta/recipes-devtools/python/python3_3.5.6.bb b/meta/recipes-devtools/python/python3_3.5.6.bb
> index 2a45476..944d6f3 100644
> --- a/meta/recipes-devtools/python/python3_3.5.6.bb
> +++ b/meta/recipes-devtools/python/python3_3.5.6.bb
> @@ -45,6 +45,7 @@ SRC_URI += "\
>               file://0004-bpo-33570-TLS-1.3-ciphers-for-OpenSSL-1.1.1-GH-6976.patch \
>               file://0005-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-2305.patch \
>               file://run-ptest \
> +            file://0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch \
>              "
>   
>   inherit multilib_header python3native update-alternatives qemu ptest
> diff --git a/meta/recipes-devtools/python/python_2.7.15.bb b/meta/recipes-devtools/python/python_2.7.15.bb
> index dd969d8..f50b43a 100644
> --- a/meta/recipes-devtools/python/python_2.7.15.bb
> +++ b/meta/recipes-devtools/python/python_2.7.15.bb
> @@ -33,6 +33,7 @@ SRC_URI += "\
>     file://float-endian.patch \
>     file://0001-closes-bpo-34540-Convert-shutil._call_external_zip-t.patch \
>     file://0001-2.7-bpo-34623-Use-XML_SetHashSalt-in-_elementtree-GH.patch \
> +  file://0001-python2-use-cc_basename-to-replace-CC-for-checking-c.patch \
>   "
>   
>   S = "${WORKDIR}/Python-${PV}"

-- 
BRs

Sandy(Li Changqing)




More information about the Openembedded-core mailing list