[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

versioned tiff uploaded to experimental

[please cc me on responses; I am not subscribed to debian-release]

I have uploaded tiff3_3.9.5-3 with libtiff4, libtiff4-dev, and
libtiffxx0c2 and tiff_4.0.0-1 with libtiff5, libtiff-dev, libtiffxx5,
libtiff-tools, libtiff-doc, and libtiff-opengl to experimental as
previously discussed.  All libraries have versioned symbols.  I did a
bunch of tests, and everything works as expected.  Specifically:

Programs linked with non-versioned libtiff4 still run properly when
libtiff4 is upgraded to the versioned libtiff4.  Programs linked with a
versioned copy of libtiff4 do not work with a non-versioned copy.

It works to link a program with one shared library that uses versioned
libtiff4 and another that uses versioned libtiff5.  Here's what I did:

--- f.c ---
#include <tiffio.h>
#include <tiff.h>
#include <stdio.h>

void f()
    uint32 width;
    TIFF* t = TIFFOpen("/tmp/a.tif", "r");
    if (TIFFGetField(t, TIFFTAG_IMAGEWIDTH, &width))
        printf("%d\n", width);

--- g.c ---
#include <tiffio.h>
#include <tiff.h>
#include <stdio.h>

void g()
    uint32 height;
    TIFF* t = TIFFOpen("/tmp/a.tif", "r");
    if (TIFFGetField(t, TIFFTAG_IMAGELENGTH, &height))
        printf("%d\n", height);

--- main.c ---
void f();
void g();
int main()
    return 0;

With libtiff4-dev installed:

% gcc -fPIC -c f.c
% gcc -shared -o libf.so -ltiff f.o

With libtiff-dev (tiff5) installed:

% gcc -fPIC -c c.c
% gcc -shared -o libg.so -ltiff g.o


% gcc -o main main.c -L. -lf -lg
% LD_LIBRARY_PATH=. ldd ./main

        linux-vdso.so.1 =>  (0x00007fffd13ff000)
        libf.so => ./libf.so (0x00007f8aca4a1000)
        libg.so => ./libg.so (0x00007f8aca2a0000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8ac9ef7000)
        libtiff.so.5 => /usr/lib/x86_64-linux-gnu/libtiff.so.5 (0x00007f8ac9c86000)
        libtiff.so.4 => /usr/lib/x86_64-linux-gnu/libtiff.so.4 (0x00007f8ac9a21000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f8aca6a4000)
        libjpeg.so.8 => /usr/lib/libjpeg.so.8 (0x00007f8ac97e6000)
        libz.so.1 => /usr/lib/libz.so.1 (0x00007f8ac95cf000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8ac934d000)
% LD_LIBRARY_PATH=. ./main

Once tiff3 clears NEW in experimental, unless I hear any objections,
as soon as upstream release 3.9.6, I'll upload that to unstable and let
the release team know that they can start binary NMUs of everything that
links with tiff.

Jay Berkenbilt <qjb@debian.org>

Reply to: