asardaes / dtwclust

R Package for Time Series Clustering Along with Optimizations for DTW
https://cran.r-project.org/package=dtwclust
GNU General Public License v3.0
252 stars 29 forks source link

Compilation failed #42

Closed albhasan closed 5 years ago

albhasan commented 5 years ago

Good afternoon,

I cannot install due to a compilation error. I'm running

install.packages("dtwclust")

And I get:

Installing package into ‘/home/my_user/Rpackages’
(as ‘lib’ is unspecified)
trying URL 'https://cloud.r-project.org/src/contrib/dtwclust_5.5.4.tar.gz'
Content type 'application/x-gzip' length 2375674 bytes (2.3 MB)
==================================================
downloaded 2.3 MB

* installing *source* package ‘dtwclust’ ...
** package ‘dtwclust’ successfully unpacked and MD5 sums checked
** libs
g++ -std=gnu++11 -I"/usr/share/R/include" -DNDEBUG  -I"/home/my_user/Rpackages/Rcpp/include" -I"/home/my_user/Rpackages/RcppArmadillo/include" -I"/home/my_user/Rpackages/RcppParallel/include" -I"/home/my_user/Rpackages/RcppThread/include"   -DRCPP_USE_UNWIND_PROTECT -fpic  -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -c init.
cpp -o init.o
g++ -std=gnu++11 -I"/usr/share/R/include" -DNDEBUG  -I"/home/my_user/Rpackages/Rcpp/include" -I"/home/my_user/Rpackages/RcppArmadillo/include" -I"/home/my_user/Rpackages/RcppParallel/include" -I"/home/my_user/Rpackages/RcppThread/include"   -DRCPP_USE_UNWIND_PROTECT -fpic  -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -c centr
oids/sdtw-cent.cpp -o centroids/sdtw-cent.o
In file included from /home/my_user/Rpackages/RcppThread/include/RcppThread.h:11:0,
                 from centroids/../utils/ParallelWorker.h:8,
                 from centroids/sdtw-cent.cpp:13:
/home/my_user/Rpackages/RcppThread/include/RcppThread/Thread.hpp: In lambda function:
/home/my_user/Rpackages/RcppThread/include/RcppThread/Thread.hpp:42:19: error: parameter packs not expanded with ‘...’:
                 f(args...);
                   ^
/home/my_user/Rpackages/RcppThread/include/RcppThread/Thread.hpp:42:19: note:         ‘args’
/home/my_user/Rpackages/RcppThread/include/RcppThread/Thread.hpp:42:23: error: expansion pattern ‘args’ contains no argument packs
                 f(args...);
                       ^
In file included from /home/my_user/Rpackages/RcppThread/include/RcppThread.h:13:0,
                 from centroids/../utils/ParallelWorker.h:8,
                 from centroids/sdtw-cent.cpp:13:
/home/my_user/Rpackages/RcppThread/include/RcppThread/ThreadPool.hpp: In member function ‘void RcppThread::ThreadPool::push(F&&, Args&& ...)’:
/home/my_user/Rpackages/RcppThread/include/RcppThread/ThreadPool.hpp:127:31: error: expected ‘,’ before ‘...’ token
         jobs_.emplace([f, args...] { f(args...); });
                               ^
/home/my_user/Rpackages/RcppThread/include/RcppThread/ThreadPool.hpp:127:31: error: expected identifier before ‘...’ token
/home/my_user/Rpackages/RcppThread/include/RcppThread/ThreadPool.hpp:127:34: error: parameter packs not expanded with ‘...’:
         jobs_.emplace([f, args...] { f(args...); });
                                  ^
/home/my_user/Rpackages/RcppThread/include/RcppThread/ThreadPool.hpp:127:34: note:         ‘args’
/home/my_user/Rpackages/RcppThread/include/RcppThread/ThreadPool.hpp: In lambda function:
/home/my_user/Rpackages/RcppThread/include/RcppThread/ThreadPool.hpp:127:44: error: expansion pattern ‘args’ contains no argument packs
         jobs_.emplace([f, args...] { f(args...); });
                                            ^
/home/my_user/Rpackages/RcppThread/include/RcppThread/ThreadPool.hpp: In member function ‘std::future<decltype (f(args ...))> RcppThread::ThreadPool::pushReturn(F&&, Args&& ...)’:
/home/my_user/Rpackages/RcppThread/include/RcppThread/ThreadPool.hpp:144:54: error: expected ‘,’ before ‘...’ token
     auto job = std::make_shared<jobPackage>([&f, args...] {
                                                      ^
/home/my_user/Rpackages/RcppThread/include/RcppThread/ThreadPool.hpp:144:54: error: expected identifier before ‘...’ token
/home/my_user/Rpackages/RcppThread/include/RcppThread/ThreadPool.hpp:144:57: error: parameter packs not expanded with ‘...’:
     auto job = std::make_shared<jobPackage>([&f, args...] {
                                                         ^
/home/my_user/Rpackages/RcppThread/include/RcppThread/ThreadPool.hpp:144:57: note:         ‘args’
/home/my_user/Rpackages/RcppThread/include/RcppThread/ThreadPool.hpp: In lambda function:
/home/my_user/Rpackages/RcppThread/include/RcppThread/ThreadPool.hpp:145:22: error: expansion pattern ‘args’ contains no argument packs
         return f(args...);
                      ^
make: *** [centroids/sdtw-cent.o] Error 1
ERROR: compilation failed for package ‘dtwclust’
* removing ‘/home/my_user/Rpackages/dtwclust’

The downloaded source packages are in
        ‘/tmp/RtmpNqaE8l/downloaded_packages’
Warning message:
In install.packages("dtwclust") :
  installation of package ‘dtwclust’ had non-zero exit status

I also tried devtools::install_github("asardaes/dtwclust") with the same results, even after installing the package RSpectra (as suggested in #30). I'm running the following R:

$platform
[1] "x86_64-pc-linux-gnu"
$arch
[1] "x86_64"
$os
[1] "linux-gnu"
$system
[1] "x86_64, linux-gnu"
$status
[1] ""
$major
[1] "3"
$minor
[1] "5.1"
$year
[1] "2018"
$month
[1] "07"
$day
[1] "02"
$`svn rev`
[1] "74947"
$language
[1] "R"
$version.string
[1] "R version 3.5.1 (2018-07-02)"
$nickname
[1] "Feather Spray"

On this server:

Distributor ID: Ubuntu Description: Ubuntu 14.04.5 LTS Release: 14.04 Codename: trusty Linux my_server 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Thanks!

asardaes commented 5 years ago

Hello, apparently this is an incompatibility between RcppThread and older compilers, please refer to tnagler/RcppThread#13

albhasan commented 5 years ago

You're right!

I updated gcc from 4.8 to 4.9 (using the guide below) and it worked like a charm. Thanks!

How to switch GCC version using update-alternatives https://codeyarns.com/2015/02/26/how-to-switch-gcc-version-using-update-alternatives/