Bug 40616 - git master of both pulseaudio and pavucontrol seem to overlink (i.e. pavucontrol requires libpulsecommon-0.99.so)
Summary: git master of both pulseaudio and pavucontrol seem to overlink (i.e. pavucont...
Status: RESOLVED FIXED
Alias: None
Product: PulseAudio
Classification: Unclassified
Component: core (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: pulseaudio-bugs
QA Contact: pulseaudio-bugs
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 40193
  Show dependency treegraph
 
Reported: 2011-09-04 02:59 UTC by Colin Guthrie
Modified: 2011-09-11 05:42 UTC (History)
3 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Colin Guthrie 2011-09-04 02:59:14 UTC
As per description, it seems the need for libpulsecommon-0.99.so leaks out of pulseaudio into client applications which would require them to be recompiled when we bump versions but keep libmajor the same... this sucks.
Comment 1 Colin Guthrie 2011-09-05 01:34:50 UTC
Problem is with the formats code. As it "lives" in libpulsecommon, whenever you use it, this lib is explicitly linked in.

Sadly it's quite annoying to fix fully due to having to export functions in the map file that are not officially part of the public API, but such is life.
Comment 2 Colin Guthrie 2011-09-05 01:35:09 UTC
commit 03b97d0e08ed6a8578a94970390c7347d0deb9de
Author: Colin Guthrie <colin@...>
Date:   Sun Sep 4 21:05:14 2011 +0200

    formats: Export more functions needed for a clean build.
    
    All of these functions are not actually defined in format.h
    (they are defined in internal.h) and thus should really be
    included only in libpulsecommon and implemented in a separate
    source file.
    
    However if that approach was taken, and these functions were
    included in libpulsecommon, then they would have a link time
    dependancy on libpulse (as these four functions use other
    pa_format_info_* functions). As the opposite is already true
    (libpulse depends on libpulsecommon), this is not possible as
    it creates a circular dependancy.
    
    Thus the only option is to just to include these four functions
    in the map-file, but not actually export any public headers for
    them. Of course users could use this implementation by defining
    them in their own headers, but the only practical problem
    with this approach is naming conflicts which is unlikely to happen.
    
    fdo#40616

commit 1595608b0b1da794ad79e42c0131c9cb523e9b0b
Author: Colin Guthrie <colin@...>
Date:   Sun Sep 4 20:40:21 2011 +0200

    formats: The format code should be in libpulse, not libpulsecommon
    
    Without this change any applications calling e.g. pa_format_info_new()
    and friends will be explicitly linked against libpulsecommon-$MAJORMINOR.so
    which is something we specifically avoid as it may contain ABI/API unstable
    functions.
    
    Also ensure we export pa_format_info_from_string() for external use.
    
    fdo#40616
Comment 3 Colin Guthrie 2011-09-05 01:35:44 UTC
Arun, feel free to double check this.
Comment 4 Arun Raghavan 2011-09-11 05:42:45 UTC
(In reply to comment #3)
> Arun, feel free to double check this.

Just to keep the bug updated -- looks good!


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.