[pacman-dev] [PATCH] libmakepkg: check if PKGBUILD variables are arrays or not as appropriate

Allan McRae allan at archlinux.org
Fri Aug 7 08:08:00 UTC 2015


On 07/08/15 16:23, Dave Reisner wrote:
> On Fri, Aug 7, 2015 at 6:50 AM, Allan McRae <allan at archlinux.org> wrote:
> 
>> On 22/07/15 01:33, Dave Reisner wrote:
>>> On Mon, Jul 20, 2015 at 03:52:43PM +1000, Allan McRae wrote:
>>>> When extracting variables from PKGBUILD (e.g. for .SRCINFO creation) we
>> make
>>>> assumptions about whether variables are arrays or not.  This adds a
>> check to
>>>> the PKGBUILD linter to ensure variables are arrays or not as
>> appropriate.
>>>>
>>>> Signed-off-by: Allan McRae <allan at archlinux.org>
>>>> ---
>>>>  scripts/Makefile.am                          |  1 +
>>>>  scripts/libmakepkg/lint_pkgbuild/array.sh.in | 62
>> ++++++++++++++++++++++++++++
>>>
>>> Pedantic, but I'm not sure I like the name of the check. It isn't
>>> strictly about arrays. Maybe decls.sh ? structure.sh ?
>>>
>>
>> It is checking if variables are arrays or not arrays.  Anyway,
>> variables.sh?
>>
>>
> Sure, sounds fine. My concern is that maybe in the future this extends to
> something more than just being about arrays, and the name "array" make it
> sounds more like functions which manipulate/build arrays more than linting
> the structure of variables.
> 
> 
>> <snip>
>>
>>>
>>>> +            if grep -q "$i=[^(]" $BUILDSCRIPT; then
>>>
>>> If you have some sort of logic which appends to an array, you'll get a
>>> false positive here. We allow this elsewhere.
>>>
>>
>> I am confused by this comment.   Can you give an example of what could
>> cause an issue?
>>
>>
> ...
> depends=('bar')
> ...
> 
> package_foo() {
>   depends+=('bar')
> }
> 
> package_bar() {
>   ...
> }
> 

But that will not be matched by "$i=(" or "$i=[^(]", so there is no
issue there, apart from those not being checked.

(aside: we should play a game of guess the dependencies of foo() with
that example!)

Allan


More information about the pacman-dev mailing list