All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [for-next] package/rust: allow using python3 interpreter
@ 2020-05-26 18:20 Romain Naour
  2020-05-27 10:27 ` Titouan Christophe
  2020-05-29 21:14 ` Thomas Petazzoni
  0 siblings, 2 replies; 6+ messages in thread
From: Romain Naour @ 2020-05-26 18:20 UTC (permalink / raw)
  To: buildroot

Fedora packaging use python3 as python interpreter since rust 1.24.0 [1]
by removing python2 tests from configure script [2].

Using python3 will help to remove python2 in a near future.

[1] https://src.fedoraproject.org/rpms/rust/c/216b2d27716bf1031c526dbd0e01a1fa8e6d5aa2
[2] https://src.fedoraproject.org/rpms/rust/blob/216b2d27716bf1031c526dbd0e01a1fa8e6d5aa2/f/rust.spec#_314

Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: Titouan Christophe <titouan.christophe@railnova.eu>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Patrick Havelange <patrick.havelange@essensium.com>
---
 ...igure-use-default-python-interpreter.patch | 37 +++++++++++++++++++
 package/rust/rust.mk                          | 17 ++++++---
 2 files changed, 49 insertions(+), 5 deletions(-)
 create mode 100644 package/rust/0002-configure-use-default-python-interpreter.patch

diff --git a/package/rust/0002-configure-use-default-python-interpreter.patch b/package/rust/0002-configure-use-default-python-interpreter.patch
new file mode 100644
index 0000000000..34d97bb4cf
--- /dev/null
+++ b/package/rust/0002-configure-use-default-python-interpreter.patch
@@ -0,0 +1,37 @@
+From aca7abb537f5caf1c9f027cf65dd0f53fb664e73 Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@gmail.com>
+Date: Tue, 26 May 2020 18:24:25 +0200
+Subject: [PATCH] configure: use default python interpreter
+
+Don't try to use python2 if available, use the python interpreter available
+in ouput/host/bin/python whateverer the python version is.
+
+Signed-off-by: Romain Naour <romain.naour@gmail.com>
+---
+ configure | 12 ------------
+ 1 file changed, 12 deletions(-)
+
+diff --git a/configure b/configure
+index eeb8d081d34..6014a982f47 100755
+--- a/configure
++++ b/configure
+@@ -2,16 +2,4 @@
+ 
+ script="$(dirname $0)"/src/bootstrap/configure.py
+ 
+-try() {
+-    cmd=$1
+-    shift
+-    T=$($cmd --version 2>/dev/null)
+-    if [ $? -eq 0 ]; then
+-        exec $cmd "$script" "$@"
+-    fi
+-}
+-
+-try python2.7 "$@"
+-try python27 "$@"
+-try python2 "$@"
+ exec python $script "$@"
+-- 
+2.25.4
+
diff --git a/package/rust/rust.mk b/package/rust/rust.mk
index 5d14fc6682..25153966f2 100644
--- a/package/rust/rust.mk
+++ b/package/rust/rust.mk
@@ -17,9 +17,16 @@ HOST_RUST_DEPENDENCIES = \
 	host-rust-bin \
 	host-cargo-bin \
 	host-openssl \
-	host-python \
 	$(BR2_CMAKE_HOST_DEPENDENCY)
 
+ifeq ($(BR2_PACKAGE_PYTHON3),y)
+HOST_RUST_PYTHON_VERSION = $(PYTHON3_VERSION_MAJOR)
+HOST_RUST_DEPENDENCIES += host-python3
+else
+HOST_RUST_PYTHON_VERSION = $(PYTHON_VERSION_MAJOR)
+HOST_RUST_DEPENDENCIES += host-python
+endif
+
 HOST_RUST_VERBOSITY = $(if $(VERBOSE),2,0)
 
 # Some vendor crates contain Cargo.toml.orig files. The associated
@@ -44,7 +51,7 @@ define HOST_RUST_CONFIGURE_CMDS
 		echo 'target = ["$(RUSTC_TARGET_NAME)"]'; \
 		echo 'cargo = "$(HOST_CARGO_BIN_DIR)/cargo/bin/cargo"'; \
 		echo 'rustc = "$(HOST_RUST_BIN_DIR)/rustc/bin/rustc"'; \
-		echo 'python = "$(HOST_DIR)/bin/python2"'; \
+		echo 'python = "$(HOST_DIR)/bin/python$(HOST_RUST_PYTHON_VERSION)"'; \
 		echo 'submodules = false'; \
 		echo 'vendor = true'; \
 		echo 'compiler-docs = false'; \
