equinor / dlisio

Python library for working with the well log formats Digital Log Interchange Standard (DLIS V1) and Log Information Standard (LIS79)
https://dlisio.readthedocs.io/en/latest/
Other
121 stars 39 forks source link

Version 0.3.6 will not build on Alpine 3.16/gcc 11.2.1 #415

Closed ejschoen closed 2 years ago

ejschoen commented 2 years ago

It looks like lib/test/lis/types.cpp needs to #include <limits>

/work/dlisio/build # cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DMAKE_EXPORT_COMPILE_COMMANDS=ON -DPYTHON_EXECUTABLE=/usr/local/bin/python3.8 && cd .. && cmake --build build --target install
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DMAKE_EXPORT_COMPILE_COMMANDS=ON -DPYTHON_EXECUTABLE=/usr/local/bin/python3.8 && cd .. && cmake --build build --target install
-- The C compiler identification is GNU 11.2.1
-- The CXX compiler identification is GNU 11.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PythonInterp: /usr/local/bin/python3.8  
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    MAKE_EXPORT_COMPILE_COMMANDS

-- Build files have been written to: /work/dlisio/build
[  0%] Built target doc
[  4%] Building CXX object lib/CMakeFiles/dlisio.dir/src/dlis/dlisio.cpp.o
[  8%] Building CXX object lib/CMakeFiles/dlisio.dir/src/dlis/types.cpp.o
[ 12%] Building CXX object lib/CMakeFiles/dlisio.dir/src/dlis/records.cpp.o
[ 16%] Building CXX object lib/CMakeFiles/dlisio.dir/src/dlis/io.cpp.o
[ 20%] Building CXX object lib/CMakeFiles/dlisio.dir/src/lis/protocol.cpp.o
[ 25%] Building CXX object lib/CMakeFiles/dlisio.dir/src/lis/types.cpp.o
[ 29%] Building CXX object lib/CMakeFiles/dlisio.dir/src/lis/pack.cpp.o
[ 33%] Building CXX object lib/CMakeFiles/dlisio.dir/src/lis/io.cpp.o
[ 37%] Building CXX object lib/CMakeFiles/dlisio.dir/src/file.cpp.o
[ 41%] Building CXX object lib/CMakeFiles/dlisio.dir/src/tapemark.cpp.o
[ 45%] Linking CXX shared library libdlisio.so
[ 45%] Built target dlisio
[ 50%] Building CXX object lib/CMakeFiles/test-dlis.dir/test/testsuite.cpp.o
[ 54%] Building CXX object lib/CMakeFiles/test-dlis.dir/test/dlis/protocol.cpp.o
[ 58%] Building CXX object lib/CMakeFiles/test-dlis.dir/test/dlis/types.cpp.o
[ 62%] Building CXX object lib/CMakeFiles/test-dlis.dir/test/dlis/sul.cpp.o
[ 66%] Building CXX object lib/CMakeFiles/test-dlis.dir/test/dlis/pack.cpp.o
[ 70%] Linking CXX executable test-dlis
[ 70%] Built target test-dlis
[ 75%] Building CXX object lib/CMakeFiles/test-lis.dir/test/testsuite.cpp.o
[ 79%] Building CXX object lib/CMakeFiles/test-lis.dir/test/lis/types.cpp.o
/work/dlisio/lib/test/lis/types.cpp: In function 'void ____C_A_T_C_H____T_E_S_T____0()':
/work/dlisio/lib/test/lis/types.cpp:31:14: error: 'numeric_limits' is not a member of 'std'
   31 |         std::numeric_limits< std::int8_t >::max(),
      |              ^~~~~~~~~~~~~~
/work/dlisio/lib/test/lis/types.cpp:31:42: error: expected primary-expression before '>' token
   31 |         std::numeric_limits< std::int8_t >::max(),
      |                                          ^
/work/dlisio/lib/test/lis/types.cpp:31:45: error: '::max' has not been declared; did you mean 'std::max'?
   31 |         std::numeric_limits< std::int8_t >::max(),
      |                                             ^~~
      |                                             std::max
In file included from /usr/include/c++/11.2.1/algorithm:62,
                 from /work/dlisio/external/catch2/catch2/catch.hpp:2550,
                 from /work/dlisio/lib/test/lis/types.cpp:8:
/usr/include/c++/11.2.1/bits/stl_algo.h:3467:5: note: 'std::max' declared here
 3467 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/work/dlisio/lib/test/lis/types.cpp:33:14: error: 'numeric_limits' is not a member of 'std'
   33 |         std::numeric_limits< std::int8_t >::min(),
      |              ^~~~~~~~~~~~~~
