Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

32bit build support #27

Open
juntyr opened this issue Jan 23, 2025 · 4 comments
Open

32bit build support #27

juntyr opened this issue Jan 23, 2025 · 4 comments
Labels
bug Something isn't working

Comments

@juntyr
Copy link

juntyr commented Jan 23, 2025

What happened?

I'm trying to build odc on a 32bit system, where the size of the long type is 32 bits, not 64 bits as required.

Using an OS-dependently-sized type but requiring a specific size feels like the wrong solution. Would it be possible to use int64_t instead?

What are the steps to reproduce the bug?

Build on a 32bit system

Version

v1.5.2

Platform (OS and architecture)

Emscripten

Relevant log output

Accompanying data

No response

Organisation

University of Helsinki

@juntyr juntyr added the bug Something isn't working label Jan 23, 2025
@TomHodson
Copy link
Contributor

Hey @juntyr, could you give me the exact error message that you get? And could you let me know roughly what build process you're using so I can attempt to reproduce it?

@juntyr
Copy link
Author

juntyr commented Jan 28, 2025

The following check fails:

message( FATAL_ERROR "operating system ${CMAKE_SYSTEM} (${EC_OS_BITS} bits) and sizeof long [${__sizeof_long_final}] -- long must be 64 bits exactly" )

I’m trying to build odc for 32bit WebAssembly using Emscripten, as part of porting the codc package (sibling to pyodc) to Pyodide (Python in WebAssembly).

@TomHodson
Copy link
Contributor

Happy to try to help on this but I fear the issues might go further up the stack.

Could you give me the exact command and CMakeLists.txt you're using? And did you manage to first compile eckit to WebAssembly?

I had a go at reproducing by just commenting out the checks on long and double, intending to then try a global replace of long -> int64_t to see what would break. However, I couldn't get eckit to compile. I used:

export ECBUILD_DIR=/path/to/ecbuild/bin # clone from https://github.com/ecmwf/ecbuild
emcmake cmake -S . -B build -DENABLE_MPI=OFF -DDISABLE_OS_CHECK=ON -DCMAKE_MODULE_PATH=$ECBUILD_DIR/cmake
cd build
emmake make

with CMakeLists.txt:

cmake_minimum_required( VERSION 3.12 FATAL_ERROR )
find_package( ecbuild 3.7 REQUIRED HINTS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../ecbuild)
project( Bundle VERSION 0.0.1 LANGUAGES C CXX )

ecbuild_bundle_initialize()
ecbuild_bundle( PROJECT eckit           GIT "[email protected]:ecmwf/eckit"                     BRANCH develop  UPDATE)
ecbuild_bundle( PROJECT odc             SOURCE "./odc")
ecbuild_bundle_finalize()

but I'm not well versed in emscripten so maybe you have already gotten further than this.

@juntyr
Copy link
Author

juntyr commented Feb 2, 2025

Thank you for looking into this! I made some progress as well, on the https://github.com/climet-eu/pyodide/tree/libodc branch, which includes small patches to make eckit and libodc "just build" as far as I can. You can reproduce as follows:

  1. git clone https://github.com/climet-eu/pyodide.git -b libodc
  2. docker build .
  3. PYODIDE_DOCKER_IMAGE=$(docker build -q .) ./run_docker
  4. PYODIDE_PACKAGES="libodc" make

This now fails (you can find the error log at pyodide/packages/libodc/build.log) with:

