building packages and build tools

Everything related to Installing and maintaining software.
Post Reply
ASX
Posts: 988
Joined: Wed May 06, 2015 12:46 pm

building packages and build tools

Post by ASX »

I came across a recent post from Bryan Drewery, Poudriere author (or co-author, not sure):

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:
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.
Great, they (poudriere and synth) are building packages in excess to assure things will work as required.

Unfortunately a little later you can read:
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.
What I understand is that even if packages are rebuilt for safety, pkg will ignore them unless of shared libs.
This is also confirmed below:
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.
I will translate that for you: the only wayto do a proper pkgs upgrade is to reinstall all packages all the times.

And to finish:
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.
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.

Not much reassuring, :!:
Post Reply