examples/sotest: Support packaged shared-library fixtures.#3526
examples/sotest: Support packaged shared-library fixtures.#3526aviralgarg05 wants to merge 1 commit into
Conversation
c0ea45a to
52dcaa6
Compare
|
@aviralgarg05 and this one here? |
|
@aviralgarg05 what about CMakeLists.txt doesn't it need to be modified as well? |
|
Sorry, I missed the matching |
0e0f392 to
469d1f8
Compare
469d1f8 to
76ab80f
Compare
7bb6f87 to
49d5f70
Compare
|
I checked the failing run, and this one does not seem to be caused by the patch itself. The failure is happening while the CI job tries to pull the shared container image from ghcr.io, before the actual build/test steps start. Since multiple matrix jobs are failing at that stage, this looks more like an infrastructure/network issue than a code issue in this PR. @acassis Can you pls help me understand if there is something wrong with my code |
Don't worry, it is a github failure, I just restart the Job |
5836877 to
f24da1e
Compare
linguini1
left a comment
There was a problem hiding this comment.
After reading the description and reviewing your code, I'm still uncertain what this PR is doing? Is this to make sotest a loadable application through nxpkg?
This PR includes Python scripts as part of the build process, which I remember was a contentious issue. Is it okay to enforce that the user has Python for this?
|
I pushed an update for this. The Python generators added by this PR are removed now. The shared fixture helper is now a small C host tool, and the CMake path no longer introduces Python into the build flow. Also, the goal here is not to make |
|
Can you explain what a "package-style fixture producer" is? I'm not sure I really understand, sorry. Also, please squash your commits. |
2ca1c72 to
40329b7
Compare
|
By “package-style fixture producer”, I mean the small host-side helper that generates the test package metadata and script files for the packaged sotest flow. In this case it takes the built shared-library artifacts and writes the fixture files used by nxpkg, so the packaged install/run path is exercised as part of the example instead of only the plain builtin layout. |
What is the packaged sotest flow? Like installing sotest from a package? |
|
Yes, exactly. |
|
It doesn't really seem sustainable to have host side tools for every application in order to generate these files. It should probably be a central build tool that works for making any package compatible with nxpkg |
|
For this PR, I was trying to keep the scope limited to replacing the Python dependency in the existing example-local fixture path. I agree the better long-term direction is a shared build helper for nxpkg-compatible fixture generation, instead of per-example host tools. I can keep this PR scoped as-is and we can follow up with that cleanup separately. |
But that doesn't make sense, because this PR is what added the Python dependency? So there was nothing to remove, just a change in your implementation of the patch.
I think it would be better to start your feature correctly to make it easier for you to package more applications later, but if it's easier then it's okay to put this one in using C-based host tools. Also another thing for later would be to included a SHA hash library instead of rolling your own. But I think it's fine for this PR! |
|
That’s fair |
|
You should squash your commit of removing the Python scripts since then it will just be that you added a C script to begin with. |
735a022 to
6845d7f
Compare
Extend the examples/sotest packaging path so the shared-library test fixtures can also be prepared through nxpkg-style package artifacts. Generate shared-index.json and pkgsotest.nsh from the built modprint and sotest shared objects, recording the correct target arch/compat metadata and SHA-256 digests for the packaged shared-library fixtures. Allow sotest to run in either its existing builtin-ROMFS flow or from explicit shared-library paths, with a --mount helper mode for preparing the builtin test mount separately. Keep the paired fixture outputs in one grouped make step so parallel builds do not re-enter the generator independently. This makes the sotest shared-library example usable as a package-style fixture producer for the Dynamic ELF/nxpkg series, useful for validating the shared-library side of the packaging flow where the loader should consume installed artifacts rather than only the default builtin test paths. The existing builtin-ROMFS path is preserved with no regression to the normal sotest example flow. Assisted-by: Claude:claude-sonnet-5 Assisted-by: OpenAI Codex:gpt-5.6-sol Signed-off-by: aviralgarg05 <gargaviral99@gmail.com>
6845d7f to
88a3ebb
Compare
|
Updated as one signed commit. The fixture generator is a C host tool used by both Make and CMake, and the generated script seeds both the original catalog location and nxpkg’s persistent-root location. On the ESP32-S3 target, |
Summary
Extend
examples/sotestso its built shared objects can be used as generatednxpkgtest fixtures.A small C host helper generates
shared-index.jsonandpkgsotest.nshfromthe built
modprintandsotestartifacts. The generated metadata containsthe target architecture, compatibility value, and SHA-256 digests.
The existing builtin-ROMFS flow remains available. The test application can
also receive explicit shared-library paths, allowing the installed copies to
be exercised.
The generated script seeds both the original
/etc/nxpkg/index.jsoncataloglocation and #3642's default
/var/lib/nxpkg/index.jsnlocation. This keepsthe standalone fixture usable before and after the storage migration.
Impact
examples/sotest; a C host helper is used by Make and CMake.sotestinto a general end-user package orchange nxpkg runtime behavior.
Testing
Host:
xtensa-esp-elf-gcc 14.2.0(
esp-14.2.0_20241119)Target:
esp32s3-xiao:sotestVerification:
nuttx.binlink;sotest_artifactsbuild, including both loadableELFs, host helper, symbol table, catalog, script, and ROMFS;
bin/shared-index.json;bin/pkgsotest.nsh; andTesting logs before change:
Testing logs after change:
The full retained serial transcript should be attached with the signed update.
PR verification Self-Check