Closed
Description
I can successfully build and install Rcpp 1.0.13 with an R built from the current trunk (revision 87283). However, with an R version built from an R-4-4-branch checkout (revision 87276), I get the following error:
* installing *source* package ‘Rcpp’ ... ** package ‘Rcpp’ successfully unpacked and MD5 sums checked ** using staged installation ** libs using C++ compiler: ‘g++ (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0’ g++ -std=gnu++17 -I"/tmp/r-install/lib/R/include" -DNDEBUG -I../inst/include/ -I/usr/local/include -fpic -g -O2 -c api.cpp -o api.o g++ -std=gnu++17 -I"/tmp/r-install/lib/R/include" -DNDEBUG -I../inst/include/ -I/usr/local/include -fpic -g -O2 -c attributes.cpp -o attributes.o g++ -std=gnu++17 -I"/tmp/r-install/lib/R/include" -DNDEBUG -I../inst/include/ -I/usr/local/include -fpic -g -O2 -c barrier.cpp -o barrier.o In file included from barrier.cpp:31: barrier.cpp: In function ‘SEXPREC** get_vector_ptr(SEXP)’: ../inst/include/Rcpp/r/compat.h:34:26: error: ‘VECTOR_PTR_RO’ was not declared in this scope; did you mean ‘VECTOR_PTR’? 34 | # define RCPP_VECTOR_PTR VECTOR_PTR_RO | ^~~~~~~~~~~~~ barrier.cpp:74:30: note: in expansion of macro ‘RCPP_VECTOR_PTR’ 74 | return const_cast<SEXP*>(RCPP_VECTOR_PTR(x)); // #nocov end | ^~~~~~~~~~~~~~~ make: *** [/tmp/r-install/lib/R/etc/Makeconf:204: barrier.o] Error 1 ERROR: compilation failed for package ‘Rcpp’ * removing ‘/tmp/rcpp-install/lib/Rcpp’
9c5f71c (use read-only variants of {STRING/VECTOR}_PTR (#1317), 2024-07-11) added the following conditions:
#if R_VERSION >= R_Version(4, 4, 2) # define RCPP_STRING_PTR STRING_PTR_RO #else # define RCPP_STRING_PTR STRING_PTR #endif #if R_VERSION >= R_Version(4, 4, 2) # define RCPP_VECTOR_PTR VECTOR_PTR_RO #else # define RCPP_VECTOR_PTR VECTOR_PTR #endif
While it looks like STRING_PTR_RO
has been around since R 3.5.0, VECTOR_PTR_RO
isn't available until trunk@86694
(wch/r-source@85ee9ad34c). VECTOR_PTR_RO
is present in trunk but not the upcoming R 4.4.2 (i.e. the condition above is incorrect).
# confirmation by inspecting svn checkouts $ grep VECTOR_PTR_RO R-4-4-branch/include/Rinternals.h trunk/include/Rinternals.h trunk/include/Rinternals.h:const SEXP *(VECTOR_PTR_RO)(SEXP x); # confirmation by inspecting wch/r-source $ git for-each-ref --contains=85ee9ad34cff164ce3e7038f51ce0eee5db90469 refs/remotes c06d2576f10fc82a4e06120df79f32eeaf044f99 commit refs/remotes/origin/HEAD 37f8078802e29f98db40a6b287275a5043e16b06 commit refs/remotes/origin/R-more-NS c06d2576f10fc82a4e06120df79f32eeaf044f99 commit refs/remotes/origin/trunk
[ +cc @kevinushey ]
Metadata
Metadata
Assignees
Labels
No labels