portupgrade -ar (why?)

Petersen petersen at petersen.plus.com
Sat Oct 15 16:39:51 PDT 2005


Peter Matulis <petermatulis at yahoo.ca> wrote:
> --- Petersen <petersen at petersen.plus.com> wrote:
> 
>> The -a switch will upgrade a port only if its version number has
>> increased (as you know). 
>> 
>> The -r switch will upgrade a port if one of its dependancies has been
>> upgraded, regardless of whether its version number has changed or
>> not. 
>> 
>> e.g.
>> 
>> Appbar-1.0 depends on libfoo-1.0. Libfoo gets a portbump to 1.1.
>> portupgrade -r libfoo will install libfoo-1.1, plus also force a
>> recompile and reinstallation of appbar-1.0, irrespective of the fact
>> that appbar's version remains the same. Thus, any ABI changes that
>> happened in libfoo that could potentially break appbar that was
>> compiled/linked against the previous version are limited.
>> 
>> In an ideal world, this wouldn't be a problem. ABIs and APIs
>> should remain constant, until a library revision bump (i.e., if
>> libfoo.1's ABI changed and broke apps, it shoulda been bumped to
> libfoo.2). > Most times you can get away with not recompiling a
> port's dependants
>> because developers, but if you don't then it can shoot you in the
>> foot (read the recent list archives regarding openssl-0.9.8 to see
>> an example of this).
> 
> Thank you very much (BTW, there is something missing in your last
> sentence). 
> 

..because developers mostly take ABI breakage into account and tend not
to do it on minor versions, but if you don't...

> One last thing.  Is this the case with the 'R' switch as well?
> 
> 
> 

Well, the -R switch won't force anything to upgrade if it's already at
the latest version. AFAIK (someone please correct me on this if I'm
wrong) it is pointless to use it with the -a switch as -a by its very
nature is upgrading anything that needs upgrading anyway, which includes
any dependancies of a port, and AFAIK -a will sort the upgrades so that
dependancies are done before upgrades (thus, 'portupgrade -a' is
functionally equivalent to 'portupgrade -R *').

Uninstalled dependancies of an installed port are irrelevant in any
portupgrade case, as the port will automatically pull them in as part of
its compilation.

Petersen




More information about the freebsd-questions mailing list