[ 32%] �[32mBuilding CXX object src/odc/CMakeFiles/odccore.dir/codec/Integer.cc.o�[0m
In file included from /src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.cc:12:
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:111:23: error: static assertion failed due to requirement 'sizeof(long long) == sizeof (out)': unsafe casting check
  111 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:128:47: note: in instantiation of member function 'odc::codec::CodecIntegerOffset<odc::core::SameByteOrder, long long, unsigned char, odc::codec::CodecInt8<odc::core::SameByteOrder, long long>>::decode' requested here
  128 |             return std::unique_ptr<Codec>(new CODEC_T<SameByteOrder, int64_t>(type));
      |                                               ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:121:5: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt8>::make' requested here
  121 |     IntegerCodecBuilder() : CodecBuilderBase(CODEC_T<SameByteOrder, double>::codec_name()) {}
      |     ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.cc:23:42: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt8>::IntegerCodecBuilder' requested here
   23 |     core::IntegerCodecBuilder<CodecInt8> int8Builder;
      |                                          ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:111:41: note: expression evaluates to '8 == 4'
  111 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:111:23: error: static assertion failed due to requirement 'sizeof(double) == sizeof (out)': unsafe casting check
  111 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:130:47: note: in instantiation of member function 'odc::codec::CodecIntegerOffset<odc::core::SameByteOrder, double, unsigned char, odc::codec::CodecInt8<odc::core::SameByteOrder, double>>::decode' requested here
  130 |             return std::unique_ptr<Codec>(new CODEC_T<SameByteOrder, double>(type));
      |                                               ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:121:5: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt8>::make' requested here
  121 |     IntegerCodecBuilder() : CodecBuilderBase(CODEC_T<SameByteOrder, double>::codec_name()) {}
      |     ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.cc:23:42: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt8>::IntegerCodecBuilder' requested here
   23 |     core::IntegerCodecBuilder<CodecInt8> int8Builder;
      |                                          ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:111:41: note: expression evaluates to '8 == 4'
  111 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:111:23: error: static assertion failed due to requirement 'sizeof(long long) == sizeof (out)': unsafe casting check
  111 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:135:47: note: in instantiation of member function 'odc::codec::CodecIntegerOffset<odc::core::OtherByteOrder, long long, unsigned char, odc::codec::CodecInt8<odc::core::OtherByteOrder, long long>>::decode' requested here
  135 |             return std::unique_ptr<Codec>(new CODEC_T<OtherByteOrder, int64_t>(type));
      |                                               ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:121:5: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt8>::make' requested here
  121 |     IntegerCodecBuilder() : CodecBuilderBase(CODEC_T<SameByteOrder, double>::codec_name()) {}
      |     ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.cc:23:42: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt8>::IntegerCodecBuilder' requested here
   23 |     core::IntegerCodecBuilder<CodecInt8> int8Builder;
      |                                          ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:111:41: note: expression evaluates to '8 == 4'
  111 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:111:23: error: static assertion failed due to requirement 'sizeof(double) == sizeof (out)': unsafe casting check
  111 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:137:47: note: in instantiation of member function 'odc::codec::CodecIntegerOffset<odc::core::OtherByteOrder, double, unsigned char, odc::codec::CodecInt8<odc::core::OtherByteOrder, double>>::decode' requested here
  137 |             return std::unique_ptr<Codec>(new CODEC_T<OtherByteOrder, double>(type));
      |                                               ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:121:5: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt8>::make' requested here
  121 |     IntegerCodecBuilder() : CodecBuilderBase(CODEC_T<SameByteOrder, double>::codec_name()) {}
      |     ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.cc:23:42: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt8>::IntegerCodecBuilder' requested here
   23 |     core::IntegerCodecBuilder<CodecInt8> int8Builder;
      |                                          ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:111:41: note: expression evaluates to '8 == 4'
  111 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:111:23: error: static assertion failed due to requirement 'sizeof(long long) == sizeof (out)': unsafe casting check
  111 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:128:47: note: in instantiation of member function 'odc::codec::CodecIntegerOffset<odc::core::SameByteOrder, long long, unsigned short, odc::codec::CodecInt16<odc::core::SameByteOrder, long long>>::decode' requested here
  128 |             return std::unique_ptr<Codec>(new CODEC_T<SameByteOrder, int64_t>(type));
      |                                               ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:121:5: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt16>::make' requested here
  121 |     IntegerCodecBuilder() : CodecBuilderBase(CODEC_T<SameByteOrder, double>::codec_name()) {}
      |     ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.cc:24:43: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt16>::IntegerCodecBuilder' requested here
   24 |     core::IntegerCodecBuilder<CodecInt16> int16Builder;
      |                                           ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:111:41: note: expression evaluates to '8 == 4'
  111 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:111:23: error: static assertion failed due to requirement 'sizeof(double) == sizeof (out)': unsafe casting check
  111 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:130:47: note: in instantiation of member function 'odc::codec::CodecIntegerOffset<odc::core::SameByteOrder, double, unsigned short, odc::codec::CodecInt16<odc::core::SameByteOrder, double>>::decode' requested here
  130 |             return std::unique_ptr<Codec>(new CODEC_T<SameByteOrder, double>(type));
      |                                               ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:121:5: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt16>::make' requested here
  121 |     IntegerCodecBuilder() : CodecBuilderBase(CODEC_T<SameByteOrder, double>::codec_name()) {}
      |     ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.cc:24:43: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt16>::IntegerCodecBuilder' requested here
   24 |     core::IntegerCodecBuilder<CodecInt16> int16Builder;
      |                                           ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:111:41: note: expression evaluates to '8 == 4'
  111 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:111:23: error: static assertion failed due to requirement 'sizeof(long long) == sizeof (out)': unsafe casting check
  111 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:135:47: note: in instantiation of member function 'odc::codec::CodecIntegerOffset<odc::core::OtherByteOrder, long long, unsigned short, odc::codec::CodecInt16<odc::core::OtherByteOrder, long long>>::decode' requested here
  135 |             return std::unique_ptr<Codec>(new CODEC_T<OtherByteOrder, int64_t>(type));
      |                                               ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:121:5: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt16>::make' requested here
  121 |     IntegerCodecBuilder() : CodecBuilderBase(CODEC_T<SameByteOrder, double>::codec_name()) {}
      |     ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.cc:24:43: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt16>::IntegerCodecBuilder' requested here
   24 |     core::IntegerCodecBuilder<CodecInt16> int16Builder;
      |                                           ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:111:41: note: expression evaluates to '8 == 4'
  111 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:111:23: error: static assertion failed due to requirement 'sizeof(double) == sizeof (out)': unsafe casting check
  111 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:137:47: note: in instantiation of member function 'odc::codec::CodecIntegerOffset<odc::core::OtherByteOrder, double, unsigned short, odc::codec::CodecInt16<odc::core::OtherByteOrder, double>>::decode' requested here
  137 |             return std::unique_ptr<Codec>(new CODEC_T<OtherByteOrder, double>(type));
      |                                               ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:121:5: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt16>::make' requested here
  121 |     IntegerCodecBuilder() : CodecBuilderBase(CODEC_T<SameByteOrder, double>::codec_name()) {}
      |     ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.cc:24:43: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt16>::IntegerCodecBuilder' requested here
   24 |     core::IntegerCodecBuilder<CodecInt16> int16Builder;
      |                                           ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:111:41: note: expression evaluates to '8 == 4'
  111 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:151:23: error: static assertion failed due to requirement 'sizeof(long long) == sizeof (out)': unsafe casting check
  151 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:128:47: note: in instantiation of member function 'odc::codec::CodecIntegerDirect<odc::core::SameByteOrder, long long, int, odc::codec::CodecInt32<odc::core::SameByteOrder, long long>>::decode' requested here
  128 |             return std::unique_ptr<Codec>(new CODEC_T<SameByteOrder, int64_t>(type));
      |                                               ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:121:5: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt32>::make' requested here
  121 |     IntegerCodecBuilder() : CodecBuilderBase(CODEC_T<SameByteOrder, double>::codec_name()) {}
      |     ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.cc:25:43: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt32>::IntegerCodecBuilder' requested here
   25 |     core::IntegerCodecBuilder<CodecInt32> int32Builder;
      |                                           ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:151:41: note: expression evaluates to '8 == 4'
  151 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:151:23: error: static assertion failed due to requirement 'sizeof(double) == sizeof (out)': unsafe casting check
  151 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:130:47: note: in instantiation of member function 'odc::codec::CodecIntegerDirect<odc::core::SameByteOrder, double, int, odc::codec::CodecInt32<odc::core::SameByteOrder, double>>::decode' requested here
  130 |             return std::unique_ptr<Codec>(new CODEC_T<SameByteOrder, double>(type));
      |                                               ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:121:5: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt32>::make' requested here
  121 |     IntegerCodecBuilder() : CodecBuilderBase(CODEC_T<SameByteOrder, double>::codec_name()) {}
      |     ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.cc:25:43: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt32>::IntegerCodecBuilder' requested here
   25 |     core::IntegerCodecBuilder<CodecInt32> int32Builder;
      |                                           ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:151:41: note: expression evaluates to '8 == 4'
  151 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:151:23: error: static assertion failed due to requirement 'sizeof(long long) == sizeof (out)': unsafe casting check
  151 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:135:47: note: in instantiation of member function 'odc::codec::CodecIntegerDirect<odc::core::OtherByteOrder, long long, int, odc::codec::CodecInt32<odc::core::OtherByteOrder, long long>>::decode' requested here
  135 |             return std::unique_ptr<Codec>(new CODEC_T<OtherByteOrder, int64_t>(type));
      |                                               ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:121:5: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt32>::make' requested here
  121 |     IntegerCodecBuilder() : CodecBuilderBase(CODEC_T<SameByteOrder, double>::codec_name()) {}
      |     ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.cc:25:43: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt32>::IntegerCodecBuilder' requested here
   25 |     core::IntegerCodecBuilder<CodecInt32> int32Builder;
      |                                           ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:151:41: note: expression evaluates to '8 == 4'
  151 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:151:23: error: static assertion failed due to requirement 'sizeof(double) == sizeof (out)': unsafe casting check
  151 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:137:47: note: in instantiation of member function 'odc::codec::CodecIntegerDirect<odc::core::OtherByteOrder, double, int, odc::codec::CodecInt32<odc::core::OtherByteOrder, double>>::decode' requested here
  137 |             return std::unique_ptr<Codec>(new CODEC_T<OtherByteOrder, double>(type));
      |                                               ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/core/CodecFactory.h:121:5: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt32>::make' requested here
  121 |     IntegerCodecBuilder() : CodecBuilderBase(CODEC_T<SameByteOrder, double>::codec_name()) {}
      |     ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.cc:25:43: note: in instantiation of member function 'odc::core::IntegerCodecBuilder<odc::codec::CodecInt32>::IntegerCodecBuilder' requested here
   25 |     core::IntegerCodecBuilder<CodecInt32> int32Builder;
      |                                           ^
/src/packages/libodc/build/libodc-1.5.2/src/odc/codec/Integer.h:151:41: note: expression evaluates to '8 == 4'
  151 |         static_assert(sizeof(ValueType) == sizeof(out), "unsafe casting check");
      |                       ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
12 errors generated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants