[meta-networking,1/7] libtalloc: fix pyext_PATTERN for cross compilation

Message ID 20211125024450.143364-1-yi.zhao@windriver.com
State New
Headers show
Series [meta-networking,1/7] libtalloc: fix pyext_PATTERN for cross compilation | expand

Commit Message

Yi Zhao Nov. 25, 2021, 2:44 a.m. UTC
The pyext_PATTERN will add native arch as suffix when cross compiling.
For example, on qemuarm64, it is expanded to:
pyext_PATTERN ='%s.cpython-310-x86_64-linux-gnu.so'
which will result in the incorrect library name.

root@qemuarm64:~# find /usr/lib -name \*talloc\*
/usr/lib/pkgconfig/talloc.pc
/usr/lib/pkgconfig/pytalloc-util.cpython-310-x86_64-linux-gnu.pc
/usr/lib/libpytalloc-util.cpython-310-x86-64-linux-gnu.so.2.3.3
/usr/lib/libtalloc.so.2
/usr/lib/libpytalloc-util.cpython-310-x86-64-linux-gnu.so.2
/usr/lib/libpytalloc-util.cpython-310-x86-64-linux-gnu.so
/usr/lib/libtalloc.so
/usr/lib/libtalloc.so.2.3.3
/usr/lib/python3.10/site-packages/talloc.cpython-310-x86_64-linux-gnu.so

Set pyext_PATTERN to '%s.so' to remove the suffix.
After the patch:
root@qemuarm64:~# find /usr/lib -name \*talloc\*
/usr/lib/pkgconfig/talloc.pc
/usr/lib/pkgconfig/pytalloc-util.pc
/usr/lib/libpytalloc-util.so.2.3.3
/usr/lib/libtalloc.so.2
/usr/lib/libpytalloc-util.so.2
/usr/lib/libpytalloc-util.so
/usr/lib/libtalloc.so
/usr/lib/libtalloc.so.2.3.3
/usr/lib/python3.10/site-packages/talloc.so

Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
---
 ...-pyext_PATTERN-for-cross-compilation.patch | 57 +++++++++++++++++++
 .../libtalloc/libtalloc_2.3.3.bb              |  1 +
 2 files changed, 58 insertions(+)
 create mode 100644 meta-networking/recipes-support/libtalloc/libtalloc/0001-Fix-pyext_PATTERN-for-cross-compilation.patch

Comments

Khem Raj Nov. 25, 2021, 5:30 p.m. UTC | #1
On 11/24/21 6:44 PM, Yi Zhao wrote:
> The pyext_PATTERN will add native arch as suffix when cross compiling.
> For example, on qemuarm64, it is expanded to:
> pyext_PATTERN ='%s.cpython-310-x86_64-linux-gnu.so'
> which will result in the incorrect library name.
> 
> root@qemuarm64:~# find /usr/lib -name \*talloc\*
> /usr/lib/pkgconfig/talloc.pc
> /usr/lib/pkgconfig/pytalloc-util.cpython-310-x86_64-linux-gnu.pc
> /usr/lib/libpytalloc-util.cpython-310-x86-64-linux-gnu.so.2.3.3
> /usr/lib/libtalloc.so.2
> /usr/lib/libpytalloc-util.cpython-310-x86-64-linux-gnu.so.2
> /usr/lib/libpytalloc-util.cpython-310-x86-64-linux-gnu.so
> /usr/lib/libtalloc.so
> /usr/lib/libtalloc.so.2.3.3
> /usr/lib/python3.10/site-packages/talloc.cpython-310-x86_64-linux-gnu.so
> 
> Set pyext_PATTERN to '%s.so' to remove the suffix.
> After the patch:
> root@qemuarm64:~# find /usr/lib -name \*talloc\*
> /usr/lib/pkgconfig/talloc.pc
> /usr/lib/pkgconfig/pytalloc-util.pc
> /usr/lib/libpytalloc-util.so.2.3.3
> /usr/lib/libtalloc.so.2
> /usr/lib/libpytalloc-util.so.2
> /usr/lib/libpytalloc-util.so
> /usr/lib/libtalloc.so
> /usr/lib/libtalloc.so.2.3.3
> /usr/lib/python3.10/site-packages/talloc.so
> 

does it work well in multilib environment too ?

> Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
> ---
>   ...-pyext_PATTERN-for-cross-compilation.patch | 57 +++++++++++++++++++
>   .../libtalloc/libtalloc_2.3.3.bb              |  1 +
>   2 files changed, 58 insertions(+)
>   create mode 100644 meta-networking/recipes-support/libtalloc/libtalloc/0001-Fix-pyext_PATTERN-for-cross-compilation.patch
> 
> diff --git a/meta-networking/recipes-support/libtalloc/libtalloc/0001-Fix-pyext_PATTERN-for-cross-compilation.patch b/meta-networking/recipes-support/libtalloc/libtalloc/0001-Fix-pyext_PATTERN-for-cross-compilation.patch
> new file mode 100644
> index 000000000..47ee4bb24
> --- /dev/null
> +++ b/meta-networking/recipes-support/libtalloc/libtalloc/0001-Fix-pyext_PATTERN-for-cross-compilation.patch
> @@ -0,0 +1,57 @@
> +From b5eaeb7ed4e75012d2715f995e15a13850064f61 Mon Sep 17 00:00:00 2001
> +From: Yi Zhao <yi.zhao@windriver.com>
> +Date: Wed, 24 Nov 2021 13:33:35 +0800
> +Subject: [PATCH] Fix pyext_PATTERN for cross compilation
> +
> +The pyext_PATTERN will add native arch as suffix when cross compiling.
> +For example, on qemuarm64, it is expanded to:
> +pyext_PATTERN ='%s.cpython-310-x86_64-linux-gnu.so'
> +which will result in the incorrect library name.
> +
> +root@qemuarm64:~# find /usr/lib -name \*talloc\*
> +/usr/lib/pkgconfig/talloc.pc
> +/usr/lib/pkgconfig/pytalloc-util.cpython-310-x86_64-linux-gnu.pc
> +/usr/lib/libpytalloc-util.cpython-310-x86-64-linux-gnu.so.2.3.3
> +/usr/lib/libtalloc.so.2
> +/usr/lib/libpytalloc-util.cpython-310-x86-64-linux-gnu.so.2
> +/usr/lib/libpytalloc-util.cpython-310-x86-64-linux-gnu.so
> +/usr/lib/libtalloc.so
> +/usr/lib/libtalloc.so.2.3.3
> +/usr/lib/python3.10/site-packages/talloc.cpython-310-x86_64-linux-gnu.so
> +
> +Set pyext_PATTERN to '%s.so' to remove the suffix.
> +After the patch:
> +root@qemuarm64:~# find /usr/lib -name \*talloc\*
> +/usr/lib/pkgconfig/talloc.pc
> +/usr/lib/pkgconfig/pytalloc-util.pc
> +/usr/lib/libpytalloc-util.so.2.3.3
> +/usr/lib/libtalloc.so.2
> +/usr/lib/libpytalloc-util.so.2
> +/usr/lib/libpytalloc-util.so
> +/usr/lib/libtalloc.so
> +/usr/lib/libtalloc.so.2.3.3
> +/usr/lib/python3.10/site-packages/talloc.so
> +
> +Upstream-Status: Inappropriate [embedded specific]
> +
> +Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
> +---
> + third_party/waf/waflib/Tools/python.py | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/third_party/waf/waflib/Tools/python.py b/third_party/waf/waflib/Tools/python.py
> +index b1c8dd0..24faa31 100644
> +--- a/third_party/waf/waflib/Tools/python.py
> ++++ b/third_party/waf/waflib/Tools/python.py
> +@@ -328,7 +328,7 @@ def check_python_headers(conf, features='pyembed pyext'):
> + 	x = 'MACOSX_DEPLOYMENT_TARGET'
> + 	if dct[x]:
> + 		env[x] = conf.environ[x] = dct[x]
> +-	env.pyext_PATTERN = '%s' + dct['SO'] # not a mistake
> ++	env.pyext_PATTERN = '%s.so'
> +
> +
> + 	# Try to get pythonX.Y-config
> +--
> +2.17.1
> +
> diff --git a/meta-networking/recipes-support/libtalloc/libtalloc_2.3.3.bb b/meta-networking/recipes-support/libtalloc/libtalloc_2.3.3.bb
> index e6e2066a5..9b207609f 100644
> --- a/meta-networking/recipes-support/libtalloc/libtalloc_2.3.3.bb
> +++ b/meta-networking/recipes-support/libtalloc/libtalloc_2.3.3.bb
> @@ -9,6 +9,7 @@ LIC_FILES_CHKSUM = "file://talloc.h;beginline=3;endline=27;md5=a301712782cad6dd6
>   
>   SRC_URI = "https://www.samba.org/ftp/talloc/talloc-${PV}.tar.gz \
>              file://options-2.2.0.patch \
> +           file://0001-Fix-pyext_PATTERN-for-cross-compilation.patch \
>   "
>   SRC_URI[sha256sum] = "6be95b2368bd0af1c4cd7a88146eb6ceea18e46c3ffc9330bf6262b40d1d8aaa"
>   
> 
> 
> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#94116): https://lists.openembedded.org/g/openembedded-devel/message/94116
> Mute This Topic: https://lists.openembedded.org/mt/87295464/1997914
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Yi Zhao Nov. 26, 2021, 5:37 a.m. UTC | #2
On 11/26/21 1:30 AM, Khem Raj wrote:
>
>
> On 11/24/21 6:44 PM, Yi Zhao wrote:
>> The pyext_PATTERN will add native arch as suffix when cross compiling.
>> For example, on qemuarm64, it is expanded to:
>> pyext_PATTERN ='%s.cpython-310-x86_64-linux-gnu.so'
>> which will result in the incorrect library name.
>>
>> root@qemuarm64:~# find /usr/lib -name \*talloc\*
>> /usr/lib/pkgconfig/talloc.pc
>> /usr/lib/pkgconfig/pytalloc-util.cpython-310-x86_64-linux-gnu.pc
>> /usr/lib/libpytalloc-util.cpython-310-x86-64-linux-gnu.so.2.3.3
>> /usr/lib/libtalloc.so.2
>> /usr/lib/libpytalloc-util.cpython-310-x86-64-linux-gnu.so.2
>> /usr/lib/libpytalloc-util.cpython-310-x86-64-linux-gnu.so
>> /usr/lib/libtalloc.so
>> /usr/lib/libtalloc.so.2.3.3
>> /usr/lib/python3.10/site-packages/talloc.cpython-310-x86_64-linux-gnu.so
>>
>> Set pyext_PATTERN to '%s.so' to remove the suffix.
>> After the patch:
>> root@qemuarm64:~# find /usr/lib -name \*talloc\*
>> /usr/lib/pkgconfig/talloc.pc
>> /usr/lib/pkgconfig/pytalloc-util.pc
>> /usr/lib/libpytalloc-util.so.2.3.3
>> /usr/lib/libtalloc.so.2
>> /usr/lib/libpytalloc-util.so.2
>> /usr/lib/libpytalloc-util.so
>> /usr/lib/libtalloc.so
>> /usr/lib/libtalloc.so.2.3.3
>> /usr/lib/python3.10/site-packages/talloc.so
>>
>
> does it work well in multilib environment too ?


Yes. It does.


//YI


>
>> Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
>> ---
>>   ...-pyext_PATTERN-for-cross-compilation.patch | 57 +++++++++++++++++++
>>   .../libtalloc/libtalloc_2.3.3.bb              |  1 +
>>   2 files changed, 58 insertions(+)
>>   create mode 100644 
>> meta-networking/recipes-support/libtalloc/libtalloc/0001-Fix-pyext_PATTERN-for-cross-compilation.patch
>>
>> diff --git 
>> a/meta-networking/recipes-support/libtalloc/libtalloc/0001-Fix-pyext_PATTERN-for-cross-compilation.patch 
>> b/meta-networking/recipes-support/libtalloc/libtalloc/0001-Fix-pyext_PATTERN-for-cross-compilation.patch 
>>
>> new file mode 100644
>> index 000000000..47ee4bb24
>> --- /dev/null
>> +++ 
>> b/meta-networking/recipes-support/libtalloc/libtalloc/0001-Fix-pyext_PATTERN-for-cross-compilation.patch
>> @@ -0,0 +1,57 @@
>> +From b5eaeb7ed4e75012d2715f995e15a13850064f61 Mon Sep 17 00:00:00 2001
>> +From: Yi Zhao <yi.zhao@windriver.com>
>> +Date: Wed, 24 Nov 2021 13:33:35 +0800
>> +Subject: [PATCH] Fix pyext_PATTERN for cross compilation
>> +
>> +The pyext_PATTERN will add native arch as suffix when cross compiling.
>> +For example, on qemuarm64, it is expanded to:
>> +pyext_PATTERN ='%s.cpython-310-x86_64-linux-gnu.so'
>> +which will result in the incorrect library name.
>> +
>> +root@qemuarm64:~# find /usr/lib -name \*talloc\*
>> +/usr/lib/pkgconfig/talloc.pc
>> +/usr/lib/pkgconfig/pytalloc-util.cpython-310-x86_64-linux-gnu.pc
>> +/usr/lib/libpytalloc-util.cpython-310-x86-64-linux-gnu.so.2.3.3
>> +/usr/lib/libtalloc.so.2
>> +/usr/lib/libpytalloc-util.cpython-310-x86-64-linux-gnu.so.2
>> +/usr/lib/libpytalloc-util.cpython-310-x86-64-linux-gnu.so
>> +/usr/lib/libtalloc.so
>> +/usr/lib/libtalloc.so.2.3.3
>> +/usr/lib/python3.10/site-packages/talloc.cpython-310-x86_64-linux-gnu.so 
>>
>> +
>> +Set pyext_PATTERN to '%s.so' to remove the suffix.
>> +After the patch:
>> +root@qemuarm64:~# find /usr/lib -name \*talloc\*
>> +/usr/lib/pkgconfig/talloc.pc
>> +/usr/lib/pkgconfig/pytalloc-util.pc
>> +/usr/lib/libpytalloc-util.so.2.3.3
>> +/usr/lib/libtalloc.so.2
>> +/usr/lib/libpytalloc-util.so.2
>> +/usr/lib/libpytalloc-util.so
>> +/usr/lib/libtalloc.so
>> +/usr/lib/libtalloc.so.2.3.3
>> +/usr/lib/python3.10/site-packages/talloc.so
>> +
>> +Upstream-Status: Inappropriate [embedded specific]
>> +
>> +Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
>> +---
>> + third_party/waf/waflib/Tools/python.py | 2 +-
>> + 1 file changed, 1 insertion(+), 1 deletion(-)
>> +
>> +diff --git a/third_party/waf/waflib/Tools/python.py 
>> b/third_party/waf/waflib/Tools/python.py
>> +index b1c8dd0..24faa31 100644
>> +--- a/third_party/waf/waflib/Tools/python.py
>> ++++ b/third_party/waf/waflib/Tools/python.py
>> +@@ -328,7 +328,7 @@ def check_python_headers(conf, features='pyembed 
>> pyext'):
>> +     x = 'MACOSX_DEPLOYMENT_TARGET'
>> +     if dct[x]:
>> +         env[x] = conf.environ[x] = dct[x]
>> +-    env.pyext_PATTERN = '%s' + dct['SO'] # not a mistake
>> ++    env.pyext_PATTERN = '%s.so'
>> +
>> +
>> +     # Try to get pythonX.Y-config
>> +--
>> +2.17.1
>> +
>> diff --git 
>> a/meta-networking/recipes-support/libtalloc/libtalloc_2.3.3.bb 
>> b/meta-networking/recipes-support/libtalloc/libtalloc_2.3.3.bb
>> index e6e2066a5..9b207609f 100644
>> --- a/meta-networking/recipes-support/libtalloc/libtalloc_2.3.3.bb
>> +++ b/meta-networking/recipes-support/libtalloc/libtalloc_2.3.3.bb
>> @@ -9,6 +9,7 @@ LIC_FILES_CHKSUM = 
>> "file://talloc.h;beginline=3;endline=27;md5=a301712782cad6dd6
>>     SRC_URI = "https://www.samba.org/ftp/talloc/talloc-${PV}.tar.gz \
>>              file://options-2.2.0.patch \
>> + file://0001-Fix-pyext_PATTERN-for-cross-compilation.patch \
>>   "
>>   SRC_URI[sha256sum] = 
>> "6be95b2368bd0af1c4cd7a88146eb6ceea18e46c3ffc9330bf6262b40d1d8aaa"
>>
>>
>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#94116): 
>> https://lists.openembedded.org/g/openembedded-devel/message/94116
>> Mute This Topic: https://lists.openembedded.org/mt/87295464/1997914
>> Group Owner: openembedded-devel+owner@lists.openembedded.org
>> Unsubscribe: 
>> https://lists.openembedded.org/g/openembedded-devel/unsub 
>> [raj.khem@gmail.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>

Patch

diff --git a/meta-networking/recipes-support/libtalloc/libtalloc/0001-Fix-pyext_PATTERN-for-cross-compilation.patch b/meta-networking/recipes-support/libtalloc/libtalloc/0001-Fix-pyext_PATTERN-for-cross-compilation.patch
new file mode 100644
index 000000000..47ee4bb24
--- /dev/null
+++ b/meta-networking/recipes-support/libtalloc/libtalloc/0001-Fix-pyext_PATTERN-for-cross-compilation.patch
@@ -0,0 +1,57 @@ 
+From b5eaeb7ed4e75012d2715f995e15a13850064f61 Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Wed, 24 Nov 2021 13:33:35 +0800
+Subject: [PATCH] Fix pyext_PATTERN for cross compilation
+
+The pyext_PATTERN will add native arch as suffix when cross compiling.
+For example, on qemuarm64, it is expanded to:
+pyext_PATTERN ='%s.cpython-310-x86_64-linux-gnu.so'
+which will result in the incorrect library name.
+
+root@qemuarm64:~# find /usr/lib -name \*talloc\*
+/usr/lib/pkgconfig/talloc.pc
+/usr/lib/pkgconfig/pytalloc-util.cpython-310-x86_64-linux-gnu.pc
+/usr/lib/libpytalloc-util.cpython-310-x86-64-linux-gnu.so.2.3.3
+/usr/lib/libtalloc.so.2
+/usr/lib/libpytalloc-util.cpython-310-x86-64-linux-gnu.so.2
+/usr/lib/libpytalloc-util.cpython-310-x86-64-linux-gnu.so
+/usr/lib/libtalloc.so
+/usr/lib/libtalloc.so.2.3.3
+/usr/lib/python3.10/site-packages/talloc.cpython-310-x86_64-linux-gnu.so
+
+Set pyext_PATTERN to '%s.so' to remove the suffix.
+After the patch:
+root@qemuarm64:~# find /usr/lib -name \*talloc\*
+/usr/lib/pkgconfig/talloc.pc
+/usr/lib/pkgconfig/pytalloc-util.pc
+/usr/lib/libpytalloc-util.so.2.3.3
+/usr/lib/libtalloc.so.2
+/usr/lib/libpytalloc-util.so.2
+/usr/lib/libpytalloc-util.so
+/usr/lib/libtalloc.so
+/usr/lib/libtalloc.so.2.3.3
+/usr/lib/python3.10/site-packages/talloc.so
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ third_party/waf/waflib/Tools/python.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/third_party/waf/waflib/Tools/python.py b/third_party/waf/waflib/Tools/python.py
+index b1c8dd0..24faa31 100644
+--- a/third_party/waf/waflib/Tools/python.py
++++ b/third_party/waf/waflib/Tools/python.py
+@@ -328,7 +328,7 @@ def check_python_headers(conf, features='pyembed pyext'):
+ 	x = 'MACOSX_DEPLOYMENT_TARGET'
+ 	if dct[x]:
+ 		env[x] = conf.environ[x] = dct[x]
+-	env.pyext_PATTERN = '%s' + dct['SO'] # not a mistake
++	env.pyext_PATTERN = '%s.so'
+ 
+ 
+ 	# Try to get pythonX.Y-config
+-- 
+2.17.1
+
diff --git a/meta-networking/recipes-support/libtalloc/libtalloc_2.3.3.bb b/meta-networking/recipes-support/libtalloc/libtalloc_2.3.3.bb
index e6e2066a5..9b207609f 100644
--- a/meta-networking/recipes-support/libtalloc/libtalloc_2.3.3.bb
+++ b/meta-networking/recipes-support/libtalloc/libtalloc_2.3.3.bb
@@ -9,6 +9,7 @@  LIC_FILES_CHKSUM = "file://talloc.h;beginline=3;endline=27;md5=a301712782cad6dd6
 
 SRC_URI = "https://www.samba.org/ftp/talloc/talloc-${PV}.tar.gz \
            file://options-2.2.0.patch \
+           file://0001-Fix-pyext_PATTERN-for-cross-compilation.patch \
 "
 SRC_URI[sha256sum] = "6be95b2368bd0af1c4cd7a88146eb6ceea18e46c3ffc9330bf6262b40d1d8aaa"