pkg-config mysticism regarding Requires.private

Jeremy Huddleston jeremyhu at apple.com
Sun Oct 31 01:40:09 PDT 2010


Ah... I'm guessing it's because one was built with --enable-indirect-deps ... sorry for the noise ...

It seems that xterm has some trouble building with the recent libXaw and libXft changes which move libs into Requires.private ... but that is an issue with xterm's build system (it was using API from libXmu and fontconfig and only picking up those links from xaw and xft's 'pkg-config --libs').

http://cgit.freedesktop.org/xorg/lib/libXft/commit/?id=8751e341bcc29952b4603e18767ab994653c6b01
http://cgit.freedesktop.org/xorg/lib/libXaw/commit/?id=b6750449f32c07fe277146b55a9f988bfaa3e0d2

Why was the change to remove xmu from xaw7.pc not also done for xaw6.pc?

On Oct 30, 2010, at 16:20, Jeremy Huddleston wrote:

> $ PKG_CONFIG_PATH=/opt/local/lib/pkgconfig /opt/local/bin/pkg-config xft --libs
> -L/opt/local/lib -lXft -lXrender -lfontconfig -lexpat -liconv -lfreetype -lz -lX11 -lxcb -lXau -lXdmcp  
> 
> $ PKG_CONFIG_PATH=/opt/local/lib/pkgconfig /usr/local/bin/pkg-config xft --libs
> -L/opt/local/lib -lXft  
> 
> $ /opt/local/bin/pkg-config --version
> 0.25
> 
> $ /usr/local/bin/pkg-config --version
> 0.25
> 
> $ cat /opt/local/lib/pkgconfig/xft.pc 
> prefix=/opt/local
> exec_prefix=${prefix}
> libdir=${exec_prefix}/lib
> includedir=${prefix}/include
> 
> Name: Xft
> Description: X FreeType library
> Version: 2.2.0
> Requires: xproto
> Requires.private: xrender, fontconfig, freetype2
> Cflags: -I${includedir}
> Libs: -L${libdir} -lXft
> 
> 
> I Added --debug to both and compared the output... it seems that the one in /opt/local is including Requires.private entries and the one in /usr/local isn't.  What is going on here?
> 
> --- opt.out	2010-10-30 16:12:14.000000000 -0700
> +++ usr.out	2010-10-30 16:12:04.000000000 -0700
> @@ -1906,262 +1906,14 @@ Package Xproto has -I/opt/local/include 
> Removing -I/opt/local/include from cflags for xproto
> Adding 'xproto' to list of known packages, returning as package 'xproto'
>   line>Requires.private: xrender, fontconfig, freetype2
> -Looking for package 'xrender'
> -Looking for package 'xrender-uninstalled'
> -Reading 'xrender' from file '/opt/local/lib/pkgconfig/xrender.pc'
> -Parsing package file '/opt/local/lib/pkgconfig/xrender.pc'
> -  line>prefix=/opt/local
> - Variable declaration, 'prefix' has value '/opt/local'
> -  line>exec_prefix=${prefix}
> - Variable declaration, 'exec_prefix' has value '/opt/local'
> -  line>libdir=${exec_prefix}/lib
> - Variable declaration, 'libdir' has value '/opt/local/lib'
> -  line>includedir=${prefix}/include
> - Variable declaration, 'includedir' has value '/opt/local/include'
> -  line>
> -  line>Name: Xrender
> -  line>Description: X Render Library
> -  line>Version: 0.9.6
> -  line>Requires: xproto renderproto >= 0.9 x11
> -Looking for package 'renderproto'
> -Looking for package 'renderproto-uninstalled'
> -Reading 'renderproto' from file '/opt/local/lib/pkgconfig/renderproto.pc'
> -Parsing package file '/opt/local/lib/pkgconfig/renderproto.pc'
> -  line>prefix=/opt/local
> - Variable declaration, 'prefix' has value '/opt/local'
> -  line>exec_prefix=${prefix}
> - Variable declaration, 'exec_prefix' has value '/opt/local'
> -  line>libdir=${exec_prefix}/lib
> - Variable declaration, 'libdir' has value '/opt/local/lib'
> -  line>includedir=${prefix}/include
> - Variable declaration, 'includedir' has value '/opt/local/include'
> -  line> 
> -  line>Name: RenderProto
> -  line>Description: Render extension headers
> -  line>Version: 0.11.1
> -  line>Cflags: -I${includedir}
> -Path position of 'RenderProto' is 1
> -Package RenderProto has -I/opt/local/include in Cflags
> -Removing -I/opt/local/include from cflags for renderproto
> -Adding 'renderproto' to list of known packages, returning as package 'renderproto'
> -Looking for package 'x11'
> -Looking for package 'x11-uninstalled'
> -Reading 'x11' from file '/opt/local/lib/pkgconfig/x11.pc'
> -Parsing package file '/opt/local/lib/pkgconfig/x11.pc'
> -  line>prefix=/opt/local
> - Variable declaration, 'prefix' has value '/opt/local'
> -  line>exec_prefix=${prefix}
> - Variable declaration, 'exec_prefix' has value '/opt/local'
> -  line>libdir=${exec_prefix}/lib
> - Variable declaration, 'libdir' has value '/opt/local/lib'
> -  line>includedir=${prefix}/include
> - Variable declaration, 'includedir' has value '/opt/local/include'
> -  line>
> -  line>xthreadlib=
> - Variable declaration, 'xthreadlib' has value ''
> -  line>
> -  line>Name: X11
> -  line>Description: X Library
> -  line>Version: 1.3.6
> -  line>Requires: xproto kbproto
> -Looking for package 'kbproto'
> -Looking for package 'kbproto-uninstalled'
> -Reading 'kbproto' from file '/opt/local/lib/pkgconfig/kbproto.pc'
> -Parsing package file '/opt/local/lib/pkgconfig/kbproto.pc'
> -  line>prefix=/opt/local
> - Variable declaration, 'prefix' has value '/opt/local'
> -  line>exec_prefix=${prefix}
> - Variable declaration, 'exec_prefix' has value '/opt/local'
> -  line>libdir=${exec_prefix}/lib
> - Variable declaration, 'libdir' has value '/opt/local/lib'
> -  line>includedir=${prefix}/include
> - Variable declaration, 'includedir' has value '/opt/local/include'
> -  line> 
> -  line>Name: KBProto
> -  line>Description: KB extension headers
> -  line>Version: 1.0.5
> -  line>Cflags: -I${includedir}
> -Path position of 'KBProto' is 1
> -Package KBProto has -I/opt/local/include in Cflags
> -Removing -I/opt/local/include from cflags for kbproto
> -Adding 'kbproto' to list of known packages, returning as package 'kbproto'
> -  line>Requires.private: xcb >= 1.1.92
> -Looking for package 'xcb'
> -Looking for package 'xcb-uninstalled'
> -Reading 'xcb' from file '/opt/local/lib/pkgconfig/xcb.pc'
> -Parsing package file '/opt/local/lib/pkgconfig/xcb.pc'
> -  line>prefix=/opt/local
> - Variable declaration, 'prefix' has value '/opt/local'
> -  line>exec_prefix=${prefix}
> - Variable declaration, 'exec_prefix' has value '/opt/local'
> -  line>libdir=${exec_prefix}/lib
> - Variable declaration, 'libdir' has value '/opt/local/lib'
> -  line>includedir=${prefix}/include
> - Variable declaration, 'includedir' has value '/opt/local/include'
> -  line>xcbproto_version=1.6
> - Variable declaration, 'xcbproto_version' has value '1.6'
> -  line>
> -  line>Name: XCB
> -  line>Description: X-protocol C Binding
> -  line>Version: 1.7
> -  line>Requires.private: pthread-stubs xau >= 0.99.2 xdmcp
> -Looking for package 'pthread-stubs'
> -Looking for package 'pthread-stubs-uninstalled'
> -Reading 'pthread-stubs' from file '/opt/local/lib/pkgconfig/pthread-stubs.pc'
> -Parsing package file '/opt/local/lib/pkgconfig/pthread-stubs.pc'
> -  line>prefix=/opt/local
> - Variable declaration, 'prefix' has value '/opt/local'
> -  line>exec_prefix=${prefix}
> - Variable declaration, 'exec_prefix' has value '/opt/local'
> -  line>libdir=${exec_prefix}/lib
> - Variable declaration, 'libdir' has value '/opt/local/lib'
> -  line>
> -  line>Name: pthread stubs
> -  line>Description: Stubs missing from libc for standard pthread functions
> -  line>Version: 0.3
> -  line>Libs: 
> -Path position of 'pthread stubs' is 1
> -Adding 'pthread-stubs' to list of known packages, returning as package 'pthread-stubs'
> -Looking for package 'xau'
> -Looking for package 'xau-uninstalled'
> -Reading 'xau' from file '/opt/local/lib/pkgconfig/xau.pc'
> -Parsing package file '/opt/local/lib/pkgconfig/xau.pc'
> -  line>prefix=/opt/local
> - Variable declaration, 'prefix' has value '/opt/local'
> -  line>exec_prefix=${prefix}
> - Variable declaration, 'exec_prefix' has value '/opt/local'
> -  line>libdir=${exec_prefix}/lib
> - Variable declaration, 'libdir' has value '/opt/local/lib'
> -  line>includedir=${prefix}/include
> - Variable declaration, 'includedir' has value '/opt/local/include'
> -  line>
> -  line>Name: Xau
> -  line>Description: X authorization file management libary
> -  line>Version: 1.0.6
> -  line>Requires: xproto
> -  line>Cflags: -I${includedir}
> -  line>Libs: -L${libdir} -lXau
> -Path position of 'Xau' is 1
> -Package Xau has -I/opt/local/include in Cflags
> -Removing -I/opt/local/include from cflags for xau
> -Adding 'xau' to list of known packages, returning as package 'xau'
> -Looking for package 'xdmcp'
> -Looking for package 'xdmcp-uninstalled'
> -Reading 'xdmcp' from file '/opt/local/lib/pkgconfig/xdmcp.pc'
> -Parsing package file '/opt/local/lib/pkgconfig/xdmcp.pc'
> -  line>prefix=/opt/local
> - Variable declaration, 'prefix' has value '/opt/local'
> -  line>exec_prefix=${prefix}
> - Variable declaration, 'exec_prefix' has value '/opt/local'
> -  line>libdir=${exec_prefix}/lib
> - Variable declaration, 'libdir' has value '/opt/local/lib'
> -  line>includedir=${prefix}/include
> - Variable declaration, 'includedir' has value '/opt/local/include'
> -  line>
> -  line>Name: Xdmcp
> -  line>Description: X Display Manager Control Protocol library
> -  line>Version: 1.1.0
> -  line>Requires: xproto
> -  line>Cflags: -I${includedir}
> -  line>Libs: -L${libdir} -lXdmcp
> -Path position of 'Xdmcp' is 1
> -Package Xdmcp has -I/opt/local/include in Cflags
> -Removing -I/opt/local/include from cflags for xdmcp
> -Adding 'xdmcp' to list of known packages, returning as package 'xdmcp'
> -  line>Libs: -L${libdir} -lxcb
> -  line>Libs.private: 
> -  line>Cflags: -I${includedir}
> -Path position of 'XCB' is 1
> -Package XCB has -I/opt/local/include in Cflags
> -Removing -I/opt/local/include from cflags for xcb
> -Adding 'xcb' to list of known packages, returning as package 'xcb'
> -  line>Cflags: -I${includedir} 
> -  line>Libs: -L${libdir} -lX11
> -  line>Libs.private: 
> -Path position of 'X11' is 1
> -Package X11 has -I/opt/local/include in Cflags
> -Removing -I/opt/local/include from cflags for x11
> -Adding 'x11' to list of known packages, returning as package 'x11'
> -  line>Requires.private: x11
> -  line>Cflags: -I${includedir}
> -  line>Libs: -L${libdir} -lXrender
> -Path position of 'Xrender' is 1
> -Package Xrender has -I/opt/local/include in Cflags
> -Removing -I/opt/local/include from cflags for xrender
> -Adding 'xrender' to list of known packages, returning as package 'xrender'
> -Looking for package 'fontconfig'
> -Looking for package 'fontconfig-uninstalled'
> -Reading 'fontconfig' from file '/opt/local/lib/pkgconfig/fontconfig.pc'
> -Parsing package file '/opt/local/lib/pkgconfig/fontconfig.pc'
> -  line>prefix=/opt/local
> - Variable declaration, 'prefix' has value '/opt/local'
> -  line>exec_prefix=${prefix}
> - Variable declaration, 'exec_prefix' has value '/opt/local'
> -  line>libdir=${exec_prefix}/lib
> - Variable declaration, 'libdir' has value '/opt/local/lib'
> -  line>includedir=${prefix}/include
> - Variable declaration, 'includedir' has value '/opt/local/include'
> -  line>
> -  line>Name: Fontconfig
> -  line>Description: Font configuration and customization library
> -  line>Version: 2.8.0
> -  line>Libs: -L${libdir} -lfontconfig
> -  line>Libs.private:  -lexpat -L/opt/local/lib -lfreetype -lz -liconv
> -  line>Cflags: -I${includedir}
> -Path position of 'Fontconfig' is 1
> -Package Fontconfig has -I/opt/local/include in Cflags
> -Removing -I/opt/local/include from cflags for fontconfig
> -Adding 'fontconfig' to list of known packages, returning as package 'fontconfig'
> -Looking for package 'freetype2'
> -Looking for package 'freetype2-uninstalled'
> -Reading 'freetype2' from file '/opt/local/lib/pkgconfig/freetype2.pc'
> -Parsing package file '/opt/local/lib/pkgconfig/freetype2.pc'
> -  line>prefix=/opt/local
> - Variable declaration, 'prefix' has value '/opt/local'
> -  line>exec_prefix=${prefix}
> - Variable declaration, 'exec_prefix' has value '/opt/local'
> -  line>libdir=${exec_prefix}/lib
> - Variable declaration, 'libdir' has value '/opt/local/lib'
> -  line>includedir=${prefix}/include
> - Variable declaration, 'includedir' has value '/opt/local/include'
> -  line>
> -  line>Name: FreeType 2
> -  line>Description: A free, high-quality, and portable font engine.
> -  line>Version: 12.1.6
> -  line>Requires:
> -  line>Libs: -L${libdir} -lfreetype
> -  line>Libs.private: -lz 
> -  line>Cflags: -I${includedir}/freetype2 -I${includedir}
> -Path position of 'FreeType 2' is 1
> -Package FreeType 2 has -I/opt/local/include in Cflags
> -Removing -I/opt/local/include from cflags for freetype2
> -Adding 'freetype2' to list of known packages, returning as package 'freetype2'
>   line>Cflags: -I${includedir}
>   line>Libs: -L${libdir} -lXft
> Path position of 'Xft' is 1
> Package Xft has -I/opt/local/include in Cflags
> Removing -I/opt/local/include from cflags for xft
> Adding 'xft' to list of known packages, returning as package 'xft'
> - original:  Xft  Xrender  Fontconfig  FreeType 2  Xproto  X11  Xproto  RenderProto  X11  XCB  Xproto  KBProto  pthread stubs  Xau  Xdmcp  Xproto  Xproto  XCB  Xproto  KBProto  pthread stubs  Xau  Xdmcp  Xproto  Xproto 
> - sorted:  Xft  Xrender  Fontconfig  FreeType 2  Xproto  X11  Xproto  RenderProto  X11  XCB  Xproto  KBProto  pthread stubs  Xau  Xdmcp  Xproto  Xproto  XCB  Xproto  KBProto  pthread stubs  Xau  Xdmcp  Xproto  Xproto 
> - original:  Xft  Xrender  Fontconfig  FreeType 2  Xproto  X11  Xproto  RenderProto  X11  XCB  Xproto  KBProto  pthread stubs  Xau  Xdmcp  Xproto  Xproto  XCB  Xproto  KBProto  pthread stubs  Xau  Xdmcp  Xproto  Xproto 
> - sorted:  Xft  Xrender  Fontconfig  FreeType 2  Xproto  X11  Xproto  RenderProto  X11  XCB  Xproto  KBProto  pthread stubs  Xau  Xdmcp  Xproto  Xproto  XCB  Xproto  KBProto  pthread stubs  Xau  Xdmcp  Xproto  Xproto 
> - removing duplicate "-L/opt/local/lib"
> - removing duplicate "-L/opt/local/lib"
> - removing duplicate "-L/opt/local/lib"
> - removing duplicate "-L/opt/local/lib"
> - removing duplicate "-L/opt/local/lib"
> - removing duplicate "-L/opt/local/lib"
> - removing duplicate "-L/opt/local/lib"
> - removing duplicate "-L/opt/local/lib"
> - removing duplicate "-L/opt/local/lib"
> - removing duplicate "-L/opt/local/lib"
> - removing duplicate "-L/opt/local/lib"
> - removing duplicate "-L/opt/local/lib"
> - removing duplicate (from back) "-lXdmcp"
> - removing duplicate (from back) "-lXau"
> - removing duplicate (from back) "-lxcb"
> - removing duplicate (from back) "-lX11"
> - removing duplicate (from back) "-lz"
> - removing duplicate (from back) "-lfreetype"
> --L/opt/local/lib -lXft -lXrender -lfontconfig -lexpat -liconv -lfreetype -lz -lX11 -lxcb -lXau -lXdmcp  
> + original:  Xft  Xproto 
> + sorted:  Xft  Xproto 
> + original:  Xft  Xproto 
> + sorted:  Xft  Xproto 
> +-L/opt/local/lib -lXft 
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel



More information about the xorg-devel mailing list