All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Zoltan Boszormenyi" <zboszor@pr.hu>
To: Khem Raj <raj.khem@gmail.com>, Ross Burton <ross.burton@arm.com>,
	"openembedded-core@lists.openembedded.org"
	<openembedded-core@lists.openembedded.org>
Cc: "Zoltán Böszörményi" <zboszor@gmail.com>
Subject: Re: [OE-core] [PATCH] python3-setuptools: Fix building python modules using cython
Date: Thu, 19 May 2022 10:25:47 +0200	[thread overview]
Message-ID: <394549e4-3ffb-a75a-bce8-dc6578ece827@pr.hu> (raw)
In-Reply-To: <12ef2c6a-8e7d-d4d5-aea3-97728316fb86@gmail.com>

2022. 05. 18. 17:55 keltezéssel, Khem Raj írta:
> 
> 
> On 5/18/22 6:28 AM, Zoltan Boszormenyi via lists.openembedded.org wrote:
>> 2022. 05. 18. 14:32 keltezéssel, Ross Burton írta:
>>> I left a comment on the PR you filed, but the triplet thing seems to be a red herring 
>>> as the old code uses ‘in’ so a compiler called arm-poky-linux-gcc would still be 
>>> detected as gcc.
>>
>> The "in" is also a problem. Any command can have a
>> "gcc" substring somewhere in the middle.
>>
>> It's important that the command name ends in the pattern.
>>
>> Maybe compiler_name.endswith() would be a better choice
>> but a regex is less typing and more compact then spelling
>> out compiler_name.endswith() 4 times on the same line.
> 
> Sneaking clang under is_gcc() garb seems a bit dubious to me. Perhaps check if is_gcc is 
> meant to select some gcc'ness. Then you are better of detecting clang separately.

Python core has this particular quirk for some reason.
I thought is wasn't a big deal because of this.

But for this particular problem (passing "-Wl,-Rpath"
vs "-Rpath" to the compiler), the upstream distutils
has a different solution. It simply handles every other
system where GCC is not a thing then does -Wl,-R for
the remaining systems unconditionally.

It's just a matter of time when setuptools syncs with distutils.

