Patchwork [1/2] pulseaudio: fix compilation on RHEL-5.8 64bit machine

login
register
mail settings
Submitter jackie huang
Date Nov. 22, 2012, 6:46 a.m.
Message ID <6ef7001b467caa7cebe92e399a94a9680265efb8.1353564658.git.jackie.huang@windriver.com>
Download mbox | patch
Permalink /patch/39451/
State New
Headers show

Comments

jackie huang - Nov. 22, 2012, 6:46 a.m.
From: Jackie Huang <jackie.huang@windriver.com>

This fixes the following issue when pulseaudio is built
with the oe-core toolchain:

../bitbake_build/tmp/sysroots/qemux86-64/usr/lib64/libgdk-x11-2.0.so: undefined reference to `XRRGetOutputInfo'
../bitbake_build/tmp/sysroots/qemux86-64/usr/lib64/libgdk-x11-2.0.so: undefined reference to `XRRGetScreenResourcesCurrent'
../bitbake_build/tmp/sysroots/qemux86-64/usr/lib64/libgdk-x11-2.0.so: undefined reference to `XRRFreeOutputInfo'
../bitbake_build/tmp/sysroots/qemux86-64/usr/lib64/libgdk-x11-2.0.so: undefined reference to `XRRFreeScreenResources'
../bitbake_build/tmp/sysroots/qemux86-64/usr/lib64/libgdk-x11-2.0.so: undefined reference to `XRRGetOutputPrimary'
../bitbake_build/tmp/sysroots/qemux86-64/usr/lib64/libgdk-x11-2.0.so: undefined reference to `XRRFreeCrtcInfo'
../bitbake_build/tmp/sysroots/qemux86-64/usr/lib64/libgdk-x11-2.0.so: undefined reference to `XRRGetCrtcInfo'
   collect2: ld returned 1 exit status

Signed-off-by: Aws Ismail <aws.ismail@windriver.com>
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
---
 ...ulseaudio-fix-compilation-on-RHEL-machine.patch |   35 ++++++++++++++++++++
 .../pulseaudio/pulseaudio_2.1.bb                   |    6 ++-
 2 files changed, 39 insertions(+), 2 deletions(-)
 create mode 100644 meta/recipes-multimedia/pulseaudio/pulseaudio/pulseaudio-fix-compilation-on-RHEL-machine.patch
Ross Burton - Nov. 22, 2012, 8:55 a.m.
Hi,

This patch is too hacky to go in at the moment.

On 22 November 2012 06:46,  <jackie.huang@windriver.com> wrote:
> ../bitbake_build/tmp/sysroots/qemux86-64/usr/lib64/libgdk-x11-2.0.so: undefined reference to `XRRGetOutputInfo'

Which means your GTK+ linkage is broken, because libgdk should be
linking to libXrandr.  Mine is, can you verify that yours is too?

> +-AM_LDADD = $(PTHREAD_LIBS) $(INTLLIBS)
> ++AM_LDADD = $(PTHREAD_LIBS) $(INTLLIBS) -lXrandr

You're adding linkage to libXrandr to every part of PulseAudio.  What
binary in pulseaudio is failing to compile with this error?

> -DEPENDS += "libjson gdbm speex libxml-parser-perl-native"
> +DEPENDS += "libjson gdbm speex libxml-parser-perl-native \
> +  ${@base_contains('DISTRO_FEATURES', 'x11', 'libxrandr', '', d)}"

pulseaudio.inc has:

DEPENDS = "libatomics-ops liboil avahi libsamplerate0 libsndfile1 libtool \
           ${@base_contains('DISTRO_FEATURES', 'x11', 'virtual/libx11
libxtst libice libsm libxcb gtk+', '', d)}"

As gtk+ pulls in libxrandr, this is redundant.

Ross
jackie huang - Nov. 27, 2012, 2:34 a.m.
On 11/22/2012 4:55 PM, Burton, Ross wrote:
> Hi,
>
> This patch is too hacky to go in at the moment.