@@ -61,12 +68,12 @@ define HOST_RUST_CONFIGURE_CMDS
 endef
 
 define HOST_RUST_BUILD_CMDS
-	cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python2 x.py build
+	cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python$(HOST_RUST_PYTHON_VERSION) x.py build
 endef
 
 define HOST_RUST_INSTALL_CMDS
-	cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python2 x.py dist
-	cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python2 x.py install
+	cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python$(HOST_RUST_PYTHON_VERSION) x.py dist
+	cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python$(HOST_RUST_PYTHON_VERSION) x.py install
 endef
 
 $(eval $(host-generic-package))
-- 
2.25.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Buildroot] [for-next] package/rust: allow using python3 interpreter
  2020-05-26 18:20 [Buildroot] [for-next] package/rust: allow using python3 interpreter Romain Naour
@ 2020-05-27 10:27 ` Titouan Christophe
  2020-05-29 21:14 ` Thomas Petazzoni
  1 sibling, 0 replies; 6+ messages in thread
From: Titouan Christophe @ 2020-05-27 10:27 UTC (permalink / raw)
  To: buildroot

Hello Romain and all,
On 26/05/20 20:20, Romain Naour wrote:
> Fedora packaging use python3 as python interpreter since rust 1.24.0 [1]
> by removing python2 tests from configure script [2].
> 
> Using python3 will help to remove python2 in a near future.
> 
> [1] https://src.fedoraproject.org/rpms/rust/c/216b2d27716bf1031c526dbd0e01a1fa8e6d5aa2
> [2] https://src.fedoraproject.org/rpms/rust/blob/216b2d27716bf1031c526dbd0e01a1fa8e6d5aa2/f/rust.spec#_314
> 
> Signed-off-by: Romain Naour <romain.naour@gmail.com>
> Cc: Titouan Christophe <titouan.christophe@railnova.eu>
> Cc: Arnout Vandecappelle <arnout@mind.be>
> Cc: Patrick Havelange <patrick.havelange@essensium.com>

Tested-by: Titouan Christophe <titouan.christophe@railnova.eu>

> ---
>   ...igure-use-default-python-interpreter.patch | 37 +++++++++++++++++++
>   package/rust/rust.mk                          | 17 ++++++---
>   2 files changed, 49 insertions(+), 5 deletions(-)
>   create mode 100644 package/rust/0002-configure-use-default-python-interpreter.patch
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [for-next] package/rust: allow using python3 interpreter
  2020-05-26 18:20 [Buildroot] [for-next] package/rust: allow using python3 interpreter Romain Naour
  2020-05-27 10:27 ` Titouan Christophe
@ 2020-05-29 21:14 ` Thomas Petazzoni
  2020-05-29 21:45   ` Romain Naour
  1 sibling, 1 reply; 6+ messages in thread
From: Thomas Petazzoni @ 2020-05-29 21:14 UTC (permalink / raw)
  To: buildroot

Hello Romain,

On Tue, 26 May 2020 20:20:37 +0200
Romain Naour <romain.naour@gmail.com> wrote:

> Fedora packaging use python3 as python interpreter since rust 1.24.0 [1]
> by removing python2 tests from configure script [2].
> 
> Using python3 will help to remove python2 in a near future.
> 
> [1] https://src.fedoraproject.org/rpms/rust/c/216b2d27716bf1031c526dbd0e01a1fa8e6d5aa2
> [2] https://src.fedoraproject.org/rpms/rust/blob/216b2d27716bf1031c526dbd0e01a1fa8e6d5aa2/f/rust.spec#_314
> 
> Signed-off-by: Romain Naour <romain.naour@gmail.com>
> Cc: Titouan Christophe <titouan.christophe@railnova.eu>
> Cc: Arnout Vandecappelle <arnout@mind.be>
> Cc: Patrick Havelange <patrick.havelange@essensium.com>

Thanks, I have applied to next, but I have a few comments/questions,
see below.

> diff --git a/package/rust/0002-configure-use-default-python-interpreter.patch b/package/rust/0002-configure-use-default-python-interpreter.patch
> new file mode 100644
> index 0000000000..34d97bb4cf
> --- /dev/null
> +++ b/package/rust/0002-configure-use-default-python-interpreter.patch
> @@ -0,0 +1,37 @@
> +From aca7abb537f5caf1c9f027cf65dd0f53fb664e73 Mon Sep 17 00:00:00 2001
> +From: Romain Naour <romain.naour@gmail.com>
> +Date: Tue, 26 May 2020 18:24:25 +0200
> +Subject: [PATCH] configure: use default python interpreter
> +
> +Don't try to use python2 if available, use the python interpreter available
> +in ouput/host/bin/python whateverer the python version is.
> +
> +Signed-off-by: Romain Naour <romain.naour@gmail.com>
> +---
> + configure | 12 ------------
> + 1 file changed, 12 deletions(-)
> +
> +diff --git a/configure b/configure
> +index eeb8d081d34..6014a982f47 100755
> +--- a/configure
> ++++ b/configure
> +@@ -2,16 +2,4 @@
> + 
> + script="$(dirname $0)"/src/bootstrap/configure.py
> + 
> +-try() {
> +-    cmd=$1
> +-    shift
> +-    T=$($cmd --version 2>/dev/null)
> +-    if [ $? -eq 0 ]; then
> +-        exec $cmd "$script" "$@"
> +-    fi
> +-}
> +-
> +-try python2.7 "$@"
> +-try python27 "$@"
> +-try python2 "$@"
> + exec python $script "$@"

Shouldn't we try to find an upstreamable solution here, such as perhaps
a PYTHON environment variable, or an argument to configure that allows
to specify the path to the Python interpreter ?

But in fact, this path to the Python interpreter is already in the
config.toml file that we generate, why isn't this path used ?

> diff --git a/package/rust/rust.mk b/package/rust/rust.mk
> index 5d14fc6682..25153966f2 100644
> --- a/package/rust/rust.mk
> +++ b/package/rust/rust.mk
> @@ -17,9 +17,16 @@ HOST_RUST_DEPENDENCIES = \
>  	host-rust-bin \
>  	host-cargo-bin \
>  	host-openssl \
> -	host-python \
>  	$(BR2_CMAKE_HOST_DEPENDENCY)
>  
> +ifeq ($(BR2_PACKAGE_PYTHON3),y)
> +HOST_RUST_PYTHON_VERSION = $(PYTHON3_VERSION_MAJOR)
> +HOST_RUST_DEPENDENCIES += host-python3
> +else
> +HOST_RUST_PYTHON_VERSION = $(PYTHON_VERSION_MAJOR)
> +HOST_RUST_DEPENDENCIES += host-python
> +endif

I think we should start inverting this logic, i.e use host-python3 by
default if there is no python interpreter selected for the target. We
should do that not only here, but in all packages that have a logic
like that: python3 should become our default, and python2 should become
the exception.

Thanks!

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [for-next] package/rust: allow using python3 interpreter
  2020-05-29 21:14 ` Thomas Petazzoni
@ 2020-05-29 21:45   ` Romain Naour
  2020-05-31 13:10     ` Thomas Petazzoni
  0 siblings, 1 reply; 6+ messages in thread
From: Romain Naour @ 2020-05-29 21:45 UTC (permalink / raw)
  To: buildroot

Hi Thomas,

Le 29/05/2020 ? 23:14, Thomas Petazzoni a ?crit?:
> Hello Romain,
> 
> On Tue, 26 May 2020 20:20:37 +0200
> Romain Naour <romain.naour@gmail.com> wrote:
> 
>> Fedora packaging use python3 as python interpreter since rust 1.24.0 [1]
>> by removing python2 tests from configure script [2].
>>
>> Using python3 will help to remove python2 in a near future.
>>
>> [1] https://src.fedoraproject.org/rpms/rust/c/216b2d27716bf1031c526dbd0e01a1fa8e6d5aa2
>> [2] https://src.fedoraproject.org/rpms/rust/blob/216b2d27716bf1031c526dbd0e01a1fa8e6d5aa2/f/rust.spec#_314
>>
>> Signed-off-by: Romain Naour <romain.naour@gmail.com>
>> Cc: Titouan Christophe <titouan.christophe@railnova.eu>
>> Cc: Arnout Vandecappelle <arnout@mind.be>
>> Cc: Patrick Havelange <patrick.havelange@essensium.com>
> 
> Thanks, I have applied to next, but I have a few comments/questions,
> see below.
> 
>> diff --git a/package/rust/0002-configure-use-default-python-interpreter.patch b/package/rust/0002-configure-use-default-python-interpreter.patch
>> new file mode 100644
>> index 0000000000..34d97bb4cf
>> --- /dev/null
>> +++ b/package/rust/0002-configure-use-default-python-interpreter.patch
>> @@ -0,0 +1,37 @@
>> +From aca7abb537f5caf1c9f027cf65dd0f53fb664e73 Mon Sep 17 00:00:00 2001
>> +From: Romain Naour <romain.naour@gmail.com>
>> +Date: Tue, 26 May 2020 18:24:25 +0200
>> +Subject: [PATCH] configure: use default python interpreter
>> +
>> +Don't try to use python2 if available, use the python interpreter available
>> +in ouput/host/bin/python whateverer the python version is.
>> +
>> +Signed-off-by: Romain Naour <romain.naour@gmail.com>
>> +---
>> + configure | 12 ------------
>> + 1 file changed, 12 deletions(-)
>> +
>> +diff --git a/configure b/configure
>> +index eeb8d081d34..6014a982f47 100755
>> +--- a/configure
>> ++++ b/configure
>> +@@ -2,16 +2,4 @@
>> + 
>> + script="$(dirname $0)"/src/bootstrap/configure.py
>> + 
>> +-try() {
>> +-    cmd=$1
>> +-    shift
>> +-    T=$($cmd --version 2>/dev/null)
>> +-    if [ $? -eq 0 ]; then
>> +-        exec $cmd "$script" "$@"
>> +-    fi
>> +-}
>> +-
>> +-try python2.7 "$@"
>> +-try python27 "$@"
>> +-try python2 "$@"
>> + exec python $script "$@"
> 
> Shouldn't we try to find an upstreamable solution here, such as perhaps
> a PYTHON environment variable, or an argument to configure that allows
> to specify the path to the Python interpreter ?
> 
> But in fact, this path to the Python interpreter is already in the
> config.toml file that we generate, why isn't this path used ?

