Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 861785 - x11-themes/gentoo-xcursors-0.3.2-r2 creates incorrect symlinks
Summary: x11-themes/gentoo-xcursors-0.3.2-r2 creates incorrect symlinks
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: tastytea
URL:
Whiteboard:
Keywords: PullRequest
Depends on:
Blocks:
 
Reported: 2022-07-28 23:24 UTC by Peter Penkala
Modified: 2022-08-01 09:28 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Peter Penkala gentoo-dev 2022-07-28 23:24:24 UTC
This may be related to #848606 comment 2 #848606#c2 to relocate cursors to the icons directory.

Emerge error:
>>> Messages generated by process 2449 on 2022-07-27 16:39:36 MDT for package x11-themes/gentoo-xcursors-0.3.2-r2:

ERROR: preinst

Installation of a symlink is blocked by a directory:
  '/usr/share/cursors/xorg-x11/gentoo'
This symlink will be merged with a different name:
  '/usr/share/cursors/xorg-x11/gentoo.backup.0000'


Installation of a symlink is blocked by a directory:
  '/usr/share/cursors/xorg-x11/gentoo-blue'
This symlink will be merged with a different name:
  '/usr/share/cursors/xorg-x11/gentoo-blue.backup.0000'


Installation of a symlink is blocked by a directory:
  '/usr/share/cursors/xorg-x11/gentoo-silver'
This symlink will be merged with a different name:
  '/usr/share/cursors/xorg-x11/gentoo-silver.backup.0000'

Reproducible: Always

Actual Results:  
The other bug references Adwaita as an example, so I'm including how it exists on my system (other files excluded):
$ ls -l /usr/share/cursors/xorg-x11/
total 28
lrwxrwxrwx 1 root root   43 Jun  8 17:42 Adwaita -> ../../../../usr/share/icons/Adwaita/cursors
drwxr-xr-x 2 root root 4096 Jul 27 16:39 gentoo
lrwxrwxrwx 1 root root   18 Jul 27 16:38 gentoo.backup.0000 -> ../../icons/gentoo
drwxr-xr-x 2 root root 4096 Jul 27 16:39 gentoo-blue
lrwxrwxrwx 1 root root   23 Jul 27 16:38 gentoo-blue.backup.0000 -> ../../icons/gentoo-blue
drwxr-xr-x 2 root root 4096 Jul 27 16:39 gentoo-silver
lrwxrwxrwx 1 root root   25 Jul 27 16:38 gentoo-silver.backup.0000 -> ../../icons/gentoo-silver


$ ls -l /usr/share/cursors/xorg-x11/gentoo-blue.backup.0000/
total 4
drwxr-xr-x 2 root root 4096 Jul 27 16:39 cursors

Expected Results:  
I would expect the path to look either like the existing Adwaita link, or perhaps:
gentoo-blue -> ../../icons/gentoo-blue/cursors

Portage 3.0.30 (python 3.10.5-final-0, default/linux/amd64/17.1/desktop, gcc-11.3.0, glibc-2.34-r13, 4.19.250-gentoo x86_64)
=================================================================
System uname: Linux-4.19.250-gentoo-x86_64-AMD_Phenom-tm-_II_X4_965_Processor-with-glibc2.34
KiB Mem:    16400108 total,  11871308 free
KiB Swap:  805294076 total, 805294076 free
Timestamp of repository gentoo: Wed, 27 Jul 2022 13:00:01 +0000
Head commit of repository gentoo: b721d539f385e781dc8a8583e0c832551bb6b700
sh bash 5.1_p16
ld GNU ld (Gentoo 2.38 p4) 2.38
app-misc/pax-utils:        1.3.4::gentoo
app-shells/bash:           5.1_p16::gentoo
dev-lang/perl:             5.34.1-r3::gentoo
dev-lang/python:           2.7.18_p15::gentoo, 3.8.13_p2::gentoo, 3.10.5::gentoo
dev-lang/rust-bin:         1.62.1::gentoo
dev-util/cmake:            3.22.4::gentoo
dev-util/meson:            0.62.2::gentoo
sys-apps/baselayout:       2.8::gentoo
sys-apps/openrc:           0.28-r1::gentoo-local
sys-apps/sandbox:          2.29::gentoo
sys-devel/autoconf:        2.13-r2::gentoo, 2.71-r1::gentoo
sys-devel/automake:        1.16.5::gentoo
sys-devel/binutils:        2.38-r2::gentoo
sys-devel/binutils-config: 5.4.1::gentoo
sys-devel/clang:           14.0.4::gentoo
sys-devel/gcc:             11.3.0::gentoo
sys-devel/gcc-config:      2.5-r1::gentoo
sys-devel/libtool:         2.4.7::gentoo
sys-devel/lld:             14.0.4::gentoo
sys-devel/llvm:            14.0.4::gentoo
sys-devel/make:            4.3::gentoo
sys-kernel/linux-headers:  5.15-r3::gentoo (virtual/os-headers)
sys-libs/glibc:            2.34-r13::gentoo
Repositories:

