GentooRepository/app-alternatives/sh/sh-0.ebuild

48 lines
1.4 KiB
Bash

# Copyright 2022-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
ALTERNATIVES=(
bash:app-shells/bash
busybox:sys-apps/busybox
dash:app-shells/dash
ksh:app-shells/ksh
"lksh:app-shells/mksh[lksh]"
mksh:app-shells/mksh
)
inherit app-alternatives
DESCRIPTION="/bin/sh (POSIX shell) symlink"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
RDEPEND="
!app-eselect/eselect-sh
"
pkg_setup() {
if [[ -z ${ROOT} ]] && use busybox ; then
# Needed to avoid busybox preferring internal applets over PATH lookups.
# https://web.archive.org/web/20221206223848/https://busybox.net/FAQ.html#standalone_shell.
if busybox bbconfig | grep -q "CONFIG_FEATURE_SH_STANDALONE=y" ; then
ewarn "busybox is configured with CONFIG_FEATURE_SH_STANDALONE=y!"
ewarn "This is not a safe configuration for busybox as /bin/sh."
ewarn "Please use savedconfig to disable CONFIG_FEATURE_SH_STANDALONE on busybox."
die "Aborting due to unsafe Busybox configuration (CONFIG_FEATURE_SH_STANDALONE=y)!"
fi
fi
}
src_install() {
dosym "$(get_alternative)" /bin/sh || die
}
pkg_postrm() {
# make sure we don't leave the user without /bin/sh, since it's not
# been owned by any other package
if [[ ! -h ${EROOT}/bin/sh ]]; then
ln -s bash "${EROOT}/bin/sh" || die
fi
}