Project

General

Profile

Actions

Feature #7391

open

All components should use libjpeg8-turbo as JPEG implementation

Added by Aurélien Larcher over 5 years ago. Updated 5 months ago.

Status:
New
Priority:
Normal
Assignee:
Category:
OI-Userland
Target version:
Start date:
2016-09-18
Due date:
% Done:

0%

Estimated time:
Difficulty:
Medium
Tags:
needs-triage

Description

All major operating systems have migrated to libjpeg-turbo v8.
While IJG's libjpeg should remain the reference implementation for backward compatibility, components in oi-userland should now move to a faster implementation.

The dependant components are:

pikku> pkg search -r -o pkg.name "depend::image/library/libjpeg6" | sort -u
codec/jasper
consolidation/userland/userland-incorporation
desktop/compiz/plugin/compiz-fusion-main
desktop/office/openoffice
editor/gnu-emacs/gnu-emacs-gtk
editor/gnu-emacs/gnu-emacs-x11
gnome/vino
image/dcraw
image/djvulibre
image/editor/gimp
image/editor/inkscape
image/gnuplot
image/imagemagick
image/library/gegl
image/library/libjpeg
image/library/libtiff
image/scanner/xsane
image/scanner/xsane/sane-backends
image/viewer/eog
image/viewer/eom
image/viewer/geeqie
image/viewer/gthumb
library/audio/gstreamer/plugin/good
library/desktop/gdk-pixbuf
library/desktop/search/tracker
library/desktop/webkitgtk
library/desktop/webkitgtk2
library/e/efl
library/gd
library/graphics/libmng
library/graphics/wxwidgets
library/lcms
library/lcms2
library/libgphoto2-2
library/libpoppler
library/libwebp
library/print/cups-libs
library/python-2/python-imaging-26
library/python-2/python-imaging-27
library/python/python-imaging-27
library/qt4
media/vlc
print/filter/ghostscript
print/filter/hplip
system/qemu/kvm
system/storage/photorec
system/storage/qphotorec
terminal/mrxvt
web/php-54/extension/php-gd
web/php-55/extension/php-gd
web/php-56/extension/php-gd
web/php-70/extension/php-gd

pikku> pkg search -r -o pkg.name "depend::image/library/libjpeg8-turbo" | sort -u
consolidation/userland/userland-incorporation
image/library/libraw

The file 'shared-macros.mk' may define macros to set compilation flags to the default libjpeg.

Actions #1

Updated by Tim Mooney about 5 years ago

I'm converting terminal/mrxvt as a test, to see how difficult the process is. That work is being tracked at

https://github.com/OpenIndiana/oi-userland/pull/2797
Actions #2

Updated by Tim Mooney about 5 years ago

Tim Mooney wrote:

I'm converting terminal/mrxvt as a test, to see how difficult the process is. That work is being tracked at

https://github.com/OpenIndiana/oi-userland/pull/2797

This pull request was merged, terminal/mrxvt is complete

Actions #3

Updated by Tim Mooney about 5 years ago

Actions #4

Updated by Tim Mooney about 5 years ago

Tim Mooney wrote:

print/filter/hplip pull request: https://github.com/OpenIndiana/oi-userland/pull/2829

This pull request was merged, print/filter/hplip is complete

Actions #5

Updated by Tim Mooney about 5 years ago

library/print/cups-libs is on this list, but there is nothing in that component that dynamically links to any version of libjpeg.

Actions #6

Updated by Aurélien Larcher about 5 years ago

I listed components detected as dependent on libjpeg by IPS, I did not check the links.
Thanks for your help!

Actions #8

Updated by Aurélien Larcher over 2 years ago

narval> pkg search -r -o pkg.name "depend:require:image/library/libjpeg6" | sort -u
library/audio/gstreamer/plugin/good
library/audio/gstreamer1/plugin/base
library/desktop/webkitgtk2
library/graphics/wxwidgets
library/python/python-imaging-27
library/qt5

Actions #9

Updated by David Stes 5 months ago

I am adding libjpeg8-turbo support to Squeak (runtime/smalltalk/squeak the Smalltalk-80 package)

The Squeak JPEG plugin is documented at http://wiki.squeak.org/squeak/4043

By default Squeak uses its own copy of libjpeg so this duplicates code and does not use any of the OI libjpeg libraries at all.

During the recent work on updating the Squeak package for Debian Linux, a Squeak configure switch was added to link against libjpeg8-turbo (this is very recent in Squeak 4.19.6) and I am using now the same switch for OpenIndiana

Actions #10

Updated by David Stes 5 months ago

while working on this issue, I found out that Squeak works with libjpeg6-ijg the IJG implementation but apparantly for some unknown reason NOT with libjpeg62-turbo or libjpeg8-turbo

So for the moment the latest update of squeak introduces a new dependency

depend fmri=pkg: type=require
depend fmri=pkg: type=require

this is already an improvement compared to the past because in the past squeak was statically linking lijbpeg into the VM so it was not visible at the IPS level and it was not dynamically linking libjpeg

Actions #11

Updated by David Stes 5 months ago

I have upgraded Squeak now to use libjpeg8-turbo.

The reason it did not work at first is, because I was using the wrong include file

/usr/include/jpeglib.h

which links to libjpeg6-ijg.

Removing
/usr/include/jpeglib.h
helped to diagnose the issue.

The sizeof (struct jpeg_decompress_struct) and sizeof (struct jpeg_compress_struct) differs between libjpeg6-ijg , libjpeg8-turbo and libjpeg9-ijg.

I had a PR (pull request) for IJG libjpeg 9.4.0

That version also works fine with Squeak when using the right header file.

Actions

Also available in: Atom PDF