On Sat, 2019-04-13 at 13:11 -0700, John Reiser wrote:
> Unfortunately, the gcc in EL6 is too old to build zchunk
In what specific way(s)? Can the complaints from gcc [which version?],
or other tools in the toolchain, be listed here?
Other developers may have faced the same or similar problems,
and may have tools to help.
Sorry, I should have shared that the first time around.
The version of gcc that comes with EL6 is 4.4.7.
When building zchunk, I get a number of messages that look like:
$ ninja-build
[1/178] Compiling C object 'src/lib/zck(a)sha/comp_zstd_zstd.c.o'.
FAILED: src/lib/zck(a)sha/comp_zstd_zstd.c.o
cc -Isrc/lib/zck@sha -Isrc/lib -I../src/lib -Iinclude -I../include -pipe
-D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=gnu99 -O0 -g -DZCHUNK_ZSTD
-DZCHUNK_OPENSSL -fvisibility=hidden -fPIC -MMD -MQ
'src/lib/zck(a)sha/comp_zstd_zstd.c.o' -MF
'src/lib/zck(a)sha/comp_zstd_zstd.c.o.d' -o
'src/lib/zck(a)sha/comp_zstd_zstd.c.o' -c ../src/lib/comp/zstd/zstd.c
In file included from ../src/lib/comp/zstd/zstd.c:34:
../src/lib/zck_private.h:92: error: redefinition of typedef 'zckCtx'
include/zck.h:49: note: previous declaration of 'zckCtx' was here
../src/lib/zck_private.h:106: error: redefinition of typedef 'zck_log_type'
include/zck.h:47: note: previous declaration of 'zck_log_type' was here
../src/lib/zck_private.h:117: error: redefinition of typedef 'zckHash'
include/zck.h:50: note: previous declaration of 'zckHash' was here
../src/lib/zck_private.h:150: error: redefinition of typedef 'zckDL'
include/zck.h:54: note: previous declaration of 'zckDL' was here
../src/lib/zck_private.h:165: error: redefinition of typedef 'zckChunk'
include/zck.h:51: note: previous declaration of 'zckChunk' was here
../src/lib/zck_private.h:177: error: redefinition of typedef 'zckIndex'
include/zck.h:52: note: previous declaration of 'zckIndex' was here
../src/lib/zck_private.h:193: error: redefinition of typedef 'zckRange'
include/zck.h:53: note: previous declaration of 'zckRange' was here
../src/lib/zck_private.h:224: error: redefinition of typedef 'zckComp'
../src/lib/zck_private.h:91: note: previous declaration of 'zckComp' was here
../src/lib/zck_private.h:298: error: redefinition of typedef 'zckCtx'
../src/lib/zck_private.h:92: note: previous declaration of 'zckCtx' was here
For reference, you can find zck.h.in (which gets processed into zck.h
with the version added) at:
https://github.com/zchunk/zchunk/blob/master/include/zck.h.in
and zck_private.h at:
https://github.com/zchunk/zchunk/blob/master/src/lib/zck_private.h
As far as I can see, gcc-4.7 doesn't like that I'm typedefing the same
struct to the same type twice. Later versions don't see it as a
problem at all.
(Just to be clear, this still happens if I change zck_private.h to say:
typedef struct zckCtx zckCtx;)
Jonathan