[pacman-dev] [RFC] Package parser in python
sebnow at gmail.com
Fri Dec 11 22:46:20 EST 2009
On 01/10/2009, at 10:47 PM, Sebastian Nowicki wrote:
> On Oct 1, 2009, at 4:32 PM, Allan McRae wrote:
>> Sebastian Nowicki wrote:
>>> On Oct 1, 2009, at 2:52 PM, Allan McRae wrote:
>>>> This is one part of the makepkg test suite I am working on. It
>>>> is fairly a simple class that takes a pacman package filename and
>>>> does some parsing. Currently that involves getting the file list
>>>> and the info from the .PKGINFO file.
>>>> I am still fairly new to python so I am looking for comments on
>>>> how this could be improved.
>>>> One idea I have had is to not initialize all the fields in the
>>>> pkginfo dict and add a test if an array exists before appending.
>>>> It would make the code tidier but that would mean the need to
>>>> test if the field exists when comparing it later.
>>> I didn't really look at the script, but I made a similar parser
>>>  earlier, initially for AUR2 purposes. Looking over it, it
>>> seems I don't include the file list during parsing, but that can
>>> probably be easily added in. Perhaps it can be expanded upon,
>>> instead of creating a new one. If not it should at least help.
>>>  http://github.com/sebnow/parched/blob/master/parched.py
>> Ah.... I had seen that before but I thought it only parsed
>> PKGBUILDs for some reason. I have been using that for some ideas
>> for my PKGBUILD parser but it needed a big overhaul for package
> Indeed, I haven't kept it up to date. I've wanted to actually
> implement a tiny and safe bash parser to make it work with all
> PKGBUILDs, but it I could never settle on the feature list (bash is
> bigger than I thought). Such changes to the PKGBUILD spec shouldn't
> affect it then. That would be overkill for a test suite though :P.
> It seems our package parsers are pretty much the same, with the
> exception of variable naming.
As you may have heard, I started a proper PKGBUILD parser, which
parses according to shell semantics and does a little interpreting. I
just released the first version, which doesn't handle errors, or multi-
line values (like arrays or escaped newlines) very well. It does
however support split packages. I'm in the process of modifying
parched to essentially turn it into python bindings for pkgparse.
You probably already have a parser at this point, so I'm not sure how
useful this would be to you (it might be overkill anyway), I just
though I'd let you know.
More information about the pacman-dev