Hi Ross,

Thanks for your comments, in fact the patch was for a weird edge case in 
the old version, I looked for the history and it seemed to be added as a 
workaround. And I tried some days but couldn't reproduce the issue
in current pulseaudio 2.1, so I shouldn't have send this, sorry about that.

Aws, please correct me if I'm wrong, thanks!

Thanks,
Jackie

>
> On 22 November 2012 06:46,  <jackie.huang@windriver.com> wrote:
>> ../bitbake_build/tmp/sysroots/qemux86-64/usr/lib64/libgdk-x11-2.0.so: undefined reference to `XRRGetOutputInfo'
>
> Which means your GTK+ linkage is broken, because libgdk should be
> linking to libXrandr.  Mine is, can you verify that yours is too?
>
>> +-AM_LDADD = $(PTHREAD_LIBS) $(INTLLIBS)
>> ++AM_LDADD = $(PTHREAD_LIBS) $(INTLLIBS) -lXrandr
>
> You're adding linkage to libXrandr to every part of PulseAudio.  What
> binary in pulseaudio is failing to compile with this error?
>
>> -DEPENDS += "libjson gdbm speex libxml-parser-perl-native"
>> +DEPENDS += "libjson gdbm speex libxml-parser-perl-native \
>> +  ${@base_contains('DISTRO_FEATURES', 'x11', 'libxrandr', '', d)}"
>
> pulseaudio.inc has:
>
> DEPENDS = "libatomics-ops liboil avahi libsamplerate0 libsndfile1 libtool \
>             ${@base_contains('DISTRO_FEATURES', 'x11', 'virtual/libx11
> libxtst libice libsm libxcb gtk+', '', d)}"
>
> As gtk+ pulls in libxrandr, this is redundant.
>
> Ross
>
>
Aws Ismail - Nov. 27, 2012, 10 p.m.
On 11/26/2012 09:34 PM, jhuang0 wrote:
>
>
> On 11/22/2012 4:55 PM, Burton, Ross wrote:
>> Hi,
>>
>> This patch is too hacky to go in at the moment.
>
> Hi Ross,
>
> Thanks for your comments, in fact the patch was for a weird edge case 
> in the old version, I looked for the history and it seemed to be added 
> as a workaround. And I tried some days but couldn't reproduce the issue
> in current pulseaudio 2.1, so I shouldn't have send this, sorry about 
> that.
>
> Aws, please correct me if I'm wrong, thanks!
Agreed. This was a quick fix for a very specific case. If you can 
confirm that it is not there anymore, which, by the looks of it, seems 
that you have done; then let's get rid of it.

Thanks Jackie.

Aws\
>
> Thanks,
> Jackie
>
>>
>> On 22 November 2012 06:46,  <jackie.huang@windriver.com> wrote:
>>> ../bitbake_build/tmp/sysroots/qemux86-64/usr/lib64/libgdk-x11-2.0.so: undefined 
>>> reference to `XRRGetOutputInfo'
>>
>> Which means your GTK+ linkage is broken, because libgdk should be
>> linking to libXrandr.  Mine is, can you verify that yours is too?
>>
>>> +-AM_LDADD = $(PTHREAD_LIBS) $(INTLLIBS)
>>> ++AM_LDADD = $(PTHREAD_LIBS) $(INTLLIBS) -lXrandr
>>
>> You're adding linkage to libXrandr to every part of PulseAudio. What
>> binary in pulseaudio is failing to compile with this error?
>>
>>> -DEPENDS += "libjson gdbm speex libxml-parser-perl-native"
>>> +DEPENDS += "libjson gdbm speex libxml-parser-perl-native \
>>> +  ${@base_contains('DISTRO_FEATURES', 'x11', 'libxrandr', '', d)}"
>>
>> pulseaudio.inc has:
>>
>> DEPENDS = "libatomics-ops liboil avahi libsamplerate0 libsndfile1 
>> libtool \
>>             ${@base_contains('DISTRO_FEATURES', 'x11', 'virtual/libx11
>> libxtst libice libsm libxcb gtk+', '', d)}"
>>
>> As gtk+ pulls in libxrandr, this is redundant.
>>
>> Ross
>>
>>
>

Patch

diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio/pulseaudio-fix-compilation-on-RHEL-machine.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio/pulseaudio-fix-compilation-on-RHEL-machine.patch
new file mode 100644
index 0000000..4630dea
--- /dev/null
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio/pulseaudio-fix-compilation-on-RHEL-machine.patch
@@ -0,0 +1,35 @@ 
+commit da81efa600ca7f5657ee4cb877e405fdfc6eee24
+Author: Aws Ismail <aws.ismail@windriver.com>
+Date:   Wed Aug 15 16:34:52 2012 +0800
+
+    Fix compilation on RHEL-5.8 64bit machine
+    
+    This fixes the following issue when pulseaudio is built
+    with the oe-core toolchain:
+    
+../bitbake_build/tmp/sysroots/qemux86-64/usr/lib64/libgdk-x11-2.0.so: undefined reference to `XRRGetOutputInfo'
+../bitbake_build/tmp/sysroots/qemux86-64/usr/lib64/libgdk-x11-2.0.so: undefined reference to `XRRGetScreenResourcesCurrent'
+../bitbake_build/tmp/sysroots/qemux86-64/usr/lib64/libgdk-x11-2.0.so: undefined reference to `XRRFreeOutputInfo'
+../bitbake_build/tmp/sysroots/qemux86-64/usr/lib64/libgdk-x11-2.0.so: undefined reference to `XRRFreeScreenResources'
+../bitbake_build/tmp/sysroots/qemux86-64/usr/lib64/libgdk-x11-2.0.so: undefined reference to `XRRGetOutputPrimary'
+../bitbake_build/tmp/sysroots/qemux86-64/usr/lib64/libgdk-x11-2.0.so: undefined reference to `XRRFreeCrtcInfo'
+../bitbake_build/tmp/sysroots/qemux86-64/usr/lib64/libgdk-x11-2.0.so: undefined reference to `XRRGetCrtcInfo'
+    collect2: ld returned 1 exit status
+    
+    Upstream-Status: Pending
+    
+    Signed-off-by: Aws Ismail <aws.ismail@windriver.com>
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index e3af12f..58dad5e 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -51,7 +51,7 @@ AM_CFLAGS = \
+ SERVER_CFLAGS = -D__INCLUDED_FROM_PULSE_AUDIO
+ 
+ AM_LIBADD = $(PTHREAD_LIBS) $(INTLLIBS)
+-AM_LDADD = $(PTHREAD_LIBS) $(INTLLIBS)
++AM_LDADD = $(PTHREAD_LIBS) $(INTLLIBS) -lXrandr
+ AM_LDFLAGS = $(NODELETE_LDFLAGS)
+ 
+ if STATIC_BINS
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio_2.1.bb b/meta/recipes-multimedia/pulseaudio/pulseaudio_2.1.bb
index 811dc0f..35137a8 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio_2.1.bb
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio_2.1.bb
@@ -1,13 +1,15 @@ 
 require pulseaudio.inc
 
-PR = "r14"
+PR = "r15"
 
-DEPENDS += "libjson gdbm speex libxml-parser-perl-native"
+DEPENDS += "libjson gdbm speex libxml-parser-perl-native \
+  ${@base_contains('DISTRO_FEATURES', 'x11', 'libxrandr', '', d)}"
 
 inherit gettext perlnative
 
 SRC_URI = "http://freedesktop.org/software/pulseaudio/releases/pulseaudio-${PV}.tar.xz \
   file://volatiles.04_pulse \
+  ${@base_contains('DISTRO_FEATURES', 'x11', 'file://pulseaudio-fix-compilation-on-RHEL-machine.patch', '', d)} \
 "
 
 SRC_URI[md5sum] = "33e85023259d530f0a763d5204e8bad9"