Hello,<div><br></div><div>The proper solution for these cases is Fedora shipping two runtime versions of libjpeg, like Debian and others do. This "problem" is caused by Fedora's policy requiring all packages in the distribution to use a single library version, and that version being an old one, not a new one (yes, using libjpeg-turbo is the same as using libjpeg 6.2: an old version).</div>

<div><br></div><div>How has Fedora solved the problem for other libraries?</div><div><br><br><div class="gmail_quote">On Fri, Jan 18, 2013 at 6:52 PM, Kevin Kofler <span dir="ltr"><<a href="mailto:kevin.kofler@chello.at" target="_blank">kevin.kofler@chello.at</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
as you have probably noticed, libkdcraw started requiring libjpeg ≥ 8 for some<br>
of its functionality as of 4.10. Unfortunately, this is a problem for Fedora<br>
and will remain a problem for Fedora for the foreseeable future.<br>
<br>
To explain why, let's discuss some history:<br>
<br>
* IJG libjpeg, as released by IJG, is not optimized, making it very slow for<br>
some real-time applications, such as VNC. Therefore, the authors of TurboVNC<br>
developed a speed-optimized fork of libjpeg, called libjpeg-turbo:<br>
<a href="http://sourceforge.net/projects/libjpeg-turbo/" target="_blank">http://sourceforge.net/projects/libjpeg-turbo/</a><br>
Initially, this was shipped as a bundled library, but because 1. we strongly<br>
dislike bundled libraries in Fedora and 2. we want all applications to benefit<br>
from the speed optimizations, since 2010 (Fedora 14), Fedora ships this<br>
libjpeg-turbo fork instead of IJG libjpeg:<br>
<a href="https://fedoraproject.org/wiki/Features/libjpeg-turbo" target="_blank">https://fedoraproject.org/wiki/Features/libjpeg-turbo</a><br>
<br>
* libjpeg-turbo is API/ABI-compatible with IJG libjpeg 6.2 (which, by the way,<br>
is also the version in the LSB and the one binary-only software (still) tends<br>
to expect).<br>
<br>
* IJG libjpeg, on the other hand, started making API and ABI changes to their<br>
code to support some new features. While libjpeg-turbo has some support for<br>
the IJG lijpeg 8 ABI, libjpeg-turbo's upstream considers the additions and<br>
changes unnecessary and useless (mainly because JPEG files using the new<br>
features cannot be read with older libjpeg implementations!), will not<br>
guarantee that any added functionality actually works (only ABI compatibility)<br>
and strongly recommends against enabling the new ABI:<br>
<a href="http://sourceforge.net/mailarchive/message.php?msg_id=30352465" target="_blank">http://sourceforge.net/mailarchive/message.php?msg_id=30352465</a><br>
<br>
* In Fedora, we had initially planned to enable the IJG libjpeg 8 ABI for the<br>
upcoming Fedora 19:<br>
<a href="https://fedoraproject.org/wiki/Features/libjpeg-turbo-jpeg8-ABI" target="_blank">https://fedoraproject.org/wiki/Features/libjpeg-turbo-jpeg8-ABI</a><br>
but with the release of IJG libjpeg 9, the topic came up again, and (following<br>
the above-cited discussion with upstream) it was decided to drop that proposed<br>
feature.<br>
<br>
In other words: FEDORA WILL ONLY SHIP A libjpeg-6.2-COMPATIBLE ABI FOR THE<br>
FORESEEABLE FUTURE.<br>
<br>
That said, adding new functions is not ABI-incompatible and can and will be<br>
done where it makes sense (to libjpeg-turbo upstream). For example, the new<br>
jpeg_mem_src() function will be present in next libjpeg-turbo release. (Please<br>
send any requests for new functions directly to the upstream libjpeg-turbo<br>
project.)<br>
<br>
<br>
So the questions are:<br>
* Why does libkdcraw require version ≥ 8 of libjpeg?<br>
* What functionality from the new version does it actually require?<br>
* Can it be made to work with libjpeg-turbo? If yes, how much work would that<br>
be? (I'm willing to do the work if it isn't too much.)<br>
* If you need (a) specific new function(s) (now or in the future), would it be<br>
possible to test for that/those function(s) specifically instead of the libjpeg<br>
ABI version?<br>
<br>
Kind regards,<br>
        Kevin Kofler<br>
_______________________________________________<br>
Kde-graphics-devel mailing list<br>
<a href="mailto:Kde-graphics-devel@kde.org">Kde-graphics-devel@kde.org</a><br>
<a href="https://mail.kde.org/mailman/listinfo/kde-graphics-devel" target="_blank">https://mail.kde.org/mailman/listinfo/kde-graphics-devel</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Pau Garcia i Quiles<br><a href="http://www.elpauer.org">http://www.elpauer.org</a><br>(Due to my workload, I may need 10 days to answer)
</div>