From 0029f254957c3f8f1d929df201e0ac521ee5038b Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Thu, 20 Oct 2011 11:16:00 -0400 Subject: [PATCH] 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 Tested-by: Mike Frysinger Commit-Ready: Mike Frysinger --- .../app-shells/bash/bash-4.1_p9.ebuild | 190 ++++++++++++++++++ .../bash/files/bash-4.1-fbsd-eaccess.patch | 29 +++ .../bash/files/bash-4.1-parallel-build.patch | 23 +++ .../app-shells/bash/files/bash_logout | 9 + .../app-shells/bash/files/bashrc | 86 ++++++++ .../app-shells/bash/files/dot-bash_logout | 6 + .../app-shells/bash/files/dot-bash_profile | 5 + .../app-shells/bash/files/dot-bashrc | 18 ++ 8 files changed, 366 insertions(+) create mode 100644 sdk_container/src/third_party/portage-stable/app-shells/bash/bash-4.1_p9.ebuild create mode 100644 sdk_container/src/third_party/portage-stable/app-shells/bash/files/bash-4.1-fbsd-eaccess.patch create mode 100644 sdk_container/src/third_party/portage-stable/app-shells/bash/files/bash-4.1-parallel-build.patch create mode 100644 sdk_container/src/third_party/portage-stable/app-shells/bash/files/bash_logout create mode 100644 sdk_container/src/third_party/portage-stable/app-shells/bash/files/bashrc create mode 100644 sdk_container/src/third_party/portage-stable/app-shells/bash/files/dot-bash_logout create mode 100644 sdk_container/src/third_party/portage-stable/app-shells/bash/files/dot-bash_profile create mode 100644 sdk_container/src/third_party/portage-stable/app-shells/bash/files/dot-bashrc diff --git a/sdk_container/src/third_party/portage-stable/app-shells/bash/bash-4.1_p9.ebuild b/sdk_container/src/third_party/portage-stable/app-shells/bash/bash-4.1_p9.ebuild new file mode 100644 index 0000000000..959a77dd82 --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/app-shells/bash/bash-4.1_p9.ebuild @@ -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} + ! +--- 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 diff --git a/sdk_container/src/third_party/portage-stable/app-shells/bash/files/bash-4.1-parallel-build.patch b/sdk_container/src/third_party/portage-stable/app-shells/bash/files/bash-4.1-parallel-build.patch new file mode 100644 index 0000000000..ae44bcc0cf --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/app-shells/bash/files/bash-4.1-parallel-build.patch @@ -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 diff --git a/sdk_container/src/third_party/portage-stable/app-shells/bash/files/bash_logout b/sdk_container/src/third_party/portage-stable/app-shells/bash/files/bash_logout new file mode 100644 index 0000000000..50a79331c0 --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/app-shells/bash/files/bash_logout @@ -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 diff --git a/sdk_container/src/third_party/portage-stable/app-shells/bash/files/bashrc b/sdk_container/src/third_party/portage-stable/app-shells/bash/files/bashrc new file mode 100644 index 0000000000..a3773d648e --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/app-shells/bash/files/bashrc @@ -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}$(/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 diff --git a/sdk_container/src/third_party/portage-stable/app-shells/bash/files/dot-bash_logout b/sdk_container/src/third_party/portage-stable/app-shells/bash/files/dot-bash_logout new file mode 100644 index 0000000000..44b6f79ca8 --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/app-shells/bash/files/dot-bash_logout @@ -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 diff --git a/sdk_container/src/third_party/portage-stable/app-shells/bash/files/dot-bash_profile b/sdk_container/src/third_party/portage-stable/app-shells/bash/files/dot-bash_profile new file mode 100644 index 0000000000..94a6622b5c --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/app-shells/bash/files/dot-bash_profile @@ -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 diff --git a/sdk_container/src/third_party/portage-stable/app-shells/bash/files/dot-bashrc b/sdk_container/src/third_party/portage-stable/app-shells/bash/files/dot-bashrc new file mode 100644 index 0000000000..34dbd8c892 --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/app-shells/bash/files/dot-bashrc @@ -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.