On 15 Oct 2022, at 3:00, Russell Sim wrote:
But regarding the readme file being loaded at read time in the ASD file.
This dependency is not track but it's required to build the package.
This could be caught if the builds were hermetical, and this would also
help with issues related other static files that are missing from the
ASD file. At the moment it's just luck if anyone actually adds the
:STATIC-FILE components needed by their system. Is there some way to
help system authors avoid accidentally missing files? Since it looks
like a pretty common pattern to load the long-description from a readme.
This may be another place where the problem isn't an ASDF problem.
If programmers using ASDF used conventional CI and testing facilities, then they would have a test that would check a fresh copy of their systems out of the repository and that would build it the same way that a user would build it.
If users would build from the repo, and that repo contains the static file (as it always would), then the tests would pass.
If users would build from some distribution structure, on the other hand, and the test script did the same thing, the test script should fail if the :static-file
is in the system definition, but not in the distribution structure.
I haven't had time to check the above claim, but I do recall getting errors with a system that had a :static-file
component in its declaration, but where that static file had been deleted from the repository. If I recall correctly, ASDF errored on the missing static file. If I'm wrong about this, and systems missing static files build successfully, that's an error in ASDF, and we should have an issue for it and fix it.
ASDF does not need to be extended to add machinery to solve problems that GitHub and GitLab actions or Jenkins already solve. For that matter, since programmers could use arbitrary distribution methods, it isn't really possible for ASDF to solve these problems. But finding bugs that come when building in a clean environment is a problem that these CI systems are already addressing.