summaryrefslogtreecommitdiff
path: root/eclass
Commit message (Collapse)AuthorAgeFilesLines
* python-utils-r1.eclass: Redo cross-prefix support using sysconfigJames Le Cuirot2023-09-121-8/+6
| | | | | | | | We recently supported cross-prefix by rewriting PYTHON_SITEDIR and PYTHON_INCLUDEDIR from BROOT to EPREFIX. We now know that you can get sysconfig to use EPREFIX in the first place, which is cleaner. Signed-off-by: James Le Cuirot <chewi@gentoo.org>
* qt6-build.eclass: include patch version in subslot for >=6.5.3Ionen Wolkens2023-09-111-1/+5
| | | | | | | | | | | | | | | | This matches Qt5 which had been doing the same. While working on qt-creator bump, noticed that it broke with qtquick3d-6.5.9999, which turned out because of changes in private APIs that will land in 6.5.3. In other words, it is going to need a rebuild when that lands but current SLOT=0/6.5 do not allow this. This could be a one-off issue but let's stay safer when private APIs are abused. This also keeps the 9999 in live subslot, so switching between live and releases will trigger rebuilds too. Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* cmake.eclass: remove USER_VARIABLE from CMAKE_SKIP_TESTSIonen Wolkens2023-09-111-1/+0
| | | | | | | | | This is an array, and users cannot even set arrays through the environment. Must have been a copy/paste oversight (skipping ML review). Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* Revert "qt6-build.eclass: switch examples dir to /usr/lib*/qt6/examples"Ionen Wolkens2023-09-091-1/+1
| | | | | | | | | | | | | | This reverts commit c2d1b889127af2b11559f0ac3c41313058a4969a. See bug #881433, turns out probably should not build examples. So old location makes more sense if we are only going to install sources in it. Note does mean qtbase will need to be rebuilt before start using that location though (unused currently). Bug: https://bugs.gentoo.org/881433 Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: pass eclass' cmakeargs before the ebuild'sIonen Wolkens2023-09-091-7/+7
| | | | | | | | | | To allow ebuilds to override default options if ever needed. wrt == *a*, not super necessary but still checked given this avoids picking up a mycmakeargs that may be set in the environment (arrays are always from ebuilds). Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: minor style & comments adjustmentsIonen Wolkens2023-09-091-8/+7
| | | | | | | | | | wrt skip->error comment, shortened partially for correctness. Most packages still fail either way due to `ninja install` having nothing to do (unless some files did get registered for install anyway). Albeit still want this to error during configure when required conditions are not met either way. Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* eclass: remove obsolete python2.7 code from mozcoreconf-v6.eclassMyckel Habets2023-09-091-7/+0
| | | | | | | Closes: https://bugs.gentoo.org/698980 Signed-off-by: Myckel Habets <gentoo-bugs@habets-dobben.nl> Closes: https://github.com/gentoo/gentoo/pull/32682 Signed-off-by: Joonas Niilola <juippis@gentoo.org>
* qt6-build.eclass: more aggressively disable cpu flags mismatchIonen Wolkens2023-09-071-1/+1
| | | | | Closes: https://bugs.gentoo.org/913843 Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: error harderIonen Wolkens2023-09-071-1/+1
| | | | | | Oops. Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: abort build rather than skip on deps issuesIonen Wolkens2023-09-071-0/+6
| | | | | | | | | | | | | | Does not cover everything, there are some more "custom" checks that may either abort or skip. This is for the generic top level one that is the same across all of dev-qt/*:6 Afaik none of these should be able to trigger right now, but not impossible been overlooking if it just been skipped. Skipping+succeeding on tinderboxes that use minimal dependencies may especially lead to confusing issues without this. Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* llvm.org.eclass: Add 18.0.0_pre20230906 snapshotMichał Górny2023-09-061-0/+3
| | | | Signed-off-by: Michał Górny <mgorny@gentoo.org>
* llvm.org.eclass: Fix handling patchset with only one componentMichał Górny2023-09-051-1/+1
| | | | | | | | Fix the irrelevant patch removal logic not to invoke rm(1) with no arguments if the patchset contains only patches for the current component. Signed-off-by: Michał Górny <mgorny@gentoo.org>
* qt6-build.eclass: re-arrange QT6_BUILD_TYPE, add pre-releaseIonen Wolkens2023-09-051-28/+26
| | | | | | | | | | | | | | | | If add _beta and _rc odds are will not want them keyworded by default, but == release will keyword them all the same so need something different. If do want to keyword or match both for one reason or another, can still do == *release. Re-arranged to avoid repeating SRC_URI/QT6_P/S/etc... albeit it does make it a bit less clear (then again there's not much going on there). Also lets us merge the inherit block from below and inherit earlier for less SRC_URI+S inherit environment pollution. Also document QT6_BUILD_TYPE for EclassDocMissingVar. Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: switch examples dir to /usr/lib*/qt6/examplesIonen Wolkens2023-09-051-1/+1
| | | | | | | | | | | | | | | | | | | | | This is used to install compiled test executables (not source examples or similar), meant to be executed from qtcreator (not that I've tried it). We do not install examples (yet), so no need to worry about files or qtbase remembering a bad path. Looking at other distros (at least those that do not set this to a docdir like we were and there are many), putting this under lib/*qt6/ alongside qt6/bin seems to be the typical choice. For actual source code examples, Qt has opted to not support installing these anymore (QTBUG-86302) so we'd have to doins -r ourselves either way, likely like normal docs unless something expects to find these in the Qt examples dir. Bug: https://bugs.gentoo.org/881433 Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: skip filter-lto if custom-cflags existsIonen Wolkens2023-09-051-1/+1
| | | | | | | | Do not think this is particularly useful, but it is to avoid false advertising when IUSE exists. As usual anyone enabling this is on their own. Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: move filter-lto to src_prepareIonen Wolkens2023-09-051-11/+11
| | | | | | | | While it feels more right in configure (along with match_cpu_flags), sometime need to check/use compiler flags in src_configure and it is troublesome if not modified until call the eclass' src_configure. Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: workaround mismatching cpu flags setsIonen Wolkens2023-09-051-1/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | qsimd_p.h tries determine if x86-64-v3 or v4 sets supported by the compiler+flags seem complete, and errors out if not. This works out rather badly on Gentoo, even -march=native can fail with some hard. With qsimd_p.h being a private header this only affects dev-qt/* packages, but fwics still need to fix all of dev-qt/* at once given they are going to be using private bits from qtbase. Debated a few options for this: 1. Patch headers (like old fix from bug #898644), but just not setting e.g. __haswell__ is not enough when __AVX2__ still confuses some code. Then unsetting these without going through the compiler leads to left over macros and more confusion. Besides... changing system headers behavior (why is __AVX2__ undef with -mavx2!?) only in distros tend to end in disaster. 2. Detect issues in qtbase ebuild, then disable x86intrin altogether if needed (carries over to other modules) + warn users (aka figure it out yourself). Not really great, users may also end up mismatching flags between dev-qt/ to fix this and then run into issues anyway. 3. Backport the next (wip/unmerged) upstream fix[1] but wait, looks like we are currently still playing whack-a-mole: # if defined(__AVX2__) // List of features present with -march=x86-64-v3 and not architecturally // implied by __AVX2__ # define ARCH_HASWELL_MACROS \ (__AVX2__ && __BMI__ && __BMI2__ && __F16C__ \ && __FMA__ && __LZCNT__ && __POPCNT__) # if ARCH_HASWELL_MACROS == 0 # error "Please enable all x86-64-v3 extensions; <snip> ...so -mno-avx2 -mfma (bug #908420) is fine, older (bug #898644) is too, but if for any reason (VMs, buggy hardware, or the machine without F16C from bug #910419) anything else is disabled, then the issue is still there and may in fact trigger more than before. 4. Similarly to #2, detect issues but in the eclass. Then append -mno-* as needed to flags. Not too bad but passing -mno-* leads us to bug #913400. 5. Based on users flags, pick highest usable -march=x86-64-v* and strip everything else (or strip -march too...). Messy and think users wouldn't be happy about this. It would be what upstream likely wants us to do though, and causes no further problems. Ultimately went with #4 for now, bug #913400 needs fixing either way. - missing from set in #3 += -mno-avx2 (until #3, also -mno-fma) - missing the AVX512* checked in qsimd_h += -mno-avx512* (then let compiler disable features that depend on these) Not great but better than doing nothing, no-op for non-affected users. [1] https://codereview.qt-project.org/c/qt/qtbase/+/498799 Bug: https://bugs.gentoo.org/898644 Bug: https://bugs.gentoo.org/913400 Closes: https://bugs.gentoo.org/908420 Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: export src_unpack to aid live ebuildsIonen Wolkens2023-09-051-1/+11
| | | | | | | | | | | | | | | | | git-r3_src_unpack does not run default/unpack, and then if we have something else (patchset, assets, or so to unpack) that we need in live ebuilds as well they'll be skipped. Currently only needed by qtwebengine, but it would not hurt to have it ready whenever needed in all esp. given ebuilds do not handle git-r3 directly (qt6-build does). They would need to conditionally inherit git-r3 (again) to make pkgcheck happy (and @PROVIDES would be slightly wrong given conditions). Tend to feel it would have been nicer if git-r3_src_unpack did this by itself though. Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: use upstream intended user_facing_tool_links.txtIonen Wolkens2023-09-051-4/+42
| | | | | | | | | | | | | | | | | | Primary goal is to reduce the amount of things we need to track, both what to install and when the symlink needs to be created based on USE. Without this, a module could introduce a new tool and may not even notice that it needs a symlink. Essentially replaces qt6_symlink_binary_to_path which I do not believe will have further uses (thus marking deprecated). That is, unless we want to diverge from upstream intended links, but even then may as well use a normal dosym in ebuilds. Also re-arrange mycmakeargs a bit because yet again qttranslations is the odd one out. Bug: https://bugs.gentoo.org/863395 Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: drop qtbase dependencyIonen Wolkens2023-09-051-4/+0
| | | | | | | | | | | | qttest is now built by default and there is no need to require USE=gui, and can rely on ebuild's RDEPEND for qtbase itself. Does come with a caveat that tests may fail if have USE=-gui until update to >=qtbase-6.5.2-r1, but does not seem worth having permanent logic to enforce that as it'll be cleared with 6.5.3 ebuilds depending on =6.5.3*. Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: prevent passing -O2 after user's C(XX)FLAGSIonen Wolkens2023-09-051-0/+3
| | | | | | | | Skip on qttranslation given it is the only that compiles nothing, and so gives a unused option warning. Closes: https://bugs.gentoo.org/911822 Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: filter-lto globallyIonen Wolkens2023-09-051-1/+12
| | | | | | | | | | | | | | | Been using LTO by default when testing packages and, while working on Qt6 test support, just kept running into more and more components hitting test failures only with LTO. Formerly added this directly in ebuilds, but at this point feel this warrent a global filter until can figure out what's wrong. Technically needs revbumps but Qt 6.5.3 is not that far away and that will take care of rebuilds. Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: add QT6_MKSPECSDIR for consistency, drop TESTSDIRIonen Wolkens2023-09-051-1/+1
| | | | | | | | | | | | qtbase ebuild currently sets /mkspecs itself instead, chances are may never need the variable but there's no need to have an odd one out TESTSDIR was unused, and currently installs to /usr/tests which we are deleting anyway -- and would give QA if that failed (note changing the path can be messy given qtbase will keep telling other packages to use old paths until it is itself updated). Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: support+unrestrict tests, export src_test+installIonen Wolkens2023-09-051-10/+48
| | | | | | | | | | | | Qt5's may be a lost cause at this point wrt bug #457182, but can do this fairly easily for Qt6 going forward (or at least for most components, qtbase, qttools, and qtdeclarative are messier). About src_install, it was defined but not exported. Not an issue before but now we need it for cleanups. Bug: https://bugs.gentoo.org/457182 Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: add cmake to @PROVIDESIonen Wolkens2023-09-051-0/+1
| | | | | | | | | | | Essentially a wrapper to cmake.eclass and may as well advertise the various things from it as usable (currently already using e.g. "mycmakeargs" rather than some private "myconf" like qt5-build). Should be no reasons to call phases directly, but CMAKE_SKIP_TESTS and BUILD_DIR (rather than the removed QT6_BUILD_DIR) can be useful. Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: drop virtualxIonen Wolkens2023-09-051-9/+2
| | | | | | | | | Currently unused given ebuilds were not wired for tests, and hardly needed either way with QT_QPA_PLATFORM=offscreen. If need arise, ebuild should inherit virtualx directly. Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: drop IUSE=debug and QT6_{VERSION_MINOR,BUILD_DIR}Ionen Wolkens2023-09-051-9/+1
| | | | | | | | | | | | | | | | | | | | | All these are currently unused by both the eclass and consumers. * IUSE=debug: This was used by qt5-build but is no-op here. There's a commented out debug feature in qtwebengine:6, but if that is ever used it should just add its own IUSE. * QT6_VERSION_MINOR: Undocumented and assume may be a unused left-over from writing the case ${PV}. Dropping saves a $(ver_cut) fork in global scope. Could add properly if ever felt needed, but for now... * QT6_BUILD_DIR: cmake.eclass' BUILD_DIR should be used instead, this variable is essentially just guessing what cmake will use and could be wrong if an ebuild changes anything from cmake defaults. Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* qt6-build.eclass: tidy eclass a bitIonen Wolkens2023-09-051-59/+61
| | | | | | | | | | | | | | | | | | | | | | | | No functional changes here unless (at most) consumers were misusing internals, so kept as a single commit for convenience. Rough overview: * streamline use of quotes * minor descriptions adjustments * replace MY_P with QT6_P (MY_* tend to be reserved for ebuilds), and then unset it to avoid pkgcheck undocumented variables warnings * use readonly keyword with assignments to avoid maintaining two lists of variables * re-order qt6_prepare_env, and keep separate blocks for QT6_* variables referenced by other variables to avoid mis-ordering * avoid calling $(get_libdir) twice for nothing by re-using LIBDIR * rename internal qt6_prepare_env to _qt6-build_prepare_env * swap SLOT from ver_cut to ${PV%.*}, both to be consistent with usage in SRC_URI but also to optimize (less subshells in global scope) Note have no intention to keep in-sync with qt5-build, considering it legacy and Qt5 just needs to keep working until it can go Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
* kernel-build.eclass: set KERNEL_EFI_ZBOOT if enabled in .configAndrew Ammerlaan2023-09-041-0/+6
| | | | | | | | | With this changes we now also support enabling CONFIG_EFI_ZBOOT in user /etc/kernel/config.d settings. Closes: https://bugs.gentoo.org/897684 Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org> Signed-off-by: Michał Górny <mgorny@gentoo.org>
* dist-kernel-utils.eclass: introduce KERNEL_EFI_ZBOOTAndrew Ammerlaan2023-09-041-1/+8
| | | | | | | | This new variable will track if CONFIG_EFI_ZBOOT is enabled or not Closes: https://bugs.gentoo.org/897684 Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org> Signed-off-by: Michał Górny <mgorny@gentoo.org>
* dist-kernel-utils.eclass: support CONFIG_EFI_ZBOOT with USE=securebootAndrew Ammerlaan2023-09-021-5/+6
| | | | | | | | | This config options changes the name of the final image Closes: https://bugs.gentoo.org/897684 Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org> Closes: https://github.com/gentoo/gentoo/pull/32532 Signed-off-by: Michał Górny <mgorny@gentoo.org>
* kernel-build.eclass: fix kernel image signing on arm64 and riscvAndrew Ammerlaan2023-09-021-0/+14
| | | | | | | | | | | Arm64/riscv have no compressed kernel support. With CONFIG_EFI_ZBOOT enabled the build system will build a bootable image with its own compressor that we can then sign. With CONFIG_EFI_ZBOOT disabled we end up with a compressed kernel image that must be uncompressed before signing and requires the bootloader to uncompress it before it can boot. Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org> Signed-off-by: Michał Górny <mgorny@gentoo.org>
* eutils.eclass: Drop EAPI 7Ulrich Müller2023-08-291-24/+2
| | | | | | | Remove placeholders for emktemp, path_exists and use_if_iuse, which are all non-functional since more than one year. Signed-off-by: Ulrich Müller <ulm@gentoo.org>
* llvm.org.eclass: Add 18.0.0_pre20230829 snapshotMichał Górny2023-08-291-0/+3
| | | | Signed-off-by: Michał Górny <mgorny@gentoo.org>
* llvm.org.eclass: Remove old snapshot supportMichał Górny2023-08-291-9/+0
| | | | Signed-off-by: Michał Górny <mgorny@gentoo.org>
* kernel-2.eclass: move ppc64 hack before crossdev inheritAlfred Persson Forsberg2023-08-291-5/+7
| | | | | | | Closes: https://bugs.gentoo.org/913127 Signed-off-by: Alfred Persson Forsberg <cat@catcream.org> Closes: https://github.com/gentoo/gentoo/pull/32501 Signed-off-by: Sam James <sam@gentoo.org>
* rust-toolchain.eclass: exclude mips from SRC_URI for versions >= 1.72.0WANG Xuerui2023-08-281-11/+17
| | | | | | | Upstream dropped the mips*-linux-gnu* targets to Tier 3, so until the situation is resolved there will not be prebuilt binaries from upstream. Signed-off-by: WANG Xuerui <xen0n@gentoo.org>
* tree-sitter-grammar.eclass: force use of local parser.hSam James2023-08-271-5/+4
| | | | | | | | | | | | | | | There shouldn't be a system-wide copy of parser.h and upstream plan on dropping this from dev-libs/tree-sitter as it can cause issues if there's a mismatch between the version used for the bundled generated parser vs the header used to build the library. Force use of the correct one in the dist tarball at src/tree_sitter/parser.h instead. Drop the dependency on dev-libs/tree-sitter given we were only depending on it for this header. Bug: https://github.com/tree-sitter/tree-sitter-bash/issues/199 Bug: https://bugs.gentoo.org/912716 Signed-off-by: Sam James <sam@gentoo.org>
* dist-kernel-utils.eclass: only sign image if it is a UKIAndrew Ammerlaan2023-08-271-4/+4
| | | | | | | | | If we are not using UKIs we don't have to do anything since the kernel image was already signed in kernel-build.eclass. Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org> Closes: https://github.com/gentoo/gentoo/pull/32464 Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org>
* kernel-build.eclass: sign the kernel image earlier in src_installAndrew Ammerlaan2023-08-271-0/+5
| | | | | | | | | | | | | | | By signing it in src_install instead of pkg_postinst the signed version is included in any generated binpkg. This is useful for enabling secureboot on machines that do not have the secureboot private key available. This change makes it possible to distribute a signed kernel image in sys-kernel/gentoo-kernel-bin. Note, UKIs are always generated locally, so if UKIs are used these will still have to be signed in pkg_postinst and therefore the private key is still required on all systems with USE=secureboot and uefi=yes in dracut.conf. Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org>
* secureboot.eclass: secureboot_sign_efi_file allow call with 1 argAndrew Ammerlaan2023-08-271-3/+5
| | | | | | | | | | Use the input file as the output file if it is not specified. Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org> sb-fix Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org>
* kernel-install.eclass: enforce signed modules in test with USE=modules-signAndrew Ammerlaan2023-08-271-0/+4
| | | | | | | | | | | | | | This only has effect when building the gpkg for gentoo-kernel-bin which overrides CONFIG_MODULE_SIG_FORCE. To ensure that the module signing was successful we instruct the kernel to reject modules with an invalid signature. This has no effect on other kernel packages which already have CONFIG_MODULE_SIG_FORCE=y. Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org> Closes: https://github.com/gentoo/gentoo/pull/32463 Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org>
* elisp-common.eclass: Fix typo in commentUlrich Müller2023-08-261-1/+1
| | | | Signed-off-by: Ulrich Müller <ulm@gentoo.org>
* elisp-common.eclass: Rewrap lines in eclass documentationUlrich Müller2023-08-261-26/+30
| | | | | | No changes of the text. Signed-off-by: Ulrich Müller <ulm@gentoo.org>
* eclass/elisp-common.eclass: add elisp-org-export-toMaciej Barć2023-08-261-0/+33
| | | | | Signed-off-by: Maciej Barć <xgqt@gentoo.org> Signed-off-by: Ulrich Müller <ulm@gentoo.org>
* elisp-common.eclass: Document sed script in elisp-site-file-installUlrich Müller2023-08-261-2/+8
| | | | | | | Even though it is a simple one-liner, some people find it difficult to read. Signed-off-by: Ulrich Müller <ulm@gentoo.org>
* llvm.org.eclass: Add 18.0.0_pre20230825 snapshotMichał Górny2023-08-251-0/+3
| | | | Signed-off-by: Michał Górny <mgorny@gentoo.org>
* docs.eclass: fix sphinx/mkdocs docs building in pep517 modeAndrew Ammerlaan2023-08-251-5/+23
| | | | | | | | | | | This patch copies the sphinx-build logic from python-utils-r1.eclass to use 'python -m mkdocs' instead of plain 'mkdocs' whenever possible. This fixes building mkdocs themes in pep517 mode where the very themes we are installing would otherwise be unavailable for building the documentation. Closes: https://bugs.gentoo.org/878047 Closes: https://bugs.gentoo.org/877823 Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org>
* cmake.eclass: Remove duplicate eninja call from cmake_buildMichał Górny2023-08-231-1/+0
| | | | Signed-off-by: Michał Górny <mgorny@gentoo.org>
* kernel-2.eclass: Use cross.eclass for figuring out CTARGETAlfred Persson Forsberg2023-08-221-6/+1
| | | | | | | | Use crossdev.eclass instead of manually parsing category. This makes it automatically support LLVM/Clang crossdev. Signed-off-by: Alfred Persson Forsberg <cat@catcream.org> Signed-off-by: Sam James <sam@gentoo.org>