forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
app-shells/bash-completion: Add patch to fix completion with escape c…
…haracters. Fixes bug 543100. Package-Manager: portage-2.2.26 Signed-off-by: Patrice Clement <[email protected]>
- Loading branch information
Showing
2 changed files
with
127 additions
and
0 deletions.
There are no files selected for viewing
100 changes: 100 additions & 0 deletions
100
app-shells/bash-completion/bash-completion-2.1-r94.ebuild
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
# Copyright 1999-2016 Gentoo Foundation | ||
# Distributed under the terms of the GNU General Public License v2 | ||
# $Id$ | ||
|
||
EAPI=5 | ||
|
||
inherit versionator | ||
|
||
DESCRIPTION="Programmable Completion for bash" | ||
HOMEPAGE="http://bash-completion.alioth.debian.org/" | ||
SRC_URI="http://bash-completion.alioth.debian.org/files/${P}.tar.bz2 | ||
https://dev.gentoo.org/~mgorny/dist/bashcomp2-pre1.tar.gz" | ||
|
||
LICENSE="GPL-2" | ||
SLOT="0" | ||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~x86-interix ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris" | ||
IUSE="" | ||
|
||
RDEPEND=">=app-shells/bash-4.3_p30-r1 | ||
sys-apps/miscfiles | ||
!app-eselect/eselect-bashcomp" | ||
PDEPEND=">=app-shells/gentoo-bashcomp-20140911" | ||
|
||
# Bug 543100 | ||
PATCHES=( | ||
"${FILESDIR}"/${P}-escape-characters.patch | ||
) | ||
|
||
# Remove unwanted completions. | ||
STRIP_COMPLETIONS=( | ||
# Included in util-linux, bug #468544 | ||
cal dmesg eject hd hexdump hwclock ionice look ncal renice rtcwake | ||
|
||
# Slackware package stuff, quite generic names cause collisions | ||
# (e.g. with sys-apps/pacman) | ||
explodepkg installpkg makepkg pkgtool removepkg upgradepkg | ||
|
||
# Debian/Red Hat network stuff | ||
ifdown ifup ifstatus | ||
) | ||
|
||
src_prepare() { | ||
epatch "${WORKDIR}"/bashcomp2-pre1/*.patch | ||
epatch "${PATCHES[@]}" | ||
} | ||
|
||
src_test() { :; } # Skip testsuite because of interactive shell wrt #477066 | ||
|
||
src_install() { | ||
# work-around race conditions, bug #526996 | ||
mkdir -p "${ED}"/usr/share/bash-completion/{completions,helpers} || die | ||
|
||
emake DESTDIR="${D}" profiledir=/etc/bash/bashrc.d install | ||
|
||
# use the copies from >=sys-apps/util-linux-2.23 wrt #468544 -> hd and ncal | ||
# becomes dead symlinks as a result | ||
local file | ||
for file in "${STRIP_COMPLETIONS[@]}"; do | ||
rm "${ED}"/usr/share/bash-completion/completions/${file} || die | ||
done | ||
|
||
# use the copy from app-editors/vim-core: | ||
rm "${ED}"/usr/share/bash-completion/completions/xxd || die | ||
|
||
# use the copy from net-misc/networkmanager: | ||
rm "${ED}"/usr/share/bash-completion/completions/nmcli || die | ||
|
||
dodoc AUTHORS CHANGES README | ||
|
||
# install the eselect module | ||
insinto /usr/share/eselect/modules | ||
doins "${WORKDIR}"/bashcomp2-pre1/bashcomp.eselect | ||
doman "${WORKDIR}"/bashcomp2-pre1/bashcomp.eselect.5 | ||
} | ||
|
||
pkg_postinst() { | ||
local v | ||
for v in ${REPLACING_VERSIONS}; do | ||
if ! version_is_at_least 2.1-r90 ${v}; then | ||
ewarn "For bash-completion autoloader to work, all completions need to" | ||
ewarn "be installed in /usr/share/bash-completion/completions. You may" | ||
ewarn "need to rebuild packages that installed completions in the old" | ||
ewarn "location. You can do this using:" | ||
ewarn | ||
ewarn "$ find ${EPREFIX}/usr/share/bash-completion -maxdepth 1 -type f '!' -name 'bash_completion' -exec emerge -1v {} +" | ||
ewarn | ||
ewarn "After the rebuild, you should remove the old setup symlinks:" | ||
ewarn | ||
ewarn "$ find ${EPREFIX}/etc/bash_completion.d -type l -delete" | ||
fi | ||
done | ||
|
||
if has_version 'app-shells/zsh'; then | ||
elog | ||
elog "If you are interested in using the provided bash completion functions with" | ||
elog "zsh, valuable tips on the effective use of bashcompinit are available:" | ||
elog " http://www.zsh.org/mla/workers/2003/msg00046.html" | ||
elog | ||
fi | ||
} |
27 changes: 27 additions & 0 deletions
27
app-shells/bash-completion/files/bash-completion-2.1-escape-characters.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
--- bash-completion-2.1/bash_completion.orig 2014-03-09 17:38:14 +0000 | ||
+++ bash-completion-2.1/bash_completion 2014-03-13 23:26:44 +0000 | ||
@@ -536,13 +536,23 @@ | ||
# @param $2 Name of variable to return result to | ||
_quote_readline_by_ref() | ||
{ | ||
- if [[ $1 == \'* ]]; then | ||
+ if [ -z "$1" ]; then | ||
+ # avoid quoting if empty | ||
+ printf -v $2 %s "$1" | ||
+ elif [[ $1 == \'* ]]; then | ||
# Leave out first character | ||
printf -v $2 %s "${1:1}" | ||
+ elif [[ $1 == ~* ]]; then | ||
+ # avoid escaping first ~ | ||
+ printf -v $2 ~%q "${1:1}" | ||
else | ||
printf -v $2 %q "$1" | ||
fi | ||
|
||
+ # Replace double escaping ( \\ ) by single ( \ ) | ||
+ # This happens always when argument is already escaped at cmdline, | ||
+ # and passed to this function as e.g.: file\ with\ spaces | ||
+ [[ ${!2} == *\\* ]] && printf -v $2 %s "${1//\\\\/\\}" | ||
# If result becomes quoted like this: $'string', re-evaluate in order to | ||
# drop the additional quoting. See also: http://www.mail-archive.com/ | ||
# [email protected]/msg01942.html |