<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Priority</th>
          <td>medium
          </td>
        </tr>

        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - Overly public Requires: in cairo-png.pc"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=58803">58803</a>
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>chris@chris-wilson.co.uk
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Overly public Requires: in cairo-png.pc
          </td>
        </tr>

        <tr>
          <th>QA Contact</th>
          <td>cairo-bugs@cairographics.org
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>dmacks@netspace.org
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>Other
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>1.12.8
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>general
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>cairo
          </td>
        </tr></table>
      <p>
        <div>
        <pre>cairo-1.12.8 built with png support installs cairo-png.pc that asserts:

<span class="quote">> Requires: cairo libpng</span >

However, libpng is not exposed in the public interface. The installed
cairo-png.h does not #include any png headers and does not use any png types or
re-export any functions from it. It's just part of the internal implementation
and cairo links against it already, so there's no need to tell everyone using
cairo that they need to link against libpng directly themselves. Worse, libpng
has a history of changing its .pc naming, so this Requires entry requires that
I have the *same* (or at least within a certain range) version available as
when I built cairo itself, which creates a deadlock if I install a different
version of a libpng-dev package on my system. Which again shouldn't matter
because it's not exposed.

Instead, it should go in Requires.private, which is only used by pkg-config in
static-lib or other special platform situations where the implementation
details need to be exposed.

<span class="quote">> Requires: cairo
> Requires.private:libpng</span >

That's already where libpng is in cairo.pc itself.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the QA Contact for the bug.</li>
      </ul>
    </body>
</html>