pkg-config 0.28

Dan Nicholson dbn.lists at
Thu Jan 24 05:57:21 PST 2013

pkg-config-0.28 has been released and is available for download. There
are a lot of bug fixes here for long standing issues. I think this
release is a great improvement, but there have been a couple minor
behavior changes made to fix the difficult bugs.

I believe the pkg-config output should be entirely compatible with
current usage since the test suite has been extended quite a bit and
catches regressions much better than it used to. That said, please see
the details of the changes in the NEWS below, try out the latest
release, and let us know if you're having any issues with pkg-config.

pkg-config 0.28
- Fixed a pair of long-standing and intertwined bugs involving unwanted
  removal of flags. The first is that other Libs flags like -Wl are now
  kept in context order with -l flags. The second is that aggressive
  removal of all duplicate arguments has been scaled back so that just
  consecutive duplicate arguments are removed. One result of this change
  is that some flags could be repeated in the final output, especially
  flags from non-pkg-config packages like -lm. Since pkg-config rarely
  has enough knowledge here about the right thing to do, we throw the
  duplicate arguments at the compiler/linker and trust it will do the
  right thing.
- Fixed an old bug to allow circular Requires. This fix brings along a
  small behavior change in that pkg-config resolves requires depth
  first, causing some lower level flags to show up earlier in the output
  than previously.
- Cleaned up many corner-case bugs and ambiguous behavior in
  pkg-config's interface. Thanks to Michał Górny for finding so many of
- New autoconf macro PKG_CHECK_VAR for reading variables from .pc files.
- Default to suppressing -L/lib and/or -L/lib64 like their /usr
- To help support multiarch scenarios out of the box, $host-pkg-config
  is now installed unless --disable-host-tool is passed to configure.
- Added optional gcov usage through the --with-gcov configure option. As
  a result, many more tests were added to greatly increase the coverage
  of the code to 86% of executed lines on a Fedora 18 machine.
- Bugs fixed: 130, 7331, 16101, 17053, 19950, 34504, 48098, 54231,
  54271, 54379, 54384, 54386, 54388, 54389, 54390, 54391, 54427, 54463,
  54716, 57078, 58363, 59435.

The tagged git repo and tarball can be found here:
git tag: pkg-config-0.28
MD5: aa3c86e67551adc3ac865160e34a2a0d
SHA1: 71853779b12f958777bffcb8ca6d849b4d3bed46
SHA256: 6b6eb31c6ec4421174578652c7e141fdaae2dabad1021f420d8713206ac1f845

Here's the shortlog of changes since version 0.27.1.

Adrian Bunk (1):
      remove the .cvsignore file

Dan Nicholson (69):
      Add optional usage of gcov for test coverage
      check: Pass args to test function instead of setting in variable
      check: Test --define-variable corner cases
      check: Exercise all printing options
      check: Check path handling
      check: Enhance --print-requires tests
      check: Test pkg-config version
      check: Test sysroot support
      Fix formatting for --print-provides in man page
      check: Test -uninstalled functionality
      check: Ensure debugging output works correctly
      check: Ensure unknown options fail
      check: Test all variants of --cflags and --libs
      Kill a bunch of unused code
      check: Test version comparisons within Requires fields
      Install pkg-config link with $host- prefix
      Make sure recursion only happens with requires
      Consistently resolve requires depth-first to fix non-l flag ordering
      Delay converting Requires entries to Packages until after parsing
      Support circular Requires loops
      Don't crash on --print-variables when there are no variables
      Only match uninstalled packages that end in "-uninstalled" with hyphen
      Nest copying and merging of flags to avoid repeated traversals
      Move --print-variables handling after --exists for consistency
      Remove script
      Allow all combinations of --cflags and --libs variants
      Use package filename rather than Name in debugging
      Remove extra spaces from list debugging output
      Test ordering of flags based on package depth and path
      Test stripping of duplicate flags
      Add a gtk testcase to provide something with complex interactions
      Use standard GSList functions to merge package lists
      Always use --static test results for indirect depencency results
      Convert to doubly-linked GList
      Remove duplicate packages after resolving requires
      Traverse list backwards instead of copying and reversing
      Start from end of package lists when processing Requires
      Remove duplicate string list elements in place
      Optimize hash table when usage is only as a set
      Fix one hash table optimization to use key=value
      Sort -other Libs and Cflags by package order instead of path order
      Cleanup prototypes for list operating functions
      Unify string list stripping functions and operate on list in place
      Limit merging of packages and flags to path or dependency order
      Pass around flags types instead of function pointers
      Output -L Libs flags before other Libs flags
      Keep Libs and Cflags together to maintain ordering
      Output -l and other Libs flags in the order they appear
      Only strip duplicate arguments when they appear consecutively
      Document PKG*INSTALLDIR autoconf macros in manpage
      Update README.win32 to reflect current pkg-config behavior
      Fix hardcoded version if check-debug
      Cleanup local variable declarations
      Split out package processing to separate function to cleanup main
      Convert ints used as bools to gbooleans
      Handle output mode options in callback
      Use flags for --cflags/--libs options
      Enforce exclusive output options
      Explicitly set --exists as the default option
      Imply --exists when --atleast/exact/max-version passed
      Enforce that only the first --atleast/exact/max-version option honored
      Fix handling of --print/silence-errors for all output options
      Add root /lib* directories to the default -L paths
      Greatly simplify circular Requires checking
      Use the standard pkg-config macros to check for glib
      Merge branch 'flag-order-fixes'
      Remove $host-pkg-config when uninstalling
      Fix srcdir != builddir error in check-debug
      Update NEWS and bump version for release

David Michael (1):
      Include PKG_CHECK_VAR macro for reading variables in .pc files

Michał Sawicz (1):
      Allow ~ through unescaped

Mike Frysinger (1):
      Extend default system library path for libdirs other than lib64
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <>

More information about the pkg-config mailing list