mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-28 00:51:41 +02:00
sys-shells/bash: import from upstream Gentoo
The only reason we have bash in the cros overlay is so that we have it not install a /bin/sh symlink pointing to bash in the board root. Once we move that handling to chromeos-base, we can drop all the bash ebuild customizations. BUG=chromium-os:21901 TEST=`emerge chromeos-base bash` and see /bin/sh -> bash TEST=`emerge-amd64-generic chromeos-base dash` and see /bin/sh -> dash TEST=`emerge-arm-generic chromeos-base dash` and see /bin/sh -> dash TEST=`emerge-x86-generic chromeos-base dash` and see /bin/sh -> dash Change-Id: I1df4a75ac314ed308817b4cdf61564ac0174ad63 Reviewed-on: https://gerrit.chromium.org/gerrit/11409 Reviewed-by: David James <davidjames@chromium.org> Tested-by: Mike Frysinger <vapier@chromium.org> Commit-Ready: Mike Frysinger <vapier@chromium.org>
This commit is contained in:
parent
3d479c52ca
commit
0029f25495
190
sdk_container/src/third_party/portage-stable/app-shells/bash/bash-4.1_p9.ebuild
vendored
Normal file
190
sdk_container/src/third_party/portage-stable/app-shells/bash/bash-4.1_p9.ebuild
vendored
Normal file
@ -0,0 +1,190 @@
|
||||
# Copyright 1999-2011 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/app-shells/bash/bash-4.1_p9.ebuild,v 1.8 2011/05/16 10:36:26 nyhm Exp $
|
||||
|
||||
EAPI="1"
|
||||
|
||||
inherit eutils flag-o-matic toolchain-funcs multilib
|
||||
|
||||
# Official patchlevel
|
||||
# See ftp://ftp.cwru.edu/pub/bash/bash-3.2-patches/
|
||||
PLEVEL=${PV##*_p}
|
||||
MY_PV=${PV/_p*}
|
||||
MY_PV=${MY_PV/_/-}
|
||||
MY_P=${PN}-${MY_PV}
|
||||
[[ ${PV} != *_p* ]] && PLEVEL=0
|
||||
READLINE_VER=6.1
|
||||
READLINE_PLEVEL=0 # both readline patches are also released as bash patches
|
||||
patches() {
|
||||
local opt=$1 plevel=${2:-${PLEVEL}} pn=${3:-${PN}} pv=${4:-${MY_PV}}
|
||||
[[ ${plevel} -eq 0 ]] && return 1
|
||||
eval set -- {1..${plevel}}
|
||||
set -- $(printf "${pn}${pv/\.}-%03d " "$@")
|
||||
if [[ ${opt} == -s ]] ; then
|
||||
echo "${@/#/${DISTDIR}/}"
|
||||
else
|
||||
local u
|
||||
for u in ftp://ftp.cwru.edu/pub/bash mirror://gnu/${pn} ; do
|
||||
printf "${u}/${pn}-${pv}-patches/%s " "$@"
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
DESCRIPTION="The standard GNU Bourne again shell"
|
||||
HOMEPAGE="http://tiswww.case.edu/php/chet/bash/bashtop.html"
|
||||
SRC_URI="mirror://gnu/bash/${MY_P}.tar.gz $(patches)
|
||||
$(patches ${READLINE_PLEVEL} readline ${READLINE_VER})"
|
||||
|
||||
LICENSE="GPL-3"
|
||||
SLOT="0"
|
||||
KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~sparc-fbsd ~x86-fbsd"
|
||||
IUSE="afs bashlogger examples mem-scramble +net nls plugins vanilla"
|
||||
|
||||
DEPEND=">=sys-libs/ncurses-5.2-r2
|
||||
nls? ( virtual/libintl )"
|
||||
RDEPEND="${DEPEND}
|
||||
!<sys-apps/portage-2.1.7.16
|
||||
!<sys-apps/paludis-0.26.0_alpha5"
|
||||
|
||||
S=${WORKDIR}/${MY_P}
|
||||
|
||||
pkg_setup() {
|
||||
if is-flag -malign-double ; then #7332
|
||||
eerror "Detected bad CFLAGS '-malign-double'. Do not use this"
|
||||
eerror "as it breaks LFS (struct stat64) on x86."
|
||||
die "remove -malign-double from your CFLAGS mr ricer"
|
||||
fi
|
||||
if use bashlogger ; then
|
||||
ewarn "The logging patch should ONLY be used in restricted (i.e. honeypot) envs."
|
||||
ewarn "This will log ALL output you enter into the shell, you have been warned."
|
||||
fi
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
unpack ${MY_P}.tar.gz
|
||||
cd "${S}"
|
||||
|
||||
# Include official patches
|
||||
[[ ${PLEVEL} -gt 0 ]] && epatch $(patches -s)
|
||||
cd lib/readline
|
||||
[[ ${READLINE_PLEVEL} -gt 0 ]] && epatch $(patches -s ${READLINE_PLEVEL} readline ${READLINE_VER})
|
||||
cd ../..
|
||||
|
||||
epatch "${FILESDIR}"/${PN}-4.1-fbsd-eaccess.patch #303411
|
||||
|
||||
if ! use vanilla ; then
|
||||
sed -i '1i#define NEED_FPURGE_DECL' execute_cmd.c # needs fpurge() decl
|
||||
epatch "${FILESDIR}"/${PN}-4.1-parallel-build.patch
|
||||
fi
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
local myconf=
|
||||
|
||||
# For descriptions of these, see config-top.h
|
||||
# bashrc/#26952 bash_logout/#90488 ssh/#24762
|
||||
append-cppflags \
|
||||
-DDEFAULT_PATH_VALUE=\'\"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"\' \
|
||||
-DSTANDARD_UTILS_PATH=\'\"/bin:/usr/bin:/sbin:/usr/sbin\"\' \
|
||||
-DSYS_BASHRC=\'\"/etc/bash/bashrc\"\' \
|
||||
-DSYS_BASH_LOGOUT=\'\"/etc/bash/bash_logout\"\' \
|
||||
-DNON_INTERACTIVE_LOGIN_SHELLS \
|
||||
-DSSH_SOURCE_BASHRC \
|
||||
$(use bashlogger && echo -DSYSLOG_HISTORY)
|
||||
|
||||
# Always use the buildin readline, else if we update readline
|
||||
# bash gets borked as readline is usually not binary compadible
|
||||
# between minor versions.
|
||||
#myconf="${myconf} $(use_with !readline installed-readline)"
|
||||
myconf="${myconf} --without-installed-readline"
|
||||
|
||||
# Don't even think about building this statically without
|
||||
# reading Bug 7714 first. If you still build it statically,
|
||||
# don't come crying to us with bugs ;).
|
||||
#use static && export LDFLAGS="${LDFLAGS} -static"
|
||||
use nls || myconf="${myconf} --disable-nls"
|
||||
|
||||
# Force linking with system curses ... the bundled termcap lib
|
||||
# sucks bad compared to ncurses
|
||||
myconf="${myconf} --with-curses"
|
||||
|
||||
myconf="${myconf} --without-lispdir" #335896
|
||||
|
||||
use plugins && append-ldflags -Wl,-rpath,/usr/$(get_libdir)/bash
|
||||
econf \
|
||||
$(use_with afs) \
|
||||
$(use_enable net net-redirections) \
|
||||
--disable-profiling \
|
||||
$(use_enable mem-scramble) \
|
||||
$(use_with mem-scramble bash-malloc) \
|
||||
${myconf} || die
|
||||
emake || die "make failed"
|
||||
|
||||
if use plugins ; then
|
||||
emake -C examples/loadables all others || die
|
||||
fi
|
||||
}
|
||||
|
||||
src_install() {
|
||||
emake install DESTDIR="${D}" || die
|
||||
|
||||
dodir /bin
|
||||
mv "${D}"/usr/bin/bash "${D}"/bin/ || die
|
||||
dosym bash /bin/rbash
|
||||
|
||||
insinto /etc/bash
|
||||
doins "${FILESDIR}"/{bashrc,bash_logout}
|
||||
insinto /etc/skel
|
||||
for f in bash{_logout,_profile,rc} ; do
|
||||
newins "${FILESDIR}"/dot-${f} .${f}
|
||||
done
|
||||
|
||||
sed -i -e "s:#${USERLAND}#@::" "${D}"/etc/skel/.bashrc "${D}"/etc/bash/bashrc
|
||||
sed -i -e '/#@/d' "${D}"/etc/skel/.bashrc "${D}"/etc/bash/bashrc
|
||||
|
||||
if use plugins ; then
|
||||
exeinto /usr/$(get_libdir)/bash
|
||||
doexe $(echo examples/loadables/*.o | sed 's:\.o::g') || die
|
||||
fi
|
||||
|
||||
if use examples ; then
|
||||
for d in examples/{functions,misc,scripts,scripts.noah,scripts.v2} ; do
|
||||
exeinto /usr/share/doc/${PF}/${d}
|
||||
insinto /usr/share/doc/${PF}/${d}
|
||||
for f in ${d}/* ; do
|
||||
if [[ ${f##*/} != PERMISSION ]] && [[ ${f##*/} != *README ]] ; then
|
||||
doexe ${f}
|
||||
else
|
||||
doins ${f}
|
||||
fi
|
||||
done
|
||||
done
|
||||
fi
|
||||
|
||||
doman doc/*.1
|
||||
dodoc README NEWS AUTHORS CHANGES COMPAT Y2K doc/FAQ doc/INTRO
|
||||
dosym bash.info /usr/share/info/bashref.info
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
if [[ -e ${ROOT}/etc/bashrc ]] && [[ ! -d ${ROOT}/etc/bash ]] ; then
|
||||
mkdir -p "${ROOT}"/etc/bash
|
||||
mv -f "${ROOT}"/etc/bashrc "${ROOT}"/etc/bash/
|
||||
fi
|
||||
|
||||
if [[ -L ${ROOT}/bin/sh ]]; then
|
||||
# rewrite the symlink to ensure that its mtime changes. having /bin/sh
|
||||
# missing even temporarily causes a fatal error with paludis.
|
||||
local target=$(readlink "${ROOT}"/bin/sh)
|
||||
local tmp=$(emktemp "${ROOT}"/bin)
|
||||
ln -sf "${target}" "${tmp}"
|
||||
mv -f "${tmp}" "${ROOT}"/bin/sh
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
# If /bin/sh does not exist, provide it
|
||||
if [[ ! -e ${ROOT}/bin/sh ]]; then
|
||||
ln -sf bash "${ROOT}"/bin/sh
|
||||
fi
|
||||
}
|
29
sdk_container/src/third_party/portage-stable/app-shells/bash/files/bash-4.1-fbsd-eaccess.patch
vendored
Normal file
29
sdk_container/src/third_party/portage-stable/app-shells/bash/files/bash-4.1-fbsd-eaccess.patch
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
Bash built-in test fails to correctly report exeuctable status for non-
|
||||
executable files when run by root on FreeBSD.
|
||||
|
||||
See http://bugs.gentoo.org/303411
|
||||
|
||||
Patch from Johan Hattne <johan.hattne@utsuthwestern.edu>
|
||||
--- lib/sh/eaccess.c.orig
|
||||
+++ lib/sh/eaccess.c
|
||||
@@ -198,11 +198,19 @@
|
||||
char *path;
|
||||
int mode;
|
||||
{
|
||||
+ struct stat s;
|
||||
+ int ret;
|
||||
+
|
||||
if (path_is_devfd (path))
|
||||
return (sh_stataccess (path, mode));
|
||||
|
||||
#if defined (HAVE_EACCESS) /* FreeBSD */
|
||||
- return (eaccess (path, mode));
|
||||
+ if (stat (path, &s) != 0)
|
||||
+ return (-1);
|
||||
+ ret = eaccess (path, mode);
|
||||
+ if (mode == X_OK && ret == 0 && !S_ISDIR(s.st_mode) && geteuid() == 0)
|
||||
+ return ((s.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)) == 0 ? -1 : 0);
|
||||
+ return (ret);
|
||||
#elif defined (EFF_ONLY_OK) /* SVR4(?), SVR4.2 */
|
||||
return access (path, mode|EFF_ONLY_OK);
|
||||
#else
|
23
sdk_container/src/third_party/portage-stable/app-shells/bash/files/bash-4.1-parallel-build.patch
vendored
Normal file
23
sdk_container/src/third_party/portage-stable/app-shells/bash/files/bash-4.1-parallel-build.patch
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
--- bash-4.1/lib/glob/Makefile.in
|
||||
+++ bash-4.1/lib/glob/Makefile.in
|
||||
@@ -119,6 +119,11 @@
|
||||
mostlyclean: clean
|
||||
-( cd doc && $(MAKE) $(MFLAGS) $@ )
|
||||
|
||||
+# Dependencies
|
||||
+
|
||||
+${BUILD_DIR}/pathnames.h: ${BUILD_DIR}/config.h ${BUILD_DIR}/Makefile Makefile
|
||||
+ -( cd ${BUILD_DIR} && ${MAKE} ${MFLAGS} pathnames.h )
|
||||
+
|
||||
######################################################################
|
||||
# #
|
||||
# Dependencies for the object files which make up this library. #
|
||||
@@ -136,7 +141,7 @@
|
||||
strmatch.o: $(BUILD_DIR)/config.h
|
||||
strmatch.o: $(BASHINCDIR)/stdc.h
|
||||
|
||||
-glob.o: $(BUILD_DIR)/config.h
|
||||
+glob.o: $(BUILD_DIR)/config.h $(topdir)/shell.h $(BUILD_DIR)/pathnames.h
|
||||
glob.o: $(topdir)/bashtypes.h $(BASHINCDIR)/ansi_stdlib.h $(topdir)/bashansi.h
|
||||
glob.o: $(BASHINCDIR)/posixstat.h $(BASHINCDIR)/memalloc.h
|
||||
glob.o: strmatch.h glob.h
|
9
sdk_container/src/third_party/portage-stable/app-shells/bash/files/bash_logout
vendored
Normal file
9
sdk_container/src/third_party/portage-stable/app-shells/bash/files/bash_logout
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
# /etc/bash/bash_logout
|
||||
|
||||
# This file is sourced when a login shell terminates.
|
||||
|
||||
# You may wish to clear everyone's screen when they logout.
|
||||
#clear
|
||||
|
||||
# Or maybe you want to leave a thoughtful note.
|
||||
#fortune
|
86
sdk_container/src/third_party/portage-stable/app-shells/bash/files/bashrc
vendored
Normal file
86
sdk_container/src/third_party/portage-stable/app-shells/bash/files/bashrc
vendored
Normal file
@ -0,0 +1,86 @@
|
||||
# /etc/bash/bashrc
|
||||
#
|
||||
# This file is sourced by all *interactive* bash shells on startup,
|
||||
# including some apparently interactive shells such as scp and rcp
|
||||
# that can't tolerate any output. So make sure this doesn't display
|
||||
# anything or bad things will happen !
|
||||
|
||||
|
||||
# Test for an interactive shell. There is no need to set anything
|
||||
# past this point for scp and rcp, and it's important to refrain from
|
||||
# outputting anything in those cases.
|
||||
if [[ $- != *i* ]] ; then
|
||||
# Shell is non-interactive. Be done now!
|
||||
return
|
||||
fi
|
||||
|
||||
# Bash won't get SIGWINCH if another process is in the foreground.
|
||||
# Enable checkwinsize so that bash will check the terminal size when
|
||||
# it regains control. #65623
|
||||
# http://cnswww.cns.cwru.edu/~chet/bash/FAQ (E11)
|
||||
shopt -s checkwinsize
|
||||
|
||||
# Enable history appending instead of overwriting. #139609
|
||||
shopt -s histappend
|
||||
|
||||
# Change the window title of X terminals
|
||||
case ${TERM} in
|
||||
xterm*|rxvt*|Eterm|aterm|kterm|gnome*|interix)
|
||||
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"'
|
||||
;;
|
||||
screen)
|
||||
PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\033\\"'
|
||||
;;
|
||||
esac
|
||||
|
||||
use_color=false
|
||||
#BSD#@# BSD doesn't typically come with dircolors so we need
|
||||
#BSD#@# to hardcode some terminals in here.
|
||||
#BSD#@case ${TERM} in
|
||||
#BSD#@ xterm*|rxvt*|Eterm|aterm|kterm|gnome*|screen|cons25) use_color=true;;
|
||||
#BSD#@esac
|
||||
|
||||
# Set colorful PS1 only on colorful terminals.
|
||||
# dircolors --print-database uses its own built-in database
|
||||
# instead of using /etc/DIR_COLORS. Try to use the external file
|
||||
# first to take advantage of user additions. Use internal bash
|
||||
# globbing instead of external grep binary.
|
||||
safe_term=${TERM//[^[:alnum:]]/?} # sanitize TERM
|
||||
match_lhs=""
|
||||
[[ -f ~/.dir_colors ]] && match_lhs="${match_lhs}$(<~/.dir_colors)"
|
||||
[[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(</etc/DIR_COLORS)"
|
||||
[[ -z ${match_lhs} ]] \
|
||||
&& type -P dircolors >/dev/null \
|
||||
&& match_lhs=$(dircolors --print-database)
|
||||
[[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] && use_color=true
|
||||
|
||||
if ${use_color} ; then
|
||||
# Enable colors for ls, etc. Prefer ~/.dir_colors #64489
|
||||
if type -P dircolors >/dev/null ; then
|
||||
if [[ -f ~/.dir_colors ]] ; then
|
||||
eval $(dircolors -b ~/.dir_colors)
|
||||
elif [[ -f /etc/DIR_COLORS ]] ; then
|
||||
eval $(dircolors -b /etc/DIR_COLORS)
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ ${EUID} == 0 ]] ; then
|
||||
PS1='\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '
|
||||
else
|
||||
PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '
|
||||
fi
|
||||
|
||||
#BSD#@export CLICOLOR=1
|
||||
#GNU#@alias ls='ls --color=auto'
|
||||
alias grep='grep --colour=auto'
|
||||
else
|
||||
if [[ ${EUID} == 0 ]] ; then
|
||||
# show root@ when we don't have colors
|
||||
PS1='\u@\h \W \$ '
|
||||
else
|
||||
PS1='\u@\h \w \$ '
|
||||
fi
|
||||
fi
|
||||
|
||||
# Try to keep environment pollution down, EPA loves us.
|
||||
unset use_color safe_term match_lhs
|
6
sdk_container/src/third_party/portage-stable/app-shells/bash/files/dot-bash_logout
vendored
Normal file
6
sdk_container/src/third_party/portage-stable/app-shells/bash/files/dot-bash_logout
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
# /etc/skel/.bash_logout
|
||||
|
||||
# This file is sourced when a login shell terminates.
|
||||
|
||||
# Clear the screen for security's sake.
|
||||
clear
|
5
sdk_container/src/third_party/portage-stable/app-shells/bash/files/dot-bash_profile
vendored
Normal file
5
sdk_container/src/third_party/portage-stable/app-shells/bash/files/dot-bash_profile
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
# /etc/skel/.bash_profile
|
||||
|
||||
# This file is sourced by bash for login shells. The following line
|
||||
# runs your .bashrc and is recommended by the bash info pages.
|
||||
[[ -f ~/.bashrc ]] && . ~/.bashrc
|
18
sdk_container/src/third_party/portage-stable/app-shells/bash/files/dot-bashrc
vendored
Normal file
18
sdk_container/src/third_party/portage-stable/app-shells/bash/files/dot-bashrc
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
# /etc/skel/.bashrc
|
||||
#
|
||||
# This file is sourced by all *interactive* bash shells on startup,
|
||||
# including some apparently interactive shells such as scp and rcp
|
||||
# that can't tolerate any output. So make sure this doesn't display
|
||||
# anything or bad things will happen !
|
||||
|
||||
|
||||
# Test for an interactive shell. There is no need to set anything
|
||||
# past this point for scp and rcp, and it's important to refrain from
|
||||
# outputting anything in those cases.
|
||||
if [[ $- != *i* ]] ; then
|
||||
# Shell is non-interactive. Be done now!
|
||||
return
|
||||
fi
|
||||
|
||||
|
||||
# Put your fun stuff here.
|
Loading…
x
Reference in New Issue
Block a user