Opened 11 years ago
Closed 11 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 11 years ago by skoro.ru@…
comment:1 Changed 11 years ago by skoro.ru@…
| Cc: | skoro.ru@… added |
|---|
comment:2 Changed 11 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 11 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 11 years ago by skoro.ru@…
Having taken a brief look over the c-blosc 1.5.0 source, it looks like the type conflict 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 11 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 11 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!