RPM Community Forums

Mailing List Message of <rpm-devel>

Re: Generalizing EVR comparison precedence, preliminaries

From: Jeff Johnson <n3npq@mac.com>
Date: Fri 02 Jan 2009 - 14:04:37 CET
Message-id: <10182F3D-6955-4D6B-9A48-926F134B6DC4@mac.com>

On Jan 2, 2009, at 4:46 AM, Ralf S. Engelschall wrote:

> On Thu, Jan 01, 2009, Jeff Johnson wrote:
>
>> On Jan 1, 2009, at 1:04 PM, Ralf S. Engelschall wrote:
>>>>
>>>> A little help vetting the RE's please ;-) My eyes are already tired
>>>> from writing the toy script, RE's are more effective than XML at  
>>>> eye
>>>> gouging.
>>>
>>> I propose the following three entries in "macros"...
>>>
>>>   # STEP 1: Match the string and capture regex parts
>>>   #                      1          2           3             4
>>>   #                      X     ":"  X        "-"X          ":"X
>>>   %evr_tuple_match  ^(?:([^:-]+):)?([^:-]+)(?:-([^:-]+))?(?::([^:-]
>>> +))?$
>>
>> A little more help please.
>>
>> I'm using POSIX extended RE's.
>
> Oh, sorry. I silemtly assumed PCRE! But ok, a non-PCRE version is also
> possible: we just have to replace the non-capturing parenthesis (?:..)
> with regular ones and then just ignore them in the selection phase:
>

Hmmm, the PCRE posix emulation seems to *ahem* extend POSIX syntax  
slightly then.
I do have an assertion in place on the parsed results using  
RRPMMIRE_REGEX
with the original pattern and tested with
	rpm -Va --nofiles
But perhaps I screwed the assertion (or mire.c needs fixing) somehow.

It may be time to commit to PCRE as mandatory when building rpm,
and use PCRE patterns consistently. There's a few compatibility issues
on older linux distros, not hard to fix.

There's also the pattern for extracting href's from HTML that you kindly
gave me a year ago to. Both the html and now the EVRD parsers are
rather too important to be lost if/when rpm is built without PCRE.

>    # STEP 1: Match the string and capture regex parts
>    #                      2          3           5             7
>    #                      X     ":"  X        "-"X          ":"X
>    %evr_tuple_match  ^(([^:-]+):)?([^:-]+)(-([^:-]+))?(:([^:-]+))?$
>
>    # STEP 2: Assemble <E,V,R,D> tuple from regex parts
>    # <E,V,R,D>       case 1:  case 2:  case 3:  case 4:  case 5:   
> case 6:
>    #                 X:X-X:X  X:X-X    X:X      X:       X-X      X
>    %evr_tuple_select 2357     237_     23__     2___     _23_     __5_
>
>    # STEP 3: Configure the comparison order of the <E,V,R,D> tuple  
> elements
>    %evr_tuple_order  EVRD
>

Thanks! I will add both to macros.in for now (and to help me read PCRE  
patterns).

73 de Jeff

> This should do the trick with regular POSIX regular expressions, too.
>
>                                       Ralf S. Engelschall
>                                       rse@engelschall.com
>                                       www.engelschall.com
>
> ______________________________________________________________________
> RPM Package Manager                                    http://rpm5.org
> Developer Communication List                        rpm-devel@rpm5.org



  • application/pkcs7-signature attachment: smime.p7s
Received on Fri Jan 2 14:04:42 2009
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.