diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2018-08-07 00:10:08 -0400 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2018-08-07 00:10:08 -0400 |
commit | 67bf884802bfd4b190fb5f8cd521c37660f05d53 (patch) | |
tree | 0447f5ddae8794090110348075029c7ff275e205 /libre/pacman/0001-makepkg-Better-error-messages-for-versions-in-check-.patch | |
parent | 6af3b6469459012f1c71117c45959ff3d836103c (diff) | |
download | abslibre-67bf884802bfd4b190fb5f8cd521c37660f05d53.tar.gz abslibre-67bf884802bfd4b190fb5f8cd521c37660f05d53.tar.bz2 abslibre-67bf884802bfd4b190fb5f8cd521c37660f05d53.zip |
libre/pacman: Try out some new patches
Diffstat (limited to 'libre/pacman/0001-makepkg-Better-error-messages-for-versions-in-check-.patch')
-rw-r--r-- | libre/pacman/0001-makepkg-Better-error-messages-for-versions-in-check-.patch | 339 |
1 files changed, 339 insertions, 0 deletions
diff --git a/libre/pacman/0001-makepkg-Better-error-messages-for-versions-in-check-.patch b/libre/pacman/0001-makepkg-Better-error-messages-for-versions-in-check-.patch new file mode 100644 index 000000000..641984e94 --- /dev/null +++ b/libre/pacman/0001-makepkg-Better-error-messages-for-versions-in-check-.patch @@ -0,0 +1,339 @@ +From d45e7d7e660704fac084badc1835aff037995b65 Mon Sep 17 00:00:00 2001 +From: Luke Shumaker <lukeshu@parabola.nu> +Date: Mon, 6 Aug 2018 23:42:48 -0400 +Subject: [PATCH 1/4] makepkg: Better error messages for versions in + (check,make,opt)depends/provides/conflicts + +Given the depends + + depends=('foo>=1.2-1.par2') + +and the error message + + ==> ERROR: pkgver in depends is not allowed to contain colons, forward slashes, hyphens or whitespace. + +One would be lead to believe that the problem is that they gave a pkgrel in +depends at all, not that the pkgrel contains letters. + +Each of the (check,make,opt)depends, conflicts, and provides linters use a +glob to trim off properly formed epoch an rel from the full version string, +and pass the remainder to check_pkgver(). This does a good job of +accepting/rejecting full versions, but doesn't do a good job of generating +good error messages when rejecting if it's because of the epoch or rel. + +1. Factor out check_epoch() and check_pkgrel() from lint_epoch() and + lint_pkgrel(), similarly to check_pkgver(). +2. Add a check_fullpkgver() that takes a full [epoch:]ver[-rel] string and + splits it in to epoch/ver/rel, and calls the appropriate check_ function + on each. +3. Use check_fullpkgver() in the {,check,make,opt}depends, conflicts, and + provides linters. +--- + .../lint_pkgbuild/checkdepends.sh.in | 10 ++-- + .../libmakepkg/lint_pkgbuild/conflicts.sh.in | 10 ++-- + .../libmakepkg/lint_pkgbuild/depends.sh.in | 14 +++--- + scripts/libmakepkg/lint_pkgbuild/epoch.sh.in | 10 +++- + .../libmakepkg/lint_pkgbuild/fullpkgver.sh.in | 48 +++++++++++++++++++ + .../lint_pkgbuild/makedepends.sh.in | 10 ++-- + .../libmakepkg/lint_pkgbuild/optdepends.sh.in | 10 ++-- + scripts/libmakepkg/lint_pkgbuild/pkgrel.sh.in | 20 ++++++-- + .../libmakepkg/lint_pkgbuild/provides.sh.in | 10 ++-- + 9 files changed, 99 insertions(+), 43 deletions(-) + create mode 100644 scripts/libmakepkg/lint_pkgbuild/fullpkgver.sh.in + +diff --git a/scripts/libmakepkg/lint_pkgbuild/checkdepends.sh.in b/scripts/libmakepkg/lint_pkgbuild/checkdepends.sh.in +index d5648bd4..0a9ddf67 100644 +--- a/scripts/libmakepkg/lint_pkgbuild/checkdepends.sh.in ++++ b/scripts/libmakepkg/lint_pkgbuild/checkdepends.sh.in +@@ -23,8 +23,8 @@ LIBMAKEPKG_LINT_PKGBUILD_CHECKDEPENDS_SH=1 + + LIBRARY=${LIBRARY:-'@libmakepkgdir@'} + ++source "$LIBRARY/lint_pkgbuild/fullpkgver.sh" + source "$LIBRARY/lint_pkgbuild/pkgname.sh" +-source "$LIBRARY/lint_pkgbuild/pkgver.sh" + source "$LIBRARY/util/message.sh" + source "$LIBRARY/util/pkgbuild.sh" + +@@ -43,12 +43,10 @@ lint_checkdepends() { + + for checkdepend in "${checkdepends_list[@]}"; do + name=${checkdepend%%@(<|>|=|>=|<=)*} +- # remove optional epoch in version specifier +- ver=${checkdepend##$name@(<|>|=|>=|<=)?(+([0-9]):)} + lint_one_pkgname checkdepends "$name" || ret=1 +- if [[ $ver != $checkdepend ]]; then +- # remove optional pkgrel in version specifier +- check_pkgver "${ver%-+([0-9])?(.+([0-9]))}" checkdepends || ret=1 ++ if [[ $name != $checkdepend ]]; then ++ ver=${checkdepend##$name@(<|>|=|>=|<=)} ++ check_fullpkgver "$ver" checkdepends || ret=1 + fi + done + +diff --git a/scripts/libmakepkg/lint_pkgbuild/conflicts.sh.in b/scripts/libmakepkg/lint_pkgbuild/conflicts.sh.in +index a18c25fa..b61459e1 100644 +--- a/scripts/libmakepkg/lint_pkgbuild/conflicts.sh.in ++++ b/scripts/libmakepkg/lint_pkgbuild/conflicts.sh.in +@@ -23,8 +23,8 @@ LIBMAKEPKG_LINT_PKGBUILD_CONFLICTS_SH=1 + + LIBRARY=${LIBRARY:-'@libmakepkgdir@'} + ++source "$LIBRARY/lint_pkgbuild/fullpkgver.sh" + source "$LIBRARY/lint_pkgbuild/pkgname.sh" +-source "$LIBRARY/lint_pkgbuild/pkgver.sh" + source "$LIBRARY/util/message.sh" + source "$LIBRARY/util/pkgbuild.sh" + +@@ -43,12 +43,10 @@ lint_conflicts() { + + for conflict in "${conflicts_list[@]}"; do + name=${conflict%%@(<|>|=|>=|<=)*} +- # remove optional epoch in version specifier +- ver=${conflict##$name@(<|>|=|>=|<=)?(+([0-9]):)} + lint_one_pkgname conflicts "$name" || ret=1 +- if [[ $ver != $conflict ]]; then +- # remove optional pkgrel in version specifier +- check_pkgver "${ver%-+([0-9])?(.+([0-9]))}" conflicts || ret=1 ++ if [[ $name != $conflict ]]; then ++ ver=${conflict##$name@(<|>|=|>=|<=)} ++ check_fullpkgver "$ver" conflicts || ret=1 + fi + done + +diff --git a/scripts/libmakepkg/lint_pkgbuild/depends.sh.in b/scripts/libmakepkg/lint_pkgbuild/depends.sh.in +index e363a039..aba43825 100644 +--- a/scripts/libmakepkg/lint_pkgbuild/depends.sh.in ++++ b/scripts/libmakepkg/lint_pkgbuild/depends.sh.in +@@ -23,8 +23,8 @@ LIBMAKEPKG_LINT_PKGBUILD_DEPENDS_SH=1 + + LIBRARY=${LIBRARY:-'@libmakepkgdir@'} + ++source "$LIBRARY/lint_pkgbuild/fullpkgver.sh" + source "$LIBRARY/lint_pkgbuild/pkgname.sh" +-source "$LIBRARY/lint_pkgbuild/pkgver.sh" + source "$LIBRARY/util/message.sh" + source "$LIBRARY/util/pkgbuild.sh" + +@@ -43,13 +43,13 @@ lint_depends() { + + for depend in "${depends_list[@]}"; do + name=${depend%%@(<|>|=|>=|<=)*} +- # remove optional epoch in version specifier +- ver=${depend##$name@(<|>|=|>=|<=)?(+([0-9]):)} + lint_one_pkgname depends "$name" || ret=1 +- # Don't validate empty version because of https://bugs.archlinux.org/task/58776 +- if [[ $ver != $depend && -n $ver ]]; then +- # remove optional pkgrel in version specifier +- check_pkgver "${ver%-+([0-9])?(.+([0-9]))}" depends || ret=1 ++ if [[ $name != $depend ]]; then ++ ver=${depend##$name@(<|>|=|>=|<=)} ++ # Don't validate empty version because of https://bugs.archlinux.org/task/58776 ++ if [[ -n $ver ]]; then ++ check_fullpkgver "$ver" depends || ret=1 ++ fi + fi + done + +diff --git a/scripts/libmakepkg/lint_pkgbuild/epoch.sh.in b/scripts/libmakepkg/lint_pkgbuild/epoch.sh.in +index 93bd05c1..c98f91b0 100644 +--- a/scripts/libmakepkg/lint_pkgbuild/epoch.sh.in ++++ b/scripts/libmakepkg/lint_pkgbuild/epoch.sh.in +@@ -29,9 +29,15 @@ source "$LIBRARY/util/message.sh" + lint_pkgbuild_functions+=('lint_epoch') + + +-lint_epoch() { ++check_epoch() { ++ local epoch=$1 type=$2 ++ + if [[ $epoch != *([[:digit:]]) ]]; then +- error "$(gettext "%s must be an integer, not %s.")" "epoch" "$epoch" ++ error "$(gettext "%s must be an integer, not %s.")" "epoch${type:+ in $type}" "$epoch" + return 1 + fi + } ++ ++lint_epoch() { ++ check_epoch "$epoch" ++} +diff --git a/scripts/libmakepkg/lint_pkgbuild/fullpkgver.sh.in b/scripts/libmakepkg/lint_pkgbuild/fullpkgver.sh.in +new file mode 100644 +index 00000000..761b3dac +--- /dev/null ++++ b/scripts/libmakepkg/lint_pkgbuild/fullpkgver.sh.in +@@ -0,0 +1,48 @@ ++#!/bin/bash ++# ++# fullpkgver.sh - Check whether a full version conforms to requirements. ++# ++# Copyright (c) 2018 Pacman Development Team <pacman-dev@archlinux.org> ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see <http://www.gnu.org/licenses/>. ++# ++ ++[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_PKGVER_SH" ]] && return ++LIBMAKEPKG_LINT_PKGBUILD_PKGVER_SH=1 ++ ++LIBRARY=${LIBRARY:-'@libmakepkgdir@'} ++ ++source "$LIBRARY/lint_pkgbuild/epoch.sh" ++source "$LIBRARY/lint_pkgbuild/pkgrel.sh" ++source "$LIBRARY/lint_pkgbuild/pkgver.sh" ++ ++ ++check_fullpkgver() { ++ local fullver=$1 type=$2 ++ local ret=0 ++ ++ if [[ $fullver = *:* ]]; then ++ check_epoch "${fullver%:*}" "$type" || ret=1 ++ fullver=${fullver##*:} ++ fi ++ ++ if [[ $fullver = *-* ]]; then ++ check_pkgrel "${fullver##*-}" "$type" || ret=1 ++ fullver=${fullver%-*} ++ fi ++ ++ check_pkgver "$fullver" "$type" || ret=1 ++ ++ return $ret ++} +diff --git a/scripts/libmakepkg/lint_pkgbuild/makedepends.sh.in b/scripts/libmakepkg/lint_pkgbuild/makedepends.sh.in +index 4cc4ab5d..20c7f7dc 100644 +--- a/scripts/libmakepkg/lint_pkgbuild/makedepends.sh.in ++++ b/scripts/libmakepkg/lint_pkgbuild/makedepends.sh.in +@@ -23,8 +23,8 @@ LIBMAKEPKG_LINT_PKGBUILD_MAKEDEPENDS_SH=1 + + LIBRARY=${LIBRARY:-'@libmakepkgdir@'} + ++source "$LIBRARY/lint_pkgbuild/fullpkgver.sh" + source "$LIBRARY/lint_pkgbuild/pkgname.sh" +-source "$LIBRARY/lint_pkgbuild/pkgver.sh" + source "$LIBRARY/util/message.sh" + source "$LIBRARY/util/pkgbuild.sh" + +@@ -43,12 +43,10 @@ lint_makedepends() { + + for makedepend in "${makedepends_list[@]}"; do + name=${makedepend%%@(<|>|=|>=|<=)*} +- # remove optional epoch in version specifier +- ver=${makedepend##$name@(<|>|=|>=|<=)?(+([0-9]):)} + lint_one_pkgname makedepends "$name" || ret=1 +- if [[ $ver != $makedepend ]]; then +- # remove optional pkgrel in version specifier +- check_pkgver "${ver%-+([0-9])?(.+([0-9]))}" makedepends || ret=1 ++ if [[ $name != $makedepend ]]; then ++ ver=${makedepend##$name@(<|>|=|>=|<=)} ++ check_fullpkgver "$ver" makedepends || ret=1 + fi + done + +diff --git a/scripts/libmakepkg/lint_pkgbuild/optdepends.sh.in b/scripts/libmakepkg/lint_pkgbuild/optdepends.sh.in +index 9978fe9b..505ee848 100644 +--- a/scripts/libmakepkg/lint_pkgbuild/optdepends.sh.in ++++ b/scripts/libmakepkg/lint_pkgbuild/optdepends.sh.in +@@ -23,6 +23,8 @@ LIBMAKEPKG_LINT_PKGBUILD_OPTDEPENDS_SH=1 + + LIBRARY=${LIBRARY:-'@libmakepkgdir@'} + ++source "$LIBRARY/lint_pkgbuild/fullpkgver.sh" ++source "$LIBRARY/lint_pkgbuild/pkgname.sh" + source "$LIBRARY/util/message.sh" + source "$LIBRARY/util/pkgbuild.sh" + +@@ -41,12 +43,10 @@ lint_optdepends() { + + for optdepend in "${optdepends_list[@]%%:[[:space:]]*}"; do + name=${optdepend%%@(<|>|=|>=|<=)*} +- # remove optional epoch in version specifier +- ver=${optdepend##$name@(<|>|=|>=|<=)?(+([0-9]):)} + lint_one_pkgname optdepends "$name" || ret=1 +- if [[ $ver != $optdepend ]]; then +- # remove optional pkgrel in version specifier +- check_pkgver "${ver%-+([0-9])?(.+([0-9]))}" optdepends || ret=1 ++ if [[ $name != $optdepend ]]; then ++ ver=${optdepend##$name@(<|>|=|>=|<=)} ++ check_fullpkgver "$ver" optdepends || ret=1 + fi + done + +diff --git a/scripts/libmakepkg/lint_pkgbuild/pkgrel.sh.in b/scripts/libmakepkg/lint_pkgbuild/pkgrel.sh.in +index f294a3bf..762f054a 100644 +--- a/scripts/libmakepkg/lint_pkgbuild/pkgrel.sh.in ++++ b/scripts/libmakepkg/lint_pkgbuild/pkgrel.sh.in +@@ -29,14 +29,24 @@ source "$LIBRARY/util/message.sh" + lint_pkgbuild_functions+=('lint_pkgrel') + + +-lint_pkgrel() { +- if [[ -z $pkgrel ]]; then +- error "$(gettext "%s is not allowed to be empty.")" "pkgrel" ++check_pkgrel() { ++ local rel=$1 type=$2 ++ if [[ -z $rel ]]; then ++ error "$(gettext "%s is not allowed to be empty.")" "pkgrel${type:+ in $type}" + return 1 + fi + +- if [[ $pkgrel != +([0-9])?(.+([0-9])) ]]; then +- error "$(gettext "%s must be a decimal, not %s.")" "pkgrel" "$pkgrel" ++ if [[ $rel != +([0-9])?(.+([0-9])) ]]; then ++ error "$(gettext "%s must be a decimal, not %s.")" "pkgrel${type:+ in $type}" "$rel" + return 1 + fi + } ++ ++lint_pkgrel() { ++ if (( PKGVERFUNC )); then ++ # defer check to after getting version from pkgver function ++ return 0 ++ fi ++ ++ check_pkgrel "$pkgrel" ++} +diff --git a/scripts/libmakepkg/lint_pkgbuild/provides.sh.in b/scripts/libmakepkg/lint_pkgbuild/provides.sh.in +index 102be08e..5a529728 100644 +--- a/scripts/libmakepkg/lint_pkgbuild/provides.sh.in ++++ b/scripts/libmakepkg/lint_pkgbuild/provides.sh.in +@@ -23,8 +23,8 @@ LIBMAKEPKG_LINT_PKGBUILD_PROVIDES_SH=1 + + LIBRARY=${LIBRARY:-'@libmakepkgdir@'} + ++source "$LIBRARY/lint_pkgbuild/fullpkgver.sh" + source "$LIBRARY/lint_pkgbuild/pkgname.sh" +-source "$LIBRARY/lint_pkgbuild/pkgver.sh" + source "$LIBRARY/util/message.sh" + source "$LIBRARY/util/pkgbuild.sh" + +@@ -48,12 +48,10 @@ lint_provides() { + continue + fi + name=${provide%=*} +- # remove optional epoch in version specifier +- ver=${provide##$name=?(+([0-9]):)} + lint_one_pkgname provides "$name" || ret=1 +- if [[ $ver != $provide ]]; then +- # remove optional pkgrel in version specifier +- check_pkgver "${ver%-+([0-9])?(.+([0-9]))}" provides || ret=1 ++ if [[ $name != $provide ]]; then ++ ver=${provide##$name=} ++ check_fullpkgver "$ver" provides || ret=1 + fi + done + +-- +2.18.0 + |