[mythtv-users] Mysql 5.5 to 5.6 upgrade on Gentoo
Rich Freeman
r-mythtv at thefreemanclan.net
Fri Apr 3 16:52:44 UTC 2015
I see a few misconceptions in your email, so some quick background
before I reply:
revdep-rebuild, @preserved-rebuild, and slot operator dependencies are
three different solutions to the same problem. They are progressively
better solutions that were introduced in that order.
revdep-rebuild detects broken links, and rebuild packages.
@preserved-rebuild detects links that are about to be broken, keeps
the old libs around, and allows you to rebuild the reverse
dependencies and remove the old libs.
slot operator dependencies allow package mainatiners to explicitly
declare when it is necessary to rebuild a package, and this causes the
package manager to rebuild them whether it detects a link being broken
or not. Not all packages in the tree support these yet.
On Fri, Apr 3, 2015 at 11:50 AM, Tom Dexter <digitalaudiorock at gmail.com> wrote:
> On Fri, Apr 3, 2015 at 10:11 AM, Rich Freeman
> <r-mythtv at thefreemanclan.net> wrote:
>> On Fri, Apr 3, 2015 at 9:26 AM, Tom Dexter <digitalaudiorock at gmail.com> wrote:
>>> I ran into an odd one with my last run of updates under Gentoo. This
>>> update included an update of MySQL from 5.5.40 to 5.6.22.
>>>
>>> The first issue I ran into was that the MySQL update didn't trigger a
>>> rebuild of php 5.3, either from emerge @preserved-rebuild or
>>> revdep-rebuild. This causes "Headers and client library minor version
>>> mismatch" errors in php.
>>
>> None of the versions of php have a subslot dep on mysql, so portage
>> will not auto-rebuild php when mysql changes.
>>
>> If this is wrong, I'd suggest filing a bug. I don't think I've seen
>> this error, but I'm not a php expert.
>>
>
> Thanks! I might in fact do that. It appear it should get recompiled,
> at least based on the php mysqli use flag. Oddly however I just
> looked back in the logs I keep of upgrades, and the upgrade from MySQL
> 5.1.70 to 5.5.39 did in fact trigger a rebuild of php 5.3 via
> @preserved-rebuild...so maybe this was changed.
@preserved-rebuild will work whether there is a slot operator
dependency or not, as long as portage detects actual linking being
broken.
>
>>>
>>> Even more strange is that the MySQL update triggered a rebuild of
>>> MythTV (which usually isn't needed)
>>
>> That is because mythtv does have a subslot dep on mysql.
>>
>> I just checked and indeed it doesn't look like anything in mythtv is
>> directly linked to anything provided by mysql. I'll go ahead and
>> remove that dependency in the next revision so that in the future
>> mythtv is not auto-rebuilt when mysql changes.
>
> Ah...that explains it. Interestingly though, that same upgrade
> mentioned above (from 5.1.70 to 5.5.39) didn't rebuild mythtv.
Was that a recent version of mythtv? Since no linking is broken,
you'd only get a rebuild if there was a slot operator dependency, and
I only added those around last summer.
> I see that that previous upgrade from 5.1.70 to 5.5.39 did in fact
> rebuild dev-qt/qtsql via @preserved-rebuild. Maybe the deps were
> different then.
Again, @preserved-rebuild does not in any way depend on dependencies.
It works if actual links break - such as no library has the right
SONAME. If things break because upstream changed the ABI without
changing the SONAME, or something is being loaded but doesn't have a
direct link (such as by using dlopen, and there are probably 500 other
possible causes), then @preserved-rebuild won't detect the potential
breakage. This was why slot operator dependencies were created - they
allow package maintainers to make these kinds of relationships
explicit rather than trying to detect things when they're about to
break.
--
Rich
More information about the mythtv-users
mailing list