On 29/08/2010 20:20:51, Warren Block wrote:
> On Sun, 29 Aug 2010, Chip Camden wrote:
>> Quoth Eitan Adler on Sunday, 29 August 2010:
>>> On Sat, Aug 28, 2010 at 10:40 PM, Kurt Buff <kurt.b...@gmail.com> wrote:
>>>> Portupgrade won't, AFAIK, cross branches, though I could be wrong
>>>> about that.
>>>>
>>>> There's a 3.0 branch in /usr/ports/www/squid30 and a 3.1 branch in
>>>> /usr/ports/www/squid31, and I want to make the switch to pick up a
>>>> feature.
>>>
>>> portmaster -o www/squid31 www/squid30
>>
>> So, if I understand correctly, I could use this to upgrade from python26
>> to python27?  Or perl 5.8.9 to perl 5.12?  and everything that depended
>> on the former will be upgraded to the latter?  Can I say "sweeeeet" in
>> advance?  Is there a way to do that with portupgrade, or is this one of
>> those features that makes portmaster a better mousetrap?
> 
> portupgrade has had it for a long time:
> 
> man portupgrade | less '+/-o ORIGIN'

Yes.  portmaster has pretty much the same '-o' flag.

However, it's not quite so "sweeeeet" (sic) as all that -- all the '-o'
flag does, in either portmaster or portupgrade is transfer the
dependencies to the new package.  In very many cases you would still
have to reinstall everything that depends on the replaced package.

Sometimes that's because shlibs have different versions -- eg. if you
upgrade from mysql-5.0.x to mysql-5.1.x[*], then the ABI version changes
and you need to reinstall everything that links against libmysql.

With perl, the reason is even simpler -- the perl version number is
embedded in the library search path, so until you reinstall, even
pure-perl modules are going to be inaccessible.  XS modules need
relinking in any case.

Not entirely sure of the details with python, but certainly any module
which is available as dynamically loadable object code will need relinking.

Generally, the advice is to forcibly reinstall everything that depends
on the package you replaced:

    portmaster -f -R -r example/port
    portupgrade -f -r example/port

        Cheers,

        Matthew

[*] Which is a slightly trickier exercise than most, given you've got to
update both mysql-client and mysql-server ports using the '-o' thing.
Possibly even the mysql-scripts port if installed.  And then you've got
to deal with all the dependencies too.

-- 
Dr Matthew J Seaman MA, D.Phil.                   7 Priory Courtyard
                                                  Flat 3
PGP: http://www.infracaninophile.co.uk/pgpkey     Ramsgate
JID: matt...@infracaninophile.co.uk               Kent, CT11 9PW

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to