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)

main.log (19.7 KB) - added by skoro.ru@… 10 years ago.

Download all attachments as: .zip

Change History (8)

Changed 10 years ago by skoro.ru@…

Attachment: main.log added

comment:1 Changed 10 years ago by skoro.ru@…

Cc: skoro.ru@… added

Cc Me!

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:4 Changed 10 years ago by petrrr

Cc: petr@… added

Cc Me!

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);
Version 1, edited 10 years ago by skoro.ru@… (previous) (next) (diff)

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: newclosed

Andrew fixed this by updating the port to 1.5.1 in r129889.

Note: See TracTickets for help on using tickets.