https://lists.freebsd.org/pipermail/svn ... 45282.html
Poudriere and synth are using the same rebuild logic, therefore the same answer may appy to Synth too:
Great, they (poudriere and synth) are building packages in excess to assure things will work as required.First of all, this is not true. Poudriere *does not* rebuild everything
every time. It only does that with the -c flag. Poudriere *by default*
will do an incremental build. It only rebuilds things if they have,
comparing to the previous package, a missing package, a new PORTVERSION,
a new PORTREVISION, new LIB or RUN dependencies, changed OPTIONS, a
changed PKGNAME, or lastly if a dependency rebuilds due to any of the
previous.
This last piece, of always rebuilding if a dependency is rebuilt is
simply *wrong*. It is a crutch that was added to ensure that packages
were working because people often *forgot* to bump PORTREVISION properly.
Unfortunately a little later you can read:
What I understand is that even if packages are rebuilt for safety, pkg will ignore them unless of shared libs.4.
A reminder that not doing a PORTREVISION chase as-needed will make Pkg
users have broken packages until they force reinstall some of them,
unless it happens to be a shared library change which it will recognize.
This is also confirmed below:
I will translate that for you: the only wayto do a proper pkgs upgrade is to reinstall all packages all the times.Add in the Pkg problem of not
reinstalling them and you get some random users having problems and
others not, while *both* have the updated dependencies because Pkg did
upgrade those, but those dependencies had *build time* differences that
broke packages.
And to finish:
I can add that synth (from synth' author comments) use the same rebuild logic as poudriere and therefore the same problems exists when using synth instead of poudriere.currently none
of the tools (portmaster/portupgrade/poudriere/pkg) do 100% of the right
thing. I left out synth as I am not familiar with its behavior here,
but it too cannot be magical and know if a package *really* needs a
rebuild or not, and still Pkg may ignore that new one.
Not much reassuring,