summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-alternatives/sh/sh-0.ebuild')
-rw-r--r--app-alternatives/sh/sh-0.ebuild47
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
+}