[RFC/HEADSUP] portmaster default -w (preserve shared libraries)

Jeremy Messenger mezz.freebsd at gmail.com
Tue Dec 11 19:34:40 UTC 2012


On Tue, Dec 11, 2012 at 11:04 AM, Chris Rees <utisoft at gmail.com> wrote:
>
> On 11 Dec 2012 16:44, "Alex Dupre" <ale at freebsd.org> wrote:
>>
>> Jeremy Messenger ha scritto:
>>
>> >> Absolutely yes from me. The -w option is real lifesaver and should be
>> >> on by default.
>> >
>> > I disagree. The -w is a temp fix and not a correct solution, so it
>> > shouldn't be default.
>>
>> I agree with your disagreement :-)
>>
>
> I get what you're saying, but please consider which is easier to reverse-
> deleting an accidentally saved library, or restoring an accidentally deleted
> library?

I don't see how you can accident delete library. If you accident
deleted it. It won't be in another place because you already deleted
it as our ports only install a library without backup. :-) When ports
uninstall that deleted a library isn't an accident or it will be a
bug.

> Defaults should be safe.  I was bitten by this with pcre- sometimes we can't
> update all our ports at one time.

If can't update all ports then please wait until when you can. I never
have any problem to update all ports at a time by ran it over night
time. Or even better, use packages if you can't afford the ports
system.

> How isn't it correct?

-When a main app that linked with main library. The main library
linked with foo libray that has linked old library and bar library
that linked with new library. Then the main app try to run it and
cause some weird problem. It was hard to debug it until I asked user
to ran ldconfig. Don't know if my english is clear, but drawing a
picture below.

                main app
                      |
              main library
               /            \
         foo lib        bar lib
            /                 \
       old lib              new lib

-I have seen it before when somehow ports compiled with old library
from lib/compat/pkg with new library by accident because of user's
custom tweak.

-Security issue. Users forgot (or don't know about it if
lib/compat/pkg is default) to complete the upgrade.

-We should never hide a real problem by default. Repeat, never hide problem.

When you decide to upgrade library and you need to have everything
that depend on it to be recompiled. Move old library in the different
place are supposed to be only for temp until you have compiled all
ports with the updated library. So that way you can have your
apps/desktop running while you are compiling/updating.

GNOME have tons and tons of libraries with complicate dependencies.
Turn it on by default worry me, because it is hard to debug this issue
than have app dead with error to tell you that you have missing
library.

>  We still keep src libraries around until we make
> delete-old-libs.  Why should ports be different?

See Alex's replied and add here:

Have you seen bug reports because they didn't ran delete-old* before?
Well, I have from some users.  Without run delete-old* even effected
on ports (ie: I remember libcrypt and libusb issue).

IMO the delete-old* shouldn't be default because this option is not
only for upgrade. It's also for if you want to delete extra stuff. If
the delete-old* split function by one for only delete old stuff for
upgrade then this one should be default. Another function should be
disable by default until users want to delete extra stuff.

> Chris


-- 
mezz.freebsd at gmail.com - mezz at FreeBSD.org
FreeBSD GNOME Team
http://www.FreeBSD.org/gnome/ - gnome at FreeBSD.org


More information about the freebsd-ports mailing list