BuildRequires: pkgconfig(foo) vs. foo-devel

Los paquetes de Fedora los cuales empleen pkg-config para compilar frente a biblioteca (p.ej. 'algo') en la cual dependen, EXPRESARÍA sus dependencias de compilación correctamente como pkgconfig(algo).

Rationale

The build infrastructure for a given package will often locate and use required libraries by using pkg-config.

Thus, pkgconfig(foo) is the true statement of the build dependency, and is how it should be expressed in the spec file.

For historical reasons, many packages seem to have a hard-coded “BuildRequires: foo-devel”, with the name of the package which currently provides the required pkgconfig module. This is fragile and less portable than simply expressing the real dependency. Where package names change, and/or a required pkgconfig module is later provided by a different package, these hard-coded dependencies break.

Tenga en cuenta que seguirá siendo aceptable solicitar paquetes específicos por nombre si son necesarios por alguna razón distinto a un módulo pkg-config que proporcionan.

Ejemplo

Packages which build against libproxy should contain the following:

BuildRequires: pkgconfig(libproxy-1.0)
  1. y no lo siguiente:

BuildRequires: libproxy-devel

De esta manera, si alguna vez se proporciona el módulo pkgconfig libproxy-1.0.pc desde un paquete con un nombre diferente (como por ejemplo PacRunner una vez que se su completa integración, o un paquete de compatibilidad con versiones anteriores ‘libproxy1’ como sucedió con varias otras bibliotecas en el pasado), la dependencia seguirá siendo correcta.