sys-apps/less: Sync with Gentoo

It's from Gentoo commit 3b76030b38cd62f190cfda1203192af26ce7fb4f.
This commit is contained in:
Flatcar Buildbot 2024-07-01 07:18:14 +00:00 committed by Mathieu Tortuyaux
parent daa1c9d693
commit 7fa25b72f9
No known key found for this signature in database
GPG Key ID: AC5CCFB52545D9B8
5 changed files with 443 additions and 4 deletions

View File

@ -1,2 +1,3 @@
DIST less-633.tar.gz 375733 BLAKE2B e9df180794af365f86734c6b8fde766c1bba42b111717ee5e1cf11001fc7ec3d78910db9bb7c51a76816086f599808b1b60f514011ec40e37650d6bc4f8b3d5c SHA512 a29aaf72abca07fb29d12f218bbd422a39e3898b3d53e8dbd5265ae47ecf68b88c3381aa3a9bf7caa8db1e2d8e2c138b333f0d69fddd4cf014e39118c53f7fb1
DIST less-643.tar.gz 592291 BLAKE2B 6dc60dc2e8db05afdae466877a1d26a3008ff5378bbbf2fbdf9efc4f87c0fcfde5703d44a24d4355c98d3a5f438bdb51173150f2a69f801d9c8e4a7401d71b53 SHA512 6a324ac54e22429ac652dc303bc1fe48933555d1cbf8ad7ecf345940910c014fef9551a3219743cfb7115e356b5841ae97d6ce62e7a1ba1e3300d243efca34d9
DIST less-661.tar.gz 648198 BLAKE2B c1fa9a7a646fcc1203945e00c35fe41bddef0c564e30f120a37e417ecd5c60d234e0253a2e18123508dd5c0313bce346dc7752e96cdc1b067bd07a2a39818b42 SHA512 49d81ff9e79d43ce0271490e3bffd590b4aed5fcb387bc8eb3128de99e5b5a5ede2e2818b546f6e3a140fa6261f1de3dfba1231f7ff7ef18502bb7030eaea1b5

View File

