Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 479502 - New version of media-libs/libjpeg-turbo-1.3.0-r2 installs libjpeg.so/62 as default implementation
Summary: New version of media-libs/libjpeg-turbo-1.3.0-r2 installs libjpeg.so/62 as de...
Status: RESOLVED INVALID
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Library (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Samuli Suominen (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-08-02 12:33 UTC by Mathieu Segaud
Modified: 2013-08-05 12:18 UTC (History)
4 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mathieu Segaud 2013-08-02 12:33:37 UTC
When emerging new version 1.3.0-r2 of libjpeg-turbo, the libjpeg.so symlink points to libjpeg.so.62 and not libjpeg.so.8, which is required by some packages to build.

and causing a massive rebuild of all bins linked against libjpeg.so

barad-dur lib # ls -l libjpeg.so*
lrwxrwxrwx 1 root root     17  2 août  13:28 libjpeg.so -> libjpeg.so.62.1.0
lrwxrwxrwx 1 root root     17  2 août  13:28 libjpeg.so.62 -> libjpeg.so.62.1.0
-rwxr-xr-x 1 root root 276960  2 août  13:27 libjpeg.so.62.1.0
lrwxrwxrwx 1 root root     16  1 août  15:18 libjpeg.so.8 -> libjpeg.so.8.0.2
-rwxr-xr-x 1 root root 276976  1 août  15:18 libjpeg.so.8.0.2

I thought that it was preserved but I know both versions were present in the previous versions of libjpeg-turbo.

Portage 2.2.0_alpha191 (default/linux/amd64/13.0/desktop/gnome, gcc-4.8.1, glibc-2.17, 3.10.4-gentoo x86_64)
=================================================================
System uname: Linux-3.10.4-gentoo-x86_64-AMD_Athlon-tm-_64_X2_Dual_Core_Processor_5000+-with-gentoo-2.2
KiB Mem:     4051116 total,    673688 free
KiB Swap:    2097148 total,   1995848 free
Timestamp of tree: Fri, 02 Aug 2013 07:45:01 +0000
ld GNU ld (GNU Binutils) 2.23.1
app-shells/bash:          4.2_p45
dev-java/java-config:     2.2.0::java-overlay
dev-lang/python:          2.7.5-r1, 3.2.5-r1, 3.3.2-r1
dev-util/cmake:           2.8.11.1
dev-util/pkgconfig:       0.28
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.11.8
sys-apps/sandbox:         2.6-r1
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.10.3, 1.11.6, 1.12.6, 1.13.4, 1.14
sys-devel/binutils:       2.23.1
sys-devel/gcc:            4.7.3, 4.8.1
sys-devel/gcc-config:     1.8
sys-devel/libtool:        2.4.2
sys-devel/make:           3.82-r4
sys-kernel/linux-headers: 3.9 (virtual/os-headers)
sys-libs/glibc:           2.17
Repositories: gentoo nx perl-experimental kvm x11 gcc-porting enlightenment ruby emacs voip systemd java perso myruby x-experimental
Installed sets: @system
ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="* -@EULA"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe -march=native -mtune=native"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt /var/lib/hsqldb /var/lib/neatx/home /var/spool/munin-async/.ssh"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.4/ext-active/ /etc/php/cgi-php5.4/ext-active/ /etc/php/cli-php5.4/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -pipe -march=native -mtune=native"
DISTDIR="/usr/portage/distfiles"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://mirror.ovh.net/gentoo-distfiles"
LANG="fr_FR.UTF-8"
LC_ALL="fr_FR.UTF-8"
LDFLAGS="-Wl,--hash-style=gnu"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage/layman/nx /usr/local/portage/layman/perl-experimental /usr/local/portage/layman/kvm /usr/local/portage/layman/x11 /usr/local/portage/layman/gcc-porting /usr/local/portage/layman/enlightenment /usr/local/portage/layman/ruby /usr/local/portage/layman/emacs /usr/local/portage/layman/voip /usr/local/portage/layman/systemd /usr/local/portage/layman/java /usr/local/portage/overlays/perso /usr/local/portage/overlays/ruby /usr/local/portage/overlays/experimental"
SYNC="rsync://angband.regala.cx/gentoo-portage"
USE="3dnow 3dnowext X a52 aac aacplus acct acl acpi akonadi alsa amd64 applet avahi bash-completion bluetooth bluray bzip2 cairo caps captury cdda cdr cern cjk cli clutter colord cracklib crypt cscope cups cvs cxx daap dbus device-mapper digitalradio dirac djvu dri dts dvd dvdr dvi eds emacs emboss encode evo exif expat fam fastcgi fbcon ffmpeg firefox flac fontconfig fontforge fortran fuse gcrypt gdbm gdu geant3 geant4 gev gif git gles1 gles2 glib glitz global gmp gnome gnome-keyring gnome-online-accounts gnome-shell gnuplot gnutls gpm gsm gstreamer gtk gtk3 iconv icu idn ilbc imagemagick inotify introspection ipod ipv6 ithreads jadetex java javascript jingle jpeg jpeg2k kerberos keyring kpathsea latex lcms ldap libass libffi libnotify libsecret libxml libxml2 lm_sensors log logrotate lua lzma lzo mad mbox mikmod mmx mmxext mng modules mono mozsha1 mp3 mp4 mpeg msn mtp mudflap multilib multislot mysql nautilus ncurses netlink nis nls nptl objc objc++ ocaml ogg okular openexr opengl openmp pam pango pcap pch pcre pdf perl php png policykit portaudio postgres ppds pth pulseaudio pymacs pythia6 pythia8 python qt3support qt4 qtmultimedia radius rar readline redland samba schroedinger scim sctp sdl semantic-desktop serial session smartcard smp smtp socialweb sound soup speex sqlite sqlite3 sse sse2 sse3 ssl startup-notification subversion svg system-sqlite systemd t1lib tcl tcpd tex theora thread threads tidy tiff tk totem truetype udev udisks unicode unrar upower urandom usb v4l v4l2 vala vhosts video vim-syntax vnc vorbis vpx webkit webp x264 xattr xcb xcomposite xine xinerama xkb xml xmlrpc xmp xpm xslt xv xvid zeitgeist zlib zsh-completion" ABI_X86="32 64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="auth_digest proxy proxy_http proxy_ftp proxy_ajp suexec version uth_digest proxy proxy_ajp proxy_ftp proxy_http version actions alias asis auth_basic authn_alias authn_anon authn_dbd authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache charset_lite dav dav_fs dav_lock dbd deflate dir disk_cache dumpio env expires ext_filter file_cache filter headers ident imagemap include info log_config log_forensic logio mem_cache mime mime_magic negotiation proxy_balancer proxy_connect rewrite setenvif speling status substitute unique_id userdir usertrack vhost_alias postscript" APACHE2_MPMS="worker" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CURL_SSL="openssl" DRACUT_MODULES="lvm mdraid crypt btrfs crypt-gpg biosdevname plymouth caps" DVB_CARDS="af9005 usb-af9015" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" GRUB_PLATFORMS="pc" INPUT_DEVICES="evdev joystick" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer nlpsolver pdfimport wiki-publisher scripting-javascript" LINGUAS="fr en en_US ja" NGINX_MODULES_HTTP="access auth_basic autoindex browser charset empty_gif fastcgi geo gzip limit_conn limit_req map memcached proxy referer rewrite scgi ssi upstream_ip_hash userid uwsgi split_clients dav dav_ext flv mp4 lua stub_status headers_more metrics xslt upload_progress perl" NGINX_MODULES_MAIL="smtp" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-4" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_2" QEMU_SOFTMMU_TARGETS="x86_64" QEMU_USER_TARGETS="x86_64" RUBY_TARGETS="ruby19" SANE_BACKENDS="canon canon630u canon_dr canon_pp epson epson2 hp hp3500 hp3900 hp4200 hp5400 hp5590 hpljm1005 hpsj5s" USERLAND="GNU" VIDEO_CARDS="radeon r600 vga v4l" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON
Comment 1 Samuli Suominen (RETIRED) gentoo-dev 2013-08-02 16:30:51 UTC
(In reply to Mathieu Segaud from comment #0)
> When emerging new version 1.3.0-r2 of libjpeg-turbo, the libjpeg.so symlink
> points to libjpeg.so.62 and not libjpeg.so.8, which is required by some
> packages to build.
> 
> and causing a massive rebuild of all bins linked against libjpeg.so
> 
> barad-dur lib # ls -l libjpeg.so*
> lrwxrwxrwx 1 root root     17  2 août  13:28 libjpeg.so -> libjpeg.so.62.1.0
> lrwxrwxrwx 1 root root     17  2 août  13:28 libjpeg.so.62 ->
> libjpeg.so.62.1.0
> -rwxr-xr-x 1 root root 276960  2 août  13:27 libjpeg.so.62.1.0
> lrwxrwxrwx 1 root root     16  1 août  15:18 libjpeg.so.8 -> libjpeg.so.8.0.2
> -rwxr-xr-x 1 root root 276976  1 août  15:18 libjpeg.so.8.0.2
> 
> I thought that it was preserved but I know both versions were present in the
> previous versions of libjpeg-turbo.

I don't want to repeat the long story here, so I'll give the short one.
The IJG JPEG is at version 9.
Then libjpeg-upstream, Fedora, Debian, ... all will use it with .so.62 with 2 additional symbols, jpeg_mem_{dest,src}
So this is correct, you need to run emerge @preserved-rebuild to get rid of .so.8

IJG JPEG -> .so.9 + backwards compability librarary .so.62

libjpeg-turbo -> .so.62 and no need for backwards compability library SONAME stays same

The difference is that jpeg-9 has SmartScale feature and libjpeg-turbo doesn't and never propably will have it as it's deemed not so important; if needed at all.

So the jpeg related ebuilds are OK in Portage and yes indeed, you need to do the massive rebuild like "emerge @preserved-rebuild" or "revdep-rebuild --library libjpeg.so.8" or both
Comment 2 Samuli Suominen (RETIRED) gentoo-dev 2013-08-02 16:34:13 UTC
If libjpeg-turbo had adapted SmartScale we'd be raising it also to .so.9, but they declined it.
Now we are going back to the commonly supported .so.62 same way as Fedora with jpeg_mem_dest() and jpeg_mem_src() backported from later jpeg.
There would have been a massive rebuild in any case, either for .so.9 or for .so.62 because .so.8 is basically dead and buried together with .so.7
Comment 3 Julian Ospald 2013-08-05 10:41:50 UTC
how does "bumping"

#define JPEG_LIB_VERSION 80

to

#define JPEG_LIB_VERSION 62

make any sense? Seems to me they don't really know what they are doing.
Comment 4 Samuli Suominen (RETIRED) gentoo-dev 2013-08-05 12:02:57 UTC
(In reply to Julian Ospald (hasufell) from comment #3)
> how does "bumping"
> 
> #define JPEG_LIB_VERSION 80
> 
> to
> 
> #define JPEG_LIB_VERSION 62
> 
> make any sense? Seems to me they don't really know what they are doing.

In libjpeg-turbo it was never _really_ JPEG_LIB_VERSION 80 because the 80 ABI was only pretended for partial SONAME compability. It never had the 80 ABI features like SmartScale (Comment #2)

Everything seems solid to me.
Comment 5 Julian Ospald 2013-08-05 12:06:14 UTC
(In reply to Samuli Suominen from comment #4)
> (In reply to Julian Ospald (hasufell) from comment #3)
> > how does "bumping"
> > 
> > #define JPEG_LIB_VERSION 80
> > 
> > to
> > 
> > #define JPEG_LIB_VERSION 62
> > 
> > make any sense? Seems to me they don't really know what they are doing.
> 
> In libjpeg-turbo it was never _really_ JPEG_LIB_VERSION 80 because the 80
> ABI was only pretended for partial SONAME compability. It never had the 80
> ABI features like SmartScale (Comment #2)
> 
> Everything seems solid to me.

But it was defined as "80" in the header. That doesn't really look solid to me and obviously breaks code checks.
Comment 6 Samuli Suominen (RETIRED) gentoo-dev 2013-08-05 12:18:41 UTC
(In reply to Julian Ospald (hasufell) from comment #5)
> But it was defined as "80" in the header. That doesn't really look solid to
> me and obviously breaks code checks.

Yes - there might be couple of broken version checks where they should check for >= 62 and instead of >= 80 and check for the jpeg_mem_{dest,src} separately like with AC_CHECK_LIB
But it's all as according to plan ;-)