/work/dlisio/lib/test/lis/types.cpp:33:42: error: expected primary-expression before '>' token
   33 |         std::numeric_limits< std::int8_t >::min(),
      |                                          ^
/work/dlisio/lib/test/lis/types.cpp:33:45: error: '::min' has not been declared; did you mean 'std::min'?
   33 |         std::numeric_limits< std::int8_t >::min(),
      |                                             ^~~
      |                                             std::min
In file included from /usr/include/c++/11.2.1/algorithm:62,
                 from /work/dlisio/external/catch2/catch2/catch.hpp:2550,
                 from /work/dlisio/lib/test/lis/types.cpp:8:
/usr/include/c++/11.2.1/bits/stl_algo.h:3455:5: note: 'std::min' declared here
 3455 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/work/dlisio/lib/test/lis/types.cpp: In function 'void ____C_A_T_C_H____T_E_S_T____2()':
/work/dlisio/lib/test/lis/types.cpp:61:14: error: 'numeric_limits' is not a member of 'std'
   61 |         std::numeric_limits< std::int16_t >::max(),
      |              ^~~~~~~~~~~~~~
/work/dlisio/lib/test/lis/types.cpp:61:43: error: expected primary-expression before '>' token
   61 |         std::numeric_limits< std::int16_t >::max(),
      |                                           ^
/work/dlisio/lib/test/lis/types.cpp:61:46: error: '::max' has not been declared; did you mean 'std::max'?
   61 |         std::numeric_limits< std::int16_t >::max(),
      |                                              ^~~
      |                                              std::max
In file included from /usr/include/c++/11.2.1/algorithm:62,
                 from /work/dlisio/external/catch2/catch2/catch.hpp:2550,
                 from /work/dlisio/lib/test/lis/types.cpp:8:
/usr/include/c++/11.2.1/bits/stl_algo.h:3467:5: note: 'std::max' declared here
 3467 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/work/dlisio/lib/test/lis/types.cpp:64:14: error: 'numeric_limits' is not a member of 'std'
   64 |         std::numeric_limits< std::int16_t >::min(),
      |              ^~~~~~~~~~~~~~
/work/dlisio/lib/test/lis/types.cpp:64:43: error: expected primary-expression before '>' token
   64 |         std::numeric_limits< std::int16_t >::min(),
      |                                           ^
/work/dlisio/lib/test/lis/types.cpp:64:46: error: '::min' has not been declared; did you mean 'std::min'?
   64 |         std::numeric_limits< std::int16_t >::min(),
      |                                              ^~~
      |                                              std::min
In file included from /usr/include/c++/11.2.1/algorithm:62,
                 from /work/dlisio/external/catch2/catch2/catch.hpp:2550,
                 from /work/dlisio/lib/test/lis/types.cpp:8:
/usr/include/c++/11.2.1/bits/stl_algo.h:3455:5: note: 'std::min' declared here
 3455 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/work/dlisio/lib/test/lis/types.cpp: In function 'void ____C_A_T_C_H____T_E_S_T____4()':
/work/dlisio/lib/test/lis/types.cpp:91:14: error: 'numeric_limits' is not a member of 'std'
   91 |         std::numeric_limits< std::int32_t >::max(),
      |              ^~~~~~~~~~~~~~
/work/dlisio/lib/test/lis/types.cpp:91:43: error: expected primary-expression before '>' token
   91 |         std::numeric_limits< std::int32_t >::max(),
      |                                           ^
/work/dlisio/lib/test/lis/types.cpp:91:46: error: '::max' has not been declared; did you mean 'std::max'?
   91 |         std::numeric_limits< std::int32_t >::max(),
      |                                              ^~~
      |                                              std::max
In file included from /usr/include/c++/11.2.1/algorithm:62,
                 from /work/dlisio/external/catch2/catch2/catch.hpp:2550,
                 from /work/dlisio/lib/test/lis/types.cpp:8:
/usr/include/c++/11.2.1/bits/stl_algo.h:3467:5: note: 'std::max' declared here
 3467 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/work/dlisio/lib/test/lis/types.cpp:94:14: error: 'numeric_limits' is not a member of 'std'
   94 |         std::numeric_limits< ::int32_t >::min(),
      |              ^~~~~~~~~~~~~~
/work/dlisio/lib/test/lis/types.cpp:94:40: error: expected primary-expression before '>' token
   94 |         std::numeric_limits< ::int32_t >::min(),
      |                                        ^
/work/dlisio/lib/test/lis/types.cpp:94:43: error: '::min' has not been declared; did you mean 'std::min'?
   94 |         std::numeric_limits< ::int32_t >::min(),
      |                                           ^~~
      |                                           std::min
In file included from /usr/include/c++/11.2.1/algorithm:62,
                 from /work/dlisio/external/catch2/catch2/catch.hpp:2550,
                 from /work/dlisio/lib/test/lis/types.cpp:8:
