-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Review content of crossenv to respect build vs cross. #6437
Conversation
@th0ma7 I was hoping this would fix numpy for python312, but it doen't (still getting |
@hgy59 thnx for testing but it's not ready yet, I've only laid-down the foundation to have a reusable requirement mk file. I still have to:
Only once that is complete I should be ready to start looking further into |
@hgy59 still a bit of testing todo but I should be iches away from being ready to look in particular at the I'll let things run but changes done so far in this PR to the |
hey @th0ma7, looking forward to this PR. Looking at the build errors it seems that based on this python-greenlet/greenlet#392 (comment), they are caused by:
As such, I believe if you comment out this line your build should succeed:
|
I believe it is now complete and ready for testing. Only remaining item (unless github-action tells me otherwise): |
Suggested plan of actions:
Thoughts? |
@th0ma7 I have updated the comment in python-wheels packages related to the include of spksrc.python.mk. Please feel free to revert it, if it is not correct... |
@th0ma7 one thing I am missing when building single wheels with I guess we only need to add something like |
Python 3.13.2 is already released. EDIT: |
Yeah, I thought of that too. By default it gest collected when invoking a full standard build but not for neither crossenv-* or wheel-*. I can look into that. I wonder, would it make sense to have a per-wheel log in a sub-directory? or having a single wheel-arch-version.log and similarly a crossenv-arch-version.log created? maybe even only when invoking them directly (not sure i can do that)? That I'd add to this PR. |
Great work, @th0ma7! You might consider re-enabling |
@th0ma7 with my manylinux patch above, all wheels for x86_64 are correct and successfully installed. with the latest version, the wheels are now lacking the platform (linux) in the tag and the name
my working solution in spksrc.crossenv.mk (at runtime tested with x64 only)
I don't have another idea how to fix the build of wheels that use poetry-core build-system... |
Out of curiosity, if you rename the files to have a linux tag does that solve the issue? Also in the wheel log there is now a more verbose message related to the final renaming, maybe that's where the issue is? Away from my build system atm. |
@hgy59 I was finally able to reproduce your issue. I thought this was general but no, it is specific to poetry baased wheel builds. From my reading (and chatgpt'ing), other than manylinux option there could be worth testing :
As maylinux could have other side-effects, and there's no way of identifying poetry dependent wheels, an alternative would be interesting. EDIT: Adding
|
Hopefully, we can complete successful tests and get this merged, allowing us to move on to the |
❤️ with this, my homeassistant 2025.1.4 for x64 works. there are other wheels (beside numpy) that fail to build and the installer will take those from the index.
unfortunately I can test homeassistant with py312 on x64-71 only. |
mk/spksrc.common.mk
Outdated
@@ -123,11 +123,17 @@ endif | |||
# Always send PSTAT output to proper log file | |||
# independantly from active Makefile location | |||
ifeq ($(filter cross diyspk spk,$(shell basename $(dir $(abspath $(dir $$PWD))))),) | |||
CROSSENV_LOG = $(shell pwdx $$(ps -o ppid= $$(echo $$PPID)) | cut -f2 -d:)/crossenv-$(ARCH)-$(TCVERSION).log |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I expected to name the new log files
build-crossenv-*.log
build-wheel-*.log
without the build- prefix, I guess some clean* targets need an update.
but this can be done later...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried that first but the ordering wasn't optimal. Using build-<arch>-<tcversion>-crossenv.log
and build-<arch>-<tcversion>-wheel.log
would make things orderred when listing log files.
I suggest either using proposal above or trying current for a little while and reconvene later?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
your proposal sounds good, but as I said: no priority (I am longing for the merge)...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Unfortunately, the build log is (in my opinion) too detailed.
we could remove the logs like
===> Processing wheel for {packagename}
and
WARNING: Skipping download - pure python packaging disabled
and
WARNING: Skipping building pure Python wheel [{name}], version [{version}], type [pure] - pure python packaging disabled
And when skipping the build of wheels (due to existing *_done files) there are also a lot of obsolete logs.
===> make ARCH=x64 TCVERSION=7.1 REQUIREMENT="/spksrc/spk/homeassistant_2025/src/requirements-crossenv2.txt" REQUIREMENT_GOAL="wheel" requirement
===> Processing wheel for homeassistant
===> Processing requirement file [/spksrc/spk/homeassistant_2025/src/requirements-crossenv2.txt:aioesphomeapi==28.0.0]
===> make ARCH=x64 TCVERSION=7.1 REQUIREMENT="aioesphomeapi==28.0.0" WHEEL_TYPE="crossenv" REQUIREMENT_GOAL="wheel" requirement
===> Processing wheel for homeassistant
===> Processing requirement [aioesphomeapi==28.0.0]
===> make ARCH="x64" TCVERSION="7.1" WHEEL_NAME="aioesphomeapi" WHEEL_VERSION="28.0.0" WHEEL_TYPE="crossenv" WHEEL_URL="" wheel
make[5]: Nothing to be done for 'wheel'.
it is not only the amount of log output, it is mainly the time it takes to evaluate for each nothing to be done
.
This has lower priority and must not delay the merge of this PR.
@hgy59 and @mreid-tt I noted two things missing:
|
This allows for example to declare using gnuspe for using SPE (Signal Processing Engine) for instance for qoriq.
It sounds good for me to entirly skip the pure-python files. We could then copy the requirements-pure file to the wheelhouse folder as is. To ensure all pure requirements exist, a developer should once build with included pure-wheels for validation (or maybe we can add a pure-requirements check without downloading the wheels?). |
I'll look into the skipping of pure python requirement into a subsequent PR. This one has been undergoing long enough. |
When we revisit this, we may need to apply a patch to
As such, where we have this function call we would need to patch it to send an extra |
commit 24f512a Author: th0ma7 <[email protected]> Date: Sat Feb 15 08:34:59 2025 -0500 Review content of crossenv to respect build vs cross. (SynoCommunity#6437) * spksrc.requirement.mk: Unified method to process requirements files * Bump pakage versions to enforce github-action build processing * crossenv.mk: Basic unit testing functional - will fail to build * spksrc.wheel-*.mk: Complete REQUIREMENT removal to use WHEEL_URL * crossenv.mk: Revert to using $$(which ) to ensure full path * spk.mk: Include from top spk.mk the python-requirement.mk * py311-312: Convert crossenv requirement files to use build:cross * requirement.mk: Move include from spk to wheel-env.mk * crossenv: Allow non-build:cross def and use $* for dep install * py312-313: Move all $(TC_GCC) dependent wheels below python.mk * py311-313: Migrate crossenv definitions files to use build:cross * py312-313: Temporary disable numpy * python*.mk: Fix crossenv PATH definition * python: Remove dependencies to native/python3* pip environment * python313-wheels: greenlet < 3.1 no longer supported * crossenv|wheel-compile.mk: Adjust PATH to handle ENV and duplicates * update comment related to WHEELS initialization * fix build of llfuse wheel - add llfuse to python312-wheels and python313-wheels - use -std=gnu11 for gcc < 5 * python312: update to v3.12.9 * python313: update to v3.13.2 * exclude llfuse for python313 - llfuse wheel fails to build with python313 * python: Enable crossenv|wheel logs and avoid renaming manylinux * crossenv.mk: Remove the manylinux2014 option as unecessary * wheel-install.mk: No longer manage manylinux * wheel+crossenv: Fix log redirection for crossenv and wheel builds * deluge+python312-wheels: Remove package bump * python311-wheels: Remove package bump * wheel-compile.mk: Fix issue of first pure-python wheel being skipped * py312-313: Add atom with its crossenv definition * crossenv.mk: Add --machine flag to fix poetry resulting filemame * py313: Remove atom==0.10.5 as not compatible * wheel-compile.mk: Manage false-positive relatively to crossenv * crossenv.mk: Use TC_TARGET official arch definition triplet This allows for example to declare using gnuspe for using SPE (Signal Processing Engine) for instance for qoriq. * common.mk: Rename crossenv and wheel build logs for proper sorting --------- Co-authored-by: hgy59 <[email protected]> commit 7d58e29 Author: hgy59 <[email protected]> Date: Sat Feb 15 10:15:56 2025 +0100 synocli-file: fix file guesser command 'file' (SynoCommunity#6452) - fixes SynoCommunity#6451 - version of cross/file and native/file must match to create compatible magic.mgc data file
hey @th0ma7, I believe this commit has broken our build process for non-Python packages. I was recently working with #6448 and saw the following failures:
Don't know if this is an easy fix but any reason it's trying to execute |
commit b496f58 Author: mreid-tt <[email protected]> Date: Mon Feb 17 06:02:41 2025 -0400 Revert "Squashed commit of the following:" This reverts commit 53485d9. commit 53485d9 Author: mreid-tt <[email protected]> Date: Mon Feb 17 06:00:55 2025 -0400 Squashed commit of the following: commit 24f512a Author: th0ma7 <[email protected]> Date: Sat Feb 15 08:34:59 2025 -0500 Review content of crossenv to respect build vs cross. (SynoCommunity#6437) * spksrc.requirement.mk: Unified method to process requirements files * Bump pakage versions to enforce github-action build processing * crossenv.mk: Basic unit testing functional - will fail to build * spksrc.wheel-*.mk: Complete REQUIREMENT removal to use WHEEL_URL * crossenv.mk: Revert to using $$(which ) to ensure full path * spk.mk: Include from top spk.mk the python-requirement.mk * py311-312: Convert crossenv requirement files to use build:cross * requirement.mk: Move include from spk to wheel-env.mk * crossenv: Allow non-build:cross def and use $* for dep install * py312-313: Move all $(TC_GCC) dependent wheels below python.mk * py311-313: Migrate crossenv definitions files to use build:cross * py312-313: Temporary disable numpy * python*.mk: Fix crossenv PATH definition * python: Remove dependencies to native/python3* pip environment * python313-wheels: greenlet < 3.1 no longer supported * crossenv|wheel-compile.mk: Adjust PATH to handle ENV and duplicates * update comment related to WHEELS initialization * fix build of llfuse wheel - add llfuse to python312-wheels and python313-wheels - use -std=gnu11 for gcc < 5 * python312: update to v3.12.9 * python313: update to v3.13.2 * exclude llfuse for python313 - llfuse wheel fails to build with python313 * python: Enable crossenv|wheel logs and avoid renaming manylinux * crossenv.mk: Remove the manylinux2014 option as unecessary * wheel-install.mk: No longer manage manylinux * wheel+crossenv: Fix log redirection for crossenv and wheel builds * deluge+python312-wheels: Remove package bump * python311-wheels: Remove package bump * wheel-compile.mk: Fix issue of first pure-python wheel being skipped * py312-313: Add atom with its crossenv definition * crossenv.mk: Add --machine flag to fix poetry resulting filemame * py313: Remove atom==0.10.5 as not compatible * wheel-compile.mk: Manage false-positive relatively to crossenv * crossenv.mk: Use TC_TARGET official arch definition triplet This allows for example to declare using gnuspe for using SPE (Signal Processing Engine) for instance for qoriq. * common.mk: Rename crossenv and wheel build logs for proper sorting --------- Co-authored-by: hgy59 <[email protected]> commit 7d58e29 Author: hgy59 <[email protected]> Date: Sat Feb 15 10:15:56 2025 +0100 synocli-file: fix file guesser command 'file' (SynoCommunity#6452) - fixes SynoCommunity#6451 - version of cross/file and native/file must match to create compatible magic.mgc data file commit 301dfb1 Author: mreid-tt <[email protected]> Date: Mon Feb 17 05:50:28 2025 -0400 Fix changelog commit ee79d1e Author: Brice FROMENTIN <[email protected]> Date: Wed Feb 12 11:11:24 2025 +0100 Update dotnet 8 -> 8.0.13 Update dotnet 9 -> 9.0.2 Use new URL download for dotnet 6 Update dotnet sdk 8 -> 8.0.406
Description
Review content of crossenv to respect build vs cross.
crossenv/build
andcrossenv/cross
crossenv|wheel-<arch>-<tcversion>.log
Closes #6430
Checklist
all-supported
completed successfullyType of change