diff options
Diffstat (limited to 'app-alternatives/sh/sh-0.ebuild')
-rw-r--r-- | app-alternatives/sh/sh-0.ebuild | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/app-alternatives/sh/sh-0.ebuild b/app-alternatives/sh/sh-0.ebuild new file mode 100644 index 000000000000..c62843c07c16 --- /dev/null +++ b/app-alternatives/sh/sh-0.ebuild @@ -0,0 +1,47 @@ +# 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 +} |