Friday, July 02, 2021

Re: textproc/swish-e: fix upcoming build failure

On Fri, Jul 02, 2021 at 04:47:27PM +0100, Stuart Henderson wrote:
> On 2021/07/02 16:46, Theo Buehler wrote:
> > zlib 1.2.9 added an uncompress2 function that clashes with swish's
> > internal compress2 function. The build is fixed by the following
> > mechanical diff that renames the internal function to swish_uncompress2
> > as was done in alpine:
> >
> > https://git.alpinelinux.org/aports/tree/main/swish-e/zlib-shadowing.patch?h=3.14-stable
> >
> > I couldn't come up with a preprocessor trick that would allow avoiding
> > the bulk rename, but hopefully there's something cleverer that would
> > avoid a big diff.
> >
> > HOMEPAGE is broken, so I removed it.
>
> here's the trick :) the actual symbol in libz is z_uncompress2, we can
> just get rid of the macro then there's no more conflict.

Unfortunately that doesn't work.

It's not a linking problem (which your trick could have solved
potentially) but a problem of conflicting prototypes in "compress.h"
and <zlib.h>:

In file included from compress.c:54:
/usr/include/zlib.h:1283:21: error: conflicting types for 'uncompress2'
ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest, uLongf *destLen,
^
./compress.h:39:5: note: previous declaration is here
int uncompress2(unsigned char **buffer);

(The second problem is that I wrote compress2 by accident. You'd need
"#undef uncompress2" in your compress.c patch, and the patch for
docprop_write.c is not necessary)

Unless you have another clever idea, I suggest to go with my original
diff, pointing to your hosted tarball and with 'make update-plist'.

No comments:

Post a Comment