From 81841dc2b3180e9fb30540c6d2d63cda96d9ecf7 Mon Sep 17 00:00:00 2001 From: William Hubbs Date: Sat, 28 Jan 2023 16:01:57 -0600 Subject: [PATCH 01/11] sys-apps/baselayout: fix the passwd file path for prefix Signed-off-by: William Hubbs --- sys-apps/baselayout/baselayout-2.13-r1.ebuild | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys-apps/baselayout/baselayout-2.13-r1.ebuild b/sys-apps/baselayout/baselayout-2.13-r1.ebuild index 71073b11c7477..5ef1316a5e6c9 100644 --- a/sys-apps/baselayout/baselayout-2.13-r1.ebuild +++ b/sys-apps/baselayout/baselayout-2.13-r1.ebuild @@ -235,7 +235,7 @@ src_prepare() { if use prefix; then hprefixify -e "/EUID/s,0,${EUID}," -q '"' etc/profile - hprefixify etc/shells share.Linux/passwd + hprefixify etc/shells share/passwd hprefixify -w '/PATH=/' etc/env.d/50baselayout hprefixify -w 1 etc/env.d/50baselayout echo PATH=/usr/sbin:/sbin:/usr/bin:/bin >> etc/env.d/99host From dab116d7128c9ce1566f2841696765663240ca36 Mon Sep 17 00:00:00 2001 From: William Hubbs Date: Sat, 28 Jan 2023 16:03:22 -0600 Subject: [PATCH 02/11] sys-apps/baselayout: keyword 2.13-r1 Signed-off-by: William Hubbs --- sys-apps/baselayout/baselayout-2.13-r1.ebuild | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys-apps/baselayout/baselayout-2.13-r1.ebuild b/sys-apps/baselayout/baselayout-2.13-r1.ebuild index 5ef1316a5e6c9..afc0043d403a8 100644 --- a/sys-apps/baselayout/baselayout-2.13-r1.ebuild +++ b/sys-apps/baselayout/baselayout-2.13-r1.ebuild @@ -12,7 +12,7 @@ if [[ ${PV} = 9999 ]]; then inherit git-r3 else SRC_URI="https://gitweb.gentoo.org/proj/${PN}.git/snapshot/${P}.tar.bz2" - #KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris ~x86-winnt" + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris ~x86-winnt" fi LICENSE="GPL-2" From 134dce1bc828e731dc1b12b4454f8827675a5fc9 Mon Sep 17 00:00:00 2001 From: James Le Cuirot Date: Mon, 26 Dec 2022 22:12:13 +0000 Subject: [PATCH 03/11] sys-libs/glibc: Strip prefix from ld scripts for better cross-compiling The toolchain expects to find the libc's files under its own sysroot. This sysroot is automatically prepended to paths found in ld scripts, such as those installed with glibc. We configure standalone prefix systems with a sysroot, so these paths should not be prefixed. However, Gentoo Prefix has traditionally left them prefixed and stopped the compiler from passing the sysroot to the linker instead. It is better to strip the prefix and let the sysroot do its job, as this makes cross-compiling much less awkward. prefix-guest systems do not have a sysroot applied, as they use the host's libc, but they would not install glibc anyway. This change is not needed for musl, as it does not install any ld scripts. Signed-off-by: James Le Cuirot --- profiles/features/prefix/standalone/profile.bashrc | 9 +-------- sys-libs/glibc/glibc-2.36-r6.ebuild | 11 +++++++++++ sys-libs/glibc/glibc-2.36-r7.ebuild | 11 +++++++++++ sys-libs/glibc/glibc-9999.ebuild | 11 +++++++++++ 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/profiles/features/prefix/standalone/profile.bashrc b/profiles/features/prefix/standalone/profile.bashrc index fd95e43f7f30f..3cdda77b9a886 100644 --- a/profiles/features/prefix/standalone/profile.bashrc +++ b/profiles/features/prefix/standalone/profile.bashrc @@ -1,5 +1,5 @@ # -*- mode: shell-script; -*- -# Copyright 2018-2021 Gentoo Authors +# Copyright 2018-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # RAP specific patches pending upstream: @@ -24,10 +24,6 @@ if [[ ${CATEGORY}/${PN} == sys-devel/gcc && ${EBUILD_PHASE} == configure ]]; the # use sysroot of toolchain to get correct include and library at compile time EXTRA_ECONF="${EXTRA_ECONF} --with-sysroot=${EPREFIX}" - - ebegin "remove --sysroot call on ld for native toolchain" - sed -i 's/--sysroot=%R//' gcc/gcc.c* - eend $? elif [[ ${CATEGORY}/${PN} == sys-devel/clang && ${EBUILD_PHASE} == configure ]]; then ebegin "Use ${EPREFIX} as default sysroot" sed -i -e "s@DEFAULT_SYSROOT \"\"@DEFAULT_SYSROOT \"${EPREFIX}\"@" "${S}"/CMakeLists.txt @@ -36,9 +32,6 @@ elif [[ ${CATEGORY}/${PN} == sys-devel/clang && ${EBUILD_PHASE} == configure ]]; ebegin "Use dynamic linker from ${EPREFIX}" sed -i -e "/LibDir.*Loader/s@return \"\/\"@return \"${EPREFIX%/}/\"@" Linux.cpp eend $? - ebegin "Remove --sysroot call on ld for native toolchain" - sed -i -e "$(grep -n -B1 sysroot= Gnu.cpp | sed -ne '{1s/-.*//;1p}'),+1 d" Gnu.cpp - eend $? popd >/dev/null elif [[ ${CATEGORY}/${PN} == sys-devel/binutils && ${EBUILD_PHASE} == prepare ]]; then ebegin "Prefixifying native library path" diff --git a/sys-libs/glibc/glibc-2.36-r6.ebuild b/sys-libs/glibc/glibc-2.36-r6.ebuild index be82be429c8f8..e86bbd923123c 100644 --- a/sys-libs/glibc/glibc-2.36-r6.ebuild +++ b/sys-libs/glibc/glibc-2.36-r6.ebuild @@ -1314,6 +1314,17 @@ glibc_do_src_install() { mv "${ED}"/$(alt_usrlibdir)/libm-${upstream_pv}.a "${ED}"/$(alt_usrlibdir)/${P}/libm-${upstream_pv}.a || die fi + # We configure toolchains for standalone prefix systems with a sysroot, + # which is prepended to paths in ld scripts, so strip the prefix from these. + # Before: GROUP ( /foo/lib64/libc.so.6 /foo/usr/lib64/libc_nonshared.a AS_NEEDED ( /foo/lib64/ld-linux-x86-64.so.2 ) ) + # After: GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a AS_NEEDED ( /lib64/ld-linux-x86-64.so.2 ) ) + if [[ -n $(host_eprefix) ]] ; then + local file + grep -lZIF "ld script" "${ED}/$(alt_usrlibdir)"/lib*.{a,so} 2>/dev/null | while read -rd '' file ; do + sed -i "s|$(host_eprefix)/|/|g" "${file}" || die + done + fi + # We'll take care of the cache ourselves rm -f "${ED}"/etc/ld.so.cache diff --git a/sys-libs/glibc/glibc-2.36-r7.ebuild b/sys-libs/glibc/glibc-2.36-r7.ebuild index 7071aab6c5471..6f93ac1992b1d 100644 --- a/sys-libs/glibc/glibc-2.36-r7.ebuild +++ b/sys-libs/glibc/glibc-2.36-r7.ebuild @@ -1314,6 +1314,17 @@ glibc_do_src_install() { mv "${ED}"/$(alt_usrlibdir)/libm-${upstream_pv}.a "${ED}"/$(alt_usrlibdir)/${P}/libm-${upstream_pv}.a || die fi + # We configure toolchains for standalone prefix systems with a sysroot, + # which is prepended to paths in ld scripts, so strip the prefix from these. + # Before: GROUP ( /foo/lib64/libc.so.6 /foo/usr/lib64/libc_nonshared.a AS_NEEDED ( /foo/lib64/ld-linux-x86-64.so.2 ) ) + # After: GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a AS_NEEDED ( /lib64/ld-linux-x86-64.so.2 ) ) + if [[ -n $(host_eprefix) ]] ; then + local file + grep -lZIF "ld script" "${ED}/$(alt_usrlibdir)"/lib*.{a,so} 2>/dev/null | while read -rd '' file ; do + sed -i "s|$(host_eprefix)/|/|g" "${file}" || die + done + fi + # We'll take care of the cache ourselves rm -f "${ED}"/etc/ld.so.cache diff --git a/sys-libs/glibc/glibc-9999.ebuild b/sys-libs/glibc/glibc-9999.ebuild index 413594ad57c4a..23a25b3e5e139 100644 --- a/sys-libs/glibc/glibc-9999.ebuild +++ b/sys-libs/glibc/glibc-9999.ebuild @@ -1317,6 +1317,17 @@ glibc_do_src_install() { mv "${ED}"/$(alt_usrlibdir)/libm-${upstream_pv}.a "${ED}"/$(alt_usrlibdir)/${P}/libm-${upstream_pv}.a || die fi + # We configure toolchains for standalone prefix systems with a sysroot, + # which is prepended to paths in ld scripts, so strip the prefix from these. + # Before: GROUP ( /foo/lib64/libc.so.6 /foo/usr/lib64/libc_nonshared.a AS_NEEDED ( /foo/lib64/ld-linux-x86-64.so.2 ) ) + # After: GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a AS_NEEDED ( /lib64/ld-linux-x86-64.so.2 ) ) + if [[ -n $(host_eprefix) ]] ; then + local file + grep -lZIF "ld script" "${ED}/$(alt_usrlibdir)"/lib*.{a,so} 2>/dev/null | while read -rd '' file ; do + sed -i "s|$(host_eprefix)/|/|g" "${file}" || die + done + fi + # We'll take care of the cache ourselves rm -f "${ED}"/etc/ld.so.cache From d26d425af9aa825c94532589f2ca6d0cdb7f3d01 Mon Sep 17 00:00:00 2001 From: James Le Cuirot Date: Mon, 26 Dec 2022 22:17:40 +0000 Subject: [PATCH 04/11] usr-ldscript.eclass: Don't add prefix to ld script paths when standalone The toolchain's sysroot is automatically prepended to these paths. Gentoo Prefix used to prevent this, but now we're changing that. prefix-guest systems do not have a sysroot applied, as they use the host's libc, so the prefix is still needed in this case. This is actually all moot because the gen_usr_ldscript function is a noop on prefix anyway, but I'm still adding this in case that changes. Signed-off-by: James Le Cuirot --- eclass/usr-ldscript.eclass | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/eclass/usr-ldscript.eclass b/eclass/usr-ldscript.eclass index b73d538ae5bb6..6dbce59c6400b 100644 --- a/eclass/usr-ldscript.eclass +++ b/eclass/usr-ldscript.eclass @@ -39,6 +39,13 @@ gen_usr_ldscript() { tc-is-static-only && return use prefix && return + # The toolchain's sysroot is automatically prepended to paths in this + # script. We therefore need to omit EPREFIX on standalone prefix (RAP) + # systems. prefix-guest (non-RAP) systems don't apply a sysroot so EPREFIX + # is still needed in that case. This is moot because the above line makes + # the function a noop on prefix, but we keep this in case that changes. + local prefix=$(usex prefix-guest "${EPREFIX}" "") + # We only care about stuffing / for the native ABI. #479448 if [[ $(type -t multilib_is_native_abi) == "function" ]] ; then multilib_is_native_abi || return 0 @@ -154,7 +161,7 @@ gen_usr_ldscript() { See bug https://bugs.gentoo.org/4411 for more info. */ ${output_format} - GROUP ( ${EPREFIX}/${libdir}/${tlib} ) + GROUP ( ${prefix}/${libdir}/${tlib} ) END_LDSCRIPT ;; esac From 72925b1dccebbf082c31a2be89c7693d966ecd54 Mon Sep 17 00:00:00 2001 From: James Le Cuirot Date: Mon, 26 Dec 2022 22:32:02 +0000 Subject: [PATCH 05/11] toolchain.eclass: Fix cross-compiling gcc for standalone prefix Standalone prefix has always configured gcc with a sysroot, but the location of this sysroot is different at build time when cross-compiling. gcc has a separate configure option for that. prefix-guest systems do not have a sysroot applied, as they use the host's libc. Move this code from the prefix profile into the eclass so that it's less of a special case. We can avoid relying on the `BOOTSTRAP_RAP_STAGE2` variable by checking for the `prefix-guest` USE flag instead, as a prefix-guest profile is now used for RAP stage 2. Signed-off-by: James Le Cuirot --- eclass/toolchain.eclass | 15 +++++++++++++++ .../features/prefix/standalone/profile.bashrc | 3 --- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass index 0dd23d93e3835..479814f0df3eb 100644 --- a/eclass/toolchain.eclass +++ b/eclass/toolchain.eclass @@ -1200,6 +1200,21 @@ toolchain_src_configure() { confgcc+=( --enable-threads=posix ) ;; esac + + if ! use prefix-guest ; then + # GNU ld scripts, such as those in glibc, reference unprefixed paths + # as the sysroot given here is automatically prepended. For + # prefix-guest, we use the host's libc instead. + if [[ -n ${EPREFIX} ]] ; then + confgcc+=( --with-sysroot="${EPREFIX}" ) + fi + + # We need to build against the right headers and libraries. Again, + # for prefix-guest, this is the host's. + if [[ -n ${ESYSROOT} ]] ; then + confgcc+=( --with-build-sysroot="${ESYSROOT}" ) + fi + fi fi # __cxa_atexit is "essential for fully standards-compliant handling of diff --git a/profiles/features/prefix/standalone/profile.bashrc b/profiles/features/prefix/standalone/profile.bashrc index 3cdda77b9a886..043f766c37e98 100644 --- a/profiles/features/prefix/standalone/profile.bashrc +++ b/profiles/features/prefix/standalone/profile.bashrc @@ -21,9 +21,6 @@ if [[ ${CATEGORY}/${PN} == sys-devel/gcc && ${EBUILD_PHASE} == configure ]]; the fi eend $? done - - # use sysroot of toolchain to get correct include and library at compile time - EXTRA_ECONF="${EXTRA_ECONF} --with-sysroot=${EPREFIX}" elif [[ ${CATEGORY}/${PN} == sys-devel/clang && ${EBUILD_PHASE} == configure ]]; then ebegin "Use ${EPREFIX} as default sysroot" sed -i -e "s@DEFAULT_SYSROOT \"\"@DEFAULT_SYSROOT \"${EPREFIX}\"@" "${S}"/CMakeLists.txt From 597efc1908793a77001d42ebbd96ebb07f8ee631 Mon Sep 17 00:00:00 2001 From: James Le Cuirot Date: Sat, 7 Jan 2023 14:58:43 +0000 Subject: [PATCH 06/11] toolchain.eclass: Move remaining gcc prefix tweaks from profile Signed-off-by: James Le Cuirot --- eclass/toolchain.eclass | 13 +++++++++++++ profiles/features/prefix/standalone/profile.bashrc | 14 +------------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass index 479814f0df3eb..6d8901d218125 100644 --- a/eclass/toolchain.eclass +++ b/eclass/toolchain.eclass @@ -719,6 +719,19 @@ toolchain_src_prepare() { einfo "Remove texinfo (bug #198182, bug #464008)" eapply "${FILESDIR}"/gcc-configure-texinfo.patch + if ! use prefix-guest && [[ -n ${EPREFIX} ]] ; then + einfo "Prefixifying dynamic linkers..." + for f in gcc/config/*/*linux*.h ; do + ebegin " Updating ${f}" + if [[ ${f} == gcc/config/rs6000/linux*.h ]]; then + sed -i -r "s,(DYNAMIC_LINKER_PREFIX\s+)\"\",\1\"${EPREFIX}\",g" "${f}" || die + else + sed -i -r "/_DYNAMIC_LINKER/s,([\":])(/lib),\1${EPREFIX}\2,g" "${f}" || die + fi + eend $? + done + fi + # >=gcc-4 if [[ -x contrib/gcc_update ]] ; then einfo "Touching generated files" diff --git a/profiles/features/prefix/standalone/profile.bashrc b/profiles/features/prefix/standalone/profile.bashrc index 043f766c37e98..57ec4b57abcbe 100644 --- a/profiles/features/prefix/standalone/profile.bashrc +++ b/profiles/features/prefix/standalone/profile.bashrc @@ -9,19 +9,7 @@ # Disable RAP trick during bootstrap stage2 [[ -z ${BOOTSTRAP_RAP_STAGE2} ]] || return 0 -if [[ ${CATEGORY}/${PN} == sys-devel/gcc && ${EBUILD_PHASE} == configure ]]; then - cd "${S}" - einfo "Prefixifying dynamic linkers..." - for h in gcc/config/*/*linux*.h; do - ebegin " Updating $h" - if [[ "${h}" == gcc/config/rs6000/linux*.h ]]; then - sed -i -r "s,(DYNAMIC_LINKER_PREFIX\s+)\"\",\1\"${EPREFIX}\",g" $h - else - sed -i -r "/_DYNAMIC_LINKER/s,([\":])(/lib),\1${EPREFIX}\2,g" $h - fi - eend $? - done -elif [[ ${CATEGORY}/${PN} == sys-devel/clang && ${EBUILD_PHASE} == configure ]]; then +if [[ ${CATEGORY}/${PN} == sys-devel/clang && ${EBUILD_PHASE} == configure ]]; then ebegin "Use ${EPREFIX} as default sysroot" sed -i -e "s@DEFAULT_SYSROOT \"\"@DEFAULT_SYSROOT \"${EPREFIX}\"@" "${S}"/CMakeLists.txt eend $? From 28edf4f989f28e2c9e698462f693f8f6b58eaa19 Mon Sep 17 00:00:00 2001 From: James Le Cuirot Date: Sat, 7 Jan 2023 15:44:32 +0000 Subject: [PATCH 07/11] sys-devel/clang: Move clang prefix tweaks from profile Signed-off-by: James Le Cuirot --- profiles/features/prefix/standalone/profile.bashrc | 11 +---------- sys-devel/clang/clang-13.0.1.ebuild | 5 +++++ sys-devel/clang/clang-14.0.6-r1.ebuild | 5 +++++ sys-devel/clang/clang-15.0.7-r1.ebuild | 5 +++++ sys-devel/clang/clang-16.0.0.9999.ebuild | 5 +++++ sys-devel/clang/clang-16.0.0_pre20230107.ebuild | 5 +++++ sys-devel/clang/clang-16.0.0_pre20230127.ebuild | 5 +++++ sys-devel/clang/clang-17.0.0.9999.ebuild | 5 +++++ 8 files changed, 36 insertions(+), 10 deletions(-) diff --git a/profiles/features/prefix/standalone/profile.bashrc b/profiles/features/prefix/standalone/profile.bashrc index 57ec4b57abcbe..d46933210dcc1 100644 --- a/profiles/features/prefix/standalone/profile.bashrc +++ b/profiles/features/prefix/standalone/profile.bashrc @@ -9,16 +9,7 @@ # Disable RAP trick during bootstrap stage2 [[ -z ${BOOTSTRAP_RAP_STAGE2} ]] || return 0 -if [[ ${CATEGORY}/${PN} == sys-devel/clang && ${EBUILD_PHASE} == configure ]]; then - ebegin "Use ${EPREFIX} as default sysroot" - sed -i -e "s@DEFAULT_SYSROOT \"\"@DEFAULT_SYSROOT \"${EPREFIX}\"@" "${S}"/CMakeLists.txt - eend $? - pushd "${S}/lib/Driver/ToolChains" >/dev/null - ebegin "Use dynamic linker from ${EPREFIX}" - sed -i -e "/LibDir.*Loader/s@return \"\/\"@return \"${EPREFIX%/}/\"@" Linux.cpp - eend $? - popd >/dev/null -elif [[ ${CATEGORY}/${PN} == sys-devel/binutils && ${EBUILD_PHASE} == prepare ]]; then +if [[ ${CATEGORY}/${PN} == sys-devel/binutils && ${EBUILD_PHASE} == prepare ]]; then ebegin "Prefixifying native library path" sed -i -r "/NATIVE_LIB_DIRS/s,((/usr(/local|)|)/lib),${EPREFIX}\1,g" \ "${S}"/ld/configure.tgt diff --git a/sys-devel/clang/clang-13.0.1.ebuild b/sys-devel/clang/clang-13.0.1.ebuild index 5e10d595d900f..c3a97feedae73 100644 --- a/sys-devel/clang/clang-13.0.1.ebuild +++ b/sys-devel/clang/clang-13.0.1.ebuild @@ -82,6 +82,10 @@ src_prepare() { eprefixify \ lib/Frontend/InitHeaderSearch.cpp \ lib/Driver/ToolChains/Darwin.cpp || die + + if ! use prefix-guest && [[ -n ${EPREFIX} ]]; then + sed -i "/LibDir.*Loader/s@return \"\/\"@return \"${EPREFIX}/\"@" lib/Driver/ToolChains/Linux.cpp || die + fi } check_distribution_components() { @@ -224,6 +228,7 @@ multilib_src_configure() { local clang_version=$(ver_cut 1-3 "${llvm_version}") local mycmakeargs=( + -DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}") -DLLVM_CMAKE_PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)/cmake/llvm" -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}" -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man" diff --git a/sys-devel/clang/clang-14.0.6-r1.ebuild b/sys-devel/clang/clang-14.0.6-r1.ebuild index de10ab36054fd..5cdb584470ac7 100644 --- a/sys-devel/clang/clang-14.0.6-r1.ebuild +++ b/sys-devel/clang/clang-14.0.6-r1.ebuild @@ -95,6 +95,10 @@ src_prepare() { eprefixify \ lib/Lex/InitHeaderSearch.cpp \ lib/Driver/ToolChains/Darwin.cpp || die + + if ! use prefix-guest && [[ -n ${EPREFIX} ]]; then + sed -i "/LibDir.*Loader/s@return \"\/\"@return \"${EPREFIX}/\"@" lib/Driver/ToolChains/Linux.cpp || die + fi } check_distribution_components() { @@ -234,6 +238,7 @@ multilib_src_configure() { local clang_version=$(ver_cut 1-3 "${llvm_version}") local mycmakeargs=( + -DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}") -DLLVM_CMAKE_PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)/cmake/llvm" -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}" -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man" diff --git a/sys-devel/clang/clang-15.0.7-r1.ebuild b/sys-devel/clang/clang-15.0.7-r1.ebuild index b7b9a4e0a2745..578c01ab0ea2b 100644 --- a/sys-devel/clang/clang-15.0.7-r1.ebuild +++ b/sys-devel/clang/clang-15.0.7-r1.ebuild @@ -86,6 +86,10 @@ src_prepare() { eprefixify \ lib/Lex/InitHeaderSearch.cpp \ lib/Driver/ToolChains/Darwin.cpp || die + + if ! use prefix-guest && [[ -n ${EPREFIX} ]]; then + sed -i "/LibDir.*Loader/s@return \"\/\"@return \"${EPREFIX}/\"@" lib/Driver/ToolChains/Linux.cpp || die + fi } check_distribution_components() { @@ -249,6 +253,7 @@ get_distribution_components() { multilib_src_configure() { local mycmakeargs=( + -DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}") -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}" -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man" -DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang" diff --git a/sys-devel/clang/clang-16.0.0.9999.ebuild b/sys-devel/clang/clang-16.0.0.9999.ebuild index 4979e95cd523c..b45257440e785 100644 --- a/sys-devel/clang/clang-16.0.0.9999.ebuild +++ b/sys-devel/clang/clang-16.0.0.9999.ebuild @@ -85,6 +85,10 @@ src_prepare() { eprefixify \ lib/Lex/InitHeaderSearch.cpp \ lib/Driver/ToolChains/Darwin.cpp || die + + if ! use prefix-guest && [[ -n ${EPREFIX} ]]; then + sed -i "/LibDir.*Loader/s@return \"\/\"@return \"${EPREFIX}/\"@" lib/Driver/ToolChains/Linux.cpp || die + fi } check_distribution_components() { @@ -250,6 +254,7 @@ get_distribution_components() { multilib_src_configure() { local mycmakeargs=( + -DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}") -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}" -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man" -DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang" diff --git a/sys-devel/clang/clang-16.0.0_pre20230107.ebuild b/sys-devel/clang/clang-16.0.0_pre20230107.ebuild index f8a5211642c1c..f6e6fd239ce23 100644 --- a/sys-devel/clang/clang-16.0.0_pre20230107.ebuild +++ b/sys-devel/clang/clang-16.0.0_pre20230107.ebuild @@ -85,6 +85,10 @@ src_prepare() { eprefixify \ lib/Lex/InitHeaderSearch.cpp \ lib/Driver/ToolChains/Darwin.cpp || die + + if ! use prefix-guest && [[ -n ${EPREFIX} ]]; then + sed -i "/LibDir.*Loader/s@return \"\/\"@return \"${EPREFIX}/\"@" lib/Driver/ToolChains/Linux.cpp || die + fi } check_distribution_components() { @@ -248,6 +252,7 @@ get_distribution_components() { multilib_src_configure() { local mycmakeargs=( + -DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}") -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}" -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man" -DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang" diff --git a/sys-devel/clang/clang-16.0.0_pre20230127.ebuild b/sys-devel/clang/clang-16.0.0_pre20230127.ebuild index 4979e95cd523c..b45257440e785 100644 --- a/sys-devel/clang/clang-16.0.0_pre20230127.ebuild +++ b/sys-devel/clang/clang-16.0.0_pre20230127.ebuild @@ -85,6 +85,10 @@ src_prepare() { eprefixify \ lib/Lex/InitHeaderSearch.cpp \ lib/Driver/ToolChains/Darwin.cpp || die + + if ! use prefix-guest && [[ -n ${EPREFIX} ]]; then + sed -i "/LibDir.*Loader/s@return \"\/\"@return \"${EPREFIX}/\"@" lib/Driver/ToolChains/Linux.cpp || die + fi } check_distribution_components() { @@ -250,6 +254,7 @@ get_distribution_components() { multilib_src_configure() { local mycmakeargs=( + -DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}") -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}" -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man" -DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang" diff --git a/sys-devel/clang/clang-17.0.0.9999.ebuild b/sys-devel/clang/clang-17.0.0.9999.ebuild index 4979e95cd523c..b45257440e785 100644 --- a/sys-devel/clang/clang-17.0.0.9999.ebuild +++ b/sys-devel/clang/clang-17.0.0.9999.ebuild @@ -85,6 +85,10 @@ src_prepare() { eprefixify \ lib/Lex/InitHeaderSearch.cpp \ lib/Driver/ToolChains/Darwin.cpp || die + + if ! use prefix-guest && [[ -n ${EPREFIX} ]]; then + sed -i "/LibDir.*Loader/s@return \"\/\"@return \"${EPREFIX}/\"@" lib/Driver/ToolChains/Linux.cpp || die + fi } check_distribution_components() { @@ -250,6 +254,7 @@ get_distribution_components() { multilib_src_configure() { local mycmakeargs=( + -DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}") -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}" -DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man" -DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang" From 112404b843cd492715f679acf8a31fd7e35ed568 Mon Sep 17 00:00:00 2001 From: James Le Cuirot Date: Mon, 26 Dec 2022 22:56:05 +0000 Subject: [PATCH 08/11] python-utils-r1.eclass: Use BROOT rather than EPREFIX for PYTHON var The PYTHON variable is used for the wrapper shebangs. These should point to the build system rather than the host system. The variable is also used in other contexts, but the build system is still likely to be most appropriate. If this does break anything, it'll only be for prefixed systems. Signed-off-by: James Le Cuirot --- eclass/python-utils-r1.eclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass index 43472bd1fae00..bc397229a6701 100644 --- a/eclass/python-utils-r1.eclass +++ b/eclass/python-utils-r1.eclass @@ -332,7 +332,7 @@ _python_export() { debug-print "${FUNCNAME}: EPYTHON = ${EPYTHON}" ;; PYTHON) - export PYTHON=${EPREFIX}/usr/bin/${impl} + export PYTHON=${BROOT-${EPREFIX}}/usr/bin/${impl} debug-print "${FUNCNAME}: PYTHON = ${PYTHON}" ;; PYTHON_SITEDIR) From 56d7a0c62d5b7fd147c48749de999f4bee88f78e Mon Sep 17 00:00:00 2001 From: James Le Cuirot Date: Fri, 30 Dec 2022 10:49:47 +0000 Subject: [PATCH 09/11] dev-libs/libbsd: Strip prefix from paths in ld script ld scripts on standalone prefix (RAP) systems should have the prefix stripped from any paths, as the sysroot is automatically prepended. I originally thought this script was just used to apply --as-needed and was therefore unneeded. It's actually used to automatically link libmd when it is needed. Signed-off-by: James Le Cuirot --- dev-libs/libbsd/libbsd-0.11.7-r2.ebuild | 43 +++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 dev-libs/libbsd/libbsd-0.11.7-r2.ebuild diff --git a/dev-libs/libbsd/libbsd-0.11.7-r2.ebuild b/dev-libs/libbsd/libbsd-0.11.7-r2.ebuild new file mode 100644 index 0000000000000..0fcfb6bd563b3 --- /dev/null +++ b/dev-libs/libbsd/libbsd-0.11.7-r2.ebuild @@ -0,0 +1,43 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/guillemjover.asc +inherit multilib multilib-minimal verify-sig + +DESCRIPTION="Library to provide useful functions commonly found on BSD systems" +HOMEPAGE="https://libbsd.freedesktop.org/wiki/ https://gitlab.freedesktop.org/libbsd/libbsd" +SRC_URI="https://${PN}.freedesktop.org/releases/${P}.tar.xz" +SRC_URI+=" verify-sig? ( https://${PN}.freedesktop.org/releases/${P}.tar.xz.asc )" + +LICENSE="BSD BSD-2 BSD-4 ISC" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux" +IUSE="static-libs" + +RDEPEND="app-crypt/libmd[${MULTILIB_USEDEP}]" +DEPEND="${RDEPEND} + >=sys-kernel/linux-headers-3.17 +" +BDEPEND="verify-sig? ( sec-keys/openpgp-keys-guillemjover )" + +multilib_src_configure() { + # The build system will install libbsd-ctor.a despite USE="-static-libs" + # which is correct, see: + # https://gitlab.freedesktop.org/libbsd/libbsd/commit/c5b959028734ca2281250c85773d9b5e1d259bc8 + ECONF_SOURCE="${S}" econf $(use_enable static-libs static) +} + +multilib_src_install() { + emake DESTDIR="${D}" install + + find "${ED}" -type f -name "*.la" -delete || die + + # ld scripts on standalone prefix (RAP) systems should have the prefix + # stripped from any paths, as the sysroot is automatically prepended. + local ldscript=${ED}/usr/$(get_libdir)/${PN}$(get_libname) + if use prefix && ! use prefix-guest && grep -qIF "ld script" "${ldscript}" 2>/dev/null; then + sed -i "s|${EPREFIX}/|/|g" "${ldscript}" || die + fi +} From 1cbc36adc37249afbc864623bf2a3f4fb5a9c35d Mon Sep 17 00:00:00 2001 From: William Hubbs Date: Sat, 28 Jan 2023 16:13:42 -0600 Subject: [PATCH 10/11] sys-apps/baselayout: drop 2.13 Signed-off-by: William Hubbs --- sys-apps/baselayout/baselayout-2.13.ebuild | 376 --------------------- 1 file changed, 376 deletions(-) delete mode 100644 sys-apps/baselayout/baselayout-2.13.ebuild diff --git a/sys-apps/baselayout/baselayout-2.13.ebuild b/sys-apps/baselayout/baselayout-2.13.ebuild deleted file mode 100644 index 97ceb30c32908..0000000000000 --- a/sys-apps/baselayout/baselayout-2.13.ebuild +++ /dev/null @@ -1,376 +0,0 @@ -# Copyright 1999-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -inherit multilib prefix - -DESCRIPTION="Filesystem baselayout and init scripts" -HOMEPAGE="https://wiki.gentoo.org/wiki/No_homepage" -if [[ ${PV} = 9999 ]]; then - EGIT_REPO_URI="https://anongit.gentoo.org/git/proj/${PN}.git" - inherit git-r3 -else - SRC_URI="https://gitweb.gentoo.org/proj/${PN}.git/snapshot/${P}.tar.bz2" - KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris ~x86-winnt" -fi - -LICENSE="GPL-2" -SLOT="0" -IUSE="build +split-usr" - -RDEPEND="!sys-apps/baselayout-prefix" - -pkg_setup() { - multilib_layout -} - -riscv_compat_symlink() { - # Here we apply some special sauce for riscv. - # Two multilib layouts exist for now: - # 1) one level libdirs, (32bit) "lib" and (64bit) "lib64" - # these are chosen by us to closely resemble other arches - # 2) two level libdirs, "lib64/lp64d" "lib64/lp64" "lib32/ilp32d" ... - # this is the glibc/gcc default - # Unfortunately, the default has only one fallback, which is "lib" - # for both 32bit and 64bit. So things do not break in 1), we need - # to provide compatibility symlinks... - - # This function has exactly two parameters: - # - the default libdir, to determine if 1) or 2) applies - # - the location of the symlink (which points to ".") - - # Note: we call this only in the ${SYMLINK_LIB} = no codepath, since - # there never was a ${SYMLINK_LIB} = yes riscv profile. - - case ${CHOST} in - riscv*) - # are we on a one level libdir profile? is there no symlink yet? - if [[ ${1} != */* && ! -L ${2} ]] ; then - ln -s . $2 || die "Unable to make $2 riscv compatibility symlink" - fi - ;; - esac -} - -# Create our multilib dirs - the Makefile has no knowledge of this -multilib_layout() { - local dir def_libdir libdir libdirs - local prefix prefix_lst - def_libdir=$(get_abi_LIBDIR $DEFAULT_ABI) - libdirs=$(get_all_libdirs) - - if [[ -z "${SYMLINK_LIB}" || ${SYMLINK_LIB} = no ]] ; then - prefix_lst=( "${EROOT}"/{,usr/,usr/local/} ) - for prefix in "${prefix_lst[@]}"; do - for libdir in ${libdirs}; do - dir="${prefix}${libdir}" - if [[ -e "${dir}" ]]; then - [[ ! -d "${dir}" ]] && - die "${dir} exists but is not a directory" - continue - fi - if ! use split-usr && [[ ${prefix} = ${EROOT}/ ]]; then - libdir="${libdir%%/*}" - dir="${prefix}${libdir}" - einfo "symlinking ${dir} to usr/${libdir}" - ln -s usr/${libdir} ${dir} || - die "Unable to make ${dir} symlink" - else - einfo "creating directory ${dir}" - mkdir -p "${dir}" || - die "Unable to create ${dir} directory" - fi - done - [[ -d "${prefix}${def_libdir}" ]] && riscv_compat_symlink "${def_libdir}" "${prefix}${def_libdir}/${DEFAULT_ABI}" - done - return 0 - fi - - [ -z "${def_libdir}" ] && - die "your DEFAULT_ABI=$DEFAULT_ABI appears to be invalid" - - # figure out which paths should be symlinks and which should be directories - local dirs syms exp d - for libdir in ${libdirs} ; do - if use split-usr ; then - exp=( {,usr/,usr/local/}${libdir} ) - else - exp=( {usr/,usr/local/}${libdir} ) - fi - for d in "${exp[@]}" ; do - # most things should be dirs - if [ "${SYMLINK_LIB}" = "yes" ] && [ "${libdir}" = "lib" ] ; then - [ ! -h "${d}" ] && [ -e "${d}" ] && dirs+=" ${d}" - else - [ -h "${d}" ] && syms+=" ${d}" - fi - done - done - if [ -n "${syms}${dirs}" ] ; then - ewarn "Your system profile has SYMLINK_LIB=${SYMLINK_LIB:-no}, so that means you need to" - ewarn "have these paths configured as follows:" - [ -n "${dirs}" ] && ewarn "symlinks to '${def_libdir}':${dirs}" - [ -n "${syms}" ] && ewarn "directories:${syms}" - ewarn "The ebuild will attempt to fix these, but only for trivial conversions." - ewarn "If things fail, you will need to manually create/move the directories." - echo - fi - - # setup symlinks and dirs where we expect them to be; do not migrate - # data ... just fall over in that case. - if use split-usr ; then - prefix_lst=( "${EROOT}"/{,usr/,usr/local/} ) - else - prefix_lst=( "${EROOT}"/{usr/,usr/local/} ) - fi - for prefix in "${prefix_lst[@]}"; do - if [ "${SYMLINK_LIB}" = yes ] ; then - # we need to make sure "lib" points to the native libdir - if [ -h "${prefix}lib" ] ; then - # it's already a symlink! assume it's pointing to right place ... - continue - elif [ -d "${prefix}lib" ] ; then - # "lib" is a dir, so need to convert to a symlink - ewarn "Converting ${prefix}lib from a dir to a symlink" - rm -f "${prefix}lib"/.keep || die - if rmdir "${prefix}lib" 2>/dev/null ; then - ln -s ${def_libdir} "${prefix}lib" || die - else - die "non-empty dir found where we needed a symlink: ${prefix}lib" - fi - else - # nothing exists, so just set it up sanely - ewarn "Initializing ${prefix}lib as a symlink" - mkdir -p "${prefix}" || die - rm -f "${prefix}lib" || die - ln -s ${def_libdir} "${prefix}lib" || die - mkdir -p "${prefix}${def_libdir}" || die #423571 - fi - else - # we need to make sure "lib" is a dir - if [ -h "${prefix}lib" ] ; then - # "lib" is a symlink, so need to convert to a dir - ewarn "Converting ${prefix}lib from a symlink to a dir" - rm -f "${prefix}lib" || die - if [ -d "${prefix}lib32" ] ; then - ewarn "Migrating ${prefix}lib32 to ${prefix}lib" - mv "${prefix}lib32" "${prefix}lib" || die - else - mkdir -p "${prefix}lib" || die - fi - elif [ -d "${prefix}lib" ] && ! has lib32 ${libdirs} ; then - # make sure the old "lib" ABI location does not exist; we - # only symlinked the lib dir on systems where we moved it - # to "lib32" ... - case ${CHOST} in - i?86*|x86_64*|powerpc*|sparc*|s390*) - if [[ -d ${prefix}lib32 && ! -h ${prefix}lib32 ]] ; then - rm -f "${prefix}lib32"/.keep || die - if ! rmdir "${prefix}lib32" 2>/dev/null ; then - ewarn "You need to merge ${prefix}lib32 into ${prefix}lib" - die "non-empty dir found where there should be none: ${prefix}lib32" - fi - fi - ;; - esac - else - # nothing exists, so just set it up sanely - ewarn "Initializing ${prefix}lib as a dir" - mkdir -p "${prefix}lib" || die - fi - fi - done - if ! use split-usr ; then - for libdir in ${libdirs}; do - if [[ ! -e "${EROOT}${libdir}" ]]; then - ln -s usr/"${libdir}" "${EROOT}${libdir}" || - die "Unable to make ${EROOT}${libdir} symlink" - fi - done - fi -} - -pkg_preinst() { - # This is written in src_install (so it's in CONTENTS), but punt all - # pending updates to avoid user having to do etc-update (and make the - # pkg_postinst logic simpler). - rm -f "${EROOT}"/etc/._cfg????_gentoo-release || die - - # We need to install directories and maybe some dev nodes when building - # stages, but they cannot be in CONTENTS. - # Also, we cannot reference $S as binpkg will break so we do this. - multilib_layout - if use build ; then - if use split-usr ; then - emake -C "${ED}/usr/share/${PN}" DESTDIR="${EROOT}" layout - else - emake -C "${ED}/usr/share/${PN}" DESTDIR="${EROOT}" layout-usrmerge - fi - fi - rm -f "${ED}"/usr/share/${PN}/Makefile || die -} - -src_prepare() { - default - - # don't want symlinked directories in PATH on systems with usr-merge - if ! use split-usr && ! use prefix-guest; then - sed \ - -e 's|:/usr/sbin:|:|g' \ - -e 's|:/sbin:|:|g' \ - -e 's|:/bin:|:|g' \ - -i etc/env.d/50baselayout || die - fi - - if use prefix; then - hprefixify -e "/EUID/s,0,${EUID}," -q '"' etc/profile - hprefixify etc/shells share.Linux/passwd - hprefixify -w '/PATH=/' etc/env.d/50baselayout - hprefixify -w 1 etc/env.d/50baselayout - echo PATH=/usr/sbin:/sbin:/usr/bin:/bin >> etc/env.d/99host - - # change branding - sed -i \ - -e '/gentoo-release/s/Gentoo Base/Gentoo Prefix Base/' \ - -e '/make_os_release/s/${OS}/Prefix/' \ - Makefile || die - fi - - # handle multilib paths. do it here because we want this behavior - # regardless of the C library that you're using. we do explicitly - # list paths which the native ldconfig searches, but this isn't - # problematic as it doesn't change the resulting ld.so.cache or - # take longer to generate. similarly, listing both the native - # path and the symlinked path doesn't change the resulting cache. - local libdir ldpaths - for libdir in $(get_all_libdirs) ; do - if use split-usr || use prefix-guest; then - ldpaths+=":${EPREFIX}/${libdir}" - fi - ldpaths+=":${EPREFIX}/usr/${libdir}" - ldpaths+=":${EPREFIX}/usr/local/${libdir}" - done - echo "LDPATH='${ldpaths#:}'" >> etc/env.d/50baselayout -} - -src_install() { - emake \ - DESTDIR="${ED}" \ - install - - if [[ ${CHOST} == *-darwin* ]] ; then - # add SDK path which contains development manpages - echo "MANPATH=${EPREFIX}/MacOSX.sdk/usr/share/man" \ - > "${ED}"/etc/env.d/98macos-sdk - fi - - # need the makefile in pkg_preinst - insinto /usr/share/${PN} - doins Makefile - - dodoc ChangeLog - - # bug 858596 - if use prefix-guest ; then - dodir sbin - cat > "${ED}"/sbin/runscript <<- EOF - #!/usr/bin/env sh - source "${EPREFIX}/lib/gentoo/functions.sh" - - eerror "runscript/openrc-run not supported by Gentoo Prefix Base System release ${PV}" 1>&2 - exit 1 - EOF - chmod 755 "${ED}"/sbin/runscript || die - cp "${ED}"/sbin/{runscript,openrc-run} || die - fi -} - -pkg_postinst() { - local x - - # We installed some files to /usr/share/baselayout instead of /etc to stop - # (1) overwriting the user's settings - # (2) screwing things up when attempting to merge files - # (3) accidentally packaging up personal files with quickpkg - # If they don't exist then we install them - for x in master.passwd passwd shadow group fstab ; do - [ -e "${EROOT}/etc/${x}" ] && continue - [ -e "${EROOT}/usr/share/baselayout/${x}" ] || continue - cp -p "${EROOT}/usr/share/baselayout/${x}" "${EROOT}"/etc || die - done - - # Force shadow permissions to not be world-readable #260993 - for x in shadow ; do - if [ -e "${EROOT}/etc/${x}" ] ; then - chmod o-rwx "${EROOT}/etc/${x}" || die - fi - done - - # Take care of the etc-update for the user - if [ -e "${EROOT}"/etc/._cfg0000_gentoo-release ] ; then - mv "${EROOT}"/etc/._cfg0000_gentoo-release "${EROOT}"/etc/gentoo-release || die - fi - - # whine about users that lack passwords #193541 - if [[ -e "${EROOT}"/etc/shadow ]] ; then - local bad_users=$(sed -n '/^[^:]*::/s|^\([^:]*\)::.*|\1|p' "${EROOT}"/etc/shadow) - if [[ -n ${bad_users} ]] ; then - echo - ewarn "The following users lack passwords!" - ewarn ${bad_users} - fi - fi - - # whine about users with invalid shells #215698 - if [[ -e "${EROOT}"/etc/passwd ]] ; then - local bad_shells=$(awk -F: 'system("test -e ${ROOT}" $7) { print $1 " - " $7}' "${EROOT}"/etc/passwd | sort) - if [[ -n ${bad_shells} ]] ; then - echo - ewarn "The following users have non-existent shells!" - ewarn "${bad_shells}" - fi - fi - - # https://bugs.gentoo.org/361349 - if use kernel_linux; then - mkdir -p "${EROOT}"/run || die - - local found fstype mountpoint - while read -r _ mountpoint fstype _; do - [[ ${mountpoint} = /run ]] && [[ ${fstype} = tmpfs ]] && found=1 - done < "${ROOT}"/proc/mounts - [[ -z ${found} ]] && - ewarn "You should reboot now to get /run mounted with tmpfs!" - fi - - for x in ${REPLACING_VERSIONS}; do - if ver_test 2.4 -lt ${x}; then - ewarn "After updating ${EROOT}/etc/profile, please run" - ewarn "env-update && . /etc/profile" - fi - - if ver_test 2.6 -lt ${x}; then - ewarn "Please run env-update then log out and back in to" - ewarn "update your path." - fi - # clean up after 2.5 typos - # https://bugs.gentoo.org/show_bug.cgi?id=656380 - if [[ ${x} == 2.5 ]]; then - rm -fr "${EROOT}/{,usr" || die - fi - done - - if [[ -e "${EROOT}"/etc/env.d/00basic ]]; then - ewarn "${EROOT}/etc/env.d/00basic is now ${EROOT}/etc/env.d/50baselayout" - ewarn "Please migrate your changes." - fi - - # Restore /var/run and /var/lock if we just removed them from 2.11 or 2.12 - if [[ ! -L ${EROOT}/var/run && ! -e ${EROOT}/var/run ]]; then - ln -s ../run "${EROOT}"/var/run - fi - if [[ ! -L ${EROOT}/var/lock && ! -e ${EROOT}/var/lock ]]; then - ln -s ../run/lock "${EROOT}"/var/lock - fi -} From 12a58c22e40211eab2fd901279e8f81cb8e588eb Mon Sep 17 00:00:00 2001 From: William Hubbs Date: Sat, 28 Jan 2023 16:13:43 -0600 Subject: [PATCH 11/11] sys-apps/baselayout: sync live Signed-off-by: William Hubbs --- sys-apps/baselayout/baselayout-9999.ebuild | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys-apps/baselayout/baselayout-9999.ebuild b/sys-apps/baselayout/baselayout-9999.ebuild index 3c3f89d714deb..afc0043d403a8 100644 --- a/sys-apps/baselayout/baselayout-9999.ebuild +++ b/sys-apps/baselayout/baselayout-9999.ebuild @@ -235,7 +235,7 @@ src_prepare() { if use prefix; then hprefixify -e "/EUID/s,0,${EUID}," -q '"' etc/profile - hprefixify etc/shells share.Linux/passwd + hprefixify etc/shells share/passwd hprefixify -w '/PATH=/' etc/env.d/50baselayout hprefixify -w 1 etc/env.d/50baselayout echo PATH=/usr/sbin:/sbin:/usr/bin:/bin >> etc/env.d/99host