On 08/08/2018 12:20 AM, Luke Shumaker wrote:
On Wed, 08 Aug 2018 00:05:25 -0400, Eli Schwartz wrote:
On 08/07/2018 11:16 PM, Luke Shumaker wrote:
+check_fullpkgver() { + local fullver=$1 type=$2 + local ret=0 + + # If there are multiple colons or multiple hyphens, there's a + # question of how we split it--it's invalid either way, but it + # will affect error messages. Let's mimic version.c:parseEVR(). + + if [[ $fullver = *:* ]]; then + # split at the *first* colon + check_epoch "${fullver%%:*}" "$type" || ret=1 + fullver=${fullver#*:} + fi + + if [[ $fullver = *-* ]]; then + # split at the *last* hyphen + check_pkgrel "${fullver##*-}" "$type" || ret=1 + fullver=${fullver%-*} + fi
Allan and I discussed on IRC that this does interesting things if someone uses e.g. makedepends=('perl-test-fatal>=-0.003') This was a real example discovered during the perl rebuild...
The resulting error message is: ERROR: pkgver in makedepends is not allowed to be empty.
Your patch improves error reporting in several ways, but it does nothing for this. So while we are at it, this would be a great time to check when splitting off the epoch/pkgrel, whether there's actually a pkgver on the other side.
Hmm, I'll have to ponder how to best handle that. This is a problem of "given a malformed input, what's the most likely thing that the user intended?", which is a problem with no robust answer.
Perhaps change the check to:
if [[ $fullver = ?*-* ]]; then
That should be fine. We're working on the assumption that - epoch is optional (and implied "0") - pkgrel is optional - most versioned *depends/provides in existence specify neither A completely leading "-" is almost certainly a typo within a pkgver (it happens), not a pkgrel with a completely missing pkgver (very unlikely). -- Eli Schwartz Bug Wrangler and Trusted User