Rust packages are time-ing out while cross compiling
Upgrading to squeekbox is blocked, because cross compiling for other arches runs into timeouts. It seems, that this is caused by additional dependencies that were added to squeekbox, and because the package is building all dependencies together with the package (as it should not be done for packaging for a linux distro, usually each dependency is packaged separately).
I've looked into it, and improved the situation with two MRs for supporting rust in crossdirect, as linked in https://gitlab.com/postmarketOS/pmbootstrap/issues/1861.
(Please help with reviewing and check out the MRs manually if you want to use them until they are merged.)
This makes the compilation go further, and prevents downloading a bunch of git repositories with cargo over and over again (because pmbootstrap keeps the cache dir now, like it keeps other caches). The situation is definitively improved with these MRs.
However, when I tried it, it still failed at a later point in the compilation process, ran into a timeout again. So, let's handle this a bit more systematically. I think that a big problem is, that the package is compiling all of its dependencies all the time, which means it takes a very long time to test if compiling it is working now, or not. It also means, that if a build should fail for the binary repository, it would be less likely to complete when trying again.
I suggest to do the following:
- upgrade all other phosh components, if possible, without waiting for squeekbox
- merge the rust-crossdirect related patches, so it's faster already
- package all dependencies of squeekbox as own packages
- debug cross compiling squeekbox:
- does it still hang?
- is there any CPU load when it hangs
- if there is CPU load, does increasing the timeout help? (could be plausible, if we still have to use qemu+rustc in the edge case when a .so library is involved, see the crossdirect MR for details)
- if there is no CPU load, check what's going on while it hangs with strace
- figure out a fix and deploy it