diff mbox

giflib: fix description about compatibility with libungif

Message ID 1428828185-19869-1-git-send-email-fabio.porcedda@gmail.com
State Superseded
Headers show

Commit Message

Fabio Porcedda April 12, 2015, 8:43 a.m. UTC
Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
---
 package/giflib/Config.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Baruch Siach April 12, 2015, 8:47 a.m. UTC | #1
Hi Fabio,

On Sun, Apr 12, 2015 at 10:43:05AM +0200, Fabio Porcedda wrote:
> Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
> ---
>  package/giflib/Config.in | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/package/giflib/Config.in b/package/giflib/Config.in
> index 70368dc..bb5741a 100644
> --- a/package/giflib/Config.in
> +++ b/package/giflib/Config.in
> @@ -1,7 +1,7 @@
>  config BR2_PACKAGE_GIFLIB
>  	bool "giflib"
>  	help
> -	  giflib is a library for reading and writing gif images. It is API and
> +	  giflib is a library for reading and writing gif images. It was API and
>  	  ABI compatible with libungif which was in wide use while the LZW
>  	  compression algorithm was patented.

So giflib is not compatible to libungif anymore?

baruch
Fabio Porcedda April 12, 2015, 8:57 a.m. UTC | #2
On Sun, Apr 12, 2015 at 10:47 AM, Baruch Siach <baruch@tkos.co.il> wrote:
> Hi Fabio,
>
> On Sun, Apr 12, 2015 at 10:43:05AM +0200, Fabio Porcedda wrote:
>> Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
>> ---
>>  package/giflib/Config.in | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/package/giflib/Config.in b/package/giflib/Config.in
>> index 70368dc..bb5741a 100644
>> --- a/package/giflib/Config.in
>> +++ b/package/giflib/Config.in
>> @@ -1,7 +1,7 @@
>>  config BR2_PACKAGE_GIFLIB
>>       bool "giflib"
>>       help
>> -       giflib is a library for reading and writing gif images. It is API and
>> +       giflib is a library for reading and writing gif images. It was API and
>>         ABI compatible with libungif which was in wide use while the LZW
>>         compression algorithm was patented.
>
> So giflib is not compatible to libungif anymore?


Just comparing the gif_lib.h header you can see that the definition of
some functions changes:

git diff --no-index libungif-4.1.4/lib/gif_lib.h giflib-5.1.1/lib/gif_lib.h

 GifFileType *EGifOpenFileName(const char *GifFileName,
-                              int GifTestExistance);
-GifFileType *EGifOpenFileHandle(int GifFileHandle);
-GifFileType *EGifOpen(void *userPtr, OutputFunc writeFunc);
-
+                              const bool GifTestExistence, int *Error);
+GifFileType *EGifOpenFileHandle(const int GifFileHandle, int *Error);
+GifFileType *EGifOpen(void *userPtr, OutputFunc writeFunc, int *Error);
 int EGifSpew(GifFileType * GifFile);

For this reason in buildroot there are commits that switchs from libungif
to giflib that changes the source code to do that, e.g.:

commit bfb54898133210a40bafdfbca72d9186d65c1b66
Author: Bernd Kuhls <bernd.kuhls@t-online.de>
Date:   Mon Jan 26 20:24:19 2015 +0100

    package/efl/libevas: Switch to giflib

package/efl/libevas/0001-giflib.patch | 98
package/efl/libevas/Config.in         |  2 +-
package/efl/libevas/libevas.mk

BR
Baruch Siach April 12, 2015, 9:08 a.m. UTC | #3
Hi Fabio,

On Sun, Apr 12, 2015 at 10:57:40AM +0200, Fabio Porcedda wrote:
> On Sun, Apr 12, 2015 at 10:47 AM, Baruch Siach <baruch@tkos.co.il> wrote:
> > On Sun, Apr 12, 2015 at 10:43:05AM +0200, Fabio Porcedda wrote:
> >> Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
> >> ---
> >>  package/giflib/Config.in | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/package/giflib/Config.in b/package/giflib/Config.in
> >> index 70368dc..bb5741a 100644
> >> --- a/package/giflib/Config.in
> >> +++ b/package/giflib/Config.in
> >> @@ -1,7 +1,7 @@
> >>  config BR2_PACKAGE_GIFLIB
> >>       bool "giflib"
> >>       help
> >> -       giflib is a library for reading and writing gif images. It is API and
> >> +       giflib is a library for reading and writing gif images. It was API and
> >>         ABI compatible with libungif which was in wide use while the LZW
> >>         compression algorithm was patented.
> >
> > So giflib is not compatible to libungif anymore?
> 
> Just comparing the gif_lib.h header you can see that the definition of
> some functions changes:
> 
> git diff --no-index libungif-4.1.4/lib/gif_lib.h giflib-5.1.1/lib/gif_lib.h
> 
>  GifFileType *EGifOpenFileName(const char *GifFileName,
> -                              int GifTestExistance);
> -GifFileType *EGifOpenFileHandle(int GifFileHandle);
> -GifFileType *EGifOpen(void *userPtr, OutputFunc writeFunc);
> -
> +                              const bool GifTestExistence, int *Error);
> +GifFileType *EGifOpenFileHandle(const int GifFileHandle, int *Error);
> +GifFileType *EGifOpen(void *userPtr, OutputFunc writeFunc, int *Error);
>  int EGifSpew(GifFileType * GifFile);

If this is the case I would use a more explicit language. Something like:

	giflib used to be API and ABI compatible with libungif which ... Note that 
	recent gitlib versions are no longer compatible with libungif.

baruch
Yann E. MORIN April 12, 2015, 9:10 a.m. UTC | #4
Baruch, All,

On 2015-04-12 11:47 +0300, Baruch Siach spake thusly:
> On Sun, Apr 12, 2015 at 10:43:05AM +0200, Fabio Porcedda wrote:
> > Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
> > ---
> >  package/giflib/Config.in | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/package/giflib/Config.in b/package/giflib/Config.in
> > index 70368dc..bb5741a 100644
> > --- a/package/giflib/Config.in
> > +++ b/package/giflib/Config.in
> > @@ -1,7 +1,7 @@
> >  config BR2_PACKAGE_GIFLIB
> >  	bool "giflib"
> >  	help
> > -	  giflib is a library for reading and writing gif images. It is API and
> > +	  giflib is a library for reading and writing gif images. It was API and
> >  	  ABI compatible with libungif which was in wide use while the LZW
> >  	  compression algorithm was patented.
> 
> So giflib is not compatible to libungif anymore?

No it is no longer comatible. It was, until version 5.0 introduced
changes for thread-safety. Quoting their website:

    The 5.x versions change the API slightly in a way that isn't
    compatible with older shared libraries.

and:

    [...] the signatures of the file-opener functions were changed in
    5.0 in  order to make the library fully reentrant and thread-safe

Regards,
Yann E. MORIN.
Yann E. MORIN April 12, 2015, 9:13 a.m. UTC | #5
Baruch, All,

On 2015-04-12 12:08 +0300, Baruch Siach spake thusly:
> On Sun, Apr 12, 2015 at 10:57:40AM +0200, Fabio Porcedda wrote:
> > On Sun, Apr 12, 2015 at 10:47 AM, Baruch Siach <baruch@tkos.co.il> wrote:
> > > On Sun, Apr 12, 2015 at 10:43:05AM +0200, Fabio Porcedda wrote:
> > >> Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
> > >> ---
> > >>  package/giflib/Config.in | 2 +-
> > >>  1 file changed, 1 insertion(+), 1 deletion(-)
> > >>
> > >> diff --git a/package/giflib/Config.in b/package/giflib/Config.in
> > >> index 70368dc..bb5741a 100644
> > >> --- a/package/giflib/Config.in
> > >> +++ b/package/giflib/Config.in
> > >> @@ -1,7 +1,7 @@
> > >>  config BR2_PACKAGE_GIFLIB
> > >>       bool "giflib"
> > >>       help
> > >> -       giflib is a library for reading and writing gif images. It is API and
> > >> +       giflib is a library for reading and writing gif images. It was API and
> > >>         ABI compatible with libungif which was in wide use while the LZW
> > >>         compression algorithm was patented.
> > >
> > > So giflib is not compatible to libungif anymore?
> > 
> > Just comparing the gif_lib.h header you can see that the definition of
> > some functions changes:
> > 
> > git diff --no-index libungif-4.1.4/lib/gif_lib.h giflib-5.1.1/lib/gif_lib.h
> > 
> >  GifFileType *EGifOpenFileName(const char *GifFileName,
> > -                              int GifTestExistance);
> > -GifFileType *EGifOpenFileHandle(int GifFileHandle);
> > -GifFileType *EGifOpen(void *userPtr, OutputFunc writeFunc);
> > -
> > +                              const bool GifTestExistence, int *Error);
> > +GifFileType *EGifOpenFileHandle(const int GifFileHandle, int *Error);
> > +GifFileType *EGifOpen(void *userPtr, OutputFunc writeFunc, int *Error);
> >  int EGifSpew(GifFileType * GifFile);
> 
> If this is the case I would use a more explicit language. Something like:
> 
> 	giflib used to be API and ABI compatible with libungif which ... Note that 
> 	recent gitlib versions are no longer compatible with libungif.

