sneumann / mzR

This is the git repository matching the Bioconductor package mzR: parser for netCDF, mzXML, mzData and mzML files (mass spectrometry data)
40 stars 26 forks source link

Compilation of 2.24 fails on Manjaro/Arch Linux: MSData.hpp:425:18: error: ‘int64_t’ in namespace ‘std’ does not name a type #285

Open robert-winkler opened 1 year ago

robert-winkler commented 1 year ago

Hi, I'm trying to install mzR on a recent Manjaro/Arch Linux.

The process stops with various errors at:

g++ -std=gnu++11 -I"/usr/include/R/" -DNDEBUG -I./boost_aux/ -I./boost/ -I. -D_LARGEFILE_SOURCE -DHAVE_PWIZ_MZML_LIB -D_NODEBUG    -I'/usr/lib/R/library/Rcpp/include' -I'/usr/lib/R/library/Rhdf5lib/include' -I/usr/local/include    -fpic  -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/build/r/src=/usr/src/debug/r -flto=auto -ffat-lto-objects  -c RcppPwiz.cpp -o RcppPwiz.o
In file included from pwiz/data/msdata/MSDataFile.hpp:29,
                 from RcppPwiz.h:12,
                 from RcppPwiz.cpp:1:
pwiz/data/msdata/MSData.hpp:425:18: error: ‘int64_t’ in namespace ‘std’ does not name a type
  425 |     typedef std::int64_t value_type;
      |                  ^~~~~~~
pwiz/data/msdata/MSData.hpp:431:28: error: ‘value_type’ was not declared in this scope
  431 |     pwiz::util::BinaryData<value_type> data;
      |                            ^~~~~~~~~~
pwiz/data/msdata/MSData.hpp:431:38: error: template argument 1 is invalid
  431 |     pwiz::util::BinaryData<value_type> data;
      |                                      ^
In file included from pwiz/data/msdata/MSDataFile.hpp:31:
pwiz/data/msdata/BinaryDataEncoder.hpp:87:40: error: ‘int64_t’ is not a member of ‘std’
   87 |     void encode(const std::vector<std::int64_t>& data, std::string& result, size_t* binaryByteCount = NULL) const;
      |                                        ^~~~~~~
pwiz/data/msdata/BinaryDataEncoder.hpp:87:40: note: suggested alternatives:
In file included from /usr/include/sys/types.h:155,
                 from /usr/include/stdlib.h:395,
                 from /usr/include/c++/13.1.1/bits/std_abs.h:38,
                 from /usr/include/c++/13.1.1/cmath:49,
                 from /usr/lib/R/library/Rcpp/include/Rcpp/platform/compiler.h:100,
                 from /usr/lib/R/library/Rcpp/include/Rcpp/r/headers.h:62,
                 from /usr/lib/R/library/Rcpp/include/RcppCommon.h:30,
                 from /usr/lib/R/library/Rcpp/include/Rcpp.h:27,
                 from RcppPwiz.h:4:
/usr/include/bits/stdint-intn.h:27:19: note:   ‘int64_t’
   27 | typedef __int64_t int64_t;
      |                   ^~~~~~~
/usr/include/bits/stdint-intn.h:27:19: note:   ‘int64_t’
pwiz/data/msdata/BinaryDataEncoder.hpp:87:40: error: ‘int64_t’ is not a member of ‘std’
   87 |     void encode(const std::vector<std::int64_t>& data, std::string& result, size_t* binaryByteCount = NULL) const;
      |                                        ^~~~~~~
pwiz/data/msdata/BinaryDataEncoder.hpp:87:40: note: suggested alternatives:
/usr/include/bits/stdint-intn.h:27:19: note:   ‘int64_t’
   27 | typedef __int64_t int64_t;
      |                   ^~~~~~~
/usr/include/bits/stdint-intn.h:27:19: note:   ‘int64_t’
pwiz/data/msdata/BinaryDataEncoder.hpp:87:47: error: template argument 1 is invalid
   87 |     void encode(const std::vector<std::int64_t>& data, std::string& result, size_t* binaryByteCount = NULL) const;
      |                                               ^
