[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