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

La estructura de compilación para un paquete dado a menudo localizará y utilizará bibliotecas requeridas para emplear pkg-config.

Por lo tanto, pkgconfig(foo) es la sentencia verdadera de la dependencia de compilación, y es como debe expresarse en el archivo de especificaciones.

Por razones históricas, muchos paquetes parecen tener una “BuildRequires: foo-devel” predefinida, con el nombre del paquete que actualmente proporciona el módulo pkgconfig requerido. Esto es frágil y menos portable que simplemente expresar la dependencia real. Cuando los nombres de los paquetes cambian, o un módulo pkgconfig requerido es proporcionado posteriormente por un paquete diferente, estas dependencias predefinidas se rompen.

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.