• Re: [gentoo-dev] [PATCH] toolchain-funcs.eclass: tc-env_build: override

    From Mike Gilbert@21:1/5 to chewi@gentoo.org on Fri Apr 19 20:50:01 2024
    On Fri, Apr 19, 2024 at 1:56 PM James Le Cuirot <chewi@gentoo.org> wrote:

    On Fri, 2024-04-19 at 12:14 -0400, Mike Gilbert wrote:
    When using the CBUILD toolchain, it makes no sense to look for headers
    and libraries in the CHOST-based SYSROOT.

    Signed-off-by: Mike Gilbert <floppym@gentoo.org>
    ---
    eclass/toolchain-funcs.eclass | 8 +++++++-
    1 file changed, 7 insertions(+), 1 deletion(-)

    diff --git a/eclass/toolchain-funcs.eclass b/eclass/toolchain-funcs.eclass index cde84e6f34c8..58a718180079 100644
    --- a/eclass/toolchain-funcs.eclass
    +++ b/eclass/toolchain-funcs.eclass
    @@ -1,4 +1,4 @@
    -# Copyright 2002-2023 Gentoo Authors
    +# Copyright 2002-2024 Gentoo Authors
    # Distributed under the terms of the GNU General Public License v2

    # @ECLASS: toolchain-funcs.eclass
    @@ -384,6 +384,12 @@ tc-export_build_env() {
    # the target build system does not check.
    tc-env_build() {
    tc-export_build_env
    + local -x SYSROOT=
    + if [[ ${EAPI} == 6 ]]; then
    + local -x ESYSROOT=${EPREFIX}
    + else
    + local -x ESYSROOT=${BROOT}
    + fi
    CFLAGS=${BUILD_CFLAGS} \
    CXXFLAGS=${BUILD_CXXFLAGS} \
    CPPFLAGS=${BUILD_CPPFLAGS} \

    What do you need this for? Just wondering because I wouldn't have thought anything you wrap with tc-env_build would care about ESYSROOT.

    I ran into this when converting dev-build/ninja to use cmake.eclass.
    Basically, I need to invoke ninja to build its own docs. I accomplish
    this by building a second "native" (CBUILD) copy of ninja when
    cross-compiling.

    https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1122aa04647a60de150811c133490d248de4bc43

    cmake.eclass utilizes ESYSROOT when SYSROOT is not empty.

    https://gitweb.gentoo.org/repo/gentoo.git/tree/eclass/cmake.eclass?id=1122aa04647a60de150811c133490d248de4bc43#n503

    If I don't set SYSROOT to empty when building the "native" ninja, it
    explodes with a segfault when I invoke it in the ebuild.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)