I would even go further, and remove any reference to libungif
altogether. So, just keep the first sentence:

    giflib is a library for reading and writing gif images.

Regards,
Yann E. MORIN.
Fabio Porcedda April 12, 2015, 10:04 a.m. UTC | #6
On Sun, Apr 12, 2015 at 11:13 AM, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> Baruch, All,
>
> On 2015-04-12 12:08 +0300, Baruch Siach spake thusly:
>> On Sun, Apr 12, 2015 at 10:57:40AM +0200, Fabio Porcedda wrote:
>> > On Sun, Apr 12, 2015 at 10:47 AM, Baruch Siach <baruch@tkos.co.il> wrote:
>> > > On Sun, Apr 12, 2015 at 10:43:05AM +0200, Fabio Porcedda wrote:
>> > >> Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
>> > >> ---
>> > >>  package/giflib/Config.in | 2 +-
>> > >>  1 file changed, 1 insertion(+), 1 deletion(-)
>> > >>
>> > >> diff --git a/package/giflib/Config.in b/package/giflib/Config.in
>> > >> index 70368dc..bb5741a 100644
>> > >> --- a/package/giflib/Config.in
>> > >> +++ b/package/giflib/Config.in
>> > >> @@ -1,7 +1,7 @@
>> > >>  config BR2_PACKAGE_GIFLIB
>> > >>       bool "giflib"
>> > >>       help
>> > >> -       giflib is a library for reading and writing gif images. It is API and
>> > >> +       giflib is a library for reading and writing gif images. It was API and
>> > >>         ABI compatible with libungif which was in wide use while the LZW
>> > >>         compression algorithm was patented.
>> > >
>> > > So giflib is not compatible to libungif anymore?
>> >
>> > Just comparing the gif_lib.h header you can see that the definition of
>> > some functions changes:
>> >
>> > git diff --no-index libungif-4.1.4/lib/gif_lib.h giflib-5.1.1/lib/gif_lib.h
>> >
>> >  GifFileType *EGifOpenFileName(const char *GifFileName,
>> > -                              int GifTestExistance);
>> > -GifFileType *EGifOpenFileHandle(int GifFileHandle);
>> > -GifFileType *EGifOpen(void *userPtr, OutputFunc writeFunc);
>> > -
>> > +                              const bool GifTestExistence, int *Error);
>> > +GifFileType *EGifOpenFileHandle(const int GifFileHandle, int *Error);
>> > +GifFileType *EGifOpen(void *userPtr, OutputFunc writeFunc, int *Error);
>> >  int EGifSpew(GifFileType * GifFile);
>>
>> If this is the case I would use a more explicit language. Something like:
>>
>>       giflib used to be API and ABI compatible with libungif which ... Note that
>>       recent gitlib versions are no longer compatible with libungif.
>
> I would even go further, and remove any reference to libungif
> altogether. So, just keep the first sentence:
>
>     giflib is a library for reading and writing gif images.
>

Because the libungif library is now deprecated i think it's a good idea.

BR
Fabio Porcedda April 12, 2015, 10:21 a.m. UTC | #7
I've sent an updated version of this patch:
http://patchwork.ozlabs.org/patch/460474/

BR
diff mbox

Patch

diff --git a/package/giflib/Config.in b/package/giflib/Config.in
index 70368dc..bb5741a 100644
--- a/package/giflib/Config.in
+++ b/package/giflib/Config.in
@@ -1,7 +1,7 @@ 
 config BR2_PACKAGE_GIFLIB
 	bool "giflib"
 	help
-	  giflib is a library for reading and writing gif images. It is API and
+	  giflib is a library for reading and writing gif images. It was API and
 	  ABI compatible with libungif which was in wide use while the LZW
 	  compression algorithm was patented.