From Fedora Project Wiki

< Changes

Revision as of 16:07, 3 January 2017 by Ignatenkobrain (talk | contribs) (style fixes)

pkgconf as system pkg-config implementation

Summary

This change switches Fedora's system-wide/default pkg-config implementation to pkgconf, a new implementation of pkg-config that provides a stable library ABI/API for integrating into applications and better support for handling .pc files.

Owner

Current status

  • Targeted release: Fedora 26
  • Last updated: 2017-01-03
  • Tracker bug: <will be assigned by the Wrangler>

Detailed Description

pkgconf is a newer, actively maintained implementation of pkg-config that supports more aspects of the pkg-config file specification and provides a library interface that applications can use to incorporate intelligent handling of pkg-config files into themselves (such as build file generators, IDEs, and compilers). Through its pkg-config compatibility interface (activated when it is run as "pkg-config"), it also can completely replace the original implementation. This change involves enabling the pkgconf-pkg-config subpackage that provides this compatibility interface in Rawhide, and having it obsolete+provide the pkgconfig package so that it is the system implementation of pkg-config for the distribution.

Benefit to Fedora

Fedora benefits from switching to pkgconf by utilizing a more complete implementation of pkg-config that handles aspects of .pc files that pkg-config does not. For example, Provides rules and Cflags.private rules are supported, and pkgconf has a better (and less costly) dependency resolver for .pc files. The lack of dependency on glib2 also means that bootstrapping new architectures will be simpler, since there won't be a cyclic dependency to break (glib2 -> pkgconfig -> glib2) that is required for bootstrapping the core of Fedora. More details on the differences can be found at http://pkgconf.org/features.html

Scope

  • Proposal owners:

1. Enable pkgconfig compatibility layer in pkgconf package (which is in conflict with pkgconfig)

2. Ensure that it doesn't break major number of builds during mass-rebuild

3. Fix issues

  • Other developers:
    • Retire pkgconfig package (Matthias Clasen) if everything went well right after mass-rebuild and fixage of all broken packages due to this change
  • Release engineering: Mass rebuild is needed (to ensure that pkgconf implementation is used)
  • Policies and guidelines: N/A (not a System Wide Change)
  • Trademark approval: N/A (not needed for this Change)

Upgrade/compatibility impact

pkgconf supports all features of pkgconfig and even more, though there are some minor changes in CLI options and changes in output which it produces.

How To Test

Before change is done, try export PKG_CONFIG=/usr/bin/pkgconf and try to build your favorite $package (most of buildsystems respect this environment variable).

User Experience

N/A (not a System Wide Change)

Dependencies

None.

Contingency Plan

  • Contingency mechanism: Disable pkgconf-pkg-config compatibility layer (Igor Gnatenko/Neal Gompa will do it)
  • Contingency deadline: Mass rebuild (if main system packages / most of packages FTBFS - revert change immediately)
  • Blocks release? Yes
  • Blocks product? None

Documentation

N/A (not a System Wide Change)

Release Notes