summaryrefslogtreecommitdiff
path: root/gnu/packages
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/password-utils.scm1
-rw-r--r--gnu/packages/patches/password-store-tree-compat.patch29
2 files changed, 30 insertions, 0 deletions
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index f56868439e..de7302618e 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -484,6 +484,7 @@ any X11 window.")
(sha256
(base32
"17zp9pnb3i9sd2zn9qanngmsywrb7y495ngcqs6313pv3gb83v53"))
+ (patches (search-patches "password-store-tree-compat.patch"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(arguments
diff --git a/gnu/packages/patches/password-store-tree-compat.patch b/gnu/packages/patches/password-store-tree-compat.patch
new file mode 100644
index 0000000000..ce8de8f27c
--- /dev/null
+++ b/gnu/packages/patches/password-store-tree-compat.patch
@@ -0,0 +1,29 @@
+Tree 2.0 and later will unconditionally ignore all options and write
+JSON data on file descriptor 3 when available, which causes problems
+for the test harness and other scripts that use FD 3. Work around by
+closing descriptor 3 for the 'tree' command.
+
+Taken from upstream:
+ https://git.zx2c4.com/password-store/commit/?id=eea24967a002a2a81ae9b97a1fe972b5287f3a09
+
+diff --git a/src/password-store.sh b/src/password-store.sh
+--- a/src/password-store.sh
++++ b/src/password-store.sh
+@@ -402,7 +402,7 @@ cmd_show() {
+ else
+ echo "${path%\/}"
+ fi
+- tree -N -C -l --noreport "$PREFIX/$path" | tail -n +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g' # remove .gpg at end of line, but keep colors
++ tree -N -C -l --noreport "$PREFIX/$path" 3>&- | tail -n +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g' # remove .gpg at end of line, but keep colors
+ elif [[ -z $path ]]; then
+ die "Error: password store is empty. Try \"pass init\"."
+ else
+@@ -414,7 +414,7 @@ cmd_find() {
+ [[ $# -eq 0 ]] && die "Usage: $PROGRAM $COMMAND pass-names..."
+ IFS="," eval 'echo "Search Terms: $*"'
+ local terms="*$(printf '%s*|*' "$@")"
+- tree -N -C -l --noreport -P "${terms%|*}" --prune --matchdirs --ignore-case "$PREFIX" | tail -n +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g'
++ tree -N -C -l --noreport -P "${terms%|*}" --prune --matchdirs --ignore-case "$PREFIX" 3>&- | tail -n +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g'
+ }
+
+ cmd_grep() {