Skip to content

pkg-config .pc files are found in preference to flagpoll .fpc files #8

@ryandesign

Description

@ryandesign

gmtl was modified to install a pkg-config .pc file in addition to the flagpoll .fpc file it had been installing:

https://sourceforge.net/p/ggt/code/1264

I was surprised to see that flagpoll gets its info from the .pc file, even though there is an .fpc file available:

% flagpoll gmtl --info
gmtl
 Name : GMTL
 URL : http://ggt.sf.net/
 Requires : 
 FlagpollFilename : /opt/local/lib/pkgconfig/gmtl.pc
 prefix : /opt/local
 Version : 0.6.1
 Provides : gmtl
 Cflags : -I/opt/local/include/gmtl-0.6.1
 Libs : 
 Arch : noarch
 Description : Generic Math Template Library

If I delete the .pc file then the .fpc file is used:

% flagpoll gmtl --info                         
gmtl
 Name : GMTL
 URL : http://ggt.sf.net/
 Requires : 
 FlagpollFilename : /opt/local/share/flagpoll/gmtl-0.6.1-noarch.fpc
 prefix : /opt/local
 Version : 0.6.1
 Provides : gmtl
 Cflags : -I/opt/local/include/gmtl-0.6.1
 Libs : 
 Arch : noarch
 Description : Generic Math Template Library

I assumed that, if there were an .fpc file available, flagpoll would prefer to use that, but no, the code clearly shows the pkgconfig paths being searched before the flagpoll paths:

flagpoll/flagpoll

Lines 243 to 247 in 8a3d8a5

default_path_list = [pj('/','usr','lib64'), pj('/','usr','lib32'), pj('/','usr','lib'), pj('/','usr','share')]
default_path_pkg = [pj(p,'pkgconfig') for p in default_path_list]
default_path_flg = [pj(p,'flagpoll') for p in default_path_list]
path_list.extend(default_path_pkg)
path_list.extend(default_path_flg)

The code has changed over time but that has always been the search order, even when the searching of flagpoll directories was initially added in cab162b.

Is this really the intended search order? If so, what incentive does any software package have to ever install an .fpc file?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions