Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 513170 - cmake-utils.eclass: modifies files in src_configure() rather than src_prepare() (multilib race conditions!)
Summary: cmake-utils.eclass: modifies files in src_configure() rather than src_prepare...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Eclasses (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Gentoo KDE team
URL:
Whiteboard:
Keywords: InOverlay
Depends on:
Blocks:
 
Reported: 2014-06-14 04:34 UTC by Patrick Lauer
Modified: 2016-01-25 14:12 UTC (History)
2 users (show)

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


Attachments
Suggested patch to cmake-utils.eclass (cmake-utils.eclass.diff,2.26 KB, patch)
2014-06-14 07:33 UTC, Michał Górny
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Patrick Lauer gentoo-dev 2014-06-14 04:34:38 UTC
>>> Working in BUILD_DIR: "/chroot/local/portage/media-libs/taglib-1.9.1-r1/work/taglib-1.9.1-abi_x86_64.amd64"
find: ‘/chroot/local/portage/media-libs/taglib-1.9.1-r1/work/taglib-1.9.1/taglib/sedYOtE2t’: No such file or directory
 * ERROR: media-libs/taglib-1.9.1-r1::gentoo failed (configure phase):
 *   419: failed to disable hardcoded settings
 * 
 * Call stack:
 *     ebuild.sh, line   93:  Called src_configure
 *   environment, line 3250:  Called cmake-multilib_src_configure
cmake --no-warn-unused-cli -C /chroot/local/portage/media-libs/taglib-1.9.1-r1/work/taglib-1.9.1-abi_x86_32.x86/gentoo_common_config.cmake -G Unix Makefiles -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_TESTS=OFF -DWITH_asf=ON -DWITH_ASF=ON -DWITH_Asf=ON -DWITH_mp4=ON -DWITH_MP4=ON -DWITH_Mp4=ON -DCMAKE_BUILD_TYPE=Gentoo -DCMAKE_INSTALL_DO_STRIP=OFF -DCMAKE_USER_MAKE_RULES_OVERRIDE=/chroot/local/portage/media-libs/taglib-1.9.1-r1/work/taglib-1.9.1-abi_x86_32.x86/gentoo_rules.cmake  /chroot/local/portage/media-libs/taglib-1.9.1-r1/work/taglib-1.9.1
 *   environment, line  726:  Called multilib-minimal_src_configure
Not searching for unused variables given on the command line.
loading initial cache file /chroot/local/portage/media-libs/taglib-1.9.1-r1/work/taglib-1.9.1-abi_x86_32.x86/gentoo_common_config.cmake
 *   environment, line 2425:  Called multilib_parallel_foreach_abi 'multilib-minimal_abi_src_configure'
 *   environment, line 2713:  Called multibuild_parallel_foreach_variant '_multilib_multibuild_wrapper' 'multilib-minimal_abi_src_configure'
 *   environment, line 2318:  Called multibuild_foreach_variant '_multibuild_parallel' '_multilib_multibuild_wrapper' 'multilib-minimal_abi_src_configure'
 *   environment, line 2261:  Called _multibuild_run '_multibuild_parallel' '_multilib_multibuild_wrapper' 'multilib-minimal_abi_src_configure'
 *   environment, line 2259:  Called _multibuild_parallel '_multilib_multibuild_wrapper' 'multilib-minimal_abi_src_configure'
 *   environment, line 2309:  Called _multilib_multibuild_wrapper 'multilib-minimal_abi_src_configure'
 *   environment, line  470:  Called multilib-minimal_abi_src_configure
 *   environment, line 2419:  Called multilib_src_configure
-- The C compiler identification is GNU 4.8.2
 *   environment, line 2834:  Called cmake-utils_src_configure
 *   environment, line  744:  Called _execute_optionally 'src_configure'
 *   environment, line  250:  Called enable_cmake-utils_src_configure
 *   environment, line  947:  Called _modify-cmakelists
 *   environment, line  419:  Called die
 * The specific snippet of code:
 *       find "${CMAKE_USE_DIR}" -name CMakeLists.txt -exec sed -i -e '/^[[:space:]]*[sS][eE][tT][[:space:]]*([[:space:]]*CMAKE_BUILD_TYPE.*)/{s/^/#IGNORE /g}' {} + -exec sed -i -e '/^[[:space:]]*[sS][eE][tT][[:space:]]*([[:space:]]*CMAKE_COLOR_MAKEFILE.*)/{s/^/#IGNORE /g}' {} + -exec sed -i -e '/^[[:space:]]*[sS][eE][tT][[:space:]]*([[:space:]]*CMAKE_INSTALL_PREFIX.*)/{s/^/#IGNORE /g}' {} + -exec sed -i -e '/^[[:space:]]*[sS][eE][tT][[:space:]]*([[:space:]]*CMAKE_VERBOSE_MAKEFILE.*)/{s/^/#IGNORE /g}' {} + || die "${LINENO}: failed to disable hardcoded settings";
 * 
 * If you need support, post the output of `emerge --info '=media-libs/taglib-1.9.1-r1::gentoo'`,
 * the complete build log and the output of `emerge -pqv '=media-libs/taglib-1.9.1-r1::gentoo'`.
/usr/lib64/portage/bin/isolated-functions.sh: line 195: wait: `419: failed to disable hardcoded settings': not a pid or valid job spec
 * The complete build log is located at '/chroot/local/portage/media-libs/taglib-1.9.1-r1/temp/build.log'.
 * The ebuild environment file is located at '/chroot/local/portage/media-libs/taglib-1.9.1-r1/temp/environment'.
 * Working directory: '/chroot/local/portage/media-libs/taglib-1.9.1-r1/work/taglib-1.9.1-abi_x86_64.amd64'
 * S: '/chroot/local/portage/media-libs/taglib-1.9.1-r1/work/taglib-1.9.1'
-- The CXX compiler identification is GNU 4.8.2
-- Check for working C compiler: /usr/bin/x86_64-pc-linux-gnu-gcc
-- Check for working C compiler: /usr/bin/x86_64-pc-linux-gnu-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/x86_64-pc-linux-gnu-g++
-- Check for working CXX compiler: /usr/bin/x86_64-pc-linux-gnu-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of short
-- Check size of short - done
-- Check size of int
-- Check size of int - done
-- Check size of long long
-- Check size of long long - done
-- Check size of wchar_t
-- Check size of wchar_t - done
-- Check if the system is big endian
-- Searching 16 bit integer
-- Check size of unsigned short
-- Check size of unsigned short - done
-- Using unsigned short
-- Check if the system is big endian - little endian
-- Performing Test HAVE_STD_ATOMIC
-- Performing Test HAVE_STD_ATOMIC - Failed
-- Performing Test HAVE_BOOST_ATOMIC
-- Performing Test HAVE_BOOST_ATOMIC - Success
-- Performing Test HAVE_GCC_BYTESWAP_16
-- Performing Test HAVE_GCC_BYTESWAP_16 - Success
-- Performing Test HAVE_GCC_BYTESWAP_32
-- Performing Test HAVE_GCC_BYTESWAP_32 - Success
-- Performing Test HAVE_GCC_BYTESWAP_64
-- Performing Test HAVE_GCC_BYTESWAP_64 - Success
-- Performing Test HAVE_SNPRINTF
-- Performing Test HAVE_SNPRINTF - Success
-- Performing Test HAVE_STD_CODECVT
-- Performing Test HAVE_STD_CODECVT - Failed
-- Found ZLIB: /usr/lib/libz.so (found version "1.2.8") 
-- Found cppunit: -L/usr/lib64 -lcppunit -ldl
-- Looking for __RTTI___ in Crun
-- Looking for __RTTI___ in Crun - not found
-- <<< Gentoo configuration >>>
Build type      Gentoo
Install path    /usr
Compiler flags:
C               -O2 -pipe -march=native  -Wall
C++             -O2 -pipe -march=native  -Wall
Linker flags:
Executable       -Wl,-O1 -Wl,--as-needed
Module           -Wl,-O1 -Wl,--as-needed
Shared           -Wl,-O1 -Wl,--as-needed

-- Configuring done
CMake Warning (dev) in taglib/CMakeLists.txt:
  Policy CMP0022 is not set: INTERFACE_LINK_LIBRARIES defines the link
  interface.  Run "cmake --help-policy CMP0022" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.

  Target "tag" has an INTERFACE_LINK_LIBRARIES property which differs from
  its LINK_INTERFACE_LIBRARIES properties.

  INTERFACE_LINK_LIBRARIES:

    /usr/lib/libz.so

  LINK_INTERFACE_LIBRARIES:

    

This warning is for project developers.  Use -Wno-dev to suppress it.

-- Generating done
-- Build files have been written to: /chroot/local/portage/media-libs/taglib-1.9.1-r1/work/taglib-1.9.1-abi_x86_32.x86

>>> Failed to emerge media-libs/taglib-1.9.1-r1, Log file:

>>>  '/chroot/local/portage/media-libs/taglib-1.9.1-r1/temp/build.log'
Comment 1 Patrick Lauer gentoo-dev 2014-06-14 04:34:56 UTC
Portage 2.2.10 (default/linux/amd64/13.0/desktop/kde, gcc-4.8.2, glibc-2.19, 3.13.1-gentoo x86_64)
=================================================================
System uname: Linux-3.13.1-gentoo-x86_64-AMD_FX-tm-8350_Eight-Core_Processor-with-gentoo-2.2
KiB Mem:    16406780 total,   6228284 free
KiB Swap:    8388604 total,   8388604 free
Timestamp of tree: Unknown
ld GNU ld (GNU Binutils) 2.24
app-shells/bash:          4.2_p47
dev-java/java-config:     2.2.0
dev-lang/python:          2.7.6-r1, 3.2.5-r3, 3.3.5, 3.4.0
dev-util/cmake:           2.8.12.2-r1
dev-util/pkgconfig:       0.28-r1
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.12.4
sys-apps/sandbox:         2.6-r1
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.9.6-r3, 1.11.6, 1.12.6, 1.13.4, 1.14.1
sys-devel/binutils:       2.24-r3
sys-devel/gcc:            4.7.3, 4.8.2
sys-devel/gcc-config:     1.8
sys-devel/libtool:        2.4.2-r1
sys-devel/make:           4.0-r1
sys-kernel/linux-headers: 3.14 (virtual/os-headers)
sys-libs/glibc:           2.19
Repositories: gentoo
ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="* -@EULA AdobeFlash-11.x PUEL skype-eula ut2003 skype-4.0.0.7-copyright Intel-SDP"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe -march=native"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/polkit-1/actions"
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 /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -pipe -march=native"
DISTDIR="/chroot/distfiles"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
INSTALL_MASK="/usr/lib/systemd"
LANG="en_US.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
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"
PORTAGE_TMPDIR="/chroot/local"
PORTDIR="/home/pal/code/gentoo-x86"
PORTDIR_OVERLAY=""
USE="X a52 aac accessibility acl acpi alsa amd64 apng berkdb bluetooth branding bzip2 cairo cdda cdr cli consolekit cpudetection cracklib crypt cups cxx dbus declarative dri dts dvd dvdr emboss encode exif fam fdt firefox flac fortran gdbm gif gpm iconv icu ipv6 jabber jpeg kde kipi kmod lcms ldap lto mad mmx mmxext mng modules mp3 mp4 mpeg multilib ncurses nls nptl ogg opencl opengl openmp pam pango pcre pdf perl phonon plasma png policykit ppds python qemu qt3support qt4 r600-llvm-compiler readline sdl semantic-desktop session spell sse sse2 ssl svg tcpd threads tiff tk truetype udev udisks unicode upower usb vdpau vorbis wxwidgets x264 xcb xcomposite xinerama xml xscreensaver xv xvid zlib" ABI_X86="32 64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" 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="author braindump flow karbon kexi krita sheets stage words" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_3" QEMU_SOFTMMU_TARGETS="x86_64 alpha arm cris i386 lm32 m68k microblaze microblazeel mips mips64 mips64el mipsel moxie or32 ppc ppc64 ppcemb s390x sh4 sh4eb sparc sparc64 unicore32 xtensa xtensaeb" QEMU_USER_TARGETS="alpha arm armeb cris i386 m68k microblaze microblazeel mips mips64 mips64el mipsel mipsn32 mipsn32el or32 ppc ppc64 ppc64abi32 s390x sh4 sh4eb sparc sparc32plus sparc64 unicore32 x86_64" USERLAND="GNU" VIDEO_CARDS="vga vesa radeon" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, SYNC, USE_PYTHON
Comment 2 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2014-06-14 07:15:22 UTC
Ok, I've got it. cmake-utils is full of fragile stuff done during src_configure() that isn't supposed to be there (src_prepare() is for modifying ${S}!), and this causes race conditions with multiple calls for multilib.

I'm going to prepare a patch in a few minutes.
Comment 3 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2014-06-14 07:33:24 UTC
Created attachment 378850 [details, diff]
Suggested patch to cmake-utils.eclass

This specifically:

1. moves all modifications of ${S} to src_prepare(),

2. localizes some of variables defined in src_configure() to avoid spanning them between multilibs.

This should be relatively safe. However, it can fail if:

1. some ebuilds call cmake-utils_src_configure() but not _src_prepare(),

2. ebuilds does something very funky between cmake-utils_src_prepare() and _src_configure().
Comment 4 Michael Palimaka (kensington) gentoo-dev 2014-06-14 15:24:42 UTC
Looks fine, thanks.

#1 could be a problem, I've seen a few ebuilds like that in the past.
Comment 5 Julian Ospald 2014-06-14 15:41:45 UTC
(In reply to Michael Palimaka (kensington) from comment #4)
> Looks fine, thanks.
> 
> #1 could be a problem, I've seen a few ebuilds like that in the past.

because it doesn't do much useful stuff

there will be a lot of packages that need fixing first

don't apply this without testing
Comment 6 Michael Palimaka (kensington) gentoo-dev 2014-06-14 15:43:34 UTC
It's good practice to call any eclass functions you override.
Comment 7 Julian Ospald 2014-06-14 16:21:04 UTC
(In reply to Michael Palimaka (kensington) from comment #6)
> It's good practice to call any eclass functions you override.

I don't see why, unless the eclass defines a proper API.

Also, it can lead to breakage when multiple eclasses do similar things (mind that cmake-utils_src_prepare calls epatch and epatch_user).

In some cases it may even be specifically unwanted. So I disagree with the generality of your statement and we should not assume it and we should not randomly break stable packages.
Comment 8 Michael Palimaka (kensington) gentoo-dev 2014-06-14 16:33:47 UTC
> (In reply to Michael Palimaka (kensington) from comment #6)
> > It's good practice to call any eclass functions you override.
> 
> I don't see why, unless the eclass defines a proper API.
All eclasses define an API by the functions they export.

> Also, it can lead to breakage when multiple eclasses do similar things (mind
> that cmake-utils_src_prepare calls epatch and epatch_user).
> 
> In some cases it may even be specifically unwanted. So I disagree with the
> generality of your statement and we should not assume it and we should not
> randomly break stable packages.
That's all true, but it's still good practice in general unless there's a reason not to (such as in the cases you mentioned).

As already mentioned, there's no assumption that overridden phase functions are called, so of course we can't apply this without further investigation.

It's times like this I wish we had a better mechanism for eclass versioning.
Comment 9 Julian Ospald 2014-06-14 16:46:53 UTC
(In reply to Michael Palimaka (kensington) from comment #8)
> > (In reply to Michael Palimaka (kensington) from comment #6)
> > > It's good practice to call any eclass functions you override.
> > 
> > I don't see why, unless the eclass defines a proper API.
> All eclasses define an API by the functions they export.
> 

In bash you can't really define an API without documentation, unless you want people to call "private" functions.

Remember when qmake-utils was inside qt4-r2? I don't really care what functions are exported, unless they interact in complex ways (like for multilib eclasses and python eclasses) or unless the eclass documentation/policy specifically says you MUST call all of them (like it is policy for games.eclass, but poorly documented afair).
Comment 10 Michael Palimaka (kensington) gentoo-dev 2014-06-14 17:08:54 UTC
(In reply to Julian Ospald (hasufell) from comment #9)
> In bash you can't really define an API without documentation, unless you
> want people to call "private" functions.
That's a deficiency of the individual eclass. We even have @INTERNAL warn about internal functions.

> Remember when qmake-utils was inside qt4-r2? I don't really care what
> functions are exported, unless they interact in complex ways (like for
> multilib eclasses and python eclasses) or unless the eclass
> documentation/policy specifically says you MUST call all of them (like it is
> policy for games.eclass, but poorly documented afair).
qt4-r2 these days needs to go away; I remove usage of it as I come across it.
Comment 11 Andreas K. Hüttel archtester gentoo-dev 2014-06-14 18:01:53 UTC
Instead of fundamental bikeshedding, I suggest we start testing this in the KDE overlay.
Comment 12 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2014-06-14 18:10:19 UTC
Well, we may want to split out the CMakeFiles-specific code to a separate function so that people could use it without getting whole src_prepare().
Comment 13 Michael Palimaka (kensington) gentoo-dev 2014-06-14 18:18:03 UTC
epatch_user already will only apply once, I wonder if it would make sense to introduce a wrapper function for [[ ${PATCHES[@]} ]] && epatch "${PATCHES[@]}" with the same logic.
Comment 14 Michael Palimaka (kensington) gentoo-dev 2014-06-21 17:57:34 UTC
Doing some quick grepping, it looks like lots (>500) ebuilds override src_prepare without calling cmake-utils_src_prepare.
Comment 15 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2014-06-21 20:19:11 UTC
Sounds like we're going to need another patch.
Comment 16 Jonathan Callen (RETIRED) gentoo-dev 2014-06-21 20:19:44 UTC
(In reply to Michael Palimaka (kensington) from comment #14)
> Doing some quick grepping, it looks like lots (>500) ebuilds override
> src_prepare without calling cmake-utils_src_prepare.

After filtering out the ones that call kde4-base_src_prepare or kde4-meta_src_prepare (kde4-meta_src_prepare calls kde4-base_src_prepare, which calls cmake-utils_src_prepare), I count 429 ebuilds, from 223 different packages. Still a lot, but not quite the >500 quoted earlier.
Comment 17 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2014-06-22 09:22:19 UTC
So, the alternatives are:

1. split src_configure() into 'generic' and 'per-ABI' parts -- achievable with cmake-multilib but i strongly dislike it since it will be a bit confusing and will mean that cmake-multilib != cmake-utils+multilib-minimal,

2. try to use some atomic operations (possible at all?),

3. add locking and stuff -- ugly.
Comment 18 Michael Palimaka (kensington) gentoo-dev 2014-06-22 15:02:28 UTC
Would it be possible to change the behaviour based on EAPI? The number of ebuilds to mix may be more manageable if we restrict the change to EAPI 5 and later.
Comment 19 Julian Ospald 2014-06-22 15:06:08 UTC
(In reply to Michael Palimaka (kensington) from comment #18)
> Would it be possible to change the behaviour based on EAPI? The number of
> ebuilds to mix may be more manageable if we restrict the change to EAPI 5
> and later.

Sure it is. That's what I proposed for the deprecation of base.eclass inherits as well. It may just look less pretty.
Comment 20 Heiko Schäfer 2015-10-24 03:12:36 UTC
Could it be that thus bug currently brings a quite large amount of KDE packages to fail to emerge?
Comment 21 Michael Palimaka (kensington) gentoo-dev 2015-11-18 09:31:13 UTC
Fixed in overlay for EAPI 6 and later, please review.

https://gitweb.gentoo.org/proj/kde.git/commit/?id=28ab4b2c0a74db3800bb8d2796644bed7b5b89fd
Comment 22 Michael Palimaka (kensington) gentoo-dev 2016-01-25 14:12:21 UTC
Thanks, fixed in git.

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=66f8e27bf31241fa503764fe52fd79c04c852e03