getting PKGNAME from CONFLICTS

Matthew Seaman matthew at FreeBSD.org
Wed Aug 15 12:46:28 UTC 2018


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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 963 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20180815/946415c8/attachment.sig>


More information about the freebsd-ports mailing list