getting PKGNAME from CONFLICTS

Rodrigo Osorio ros at bebik.net
Wed Aug 15 13:17:55 UTC 2018


On 08/15/18 14:46, Matthew Seaman wrote:
> On 15/08/2018 00:35, Dan Langille wrote:
>>> On Aug 14, 2018, at 2:55 PM, Mark Millard via freebsd-ports <freebsd-ports at freebsd.org> wrote:
>>>
>>>
>>> Dan Langille dan at langille.org wrote on
>>> Tue Aug 14 17:54:01 UTC 2018 :
>>>
>>>> . . .
>>>> At https://dev.freshports.org/www/p5-CGI/ you can see:
>>>>
>>>>    CONFLICTS: p5-CGI.pm-[1-3]*
>>>> . . .
>>>> To extract the PKGNAME values from the CONFLICTS I will need to remove everything after the trailing dash.
>>>> . . .
>>> p5-
>>> vs.
>>> p5-CGI.pm-
>>> vs.
>>> p5-CGI.pm-[1-
>>>
>>> It looks to me like "trailing dash" probably has a
>>> complicated definition where some "-"(s) may exist
>>> that are to be ignored after the one of interest.
>>> In the example I'm guessing that the middle
>>> "-" is intended (so "p5-CGI.pm-").
>> Agreed.  The hard part is identifying the regex and deleting it from consideration.
>>
> If you don't mind spawning a new process, you can just do:
>
> % pkg search -qg 'p5-CGI.pm-[1-3]*'
> p5-CGI.pm-3.63_1,1
>
> This does assume your pkg(8) is configured to use a repository with all
> possible packages available.  The default FreeBSD repositories are a
> good choice in that regard.
>
> Or if you already have a database table with all of the package names
> and versions, then you'll presumably want to change the glob expression
> into a regex match (in this case something like '^p5-CGI\.pm-[1-3].*')
> Unless there's a PG extension that allows using glob(3) to match
> strings?  I can't see one after a pretty cursory search.  (sqlite has
> glob(3) support, which is what the pkg(8) command above is using under
> the hood.)
>
> 	Cheers,
>
> 	Matthew
>
Hi,

Why do you uses regexp instead of evaluating them with fnmatch ?
The function is available (at least) in php, python and ruby.

Cheers,

- rodrigo



More information about the freebsd-ports mailing list