gentoo
    location: /var/repos/gentoo
    sync-type: rsync
    sync-uri: rsync://rsync.gentoo.org/gentoo-portage
    priority: -1000
    sync-rsync-verify-metamanifest: no
    sync-rsync-verify-max-age: 24
    sync-rsync-verify-jobs: 1
    sync-rsync-extra-opts: 

gentoo-local
    location: /var/repos/gentoo-local
    masters: gentoo
    priority: 10

local
    location: /var/repos/local
    masters: gentoo
    priority: 10

Installed sets: @i3-select
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="-@EULA -@KILL_WITH_FIRE -@FSF-3 -@FSF-3-LIKE @TOLERATE @ALLOW @DOCUMENTATION"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-mtune=generic -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-mtune=generic -O2 -pipe"
DISTDIR="/var/repos/distfiles"
EMERGE_DEFAULT_OPTS="--jobs=11 --load-average=3.0 --autounmask n"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"
FCFLAGS="-mtune=generic -O2 -pipe"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg buildpkg-live compressdebug config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch parallel-install pid-sandbox preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms splitdebug strict unknown-features-filter unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-mtune=generic -O2 -pipe"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
LANG="en_US.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j3 -l3"
PKGDIR="/var/repos/binpkgs"
PORTAGE_BINHOST="http://10.1.1.247/binpkgs"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp/tmpfs"
SHELL="/bin/bash"
USE="X a52 aac acl acpi alsa amd64 branding bzip2 cairo cdda cli crypt dri dts dvdr encode exif flac fortran gdbm gif gui iconv icu jpeg lcms libglvnd libnotify libtirpc mad mng mp3 mp4 mpeg multilib ncurses nls nptl ogg opengl openmp pam pango pcre pdf png ppds readline seccomp spell split-usr ssl startup-notification svg tiff truetype udev udisks unicode upower usb vorbis x264 xattr xcb xkb xml xv xvid zlib" ABI_X86="64" ADA_TARGET="gnat_2020" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="libinput" KERNEL="linux" L10N="en en-US" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-4 php8-0" POSTGRES_TARGETS="postgres12 postgres13" PYTHON_SINGLE_TARGET="python3_10" PYTHON_TARGETS="python3_10" RUBY_TARGETS="ruby27" USERLAND="GNU" VIDEO_CARDS="intel i965 iris" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq proto steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  ADDR2LINE, AR, ARFLAGS, AS, ASFLAGS, CC, CCLD, CONFIG_SHELL, CPP, CPPFLAGS, CTARGET, CXX, CXXFILT, ELFEDIT, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, INSTALL_MASK, LC_ALL, LD, LEX, LFLAGS, LIBTOOL, LINGUAS, MAKE, MAKEFLAGS, NM, OBJCOPY, OBJDUMP, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, RANLIB, READELF, RUSTFLAGS, SIZE, STRINGS, STRIP, YACC, YFLAGS
Comment 1 tastytea 2022-07-29 00:31:04 UTC
The directories under /usr/share/cursors/xorg-x11/ should contain a directory
named “cursors”, according to x11-themes/xcursor-themes and
x11-themes/comix-xcursors. So the symlink seems to be correct, unless the other
packages are wrong too. It would seem that Adwaita points to the wrong location?

I could reproduce the blocked symlink installation problem and will investigate.
Comment 2 Duncan 2022-07-29 02:53:14 UTC
Hoping to be of help here since I feel kind of responsible given my earlier bug...

I believe what's happening is due to upgrading in-place, while as I reported testing in https://bugs.gentoo.org/848606#c2 , I did an unmerge of the old version first, thereby testing a clean install, not an upgrade.  In hindsight I should have tested both a clean install, and after unmerging that and remerging the earlier package, an upgrade.  I /thought/ that fix was easier than it should be.  Now I know why.  Anyway...

(In reply to Peter Penkala from comment #0)
> ERROR: preinst
> 
> Installation of a symlink is blocked by a directory:
>   '/usr/share/cursors/xorg-x11/gentoo'
> This symlink will be merged with a different name:
>   '/usr/share/cursors/xorg-x11/gentoo.backup.0000'

(Listing just the first of three, one for each sub-theme.)

That's going to be while the existing package dirs are still there, because in the upgrade case, the new package is installed first, with non-duplicated bits of the old one only removed afterward.  (This order is to prevent missing critical functionality during the would-be gap if done in reverse, when core packages such as grep and coreutils are upgraded.  Unfortunately it complicates dir-to-symlink upgrade cases such as this one.)

> Actual Results:  
> The other bug references Adwaita as an example, so I'm including how it
> exists on my system (other files excluded):
> $ ls -l /usr/share/cursors/xorg-x11/
> total 28
> lrwxrwxrwx 1 root root   43 Jun  8 17:42 Adwaita ->
> ../../../../usr/share/icons/Adwaita/cursors

Relative path backs up to root (/), path from there thru icons/theme to its cursors subdir.

> drwxr-xr-x 2 root root 4096 Jul 27 16:39 gentoo
> lrwxrwxrwx 1 root root   18 Jul 27 16:38 gentoo.backup.0000 ->
> ../../icons/gentoo

Relative path backs up to /usr/share, path from there to icons/theme itself (not its cursors subdir).

AFAIK they're both relative and backing up the extra two elements shouldn't be an issue.  (This was the bit I originally focused on but it's gotta be a rabbit trail to nowhere.)

The trailing (cursors/theme/)cursors subdir bit (which it seems the focus was on but for me), *could* be an issue, but I don't believe it's the issue here.  (The issue would be one of whether a search into the gentoo-specific /usr/share/cursors/ recurses from theme into theme/cursors subdirs or not.  With examples of both evidently it did, but AFAIK that's irrelevant from our dir-blocking-symlink-error perspective.)

And just to eliminate another possible source of confusion that at least I kept trying to rabbit-trail into, keep in mind that we're linking from the gentoo-specific /usr/share/cursors location to the standard /usr/share/icons location, two different subdirs, so it's not a self-referencial symlink looping issue either.

> $ ls -l /usr/share/cursors/xorg-x11/gentoo-blue.backup.0000/
> total 4
> drwxr-xr-x 2 root root 4096 Jul 27 16:39 cursors
> 
> Expected Results:  
> I would expect the path to look either like the existing Adwaita link, or
> perhaps:
> gentoo-blue -> ../../icons/gentoo-blue/cursors

Again, I /think/ that's a rabbit-trail (tho different from the ones I kept trying to go down, this symlink-tracing stuff can be maddening, so rabbit-trailing in one way or another is entirely understandable!).


I believe the problem here, as I said, is with the upgrade path, as opposed to a clean-install path (which from my testing works so an unmerge/clean-merge should be a practical workaround until the bug is fixed).

Assuming that, then, a hacky solution might involve testing for the upgrade case and force-removing the existing dirs so they don't interfere with the upgrade, but there's likely a less hacky "proper" way to do it as well.  Have any other theme packages already dealt with this, providing a pattern we can follow?
Comment 3 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-07-29 03:05:36 UTC
Related to bug 834600, I think.
Comment 4 Peter Penkala gentoo-dev 2022-07-29 03:14:45 UTC
(In reply to tastytea from comment #1)
> The directories under /usr/share/cursors/xorg-x11/ should contain a directory
> named “cursors”, according to x11-themes/xcursor-themes and
> x11-themes/comix-xcursors. So the symlink seems to be correct, unless the
> other
> packages are wrong too. It would seem that Adwaita points to the wrong
> location?
> 
> I could reproduce the blocked symlink installation problem and will
> investigate.

I very well may not understand where the symlinks were supposed to point. After reviewing your response, the symlink does work, but then the block is confusing.

$ ls -1d ../../icons/gentoo/cursors
../../icons/gentoo/cursors


If I understand your reference, your saying there should be a cursors under each "theme" (?) directory, as in /usr/share/cursors/xorg-x11/<directory>/cursors

I can confirm that exists:
$ find /usr/share/cursors/xorg-x11/ -type d -name cursors
/usr/share/cursors/xorg-x11/gentoo/cursors
/usr/share/cursors/xorg-x11/gentoo-blue/cursors
/usr/share/cursors/xorg-x11/redglass/cursors
/usr/share/cursors/xorg-x11/gentoo-silver/cursors
/usr/share/cursors/xorg-x11/handhelds/cursors
/usr/share/cursors/xorg-x11/whiteglass/cursors
/usr/share/cursors/xorg-x11/DMZ-White/cursors

Adwaita does not because it is a symlink. It does however point to the "icons" theme cusor directory.
# ls -ld /usr/share/cursors/xorg-x11/Adwaita
lrwxrwxrwx 1 root root 43 Jun  8 17:42 /usr/share/cursors/xorg-x11/Adwaita -> ../../../../usr/share/icons/Adwaita/cursors


Or, if you meant /usr/share/icons/<directory>/cursors those too exist:
$ find /usr/share/icons/ -type d -name cursors
/usr/share/icons/gentoo/cursors
/usr/share/icons/gentoo-blue/cursors
/usr/share/icons/gentoo-silver/cursors
/usr/share/icons/Adwaita/cursors


Let me know if I can provide anything else, thanks!
Comment 5 Duncan 2022-07-29 03:38:12 UTC
(In reply to Duncan from comment #2)
> Have any other theme packages already dealt with this, providing a pattern
> we can follow?

First place I looked... the adwaita-icon-theme-42.0_p2 ebuild (it's not in the older 3.32.0):

pkg_preinst() {
        # Needed until bug #834600 is solved
        if [[ -d "${EROOT}"/usr/share/cursors/xorg-x11/Adwaita ]] ; then
                rm -r "${EROOT}"/usr/share/cursors/xorg-x11/Adwaita || die
        fi
}

Bug #834600 is only from March of this year (2022) and has to do with portage not (yet) being able to handle replacing dirs with symlinks (or the reverse, symlinks with dirs), even when owned by a previous version of the same package in the upgrade case (where overwrite should be reasonably safe).

And its comment 2 https://bugs.gentoo.org/834600#c2 mentions exactly the hacky solution above, removal in pkg_preinst.

Tho a slightly safer version would test that it's an upgrade/downgrade case (${REPLACING_VERSIONS}) before doing the removal.

Maybe something like (just in case, signed-off-by: John Duncan):

pkg_preinst() {
  # Needed until bug #834600 is solved
  [[ ${REPLACING_VERSIONS} ]] && {
    GENTOOCURSORS="${EROOT}/usr/share/cursors/xorg-x11"
    if [[ -d "${GENTOOCURSORS}/gentoo" ]] ; then
      rm -r "${GENTOOCURSORS}/gentoo" || die
    fi
    if [[ -d "${GENTOOCURSORS}/gentoo-blue" ]] ; then
      rm -r "${GENTOOCURSORS}/gentoo-blue" || die
    fi
    if [[ -d "${GENTOOCURSORS}/gentoo-silver" ]] ; then
      rm -r "${GENTOOCURSORS}/gentoo-silver" || die
    fi
  fi
}
Comment 6 Duncan 2022-07-29 03:44:35 UTC
(In reply to Duncan from comment #5)
> pkg_preinst() {
>   # Needed until bug #834600 is solved
>   [[ ${REPLACING_VERSIONS} ]] && {
>     GENTOOCURSORS="${EROOT}/usr/share/cursors/xorg-x11"
>     if [[ -d "${GENTOOCURSORS}/gentoo" ]] ; then
>       rm -r "${GENTOOCURSORS}/gentoo" || die
>     fi
>     if [[ -d "${GENTOOCURSORS}/gentoo-blue" ]] ; then
>       rm -r "${GENTOOCURSORS}/gentoo-blue" || die
>     fi
>     if [[ -d "${GENTOOCURSORS}/gentoo-silver" ]] ; then
>       rm -r "${GENTOOCURSORS}/gentoo-silver" || die
>     fi
>   fi
> }

Oops.  That last fi should be }
Comment 7 tastytea 2022-07-29 11:07:19 UTC
(In reply to Peter Penkala from comment #4)
> If I understand your reference, your saying there should be a cursors under
> each "theme" (?) directory, as in
> /usr/share/cursors/xorg-x11/<directory>/cursors

Yes, every cursor theme but Adwaita seems to use this layout.

> Adwaita does not because it is a symlink. It does however point to the
> "icons" theme cusor directory.
> # ls -ld /usr/share/cursors/xorg-x11/Adwaita
> lrwxrwxrwx 1 root root 43 Jun  8 17:42 /usr/share/cursors/xorg-x11/Adwaita
> -> ../../../../usr/share/icons/Adwaita/cursors

From <https://www.x.org/releases/X11R7.7/doc/man/man3/Xcursor.3.xhtml>:
> Xcursor (mostly) follows the freedesktop.org spec for theming icons. The 
> default search path it uses is ~/.icons, /usr/share/icons, /usr/share/pixmaps. 
> Within each of these directories, it searches for a directory using the theme 
> name. Within the theme directory, it looks for cursor files in the ’cursors’ 
> subdirectory. It uses the first cursor file found along the path.

Since in Gentoo the default search path is /usr/share/cursors/xorg-x11
(`pkg-config --variable=icondir xcursor`), 
/usr/share/cursors/xorg-x11/{Adwaita,gentoo}/cursors should exist IMO.

On the other hand, “It uses the first cursor file found along the path.” could
be read as: It searches in the theme directory for cursor files and, if nothing
was found, tries the cursor subdirectory.

So either the Adwaita path is wrong or both Adwaita's and gentoo-xcursors's 
path is right. Having the cursors in <xcursor-path>/<theme>/cursors seems to be
the safest.
Comment 8 Duncan 2022-07-29 21:13:38 UTC
> Keywords: PullRequest
> See Also: https://github.com/gentoo/gentoo/pull/26651

The failed-upgrade/backup symlinks detail is nice. =:^)
Comment 9 Larry the Git Cow gentoo-dev 2022-07-30 23:32:20 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=477015c0b557b557c8cd527b93fd5ba8d6b42000

commit 477015c0b557b557c8cd527b93fd5ba8d6b42000
Author:     Ronny (tastytea) Gutbrod <gentoo@tastytea.de>
AuthorDate: 2022-07-29 11:21:06 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2022-07-30 23:22:29 +0000

    x11-themes/gentoo-xcursors: fix blocked symlink installation
    
    A directory was replaced by a symlink but that does not work due to
    bug #834600.
    
    Straight to stable since the broken ebuild landed in stable and the
    package isn't compiling anything.
    
    Closes: https://bugs.gentoo.org/861785
    Co-developed-by: John Duncan
    Signed-off-by: Ronny (tastytea) Gutbrod <gentoo@tastytea.de>
    Signed-off-by: Sam James <sam@gentoo.org>

 .../gentoo-xcursors-0.3.2-r3.ebuild                | 51 ++++++++++++++++++++++
 1 file changed, 51 insertions(+)
Comment 10 Peter Penkala gentoo-dev 2022-08-01 03:30:21 UTC
This is only informational feedback.

The upgrade produced these results with no errors:
$ ls -l /usr/share/cursors/xorg-x11/ |grep gentoo
lrwxrwxrwx 1 root root   18 Jul 31 20:50 gentoo -> ../../icons/gentoo
lrwxrwxrwx 1 root root   18 Jul 28 21:06 gentoo.backup.0000 -> ../../icons/gentoo
lrwxrwxrwx 1 root root   23 Jul 31 20:50 gentoo-blue -> ../../icons/gentoo-blue
lrwxrwxrwx 1 root root   23 Jul 28 21:06 gentoo-blue.backup.0000 -> ../../icons/gentoo-blue
lrwxrwxrwx 1 root root   25 Jul 31 20:50 gentoo-silver -> ../../icons/gentoo-silver
lrwxrwxrwx 1 root root   25 Jul 28 21:06 gentoo-silver.backup.0000 -> ../../icons/gentoo-silver

qfile reports no ownership of the "backup" directories. After uninstalling, they remain as dead
links.

Cleaning up the dead links and reinstalling the new package produces the following, which looks more 
like what I expected from the upgrade process:
$ ls -l /usr/share/cursors/xorg-x11/ |grep gentoo
lrwxrwxrwx 1 root root   18 Jul 31 21:03 gentoo -> ../../icons/gentoo
lrwxrwxrwx 1 root root   23 Jul 31 21:03 gentoo-blue -> ../../icons/gentoo-blue
lrwxrwxrwx 1 root root   25 Jul 31 21:03 gentoo-silver -> ../../icons/gentoo-silver

I presume the backup links are intentional, but I preferred the clean install.

Thanks
Comment 11 tastytea 2022-08-01 09:28:38 UTC
(In reply to Peter Penkala from comment #10)
> […]
>
> I presume the backup links are intentional, but I preferred the clean
> install.

Yes, i decided to not touch the previously generated backup directories.
Because the package does not own them, it should not touch them, in my opinion.
It will output an informational message if it detects them though.
<https://cgit.gentoo.org/repo/gentoo.git/tree/x11-themes/gentoo-xcursors/gentoo-xcursors-0.3.2-r3.ebuild?id=477015c#n41>