I found a dirty problem in our build system, while i word on the switched to mariadb-client.
Between two packages can exists hard dependencies.
This mean, a package had to rebuild, when a package needed package was rebuild.
I my case, the mariadb/mysql-client is embedded in the kodi.bin.
After a change at the mysql, it was rebuilded, but not the kodi package.
Result: the change never reached the final image...
I looked into the code, and found no solution, that is
- not a dirty hack
- run in other problems (infinite loops)
Solutions i had dropped:
- clean package, when hard dependency was rebuild
=> This can lead to infinite loop in same cases.
eg on this dependency: x:host -> rebuild-package -> x:target
when we clean at x:target, the x:host will build again...
- add same checks into the package.mk
we will need this, every static library... too many packages for hacks
- always a clean build... NOOOOOOOOOO
My only left idea is: split up sources and build paths into different trees. And clean sources and build-paths independed.
So we can clean the target build, without forcing rebuild host build of a package.
But this will lead to bigger change. I do not know, if this is the right way.
Parts we will need:
- mark which dependency is hard
maybe as a additional ":hard" suffix in the dependency list
Anyone same other ideas, opinions?
Possible new path-tree of build-path