diff mbox

[2/2] configure.ac: Do not include `x11-xcb`, `xcb-dri2` and `xcb-aux` in `XVMCLIB`

Message ID 1359842415.5545.7.camel@mattotaupa (mailing list archive)
State New, archived
Headers show

Commit Message

Paul Menzel Feb. 2, 2013, 10 p.m. UTC
Date: Sat, 2 Feb 2013 20:33:36 +0100

Building the package under Debian Sid/unstable, `dh_shlibdeps` informs
that `libI810XvMC.so.1.0.0` does not need to be linked against
`libX11-xcb.so.1`, `libxcb-dri2.so.0`, `libxcb-util.so.0` or
`libxcb.so.1` [1].

        $ debuild -b -us -uc
        […]
        make[1]: Entering directory `/src/xserver-xorg-video-intel'
        dh_shlibdeps -- --warnings=6
        dpkg-shlibdeps: Warnung: debian/xserver-xorg-video-intel/usr/lib/libI810XvMC.so.1.0.0 sollte nicht gegen libX11-xcb.so.1 gelinkt werden (es verwendet keines der Bibliotheks-Symbole)
        dpkg-shlibdeps: Warnung: debian/xserver-xorg-video-intel/usr/lib/libI810XvMC.so.1.0.0 sollte nicht gegen libxcb-dri2.so.0 gelinkt werden (es verwendet keines der Bibliotheks-Symbole)
        dpkg-shlibdeps: Warnung: debian/xserver-xorg-video-intel/usr/lib/libI810XvMC.so.1.0.0 sollte nicht gegen libxcb-util.so.0 gelinkt werden (es verwendet keines der Bibliotheks-Symbole)
        dpkg-shlibdeps: Warnung: debian/xserver-xorg-video-intel/usr/lib/libI810XvMC.so.1.0.0 sollte nicht gegen libxcb.so.1 gelinkt werden (es verwendet keines der Bibliotheks-Symbole)
        make[1]: Leaving directory `/src/xserver-xorg-video-intel'
        […]

Not populating `XVMCLIB` with `x11-xcb`, `xcb-dri2` and `xcb-aux` makes
the warnings go away and the libraries are still built without any
issues.

        make[1]: Entering directory `/src/xserver-xorg-video-intel'
        dh_shlibdeps -- --warnings=6
        make[1]: Leaving directory `/src/xserver-xorg-video-intel'
           dh_installdeb -O--builddirectory=build/
           dh_xsf_substvars -O--builddirectory=build/
           dh_gencontrol -O--builddirectory=build/
        dpkg-gencontrol: Warnung: Feld Depends von Paket xserver-xorg-video-intel-dbg: unbekannte Substitutionsvariable ${shlibs:Depends}
           dh_md5sums -O--builddirectory=build/
           dh_builddeb -O--builddirectory=build/
        dpkg-deb: Paket »xserver-xorg-video-intel« wird in »../xserver-xorg-video-intel_2.19.0-6.1_i386.deb« gebaut.
        dpkg-deb: Paket »xserver-xorg-video-intel-dbg« wird in »../xserver-xorg-video-intel-dbg_2.19.0-6.1_i386.deb« gebaut.
         dpkg-genchanges -b >../xserver-xorg-video-intel_2.19.0-6.1_i386.changes
        dpkg-genchanges: rein binärer Upload - es ist kein Quellcode hinzugefügt
         dpkg-source --after-build xserver-xorg-video-intel
        dpkg-buildpackage: Binärpaket(e) hochzuladen (keine Quellen enthalten)
        Now running lintian...
        W: xserver-xorg-video-intel: hardening-no-relro usr/lib/libI810XvMC.so.1.0.0
        W: xserver-xorg-video-intel: hardening-no-fortify-functions usr/lib/libI810XvMC.so.1.0.0
        W: xserver-xorg-video-intel: hardening-no-relro usr/lib/libIntelXvMC.so.1.0.0
        W: xserver-xorg-video-intel: hardening-no-fortify-functions usr/lib/libIntelXvMC.so.1.0.0
        W: xserver-xorg-video-intel: hardening-no-relro usr/lib/xorg/modules/drivers/intel_drv.so
        W: xserver-xorg-video-intel: hardening-no-fortify-functions usr/lib/xorg/modules/drivers/intel_drv.so
        N: 1 tag overridden (1 warning)
        Finished running lintian.

[1] https://buildd.debian.org/status/fetch.php?pkg=xserver-xorg-video-intel&arch=i386&ver=2%3A2.19.0-6&stamp=1347825458

Signed-off-by: Paul Menzel <paulepanter@users.sourceforge.net>
---
I hope there is not a corner case where applying this patch will result
in built errors.

 configure.ac |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Chris Wilson Feb. 3, 2013, 9:32 a.m. UTC | #1
