Weiming-Hu / AnalogsEnsemble

The C++ and R packages for parallel ensemble forecasts using Analog Ensemble
https://weiming-hu.github.io/AnalogsEnsemble/
MIT License
18 stars 5 forks source link

Error during RAnEn installation #68

Closed cervone closed 4 years ago

cervone commented 4 years ago

Describe the bug

Encountered an error during RAnEn installtion

Error Message

From R

trying URL 'https://github.com/Weiming-Hu/AnalogsEnsemble/raw/master/RAnalogs/releases/RAnEn_latest.tar.gz'
Content type 'application/octet-stream' length 170664 bytes (166 KB)
==================================================
downloaded 166 KB

* installing *source* package ‘RAnEn’ ...
** using staged installation
Checking whether R_HOME is already set? R_HOME = /Library/Frameworks/R.framework/Resources
checking whether the C++ compiler works... no
configure: error: in `/private/var/folders/f_/q4xhn5px6r3952xfmmdgx01c0000gn/T/Rtmpy4vgU1/R.INSTALL3b3323e64915/RAnEn':
configure: error: C++ compiler cannot create executables
See `config.log' for more details
ERROR: configuration failed for package ‘RAnEn’
* removing ‘/Library/Frameworks/R.framework/Versions/3.6/Resources/library/RAnEn’
* restoring previous ‘/Library/Frameworks/R.framework/Versions/3.6/Resources/library/RAnEn’
Warning in install.packages :
  installation of package ‘/var/folders/f_/q4xhn5px6r3952xfmmdgx01c0000gn/T//RtmptnjLPX/downloaded_packages/RAnEn_latest.tar.gz’ had non-zero exit status

From config.log

...
configure:1938: $? = 0
configure:1927: g++-8 -std=gnu++11 -V >&5
g++-8: error: unrecognized command line option '-V'
g++-8: fatal error: no input files
compilation terminated.
configure:1938: $? = 1
configure:1927: g++-8 -std=gnu++11 -qversion >&5
g++-8: error: unrecognized command line option '-qversion'; did you mean '--version'?
g++-8: fatal error: no input files
compilation terminated.
configure:1938: $? = 1
configure:1958: checking whether the C++ compiler works
configure:1980: g++-8 -std=gnu++11 -Wall -g -O2   conftest.cpp  >&5
ld: library not found for -lSystem
collect2: error: ld returned 1 exit status
configure:1984: $? = 1
configure:2022: result: no
configure: failed program was:
...

Desktop (please complete the following information):

cervone commented 4 years ago

This issue has been solved by upgrading gcc version from 8 to 9 using HomeBrew.

cervone commented 4 years ago

But there is another issue when installing with clang.

> install.packages("https://github.com/Weiming-Hu/AnalogsEnsemble/raw/master/RAnalogs/releases/RAnEn_latest.tar.gz", repos = NULL)
trying URL 'https://github.com/Weiming-Hu/AnalogsEnsemble/raw/master/RAnalogs/releases/RAnEn_latest.tar.gz'
Content type 'application/octet-stream' length 170664 bytes (166 KB)
==================================================
downloaded 166 KB

