Opened 10 years ago
Closed 10 years ago
#45964 closed defect (fixed)
blosc @ 1.5.0_0 build error
Reported by: | skoro.ru@… | Owned by: | stromnov (Andrey Stromnov) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.3.3 |
Keywords: | Cc: | petrrr | |
Port: | blosc |
Description (last modified by ryandesign (Ryan Carsten Schmidt))
osx 10.5.8 ppc
in c-blosc-1.5.0/blosc/shuffle.c
error: conflicting types for ‘shuffle’
blosc @1.4.1_1 compiled and installed without issue
Attachments (1)
Change History (8)
Changed 10 years ago by skoro.ru@…
comment:1 Changed 10 years ago by skoro.ru@…
Cc: | skoro.ru@… added |
---|
comment:2 Changed 10 years ago by skoro.ru@…
I have performed a couple of basic checks: the usual clean port, selfupdate, and upgrade outdated; I also attempted the build process with macports gcc-mp-4.7 to see if that changed anything (unfortunately, no).
comment:3 Changed 10 years ago by mf2k (Frank Schima)
Cc: | stromnov@… openmaintainer@… skoro.ru@… removed |
---|---|
Owner: | changed from macports-tickets@… to stromnov@… |
Please do not Cc openmaintainer@… because it is not a valid email address. As reporter, you do not need to Cc yourself.
comment:5 Changed 10 years ago by skoro.ru@…
Having taken a brief look over the c-blosc 1.5.0 source, it looks like the redefinition occurs when it tries to build on a system with a CPU without SSE2:
From shuffle.c, line 490
#else /* no __SSE2__ available */ void shuffle(size_t bytesoftype, size_t blocksize, uint8_t* _src, uint8_t* _dest) { _shuffle(bytesoftype, blocksize, _src, _dest); } void unshuffle(size_t bytesoftype, size_t blocksize, uint8_t* _src, uint8_t* _dest) { _unshuffle(bytesoftype, blocksize, _src, _dest); } #endif /* __SSE2__ */
and from shuffle.h (entire file shown)
/********************************************************************* Blosc - Blocked Suffling and Compression Library Author: Francesc Alted <francesc@blosc.org> See LICENSES/BLOSC.txt for details about copyright and rights to use. **********************************************************************/ /* Shuffle/unshuffle routines */ void shuffle(size_t bytesoftype, size_t blocksize, const unsigned char* _src, unsigned char* _dest); void unshuffle(size_t bytesoftype, size_t blocksize, const unsigned char* _src, unsigned char* _dest);
comment:6 Changed 10 years ago by skoro.ru@…
If I compare c-blosc-1.4.1 (which compiles) and c-blosc-1.5.0 (which doesn't), the definitions of shuffle and unshuffle were updated in 1.5.0 in shuffle.h to make the argument _src const, but the change wasn't reflected in lines 493 and 498 (the conditionally executed non-SSE2 section) of shuffle.c.
This fixes the issue:
#else /* no __SSE2__ available */ void shuffle(size_t bytesoftype, size_t blocksize, const uint8_t* _src, uint8_t* _dest) { _shuffle(bytesoftype, blocksize, _src, _dest); } void unshuffle(size_t bytesoftype, size_t blocksize, const uint8_t* _src, uint8_t* _dest) { _unshuffle(bytesoftype, blocksize, _src, _dest); } #endif /* __SSE2__ */
comment:7 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)
Description: | modified (diff) |
---|---|
Resolution: | → fixed |
Status: | new → closed |
Andrew fixed this by updating the port to 1.5.1 in r129889.
Cc Me!