pwiz/data/msdata/BinaryDataEncoder.hpp:87:47: error: template argument 2 is invalid
pwiz/data/msdata/BinaryDataEncoder.hpp:91:28: error: ‘int64_t’ in namespace ‘std’ does not name a type
   91 |     void encode(const std::int64_t* data, size_t dataSize, std::string& result, size_t* binaryByteCount = NULL) const;
      |                            ^~~~~~~
pwiz/data/msdata/BinaryDataEncoder.hpp:100:82: error: ‘int64_t’ is not a member of ‘std’
  100 |     void decode(const char *encodedData, size_t len, pwiz::util::BinaryData<std::int64_t>& result) const;
      |                                                                                  ^~~~~~~
pwiz/data/msdata/BinaryDataEncoder.hpp:100:82: note: suggested alternatives:
/usr/include/bits/stdint-intn.h:27:19: note:   ‘int64_t’
   27 | typedef __int64_t int64_t;
      |                   ^~~~~~~
/usr/include/bits/stdint-intn.h:27:19: note:   ‘int64_t’
pwiz/data/msdata/BinaryDataEncoder.hpp:100:82: error: ‘int64_t’ is not a member of ‘std’
  100 |     void decode(const char *encodedData, size_t len, pwiz::util::BinaryData<std::int64_t>& result) const;
      |                                                                                  ^~~~~~~
pwiz/data/msdata/BinaryDataEncoder.hpp:100:82: note: suggested alternatives:
/usr/include/bits/stdint-intn.h:27:19: note:   ‘int64_t’
   27 | typedef __int64_t int64_t;
      |                   ^~~~~~~
/usr/include/bits/stdint-intn.h:27:19: note:   ‘int64_t’
pwiz/data/msdata/BinaryDataEncoder.hpp:100:89: error: template argument 1 is invalid
  100 |     void decode(const char *encodedData, size_t len, pwiz::util::BinaryData<std::int64_t>& result) const;
      |                                                                                         ^
pwiz/data/msdata/BinaryDataEncoder.hpp:101:77: error: ‘int64_t’ is not a member of ‘std’
  101 |     void decode(const std::string& encodedData, pwiz::util::BinaryData<std::int64_t>& result) const
      |                                                                             ^~~~~~~
pwiz/data/msdata/BinaryDataEncoder.hpp:101:77: note: suggested alternatives:
/usr/include/bits/stdint-intn.h:27:19: note:   ‘int64_t’
   27 | typedef __int64_t int64_t;
      |                   ^~~~~~~
/usr/include/bits/stdint-intn.h:27:19: note:   ‘int64_t’
pwiz/data/msdata/BinaryDataEncoder.hpp:101:77: error: ‘int64_t’ is not a member of ‘std’
  101 |     void decode(const std::string& encodedData, pwiz::util::BinaryData<std::int64_t>& result) const
      |                                                                             ^~~~~~~
pwiz/data/msdata/BinaryDataEncoder.hpp:101:77: note: suggested alternatives:
/usr/include/bits/stdint-intn.h:27:19: note:   ‘int64_t’
   27 | typedef __int64_t int64_t;
      |                   ^~~~~~~
/usr/include/bits/stdint-intn.h:27:19: note:   ‘int64_t’
pwiz/data/msdata/BinaryDataEncoder.hpp:101:84: error: template argument 1 is invalid
  101 |     void decode(const std::string& encodedData, pwiz::util::BinaryData<std::int64_t>& result) const
      |                                                                                    ^
make: *** [/usr/lib64/R/etc/Makeconf:200: RcppPwiz.o] Error 1
ERROR: compilation failed for package ‘mzR’
* removing ‘/usr/lib/R/library/mzR’
sneumann commented 1 year ago

Hi, thanks for reporting ! Can you provide a bit more reproducing information ? Is there a docker container where we can use to reproduce ? I don't have a Manjaro handy. What gcc/g++ is involved ? What CPU (Intel/AMD, or Mac M1 ?) Yours, Steffen

sneumann commented 1 year ago

Will most likely be fixed together with #284 Yours, Steffen

sneumann commented 1 year ago

Hi, seems there is already a fix in the devel version, can you head over to https://github.com/sneumann/mzR/issues/284#issuecomment-1596966305 and check this fixes your issue and report back ? Yours, Steffen

robert-winkler commented 1 year ago

Fixed with https://github.com/sneumann/mzR/issues/284#issuecomment-1596966305

Thanks! Robert