• Beware; for I am fearless, and therefore powerful.

    From Little Mikey@1:153/7001 to Mary Wollstonecraft Shelley on Wed Aug 1 20:47:54 2018
    Attention Mary Wollstonecraft Shelley,

    -={ '<Esc>:read !/lib/libc.so.6' starts }=-
    GNU C Library (GNU libc) stable release version 2.28.
    Copyright (C) 2018 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.
    There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
    PARTICULAR PURPOSE.
    Compiled by GNU CC version 8.2.0.
    libc ABIs: UNIQUE IFUNC ABSOLUTE
    For bug reporting instructions, please see: <http://www.gnu.org/software/libc/bugs.html>.
    -={ '<Esc>:read !/lib/libc.so.6' ends }=-

    End transmission.

    ... Fudd's First Law of Opposition:
    If you push something hard enough, it will fall over.
    --- GNU bash, version 4.4.23(1)-release (x86_64-silvermont-linux-gnu)
    * Origin: Little Mikey's Brain - Ladysmith BC, Canada (1:153/7001)
  • From Benny Pedersen@2:230/0 to Little Mikey on Fri Aug 3 11:50:54 2018
    Hello Little!

    01 Aug 2018 20:47, Little Mikey wrote to Mary Wollstonecraft Shelley:

    -={ '<Esc>:read !/lib/libc.so.6' starts }=-
    GNU C Library (GNU libc) stable release version 2.28.

    +1

    i have glibc from truck github if i want to use it, there is no safe way back if emerged

    could you test this ? :)

    2.28 is not in gentoo yet

    Compiled by GNU CC version 8.2.0.
    libc ABIs: UNIQUE IFUNC ABSOLUTE

    +1

    still miss you on gentoo :)


    Regards Benny

    ... there can only be one way of life, and it works :)

    --- Msged/LNX 6.1.2 (Linux/4.17.11-gentoo (x86_64))
    * Origin: I will always keep a PC running CPM 3.0 (2:230/0)
  • From Little Mikey@1:153/7001 to Benny Pedersen on Fri Aug 3 21:14:14 2018
    Attention Benny Pedersen,

    i have glibc from truck github if i want to use it, there is no
    safe way back if emerged

    Understood. glibc is the trickiest package to upgrade since everything relies on it. That is why special partitions are deployed here for experimenting with
    glibc. Having said that, this reply is being entered on a booted rootfs based on glibc-2.28 with a bootstrapped gcc-8.2.0 and at this writing a linux-4.17.11
    kernel. The original post you are replying to was also from this same rootfs.

    could you test this ? :)

    Do you mean the gentoo package? If so then there is currently no machine set up here to make that doable. The two machines are both set up to experiment with the new glibc-2.28 and both have a backup bootable partition that is stable just in case they are needed. So far they aren't but it has only been a
    couple days now.

    End transmission.

    ... Fudd's First Law of Opposition:
    If you push something hard enough, it will fall over.
    --- GNU bash, version 4.4.23(1)-release (x86_64-silvermont-linux-gnu)
    * Origin: Little Mikey's Brain - Ladysmith BC, Canada (1:153/7001)
  • From Maurice Kinal@2:280/464.113 to Little Mikey on Fri Aug 3 23:13:07 2018
    Hallo Little Mikey!

    glibc-2.28 with a bootstrapped gcc-8.2.0

    -={ '<Esc>:read !/lib/libc.so.6' starts }=-
    GNU C Library (GNU libc) stable release version 2.28.
    Copyright (C) 2018 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.
    There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
    PARTICULAR PURPOSE.
    Compiled by GNU CC version 8.2.0.
    libc ABIs: UNIQUE IFUNC ABSOLUTE
    For bug reporting instructions, please see: <http://www.gnu.org/software/libc/bugs.html>.
    -={ '<Esc>:read !/lib/libc.so.6' ends }=-

    and at this writing a linux-4.17.11 kernel

    AHA! Consider yourself one-upped;

    -={ '<Esc>:read !uname -a' starts }=-
    Linux lilmikey 4.17.12 #1 SMP Fri Aug 3 21:44:47 UTC 2018 x86_64 Intel(R) Atom(TM) CPU N2800 @ 1.86GHz GenuineIntel GNU/Linux
    -={ '<Esc>:read !uname -a' ends }=-

    it has only been a couple days now.

    Confirmed except the uptime on the x86_64-bonnell-linux-gnu machine shows;

    -={ '<Esc>:read !uptime' starts }=-
    23:20:43 up 21 min, 1 user, load average: 0.00, 0.08, 0.17
    -={ '<Esc>:read !uptime' ends }=-

    It still has that new kernel smell.

    Het leven is goed,
    Maurice

    ... Huil niet om mij, ik heb vi.
    --- GNU bash, version 4.4.23(1)-release (x86_64-bonnell-linux-gnu)
    * Origin: Little Mikey's EuroPoint - Ladysmith BC, Canada (2:280/464.113)
  • From Benny Pedersen@2:230/0 to Little Mikey on Sat Aug 4 23:16:56 2018
    Hello Little!

    03 Aug 2018 21:14, Little Mikey wrote to Benny Pedersen:

    i have glibc from truck github if i want to use it, there is no
    safe way back if emerged

    Understood. glibc is the trickiest package to upgrade since
    everything relies on it.

    +1

    That is why special partitions are deployed
    here for experimenting with glibc.

    how is the layout with it ?

    lvm2 snapshot rollbacks ?

    Having said that, this reply is
    being entered on a booted rootfs based on glibc-2.28 with a
    bootstrapped gcc-8.2.0 and at this writing a linux-4.17.11 kernel.
    The original post you are replying to was also from this same rootfs.

    i could do this on gentoo, i know enough to hack this with gentoo portage, but i dont know how cold it could be on the maunting top :)

    could you test this ? :)
    Do you mean the gentoo package?

    ----- glibc-9999.ebuild begins -----
    # Copyright 1999-2018 Gentoo Foundation
    # Distributed under the terms of the GNU General Public License v2

    EAPI=6

    inherit prefix eutils versionator toolchain-funcs flag-o-matic gnuconfig \
    multilib systemd multiprocessing

    DESCRIPTION="GNU libc C library"
    HOMEPAGE="https://www.gnu.org/software/libc/"
    LICENSE="LGPL-2.1+ BSD HPND ISC inner-net rc PCRE"
    RESTRICT="strip" # Strip ourself #46186
    SLOT="2.2"

    EMULTILIB_PKG="true"

    if [[ ${PV} == 9999* ]]; then
    EGIT_REPO_URI="https://sourceware.org/git/glibc.git"
    inherit git-r3
    else
    # KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
    KEYWORDS=""
    SRC_URI="mirror://gnu/glibc/${P}.tar.xz"
    fi

    RELEASE_VER=${PV}

    GCC_BOOTSTRAP_VER=20180511

    # Gentoo patchset
    PATCH_VER=7

    SRC_URI+=" https://dev.gentoo.org/~dilfridge/distfiles/${P}-patches-${PATCH_VER}.tar.bz2"
    SRC_URI+=" multilib? ( https://dev.gentoo.org/~dilfridge/distfiles/gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}.tar.xz )"

    IUSE="audit caps cet compile-locales doc gd hardened headers-only +multiarch multilib nscd profile selinux suid systemtap test vanilla"

    # Minimum kernel version that glibc requires
    MIN_KERN_VER="3.2.0"

    # Here's how the cross-compile logic breaks down ...
    # CTARGET - machine that will target the binaries
    # CHOST - machine that will host the binaries
    # CBUILD - machine that will build the binaries
    # If CTARGET != CHOST, it means you want a libc for cross-compiling.
    # If CHOST != CBUILD, it means you want to cross-compile the libc.
    # CBUILD = CHOST = CTARGET - native build/install
    # CBUILD != (CHOST = CTARGET) - cross-compile a native build
    # (CBUILD = CHOST) != CTARGET - libc for cross-compiler
    # CBUILD != CHOST != CTARGET - cross-compile a libc for a cross-compiler
    # For install paths:
    # CHOST = CTARGET - install into /
    # CHOST != CTARGET - install into /usr/CTARGET/
    #
    export CBUILD=${CBUILD:-${CHOST}}
    export CTARGET=${CTARGET:-${CHOST}}
    if [[ ${CTARGET} == ${CHOST} ]] ; then
    if [[ ${CATEGORY} == cross-* ]] ; then
    export CTARGET=${CATEGORY#cross-}
    fi
    fi

    # We need a new-enough binutils/gcc to match upstream baseline.
    # Also we need to make sure our binutils/gcc supports TLS.
    COMMON_DEPEND="
    nscd? ( selinux? (
    audit? ( sys-process/audit )
    caps? ( sys-libs/libcap )
    ) )
    suid? ( caps? ( sys-libs/libcap ) )
    selinux? ( sys-libs/libselinux )
    systemtap? ( dev-util/systemtap )
    "
    DEPEND="${COMMON_DEPEND}
    >=app-misc/pax-utils-0.1.10
    sys-devel/bison
    !<sys-apps/sandbox-1.6
    !<sys-apps/portage-2.1.2
    !<sys-devel/bison-2.7
    !<sys-devel/make-4
    doc? ( sys-apps/texinfo )
    test? ( >=net-dns/libidn2-2.0.5 )
    "
    RDEPEND="${COMMON_DEPEND}
    >=net-dns/libidn2-2.0.5
    sys-apps/gentoo-functions
    !sys-kernel/ps3-sources
    !sys-libs/nss-db
    "

    if [[ ${CATEGORY} == cross-* ]] ; then
    DEPEND+=" !headers-only? (
    >=${CATEGORY}/binutils-2.24
    >=${CATEGORY}/gcc-4.9
    )"
    [[ ${CATEGORY} == *-linux* ]] && DEPEND+=" ${CATEGORY}/linux-headers" else
    DEPEND+="
    >=sys-devel/binutils-2.24
    >=sys-devel/gcc-4.9
    virtual/os-headers
    "
    RDEPEND+=" vanilla? ( !sys-libs/timezone-data )"
    PDEPEND+=" !vanilla? ( sys-libs/timezone-data )"
    fi

    #
    # Small helper functions
    #

    is_crosscompile() {
    [[ ${CHOST} != ${CTARGET} ]]
    }

    just_headers() {
    is_crosscompile && use headers-only
    }

    alt_prefix() {
    is_crosscompile && echo /usr/${CTARGET}
    }

    # We need to be able to set alternative headers for compiling for non-native
    # platform. Will also become useful for testing kernel-headers without screwing # up the whole system.
    alt_headers() {
    echo ${ALT_HEADERS:=$(alt_prefix)/usr/include}
    }

    alt_build_headers() {
    if [[ -z ${ALT_BUILD_HEADERS} ]] ; then
    ALT_BUILD_HEADERS="${EPREFIX}$(alt_headers)"
    if tc-is-cross-compiler ; then
    ALT_BUILD_HEADERS=${SYSROOT}$(alt_headers)
    if [[ ! -e ${ALT_BUILD_HEADERS}/linux/version.h ]] ; then
    local header_path=$(echo '#include <linux/version.h>' | $(tc-getCPP ${CTARGET}) ${CFLAGS} 2>&1 | grep -o '[^"]*linux/version.h')
    ALT_BUILD_HEADERS=${header_path%/linux/version.h}
    fi
    fi
    fi
    echo "${ALT_BUILD_HEADERS}"
    }

    alt_libdir() {
    echo $(alt_prefix)/$(get_libdir)
    }
    alt_usrlibdir() {
    echo $(alt_prefix)/usr/$(get_libdir)
    }

    builddir() {
    echo "${WORKDIR}/build-${ABI}-${CTARGET}-$1"
    }

    do_compile_test() {
    local ret save_cflags=${CFLAGS}
    CFLAGS+=" $1"
    shift

    pushd "${T}" >/dev/null

    rm -f glibc-test*
    printf '%b' "$*" > glibc-test.c

    nonfatal emake -s glibc-test
    ret=$?

    popd >/dev/null

    CFLAGS=${save_cflags}
    return ${ret}
    }

    do_run_test() {
    local ret

    if [[ ${MERGE_TYPE} == "binary" ]] ; then
    # ignore build failures when installing a binary package #324685
    do_compile_test "" "$@" 2>/dev/null || return 0
    else
    if ! do_compile_test "" "$@" ; then
    ewarn "Simple build failed ... assuming this is desired
    #324685"
    return 0
    fi
    fi

    pushd "${T}" >/dev/null

    ./glibc-test
    ret=$?
    rm -f glibc-test*

    popd >/dev/null

    return ${ret}
    }

    setup_target_flags() {
    # This largely mucks with compiler flags. None of which should matter
    # when building up just the headers.
    just_headers && return 0

    case $(tc-arch) in
    x86)
    # -march needed for #185404 #199334
    # TODO: When creating the first glibc cross-compile, this test will
    # always fail as it does a full link which in turn requires glibc.
    # Probably also applies when changing multilib profile settings (e.g.
    # enabling x86 when the profile was amd64-only previously).
    # We could change main to _start and pass -nostdlib here so that we
    # only test the gcc code compilation. Or we could do a
    compile and
    # then look for the symbol via scanelf.
    if ! do_compile_test "" 'void f(int i, void *p) {if (__sync_fetch_and_add(&i, 1)) f(i, p);}\nint main(){return 0;}\n' 2>/dev/null ;
    then
    local t=${CTARGET_OPT:-${CTARGET}}
    t=${t%%-*}
    filter-flags '-march=*'
    export CFLAGS="-march=${t} ${CFLAGS}"
    einfo "Auto adding -march=${t} to CFLAGS #185404"
    fi
    ;;
    amd64)
    # -march needed for #185404 #199334
    # Note: This test only matters when the x86 ABI is enabled, so we could
    # optimize a bit and elide it.
    # TODO: See cross-compile issues listed above for x86.
    if ! do_compile_test "${CFLAGS_x86}" 'void f(int i, void *p) {if (__sync_fetch_and_add(&i, 1)) f(i, p);}\nint main(){return 0;}\n' 2>/dev/null ; then
    local t=${CTARGET_OPT:-${CTARGET}}
    t=${t%%-*}
    # Normally the target is x86_64-xxx, so turn that into the -march that
    # gcc actually accepts. #528708
    [[ ${t} == "x86_64" ]] && t="x86-64"
    filter-flags '-march=*'
    # ugly, ugly, ugly. ugly.
    CFLAGS_x86=$(CFLAGS=${CFLAGS_x86} filter-flags '-march=*'; echo "${CFLAGS}")
    export CFLAGS_x86="${CFLAGS_x86} -march=${t}"
    einfo "Auto adding -march=${t} to CFLAGS_x86 #185404"
    fi
    ;;
    mips)
    # The mips abi cannot support the GNU style hashes. #233233
    filter-ldflags -Wl,--hash-style=gnu -Wl,--hash-style=both
    ;;
    sparc)
    # Both sparc and sparc64 can use -fcall-used-g6. -g7 is bad, though.
    filter-flags "-fcall-used-g7"
    append-flags "-fcall-used-g6"

    # If the CHOST is the basic one (e.g. not sparcv9-xxx already),
    # try to pick a better one so glibc can use cpu-specific .S files.
    # We key off the CFLAGS to get a good value. Also need
    to handle
    # version skew.
    # We can't force users to set their CHOST to their exact machine
    # as many of these are not recognized by config.sub/gcc
    and such :(.
    # Note: If the mcpu values don't scale, we might try probing CPP defines.
    # Note: Should we factor in -Wa,-AvXXX flags too ? Or -mvis/etc... ?

    local cpu
    case ${CTARGET} in
    sparc64-*)
    case $(get-flag mcpu) in
    niagara[234])
    if version_is_at_least 2.8 ; then
    cpu="sparc64v2"
    elif version_is_at_least 2.4 ; then
    cpu="sparc64v"
    elif version_is_at_least 2.2.3 ; then
    cpu="sparc64b"
    fi
    ;;
    niagara)
    if version_is_at_least 2.4 ; then
    cpu="sparc64v"
    elif version_is_at_least 2.2.3 ; then
    cpu="sparc64b"
    fi
    ;;
    ultrasparc3)
    cpu="sparc64b"
    ;;
    *)
    # We need to force at least v9a because
    the base build doesn't
    # work with just v9.
    # https://sourceware.org/bugzilla/show_bug.cgi?id=19477
    [[ -z ${cpu} ]] && append-flags "-Wa,-xarch=v9a"
    ;;
    esac
    ;;
    sparc-*)
    case $(get-flag mcpu) in
    niagara[234])
    if version_is_at_least 2.8 ; then
    cpu="sparcv9v2"
    elif version_is_at_least 2.4 ; then
    cpu="sparcv9v"
    elif version_is_at_least 2.2.3 ; then
    cpu="sparcv9b"
    else
    cpu="sparcv9"
    fi
    ;;
    niagara)
    if version_is_at_least 2.4 ; then
    cpu="sparcv9v"
    elif version_is_at_least 2.2.3 ; then
    cpu="sparcv9b"
    else
    cpu="sparcv9"
    fi
    ;;
    ultrasparc3)
    cpu="sparcv9b"
    ;;
    v9|ultrasparc)
    cpu="sparcv9"
    ;;
    v8|supersparc|hypersparc|leon|leon3)
    cpu="sparcv8"
    ;;
    esac
    ;;
    esac
    [[ -n ${cpu} ]] && CTARGET_OPT="${cpu}-${CTARGET#*-}"
    ;;
    esac
    }

    setup_flags() {
    # Make sure host make.conf doesn't pollute us
    if is_crosscompile || tc-is-cross-compiler ; then
    CHOST=${CTARGET} strip-unsupported-flags
    fi

    # Store our CFLAGS because it's changed depending on which CTARGET
    # we are building when pulling glibc on a multilib profile
    CFLAGS_BASE=${CFLAGS_BASE-${CFLAGS}}
    CFLAGS=${CFLAGS_BASE}
    CXXFLAGS_BASE=${CXXFLAGS_BASE-${CXXFLAGS}}
    CXXFLAGS=${CXXFLAGS_BASE}
    ASFLAGS_BASE=${ASFLAGS_BASE-${ASFLAGS}}
    ASFLAGS=${ASFLAGS_BASE}

    # Over-zealous CFLAGS can often cause problems. What may work for one
    # person may not work for another. To avoid a large influx of bugs
    # relating to failed builds, we strip most CFLAGS out to ensure as few
    # problems as possible.
    strip-flags
    strip-unsupported-flags
    filter-flags -m32 -m64 '-mabi=*'

    # glibc aborts if rpath is set by LDFLAGS
    filter-ldflags '-Wl,-rpath=*'

    # #492892
    filter-flags -frecord-gcc-switches

    unset CBUILD_OPT CTARGET_OPT
    if use multilib ; then
    CTARGET_OPT=$(get_abi_CTARGET)
    [[ -z ${CTARGET_OPT} ]] && CTARGET_OPT=$(get_abi_CHOST)
    fi

    setup_target_flags

    if [[ -n ${CTARGET_OPT} && ${CBUILD} == ${CHOST} ]] && ! is_crosscompile; then
    CBUILD_OPT=${CTARGET_OPT}
    fi

    # Lock glibc at -O2; we want to be conservative here.
    # -fno-strict-aliasing is to work around #155906.
    filter-flags '-O?'
    append-flags -O2 -fno-strict-aliasing

    filter-flags '-fstack-protector*'

    # Starting with gcc-6 (and fully upstreamed pie patches) we control
    # default enabled/disabled pie via use flags. So nothing to do
    # here then. #618160
    if [[ $(gcc-major-version) -lt 6 ]]; then
    if use hardened && tc-enables-pie ; then
    # Force PIC macro definition for all compilations since
    they're all
    # either -fPIC or -fPIE with the default-PIE compiler.
    append-cppflags -DPIC
    else
    # Don't build -fPIE without the default-PIE compiler and the
    # hardened-pie patch
    filter-flags -fPIE
    fi
    fi
    }

    want_tls() {
    # Archs that can use TLS (Thread Local Storage)
    case $(tc-arch) in
    x86)
    # requires i486 or better #106556
    [[ ${CTARGET} == i[4567]86* ]] && return 0
    return 1
    ;;
    esac
    return 0
    }

    want__thread() {
    want_tls || return 1

    # For some reason --with-tls --with__thread is causing segfaults on sparc32.
    [[ ${PROFILE_ARCH} == "sparc" ]] && return 1

    [[ -n ${WANT__THREAD} ]] && return ${WANT__THREAD}

    # only test gcc -- can't test linking yet
    tc-has-tls -c ${CTARGET}
    WANT__THREAD=$?

    return ${WANT__THREAD}
    }

    use_multiarch() {
    # Allow user to disable runtime arch detection in multilib.
    use multiarch || return 1
    # Make sure binutils is new enough to support indirect functions,
    # #336792. This funky sed supports gold and bfd linkers.
    local bver nver
    bver=$($(tc-getLD ${CTARGET}) -v | sed -n -r '1{s:[^0-9]*::;s:^([0-9.]*).*:\1:;p}')
    case $(tc-arch ${CTARGET}) in
    amd64|x86) nver="2.20" ;;
    arm) nver="2.22" ;;
    hppa) nver="2.23" ;;
    ppc|ppc64) nver="2.20" ;;
    # ifunc support was added in 2.23, but glibc also needs
    # machinemode which is in 2.24.
    s390) nver="2.24" ;;
    sparc) nver="2.21" ;;
    *) return 1 ;;
    esac
    version_is_at_least ${nver} ${bver}
    }

    # Setup toolchain variables that had historically been defined in the
    # profiles for these archs.
    setup_env() {
    # silly users
    unset LD_RUN_PATH
    unset LD_ASSUME_KERNEL

    if is_crosscompile || tc-is-cross-compiler ; then
    multilib_env ${CTARGET_OPT:-${CTARGET}}

    if ! use multilib ; then
    MULTILIB_ABIS=${DEFAULT_ABI}
    else
    MULTILIB_ABIS=${MULTILIB_ABIS:-${DEFAULT_ABI}}
    fi

    # If the user has CFLAGS_<CTARGET> in their make.conf, use that,
    # and fall back on CFLAGS.
    local VAR=CFLAGS_${CTARGET//[-.]/_}
    CFLAGS=${!VAR-${CFLAGS}}
    einfo " $(printf '%15s' 'Manual CFLAGS:') ${CFLAGS}"
    fi

    setup_flags

    export ABI=${ABI:-${DEFAULT_ABI:-default}}

    if use headers-only ; then
    # Avoid mixing host's CC and target's CFLAGS_${ABI}:
    # At this bootstrap stage we have only binutils for
    # target but not compiler yet.
    einfo "Skip CC ABI injection. We can't use (cross-)compiler yet."
    return 0
    fi
    local VAR=CFLAGS_${ABI}
    # We need to export CFLAGS with abi information in them because glibc's
    # configure script checks CFLAGS for some targets (like mips). Keep
    # around the original clean value to avoid appending multiple ABIs on
    # top of each other.
    : ${__GLIBC_CC:=$(tc-getCC ${CTARGET_OPT:-${CTARGET}})}
    export __GLIBC_CC CC="${__GLIBC_CC} ${!VAR}"
    einfo " $(printf '%15s' 'Manual CC:') ${CC}"
    }

    foreach_abi() {
    setup_env

    local ret=0
    local abilist=""
    if use multilib ; then
    abilist=$(get_install_abis)
    else
    abilist=${DEFAULT_ABI}
    fi
    local -x ABI
    for ABI in ${abilist:-default} ; do
    setup_env
    einfo "Running $1 for ABI ${ABI}"
    $1
    : $(( ret |= $? ))
    done
    return ${ret}
    }

    glibc_banner() {
    local b="Gentoo ${PVR}"
    [[ -n ${PATCH_VER} ]] && ! use vanilla && b+=" p${PATCH_VER}"
    echo "${b}"
    }

    check_devpts() {
    # Make sure devpts is mounted correctly for use w/out setuid pt_chown.

    # If merely building the binary package, then there's nothing to verify.
    [[ ${MERGE_TYPE} == "buildonly" ]] && return

    # Only sanity check when installing the native glibc.
    [[ ${ROOT} != "/" ]] && return

    # If they're opting in to the old suid code, then no need to check.
    use suid && return

    if awk '$3 == "devpts" && $4 ~ /[, ]gid=5[, ]/ { exit 1 }' /proc/mounts
    ; then
    eerror "In order to use glibc with USE=-suid, you must make sure that"
    eerror "you have devpts mounted at /dev/pts with the gid=5 option."
    eerror "Openrc should do this for you, so you should check /etc/fstab"
    eerror "and make sure you do not have any invalid settings there."
    die "mount & fix your /dev/pts settings"
    fi
    }

    # The following Kernel version handling functions are mostly copied from portage
    # source. It's better not to use linux-info.eclass here since a) it adds too
    # much magic, see bug 326693 for some of the arguments, and b) some of the
    # functions are just not provided.

    g_get_running_KV() {
    uname -r
    return $?
    }

    g_KV_major() {
    [[ -z $1 ]] && return 1
    local KV=$@
    echo "${KV%%.*}"
    }

    g_KV_minor() {
    [[ -z $1 ]] && return 1
    local KV=$@
    KV=${KV#*.}
    echo "${KV%%.*}"
    }

    g_KV_micro() {
    [[ -z $1 ]] && return 1
    local KV=$@
    KV=${KV#*.*.}
    echo "${KV%%[^[:digit:]]*}"
    }

    g_KV_to_int() {
    [[ -z $1 ]] && return 1
    local KV_MAJOR=$(g_KV_major "$1")
    local KV_MINOR=$(g_KV_minor "$1")
    local KV_MICRO=$(g_KV_micro "$1")
    local KV_int=$(( KV_MAJOR * 65536 + KV_MINOR * 256 + KV_MICRO ))

    # We make version 2.2.0 the minimum version we will handle as
    # a sanity check ... if its less, we fail ...
    if [[ ${KV_int} -ge 131584 ]] ; then
    echo "${KV_int}"
    return 0
    fi
    return 1
    }

    g_int_to_KV() {
    local version=$1 major minor micro
    major=$((version / 65536))
    minor=$(((version % 65536) / 256))
    micro=$((version % 256))
    echo ${major}.${minor}.${micro}
    }

    eend_KV() {
    [[ $(g_KV_to_int $1) -ge $(g_KV_to_int $2) ]]
    eend $?
    }

    get_kheader_version() {
    printf '#include <linux/version.h>\nLINUX_VERSION_CODE\n' | \
    $(tc-getCPP ${CTARGET}) -I "${EPREFIX}/$(alt_build_headers)" - | \
    tail -n 1
    }

    # We collect all sanity checks here. Consistency is not guranteed between
    # pkg_ and src_ phases, so we call this function both in pkg_pretend and in
    # src_unpack.
    sanity_prechecks() {
    # Make sure devpts is mounted correctly for use w/out setuid pt_chown
    check_devpts

    # Prevent native builds from downgrading
    if [[ ${MERGE_TYPE} != "buildonly" ]] && \
    [[ ${ROOT} == "/" ]] && \
    [[ ${CBUILD} == ${CHOST} ]] && \
    [[ ${CHOST} == ${CTARGET} ]] ; then

    # The high rev # is to allow people to downgrade between -r#
    # versions. We want to block 2.20->2.19, but 2.20-r3->2.20-r2
    # should be fine. Hopefully we never actually use a r# this
    # high.
    if has_version ">${CATEGORY}/${P}-r10000" ; then
    eerror "Sanity check to keep you from breaking your system:"
    eerror " Downgrading glibc is not supported and a sure way to destruction."
    die "Aborting to save your system."
    fi

    --- Msged/LNX 6.1.2 (Linux/4.17.12-gentoo (x86_64))
    * Origin: I will always keep a PC running CPM 3.0 (2:230/0)
  • From Benny Pedersen@2:230/0 to Little Mikey on Sat Aug 4 23:16:56 2018
    if ! do_run_test '#include <unistd.h>\n#include <sys/syscall.h>\nint main(){return syscall(1000)!=-1;}\n' ; then
    eerror "Your old kernel is broken. You need to update it to a newer"
    eerror "version as syscall(<bignum>) will break. See bug 279260."
    die "Old and broken kernel."
    fi
    fi

    # Users have had a chance to phase themselves, time to give em the boot
    if [[ -e ${EROOT}/etc/locale.gen ]] && [[ -e ${EROOT}/etc/locales.build
    ]] ; then
    eerror "You still haven't deleted ${EROOT}/etc/locales.build."
    eerror "Do so now after making sure ${EROOT}/etc/locale.gen is kosher."
    die "Lazy upgrader detected"
    fi

    if [[ ${CTARGET} == i386-* ]] ; then
    eerror "i386 CHOSTs are no longer supported."
    eerror "Chances are you don't actually want/need i386."
    eerror "Please read https://www.gentoo.org/doc/en/change-chost.xml"
    die "Please fix your CHOST"
    fi

    if [[ -e /proc/xen ]] && [[ $(tc-arch) == "x86" ]] && ! is-flag -mno-tls-direct-seg-refs ; then
    ewarn "You are using Xen but don't have -mno-tls-direct-seg-refs in your CFLAGS."
    ewarn "This will result in a 50% performance penalty when running with a 32bit"
    ewarn "hypervisor, which is probably not what you want."
    fi

    use hardened && ! tc-enables-pie && \
    ewarn "PIE hardening not applied, as your compiler doesn't default to PIE"

    # Check for sanity of /etc/nsswitch.conf
    if [[ -e ${EROOT}/etc/nsswitch.conf ]] ; then
    local entry
    for entry in passwd group shadow; do
    if ! egrep -q "^[ \t]*${entry}:.*files" "${EROOT}"/etc/nsswitch.conf; then
    eerror "Your ${EROOT}/etc/nsswitch.conf is out of date."
    eerror "Please make sure you have 'files' entries for"
    eerror "'passwd:', 'group:' and 'shadow:' databases."
    eerror "For more details see:"
    eerror " https://wiki.gentoo.org/wiki/Project:Toolchain/nsswitch.conf_in_glibc-2.26"
    die "nsswitch.conf has no 'files' provider in '${entry}'."
    fi
    done
    fi

    # ABI-specific checks follow here. Hey, we have a lot more specific conditions that
    # we test for...
    if ! is_crosscompile ; then
    if use amd64 && use multilib && [[ ${MERGE_TYPE} != "binary" ]]
    ; then
    ebegin "Checking that IA32 emulation is enabled in the running kernel"
    echo 'int main(){return 0;}' > "${T}/check-ia32-emulation.c"
    local STAT
    if "${CC-${CHOST}-gcc}" ${CFLAGS_x86} "${T}/check-ia32-emulation.c" -o "${T}/check-ia32-emulation.elf32"; then
    "${T}/check-ia32-emulation.elf32"
    STAT=$?
    else
    # Don't fail here to allow single->multi ABI switch
    # or recover from breakage like bug #646424
    ewarn "Failed to compile the ABI test. Broken host glibc?"
    STAT=0
    fi
    rm -f "${T}/check-ia32-emulation.elf32"
    eend $STAT
    [[ $STAT -eq 0 ]] || die "CONFIG_IA32_EMULATION must be
    enabled in the kernel to compile a multilib glibc."
    fi

    fi

    # When we actually have to compile something...
    if ! just_headers ; then
    ebegin "Checking gcc for __thread support"
    if ! eend $(want__thread ; echo $?) ; then
    echo
    eerror "Could not find a gcc that supports the __thread
    directive!"
    eerror "Please update your binutils/gcc and try again."
    die "No __thread support in gcc!"
    fi

    if [[ ${CTARGET} == *-linux* ]] ; then
    local run_kv build_kv want_kv

    run_kv=$(g_get_running_KV)
    build_kv=$(g_int_to_KV $(get_kheader_version))
    want_kv=${MIN_KERN_VER}

    if ! is_crosscompile && ! tc-is-cross-compiler ; then
    # Building fails on an non-supporting kernel
    ebegin "Checking running kernel version (${run_kv} >= ${want_kv})"
    if ! eend_KV ${run_kv} ${want_kv} ; then
    echo
    eerror "You need a kernel of at least ${want_kv}!"
    die "Kernel version too low!"
    fi
    fi

    ebegin "Checking linux-headers version (${build_kv} >= ${want_kv})"
    if ! eend_KV ${build_kv} ${want_kv} ; then
    echo
    eerror "You need linux-headers of at least ${want_kv}!"
    die "linux-headers version too low!"
    fi
    fi
    fi
    }

    #
    # the phases
    #

    # pkg_pretend

    pkg_pretend() {
    # All the checks...
    einfo "Checking general environment sanity."
    sanity_prechecks
    }

    # src_unpack

    src_unpack() {
    # Consistency is not guaranteed between pkg_ and src_ ...
    sanity_prechecks

    use multilib && unpack gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}.tar.xz

    setup_env

    if [[ -n ${EGIT_REPO_URI} ]] ; then
    git-r3_src_unpack
    else
    unpack ${P}.tar.xz
    fi

    cd "${S}" || die
    touch locale/C-translit.h || die #185476 #218003

    cd "${WORKDIR}" || die
    unpack glibc-${RELEASE_VER}-patches-${PATCH_VER}.tar.bz2
    }

    src_prepare() {
    if ! use vanilla ; then
    elog "Applying Gentoo Glibc Patchset ${RELEASE_VER}-${PATCH_VER}"
    eapply "${WORKDIR}"/patches
    einfo "Done."
    fi

    default

    gnuconfig_update

    cd "${WORKDIR}"
    find . -name configure -exec touch {} +

    eprefixify extra/locale/locale-gen

    # Fix permissions on some of the scripts.
    chmod u+x "${S}"/scripts/*.sh

    cd "${S}"
    }

    glibc_do_configure() {
    # Glibc does not work with gold (for various reasons) #269274.
    tc-ld-disable-gold

    # CXX isnt handled by the multilib system, so if we dont unset here
    # we accumulate crap across abis
    unset CXX

    einfo "Configuring glibc for nptl"

    if use doc ; then
    export MAKEINFO=makeinfo
    else
    export MAKEINFO=/dev/null
    fi

    local v
    for v in ABI CBUILD CHOST CTARGET CBUILD_OPT CTARGET_OPT CC CXX LD {AS,C,CPP,CXX,LD}FLAGS MAKEINFO ; do
    einfo " $(printf '%15s' ${v}:) ${!v}"
    done

    # CFLAGS can contain ABI-specific flags like -mfpu=neon, see bug #657760
    # To build .S (assembly) files with the same ABI-specific flags
    # upstream currently recommends adding CFLAGS to CC/CXX:
    # https://sourceware.org/PR23273
    # Note: Passing CFLAGS via CPPFLAGS overrides glibc's arch-specific CFLAGS
    # and breaks multiarch support. See 659030#c3 for an example.
    # The glibc configure script doesn't properly use LDFLAGS all the time.
    export CC="$(tc-getCC ${CTARGET}) ${CFLAGS} ${LDFLAGS}"
    einfo " $(printf '%15s' 'Manual CC:') ${CC}"

    # Some of the tests are written in C++, so we need to force our multlib
    abis in, bug 623548
    export CXX="$(tc-getCXX ${CTARGET}) $(get_abi_CFLAGS) ${CFLAGS}"
    einfo " $(printf '%15s' 'Manual CXX:') ${CXX}"

    echo

    local myconf=()

    case ${CTARGET} in
    powerpc-*)
    # Currently gcc on powerpc32 generates invalid code for
    # __builtin_return_address(0) calls. Normally programs
    # don't do that but malloc hooks in glibc do:
    # https://gcc.gnu.org/PR81996
    # https://bugs.gentoo.org/629054
    myconf+=( --enable-stack-protector=no )
    ;;
    *)
    myconf+=( --enable-stack-protector=all )
    ;;
    esac
    myconf+=( --enable-stackguard-randomization )

    # Keep a whitelist of targets supporing IFUNC. glibc's ./configure
    # is not robust enough to detect proper support:
    # https://bugs.gentoo.org/641216
    # https://sourceware.org/PR22634#c0
    case $(tc-arch ${CTARGET}) in
    # Keep whitelist of targets where autodetection mostly works.
    amd64|x86|sparc|ppc|ppc64|arm|arm64|s390) ;;
    # Blacklist everywhere else
    *) myconf+=( libc_cv_ld_gnu_indirect_function=no ) ;;
    esac

    # Enable Intel Control-flow Enforcement Technology on amd64 if requested
    case ${CTARGET} in
    x86_64-*) myconf+=( $(use_enable cet) ) ;;
    *) ;;
    esac

    [[ $(tc-is-softfloat) == "yes" ]] && myconf+=( --without-fp )

    myconf+=( --enable-kernel=${MIN_KERN_VER} )

    # Since SELinux support is only required for nscd, only enable it if:
    # 1. USE selinux
    # 2. only for the primary ABI on multilib systems
    # 3. Not a crosscompile
    if ! is_crosscompile && use selinux ; then
    if use multilib ; then
    if is_final_abi ; then
    myconf+=( --with-selinux )
    else
    myconf+=( --without-selinux )
    fi
    else
    myconf+=( --with-selinux )
    fi
    else
    myconf+=( --without-selinux )
    fi

    # Force a few tests where we always know the answer but
    # configure is incapable of finding it.
    if is_crosscompile ; then
    export \
    libc_cv_c_cleanup=yes \
    libc_cv_forced_unwind=yes
    fi

    myconf+=(
    --without-cvs
    --disable-werror
    --enable-bind-now
    --build=${CBUILD_OPT:-${CBUILD}}
    --host=${CTARGET_OPT:-${CTARGET}}
    $(use_enable profile)
    $(use_with gd)
    --with-headers=$(alt_build_headers)
    --prefix="${EPREFIX}/usr"
    --sysconfdir="${EPREFIX}/etc"
    --localstatedir="${EPREFIX}/var"
    --libdir='$(prefix)'/$(get_libdir)
    --mandir='$(prefix)'/share/man
    --infodir='$(prefix)'/share/info
    --libexecdir='$(libdir)'/misc/glibc
    --with-bugurl=https://bugs.gentoo.org/
    --with-pkgversion="$(glibc_banner)"
    $(use_multiarch || echo --disable-multi-arch)
    $(use_enable systemtap)
    $(use_enable nscd)
    ${EXTRA_ECONF}
    )

    # We rely on sys-libs/timezone-data for timezone tools normally.
    myconf+=( $(use_enable vanilla timezone-tools) )

    # These libs don't have configure flags.
    ac_cv_lib_audit_audit_log_user_avc_message=$(usex audit || echo no)
    ac_cv_lib_cap_cap_init=$(usex caps || echo no)

    # There is no configure option for this and we need to export it
    # since the glibc build will re-run configure on itself
    export libc_cv_rootsbindir="${EPREFIX}/sbin"
    export libc_cv_slibdir="${EPREFIX}/$(get_libdir)"

    # We take care of patching our binutils to use both hash styles,
    # and many people like to force gnu hash style only, so disable
    # this overriding check. #347761
    export libc_cv_hashstyle=no

    local builddir=$(builddir nptl)
    mkdir -p "${builddir}"
    cd "${builddir}"
    set -- "${S}"/configure "${myconf[@]}"
    echo "$@"
    "$@" || die "failed to configure glibc"

    # ia64 static cross-compilers are a pita in so much that they
    # can't produce static ELFs (as the libgcc.a is broken). so
    # disable building of the programs for those targets if it
    # doesn't work.
    # XXX: We could turn this into a compiler test, but ia64 is
    # the only one that matters, so this should be fine for now.
    if is_crosscompile && [[ ${CTARGET} == ia64* ]] ; then
    sed -i '1i+link-static = touch $@' config.make
    fi

    # If we're trying to migrate between ABI sets, we need
    # to lie and use a local copy of gcc. Like if the system
    # is built with MULTILIB_ABIS="amd64 x86" but we want to
    # add x32 to it, gcc/glibc don't yet support x32.
    #
    if [[ -n ${GCC_BOOTSTRAP_VER} ]] && use multilib ; then
    echo 'main(){}' > "${T}"/test.c
    if ! $(tc-getCC ${CTARGET}) ${CFLAGS} ${LDFLAGS} "${T}"/test.c -Wl,-emain -lgcc 2>/dev/null ; then
    sed -i -e '/^CC = /s:$: -B$(objdir)/../'"gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}/${ABI}:" config.make || die
    fi
    fi
    }

    glibc_headers_configure() {
    export ABI=default

    local builddir=$(builddir "headers")
    mkdir -p "${builddir}"
    cd "${builddir}"

    # if we don't have a compiler yet, we can't really test it now ...
    # hopefully they don't affect header generation, so let's hope for
    # the best here ...
    local v vars=(
    ac_cv_header_cpuid_h=yes
    libc_cv_{386,390,alpha,arm,hppa,ia64,mips,{powerpc,sparc}{,32,64},sh,x86_64}_tls=yes
    libc_cv_asm_cfi_directives=yes
    libc_cv_broken_visibility_attribute=no
    libc_cv_c_cleanup=yes
    libc_cv_compiler_powerpc64le_binary128_ok=yes
    libc_cv_forced_unwind=yes
    libc_cv_gcc___thread=yes
    libc_cv_mlong_double_128=yes
    libc_cv_mlong_double_128ibm=yes
    libc_cv_ppc_machine=yes
    libc_cv_ppc_rel16=yes
    libc_cv_predef_fortify_source=no
    libc_cv_target_power8_ok=yes
    libc_cv_visibility_attribute=yes
    libc_cv_z_combreloc=yes
    libc_cv_z_execstack=yes
    libc_cv_z_initfirst=yes
    libc_cv_z_nodelete=yes
    libc_cv_z_nodlopen=yes
    libc_cv_z_relro=yes
    libc_mips_abi=${ABI}
    libc_mips_float=$([[ $(tc-is-softfloat) == "yes" ]] && echo soft || echo hard)
    # These libs don't have configure flags.
    ac_cv_lib_audit_audit_log_user_avc_message=no
    ac_cv_lib_cap_cap_init=no
    )

    einfo "Forcing cached settings:"
    for v in "${vars[@]}" ; do
    einfo " ${v}"
    export ${v}
    done

    local headers_only_arch_CPPFLAGS=()

    # Blow away some random CC settings that screw things up. #550192
    if [[ -d ${S}/sysdeps/mips ]]; then
    pushd "${S}"/sysdeps/mips >/dev/null
    sed -i -e '/^CC +=/s:=.*:= -D_MIPS_SZPTR=32:' mips32/Makefile mips64/n32/Makefile || die
    sed -i -e '/^CC +=/s:=.*:= -D_MIPS_SZPTR=64:' mips64/n64/Makefile || die

    # Force the mips ABI to the default. This is OK because the set of
    # installed headers in this phase is the same between the 3 ABIs.
    # If this ever changes, this hack will break, but that's unlikely
    # as glibc discourages that behavior.
    # https://crbug.com/647033
    sed -i -e 's:abiflag=.*:abiflag=_ABIO32:' preconfigure || die

    popd >/dev/null
    fi

    case ${CTARGET} in
    riscv*)
    # RISC-V interrogates the compiler to determine which target to
    # build. If building the headers then we don't strictly need a
    # RISC-V compiler, so the built-in definitions that are provided
    # along with all RISC-V compiler might not exist. This causes
    # glibc's RISC-V preconfigure script to blow up. Since we're just
    # building the headers any value will actually work here, so just
    # pick the standard one (rv64g/lp64d) to make the build scripts
    # happy for now -- the headers are all the same anyway so it
    # doesn't matter.
    headers_only_arch_CPPFLAGS+=(
    -D__riscv_xlen=64
    -D__riscv_flen=64
    -D__riscv_float_abi_double=1
    -D__riscv_atomic=1
    ) ;;
    esac

    local myconf=()
    myconf+=(
    --disable-sanity-checks
    --enable-hacker-mode
    --without-cvs
    --disable-werror
    --enable-bind-now
    --build=${CBUILD_OPT:-${CBUILD}}
    --host=${CTARGET_OPT:-${CTARGET}}
    --with-headers=$(alt_build_headers)
    --prefix="${EPREFIX}/usr"
    ${EXTRA_ECONF}
    )

    # Nothing is compiled here which would affect the headers for the target.
    # So forcing CC/CFLAGS is sane.
    local headers_only_CC=$(tc-getBUILD_CC)
    local headers_only_CFLAGS="-O1 -pipe"
    local headers_only_CPPFLAGS="-U_FORTIFY_SOURCE ${headers_only_arch_CPPFLAGS[*]}"
    local headers_only_LDFLAGS=""
    set -- "${S}"/configure "${myconf[@]}"
    echo \
    "CC=${headers_only_CC}" \
    "CFLAGS=${headers_only_CFLAGS}" \
    "CPPFLAGS=${headers_only_CPPFLAGS}" \
    "LDFLAGS=${headers_only_LDFLAGS}" \
    "$@"
    CC=${headers_only_CC} \
    CFLAGS=${headers_only_CFLAGS} \
    CPPFLAGS=${headers_only_CPPFLAGS} \
    LDFLAGS="" \
    "$@" || die "failed to configure glibc"
    }

    do_src_configure() {
    if just_headers ; then
    glibc_headers_configure
    else
    glibc_do_configure nptl
    fi
    }

    src_configure() {
    foreach_abi do_src_configure
    }

    do_src_compile() {
    emake -C "$(builddir nptl)" || die "make nptl for ${ABI} failed"
    }

    src_compile() {
    if just_headers ; then
    return
    fi

    foreach_abi do_src_compile
    }

    glibc_src_test() {
    cd "$(builddir nptl)"
    emake check
    }

    do_src_test() {
    local ret=0

    glibc_src_test
    : $(( ret |= $? ))

    return ${ret}
    }

    src_test() {
    if just_headers ; then
    return
    fi

    # Give tests more time to complete.
    export TIMEOUTFACTOR=5

    foreach_abi do_src_test || die "tests failed"
    }

    run_locale_gen() {
    # if the host locales.gen contains no entries, we'll install everything
    local root="$1"
    local locale_list="${root}/etc/locale.gen"
    if [[ -z $(locale-gen --list --config "${locale_list}") ]] ; then
    ewarn "Generating all locales; edit /etc/locale.gen to save time/space"
    locale_list="${root}/usr/share/i18n/SUPPORTED"
    fi

    locale-gen --jobs $(makeopts_jobs) --config "${locale_list}" \
    --destdir "${root}"
    }

    glibc_do_src_install() {
    local builddir=$(builddir nptl)
    cd "${builddir}"

    emake install_root="${D}$(alt_prefix)" install || die

    # This version (2.26) provides some compatibility libraries for the NIS/NIS+ support
    # which come without headers etc. Only needed for binary packages since
    the
    # external net-libs/libnsl has increased soversion. Keep only versioned
    libraries.
    find "${D}" -name "libnsl.a" -delete
    find "${D}" -name "libnsl.so" -delete

    # Normally upstream_pv is ${PV}. Live ebuilds are exception, there we need
    # to infer upstream version:
    # '#define VERSION "2.26.90"' -> '2.26.90'
    local upstream_pv=$(sed -n -r 's/#define VERSION "(.*)"/\1/p' "${S}"/version.h)

    if [[ -e ${ED}$(alt_usrlibdir)/libm-${upstream_pv}.a ]] ; then
    # Move versioned .a file out of libdir to evade portage QA checks
    # instead of using gen_usr_ldscript(). We fix ldscript as:
    # "GROUP ( /usr/lib64/libm-<pv>.a ..." -> "GROUP ( /usr/lib64/glibc-<pv>/libm-<pv>.a ..."
    sed -i "s@\(libm-${upstream_pv}.a\)@${P}/\1@" "${ED}"$(alt_usrlibdir)/libm.a || die
    dodir $(alt_usrlibdir)/${P}
    mv "${ED}"$(alt_usrlibdir)/libm-${upstream_pv}.a "${ED}"$(alt_usrlibdir)/${P}/libm-${upstream_pv}.a || die
    fi

    # We'll take care of the cache ourselves
    rm -f "${ED}"/etc/ld.so.cache

    # Everything past this point just needs to be done once ...
    is_final_abi || return 0

    # Make sure the non-native interp can be found on multilib systems even
    # if the main library set isn't installed into the right place. Maybe
    # we should query the active gcc for info instead of hardcoding it ?
    local i ldso_abi ldso_name
    local ldso_abi_list=(
    # x86
    amd64 /lib64/ld-linux-x86-64.so.2
    x32 /libx32/ld-linux-x32.so.2
    x86 /lib/ld-linux.so.2
    # mips
    o32 /lib/ld.so.1
    n32 /lib32/ld.so.1
    n64 /lib64/ld.so.1
    # powerpc
    ppc /lib/ld.so.1
    ppc64 /lib64/ld64.so.1
    # s390
    s390 /lib/ld.so.1
    s390x /lib/ld64.so.1
    # sparc
    sparc32 /lib/ld-linux.so.2
    sparc64 /lib64/ld-linux.so.2
    )
    case $(tc-endian) in
    little)
    ldso_abi_list+=(
    # arm
    arm64 /lib/ld-linux-aarch64.so.1
    )
    ;;
    big)
    ldso_abi_list+=(
    # arm
    arm64 /lib/ld-linux-aarch64_be.so.1
    )
    ;;
    esac
    if [[ ${SYMLINK_LIB} == "yes" ]] && [[ ! -e ${ED}/$(alt_prefix)/lib ]] ; then
    dosym $(get_abi_LIBDIR ${DEFAULT_ABI}) $(alt_prefix)/lib
    fi
    for (( i = 0; i < ${#ldso_abi_list[@]}; i += 2 )) ; do
    ldso_abi=${ldso_abi_list[i]}
    has ${ldso_abi} $(get_install_abis) || continue

    ldso_name="$(alt_prefix)${ldso_abi_list[i+1]}"
    if [[ ! -L ${ED}/${ldso_name} && ! -e ${ED}/${ldso_name} ]] ; then
    dosym ../$(get_abi_LIBDIR ${ldso_abi})/${ldso_name##*/}
    ${ldso_name}
    fi
    done

    # With devpts under Linux mounted properly, we do not need the pt_chown
    # binary to be setuid. This is because the default owners/perms will be
    # exactly what we want.
    if ! use suid ; then
    find "${ED}" -name pt_chown -exec chmod -s {} +
    fi

    #################################################################
    # EVERYTHING AFTER THIS POINT IS FOR NATIVE GLIBC INSTALLS ONLY #
    --- Msged/LNX 6.1.2 (Linux/4.17.12-gentoo (x86_64))
    * Origin: I will always keep a PC running CPM 3.0 (2:230/0)
  • From Benny Pedersen@2:230/0 to Little Mikey on Sat Aug 4 23:16:56 2018
    # Make sure we install some symlink hacks so that when we build
    # a 2nd stage cross-compiler, gcc finds the target system
    # headers correctly. See gcc/doc/gccinstall.info
    if is_crosscompile ; then
    # We need to make sure that /lib and /usr/lib always exists.
    # gcc likes to use relative paths to get to its multilibs like
    # /usr/lib/../lib64/. So while we don't install any files into
    # /usr/lib/, we do need it to exist.
    keepdir $(alt_prefix)/lib
    keepdir $(alt_prefix)/usr/lib

    dosym usr/include $(alt_prefix)/sys-include
    return 0
    fi

    # Files for Debian-style locale updating
    dodir /usr/share/i18n
    sed \
    -e "/^#/d" \
    -e "/SUPPORTED-LOCALES=/d" \
    -e "s: \\\\::g" -e "s:/: :g" \
    "${S}"/localedata/SUPPORTED > "${ED}"/usr/share/i18n/SUPPORTED \
    || die "generating /usr/share/i18n/SUPPORTED failed"
    cd "${WORKDIR}"/extra/locale
    dosbin locale-gen
    doman *.[0-8]
    insinto /etc
    doins locale.gen

    # Make sure all the ABI's can find the locales and so we only
    # have to generate one set
    local a
    keepdir /usr/$(get_libdir)/locale
    for a in $(get_install_abis) ; do
    if [[ ! -e ${ED}/usr/$(get_abi_LIBDIR ${a})/locale ]] ; then
    dosym ../$(get_libdir)/locale /usr/$(get_abi_LIBDIR ${a})/locale
    fi
    done

    cd "${S}"

    # Install misc network config files
    insinto /etc
    doins nscd/nscd.conf posix/gai.conf nss/nsswitch.conf
    doins "${WORKDIR}"/extra/etc/*.conf

    if use nscd ; then
    doinitd "$(prefixify_ro "${WORKDIR}"/extra/etc/nscd)"

    local nscd_args=(
    -e "s:@PIDFILE@:$(strings "${ED}"/usr/sbin/nscd | grep nscd.pid):"
    )

    sed -i "${nscd_args[@]}" "${ED}"/etc/init.d/nscd

    systemd_dounit nscd/nscd.service
    systemd_newtmpfilesd nscd/nscd.tmpfiles nscd.conf
    else
    # Do this since extra/etc/*.conf above might have nscd.conf.
    rm -f "${ED}"/etc/nscd.conf
    fi

    echo 'LDPATH="include ld.so.conf.d/*.conf"' > "${T}"/00glibc
    doenvd "${T}"/00glibc

    for d in BUGS ChangeLog CONFORMANCE FAQ NEWS NOTES PROJECTS README* ; do
    [[ -s ${d} ]] && dodoc ${d}
    done
    dodoc -r ChangeLog.old

    # Prevent overwriting of the /etc/localtime symlink. We'll handle the
    # creation of the "factory" symlink in pkg_postinst().
    rm -f "${ED}"/etc/localtime

    # Generate all locales if this is a native build as locale generation
    if use compile-locales && ! is_crosscompile ; then
    run_locale_gen "${ED}"
    fi
    }

    glibc_headers_install() {
    local builddir=$(builddir "headers")
    cd "${builddir}"
    emake install_root="${D}$(alt_prefix)" install-headers

    insinto $(alt_headers)/gnu
    doins "${S}"/include/gnu/stubs.h

    # Make sure we install the sys-include symlink so that when
    # we build a 2nd stage cross-compiler, gcc finds the target
    # system headers correctly. See gcc/doc/gccinstall.info
    dosym usr/include $(alt_prefix)/sys-include
    }

    src_strip() {
    # gdb is lame and requires some debugging information to remain in
    # libpthread, so we need to strip it by hand. libthread_db makes no
    # sense stripped as it is only used when debugging.
    local pthread=$(has splitdebug ${FEATURES} && echo "libthread_db" || echo "lib{pthread,thread_db}")
    env \
    -uRESTRICT \
    CHOST=${CTARGET} \
    STRIP_MASK="/*/{,tls/}${pthread}*" \
    prepallstrip
    # if user has stripping enabled and does not have split debug turned on,
    # then leave the debugging sections in libpthread.
    if ! has nostrip ${FEATURES} && ! has splitdebug ${FEATURES} ; then
    ${STRIP:-${CTARGET}-strip} --strip-debug "${ED}"$(alt_prefix)/*/libpthread-*.so
    fi
    }

    src_install() {
    if just_headers ; then
    export ABI=default
    glibc_headers_install
    return
    fi

    foreach_abi glibc_do_src_install
    src_strip
    }

    # Simple test to make sure our new glibc isn't completely broken.
    # Make sure we don't test with statically built binaries since
    # they will fail. Also, skip if this glibc is a cross compiler.
    #
    # If coreutils is built with USE=multicall, some of these files
    # will just be wrapper scripts, not actual ELFs we can test. glibc_sanity_check() {
    cd / #228809

    # We enter ${ED} so to avoid trouble if the path contains
    # special characters; for instance if the path contains the
    # colon character (:), then the linker will try to split it
    # and look for the libraries in an unexpected place. This can
    # lead to unsafe code execution if the generated prefix is
    # within a world-writable directory.
    # (e.g. /var/tmp/portage:${HOSTNAME})
    pushd "${ED}"/$(get_libdir) >/dev/null

    local x striptest
    for x in cal date env free ls true uname uptime ; do
    x=$(type -p ${x})
    [[ -z ${x} || ${x} != ${EPREFIX}/* ]] && continue
    striptest=$(LC_ALL="C" file -L ${x} 2>/dev/null) || continue
    case ${striptest} in
    *"statically linked"*) continue;;
    *"ASCII text"*) continue;;
    esac
    # We need to clear the locale settings as the upgrade might want
    # incompatible locale data. This test is not for verifying that.
    LC_ALL=C \
    ./ld-*.so --library-path . ${x} > /dev/null \
    || die "simple run test (${x}) failed"
    done

    popd >/dev/null
    }

    pkg_preinst() {
    # nothing to do if just installing headers
    just_headers && return

    # prepare /etc/ld.so.conf.d/ for files
    mkdir -p "${EROOT}"/etc/ld.so.conf.d

    # Default /etc/hosts.conf:multi to on for systems with small dbs.
    if [[ $(wc -l < "${EROOT}"/etc/hosts) -lt 1000 ]] ; then
    sed -i '/^multi off/s:off:on:' "${ED}"/etc/host.conf
    einfo "Defaulting /etc/host.conf:multi to on"
    fi

    [[ ${ROOT} != "/" ]] && return 0
    [[ -d ${ED}/$(get_libdir) ]] || return 0
    [[ -z ${BOOTSTRAP_RAP} ]] && glibc_sanity_check
    }

    pkg_postinst() {
    # nothing to do if just installing headers
    just_headers && return

    if ! tc-is-cross-compiler && [[ -x ${EROOT}/usr/sbin/iconvconfig ]] ; then
    # Generate fastloading iconv module configuration file.
    "${EROOT}"/usr/sbin/iconvconfig --prefix="${ROOT}"
    fi

    if ! is_crosscompile && [[ ${ROOT} == "/" ]] ; then
    # Reload init ... if in a chroot or a diff init package, ignore
    # errors from this step #253697
    /sbin/telinit U 2>/dev/null

    use compile-locales || run_locale_gen "${EROOT}"
    fi

    # Check for sanity of /etc/nsswitch.conf, take 2
    if [[ -e ${EROOT}/etc/nsswitch.conf ]] && ! has_version sys-auth/libnss-nis ; then
    local entry
    for entry in passwd group shadow; do
    if egrep -q "^[ \t]*${entry}:.*nis" "${EROOT}"/etc/nsswitch.conf; then
    ewarn ""
    ewarn "Your ${EROOT}/etc/nsswitch.conf uses NIS. Support for that has been"
    ewarn "removed from glibc and is now provided by the package"
    ewarn " sys-auth/libnss-nis"
    ewarn "Install it now to keep your NIS setup working."
    ewarn ""
    fi
    done
    fi
    }
    ----- glibc-9999.ebuild ends -----

    thats all :)

    emerging this would not let one turn back from it, 9999 is trunc live ebuilds, so if problems are found with it, one need to wait for fixes to be solved in this software, not prepared to do, dont emerge it

    sorry for post so big

    If so then there is currently no
    machine set up here to make that doable.

    if you use lvm2 snapshot it would possible be simple to make a rollback, so one
    can remerge the stable glibc on the rolledback install, that would be safe way to make it testing, but it will be playing with fire :)

    The two machines are both
    set up to experiment with the new glibc-2.28 and both have a backup bootable partition that is stable just in case they are needed. So
    far they aren't but it has only been a couple days now.

    yes, i know to little to see a diff on what new things to test from not working
    or still works, for me it good to know i atleast can build gentoo kernels on vps now, doing this at home died servers is my expirences payback for me now


    Regards Benny

    ... there can only be one way of life, and it works :)

    --- Msged/LNX 6.1.2 (Linux/4.17.12-gentoo (x86_64))
    * Origin: I will always keep a PC running CPM 3.0 (2:230/0)
  • From Little Mikey@1:153/7001 to Benny Pedersen on Sun Aug 5 01:07:39 2018
    Attention Benny Pedersen,

    lvm2 snapshot rollbacks ?

    No. Just plain old ext4 partitions created by fdisk (util-linux) and formatted
    with mke2fs (e2fsprogs) just like mom used to do ... errrrr ... if I had a mom that is.

    but i dont know how cold it could be on the maunting top

    At the moment there are still issues with m4, findutils, and gzip. Probably more that gentoo requires but these three are a major stumbling block and creativity was required to overcome both the m4 and findutils issues to create packages, even in a chrootable enviroment. gzip is less of an issue but it is still a deal breaker if not resolved which it was by creating the gzip-1.9.4-9ef6-dirty source as noted in a previous post. Same with findutils-4.6.0.186-84e8. With m4 the latest official m4-1.4.18 source is being used although it required bootstrapping to the latest gnulib before it would work with glibc-2.28. In that case the bootstrap script in the source package was used to create newly bootstrapped m4-1.4.18 source instead of using
    git sources as in the case of gzip and findutils.

    ----- glibc-9999.ebuild begins -----

    Whoa! First off the current bootable rootfs isn't a git version but a fully qualified GNU release. See https://www.gnu.org/s/libc/ for the details. Before this release the git version(s) tagged as 2.27.9000 were tested in a chroot partition and only once booted when gcc-8.2.0 was released about a week prior to the official glibc-2.28 release on August first.

    The bash script used here to build glibc-2.28 is exactly 1980 bytes containing 62 lines of code.

    ----- glibc-9999.ebuild ends -----

    thats all :)

    Way more than enough to ascertain it's failure on either of the two machines available here. All build scripts here are bash based and lack the dependency tracking gentoo prides itself on. Your posted script requires a gentoo host as
    well as the proper runtime to engage that script. No testing required to know that it will fail.

    End transmission.

    ... Fudd's First Law of Opposition:
    If you push something hard enough, it will fall over.
    --- GNU bash, version 4.4.23(1)-release (x86_64-silvermont-linux-gnu)
    * Origin: Little Mikey's Brain - Ladysmith BC, Canada (1:153/7001)
  • From Benny Pedersen@2:230/0 to Little Mikey on Wed Aug 8 22:55:46 2018
    Hello Little!

    05 Aug 2018 01:07, Little Mikey wrote to Benny Pedersen:

    lvm2 snapshot rollbacks ?

    No. Just plain old ext4 partitions created by fdisk (util-linux) and formatted with mke2fs (e2fsprogs) just like mom used to do ... errrrr
    ... if I had a mom that is.

    i can do this, not a problem at all

    Way more than enough to ascertain it's failure on either of the two machines available here.

    +1

    All build scripts here are bash based and
    lack the dependency tracking gentoo prides itself on.

    ebuilds is bash, but portage is 100% python :)

    Your posted
    script requires a gentoo host as well as the proper runtime to engage that script.

    you just create one then

    No testing required to know that it will fail.

    +1

    glibc 2.28 have problems with crypt, is all i know for now



    Regards Benny

    ... there can only be one way of life, and it works :)

    --- Msged/LNX 6.1.2 (Linux/4.17.13-gentoo (x86_64))
    * Origin: I will always keep a PC running CPM 3.0 (2:230/0)
  • From Little Mikey@1:153/7001 to Benny Pedersen on Thu Aug 9 03:59:14 2018
    Attention Benny Pedersen,

    ebuilds is bash, but portage is 100% python :)

    It's usually the python dependent ones that cause all the grief.

    you just create one then

    Already have a few bash based ones such as check_install, manifest and a few others. They've been in use here for over a decade now but aren't really in the same league as portage and the such. Very simple and to the point and lack
    things like dependency tracking and the such.

    glibc 2.28 have problems with crypt, is all i know for now

    -={ '<Esc>:read !ldd /usr/bin/passwd | tr -d "\t"' starts }=-
    linux-vdso.so.1 (0x00007fff9db69000)
    libcrypt.so.1 => /lib/libcrypt.so.1 (0x00007fd7a0ecf000)
    libc.so.6 => /lib/libc.so.6 (0x00007fd7a0d50000)
    /lib/ld-linux-x86-64.so.2 (0x00007fd7a0f0a000)
    -={ '<Esc>:read !ldd /usr/bin/passwd | tr -d "\t"' ends }=-

    Looks okay from this angle. passwd is from the shadow-4.6 package which was compiled with glibc-2.28 which is where the above listed libcrypt.so.1 comes from.

    End transmission.

    ... Fudd's First Law of Opposition:
    If you push something hard enough, it will fall over.
    --- GNU bash, version 4.4.23(1)-release (x86_64-silvermont-linux-gnu)
    * Origin: Little Mikey's Brain - Ladysmith BC, Canada (1:153/7001)
  • From Benny Pedersen@2:230/0 to Little Mikey on Sat Aug 11 18:59:32 2018
    Hello Little!

    09 Aug 2018 03:59, Little Mikey wrote to Benny Pedersen:

    ebuilds is bash, but portage is 100% python :)
    It's usually the python dependent ones that cause all the grief.

    gentoo have python installed both python2 and python3, i dont know why :)

    you just create one then
    Already have a few bash based ones such as check_install, manifest and
    a few others.

    if windows 10 soon get portage i would begin to love it :)

    They've been in use here for over a decade now but
    aren't really in the same league as portage and the such.

    is your plan to make portage in bash ?

    Very simple
    and to the point and lack things like dependency tracking and the
    such.

    +1, that is the strongest part of portage, all else is benefits


    Regards Benny

    ... there can only be one way of life, and it works :)

    --- Msged/LNX 6.1.2 (Linux/4.17.14-gentoo (x86_64))
    * Origin: I will always keep a PC running CPM 3.0 (2:230/0)
  • From Maurice Kinal@2:280/464.113 to Benny Pedersen on Sat Aug 11 19:30:27 2018
    Hallo Benny!

    gentoo have python installed both python2 and python3, i dont
    know why :)

    Firefox and the like. Also I believe there are some specific python3 apps used
    for development tools not too unlike cmake. Everything else, such as mesalibs,
    still require python2 and thus the additional bloat; both python2 and python3.

    is your plan to make portage in bash ?

    No. Basically what little I have is for keeping track of what to remove if and
    when I uninstall a package mostly to facillitate upgrading. In the case of glibc it is better to start from scratch and rebuild the entire system which of
    this writing consists of exactly 167 packages, including python2 which is needed by glib which is a dependency for mc. If I got rid of mc I could probably get rid of python2 despite a few packages (alsa for example) whining about the lack of python2 but not failing to build and/or work without it. However I find mc handy to have every now and then, such as for browsing tarballs, so I put up with python2 in order to develop the few utilities that require it to be available. Same with perl which even glibc requires to be available when building despite the fact it adds too much bloat for what little
    actual use I personally have for it.

    Het leven is goed,
    Maurice

    ... Huil niet om mij, ik heb vi.
    --- GNU bash, version 4.4.23(1)-release (x86_64-bonnell-linux-gnu)
    * Origin: Little Mikey's EuroPoint - Ladysmith BC, Canada (2:280/464.113)
  • From Benny Pedersen@2:230/0 to Maurice Kinal on Sat Aug 11 20:34:26 2018
    Hello Maurice!

    11 Aug 2018 19:30, Maurice Kinal wrote to Benny Pedersen:

    Firefox and the like. Also I believe there are some specific python3 apps used for development tools not too unlike cmake.

    +1

    Everything
    else, such as mesalibs, still require python2 and thus the additional bloat; both python2 and python3.

    -1, if not much intrest to drop python2 it will survice longer

    is your plan to make portage in bash ?
    No.

    +1

    ....
    even glibc requires to be available when building despite the fact it adds too much bloat for what little actual use I personally have for
    it.

    glib have not depending on python2 anymore on gentoo, but just defaults to it

    ----- glib.ebuild begins -----
    [I] dev-libs/glib
    Available versions: (2) 2.52.3 ~2.54.3-r6
    {dbus debug fam +mime selinux static-libs systemtap test utils xattr ABI_MIPS="n32 n64 o32" ABI_PPC="32 64" ABI_S390="32 64" ABI_X86="32 64 x32" KERNEL="linux" PYTHON_SINGLE_TARGET="python2_7 python3_5 python3_6 python3_7" PYTHON_TARGETS="python2_7 python3_5 python3_6 python3_7"}
    Installed versions: 2.52.3(2)(23:48:32 04/10/18)(mime xattr -dbus -debug -fam -selinux -static-libs -systemtap -test -utils ABI_MIPS="-n32 -n64 -o32" ABI_PPC="-32 -64" ABI_S390="-32 -64" ABI_X86="64 -32 -x32" KERNEL="linux" PYTHON_TARGETS="python2_7")
    Homepage: https://www.gtk.org/
    Description: The GLib library of C routines

    ----- glib.ebuild ends -----

    maybe try python 3.7 ? :)


    Regards Benny

    ... there can only be one way of life, and it works :)

    --- Msged/LNX 6.1.2 (Linux/4.17.14-gentoo (x86_64))
    * Origin: I will always keep a PC running CPM 3.0 (2:230/0)
  • From Maurice Kinal@2:280/464.113 to Benny Pedersen on Sat Aug 11 21:25:23 2018
    Hallo Benny!

    -1, if not much intrest to drop python2 it will survice longer

    It definetly looks that way, hence things like Firefox requiring you to have both python2 and python3. I have a choice to have either one or the other or none at all. However if none then I lose mc so for now I decided to go with python2 and make alsa struff happy while I am at it. With python3 I can keep mc happy as it doesn't care which version since it is glib that requires it and
    it is happy with either python2 or python3. At this point in time if I am forsced to python3 or both then I'd probably choose none and learn to live without mc. ;-)

    glib have not depending on python2 anymore on gentoo

    Interesting that they made that choice. Seems to me another reason I won't be using gentoo. ;-)

    maybe try python 3.7 ? :)

    Why? I am not planning to install Firefox and would still need python2 for mesalib if I wanted to install xorg and apps that require mesalib. I see no point for python3 other than Firefox at this stage of the game. Also I am still happy with a text browser so this isn't worth anything to me personally.

    Het leven is goed,
    Maurice

    ... Huil niet om mij, ik heb vi.
    --- GNU bash, version 4.4.23(1)-release (x86_64-bonnell-linux-gnu)
    * Origin: Little Mikey's EuroPoint - Ladysmith BC, Canada (2:280/464.113)
  • From Benny Pedersen@2:230/0 to Maurice Kinal on Tue Aug 14 13:37:16 2018
    Hello Maurice!

    11 Aug 2018 21:25, Maurice Kinal wrote to Benny Pedersen:

    -1, if not much intrest to drop python2 it will survice longer

    It definetly looks that way, hence things like Firefox requiring you
    to have both python2 and python3.

    seems why i dont emerge firefox here :)

    I have a choice to have either one
    or the other or none at all.

    your choice is not my problem :)

    However if none then I lose mc so for
    now I decided to go with python2 and make alsa struff happy while I am
    at it.

    disable fam, its solved imho ?

    With python3 I can keep mc happy as it doesn't care which
    version since it is glib that requires it and it is happy with either python2 or python3.

    glib can be compiled with python3 on gentoo, where is the problem then ?

    At this point in time if I am forsced to python3
    or both then I'd probably choose none and learn to live without mc.
    ;-)

    then you loose both aswell

    glib have not depending on python2 anymore on gentoo
    Interesting that they made that choice. Seems to me another reason I won't be using gentoo. ;-)

    and time to learn more

    maybe try python 3.7 ? :)
    Why?

    +1, python 2.7 is long supported on gentoo, failback if python3 fails

    I am not planning to install Firefox and would still need
    python2 for mesalib if I wanted to install xorg and apps that require mesalib. I see no point for python3 other than Firefox at this stage
    of the game.

    report it to the precompilers to change away from python2 would help get rid of
    dual versions of python api needs :)

    Also I am still happy with a text browser so this isn't
    worth anything to me personally.

    yep i am happy no need for X11 on my fidonet :)

    Het leven is goed,
    Maurice

    i got 4.18 now


    Regards Benny

    ... there can only be one way of life, and it works :)

    --- Msged/LNX 6.1.2 (Linux/4.18.0-gentoo (x86_64))
    * Origin: I will always keep a PC running CPM 3.0 (2:230/0)
  • From Maurice Kinal@2:280/464.113 to Benny Pedersen on Tue Aug 14 17:50:38 2018
    Hallo Benny!

    glib can be compiled with python3 on gentoo

    Or any other system using "--with-python=/usr/bin/python3" to glib's configure.
    However I still don't see the benefit if you still require python2 for everything else that requires python such as mesalib ... or even firefox which now requires both python2 and python3.

    python 2.7 is long supported on gentoo, failback if python3 fails

    Again I don't see why even bother with python3. In gentoo's you'll need at least python2 to keep the packaging/tracking system happy.

    i got 4.18 now

    I see that in your tearline. Near as I can tell it isn't much different than 4.17. I notice one proxy addition in netfilter called CONFIG_NF_TPROXY_IPV4 and CONFIG_NF_TPROXY_IPV6 but I haven't researched it yet. I am guessing I probably don't need it.


    Het leven is goed,
    Maurice

    ... Huil niet om mij, ik heb vi.
    --- GNU bash, version 4.4.23(1)-release (x86_64-bonnell-linux-gnu)
    * Origin: Little Mikey's EuroPoint - Ladysmith BC, Canada (2:280/464.113)
  • From Tony Langdon@3:633/410 to Benny Pedersen on Wed Aug 15 08:08:00 2018
    On 08-14-18 13:37, Benny Pedersen wrote to Maurice Kinal <=-

    Hello Maurice!

    11 Aug 2018 21:25, Maurice Kinal wrote to Benny Pedersen:

    -1, if not much intrest to drop python2 it will survice longer

    It definetly looks that way, hence things like Firefox requiring you
    to have both python2 and python3.

    seems why i dont emerge firefox here :)

    A lot of things still use Python 2(.7). Python 3 is far from universally accepted.


    ... If the polls are so accurate, why are there so many polling companies?
    === MultiMail/Win v0.51
    --- SBBSecho 3.03-Linux
    * Origin: Freeway BBS Bendigo,Australia freeway.apana.org.au (3:633/410)
  • From Benny Pedersen@2:230/0 to Maurice Kinal on Tue Aug 14 23:31:02 2018
    Hello Maurice!

    14 Aug 2018 17:50, Maurice Kinal wrote to Benny Pedersen:

    glib can be compiled with python3 on gentoo
    Or any other system using "--with-python=/usr/bin/python3" to glib's configure.

    +1

    However I still don't see the benefit if you still require
    python2 for everything else that requires python such as mesalib ...
    or even firefox which now requires both python2 and python3.

    each ebuild can use multislotted depends, but it does not need it, the only reason gentoo support multislots is that portage will break one day, and if that python is breaked, one cant emerge anything, loose

    if you tell portage to let glib and mesalib use python3 its done

    python 2.7 is long supported on gentoo, failback if python3 fails
    Again I don't see why even bother with python3. In gentoo's you'll
    need at least python2 to keep the packaging/tracking system happy.

    if you know gentoo more you will hate precompiled distros more :)

    i got 4.18 now
    I see that in your tearline. Near as I can tell it isn't much
    different than 4.17. I notice one proxy addition in netfilter called CONFIG_NF_TPROXY_IPV4 and CONFIG_NF_TPROXY_IPV6 but I haven't
    researched it yet. I am guessing I probably don't need it.

    this needs squid to be usefull with this 2 .config options

    fully dual stack transperant proxy, dont know if ssl can be transperant with man in middle ssl certs, i dont really care of that problems if p2p crypt works

    Het leven is goed,

    +10000

    ... Huil niet om mij, ik heb vi.

    where is that dutch come from ? :)


    Regards Benny

    ... there can only be one way of life, and it works :)

    --- Msged/LNX 6.1.2 (Linux/4.18.0-gentoo (x86_64))
    * Origin: I will always keep a PC running CPM 3.0 (2:230/0)
  • From Benny Pedersen@2:230/0 to Tony Langdon on Tue Aug 14 23:38:00 2018
    Hello Tony!

    15 Aug 2018 08:08, Tony Langdon wrote to Benny Pedersen:

    seems why i dont emerge firefox here :)
    A lot of things still use Python 2(.7). Python 3 is far from
    universally accepted.

    yep, 2.7, seems frezzed more or less, but gentoo nearly just keep it as a failback, python needs goes upward with versions depends, portage just stop if there is not atleast 2 diffrent versions installed, i dont remember of it could
    be 2 versions of python2 or 2 versions of python3 to satisfy it, for safety i keep one of each, going will will be install all python versions supported on gentoo :)

    so all works, hehe


    Regards Benny

    ... there can only be one way of life, and it works :)

    --- Msged/LNX 6.1.2 (Linux/4.18.0-gentoo (x86_64))
    * Origin: I will always keep a PC running CPM 3.0 (2:230/0)
  • From Tony Langdon@3:633/410 to Benny Pedersen on Wed Aug 15 11:39:00 2018
    On 08-14-18 23:38, Benny Pedersen wrote to Tony Langdon <=-

    Hello Tony!

    15 Aug 2018 08:08, Tony Langdon wrote to Benny Pedersen:

    seems why i dont emerge firefox here :)
    A lot of things still use Python 2(.7). Python 3 is far from
    universally accepted.

    yep, 2.7, seems frezzed more or less, but gentoo nearly just keep it as
    a failback, python needs goes upward with versions depends, portage
    just stop if there is not atleast 2 diffrent versions installed, i dont remember of it could be 2 versions of python2 or 2 versions of python3
    to satisfy it, for safety i keep one of each, going will will be
    install all python versions supported on gentoo :)

    I think most distros end up with V2.7 and v3 installed. I'm pretty sure I'm setup that way.


    ... If(crash){grab_ankles();kiss_butt_goodbye();}
    === MultiMail/Win v0.51
    --- SBBSecho 3.03-Linux
    * Origin: Freeway BBS Bendigo,Australia freeway.apana.org.au (3:633/410)
  • From Maurice Kinal@2:280/464.113 to Benny Pedersen on Wed Aug 15 03:04:44 2018
    Hallo Benny!

    if you tell portage to let glib and mesalib use python3 its done

    I am sure mesalib requires python2. Have you tried compiling it with only python3 available?

    if you know gentoo more you will hate precompiled distros more :)

    I don't hate them but I don't like that most don't tell me what I want to know before deciding whether or not I wish to try them out. For example what versions of gcc, glibc, kernel version, etc. The rest doesn't matter much and could care less about things like firefox nevermind which version.

    where is that dutch come from ? :)

    Half of the vi Dutch came from Henri Derksen if I remember correctly. The English version I came up with around twenty years ago during a discussion in this echoarea about mutiltasking and Madonna and using it as a tagline for "Little Mikey's EuroPoint" seems like a great idea given where the bossnode is located.

    Het leven is goed,
    Maurice

    ... Huil niet om mij, ik heb vi.
    --- GNU bash, version 4.4.23(1)-release (x86_64-bonnell-linux-gnu)
    * Origin: Little Mikey's EuroPoint - Ladysmith BC, Canada (2:280/464.113)
  • From Little Mikey@1:153/7001 to Maurice Kinal on Wed Aug 15 04:20:50 2018
    Attention Maurice Kinal,

    Half of the vi Dutch came from Henri Derksen if I remember
    correctly.

    "MSGID: 2:280/1208@FidoNet 3c0b785c", posted in ASIAN_LINK, showing FTN DateTime stamp of "30 Apr 18 11:58:00", replying to a msg with the subject "Pathetic earthlings." Your original message had the tagline "Do not cry for me Ik heb vi." to which Henri Derksen offered the corrected version of "Huil niet om mij, ik heb vi", which is the EuroPoint's current default tagline.

    The English version I came up with around twenty years ago during
    a discussion in this echoarea about mutiltasking and Madonna

    Check out;

    https://fidonet.ozzmosis.com/echomail.php/linux/2cf951c8f70a3065.html

    That is where it started. Too bad the above is a corrupted version but that is
    as close to tracking it down to the source as can be found at this writing.

    Maybe mark lewis can come up with the original? There is enough information in
    the above to help track it down.

    End transmission.

    ... Fudd's First Law of Opposition:
    If you push something hard enough, it will fall over.
    --- GNU bash, version 4.4.23(1)-release (x86_64-silvermont-linux-gnu)
    * Origin: Little Mikey's Brain - Ladysmith BC, Canada (1:153/7001)
  • From Benny Pedersen@2:230/0 to Maurice Kinal on Wed Aug 15 21:19:42 2018
    Hello Maurice!

    15 Aug 2018 03:04, Maurice Kinal wrote to Benny Pedersen:

    if you tell portage to let glib and mesalib use python3 its done
    I am sure mesalib requires python2. Have you tried compiling it with only python3 available?

    ----- mesa.ebuild begins -----
    * media-libs/mesa
    Available versions: 17.3.9^d ~18.0.5^d ~18.1.4^d ~18.1.5^d ~18.1.6^d ~18.2.0_rc2^t **9999^t {bindist +classic d3d9 debug +dri3 +egl +gallium +gbm gles1 gles2 +llvm lm_sensors +nptl opencl openmax osmesa pax_kernel pic selinux
    test unwind vaapi valgrind vdpau vulkan wayland xa xvmc ABI_MIPS="n32 n64 o32" ABI_PPC="32 64" ABI_S390="32 64" ABI_X86="32 64 x32" VIDEO_CARDS="freedreno i915 i965 imx intel nouveau r100 r200 r300 r600 radeon radeonsi vc4 virgl vivante vmware"}
    Homepage: https://www.mesa3d.org/ https://mesa.freedesktop.org/
    Description: OpenGL-like graphic library for Linux

    ----- mesa.ebuild ends -----

    not this one ?

    python free here

    if you know gentoo more you will hate precompiled distros more :)
    I don't hate them but I don't like that most don't tell me what I want
    to know before deciding whether or not I wish to try them out.

    same here, i just learn from redhat, that was when i desided to go away from precompiled distros into freebsd and gentoo world, have not retgretted it since, and following maillists about ubuntu and centos keep me away from them, debian might be sligtly better somewhare :)

    For
    example what versions of gcc, glibc, kernel version, etc.

    +1

    The rest
    doesn't matter much and could care less about things like firefox nevermind which version.

    +1

    i have used links in framebuffered graphics mode on a quad p2 :)

    it worked, not slow at all, and did not need any reboots after using it


    Regards Benny

    ... there can only be one way of life, and it works :)

    --- Msged/LNX 6.1.2 (Linux/4.18.0-gentoo (x86_64))
    * Origin: I will always keep a PC running CPM 3.0 (2:230/0)
  • From Maurice Kinal@2:280/464.113 to Benny Pedersen on Wed Aug 15 22:32:55 2018
    Hallo Benny!

    not this one ?

    The most recent one I was looking at is 18.1.5 and requires python2 as well at least one python module; Mako. I'll have to check gentoo's configuration to see if there is somewhere there that disables the need for python when building
    mesa.

    python free here

    See above. I still have doubts.

    i have used links in framebuffered graphics mode on a quad p2 :)
    it worked, not slow at all, and did not need any reboots after
    using it

    I've done that too but on a dual p3 with a matrox g200. It worked fantastic. It even had a TV capture card and I could watch TV on one console and still have console switching so that I could have other things going on different tty's without any interference from the others including the TV tty. Later on I added a second monitor just for graphical output and kept the main monitor for the good stuff, such as compiling and other text based operations. That was the ideal setup.

    Het leven is goed,
    Maurice

    ... Huil niet om mij, ik heb vi.
    --- GNU bash, version 4.4.23(1)-release (x86_64-bonnell-linux-gnu)
    * Origin: Little Mikey's EuroPoint - Ladysmith BC, Canada (2:280/464.113)
  • From Little Mikey@1:153/7001 to Maurice Kinal on Wed Aug 15 23:10:13 2018
    Attention Maurice Kinal,

    python free here

    See above. I still have doubts.

    See; https://www.reddit.com/r/Gentoo/comments/96n8eo/mako_module_required_to_build_mesa/

    which confirms your doubts including the need for the python module Mako. Of note is the "PYTHON_COMPAT value in mesa ebuild" which appears to enable python3 compatibilty instead of the default python2 requirement.

    End transmission.

    ... Fudd's First Law of Opposition:
    If you push something hard enough, it will fall over.
    --- GNU bash, version 4.4.23(1)-release (x86_64-silvermont-linux-gnu)
    * Origin: Little Mikey's Brain - Ladysmith BC, Canada (1:153/7001)