The first patch looks fine (and I've applied it, thanks), but I'm not
convinced this one is safe.

On Sat, Feb 02, 2013 at 11:00:15PM +0100, Paul Menzel wrote:
> Date: Sat, 2 Feb 2013 20:33:36 +0100
> 
> Building the package under Debian Sid/unstable, `dh_shlibdeps` informs
> that `libI810XvMC.so.1.0.0` does not need to be linked against
> `libX11-xcb.so.1`, `libxcb-dri2.so.0`, `libxcb-util.so.0` or
> `libxcb.so.1` [1].
> 
>         $ debuild -b -us -uc
>         […]
>         make[1]: Entering directory `/src/xserver-xorg-video-intel'
>         dh_shlibdeps -- --warnings=6
>         dpkg-shlibdeps: Warnung: debian/xserver-xorg-video-intel/usr/lib/libI810XvMC.so.1.0.0 sollte nicht gegen libX11-xcb.so.1 gelinkt werden (es verwendet keines der Bibliotheks-Symbole)
>         dpkg-shlibdeps: Warnung: debian/xserver-xorg-video-intel/usr/lib/libI810XvMC.so.1.0.0 sollte nicht gegen libxcb-dri2.so.0 gelinkt werden (es verwendet keines der Bibliotheks-Symbole)
>         dpkg-shlibdeps: Warnung: debian/xserver-xorg-video-intel/usr/lib/libI810XvMC.so.1.0.0 sollte nicht gegen libxcb-util.so.0 gelinkt werden (es verwendet keines der Bibliotheks-Symbole)
>         dpkg-shlibdeps: Warnung: debian/xserver-xorg-video-intel/usr/lib/libI810XvMC.so.1.0.0 sollte nicht gegen libxcb.so.1 gelinkt werden (es verwendet keines der Bibliotheks-Symbole)
>         make[1]: Leaving directory `/src/xserver-xorg-video-intel'
>         […]
> 
> Not populating `XVMCLIB` with `x11-xcb`, `xcb-dri2` and `xcb-aux` makes
> the warnings go away and the libraries are still built without any
> issues.

Notice that the warning is only generated for I810XvMC and not for
IntelXvMC which does use the DRI2 interface to pass along video objects.
Since XVMCLIB is shared between the two we would need to split out the
I810XvMC dependencies from the IntelXvMC set first.
-Chris
Paul Menzel Feb. 3, 2013, 12:29 p.m. UTC | #2
Am Sonntag, den 03.02.2013, 09:32 +0000 schrieb Chris Wilson:
> The first patch looks fine (and I've applied it, thanks),

Thank you for the quick reaction.

> but I'm not convinced this one is safe.
> 
> On Sat, Feb 02, 2013 at 11:00:15PM +0100, Paul Menzel wrote:
> > Date: Sat, 2 Feb 2013 20:33:36 +0100
> > 
> > Building the package under Debian Sid/unstable, `dh_shlibdeps` informs
> > that `libI810XvMC.so.1.0.0` does not need to be linked against
> > `libX11-xcb.so.1`, `libxcb-dri2.so.0`, `libxcb-util.so.0` or
> > `libxcb.so.1` [1].
> > 
> >         $ debuild -b -us -uc
> >         […]
> >         make[1]: Entering directory `/src/xserver-xorg-video-intel'
> >         dh_shlibdeps -- --warnings=6
> >         dpkg-shlibdeps: Warnung: debian/xserver-xorg-video-intel/usr/lib/libI810XvMC.so.1.0.0 sollte nicht gegen libX11-xcb.so.1 gelinkt werden (es verwendet keines der Bibliotheks-Symbole)
> >         dpkg-shlibdeps: Warnung: debian/xserver-xorg-video-intel/usr/lib/libI810XvMC.so.1.0.0 sollte nicht gegen libxcb-dri2.so.0 gelinkt werden (es verwendet keines der Bibliotheks-Symbole)
> >         dpkg-shlibdeps: Warnung: debian/xserver-xorg-video-intel/usr/lib/libI810XvMC.so.1.0.0 sollte nicht gegen libxcb-util.so.0 gelinkt werden (es verwendet keines der Bibliotheks-Symbole)
> >         dpkg-shlibdeps: Warnung: debian/xserver-xorg-video-intel/usr/lib/libI810XvMC.so.1.0.0 sollte nicht gegen libxcb.so.1 gelinkt werden (es verwendet keines der Bibliotheks-Symbole)
> >         make[1]: Leaving directory `/src/xserver-xorg-video-intel'
> >         […]
> > 
> > Not populating `XVMCLIB` with `x11-xcb`, `xcb-dri2` and `xcb-aux` makes
> > the warnings go away and the libraries are still built without any
> > issues.
> 
> Notice that the warning is only generated for I810XvMC and not for
> IntelXvMC which does use the DRI2 interface to pass along video objects.

I was surprised too that no error was generated. Do you have any idea
why compilations succeeds?

> Since XVMCLIB is shared between the two we would need to split out the
> I810XvMC dependencies from the IntelXvMC set first.


Thanks,

Paul
Julien Cristau Feb. 4, 2013, 9:28 p.m. UTC | #3
On Sun, Feb  3, 2013 at 13:29:04 +0100, Paul Menzel wrote:

> I was surprised too that no error was generated. Do you have any idea
> why compilations succeeds?
> 
Fails to build here with
../../../src/xvmc/intel_xvmc.c:29:25: fatal error: xcb/xcb_aux.h: No
such file or directory

Also, shared libraries, as opposed to executable binaries, are allowed
to have undefined symbols.  Try this:

-libIntelXvMC_la_LDFLAGS = -version-number 1:0:0
+libIntelXvMC_la_LDFLAGS = -version-number 1:0:0 -Wl,-z,defs

Cheers,
Julien
Paul Menzel Feb. 5, 2013, 11:42 p.m. UTC | #4
Am Montag, den 04.02.2013, 22:28 +0100 schrieb Julien Cristau:
> On Sun, Feb  3, 2013 at 13:29:04 +0100, Paul Menzel wrote:
> 
> > I was surprised too that no error was generated. Do you have any idea
> > why compilations succeeds?
>
> Fails to build here with
> ../../../src/xvmc/intel_xvmc.c:29:25: fatal error: xcb/xcb_aux.h: No such file or directory

I wonder where our build environments differ.

> Also, shared libraries, as opposed to executable binaries, are allowed
> to have undefined symbols.

Sorry, as I cannot range in this comment, could you please elaborate.

> Try this:
> 
> -libIntelXvMC_la_LDFLAGS = -version-number 1:0:0
> +libIntelXvMC_la_LDFLAGS = -version-number 1:0:0 -Wl,-z,defs

Thanks. With these flags/switches the build indeed fails. (Reading `man
ld` was also helpful to me.)

        […]
        CC     intel_batchbuffer.lo
        CCLD   libIntelXvMC.la
        .libs/intel_xvmc.o: In function `XvMCCreateContext':
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:282: undefined reference to `XFree'
        .libs/intel_xvmc.o: In function `dri2_connect':
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:131: undefined reference to `XGetXCBConnection'
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:137: undefined reference to `xcb_aux_get_screen'
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:139: undefined reference to `xcb_dri2_id'
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:139: undefined reference to `xcb_get_extension_dat
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:147: undefined reference to `xcb_dri2_query_versio
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:148: undefined reference to `xcb_dri2_connect'
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:150: undefined reference to `xcb_dri2_query_versio
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:152: undefined reference to `xcb_dri2_connect_repl
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:160: undefined reference to `xcb_dri2_connect_devi
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:166: undefined reference to `xcb_dri2_connect_devi
        .libs/intel_xvmc.o: In function `XvMCCreateContext':
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:301: undefined reference to `XFree'
        .libs/intel_xvmc.o: In function `dri2_connect':
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:181: undefined reference to `xcb_dri2_authenticate
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:182: undefined reference to `xcb_dri2_authenticate
        .libs/intel_xvmc.o: In function `XvMCCreateContext':
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:323: undefined reference to `XFree'
        .libs/intel_xvmc.o: In function `XvMCCreateSurface':
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:407: undefined reference to `XFree'
        .libs/intel_xvmc.o: In function `XvMCDestroySurface':
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:458: undefined reference to `XFree'
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:460: undefined reference to `XFreeGC'
        .libs/intel_xvmc.o: In function `XvMCPutSurface':
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:651: undefined reference to `XFreeGC'
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:652: undefined reference to `XCreateGC'
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/intel_xvmc.c:648: undefined reference to `XCreateGC'
        .libs/i915_xvmc.o: In function `i915_xvmc_mc_create_context':
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/i915_xvmc.c:915: undefined reference to `XFree'
        /src/xserver-xorg-video-intel/build/src/xvmc/../../../src/xvmc/i915_xvmc.c:933: undefined reference to `XFree'
        collect2: error: ld returned 1 exit status
        make[5]: *** [libIntelXvMC.la] Fehler 1
        […]


Thanks,

Paul
diff mbox

Patch

diff --git a/configure.ac b/configure.ac
index e6ab9d0..0652822 100644
--- a/configure.ac
+++ b/configure.ac
@@ -404,7 +404,7 @@  AC_MSG_RESULT([$DRI2])
 
 if test "$XVMC" = yes; then
 	PKG_CHECK_MODULES(XVMCLIB,
-			  [xvmc dri2proto x11-xcb xcb-dri2 xcb-aux],
+			  [xvmc dri2proto],
 			  [XVMC=yes], [XVMC=no])
 fi
 AC_MSG_CHECKING([whether to include XvMC support])