Re: [ovs-dev] [PATCH] python/setup: "-fPIC" extra compile flag for C extension

2017-01-10 Thread Iwase Yusuke
Hi,

On 2017年01月11日 11:01, Ben Pfaff wrote:
> On Wed, Jan 11, 2017 at 09:38:13AM +0900, IWASE Yusuke wrote:
>> To build shared library object, it is required to built as "Position
>> Independent Code" (on x86-64, for example).
>> This patch adds "-fPIC" extra compile flag to make sure that extension
>> being PIC while building a shared library object.
>>
>> Signed-off-by: IWASE Yusuke 
>> ---
>>  python/setup.py | 9 +++--
>>  1 file changed, 7 insertions(+), 2 deletions(-)
>>
>> diff --git a/python/setup.py b/python/setup.py
>> index 19c1f18..8f565d8 100644
>> --- a/python/setup.py
>> +++ b/python/setup.py
>> @@ -76,8 +76,13 @@ setup_args = dict(
>>  'Programming Language :: Python :: 3',
>>  'Programming Language :: Python :: 3.4',
>>  ],
>> -ext_modules=[setuptools.Extension("ovs._json", sources=["ovs/_json.c"],
>> -  libraries=['openvswitch'])],
>> +ext_modules=[
>> +setuptools.Extension(
>> +"ovs._json",
>> +sources=["ovs/_json.c"],
>> +libraries=['openvswitch'],
>> +extra_compile_args=["-fPIC"]),
>> +],
>>  cmdclass={'build_ext': try_build_ext},
>>  )
> 
> Are you sure that this is the right way to build a Python shared object?
> It is very ELF-specific so I imagine that it will break Windows and BSD
> builds.

Sorry, I'm not good at C cross-platform building.
I didn't test on such environment, tried it on only Ubuntu 16.04.
When I built Python shared object, I need to add "-fPIC" to extension and
also to openvswitch.a library, otherwise the followings would be output.
===
/usr/bin/ld: //usr/local/lib/libopenvswitch.a(json.o): relocation R_X86_64_32 
against `.rodata.str1.1' can not be used when making a shared object; recompile 
with -fPIC
===

I only know "shared object should be PIC", but don't understand
enough why...
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH] python/setup: "-fPIC" extra compile flag for C extension

2017-01-10 Thread Ben Pfaff
On Wed, Jan 11, 2017 at 09:38:13AM +0900, IWASE Yusuke wrote:
> To build shared library object, it is required to built as "Position
> Independent Code" (on x86-64, for example).
> This patch adds "-fPIC" extra compile flag to make sure that extension
> being PIC while building a shared library object.
> 
> Signed-off-by: IWASE Yusuke 
> ---
>  python/setup.py | 9 +++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/python/setup.py b/python/setup.py
> index 19c1f18..8f565d8 100644
> --- a/python/setup.py
> +++ b/python/setup.py
> @@ -76,8 +76,13 @@ setup_args = dict(
>  'Programming Language :: Python :: 3',
>  'Programming Language :: Python :: 3.4',
>  ],
> -ext_modules=[setuptools.Extension("ovs._json", sources=["ovs/_json.c"],
> -  libraries=['openvswitch'])],
> +ext_modules=[
> +setuptools.Extension(
> +"ovs._json",
> +sources=["ovs/_json.c"],
> +libraries=['openvswitch'],
> +extra_compile_args=["-fPIC"]),
> +],
>  cmdclass={'build_ext': try_build_ext},
>  )

Are you sure that this is the right way to build a Python shared object?
It is very ELF-specific so I imagine that it will break Windows and BSD
builds.
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [PATCH] python/setup: "-fPIC" extra compile flag for C extension

2017-01-10 Thread IWASE Yusuke
To build shared library object, it is required to built as "Position
Independent Code" (on x86-64, for example).
This patch adds "-fPIC" extra compile flag to make sure that extension
being PIC while building a shared library object.

Signed-off-by: IWASE Yusuke 
---
 python/setup.py | 9 +++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/python/setup.py b/python/setup.py
index 19c1f18..8f565d8 100644
--- a/python/setup.py
+++ b/python/setup.py
@@ -76,8 +76,13 @@ setup_args = dict(
 'Programming Language :: Python :: 3',
 'Programming Language :: Python :: 3.4',
 ],
-ext_modules=[setuptools.Extension("ovs._json", sources=["ovs/_json.c"],
-  libraries=['openvswitch'])],
+ext_modules=[
+setuptools.Extension(
+"ovs._json",
+sources=["ovs/_json.c"],
+libraries=['openvswitch'],
+extra_compile_args=["-fPIC"]),
+],
 cmdclass={'build_ext': try_build_ext},
 )
 
-- 
2.7.4

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev