Skip to contentSkip to conversation

package/python3: fix config directory pattern

PATCH Applied Vincent Fazio 2 participants 5 messages Jun 9, 2024

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 package/python3: fix config directory pattern

If a platform triplet is not detected during the configure stage, the config directory (LIBPL) defaults to config-$LDVERSION.

In this scenario, the PYTHON3_REMOVE_USELESS_FILES hook would fail due to find incorrectly expecting a second dash and then the triplet.

Now, we glob anything after the version which will match in both cases.

Fixes 54d48c8cad ("package/python3: miscellaneous fixups")
---
 package/python3/python3.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/python3/python3.mk +1 -1
index a0b9ed4437..a82bc47a57 100644
@@ -204,7 +204,7 @@ PYTHON3_CONF_OPTS += \
 define PYTHON3_REMOVE_USELESS_FILES
 	rm -f $(TARGET_DIR)/usr/bin/python$(PYTHON3_VERSION_MAJOR)-config
 	rm -f $(TARGET_DIR)/usr/bin/python3-config
-	find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/config-$(PYTHON3_VERSION_MAJOR)-*/ \
+	find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/config-$(PYTHON3_VERSION_MAJOR)*/ \
 		-type f -not -name Makefile -exec rm -rf {} \;
 	find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/ -type d \
 		-name __pycache__ -exec rm -rf {} \;
Signature · 6 lines
2.34.1

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
#1 lore raw

Vincent, All,

On 2024-06-08 22:25 -0500, Vincent Fazio spake thusly:

Quoted 1 line

If a platform triplet is not detected during the configure stage,

Could you share a defconfig that exhibits the issue, please?

Regards,
Yann E. MORIN.

Quoted 35 lines

the
config directory (LIBPL) defaults to config-$LDVERSION.

In this scenario, the PYTHON3_REMOVE_USELESS_FILES hook would fail due to find incorrectly expecting a second dash and then the triplet.

Now, we glob anything after the version which will match in both cases.

Fixes 54d48c8cad ("package/python3: miscellaneous fixups")
---
 package/python3/python3.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/python3/python3.mk +1 -1
index a0b9ed4437..a82bc47a57 100644
@@ -204,7 +204,7 @@ PYTHON3_CONF_OPTS += \
 define PYTHON3_REMOVE_USELESS_FILES
 	rm -f $(TARGET_DIR)/usr/bin/python$(PYTHON3_VERSION_MAJOR)-config
 	rm -f $(TARGET_DIR)/usr/bin/python3-config
-	find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/config-$(PYTHON3_VERSION_MAJOR)-*/ \
+	find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/config-$(PYTHON3_VERSION_MAJOR)*/ \
 		-type f -not -name Makefile -exec rm -rf {} \;
 	find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/ -type d \
 		-name __pycache__ -exec rm -rf {} \;
Signature · 6 lines
2.34.1

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
Signature · 10 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
#2 lore raw

All,

Quoted 8 lines · Yann E. MORIN

Vincent, All,

On 2024-06-08 22:25 -0500, Vincent Fazio spake thusly:

Quoted 1 line

If a platform triplet is not detected during the configure stage,

Could you share a defconfig that exhibits the issue, please?

Here is one I ran last night when testing python 3.12.4 but also fails on 3.11.

```
BR2_xtensa=y
BR2_XTENSA_CUSTOM=y
BR2_XTENSA_OVERLAY_FILE="https://github.com/jcmvbkbc/xtensa-toolchain-build/raw/95291b7c39e6f790d0b2f062c945a630290f2c81/overlays/xtensa_dc233c.tar.gz"
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_XTENSA_LX60_UCLIBC_STABLE=y
BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"
BR2_SYSTEM_DHCP="eth0"
BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG)"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.18"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/xtensa-lx60/linux.config"
BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y
BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="Image"
BR2_LINUX_KERNEL_IMAGE_NAME="Image.elf"
BR2_PACKAGE_PYTHON3=y
BR2_TARGET_ROOTFS_INITRAMFS=y
# BR2_TARGET_ROOTFS_TAR is not set
BR2_PACKAGE_HOST_QEMU=y
BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y
BR2_PACKAGE_HOST_UBOOT_TOOLS=y
```

I think this is fixable in other ways, but would probably require extending Python's platform detection, which got rewritten in 3.13 and could be a hassle to maintain, especially since uClibc isn't technically supported upstream.

configure.ac code:

https://github.com/python/cpython/blob/35c799d79177b962ddace2fa068101465570a29a/configure.ac#L5755

PLATFORM_TRIPLET and MULTIARCH values drive this, however

https://github.com/python/cpython/blob/35c799d79177b962ddace2fa068101465570a29a/configure.ac#L1090

```
checking for the platform triplet based on compiler characteristics... none
checking for multiarch...

```
Quoted 41 lines

Regards,
Yann E. MORIN.

Quoted 31 lines

the
config directory (LIBPL) defaults to config-$LDVERSION.

In this scenario, the PYTHON3_REMOVE_USELESS_FILES hook would fail due to find incorrectly expecting a second dash and then the triplet.

Now, we glob anything after the version which will match in both cases.

Fixes 54d48c8cad ("package/python3: miscellaneous fixups")
---
 package/python3/python3.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/python3/python3.mk +1 -2
index a0b9ed4437..a82bc47a57 100644
@@ -204,7 +204,7 @@ PYTHON3_CONF_OPTS += \
 define PYTHON3_REMOVE_USELESS_FILES
      rm -f $(TARGET_DIR)/usr/bin/python$(PYTHON3_VERSION_MAJOR)-config
      rm -f $(TARGET_DIR)/usr/bin/python3-config
-     find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/config-$(PYTHON3_VERSION_MAJOR)-*/ \
+     find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/config-$(PYTHON3_VERSION_MAJOR)*/ \
              -type f -not -name Makefile -exec rm -rf {} \;
      find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/ -type d \
              -name __pycache__ -exec rm -rf {} \;
--

2.34.1

Quoted 4 lines

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

--
.-----------------.--------------------.------------------.--------------------.

Quoted 5 lines
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |

'------------------------------^-------^------------------^--------------------'

-Vincent
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

#3 lore raw
In reply to Vincent Fazio

Vincent, All,

On 2024-06-08 22:25 -0500, Vincent Fazio spake thusly:

Quoted 2 lines

If a platform triplet is not detected during the configure stage, the config directory (LIBPL) defaults to config-$LDVERSION.

I found the $LDVERSION to be a bit strange, even though that is actually what the code uses, but here, in the contect of a Buildrot commit log, it does not look right, as it rather hints at the version of ld, which does not make sense...

So I just dropped the LD to keep $VERSION, which makes mor esense I believe.

Quoted 4 lines

In this scenario, the PYTHON3_REMOVE_USELESS_FILES hook would fail due to find incorrectly expecting a second dash and then the triplet.

Now, we glob anything after the version which will match in both cases.

Woot, 11MiB dropped here! 👍

Quoted 1 line
Fixes 54d48c8cad ("package/python3: miscellaneous fixups")

In fact, it was already broken before that: master, which does not have 54d48c8cad, alrady suffered from that issue, except the error is ignore, as te find is in a sub-shell evaluated as the list for a for-loop.

Would you care to send the same fix for master, please?

Quoted 1 line

Applied to next, thanks.

Regards,
Yann E. MORIN.

Quoted 24 lines
---
 package/python3/python3.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/python3/python3.mk +1 -1
index a0b9ed4437..a82bc47a57 100644
@@ -204,7 +204,7 @@ PYTHON3_CONF_OPTS += \
 define PYTHON3_REMOVE_USELESS_FILES
 	rm -f $(TARGET_DIR)/usr/bin/python$(PYTHON3_VERSION_MAJOR)-config
 	rm -f $(TARGET_DIR)/usr/bin/python3-config
-	find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/config-$(PYTHON3_VERSION_MAJOR)-*/ \
+	find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/config-$(PYTHON3_VERSION_MAJOR)*/ \
 		-type f -not -name Makefile -exec rm -rf {} \;
 	find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/ -type d \
 		-name __pycache__ -exec rm -rf {} \;
Signature · 6 lines
2.34.1

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
Signature · 10 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
#4 lore raw

Yann, all

Quoted 22 lines · Yann E. MORIN

Vincent, All,

On 2024-06-08 22:25 -0500, Vincent Fazio spake thusly:

Quoted 2 lines

If a platform triplet is not detected during the configure stage, the config directory (LIBPL) defaults to config-$LDVERSION.

I found the $LDVERSION to be a bit strange, even though that is actually what the code uses, but here, in the contect of a Buildrot commit log, it does not look right, as it rather hints at the version of ld, which does not make sense...

So I just dropped the LD to keep $VERSION, which makes mor esense I believe.

Quoted 4 lines

In this scenario, the PYTHON3_REMOVE_USELESS_FILES hook would fail due to find incorrectly expecting a second dash and then the triplet.

Now, we glob anything after the version which will match in both cases.

Woot, 11MiB dropped here! 👍

Quoted 8 lines
Quoted 1 line
Fixes 54d48c8cad ("package/python3: miscellaneous fixups")

In fact, it was already broken before that: master, which does not have 54d48c8cad, alrady suffered from that issue, except the error is ignore, as te find is in a sub-shell evaluated as the list for a for-loop.

Would you care to send the same fix for master, please?

Sure thing: https://patchwork.ozlabs.org/project/buildroot/patch/[email protected]/

Quoted 34 lines
Quoted 1 line

Applied to next, thanks.

Regards,
Yann E. MORIN.

Quoted 20 lines
---
 package/python3/python3.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/python3/python3.mk +1 -2
index a0b9ed4437..a82bc47a57 100644
@@ -204,7 +204,7 @@ PYTHON3_CONF_OPTS += \
 define PYTHON3_REMOVE_USELESS_FILES
      rm -f $(TARGET_DIR)/usr/bin/python$(PYTHON3_VERSION_MAJOR)-config
      rm -f $(TARGET_DIR)/usr/bin/python3-config
-     find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/config-$(PYTHON3_VERSION_MAJOR)-*/ \
+     find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/config-$(PYTHON3_VERSION_MAJOR)*/ \
              -type f -not -name Makefile -exec rm -rf {} \;
      find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/ -type d \
              -name __pycache__ -exec rm -rf {} \;
--

2.34.1

Quoted 4 lines

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

--
.-----------------.--------------------.------------------.--------------------.

Quoted 5 lines
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |

'------------------------------^-------^------------------^--------------------'

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot