вс, 27 июл. 2025 г. в 16:03, Michael <[email protected]>:
>
> On Sunday, 27 July 2025 13:18:34 British Summer Time gevisz wrote:
> > On July 25, 2025 my custom keyboard layout files located
> > in /usr/share/X11/xkb/symbols/ were unexpectedly overwritten
> > during system despite the fact that they were config-protected:
> > # emerge --info | grep CONFIG_PROTECT
> > CONFIG_PROTECT="/etc /usr/share/X11/xkb/symbols/ /usr/share/config
> > /usr/share/gnupg/qualified.txt"
> > CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d
> > /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release
> > /etc/revdep-rebuild /etc/sandbox.d /etc/texmf/language.dat.d
> > /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
> >
> > ChatGPT says to me that it was done when
> > x11-misc/xkeyboard-config-2.45-r1 was updated.
> >
> > I do not use etc-update or dispatch-conf, and there were no ._cfg*
> > files left behind — the overwrite happened silently.
> >
> > After examining the ebuild, ChatGPT noticed that src_install() uses
> > meson_src_install,
> > and then moves the entire installed /usr/share/X11/xkb tree to
> > /usr/share/X11/xkb.workaround/
> > as a workaround for bug #957712. In pkg_preinst(), that tree is then
> > forcibly moved back to /usr/share/X11/xkb, overwriting any existing
> > files.
> >
> > This manual move bypasses Portage’s CONFIG_PROTECT mechanism entirely,
> > as pkg_preinst()
> > runs before Portage has a chance to apply config file protection.
> >
> > While I understand the intention behind the workaround, the result was
> > a total loss of my custom layout files,
> > despite explicitly protecting the directory. I’ve been using Gentoo
> > for 12 years, and I have never been so
> > disappointed by the Gentoo as I was when this happened to say the least.
> >
> > Is there a Gentoo-compliant way to preserve customized layouts that
> > replace system-provided ones under such circumstances?
> >
> > Thanks in advance for any suggestions or guidance.
>
> The offending lines in /var/db/repos/gentoo/x11-misc/xkeyboard-config/
> xkeyboard-config-2.45-r1.ebuild are:
> ====================================
> ...
>  68 src_install() {
>  69         meson_src_install
>  70
>  71         # Workaround for portage's collision checks, see pkg_preinst (bug
> #957712)
>  72         mv "${ED}"/usr/share/X11/xkb{,.workaround} || die
>  73 }
>  74
>  75 pkg_preinst() {  76         # Avoid touching EROOT if not needed, and use
> -f just-in-case anyway
>  77         if [[ -d ${EROOT}/usr/share/X11/xkb && ! -L ${EROOT}/usr/share/
> X11/xkb ]]; then
>  78                 rm -rf "${EROOT}"/usr/share/X11/xkb || die
>  79         fi
>  80         mv "${ED}"/usr/share/X11/xkb{.workaround,} || die
>  81 }
> ==============
>
> I suggest you re-open this bug[1], because its workaround may have been
> somewhat inconsiderate as to potential impacts.

Yes, I have opened the bug https://bugs.gentoo.org/960773

> However, unlike files in /etc/ subdirectories, files under /usr/share/ are
> generally expected to be overwritten by package updates.  I see the wiki[2]
> suggests to create/edit files in place for custom keyboard layouts, but I
> wonder if it would have been safer for a symlink pointing to /etc where custom
> xkb config files could be stored more safely.

Yes, to symlink the custom keyboard configuration files somewhere
seems to be the best idea so far. Thank you.

> [1] https://bugs.gentoo.org/957712
> [2] https://wiki.gentoo.org/wiki/Keyboard_layout_switching

Reply via email to