humm, It seems that this configure script is not used at all by rust package
since we use directly x.py...
So we can just drop this patch.

> 
>> diff --git a/package/rust/rust.mk b/package/rust/rust.mk
>> index 5d14fc6682..25153966f2 100644
>> --- a/package/rust/rust.mk
>> +++ b/package/rust/rust.mk
>> @@ -17,9 +17,16 @@ HOST_RUST_DEPENDENCIES = \
>>  	host-rust-bin \
>>  	host-cargo-bin \
>>  	host-openssl \
>> -	host-python \
>>  	$(BR2_CMAKE_HOST_DEPENDENCY)
>>  
>> +ifeq ($(BR2_PACKAGE_PYTHON3),y)
>> +HOST_RUST_PYTHON_VERSION = $(PYTHON3_VERSION_MAJOR)
>> +HOST_RUST_DEPENDENCIES += host-python3
>> +else
>> +HOST_RUST_PYTHON_VERSION = $(PYTHON_VERSION_MAJOR)
>> +HOST_RUST_DEPENDENCIES += host-python
>> +endif
> 
> I think we should start inverting this logic, i.e use host-python3 by
> default if there is no python interpreter selected for the target. We
> should do that not only here, but in all packages that have a logic
> like that: python3 should become our default, and python2 should become
> the exception.

Yes, with this change we can remove python3-<module> added to provide python3
modules. I hope packages that still use python2 will only require the python2
interpreter without any additional modules.

Best regards,
Romain


> 
> Thanks!
> 
> Thomas
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [for-next] package/rust: allow using python3 interpreter
  2020-05-29 21:45   ` Romain Naour
@ 2020-05-31 13:10     ` Thomas Petazzoni
  2020-05-31 14:12       ` Romain Naour
  0 siblings, 1 reply; 6+ messages in thread
From: Thomas Petazzoni @ 2020-05-31 13:10 UTC (permalink / raw)
  To: buildroot

On Fri, 29 May 2020 23:45:23 +0200
Romain Naour <romain.naour@gmail.com> wrote:

> > Shouldn't we try to find an upstreamable solution here, such as perhaps
> > a PYTHON environment variable, or an argument to configure that allows
> > to specify the path to the Python interpreter ?
> > 
> > But in fact, this path to the Python interpreter is already in the
> > config.toml file that we generate, why isn't this path used ?  
> 
> humm, It seems that this configure script is not used at all by rust package
> since we use directly x.py...
> So we can just drop this patch.

Could you send a follow-up patch ?

> >> +ifeq ($(BR2_PACKAGE_PYTHON3),y)
> >> +HOST_RUST_PYTHON_VERSION = $(PYTHON3_VERSION_MAJOR)
> >> +HOST_RUST_DEPENDENCIES += host-python3
> >> +else
> >> +HOST_RUST_PYTHON_VERSION = $(PYTHON_VERSION_MAJOR)
> >> +HOST_RUST_DEPENDENCIES += host-python
> >> +endif  
> > 
> > I think we should start inverting this logic, i.e use host-python3 by
> > default if there is no python interpreter selected for the target. We
> > should do that not only here, but in all packages that have a logic
> > like that: python3 should become our default, and python2 should become
> > the exception.  
> 
> Yes, with this change we can remove python3-<module> added to provide python3
> modules. I hope packages that still use python2 will only require the python2
> interpreter without any additional modules.

That is not what I meant. What I meant was to change:

ifeq ($(BR2_PACKAGE_PYTHON3),y)
HOST_RUST_PYTHON_VERSION = $(PYTHON3_VERSION_MAJOR)
HOST_RUST_DEPENDENCIES += host-python3
else
HOST_RUST_PYTHON_VERSION = $(PYTHON_VERSION_MAJOR)
HOST_RUST_DEPENDENCIES += host-python
endif  

to:

ifeq ($(BR2_PACKAGE_PYTHON),y)
HOST_RUST_PYTHON_VERSION = $(PYTHON_VERSION_MAJOR)
HOST_RUST_DEPENDENCIES += host-python
else
HOST_RUST_PYTHON_VERSION = $(PYTHON3_VERSION_MAJOR)
HOST_RUST_DEPENDENCIES += host-python3
endif  

i.e: our default becomes python3.

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Buildroot] [for-next] package/rust: allow using python3 interpreter
  2020-05-31 13:10     ` Thomas Petazzoni
