[1/2] package/pkg-python: use HOST_CONFIGURE_OPTS for distutils
diff mbox series

Message ID 20191111140643.2629-1-ryan.barnett@rockwellcollins.com
State Superseded
Headers show
Series
  • [1/2] package/pkg-python: use HOST_CONFIGURE_OPTS for distutils
Related show

Commit Message

Ryan Barnett Nov. 11, 2019, 2:06 p.m. UTC
When building host python packages, we need to ensure that distutils
package types utilize HOST_CONFIGURE_OPTS. This ensures that the
correct linker and compiler environment variables are set to compile
utilizing the host directory.

It was discovered that when compiling a host-python package, it was
using linking against the build machines library folder instead of the
host folder because LDFLAGS was not properly set and was improperly
detecting whether or not a shared or static library was present in the
host folder.

Signed-off-by: Ryan Barnett <ryan.barnett@rockwellcollins.com>
---
 package/pkg-python.mk | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Ryan Barnett Dec. 4, 2019, 2:12 p.m. UTC | #1
On Mon, Nov 11, 2019 at 8:06 AM Ryan Barnett
<ryan.barnett@rockwellcollins.com> wrote:
>
> When building host python packages, we need to ensure that distutils
> package types utilize HOST_CONFIGURE_OPTS. This ensures that the
> correct linker and compiler environment variables are set to compile
> utilizing the host directory.
>
> It was discovered that when compiling a host-python package, it was
> using linking against the build machines library folder instead of the
> host folder because LDFLAGS was not properly set and was improperly
> detecting whether or not a shared or static library was present in the
> host folder.

Is there any feedback on this approach to compiling a host python
distutils packages?

Or is it preferred to explicitly pass the LDFLAGS variable in the DISTUTILS_ENV?

> Signed-off-by: Ryan Barnett <ryan.barnett@rockwellcollins.com>
> ---
>  package/pkg-python.mk | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/package/pkg-python.mk b/package/pkg-python.mk
> index be1ce071df..8e4c7e5795 100644
> --- a/package/pkg-python.mk
> +++ b/package/pkg-python.mk
> @@ -52,7 +52,8 @@ PKG_PYTHON_DISTUTILS_INSTALL_STAGING_OPTS = \
>  # Host distutils-based packages
>  HOST_PKG_PYTHON_DISTUTILS_ENV = \
>         PATH=$(BR_PATH) \
> -       PYTHONNOUSERSITE=1
> +       PYTHONNOUSERSITE=1 \
> +       $(HOST_CONFIGURE_OPTS)
>
>  HOST_PKG_PYTHON_DISTUTILS_INSTALL_OPTS = \
>         --prefix=$(HOST_DIR)
> --
> 2.18.0
>

Thanks,
-Ryan
Arnout Vandecappelle Dec. 5, 2019, 9:45 p.m. UTC | #2
On 04/12/2019 15:12, Ryan Barnett wrote:
> On Mon, Nov 11, 2019 at 8:06 AM Ryan Barnett
> <ryan.barnett@rockwellcollins.com> wrote:
>>
>> When building host python packages, we need to ensure that distutils
>> package types utilize HOST_CONFIGURE_OPTS. This ensures that the
>> correct linker and compiler environment variables are set to compile
>> utilizing the host directory.
>>
>> It was discovered that when compiling a host-python package, it was
>> using linking against the build machines library folder instead of the
>> host folder because LDFLAGS was not properly set and was improperly
>> detecting whether or not a shared or static library was present in the
>> host folder.
> 
> Is there any feedback on this approach to compiling a host python
> distutils packages?

 As such it seems like the right thing to do. However, it makes me wonder

- why this is not needed for setuptools;

- why we don't pass TARGET_CONFIGURE_OPTS in the environment for the target.

 Regards,
 Arnout

> 
> Or is it preferred to explicitly pass the LDFLAGS variable in the DISTUTILS_ENV?
> 
>> Signed-off-by: Ryan Barnett <ryan.barnett@rockwellcollins.com>
>> ---
>>  package/pkg-python.mk | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/package/pkg-python.mk b/package/pkg-python.mk
>> index be1ce071df..8e4c7e5795 100644
>> --- a/package/pkg-python.mk
>> +++ b/package/pkg-python.mk
>> @@ -52,7 +52,8 @@ PKG_PYTHON_DISTUTILS_INSTALL_STAGING_OPTS = \
>>  # Host distutils-based packages
>>  HOST_PKG_PYTHON_DISTUTILS_ENV = \
>>         PATH=$(BR_PATH) \
>> -       PYTHONNOUSERSITE=1
>> +       PYTHONNOUSERSITE=1 \
>> +       $(HOST_CONFIGURE_OPTS)
>>
>>  HOST_PKG_PYTHON_DISTUTILS_INSTALL_OPTS = \
>>         --prefix=$(HOST_DIR)
>> --
>> 2.18.0
>>
> 
> Thanks,
> -Ryan
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
>
Ryan Barnett Dec. 5, 2019, 9:55 p.m. UTC | #3
Arnout,

On Thu, Dec 5, 2019 at 3:45 PM Arnout Vandecappelle <arnout@mind.be> wrote:
>
> On 04/12/2019 15:12, Ryan Barnett wrote:
> > On Mon, Nov 11, 2019 at 8:06 AM Ryan Barnett
> > <ryan.barnett@rockwellcollins.com> wrote:
> >>
> >> When building host python packages, we need to ensure that distutils
> >> package types utilize HOST_CONFIGURE_OPTS. This ensures that the
> >> correct linker and compiler environment variables are set to compile
> >> utilizing the host directory.
> >>
> >> It was discovered that when compiling a host-python package, it was
> >> using linking against the build machines library folder instead of the
> >> host folder because LDFLAGS was not properly set and was improperly
> >> detecting whether or not a shared or static library was present in the
> >> host folder.
> >
> > Is there any feedback on this approach to compiling a host python
> > distutils packages?
>
>  As such it seems like the right thing to do. However, it makes me wonder
>
> - why this is not needed for setuptools;
>
> - why we don't pass TARGET_CONFIGURE_OPTS in the environment for the target.

I will send a v2 where I combine the passing
{TARGET|HOST}_CONFIGURE_OPTS into their respective environments. I
will also send changing of the setuptools package type as well.

I'm not familiar with the setuptools build method for building with
python but I would image that it doesn't hurt to pass _CONFIGURE_OPTS
in the environment.

Thanks,
-Ryan

Patch
diff mbox series

diff --git a/package/pkg-python.mk b/package/pkg-python.mk
index be1ce071df..8e4c7e5795 100644
--- a/package/pkg-python.mk
+++ b/package/pkg-python.mk
@@ -52,7 +52,8 @@  PKG_PYTHON_DISTUTILS_INSTALL_STAGING_OPTS = \
 # Host distutils-based packages
 HOST_PKG_PYTHON_DISTUTILS_ENV = \
 	PATH=$(BR_PATH) \
-	PYTHONNOUSERSITE=1
+	PYTHONNOUSERSITE=1 \
+	$(HOST_CONFIGURE_OPTS)
 
 HOST_PKG_PYTHON_DISTUTILS_INSTALL_OPTS = \
 	--prefix=$(HOST_DIR)