<p>Upstream pbzip2 states:</p>
<blockquote>
<p>PBZIP2 is a parallel implementation of the bzip2 block-sorting file compressor that uses pthreads and > achieves near-linear speedup on SMP machines. The output of this version is fully compatible with<br>
bzip2 v1.0.2 or newer (ie: anything compressed with pbzip2 can be decompressed with bzip2).</p>
</blockquote>
<p>In other words, it's not a different compression format, it's merely an alternative implementation of bzip2 compression. Which means there are a number of problems with this patch:</p>
<ul>
<li>COMPRESSED_PBZIP2 doesn't make sense, anything that bzip2 can handle pbzip2 can handle and vice versa</li>
<li>rpmlib(PayloadIsPBzip2) doesn't make sense either, for the same reason</li>
</ul>
<p>I think the way go handle this is a configure switch to choose between traditional bzip2 and pbzip2... but. The rpmio code is ifdef'ed over HAVE_PBZLIB_H but there's no configure check for it, so it never gets built at all. Ignoring that, the code is just including bzlib.h which is the plain old bz2 library's header which doesn't have any of the symbols referred here like PBZFILE and PBZ2_pbzdopen() etc. Looking at the upstream pbzip2 code & makefile, it doesn't HAVE a library to link against.</p>
<p>What the heck?</p>
<p>FWIW, I'm looking at the pbzip2 at <a href="http://compression.ca/pbzip2/">http://compression.ca/pbzip2/</a> and <a href="https://launchpad.net/pbzip2/">https://launchpad.net/pbzip2/</a>. If there's another implementation in this that does provide a library around it, now would be a good time to point that out.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/rpm-software-management/rpm/pull/117#issuecomment-271271065">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ANb80wgIFFNBTvi4LhidbLjHB-UQrwevks5rQiVugaJpZM4LcWeI">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/ANb807u4UQ3OAAG52dGiTrPqg_15EAxWks5rQiVugaJpZM4LcWeI.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/rpm-software-management/rpm/pull/117#issuecomment-271271065"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/rpm-software-management/rpm","title":"rpm-software-management/rpm","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/rpm-software-management/rpm"}},"updates":{"snippets":[{"icon":"PERSON","message":"@pmatilai in #117: Upstream pbzip2 states:\r\n\u003e PBZIP2 is a parallel implementation of the bzip2 block-sorting file compressor that uses pthreads and \u003e achieves near-linear speedup on SMP machines. The output of this version is fully compatible with\r\n\u003e bzip2 v1.0.2 or newer (ie: anything compressed with pbzip2 can be decompressed with bzip2).\r\n\r\nIn other words, it's not a different compression format, it's merely an alternative implementation of bzip2 compression. Which means there are a number of problems with this patch:\r\n- COMPRESSED_PBZIP2 doesn't make sense, anything that bzip2 can handle pbzip2 can handle and vice versa\r\n- rpmlib(PayloadIsPBzip2) doesn't make sense either, for the same reason\r\n\r\nI think the way go handle this is a configure switch to choose between traditional bzip2 and pbzip2... but. The rpmio code is ifdef'ed over HAVE_PBZLIB_H but there's no configure check for it, so it never gets built at all. Ignoring that, the code is just including bzlib.h which is the plain old bz2 library's header which doesn't have any of the symbols referred here like PBZFILE and PBZ2_pbzdopen() etc. Looking at the upstream pbzip2 code \u0026 makefile, it doesn't HAVE a library to link against.\r\n\r\nWhat the heck?\r\n\r\nFWIW, I'm looking at the pbzip2 at http://compression.ca/pbzip2/ and https://launchpad.net/pbzip2/. If there's another implementation in this that does provide a library around it, now would be a good time to point that out."}],"action":{"name":"View Pull Request","url":"https://github.com/rpm-software-management/rpm/pull/117#issuecomment-271271065"}}}</script>