summaryrefslogtreecommitdiffstats
path: root/debian/patches
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches')
-rw-r--r--debian/patches/00-fix_quote_readline_by_ref.patch44
-rw-r--r--debian/patches/04-xine_add_more_formats.patch30
-rw-r--r--debian/patches/06-xpdf_support_compressed_pdf.patch21
-rw-r--r--debian/patches/07-dpkg_support_raw-extract_vextract.patch59
-rw-r--r--debian/patches/11-add-completions-for-openrc-rc-service.patch144
-rw-r--r--debian/patches/12-properly-handle-TERM-and-other-envvars.patch139
-rw-r--r--debian/patches/13-backport-support-for-python-9.patch62
-rw-r--r--debian/patches/14-backport-support-for-long-options-in-perltidy.patch51
-rw-r--r--debian/patches/15-find-exec.patch20
-rw-r--r--debian/patches/16-freecad-extension.patch21
-rw-r--r--debian/patches/series10
11 files changed, 601 insertions, 0 deletions
diff --git a/debian/patches/00-fix_quote_readline_by_ref.patch b/debian/patches/00-fix_quote_readline_by_ref.patch
new file mode 100644
index 0000000..b1eeb11
--- /dev/null
+++ b/debian/patches/00-fix_quote_readline_by_ref.patch
@@ -0,0 +1,44 @@
+From: JuanJo Ciarlante <jjo@canonical.com>
+Subject: fix _quote_readline_by_ref to:
+ - avoid escaping 1st '~' (lp: #1288314)
+ - avoid quoting if empty, else expansion without args only shows dirs
+ (lp: #1288031)
+ - replace double escaping to single (eg for completing file/paths with
+ spaces)
+Origin: vendor, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=739835
+Bug-Debian: https://bugs.debian.org/739835
+Forwarded: yes, <5328F418.100@canonical.com>
+
+From: G. Branden Robinson <g.branden.robinson@gmail.com>
+Subject: Revert "double escaping" hunk of patch.
+ - That portion fixed no cited bug.
+ - It broke extremely common command-substitution cases, e.g.
+ "grep pattern $(<TAB>)", producing:
+ bash: unexpected EOF while looking for matching `)'
+ bash: syntax error: unexpected end of file
+Origin: vendor, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=742466
+Bug-Debian: https://bugs.debian.org/742466
+
+---
+ bash_completion | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+--- a/bash_completion
++++ b/bash_completion
+@@ -526,9 +526,15 @@
+ # @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
diff --git a/debian/patches/04-xine_add_more_formats.patch b/debian/patches/04-xine_add_more_formats.patch
new file mode 100644
index 0000000..ccd408c
--- /dev/null
+++ b/debian/patches/04-xine_add_more_formats.patch
@@ -0,0 +1,30 @@
+From: j^ (j) <https://bugs.launchpad.net/ubuntu/+source/bash-completion/+bug/311525/comments/2>
+Subject: Add oga and ogx formats
+Origin: vendor
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/bash-completion/+bug/311525
+Bug-Debian: https://bugs.debian.org/496162
+
+---
+ bash_completion | 8 ++++----
+ completions/mplayer | 2 +-
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+--- bash-completion.orig/bash_completion
++++ bash-completion/bash_completion
+@@ -1967,13 +1967,13 @@ _install_xspec '!*.@(?(e)ps|pdf)' ps2pdf ps2pdf12 ps2pdf13 ps2pdf14 ps2pdfwr
+ _install_xspec '!*.texi*' makeinfo texi2html
+ _install_xspec '!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)' tex latex slitex jadetex pdfjadetex pdftex pdflatex texi2dvi xetex xelatex luatex lualatex
+ _install_xspec '!*.mp3' mpg123 mpg321 madplay
+-_install_xspec '!*@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmv]|OG[AGMV]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM)|+([0-9]).@(vdr|VDR))?(.@(crdownload|part))' xine aaxine fbxine
+-_install_xspec '!*@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmv]|OG[AGMV]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM|iso|ISO)|+([0-9]).@(vdr|VDR))?(.@(crdownload|part))' kaffeine dragon totem
++_install_xspec '!*@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmvx]|OG[AGMVX]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM)|+([0-9]).@(vdr|VDR))?(.@(crdownload|part))' xine aaxine fbxine
++_install_xspec '!*@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmvx]|OG[AGMVX]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM|iso|ISO)|+([0-9]).@(vdr|VDR))?(.@(crdownload|part))' kaffeine dragon totem
+ _install_xspec '!*.@(avi|asf|wmv)' aviplay
+ _install_xspec '!*.@(rm?(j)|ra?(m)|smi?(l))' realplay
+ _install_xspec '!*.@(mpg|mpeg|avi|mov|qt)' xanim
+ _install_xspec '!*.@(og[ag]|m3u|flac|spx)' ogg123
+-_install_xspec '!*.@(mp3|ogg|pls|m3u)' gqmpeg freeamp
++_install_xspec '!*.@(mp3|og[ag]|pls|m3u)' gqmpeg freeamp
+ _install_xspec '!*.fig' xfig
+ _install_xspec '!*.@(mid?(i)|cmf)' playmidi
+ _install_xspec '!*.@(mid?(i)|rmi|rcp|[gr]36|g18|mod|xm|it|x3m|s[3t]m|kar)' timidity
diff --git a/debian/patches/06-xpdf_support_compressed_pdf.patch b/debian/patches/06-xpdf_support_compressed_pdf.patch
new file mode 100644
index 0000000..de050f4
--- /dev/null
+++ b/debian/patches/06-xpdf_support_compressed_pdf.patch
@@ -0,0 +1,21 @@
+From: Alfredo Finelli <0x4146@gmail.com>
+Subject: xpdf in Debian also supports compressed PDFs
+Origin: vendor, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=702498
+Bug-Debian: https://bugs.debian.org/702498
+
+---
+ bash_completion | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- bash-completion.orig/bash_completion
++++ bash-completion/bash_completion
+@@ -1958,7 +1958,8 @@ _install_xspec '!*.@(gif|jp?(e)g?(2)|j2[ck]|jp[2f]|tif?(f)|png|p[bgp]m|bmp|x[bp]
+ _install_xspec '!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))' gv ggv kghostview
+ _install_xspec '!*.@(dvi|DVI)?(.@(gz|Z|bz2))' xdvi kdvi
+ _install_xspec '!*.dvi' dvips dviselect dvitype dvipdf advi dvipdfm dvipdfmx
+-_install_xspec '!*.[pf]df' acroread gpdf xpdf
++_install_xspec '!*.[pf]df' acroread gpdf
++_install_xspec '!*.@(pdf|fdf)?(.@(gz|GZ|bz2|BZ2|Z))' xpdf
+ _install_xspec '!*.@(?(e)ps|pdf)' kpdf
+ _install_xspec '!*.@(okular|@(?(e|x)ps|?(E|X)PS|[pf]df|[PF]DF|dvi|DVI|cb[rz]|CB[RZ]|djv?(u)|DJV?(U)|dvi|DVI|gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx|GIF|JP?(E)G|MIFF|TIF?(F)|PN[GM]|P[BGP]M|BMP|XPM|ICO|XWD|TGA|PCX|epub|EPUB|odt|ODT|fb?(2)|FB?(2)|mobi|MOBI|g3|G3|chm|CHM)?(.?(gz|GZ|bz2|BZ2|xz|XZ)))' okular
+ _install_xspec '!*.pdf' epdfview pdfunite
diff --git a/debian/patches/07-dpkg_support_raw-extract_vextract.patch b/debian/patches/07-dpkg_support_raw-extract_vextract.patch
new file mode 100644
index 0000000..9c619bb
--- /dev/null
+++ b/debian/patches/07-dpkg_support_raw-extract_vextract.patch
@@ -0,0 +1,59 @@
+From: Uwe Storbeck <uwe@ibr.ch>
+Subject: support more options for dpkg-deb
+Origin: vendor, https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=698977
+Bug-Debian: https://bugs.debian.org/698977
+Forwarded: no
+
+---
+ completions/dpkg | 44 +++++++++++++++++++++++++++++++++++++++++---
+ 1 file changed, 41 insertions(+), 3 deletions(-)
+
+--- bash-completion.orig/completions/dpkg
++++ bash-completion/completions/dpkg
+@@ -81,7 +81,45 @@ _dpkg()
+ COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur"))
+ [[ ${COMPREPLY-} == *= ]] && compopt -o nospace
+ } &&
+- complete -F _dpkg dpkg dpkg-deb dpkg-query
++ complete -F _dpkg dpkg dpkg-query
++
++# Debian dpkg-deb(1) completion
++#
++_dpkg_deb()
++{
++ local cur prev words cword split
++ _init_completion -s || return
++
++ _expand || return 0
++
++ local i=$cword
++
++ # find the last option flag
++ if [[ $cur != -* ]]; then
++ while [[ $prev != -* && $i -ne 1 ]]; do
++ i=$((i-1))
++ prev=${words[i-1]}
++ done
++ fi
++
++ case $prev in
++ -c|-I|-W|-f|-e|-x|-X|-R|--contents|--info|--show|--field|--control| \
++ --extract|--vextract|--raw-extract|--fsys-tarfile)
++ _filedir '?(u|d)deb'
++ return 0
++ ;;
++ -b|--build)
++ _filedir -d
++ return 0
++ ;;
++ esac
++
++ $split && return
++
++ COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) )
++ [[ $COMPREPLY == *= ]] && compopt -o nospace
++} &&
++complete -F _dpkg_deb dpkg-deb
+
+ # Debian GNU dpkg-reconfigure(8) completion
+ #
diff --git a/debian/patches/11-add-completions-for-openrc-rc-service.patch b/debian/patches/11-add-completions-for-openrc-rc-service.patch
new file mode 100644
index 0000000..9452540
--- /dev/null
+++ b/debian/patches/11-add-completions-for-openrc-rc-service.patch
@@ -0,0 +1,144 @@
+From: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
+Subject: Add completions for OpenRC rc-service
+Origin: vendor, https://bugs.debian.org/865548
+Bug-Debian: https://bugs.debian.org/865548
+Forwarded: yes, https://github.com/scop/bash-completion/pull/254
+
+This patch adds completions for the rc-service command from OpenRC, as
+suggested and provided by Mathieu Roy via a Debian bug [1], fixed and
+extended for more options by myself.
+
+When ran on a chroot with a freshly bootstrapped Debian system, the
+following completions produce the following output.
+
+For the options:
+
+ # rc-service [TAB][TAB]
+ -c -h --ifstopped -q savecache
+ -C --help kmod --quiet udev
+ cron -i -l -r -v
+ -d -I --list rc -V
+ -D --ifcrashed -N rcS --verbose
+ --debug --ifexists networking --resolve --version
+ --dry-run --ifinactive --nocolor rsyslog -Z
+ -e --ifnotstarted --nodeps -s
+ --exists --ifstarted procps -S
+ # rc-service [CURSOR]
+
+ # rc-service -h[TAB]
+ # rc-service -h [CURSOR]
+
+ # rc-service --v[TAB]
+ # rc-service --ver[CURSOR]
+
+ # rc-service --ver[TAB][TAB]
+ --verbose --version
+ # rc-service --ver[CURSOR]
+
+ # rc-service --verbose --l[TAB]
+ # rc-service --verbose --list [CURSOR]
+
+For the services:
+
+ # rc-service --list[ENTER]
+ cron
+ hwclock.sh
+ kmod
+ networking
+ procps
+ rc
+ rcS
+ rsyslog
+ savecache
+ udev
+
+ # rc-service r[TAB][TAB]
+ rc rcS rsyslog
+ # rc-service r[CURSOR]
+
+ # rc-service --dry-run cr[TAB]
+ # rc-service --dry-run cron [CURSOR]
+
+ # rc-service --dry-run cron [TAB][TAB]
+ force-reload reload restart start status stop
+ # rc-service --dry-run cron [CURSOR]
+
+ # rc-service --dry-run cron re[TAB][TAB]
+ reload restart
+ # rc-service --dry-run cron re[CURSOR]
+
+ # rc-service --dry-run cron res[TAB]
+ # rc-service --dry-run cron restart [CURSOR]
+
+Adding `set show-all-if-ambiguous on' to .inputrc yields the same
+results, but without the need for the additional [TAB] as displayed
+above.
+
+[1] https://bugs.debian.org/865548
+---
+ completions/rc-service | 56 ++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 56 insertions(+)
+ create mode 100644 completions/rc-service
+
+diff --git a/completions/rc-service b/completions/rc-service
+new file mode 100644
+index 00000000..f90c86ae
+--- /dev/null
++++ b/completions/rc-service
+@@ -0,0 +1,56 @@
++# rc-service(8) completion -*- shell-script -*-
++#
++# Adapted from update-rc.d
++#
++# Copyright (C) 2004 Servilio Afre Puentes <servilio@gmail.com>
++# 2018 Mathieu Roy <yeupou@gnu.org>
++# 2018 Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
++
++_rc_service()
++{
++ local cur prev words cword
++ _init_completion || return
++
++ local sysvdir services options valid_options
++
++ sysvdir=/etc/init.d
++
++ services=( $( printf '%s ' $sysvdir/!(README*|*.sh|$_backup_glob) ) )
++ services=( ${services[@]#$sysvdir/} )
++ options=( -d --debug \
++ -D --nodeps \
++ -e --exists \
++ -c --ifcrashed \
++ -i --ifexists \
++ -I --ifinactive \
++ -N --ifnotstarted \
++ -s --ifstarted \
++ -S --ifstopped \
++ -l --list \
++ -r --resolve \
++ -Z --dry-run \
++ -h --help \
++ -C --nocolor \
++ -V --version \
++ -v --verbose \
++ -q --quiet \
++ )
++
++
++ if [[ ($cword -eq 1) || ("$prev" == -* ) ]]; then
++ COMPREPLY=( $( compgen -W '${options[@]} ${services[@]}' \
++ -- "$cur" ) )
++ elif [[ -x $sysvdir/$prev ]]; then
++ COMPREPLY=( $( compgen -W '`sed -e "y/|/ /" \
++ -ne "s/^.*Usage:[ ]*[^ ]*[ ]*{*\([^}\"]*\).*$/\1/p" \
++ $sysvdir/$prev`' \
++ -- "$cur" ) )
++ else
++ COMPREPLY=()
++ fi
++
++ return 0
++} &&
++complete -F _rc_service rc-service
++
++# ex: filetype=sh
diff --git a/debian/patches/12-properly-handle-TERM-and-other-envvars.patch b/debian/patches/12-properly-handle-TERM-and-other-envvars.patch
new file mode 100644
index 0000000..5194b81
--- /dev/null
+++ b/debian/patches/12-properly-handle-TERM-and-other-envvars.patch
@@ -0,0 +1,139 @@
+From 79a504a44cefa119f1ef8c0db28e7fa674aeaf32 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ville=20Skytt=C3=A4?= <ville.skytta@iki.fi>
+Date: Mon, 7 Dec 2020 01:12:10 +0200
+Subject: [PATCH] _variables: split out _variable_assignments, use in export
+
+Closes https://github.com/scop/bash-completion/issues/457
+---
+ bash_completion | 77 +++++++++++++++++++++++++++++----------------
+ completions/export | 5 +--
+ test/t/test_grep.py | 10 ++++++
+ 3 files changed, 61 insertions(+), 31 deletions(-)
+
+diff --git a/bash_completion b/bash_completion
+index 2114ea05086..1a097417d72 100644
+--- a/bash_completion
++++ b/bash_completion
+@@ -679,37 +679,60 @@ _variables()
+ COMPREPLY+=("$cur}")
+ __ltrim_colon_completions "$cur"
+ return 0
+- else
+- case ${prev-} in
+- TZ)
+- cur=/usr/share/zoneinfo/$cur
+- _filedir
+- for i in "${!COMPREPLY[@]}"; do
+- if [[ ${COMPREPLY[i]} == *.tab ]]; then
+- unset 'COMPREPLY[i]'
+- continue
+- elif [[ -d ${COMPREPLY[i]} ]]; then
+- COMPREPLY[i]+=/
+- compopt -o nospace
+- fi
+- COMPREPLY[i]=${COMPREPLY[i]#/usr/share/zoneinfo/}
+- done
+- return 0
+- ;;
+- TERM)
+- _terms
+- return 0
+- ;;
+- LANG | LC_*)
+- COMPREPLY=($(compgen -W '$(locale -a 2>/dev/null)' \
+- -- "$cur"))
+- return 0
+- ;;
+- esac
+ fi
+ return 1
+ }
+
++# Complete assignment of various known environment variables.
++# The word to be completed is expected to contain the entire
++# assignment, including the variable name and the "=". See related
++# parameters to _init_completion.
++#
++# @param $1 variable assignment to be completed
++# @return True (0) if variable value completion was attempted,
++# False (> 0) if not.
++_variable_assignments()
++{
++ local cur=${1-}
++
++ if [[ $cur =~ ^([A-Za-z_][A-Za-z0-9_]*)=(.*)$ ]]; then
++ prev=${BASH_REMATCH[1]}
++ cur=${BASH_REMATCH[2]}
++ else
++ return 1
++ fi
++
++ case $prev in
++ TZ)
++ cur=/usr/share/zoneinfo/$cur
++ _filedir
++ for i in "${!COMPREPLY[@]}"; do
++ if [[ ${COMPREPLY[i]} == *.tab ]]; then
++ unset 'COMPREPLY[i]'
++ continue
++ elif [[ -d ${COMPREPLY[i]} ]]; then
++ COMPREPLY[i]+=/
++ compopt -o nospace
++ fi
++ COMPREPLY[i]=${COMPREPLY[i]#/usr/share/zoneinfo/}
++ done
++ ;;
++ TERM)
++ _terms
++ ;;
++ LANG | LC_*)
++ COMPREPLY=($(compgen -W '$(locale -a 2>/dev/null)' \
++ -- "$cur"))
++ ;;
++ *)
++ _variables && return 0
++ _filedir
++ ;;
++ esac
++
++ return 0
++}
++
+ # Initialize completion and deal with various general things: do file
+ # and variable completion where appropriate, and adjust prev, words,
+ # and cword as if no redirections exist so that completions do not
+diff --git a/completions/export b/completions/export
+index 8d823614aaf..9cf94277678 100644
+--- a/completions/export
++++ b/completions/export
+@@ -25,10 +25,7 @@ _export()
+ done
+
+ if [[ $cur == *=* ]]; then
+- local ocur=$cur oprev=$prev
+- prev=${cur%%=*} cur=${cur#*=}
+- _variables && return
+- cur=$ocur prev=$oprev
++ _variable_assignments $cur && return
+ fi
+
+ case $cur in
+diff --git a/test/t/test_grep.py b/test/t/test_grep.py
+index a249122eb12..10956b1f5e9 100644
+--- a/test/t/test_grep.py
++++ b/test/t/test_grep.py
+@@ -14,3 +14,13 @@ def test_2(self, completion):
+ Not really a grep option, but tests _longopt.
+ """
+ assert completion == "foo foo.d/".split()
++
++ @pytest.mark.complete("grep TZ ", cwd="shared/default")
++ def test_no_variable_assignment_confusion(self, completion):
++ """
++ Test TZ doesn't trigger known variable value assignment completion.
++
++ Not really a grep specific, but good to test somewhere.
++ Refs https://github.com/scop/bash-completion/issues/457
++ """
++ assert "foo" in completion
+
diff --git a/debian/patches/13-backport-support-for-python-9.patch b/debian/patches/13-backport-support-for-python-9.patch
new file mode 100644
index 0000000..de75f45
--- /dev/null
+++ b/debian/patches/13-backport-support-for-python-9.patch
@@ -0,0 +1,62 @@
+commit dc1c404b3c14cd3e3627a6720cf32a4e27079285
+Author: Ville Skyttä <ville.skytta@iki.fi>
+Date: Sun Sep 6 22:57:28 2020 +0300
+
+ python, pyvenv: install for 3.9
+
+diff --git a/completions/Makefile.am b/completions/Makefile.am
+index e43d0e3c..ba75fa48 100644
+--- a/completions/Makefile.am
++++ b/completions/Makefile.am
+@@ -677,11 +677,13 @@ CLEANFILES = \
+ python3.6 \
+ python3.7 \
+ python3.8 \
++ python3.9 \
+ pyvenv-3.4 \
+ pyvenv-3.5 \
+ pyvenv-3.6 \
+ pyvenv-3.7 \
+ pyvenv-3.8 \
++ pyvenv-3.9 \
+ qemu-kvm \
+ qemu-system-i386 \
+ qemu-system-x86_64 \
+@@ -894,9 +896,11 @@ symlinks: $(DATA)
+ $(ss) pylint \
+ pylint-2 pylint-3
+ $(ss) python \
+- micropython pypy pypy3 python2 python2.7 python3 python3.3 python3.4 python3.5 python3.6 python3.7 python3.8
++ micropython pypy pypy3 python2 python2.7 python3 python3.3 \
++ python3.4 python3.5 python3.6 python3.7 python3.8 python3.9
+ $(ss) pyvenv \
+- pyvenv-3.4 pyvenv-3.5 pyvenv-3.6 pyvenv-3.7 pyvenv-3.8
++ pyvenv-3.4 pyvenv-3.5 pyvenv-3.6 pyvenv-3.7 pyvenv-3.8 \
++ pyvenv-3.9
+ $(ss) qdbus \
+ dcop
+ $(ss) qemu \
+diff --git a/completions/python b/completions/python
+index d50c18f0..d7e18b90 100644
+--- a/completions/python
++++ b/completions/python
+@@ -62,6 +62,6 @@ _python()
+ COMPREPLY=($(compgen -W '$(_parse_help "$1" -h)' -- "$cur"))
+ fi
+ } &&
+- complete -F _python python python2 python2.7 python3 python3.{3..8} pypy pypy3 micropython
++ complete -F _python python python2 python2.7 python3 python3.{3..9} pypy pypy3 micropython
+
+ # ex: filetype=sh
+diff --git a/completions/pyvenv b/completions/pyvenv
+index 527a3840..3a1ecb37 100644
+--- a/completions/pyvenv
++++ b/completions/pyvenv
+@@ -20,6 +20,6 @@ _pyvenv()
+
+ _filedir -d
+ } &&
+- complete -F _pyvenv pyvenv pyvenv-3.{4..8}
++ complete -F _pyvenv pyvenv pyvenv-3.{4..9}
+
+ # ex: filetype=sh
diff --git a/debian/patches/14-backport-support-for-long-options-in-perltidy.patch b/debian/patches/14-backport-support-for-long-options-in-perltidy.patch
new file mode 100644
index 0000000..02a56c0
--- /dev/null
+++ b/debian/patches/14-backport-support-for-long-options-in-perltidy.patch
@@ -0,0 +1,51 @@
+commit a283b6963421adb3acf087c9816614a9c0c4c214
+Author: Ville Skyttä <ville.skytta@iki.fi>
+Date: Tue Apr 13 17:02:12 2021 +0300
+
+ feat(perltidy): support long variants of arg completed options
+
+diff --git a/completions/perltidy b/completions/perltidy
+index 4404cf8..a6ee36b 100644
+--- a/completions/perltidy
++++ b/completions/perltidy
+@@ -16,25 +16,34 @@ _perltidy()
+ esac
+
+ case $cur in
+- -pro=*)
++ -pro=* | --profile=*)
+ cur="${cur#*=}"
+ _filedir
+ return
+ ;;
+- -ole=*)
++ -ole=* | --output-line-ending=*)
+ COMPREPLY=($(compgen -W 'dos win mac unix' -- "${cur#*=}"))
+ return
+ ;;
+- -bt=* | -pt=* | -sbt=* | -bvt=* | -pvt=* | -sbvt=* | -bvtc=* | -pvtc=* | -sbvtc=* | \
+- -cti=* | -kbl=* | -vt=*)
++ -bt=* | --brace-tightness=* | -pt=* | --paren-tightness=* | \
++ -sbt=* | --square-bracket-tightness=* | \
++ -bvt=* | --brace-vertical-tightness=* | \
++ -pvt=* | --paren-vertical-tightness=* | \
++ -sbvt=* | --square-bracket-vertical-tightness=* | \
++ -bvtc=* | --brace-vertical-tightness-closing=* | \
++ -pvtc=* | --paren-vertical-tightness-closing=* | \
++ -sbvtc=* | --square-bracket-vertical-tightness-closing=* | \
++ -cti=* | --closing-token-indentation=* | \
++ -kbl=* | --keep-old-blank-lines=* | \
++ -vt=* | --vertical-tightness=*)
+ COMPREPLY=($(compgen -W '0 1 2' -- "${cur#*=}"))
+ return
+ ;;
+- -vtc=*)
++ -vtc=* | --vertical-tightness-closing=*)
+ COMPREPLY=($(compgen -W '0 1' -- "${cur#*=}"))
+ return
+ ;;
+- -cab=*)
++ -cab=* | --comma-arrow-breakpoints=*)
+ COMPREPLY=($(compgen -W '0 1 2 3' -- "${cur#*=}"))
+ return
+ ;;
diff --git a/debian/patches/15-find-exec.patch b/debian/patches/15-find-exec.patch
new file mode 100644
index 0000000..fcb963e
--- /dev/null
+++ b/debian/patches/15-find-exec.patch
@@ -0,0 +1,20 @@
+commit f1ddf810e4ee6693acb9fab1be1794586aa111a0
+Author: Ville Skyttä <ville.skytta@iki.fi>
+Date: Sat Mar 20 10:41:04 2021 +0200
+
+ fix(find): don't look for -exec etc command if completing before it
+
+ Closes https://github.com/scop/bash-completion/issues/509
+
+diff --git a/completions/find b/completions/find
+index 64121eda..f18c7d7e 100644
+--- a/completions/find
++++ b/completions/find
+@@ -10,6 +10,7 @@ _find()
+ local i
+ for i in ${!words[*]}; do
+ if [[ ${words[i]} == -@(exec|ok)?(dir) ]]; then
++ ((cword > i)) || break
+ _command_offset $((i + 1))
+ return
+ fi
diff --git a/debian/patches/16-freecad-extension.patch b/debian/patches/16-freecad-extension.patch
new file mode 100644
index 0000000..317c336
--- /dev/null
+++ b/debian/patches/16-freecad-extension.patch
@@ -0,0 +1,21 @@
+commit fcaf3d4118af251973a57028302bf057a9681f1f
+Author: steelman <stlman@poczta.fm>
+Date: Thu Apr 22 21:39:19 2021 +0200
+
+ feat(unzip,zipinfo): recognize FreeCAD files (#520)
+
+ https://wiki.freecadweb.org/File_Format_FCStd
+
+diff --git a/bash_completion b/bash_completion
+index 51305148..fca32c57 100644
+--- a/bash_completion
++++ b/bash_completion
+@@ -2132,7 +2132,7 @@
+ }
+ # bzcmp, bzdiff, bz*grep, bzless, bzmore intentionally not here, see Debian: #455510
+ _install_xspec '!*.?(t)bz?(2)' bunzip2 bzcat pbunzip2 pbzcat lbunzip2 lbzcat
+-_install_xspec '!*.@(zip|[aegjswx]ar|exe|pk3|wsz|zargo|xpi|s[tx][cdiw]|sx[gm]|o[dt][tspgfc]|od[bm]|oxt|epub|apk|aab|ipa|do[ct][xm]|p[op]t[mx]|xl[st][xm]|pyz|whl)' unzip zipinfo
++_install_xspec '!*.@(zip|[aegjswx]ar|exe|pk3|wsz|zargo|xpi|s[tx][cdiw]|sx[gm]|o[dt][tspgfc]|od[bm]|oxt|epub|apk|aab|ipa|do[ct][xm]|p[op]t[mx]|xl[st][xm]|pyz|whl|[Ff][Cc][Ss]td)' unzip zipinfo
+ _install_xspec '*.Z' compress znew
+ # zcmp, zdiff, z*grep, zless, zmore intentionally not here, see Debian: #455510
+ _install_xspec '!*.@(Z|[gGd]z|t[ag]z)' gunzip zcat
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..e58441b
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,10 @@
+00-fix_quote_readline_by_ref.patch
+04-xine_add_more_formats.patch
+06-xpdf_support_compressed_pdf.patch
+07-dpkg_support_raw-extract_vextract.patch
+11-add-completions-for-openrc-rc-service.patch
+12-properly-handle-TERM-and-other-envvars.patch
+13-backport-support-for-python-9.patch
+14-backport-support-for-long-options-in-perltidy.patch
+15-find-exec.patch
+16-freecad-extension.patch