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

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to