[pacman-dev] [PATCH 1/3] makepkg: Better error messages for versions in (check, make, opt)depends/provides/conflicts

Eli Schwartz eschwartz at archlinux.org
Wed Aug 8 04:33:42 UTC 2018


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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.archlinux.org/pipermail/pacman-dev/attachments/20180808/c133ca8c/attachment.asc>


More information about the pacman-dev mailing list