-
-
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
Add generic spksrc.supported.mk #6002
Conversation
@mreid-tt and @hgy59 while trickier than it looks this code fixes the dependency evaluation duration (current 3m20s as expected). I'll pursue this question to remove code duplication in makefiles and overall simplification where possible. My intent is to include other targets, |
@hgy59 any interest in updating dotnet as well? As that would require more in-depth changes to it... |
@hgy59 and @mreid-tt working on long overdue major simplifications to the Basically it does the following:
As mentionned, there's still testing to be done, along with further optimizing the code. But your initial thoughts on it would be welcomed to see if any gaps have been overlooked. My hope from here is that future maintenance will be simplified thus allowing easier inclusion of other longer term goals, mainly related to python wheel building complexity for instance (while not related, overall code simplification and clean-up will ease integrating subsequent changes). Thoughts on this welcomed. |
@th0ma7, big thanks for your awesome work on optimizing spksrc's core. Just a heads up, I don't have a local environment for testing. I rely solely on building and publishing from GitHub. But hey, I'm here to help out in any way I can with a little guidance from you. Even though some of the kernel-level stuff goes over my head, I'm still keen to chip in where possible. |
You really first need an environment to play with. Worst case if you get to install an Ubuntu using WSL on windows would be a start, from there following the lxc howto on our wiki. I can assist over discord as needed. |
Thank you for your support. I primarily use a Mac with Apple Silicon for my computing needs. Consequently, when I install Ubuntu via VMware, it's the ARM version. While this setup works well for spkrepo, I've discovered that spksrc necessitates an x86 platform, as indicated in the wiki. Hence, I currently lack a local environment for spksrc. If there's a workaround for ARM, I'd welcome further discussion on Discord. |
Currently broken part of my last set of changes yesterday night, will let you know once resolved. |
Now fixed, testing undergoing. There is most probably still a few loose-ends to be catched-up. Also started documenting every calls to confirm things are working as expected... If anyone has some idea on how to do this, having a github-action rule that "TEST" all the common calls when an |
@hgy59 and @mreid-tt and @SynoCommunity/developers I'd appreciate if you could try-out building a few packages for testing using the current set of changes this PR involves. It is a major re-factor of the code to simplify and standardize when ever possible. The latest bits I'm including is a self-test mechanism to confirm all functionalities still work with no error. My hope is to eventually automate it through github-action so when ever a change is identified in Besides adding to the testing facility I believe I'm now really close to the finishing line. I do expect to identify a few remaining issues as I add features to the testing facility (which is the reason for) but overall things looks fairly good now. All in all, if you can test this and let me know remaining bits that needs adressing would be great. Also if you have additional ideas for more in-depth self-testing facility would be nice to hear from you (i.e. |
@th0ma7 Could you provide a TLDR version of what this does? And what to test? |
@Safihre certainly, here's a few highlights (to be added in top summary):
So all in all, major refactory but most importantly major clean-up of the code in hope to simplify future maintenance. |
regarding the working on homeassistant package I wanted to create dedicated wheels with (temp) diyspk Makefiles. When using pre-built python in
And can be fixed like this:
In the context of this PR you should fix this too, as it could probably benefit of the new variable Another cleanup proposal: |
@hgy59 now rebased against master - done. |
@hgy59 will definitively look at it.
Well, further reading, it should all be replaced with Let me know if you find other things that doesn't work on this branch in comparison with master. Considering the depth of the changes I'll take all the testing assistance possible (in hope the testing facility help in finding them). |
@th0ma7 one issue found:
this affects all ffmpeg and the imagemagick package.
it is using |
@th0ma7 another issue, not related to this PR
|
@hgy59 both meson + cmake using ninja are now fixed, thnx for identifying it. Also fixed gateone while at it. |
@hgy59 I've now migrated the framework to using makefile default
Also now fixed. EDIT: And also, while I had fixed |
@hgy59 I'm now ready to merge this PR. I cannot test publishing although code in theory did not change. This will then allow me to pursue work on the python311 update (#6040). Note that I expect that something, somehow, will not work as expected as this PR is quite invasive. Although the current Any objections before I merge this? |
@th0ma7 thanks for your huge and great work. BTW I didn't figure out what you really solved with "allow |
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
Thnx, now fingers crossed nothing breaks.
This is because when
Instead of enforcing within the code a
So with this train of thoughts, you could probably now delete the |
Just so we know as reference, invoking a full
And while at it, @hgy59 thnx for the review. |
- make publish-arch-* must include make arch-* (broken by SynoCommunity#6002)
- make publish-arch-* must include make arch-* (broken by #6002)
- avoid the make command and the list of all packages in the output - this is a leftover of PR SynoCommunity#6002
* kernel.mk: First attempt to fix build issue since #6002 * kernel.mk: Include changes from PR #5790 to include new kernels * kernel.mk: Update to using actual DSM-7.2 kernel files * kernel.mk: Filter out unsupported kernel archs * kernel: Remove DSM-7.1 fixes not applicable anymore on DSM-7.2 * synokernel-cdrom: Bump package version and mark arch as unsupported * synokernel-usbserial: Bump spk vers. and mark arch as unsupported * kernel.mk: Yet another round of fixes * kernel.mk: Other round of fixes simplifying the overall processing * spk.mk: Oversight missing tc_vars.meson into the spkclean call * kernel.mk: Other round of fixes and optimizations * kernel.mk: Fix kernel source tree remove post module build * kernel.mk: Fix building generic arch -> skip at toolchain * kernel.mk: Fix kernel build-tree removal after modules are built * kernel.mk: Remove dependency-kernel-list call * kernel.mk: Fix re-installing toolchain at clean call * kernel.mk: Layout fix * kernel.mk: Remove now unecessary SUPPORTED_KERNEL_VERSIONS * kernel.mk: Fix building rtd1619b (and partial fix for epyc7002) * kernel.mk: Fix epyc7002 and rtd1619b kernel configuration path * synokernel-*: Only remain epyc7002 which does not build yet
* fix output of make dependency-list - avoid the make command and the list of all packages in the output - this is a leftover of PR #6002 * remove global dependency-flat target - dependency-flat is an internal target used dependency-list, dependency-tree and for some internal targets * znc: fix for dependency-list * avoid duplicates in dependency-flat * build-action: fix prepare - fix rename of spk names: remove only package with exact name from list * remove dependency-kernel-list - this was introduced in #5095 - BUT: we must not download kernel sources in prepare.sh, just as we don't do with toolchains - if we want to optimize the download, we could cache the (extracted) kernel sources as we do for toolchains but since the cache is already at its limit, it is not possible to cache kernel sources without dropping other cached data.
- build with CMake (disable ninja) - mympd build was broken since CMAKE_USE_NINJA default value changed from 0 to 1 in SynoCommunity#6002
* mympd: fix build - build with CMake (disable ninja) - mympd build was broken since CMAKE_USE_NINJA default value changed from 0 to 1 in #6002 * fix log output of meson build path
Description
TL;DR;
Rework, optimize and simplify generic
mk
calls involving a major refactory but most importantly major clean-up of the code in hope to simplify future maintenance:spksrc.common-rules.mk
. This invovles*clean
,dependency-*
,changelog
and a newrustup
such as in getting the rustc info usingmake rustup show
for instance.make all-supported
andmake all-latest
from anywhere applicable (i.e.cross
,spk
anddiyspk
)mk/*
)DEPENDS
fromtoolchain
Self-test facility calls (as of March 6th, more to be included):
make testall
make test clean
make test depend
make test digests
make test download
make test toolchain
make test test-dependency-*
TODO:
make test rust
make test cmake
make test gnu-configure
make test meson
make test native
Superseeds #5998
Checklist
all-supported
completed successfullyType of change
TODO
cc
cmake
dotnet
go
install-resources
meson
rust
spk
Testing
Toolchain -> COMPLETE
~/spksrc$ make -C toolchain/syno-x64-7.1
~/spksrc$ make -C toolchain/syno-x64-7.1 clean
~/spksrc/toolchain/syno-x64-7.1$ make
~/spksrc/toolchain/syno-x64-7.1$ make clean
~/spksrc/toolchain/syno-x64-7.1$ make changelog
native
-> COMPLETE~/spksrc$ make -C native/nasm
~/spksrc$ make -C native/nasm clean
~/spksrc/native/nasm$ make
~/spksrc/native/nasm$ make clean
~/spksrc/native/elixir$ make changelog
~/spksrc/native/elixir$ make dependency-list
~/spksrc/native/elixir$ make dependency-flat
~/spksrc/native/elixir$ make dependency-tree
cross
-> COMPLETEcc
-> test withxz
rust
-> test withbat
cmake
-> test withlz4
cmake
+ninja
-> test withzstd
cmake
+main-depends.mk
+ unsupported -> test withintel-gmmlib
~/spksrc/cross/<app>$ make arch-qoriq-6.2.4
~/spksrc$ make -C cross/<app> arch-qoriq-6.2.4
~/spksrc/cross/<app>$ make TCVERSION=6.2.4 ARCH=qoriq
~/spksrc$ make -C cross/<app> TCVERSION=6.2.4 ARCH=qoriq
~/spksrc/cross/<app>$ PARALLEL_MAKE=max make -j4 all-supported
~/spksrc$ PARALLEL_MAKE=max make -C cross/<app> -j4 all-supported
===>> confirmed native get built first
===>> confirmed status-build.log with system-time at end of build (conditional to ~/spksrc/make setup)
~/spksrc/cross/<app>$ make clean
~/spksrc$ make -C cross/bat clean
~/spksrc/cross/<app>$ make changelog
~/spksrc/cross/<app>$ make dependency-flat
~/spksrc/cross/<app>$ make dependency-list
~/spksrc/cross/<app>$ make dependency-tree
~/spksrc/cross/<app>$ make rustup show