[pacman-dev] [PATCH] Fix the implementation of lint_variable.

Allan McRae allan at archlinux.org
Fri Nov 13 04:01:41 UTC 2015


On 13/11/15 11:33, Allan McRae wrote:
> On 13/11/15 03:12, David Grayson wrote:
>> On Thu, Nov 12, 2015 at 1:28 AM, Allan McRae <allan at archlinux.org> wrote:
>>>> This does not catch bad variables in the package() arrays.
>>
>> Thank you for the feedback, Allan!  I forgot that variables can be redefined in the package() function and could be defined to bad types at that time.  How about we use my original patch but add a call to lint_variable right after package (or similar) is called?  (Also I should fix it to use tabs as indentation.)  The downside is that someone might build a giant package and then later find out that it fails linting at the very last step, but I think they could use "pacman --repackage" if they want to save time, and I think they would also forgive you for not catching errors in code that has not executed yet.
>>
>> If that sounds good to you, I will work on a new patch that does that.
>>
> 
> 
> Nope - erroring out during package() is a bad idea.   These errors need
> to be detected at the start.
> 
> Note there is code for extracting features from the PKGBUILD used to
> make .SRCINFO files already there.  It has issues when arrays are not
> arrays etc, which is why I added this check.  Anyway, maybe we can
> utilize that instead.
> 
>>
>>> +               if grep -q -e "^[[:space:]]*$i=[^(]" -e "^[[:space:]]*$i+=[^(]" "$BUILDSCRIPT"; then
>>
>> Your patch violate's pacman's 80-character line length convention, and it got wrapped by your mail client.  I tested your new patch, and it does fix the bugs I was complaining about in my original message, but there are still false positives and false negatives.
>>
>> False positives:
>>
>>   make \
>>     arch=${_arch}
>>
>> False negative:
>>
>>   eval lic""ense=bad
>>
>> Of course, these are contrived cases that I made up. 
> 
> I'm sure that last one is genuine!  I'm not too worried about the false
> negative, but any false positive is an issue.
> 

Try the new patches I have just submitted (or use my patchqueue branch).
 They should be very robust to false positives, and only make false
negatives in silly cases...

Allan


More information about the pacman-dev mailing list