* installing *source* package ‘RAnEn’ ...
** using staged installation
Checking whether R_HOME is already set? R_HOME = /Library/Frameworks/R.framework/Resources
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether clang++ -std=gnu++11 accepts -g... yes
checking for clang++ -std=gnu++11 option to support OpenMP... unsupported
configure: creating ./config.status
config.status: creating src/Makevars
** libs
clang++ -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/BH/include" -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include  -fPIC  -Wall -g -O2  -c AnEn.cpp -o AnEn.o
clang++ -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/BH/include" -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include  -fPIC  -Wall -g -O2  -c Analogs.cpp -o Analogs.o
clang++ -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/BH/include" -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include  -fPIC  -Wall -g -O2  -c Array4D.cpp -o Array4D.o
clang++ -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/BH/include" -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include  -fPIC  -Wall -g -O2  -c Forecasts.cpp -o Forecasts.o
clang++ -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/BH/include" -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include  -fPIC  -Wall -g -O2  -c Functions.cpp -o Functions.o
clang++ -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/BH/include" -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include  -fPIC  -Wall -g -O2  -c Observations.cpp -o Observations.o
clang++ -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/BH/include" -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include  -fPIC  -Wall -g -O2  -c Parameters.cpp -o Parameters.o
clang++ -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/BH/include" -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include  -fPIC  -Wall -g -O2  -c RcppExports.cpp -o RcppExports.o
clang++ -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/BH/include" -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include  -fPIC  -Wall -g -O2  -c Rinterface.cpp -o Rinterface.o
clang++ -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.6/Resources/library/BH/include" -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include  -fPIC  -Wall -g -O2  -c SimilarityMatrices.cpp -o SimilarityMatrices.o
In file included from SimilarityMatrices.cpp:8:
In file included from ./SimilarityMatrices.h:15:
In file included from ./Forecasts.h:12:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ostream:138:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:216:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__locale:15:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:505:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string_view:176:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__string:57:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:2428:5: error: static_assert failed due to requirement '__is_forward_iterator<boost::detail::multi_array::array_iterator<double, double *, mpl_::size_t<2>, boost::detail::multi_array::sub_array<double, 1>, boost::iterators::random_access_traversal_tag> >::value' "std::min_element requires a ForwardIterator"
    static_assert(__is_forward_iterator<_ForwardIterator>::value,
    ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:3677:46: note: in instantiation of function template specialization 'std::__1::min_element<boost::detail::multi_array::array_iterator<double, double *, mpl_::size_t<2>, boost::detail::multi_array::sub_array<double, 1>, boost::iterators::random_access_traversal_tag>, SimilarityMatrices::matrixSort &>' requested here
        _BirdirectionalIterator __i = _VSTD::min_element<_BirdirectionalIterator,
                                             ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:5115:13: note: in instantiation of function template specialization 'std::__1::__selection_sort<SimilarityMatrices::matrixSort &, boost::detail::multi_array::array_iterator<double, double *, mpl_::size_t<2>, boost::detail::multi_array::sub_array<double, 1>, boost::iterators::random_access_traversal_tag> >' requested here
            __selection_sort<_Compare>(__first, __last, __comp);
            ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:5282:5: note: in instantiation of function template specialization 'std::__1::__nth_element<SimilarityMatrices::matrixSort &, boost::detail::multi_array::array_iterator<double, double *, mpl_::size_t<2>, boost::detail::multi_array::sub_array<double, 1>, boost::iterators::random_access_traversal_tag> >' requested here
    __nth_element<_Comp_ref>(__first, __nth, __last, __comp);
    ^
SimilarityMatrices.cpp:132:21: note: in instantiation of function template specialization 'std::__1::nth_element<boost::detail::multi_array::array_iterator<double, double *, mpl_::size_t<2>, boost::detail::multi_array::sub_array<double, 1>, boost::iterators::random_access_traversal_tag>, SimilarityMatrices::matrixSort>' requested here
                    nth_element((*this)[i][j][k].begin(),
                    ^
1 error generated.
make: *** [SimilarityMatrices.o] Error 1
ERROR: compilation failed for package ‘RAnEn’
* removing ‘/Library/Frameworks/R.framework/Versions/3.6/Resources/library/RAnEn’
* restoring previous ‘/Library/Frameworks/R.framework/Versions/3.6/Resources/library/RAnEn’
Warning in install.packages :
  installation of package ‘/var/folders/f_/q4xhn5px6r3952xfmmdgx01c0000gn/T//RtmptnjLPX/downloaded_packages/RAnEn_latest.tar.gz’ had non-zero exit status
cervone commented 4 years ago

This is my clang version info

$ clang --version
Apple clang version 11.0.0 (clang-1100.0.33.8)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Weiming-Hu commented 4 years ago

This is resolved in commit 6abff59.

The reason is that, since CMake 3.4, Mac OS SDK is automatically included during compilation, but the updated Clang compiler checks the type of object earlier than GNU compilers. Clang is complaining that the forward iterator does not exist, while in fact, it has a forward iterator in the end of the compilation process.

GNU does not have this problem.

So I disable the quick sort algorithm when Clang is used.