Hello, Eli.
On Sun, Feb 08, 2026 at 19:29:04 -0500, Eli Schwartz wrote:
> On 2/8/26 6:42 PM, Alan Mackenzie wrote:
> > Thanks for being so helpful. "It" may not be confusing, but I am
> > confused.
> >
> > What I want to know, what I asked for in my opening post, was how to
> > find what is causing that stale version of php to be merged in the first
> > place. Then I could fix that cause and not have to worry about php:8.2
> > ever again.
> >
> > The unhelpful half error message from emerge -a @preserved-rebuilds
> > doesn't tell me this.
> >
> > I've spent around 2 hours trying to find documentation about this, and
> > trying to find the pertinent file which ought to be called
> > preserved-rebuilds or @preserved-rebuilds, or something like that. If I
> > could find this file, I might be able to see what is mis-triggering the
> > build of php:8.2. But this file's name and location are not documented
> > in emerge's man page, and I can't find them anywhere on the Gentoo wiki.
> preserved-rebuild is not a file, it is a function that dynamically
> parses an internal portage cache.
OK, I get that, now.
> The same list that "continually being pestered to do emerge
> @preserved-rebuild" prints, which looks something like:
> >>> Completed (1 of 1) virtual/package-manager-2::gentoo
> * GNU info directory index is up-to-date.
> !!! existing preserved libs:
> >>> package: dev-libs/apache-arrow-22.0.0
> * - /usr/lib/libarrow.so.2000
> * - /usr/lib/libarrow.so.2000.0.0
> * used by
> /usr/lib/python3.13/site-packages/pyarrow/_acero.cpython-313-i386-linux-gnu.so
> (dev-python/pyarrow-20.0.0)
> * used by
> /usr/lib/python3.13/site-packages/pyarrow/_compute.cpython-313-i386-linux-gnu.so
> (dev-python/pyarrow-20.0.0)
> * used by
> /usr/lib/python3.13/site-packages/pyarrow/_csv.cpython-313-i386-linux-gnu.so
> (dev-python/pyarrow-20.0.0)
> * used by 15 other files
> [...]
> Use emerge @preserved-rebuild to rebuild packages using these libraries
> ... meaning the package dev-libs/apache-arrow-22.0.0:
> - has been **uninstalled** or **upgraded,
> - provides two files which portage left behind, since another package
> uses it
> The package dev-python/pyarrow-20.0.0:
> - is installed, but might be in world, might not be
> - has 3 named files + 15 others, which ELF-link to the other package's
> "left-behind files"
> preserved-rebuild says "package dev-libs/arrow cannot be fully
> uninstalled due to pyarrow, which has not been depcleaned. Maybe if
> pyarrow is rebuilt, dev-libs/arrow can clean up?"
> I do not know where you are looking instead, but portage already did
> tell you what is "mis-triggering" the rebuild. In my example,
> dev-python/pyarrow is equivalent to php:8.2, and dev-libs/arrow is
> equivalent to whatever package is causing php:8.2 to rebuild.
I think I know now what the cause of my problems is. The ebuild file for
dev-libs/php-8.2.28-r1 had been removed (probably by emerge --sync)
despite there still being a package (media-libs/libvpx) using it. This
may be a bug in portage, I'm not sure.
When I try # USE='-avif -webp' emerge -pqeO @preserved-rebuild (following
the directions in the sets page of the wiki), I get
[ebuild U ] dev-lang/php-8.2.30 [8.2.28-r1]
.. When I follow up with # equery depends dev-lang/php-8.2.28-r1, I get
* These packages depend on dev-lang/php-8.2.28-r1:
media-libs/libvpx-1.15.2 (doc ? dev-lang/php)
.. There is something funny, here. libvpx never had the doc USE flag, so
why does it want php? Also, in the last day or so, I've rebuilt libvpx
which now "uses" php-8.3.29 (for some value of "uses").
So, the question remains, why is emerge @preserved-rebuild trying to
merge php-8.2.30? Nothing uses it. Why does the emerge -pqeO command
even show this ebuild? This feels like a bug.
[ .... ]
> --
> Eli Schwartz
--
Alan Mackenzie (Nuremberg, Germany).