[Xcb] [PATCH] Move internal/private dependencies to Requires.private

Uli Schlachter psychon at znc.in
Tue Sep 16 06:52:24 PDT 2014


Hi everyone,

Am 05.09.2014 um 02:46 schrieb Emil Velikov:
> Program using the xcb sub-modules has indirect compile and runtime
> dependency of core xcb. To ensure this out we currently list xcb in
> the Requires field of the pkg-config files. While this provides all
> the required dependencies for successful compilation this causes
> over-linking and hides potential linking miss-use against the xcb modules.
> 
> By moving to Requires.private we retain the compilation and runtime
> compatibility and avoids any runtime problems.
> 
> Cc: Keith Packard <keithp at keithp.com>
> Cc: Alan Coopersmith <alan.coopersmith at oracle.com>
> References: http://people.freedesktop.org/~dbn/pkg-config-guide.html#faq
> References: https://wiki.mageia.org/en/Overlinking_issues_in_packaging
> References: http://err.no/personal/blog/2008/Mar/25
> Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
> ---

I don't have the time to look at this too closely (thesis deadline...), but the
idea and the earlier discussion somewhere on this list sound good. If someone
asks pkg-config for xcb-renderutil, they should just get that library and not
all of its dependencies.

If no one objects (Ran?), I'll push this in a couple of days based on Julien's
review.

Cheers,
Uli