> 
>>
>>>
>>> If this patch is just extending the logic to consider clang as gcc, then that should be 
>>> called out explicitly
> 
>>>
>>> Ross
>>>
>>> *From: *openembedded-core@lists.openembedded.org 
>>> <openembedded-core@lists.openembedded.org> on behalf of Zoltan Boszormenyi via 
>>> lists.openembedded.org <zboszor=pr.hu@lists.openembedded.org>
>>> *Date: *Wednesday, 18 May 2022 at 08:16
>>> *To: *openembedded-core@lists.openembedded.org <openembedded-core@lists.openembedded.org>
>>> *Cc: *Zoltán Böszörményi <zboszor@gmail.com>
>>> *Subject: *[OE-core] [PATCH] python3-setuptools: Fix building python modules using cython
>>>
>>> From: Zoltán Böszörményi <zboszor@gmail.com>
>>>
>>> The function _is_gcc() was not taking a machine triplet into
>>> account. Also handle clang and clang++ because they also
>>> want the rpath option via -Wl,-R instead of just -R.
>>>
>>> Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
>>> ---
>>>   ...cross-compiler-prefixes-and-handle-c.patch | 31 +++++++++++++++++++
>>>   .../python/python3-setuptools_59.5.0.bb       |  1 +
>>>   2 files changed, 32 insertions(+)
>>>   create mode 100644 
>>> meta/recipes-devtools/python/python3-setuptools/0001-Fix-_is_gcc-for-cross-compiler-prefixes-and-handle-c.patch 
>>>
>>>
>>> diff --git 
>>> a/meta/recipes-devtools/python/python3-setuptools/0001-Fix-_is_gcc-for-cross-compiler-prefixes-and-handle-c.patch 
>>> b/meta/recipes-devtools/python/python3-setuptools/0001-Fix-_is_gcc-for-cross-compiler-prefixes-and-handle-c.patch 
>>>
>>> new file mode 100644
>>> index 0000000000..7f91d8e6cd
>>> --- /dev/null
>>> +++ 
>>> b/meta/recipes-devtools/python/python3-setuptools/0001-Fix-_is_gcc-for-cross-compiler-prefixes-and-handle-c.patch 
>>>
>>> @@ -0,0 +1,31 @@
>>> +From 695800847eb519209c2b45e26fd65d3117a4efcd Mon Sep 17 00:00:00 2001
>>> +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
>>> + <zboszor@gmail.com>
>>> +Date: Wed, 18 May 2022 06:51:22 +0200
>>> +Subject: [PATCH] Fix _is_gcc() for cross-compiler prefixes and handle
>>> + clang and clang++
>>> +
>>> +Upstream-Status: Submitted [https://github.com/pypa/setuptools/pull/3326 
>>> <https://github.com/pypa/setuptools/pull/3326>]
>>> +
>>> +Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
>>> +---
>>> + setuptools/_distutils/unixccompiler.py | 3 ++-
>>> + 1 file changed, 2 insertions(+), 1 deletion(-)
>>> +
>>> +diff --git a/setuptools/_distutils/unixccompiler.py 
>>> b/setuptools/_distutils/unixccompiler.py
>>> +index 715408f5..3a4d642e 100644
>>> +--- a/setuptools/_distutils/unixccompiler.py
>>> ++++ b/setuptools/_distutils/unixccompiler.py
>>> +@@ -260,7 +260,8 @@ class UnixCCompiler(CCompiler):
>>> +         return "-L" + dir
>>> +
>>> +     def _is_gcc(self, compiler_name):
>>> +-        return "gcc" in compiler_name or "g++" in compiler_name
>>> ++        cnpat = re.compile('.*(gcc|g\+\+|clang|clang\+\+)$')
>>> ++        return not (cnpat.match(compiler_name) is None)
>>> +
>>> +     def runtime_library_dir_option(self, dir):
>>> +         # XXX Hackish, at the very least.  See Python bug #445902:
>>> +--
>>> +2.36.1
>>> +
>>> diff --git a/meta/recipes-devtools/python/python3-setuptools_59.5.0.bb 
>>> b/meta/recipes-devtools/python/python3-setuptools_59.5.0.bb
>>> index f2810e18d3..20ecf5223d 100644
>>> --- a/meta/recipes-devtools/python/python3-setuptools_59.5.0.bb
>>> +++ b/meta/recipes-devtools/python/python3-setuptools_59.5.0.bb
>>> @@ -11,6 +11,7 @@ SRC_URI:append:class-native = " 
>>> file://0001-conditionally-do-not-fetch-code-by-e 
>>> <file:///0001-conditionally-do-not-fetch-code-by-e>
>>>   SRC_URI += "\
>>> file://0001-change-shebang-to-python3.patch 
>>> <file:///0001-change-shebang-to-python3.patch> \
>>> file://0001-_distutils-sysconfig-append-STAGING_LIBDIR-python-sy.patch 
>>> <file:///0001-_distutils-sysconfig-append-STAGING_LIBDIR-python-sy.patch> \
>>> + file://0001-Fix-_is_gcc-for-cross-compiler-prefixes-and-handle-c.patch 
>>> <file:///0001-Fix-_is_gcc-for-cross-compiler-prefixes-and-handle-c.patch> \
>>>   "
>>>
>>>   SRC_URI[sha256sum] = "d144f85102f999444d06f9c0e8c737fd0194f10f2f7e5fdb77573f6e2fa4fad0"
>>> -- 
>>> 2.36.1
>>>
>>> IMPORTANT NOTICE: The contents of this email and any attachments are confidential and 
>>> may also be privileged. If you are not the intended recipient, please notify the sender 
>>> immediately and do not disclose the contents to any other person, use it for any 
>>> purpose, or store or copy the information in any medium. Thank you.
>>>
>>>
>>>
>>>
>>
>>
>>
>>
>>
> 
> 
> 
> 


      reply	other threads:[~2022-05-19  8:25 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-18  7:15 [PATCH] python3-setuptools: Fix building python modules using cython Zoltan Boszormenyi
2022-05-18 12:32 ` [OE-core] " Ross Burton
2022-05-18 13:28   ` Zoltan Boszormenyi
2022-05-18 15:55     ` Khem Raj
2022-05-19  8:25       ` Zoltan Boszormenyi [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=394549e4-3ffb-a75a-bce8-dc6578ece827@pr.hu \
    --to=zboszor@pr.hu \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=raj.khem@gmail.com \
    --cc=ross.burton@arm.com \
    --cc=zboszor@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.