Hello all,
I ran into an issue the other day while trying to build OpenWRT on a new machine. All of my builds are running with -j20
. My build failed midway through for unrelated reasons, and then I tried to continue building from where I was and I ended up with this error:
Package libfreetype is missing dependencies for the following libraries:
libharfbuzz.so.0
I have been building OpenWRT with this configuration on different machines for the longest time with no issue. Then I tried to build it on a brand new 20 something core AMD machine, and started running into all sorts of issues like these. This makes me concerned that there may be a good subset of packages out there that build differently depending on what was built before it when the packages have no dependency relationships and questions how reproducible a build is especially when it is multi-threaded. I recognize that not every package has a reproducible binary output, but the differences there are most likely benign (i.e. build timestamps, etc...). The difference here seems to really affect the behavior of the package.
I would like to hypothesize a solution: make the staging_dir be specific to each package Makefile, and only include files that show up in the PKG_BUILD_DEPENDS
variables of said package. On Linux this could easily be achieved with the overlay filesystem.