@ -0,0 +1,342 @@
#!/bin/bash
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# Preprocessor for 'less'. Used when this environment variable is set:
# LESSOPEN="|lesspipe %s"
# TODO: handle compressed files better
[[ -n ${LESSDEBUG+set} ]] && set -x
trap 'exit 0' PIPE
guesscompress() {
case "$1" in
*.gz|*.z) echo "gunzip -c" ;;
*.bz2|*.bz) echo "bunzip2 -c" ;;
*.lz) echo "lzip -dc" ;;
*.lzma) echo "unlzma -c" ;;
*.lzo) echo "lzop -dc" ;;
*.xz) echo "xzdec" ;;
*.zst) echo "zstdcat" ;;
*) echo "cat" ;;
esac
}
crl_filter() {
if command -v certtool &>/dev/null; then
certtool --crl-info --text --infile "$1"
else
openssl crl -hash -text -noout -in "$1"
fi
}
csr_filter() {
if command -v certtool &>/dev/null; then
certtool --crq-info --text --infile "$1"
else
openssl req -text -noout -in "$1"
fi
}
crt_filter() {
if command -v certtool &>/dev/null; then
certtool --certificate-info --text --infile "$1"
else
openssl x509 -hash -text -noout -in "$1"
fi
}
jks_filter() {
if command -v keytool &>/dev/null; then
keytool -list -keystore "$1"
else
cat "$1"
fi
}
p12_filter() {
openssl pkcs12 -nokeys -info -in "$1"
}
lesspipe_file() {
local out=$(file -L -- "$1")
local suffix
case ${out} in
*" 7-zip archive"*) suffix="7z";;
*" ar archive"*) suffix="a";;
*" CAB-Installer"*) suffix="cab";;
*" cpio archive"*) suffix="cpio";;
*" ELF "*) suffix="elf";;
*" LHa"*archive*) suffix="lha";;
*" troff "*) suffix="man";;
*" script text"*) suffix="sh";;
*" shared object"*) suffix="so";;
*" tar archive"*) suffix="tar";;
*" Zip archive"*) suffix="zip";;
*": data") hexdump -C -- "$1"; return 0;;
*) return 1;;
esac
lesspipe "$1" ".${suffix}"
return 0
}
lesspipe() {
local match=$2
[[ -z ${match} ]] && match=$1
local DECOMPRESSOR=$(guesscompress "${match}")
# User filters
if [[ -x ~/.lessfilter ]] ; then
~/.lessfilter "$1" && exit 0
fi
# System filters
shopt -s nullglob
local f
for f in "${XDG_CONFIG_HOME:-~/.config}"/lessfilter.d/* /etc/lessfilter.d/* /usr/lib/lessfilter.d/*; do
if [[ -x ${f} ]]; then
"${f}" "$1" && exit 0
fi
done
shopt -u nullglob
local ignore
for ignore in ${LESSIGNORE} ; do
[[ ${match} == *.${ignore} ]] && exit 0
done
# Handle non-regular file types.
if [[ -d $1 ]] ; then
ls -alF -- "$1"
return
elif [[ ! -f $1 ]] ; then
# Only return if the stat passes. This is needed to handle pseudo
# arguments like URIs.
stat -- "$1" && return
fi
case "${match}" in
### Doc files ###
*.[0-9n]|*.man|\
*.[0-9n].bz2|*.man.bz2|\
*.[0-9n].gz|*.man.gz|\
*.[0-9n].lzma|*.man.lzma|\
*.[0-9n].xz|*.man.xz|\
*.[0-9n].zst|*.man.zst|\
*.[0-9][a-z].gz|*.[0-9][a-z].gz)
local out=$(${DECOMPRESSOR} -- "$1" | file -)
case ${out} in
*troff*)
# Need to make sure we pass path to man or it will try
# to locate "$1" in the man search paths
if [[ $1 == /* ]] ; then
man -- "$1"
else
man -- "./$1"
fi
;;
*text*)
${DECOMPRESSOR} -- "$1"
;;
*)
# We could have matched a library (libc.so.6), so let
# `file` figure out what the hell this thing is
lesspipe_file "$1"
;;
esac
;;
*.dvi) dvi2tty "$1" ;;
*.ps) ps2ascii "$1" || pstotext "$1" ;;
*.pdf) pdftotext "$1" - || ps2ascii "$1" || pstotext "$1" ;;
*.doc) antiword "$1" || catdoc "$1" ;;
*.rtf) unrtf --nopict --text "$1" ;;
*.conf|*.txt|*.log) ;; # force less to work on these directly #150256
*.json) python -mjson.tool "$1" ;;
### URLs ###
ftp://*|http://*|https://|*.htm|*.html)
for b in elinks links2 links lynx ; do
${b} -dump "$1" && exit 0
done
html2text -style pretty "$1"
;;
### Tar files ###
*.tar|\
*.tar.bz2|*.tar.bz|*.tar.gz|*.tar.z|*.tar.zst|\
*.tar.lz|*.tar.tlz|\
*.tar.lzma|*.tar.xz)
${DECOMPRESSOR} -- "$1" | tar tvvf -;;
*.tbz2|*.tbz|*.tgz|*.tlz|*.txz)
lesspipe "$1" "$1.tar.${1##*.t}" ;;
### Misc archives ###
*.bz2|\
*.gz|*.z|\
*.zst|\
*.lz|\
*.lzma|*.xz) ${DECOMPRESSOR} -- "$1" ;;
*.rpm) rpm -qpivl --changelog -- "$1" || rpm2tar -O "$1" | tar tvvf -;;
*.cpi|*.cpio) cpio -itv < "$1" ;;
*.ace) unace l "$1" ;;
*.arc) arc v "$1" ;;
*.arj) arj l -- "$1" || unarj l "$1" ;;
*.cab) cabextract -l -- "$1" ;;
*.lha|*.lzh) lha v "$1" ;;
*.zoo) zoo -list "$1" || unzoo -l "$1" ;;
*.7z|*.exe) 7z l -- "$1" || 7za l -- "$1" || 7zr l -- "$1" ;;
*.a) ar tv "$1" ;;
*.elf) readelf -a -W -- "$1" ;;
*.so) readelf -h -d -s -W -- "$1" ;;
*.mo|*.gmo) msgunfmt -- "$1" ;;
*.rar|.r[0-9][0-9]) unrar l -- "$1" ;;
*.jar|*.war|*.ear|*.xpi|*.zip)
unzip -v "$1" || miniunzip -l "$1" || miniunz -l "$1" || zipinfo -v "$1"
;;
*.deb|*.udeb)
if type -P dpkg > /dev/null ; then
dpkg --info "$1"
dpkg --contents "$1"
else
ar tv "$1"
ar p "$1" data.tar.gz | tar tzvvf -
fi
;;
### Filesystems ###
*.squashfs) unsquashfs -s "$1" && unsquashfs -ll "$1" ;;
### Media ###
*.bmp|*.gif|*.jpeg|*.jpg|*.ico|*.pcd|*.pcx|*.png|*.ppm|*.tga|*.tiff|*.tif|*.webp)
identify -verbose -- "$1" || file -L -- "$1"
;;
*.asf|*.avi|*.flv|*.mkv|*.mov|*.mp4|*.mpeg|*.mpg|*.qt|*.ram|*.rm|*.webm|*.wmv)
midentify "$1" || file -L -- "$1"
;;
*.mp3) mp3info "$1" || id3info "$1" ;;
*.ogg) ogginfo "$1" ;;
*.flac) metaflac --list "$1" ;;
*.torrent) torrentinfo "$1" || torrentinfo-console "$1" || ctorrent -x "$1" ;;
*.bin|*.cue|*.raw)
# not all .bin/.raw files are cd images #285507
# fall back to lesspipe_file if .cue doesn't exist, or if
# cd-info failed to parse things sanely
[[ -e ${1%.*}.cue ]] \
&& cd-info --no-header --no-device-info "$1" \
|| lesspipe_file "$1"
;;
*.iso)
iso_info=$(isoinfo -d -i "$1")
echo "${iso_info}"
# Joliet output overrides Rock Ridge, so prefer the better Rock
case ${iso_info} in
*$'\n'"Rock Ridge"*) iso_opts="-R";;
*$'\n'"Joliet"*) iso_opts="-J";;
*) iso_opts="";;
esac
isoinfo -l ${iso_opts} -i "$1"
;;
### Encryption stuff ###
*.crl) crl_filter "$1" ;;
*.csr) csr_filter "$1" ;;
*.crt|*.pem) crt_filter "$1" ;;
*.jks) jks_filter "$1" ;;
*.p12|*.pfx) p12_filter "$1" ;;
# May not be such a good idea :)
# ### Device nodes ###
# /dev/[hs]d[a-z]*)
# fdisk -l "${1:0:8}"
# [[ $1 == *hd* ]] && hdparm -I "${1:0:8}"
# ;;
### Everything else ###
*)
case $(( recur++ )) in
# Maybe we didn't match due to case issues ...
0) lesspipe "$1" "$(echo "$1" | LC_ALL=C tr '[:upper:]' '[:lower:]')" ;;
# Maybe we didn't match because the file is named weird ...
1) lesspipe_file "$1" ;;
esac
# So no matches from above ... finally fall back to an external
# coloring package. No matching here so we don't have to worry
# about keeping in sync with random packages. Any coloring tool
# you use should not output errors about unsupported files to
# stdout. If it does, it's your problem.
# Allow people to flip color off if they dont want it
case ${LESSCOLOR} in
always) LESSCOLOR=2;;
[yY][eE][sS]|[yY]|1|true) LESSCOLOR=1;;
[nN][oO]|[nN]|0|false) LESSCOLOR=0;;
*) LESSCOLOR=1;;
esac
[[ -n ${NO_COLOR} ]] && LESSCOLOR=0
if [[ ${LESSCOLOR} != "0" ]] && [[ -n ${LESSCOLORIZER=pygmentize -O style=rrt} ]] ; then
# 2: Only colorize if user forces it ...
# 1: ... or we know less will handle raw codes -- this will
# not detect -seiRM, so set LESSCOLORIZER yourself
if [[ ${LESSCOLOR} == "2" ]] || [[ " ${LESS} " == *" -"[rR]" "* ]] ; then
LESSQUIET=true ${LESSCOLORIZER} "$1"
fi
fi
# Nothing left to do but let less deal
exit 0
;;
esac
}
if [[ $# -eq 0 ]] ; then
echo "Usage: lesspipe <file>"
elif [[ $1 == "-V" || $1 == "--version" ]] ; then
cat <<-EOF
lesspipe (git)
Copyright 1999-2024 Gentoo Authors
Mike Frysinger <vapier@gentoo.org>
(with plenty of ideas stolen from other projects/distros)
EOF
less -V
elif [[ $1 == "-h" || $1 == "--help" ]] ; then
cat <<-EOF
lesspipe: preprocess files before sending them to less
Usage: lesspipe <file>
lesspipe specific settings:
LESSCOLOR env - toggle colorizing of output (no/yes/always; default: yes)
LESSCOLORIZER env - program used to colorize output (default: pygmentize)
LESSIGNORE - list of extensions to ignore (don't do anything fancy)
You can create per-user filters as well by creating the executable file:
~/.lessfilter
One argument is passed to it: the file to display. The script should exit 0
to indicate it handled the file, or non-zero to tell lesspipe to handle it.
To use lesspipe, simply add to your environment:
export LESSOPEN="|lesspipe %s"
For colorization, install dev-python/pygments for the pygmentize program. Note,
if using alternative code2color from sys app-text/lesspipe you may run out of
memory due to #188835.
Run 'less --help' or 'man less' for more info.
EOF
else
recur=0
[[ -z ${LESSDEBUG+set} ]] && exec 2>/dev/null
lesspipe "$1"
fi

View File

@ -25,7 +25,7 @@ else
SRC_URI="https://www.greenwoodsoftware.com/less/${MY_P}.tar.gz"
if [[ ${PV} != *_beta* ]] ; then
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
fi
fi

View File

@ -0,0 +1,96 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# Releases are usually first a beta then promoted to stable if no
# issues were found. Upstream explicitly ask "to not generally distribute"
# the beta versions. It's okay to keyword beta versions if they fix
# a serious bug, but otherwise try to avoid it.
WANT_AUTOMAKE=none
WANT_LIBTOOL=none
inherit autotools flag-o-matic optfeature toolchain-funcs
DESCRIPTION="Excellent text file viewer"
HOMEPAGE="https://www.greenwoodsoftware.com/less/"
MY_PV=${PV/_beta/-beta}
MY_P=${PN}-${MY_PV}
if [[ ${PV} == 9999 ]]; then
EGIT_REPO_URI="https://github.com/gwsw/less"
inherit git-r3
else
SRC_URI="https://www.greenwoodsoftware.com/less/${MY_P}.tar.gz"
if [[ ${PV} != *_beta* ]] ; then
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
fi
fi
S="${WORKDIR}"/${MY_P/?beta}
LICENSE="|| ( GPL-3 BSD-2 )"
SLOT="0"
IUSE="pcre test"
# chinese1, utf8-2
RESTRICT="test !test? ( test )"
DEPEND="
>=app-misc/editor-wrapper-3
>=sys-libs/ncurses-5.2:=
pcre? ( dev-libs/libpcre2 )
"
RDEPEND="${DEPEND}"
BDEPEND="test? ( virtual/pkgconfig )"
PATCHES=(
"${FILESDIR}"/${PN}-643-lesstest-pkg-config.patch
)
src_prepare() {
default
# Per upstream README to prepare live build
[[ ${PV} == 9999 ]] && emake -f Makefile.aut distfiles
# Upstream uses unpatched autoconf-2.69, which breaks with clang-16.
# https://bugs.gentoo.org/870412
eautoreconf
}
src_configure() {
append-lfs-flags # bug #896316
local myeconfargs=(
--with-regex=$(usex pcre pcre2 posix)
--with-editor="${EPREFIX}"/usr/libexec/editor
)
econf "${myeconfargs[@]}"
}
src_test() {
emake check VERBOSE=1 CC="$(tc-getCC)" PKG_CONFIG="$(tc-getPKG_CONFIG)"
}
src_install() {
default
keepdir /usr/lib/lessfilter.d
keepdir /etc/lessfilter.d
newbin "${FILESDIR}"/lesspipe-r4.sh lesspipe
newenvd "${FILESDIR}"/less.envd 70less
}
pkg_preinst() {
optfeature "Colorized output support" dev-python/pygments
if has_version "<${CATEGORY}/${PN}-483-r1" ; then
elog "The lesspipe.sh symlink has been dropped. If you are still setting"
elog "LESSOPEN to that, you will need to update it to '|lesspipe %s'."
fi
if has_version "<${CATEGORY}/${PN}-643" ; then
elog "less now colorizes by default. To disable this, set LESSCOLOR=no."
fi
}

View File

@ -1,4 +1,4 @@
# Copyright 1999-2023 Gentoo Authors
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@ -78,12 +78,12 @@ src_install() {
keepdir /usr/lib/lessfilter.d
keepdir /etc/lessfilter.d
newbin "${FILESDIR}"/lesspipe-r3.sh lesspipe
newbin "${FILESDIR}"/lesspipe-r4.sh lesspipe
newenvd "${FILESDIR}"/less.envd 70less
}
pkg_preinst() {
optfeature "Colorized output supprt" dev-python/pygments
optfeature "Colorized output support" dev-python/pygments
if has_version "<${CATEGORY}/${PN}-483-r1" ; then
elog "The lesspipe.sh symlink has been dropped. If you are still setting"