/usr/include/c++/11.2.1/bits/stl_algo.h:3455:5: note: 'std::min' declared here
 3455 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
In file included from /work/dlisio/lib/test/lis/types.cpp:8:
/work/dlisio/lib/test/lis/types.cpp: In function 'void ____C_A_T_C_H____T_E_S_T____8()':
/work/dlisio/lib/test/lis/types.cpp:179:26: error: 'numeric_limits' is not a member of 'std'
  179 |         CHECK (v <= std::numeric_limits<float>::max());
      |                          ^~~~~~~~~~~~~~
/work/dlisio/lib/test/lis/types.cpp:179:41: error: expected primary-expression before 'float'
  179 |         CHECK (v <= std::numeric_limits<float>::max());
      |                                         ^~~~~
/work/dlisio/lib/test/lis/types.cpp:179:26: error: 'numeric_limits' is not a member of 'std'
  179 |         CHECK (v <= std::numeric_limits<float>::max());
      |                          ^~~~~~~~~~~~~~
/work/dlisio/lib/test/lis/types.cpp:179:41: error: expected primary-expression before 'float'
  179 |         CHECK (v <= std::numeric_limits<float>::max());
      |                                         ^~~~~
/work/dlisio/lib/test/lis/types.cpp:179:41: error: expected ')' before 'float'
/work/dlisio/lib/test/lis/types.cpp:179:9: note: to match this '('
  179 |         CHECK (v <= std::numeric_limits<float>::max());
      |         ^~~~~
/work/dlisio/lib/test/lis/types.cpp:179:55: error: expected ')' before ';' token
  179 |         CHECK (v <= std::numeric_limits<float>::max());
      |                                                       ^
/work/dlisio/lib/test/lis/types.cpp:179:55: error: expected ')' before ';' token
In file included from /work/dlisio/lib/test/lis/types.cpp:8:
/work/dlisio/lib/test/lis/types.cpp:179:9: note: to match this '('
  179 |         CHECK (v <= std::numeric_limits<float>::max());
      |         ^~~~~
/work/dlisio/lib/test/lis/types.cpp:190:25: error: 'numeric_limits' is not a member of 'std'
  190 |         CHECK (v > std::numeric_limits<float>::lowest());
      |                         ^~~~~~~~~~~~~~
/work/dlisio/lib/test/lis/types.cpp:190:40: error: expected primary-expression before 'float'
  190 |         CHECK (v > std::numeric_limits<float>::lowest());
      |                                        ^~~~~
/work/dlisio/lib/test/lis/types.cpp:190:25: error: 'numeric_limits' is not a member of 'std'
  190 |         CHECK (v > std::numeric_limits<float>::lowest());
      |                         ^~~~~~~~~~~~~~
/work/dlisio/lib/test/lis/types.cpp:190:40: error: expected primary-expression before 'float'
  190 |         CHECK (v > std::numeric_limits<float>::lowest());
      |                                        ^~~~~
/work/dlisio/lib/test/lis/types.cpp:190:40: error: expected ')' before 'float'
/work/dlisio/lib/test/lis/types.cpp:190:9: note: to match this '('
  190 |         CHECK (v > std::numeric_limits<float>::lowest());
      |         ^~~~~
/work/dlisio/lib/test/lis/types.cpp:190:57: error: expected ')' before ';' token
  190 |         CHECK (v > std::numeric_limits<float>::lowest());
      |                                                         ^
/work/dlisio/lib/test/lis/types.cpp:190:57: error: expected ')' before ';' token
In file included from /work/dlisio/lib/test/lis/types.cpp:8:
/work/dlisio/lib/test/lis/types.cpp:190:9: note: to match this '('
  190 |         CHECK (v > std::numeric_limits<float>::lowest());
      |         ^~~~~
/work/dlisio/lib/test/lis/types.cpp: In function 'void ____C_A_T_C_H____T_E_S_T____15()':
/work/dlisio/lib/test/lis/types.cpp:281:26: error: 'numeric_limits' is not a member of 'std'
  281 |         CHECK (v <= std::numeric_limits<float>::max());
      |                          ^~~~~~~~~~~~~~
/work/dlisio/lib/test/lis/types.cpp:281:41: error: expected primary-expression before 'float'
  281 |         CHECK (v <= std::numeric_limits<float>::max());
      |                                         ^~~~~
/work/dlisio/lib/test/lis/types.cpp:281:26: error: 'numeric_limits' is not a member of 'std'
  281 |         CHECK (v <= std::numeric_limits<float>::max());
      |                          ^~~~~~~~~~~~~~
/work/dlisio/lib/test/lis/types.cpp:281:41: error: expected primary-expression before 'float'
  281 |         CHECK (v <= std::numeric_limits<float>::max());
      |                                         ^~~~~
/work/dlisio/lib/test/lis/types.cpp:281:41: error: expected ')' before 'float'
/work/dlisio/lib/test/lis/types.cpp:281:9: note: to match this '('
  281 |         CHECK (v <= std::numeric_limits<float>::max());
      |         ^~~~~
/work/dlisio/lib/test/lis/types.cpp:281:55: error: expected ')' before ';' token
  281 |         CHECK (v <= std::numeric_limits<float>::max());
      |                                                       ^
/work/dlisio/lib/test/lis/types.cpp:281:55: error: expected ')' before ';' token
In file included from /work/dlisio/lib/test/lis/types.cpp:8:
/work/dlisio/lib/test/lis/types.cpp:281:9: note: to match this '('
  281 |         CHECK (v <= std::numeric_limits<float>::max());
      |         ^~~~~
/work/dlisio/lib/test/lis/types.cpp:299:26: error: 'numeric_limits' is not a member of 'std'
  299 |         CHECK (v >= std::numeric_limits<float>::lowest());
      |                          ^~~~~~~~~~~~~~
/work/dlisio/lib/test/lis/types.cpp:299:41: error: expected primary-expression before 'float'
  299 |         CHECK (v >= std::numeric_limits<float>::lowest());
      |                                         ^~~~~
/work/dlisio/lib/test/lis/types.cpp:299:26: error: 'numeric_limits' is not a member of 'std'
  299 |         CHECK (v >= std::numeric_limits<float>::lowest());
      |                          ^~~~~~~~~~~~~~
/work/dlisio/lib/test/lis/types.cpp:299:41: error: expected primary-expression before 'float'
  299 |         CHECK (v >= std::numeric_limits<float>::lowest());
      |                                         ^~~~~
/work/dlisio/lib/test/lis/types.cpp:299:41: error: expected ')' before 'float'
/work/dlisio/lib/test/lis/types.cpp:299:9: note: to match this '('
  299 |         CHECK (v >= std::numeric_limits<float>::lowest());
      |         ^~~~~
/work/dlisio/lib/test/lis/types.cpp:299:58: error: expected ')' before ';' token
  299 |         CHECK (v >= std::numeric_limits<float>::lowest());
      |                                                          ^
/work/dlisio/lib/test/lis/types.cpp:299:58: error: expected ')' before ';' token
In file included from /work/dlisio/lib/test/lis/types.cpp:8:
/work/dlisio/lib/test/lis/types.cpp:299:9: note: to match this '('
  299 |         CHECK (v >= std::numeric_limits<float>::lowest());
      |         ^~~~~
/work/dlisio/lib/test/lis/types.cpp: In function 'void ____C_A_T_C_H____T_E_S_T____38()':
/work/dlisio/lib/test/lis/types.cpp:521:14: error: 'numeric_limits' is not a member of 'std'
  521 |         std::numeric_limits< std::uint8_t >::max(),
      |              ^~~~~~~~~~~~~~
/work/dlisio/lib/test/lis/types.cpp:521:43: error: expected primary-expression before '>' token
  521 |         std::numeric_limits< std::uint8_t >::max(),
      |                                           ^
/work/dlisio/lib/test/lis/types.cpp:521:46: error: '::max' has not been declared; did you mean 'std::max'?
  521 |         std::numeric_limits< std::uint8_t >::max(),
      |                                              ^~~
      |                                              std::max
In file included from /usr/include/c++/11.2.1/algorithm:62,
                 from /work/dlisio/external/catch2/catch2/catch.hpp:2550,
                 from /work/dlisio/lib/test/lis/types.cpp:8:
/usr/include/c++/11.2.1/bits/stl_algo.h:3467:5: note: 'std::max' declared here
 3467 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
make[2]: *** [lib/CMakeFiles/test-lis.dir/build.make:90: lib/CMakeFiles/test-lis.dir/test/lis/types.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:992: lib/CMakeFiles/test-lis.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
ErlendHaa commented 2 years ago

Thanks for the report. Does including limits solve it for you?

ejschoen commented 2 years ago

Yes. But for other reasons I had to switch my Docker container build from Alpine 3.16 to 3.15 and the problem went away. Nonetheless, adding limits seems harmless and would address any future issues related to refactoring of the std libraries that might leave numeric limits inaccessible.

Eric

On Jun 1, 2022, at 09:24, Erlend Hårstad @.***> wrote:

 Thanks for the report. Does including limits solve it for you?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.

ErlendHaa commented 2 years ago

For sure, I will add it.

ErlendHaa commented 2 years ago

Resolved by #416