tidyverse / tidyr

Tidy Messy Data
https://tidyr.tidyverse.org/
Other
1.39k stars 420 forks source link

tidyr version 1.1.1 fails to install under R 3.6.0 #1012

Closed splaisan closed 4 years ago

splaisan commented 4 years ago

Hi,

I could install the new package on two other servers running R4 but not on that older rhel7 server running R 3.6.0 I tried installing with biocmanager and the built-in installer, same results

Not an expert but it seems that the 3.6 compiler is not happy with the new source I have cpp 0.1.0 installed and all my packages are reported as uptodate

Since RHEL7 does not install R4 yet, where can I find a version compatible with R 3.6.0?

Thanks for any hint

> remove.packages('tidyr')

> update.packages(checkBuilt = TRUE)

> install.packages('tidyr', repos='http://cran.rstudio.com/')
trying URL 'http://cran.rstudio.com/src/contrib/tidyr_1.1.1.tar.gz'
Content type 'application/x-gzip' length 879411 bytes (858 KB)
==================================================
downloaded 858 KB

* installing *source* package ‘tidyr’ ...
** package ‘tidyr’ successfully unpacked and MD5 sums checked
** using staged installation
** libs
g++ -m64 -std=gnu++11 -I"/usr/include/R" -DNDEBUG  -I"/opt/R_LIBS/cpp11/include" -I/usr/local/include  -fpic  -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic  -c cpp11.cpp -o cpp11.o
In file included from /opt/R_LIBS/cpp11/include/cpp11/as.hpp:8:0,
                 from /opt/R_LIBS/cpp11/include/cpp11.hpp:5,
                 from /opt/R_LIBS/cpp11/include/cpp11/declarations.hpp:8,
                 from cpp11.cpp:4:
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In lambda function:
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:185:52: error: parameter packs not expanded with ‘...’:
       return unwind_protect_sexp([&] { return ptr_(a...); });
                                                    ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:185:52: note:         ‘a’
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:185:53: error: expansion pattern ‘a’ contains no argument packs
       return unwind_protect_sexp([&] { return ptr_(a...); });
                                                     ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In lambda function:
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:202:38: error: parameter packs not expanded with ‘...’:
   unwind_protect([&] { Rf_error(fmt, args...); });
                                      ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:202:38: note:         ‘args’
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:202:42: error: expansion pattern ‘args’ contains no argument packs
   unwind_protect([&] { Rf_error(fmt, args...); });
                                          ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In lambda function:
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:207:46: error: parameter packs not expanded with ‘...’:
   unwind_protect([&] { Rf_error(fmt.c_str(), args...); });
                                              ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:207:46: note:         ‘args’
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:207:50: error: expansion pattern ‘args’ contains no argument packs
   unwind_protect([&] { Rf_error(fmt.c_str(), args...); });
                                                  ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In lambda function:
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:212:40: error: parameter packs not expanded with ‘...’:
   unwind_protect([&] { Rf_warning(fmt, args...); });
                                        ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:212:40: note:         ‘args’
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:212:44: error: expansion pattern ‘args’ contains no argument packs
   unwind_protect([&] { Rf_warning(fmt, args...); });
                                            ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In lambda function:
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:217:48: error: parameter packs not expanded with ‘...’:
   unwind_protect([&] { Rf_warning(fmt.c_str(), args...); });
                                                ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:217:48: note:         ‘args’
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:217:52: error: expansion pattern ‘args’ contains no argument packs
   unwind_protect([&] { Rf_warning(fmt.c_str(), args...); });
                                                    ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In instantiation of ‘struct cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {const char*, cetype_t}]::__lambda0’:
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:185:60:   required from ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {const char*, cetype_t}]’
/opt/R_LIBS/cpp11/include/cpp11/r_string.hpp:16:69:   required from here
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:185:52: error: using invalid field ‘cpp11::protect::function<R(A ...)>::operator()(A ...) const::__lambda0::__a’
       return unwind_protect_sexp([&] { return ptr_(a...); });
                                                    ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In instantiation of ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {const char*, cetype_t}]’:
/opt/R_LIBS/cpp11/include/cpp11/r_string.hpp:16:69:   required from here
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:186:5: error: body of constexpr function ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {const char*, cetype_t}]’ not a return-statement
     }
     ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In instantiation of ‘struct cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {unsigned int, long int}]::__lambda0’:
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:185:60:   required from ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {unsigned int, long int}]’
/opt/R_LIBS/cpp11/include/cpp11/list.hpp:70:67:   required from here
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:185:52: error: using invalid field ‘cpp11::protect::function<R(A ...)>::operator()(A ...) const::__lambda0::__a’
       return unwind_protect_sexp([&] { return ptr_(a...); });
                                                    ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In instantiation of ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {unsigned int, long int}]’:
/opt/R_LIBS/cpp11/include/cpp11/list.hpp:70:67:   required from here
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:186:5: error: body of constexpr function ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {unsigned int, long int}]’ not a return-statement
     }
     ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In instantiation of ‘struct cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {SEXPREC*, long int}]::__lambda0’:
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:185:60:   required from ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {SEXPREC*, long int}]’
/opt/R_LIBS/cpp11/include/cpp11/list.hpp:103:73:   required from here
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:185:52: error: using invalid field ‘cpp11::protect::function<R(A ...)>::operator()(A ...) const::__lambda0::__a’
       return unwind_protect_sexp([&] { return ptr_(a...); });
                                                    ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In instantiation of ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {SEXPREC*, long int}]’:
/opt/R_LIBS/cpp11/include/cpp11/list.hpp:103:73:   required from here
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:186:5: error: body of constexpr function ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {SEXPREC*, long int}]’ not a return-statement
     }
     ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In instantiation of ‘struct cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {const char*}]::__lambda0’:
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:185:60:   required from ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {const char*}]’
/opt/R_LIBS/cpp11/include/cpp11/function.hpp:59:50:   required from here
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:185:52: error: using invalid field ‘cpp11::protect::function<R(A ...)>::operator()(A ...) const::__lambda0::__a’
       return unwind_protect_sexp([&] { return ptr_(a...); });
                                                    ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In instantiation of ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {const char*}]’:
/opt/R_LIBS/cpp11/include/cpp11/function.hpp:59:50:   required from here
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:186:5: error: body of constexpr function ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {const char*}]’ not a return-statement
     }
     ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In instantiation of ‘struct cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {SEXPREC*, SEXPREC*}]::__lambda0’:
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:185:60:   required from ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {SEXPREC*, SEXPREC*}]’
/opt/R_LIBS/cpp11/include/cpp11/function.hpp:59:58:   required from here
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:185:52: error: using invalid field ‘cpp11::protect::function<R(A ...)>::operator()(A ...) const::__lambda0::__a’
       return unwind_protect_sexp([&] { return ptr_(a...); });
                                                    ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In instantiation of ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {SEXPREC*, SEXPREC*}]’:
/opt/R_LIBS/cpp11/include/cpp11/function.hpp:59:58:   required from here
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:186:5: error: body of constexpr function ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {SEXPREC*, SEXPREC*}]’ not a return-statement
     }
     ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In instantiation of ‘struct cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {SEXPREC*, SEXPREC*, Rboolean}]::__lambda0’:
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:185:60:   required from ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {SEXPREC*, SEXPREC*, Rboolean}]’
/opt/R_LIBS/cpp11/include/cpp11/environment.hpp:36:81:   required from here
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:185:52: error: using invalid field ‘cpp11::protect::function<R(A ...)>::operator()(A ...) const::__lambda0::__a’
       return unwind_protect_sexp([&] { return ptr_(a...); });
                                                    ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In instantiation of ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {SEXPREC*, SEXPREC*, Rboolean}]’:
/opt/R_LIBS/cpp11/include/cpp11/environment.hpp:36:81:   required from here
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:186:5: error: body of constexpr function ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {SEXPREC*, SEXPREC*, Rboolean}]’ not a return-statement
     }
     ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In instantiation of ‘struct cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {SEXPREC*}]::__lambda0’:
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:185:60:   required from ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {SEXPREC*}]’
/opt/R_LIBS/cpp11/include/cpp11/strings.hpp:73:45:   required from here
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:185:52: error: using invalid field ‘cpp11::protect::function<R(A ...)>::operator()(A ...) const::__lambda0::__a’
       return unwind_protect_sexp([&] { return ptr_(a...); });
                                                    ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In instantiation of ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {SEXPREC*}]’:
/opt/R_LIBS/cpp11/include/cpp11/strings.hpp:73:45:   required from here
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:186:5: error: body of constexpr function ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {SEXPREC*}]’ not a return-statement
     }
     ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In instantiation of ‘struct cpp11::stop(const char*, Args ...) [with Args = {}]::__lambda2’:
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:202:49:   required from ‘void cpp11::stop(const char*, Args ...) [with Args = {}]’
/opt/R_LIBS/cpp11/include/cpp11/as.hpp:77:39:   required from ‘cpp11::is_logical<T> cpp11::as_cpp(SEXP) [with T = bool; cpp11::is_logical<T> = bool; SEXP = SEXPREC*]’
cpp11.cpp:24:452:   required from here
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:202:38: error: using invalid field ‘cpp11::stop(const char*, Args ...)::__lambda2::__args’
   unwind_protect([&] { Rf_error(fmt, args...); });
                                      ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In member function ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {unsigned int, long int}]’:
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:186:5: warning: control reaches end of non-void function [-Wreturn-type]
     }
     ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In member function ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {const char*}]’:
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:186:5: warning: control reaches end of non-void function [-Wreturn-type]
     }
     ^
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp: In member function ‘constexpr R cpp11::protect::function<R(A ...)>::operator()(A ...) const [with R = SEXPREC*; A = {SEXPREC*, SEXPREC*}]’:
/opt/R_LIBS/cpp11/include/cpp11/protect.hpp:186:5: warning: control reaches end of non-void function [-Wreturn-type]
     }
     ^
make: *** [cpp11.o] Error 1
ERROR: compilation failed for package ‘tidyr’
* removing ‘/opt/R_LIBS/tidyr’
Warning in install.packages :
  installation of package ‘tidyr’ had non-zero exit status

The downloaded source packages are in
    ‘/opt/R_LIBS/tmp/RtmpBRpI2D/downloaded_packages’
sebastien-prudhomme commented 4 years ago

Same problem for me installing it on CentOS7 with R 4.0. I have some packages, like "spdep" that need a recent version of gcc.

Perhaps the same problem.

sebastien-prudhomme commented 4 years ago

Found that compiling version 1.0.3 is OK

splaisan commented 4 years ago

Thanks @sebastien-prudhomme, It will indeed be such a problem. I had version 1.0.3 installed before upgrading and removed it in an attempt to go to 1.1.1 with fresh install I will reinstall the older version if I need tidyr before a solution comes out

splaisan commented 4 years ago

I found a page detailing a way to accommodate difficult packages here and applied the same approach to tidyr with success. Hi @sebastien-prudhomme, please try it with your other packages ;-)

install.packages("tidyr", repos = "https://packagemanager.rstudio.com/cran/__linux__/centos7/latest")

I have now 1.1.0 installed without complain.