@ 2020-05-31 14:12       ` Romain Naour
  0 siblings, 0 replies; 6+ messages in thread
From: Romain Naour @ 2020-05-31 14:12 UTC (permalink / raw)
  To: buildroot

Hello Thomas,

Le 31/05/2020 ? 15:10, Thomas Petazzoni a ?crit?:
> On Fri, 29 May 2020 23:45:23 +0200
> Romain Naour <romain.naour@gmail.com> wrote:
> 
>>> Shouldn't we try to find an upstreamable solution here, such as perhaps
>>> a PYTHON environment variable, or an argument to configure that allows
>>> to specify the path to the Python interpreter ?
>>>
>>> But in fact, this path to the Python interpreter is already in the
>>> config.toml file that we generate, why isn't this path used ?  
>>
>> humm, It seems that this configure script is not used at all by rust package
>> since we use directly x.py...
>> So we can just drop this patch.
> 
> Could you send a follow-up patch ?

http://patchwork.ozlabs.org/project/buildroot/patch/20200530134344.24976-1-romain.naour at gmail.com/

> 
>>>> +ifeq ($(BR2_PACKAGE_PYTHON3),y)
>>>> +HOST_RUST_PYTHON_VERSION = $(PYTHON3_VERSION_MAJOR)
>>>> +HOST_RUST_DEPENDENCIES += host-python3
>>>> +else
>>>> +HOST_RUST_PYTHON_VERSION = $(PYTHON_VERSION_MAJOR)
>>>> +HOST_RUST_DEPENDENCIES += host-python
>>>> +endif  
>>>
>>> I think we should start inverting this logic, i.e use host-python3 by
>>> default if there is no python interpreter selected for the target. We
>>> should do that not only here, but in all packages that have a logic
>>> like that: python3 should become our default, and python2 should become
>>> the exception.  
>>
>> Yes, with this change we can remove python3-<module> added to provide python3
>> modules. I hope packages that still use python2 will only require the python2
>> interpreter without any additional modules.
> 
> That is not what I meant. What I meant was to change:
> 
> ifeq ($(BR2_PACKAGE_PYTHON3),y)
> HOST_RUST_PYTHON_VERSION = $(PYTHON3_VERSION_MAJOR)
> HOST_RUST_DEPENDENCIES += host-python3
> else
> HOST_RUST_PYTHON_VERSION = $(PYTHON_VERSION_MAJOR)
> HOST_RUST_DEPENDENCIES += host-python
> endif  
> 
> to:
> 
> ifeq ($(BR2_PACKAGE_PYTHON),y)
> HOST_RUST_PYTHON_VERSION = $(PYTHON_VERSION_MAJOR)
> HOST_RUST_DEPENDENCIES += host-python
> else
> HOST_RUST_PYTHON_VERSION = $(PYTHON3_VERSION_MAJOR)
> HOST_RUST_DEPENDENCIES += host-python3
> endif  
> 
> i.e: our default becomes python3.

Ok, I guess this can be done in a patch series that also use host-python3 by
default for python packages.

Best regards,
Romain


> 
> Thomas
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-05-31 14:12 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-26 18:20 [Buildroot] [for-next] package/rust: allow using python3 interpreter Romain Naour
2020-05-27 10:27 ` Titouan Christophe
2020-05-29 21:14 ` Thomas Petazzoni
2020-05-29 21:45   ` Romain Naour
2020-05-31 13:10     ` Thomas Petazzoni
2020-05-31 14:12       ` Romain Naour

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.