> 
> Hello gents,
> 
> Please keep me in the CC list as I'm not subscribed to the list
> 
> -Emil
> 
>  check-pc-requires     | 4 ++--
>  xcb-composite.pc.in   | 2 +-
>  xcb-damage.pc.in      | 2 +-
>  xcb-dpms.pc.in        | 2 +-
>  xcb-dri2.pc.in        | 2 +-
>  xcb-dri3.pc.in        | 2 +-
>  xcb-glx.pc.in         | 2 +-
>  xcb-present.pc.in     | 2 +-
>  xcb-randr.pc.in       | 2 +-
>  xcb-record.pc.in      | 2 +-
>  xcb-render.pc.in      | 2 +-
>  xcb-res.pc.in         | 2 +-
>  xcb-screensaver.pc.in | 2 +-
>  xcb-shape.pc.in       | 2 +-
>  xcb-shm.pc.in         | 2 +-
>  xcb-sync.pc.in        | 2 +-
>  xcb-xevie.pc.in       | 2 +-
>  xcb-xf86dri.pc.in     | 2 +-
>  xcb-xfixes.pc.in      | 2 +-
>  xcb-xinerama.pc.in    | 2 +-
>  xcb-xinput.pc.in      | 2 +-
>  xcb-xkb.pc.in         | 2 +-
>  xcb-xprint.pc.in      | 2 +-
>  xcb-xselinux.pc.in    | 2 +-
>  xcb-xtest.pc.in       | 2 +-
>  xcb-xv.pc.in          | 2 +-
>  xcb-xvmc.pc.in        | 2 +-
>  27 files changed, 28 insertions(+), 28 deletions(-)
> 
> diff --git a/check-pc-requires b/check-pc-requires
> index 0fd9c65..063356f 100755
> --- a/check-pc-requires
> +++ b/check-pc-requires
> @@ -23,7 +23,7 @@ for inc in src/*.h; do
>  		included=`grep '# *include' $inc |
>  			sed -e 's/[^<"]*[<"]//' -e 's/[>"]//' |
>  			grep -v 'xcb.h\|xproto.h'`
> -		requires=`grep '^Requires:' $pcin`
> +		requires=`grep '^Requires.private:' $pcin`
>  		missing=""
>  		for i in $included; do
>  			ibase=`basename $i .h`
> @@ -58,7 +58,7 @@ for inc in src/*.h; do
>  		*)
>  			if [ "$fix" = "y" ]; then
>  			    echo $package adding dependency on $missing
> -			    sed -i '/^Requires:/s/$/ '"$missing"'/' $pcin
> +			    sed -i '/^Requires.private:/s/$/ '"$missing"'/' $pcin
>  			else
>  			    echo $package missing $missing
>  			    status=1
> diff --git a/xcb-composite.pc.in b/xcb-composite.pc.in
> index 02d49b0..b9b74c2 100644
> --- a/xcb-composite.pc.in
> +++ b/xcb-composite.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB Composite
>  Description: XCB Composite Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb xcb-xfixes
> +Requires.private: xcb xcb-xfixes
>  Libs: -L${libdir} -lxcb-composite
>  Cflags: -I${includedir}
> diff --git a/xcb-damage.pc.in b/xcb-damage.pc.in
> index c4bc599..3fb46b7 100644
> --- a/xcb-damage.pc.in
> +++ b/xcb-damage.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB Damage
>  Description: XCB Damage Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb xcb-xfixes
> +Requires.private: xcb xcb-xfixes
>  Libs: -L${libdir} -lxcb-damage
>  Cflags: -I${includedir}
> diff --git a/xcb-dpms.pc.in b/xcb-dpms.pc.in
> index 838a054..281861c 100644
> --- a/xcb-dpms.pc.in
> +++ b/xcb-dpms.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB DPMS
>  Description: XCB DPMS Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb
> +Requires.private: xcb
>  Libs: -L${libdir} -lxcb-dpms
>  Cflags: -I${includedir}
> diff --git a/xcb-dri2.pc.in b/xcb-dri2.pc.in
> index a9944df..fdb188b 100644
> --- a/xcb-dri2.pc.in
> +++ b/xcb-dri2.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB DRI2
>  Description: XCB DRI2 Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb
> +Requires.private: xcb
>  Libs: -L${libdir} -lxcb-dri2
>  Cflags: -I${includedir}
> diff --git a/xcb-dri3.pc.in b/xcb-dri3.pc.in
> index 0eb7390..befe11e 100644
> --- a/xcb-dri3.pc.in
> +++ b/xcb-dri3.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB DRI3
>  Description: XCB DRI3 Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb
> +Requires.private: xcb
>  Libs: -L${libdir} -lxcb-dri3
>  Cflags: -I${includedir}
> diff --git a/xcb-glx.pc.in b/xcb-glx.pc.in
> index bbd4126..79805ef 100644
> --- a/xcb-glx.pc.in
> +++ b/xcb-glx.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB GLX
>  Description: XCB GLX Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb
> +Requires.private: xcb
>  Libs: -L${libdir} -lxcb-glx
>  Cflags: -I${includedir}
> diff --git a/xcb-present.pc.in b/xcb-present.pc.in
> index e2eccc4..2e0cff8 100644
> --- a/xcb-present.pc.in
> +++ b/xcb-present.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB Present
>  Description: XCB Present Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb xcb-randr xcb-xfixes xcb-sync
> +Requires.private: xcb xcb-randr xcb-xfixes xcb-sync
>  Libs: -L${libdir} -lxcb-present
>  Cflags: -I${includedir}
> diff --git a/xcb-randr.pc.in b/xcb-randr.pc.in
> index 09c3d12..4c0de13 100644
> --- a/xcb-randr.pc.in
> +++ b/xcb-randr.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB RandR
>  Description: XCB RandR Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb xcb-render
> +Requires.private: xcb xcb-render
>  Libs: -L${libdir} -lxcb-randr
>  Cflags: -I${includedir}
> diff --git a/xcb-record.pc.in b/xcb-record.pc.in
> index 689f098..b441c9a 100644
> --- a/xcb-record.pc.in
> +++ b/xcb-record.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB Record
>  Description: XCB Record Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb
> +Requires.private: xcb
>  Libs: -L${libdir} -lxcb-record
>  Cflags: -I${includedir}
> diff --git a/xcb-render.pc.in b/xcb-render.pc.in
> index c3b050a..9ad543e 100644
> --- a/xcb-render.pc.in
> +++ b/xcb-render.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB Render
>  Description: XCB Render Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb
> +Requires.private: xcb
>  Libs: -L${libdir} -lxcb-render
>  Cflags: -I${includedir}
> diff --git a/xcb-res.pc.in b/xcb-res.pc.in
> index 62dbab6..1f2889d 100644
> --- a/xcb-res.pc.in
> +++ b/xcb-res.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB Res
>  Description: XCB X-Resource Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb
> +Requires.private: xcb
>  Libs: -L${libdir} -lxcb-res
>  Cflags: -I${includedir}
> diff --git a/xcb-screensaver.pc.in b/xcb-screensaver.pc.in
> index ba3f8ec..1209b20 100644
> --- a/xcb-screensaver.pc.in
> +++ b/xcb-screensaver.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB Screensaver
>  Description: XCB Screensaver Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb
> +Requires.private: xcb
>  Libs: -L${libdir} -lxcb-screensaver
>  Cflags: -I${includedir}
> diff --git a/xcb-shape.pc.in b/xcb-shape.pc.in
> index 880204d..09637b4 100644
> --- a/xcb-shape.pc.in
> +++ b/xcb-shape.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB Shape
>  Description: XCB Shape Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb
> +Requires.private: xcb
>  Libs: -L${libdir} -lxcb-shape
>  Cflags: -I${includedir}
> diff --git a/xcb-shm.pc.in b/xcb-shm.pc.in
> index 9256bf0..47c193b 100644
> --- a/xcb-shm.pc.in
> +++ b/xcb-shm.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB Shm
>  Description: XCB Shm Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb
> +Requires.private: xcb
>  Libs: -L${libdir} -lxcb-shm
>  Cflags: -I${includedir}
> diff --git a/xcb-sync.pc.in b/xcb-sync.pc.in
> index ead76d1..7a4c315 100644
> --- a/xcb-sync.pc.in
> +++ b/xcb-sync.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB Sync
>  Description: XCB Sync Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb
> +Requires.private: xcb
>  Libs: -L${libdir} -lxcb-sync
>  Cflags: -I${includedir}
> diff --git a/xcb-xevie.pc.in b/xcb-xevie.pc.in
> index 0aa3e02..dc4fee4 100644
> --- a/xcb-xevie.pc.in
> +++ b/xcb-xevie.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB Xevie
>  Description: XCB Xevie Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb
> +Requires.private: xcb
>  Libs: -L${libdir} -lxcb-xevie
>  Cflags: -I${includedir}
> diff --git a/xcb-xf86dri.pc.in b/xcb-xf86dri.pc.in
> index f3f2980..87c93d5 100644
> --- a/xcb-xf86dri.pc.in
> +++ b/xcb-xf86dri.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB XFree86-DRI
>  Description: XCB XFree86-DRI Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb
> +Requires.private: xcb
>  Libs: -L${libdir} -lxcb-xf86dri
>  Cflags: -I${includedir}
> diff --git a/xcb-xfixes.pc.in b/xcb-xfixes.pc.in
> index 93eafda..2ebb9cf 100644
> --- a/xcb-xfixes.pc.in
> +++ b/xcb-xfixes.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB XFixes
>  Description: XCB XFixes Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb xcb-render xcb-shape
> +Requires.private: xcb xcb-render xcb-shape
>  Libs: -L${libdir} -lxcb-xfixes
>  Cflags: -I${includedir}
> diff --git a/xcb-xinerama.pc.in b/xcb-xinerama.pc.in
> index c4775f9..abc3012 100644
> --- a/xcb-xinerama.pc.in
> +++ b/xcb-xinerama.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB Xinerama
>  Description: XCB Xinerama Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb
> +Requires.private: xcb
>  Libs: -L${libdir} -lxcb-xinerama
>  Cflags: -I${includedir}
> diff --git a/xcb-xinput.pc.in b/xcb-xinput.pc.in
> index ff34ab4..1f1bb27 100644
> --- a/xcb-xinput.pc.in
> +++ b/xcb-xinput.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB XInput
>  Description: XCB XInput Extension (EXPERIMENTAL)
>  Version: @PACKAGE_VERSION@
> -Requires: xcb xcb-xfixes
> +Requires.private: xcb xcb-xfixes
>  Libs: -L${libdir} -lxcb-xinput
>  Cflags: -I${includedir}
> diff --git a/xcb-xkb.pc.in b/xcb-xkb.pc.in
> index 6ed0035..d5b1bad 100644
> --- a/xcb-xkb.pc.in
> +++ b/xcb-xkb.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB XKB
>  Description: XCB Keyboard Extension (EXPERIMENTAL)
>  Version: @PACKAGE_VERSION@
> -Requires: xcb
> +Requires.private: xcb
>  Libs: -L${libdir} -lxcb-xkb
>  Cflags: -I${includedir}
> diff --git a/xcb-xprint.pc.in b/xcb-xprint.pc.in
> index b5275d5..7ac65f6 100644
> --- a/xcb-xprint.pc.in
> +++ b/xcb-xprint.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB Xprint
>  Description: XCB Xprint Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb
> +Requires.private: xcb
>  Libs: -L${libdir} -lxcb-xprint
>  Cflags: -I${includedir}
> diff --git a/xcb-xselinux.pc.in b/xcb-xselinux.pc.in
> index 6a71f73..0f86a93 100644
> --- a/xcb-xselinux.pc.in
> +++ b/xcb-xselinux.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB SELinux
>  Description: XCB SELinux Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb
> +Requires.private: xcb
>  Libs: -L${libdir} -lxcb-xselinux
>  Cflags: -I${includedir}
> diff --git a/xcb-xtest.pc.in b/xcb-xtest.pc.in
> index 886c4dc..9961152 100644
> --- a/xcb-xtest.pc.in
> +++ b/xcb-xtest.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB XTEST
>  Description: XCB XTEST Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb
> +Requires.private: xcb
>  Libs: -L${libdir} -lxcb-xtest
>  Cflags: -I${includedir}
> diff --git a/xcb-xv.pc.in b/xcb-xv.pc.in
> index f447613..f31de1a 100644
> --- a/xcb-xv.pc.in
> +++ b/xcb-xv.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB Xv
>  Description: XCB Xv Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb xcb-shm
> +Requires.private: xcb xcb-shm
>  Libs: -L${libdir} -lxcb-xv
>  Cflags: -I${includedir}
> diff --git a/xcb-xvmc.pc.in b/xcb-xvmc.pc.in
> index 95bf4ef..93c51a9 100644
> --- a/xcb-xvmc.pc.in
> +++ b/xcb-xvmc.pc.in
> @@ -6,6 +6,6 @@ includedir=@includedir@
>  Name: XCB XvMC
>  Description: XCB XvMC Extension
>  Version: @PACKAGE_VERSION@
> -Requires: xcb xcb-xv
> +Requires.private: xcb xcb-xv
>  Libs: -L${libdir} -lxcb-xvmc
>  Cflags: -I${includedir}
> 


-- 
"In the beginning the Universe was created. This has made a lot of
 people very angry and has been widely regarded as a bad move."


More information about the Xcb mailing list