r-lib/processx

Installation from CRAN failed on Fedora 30

guivivi opened this issue · 6 comments

Hi, I have some trouble updating processx on Fedora 30. I already have the processx 3.4.1 version but I need to update it to be able to update the callr package (R is asking me for an updated version of callr to be able to republish a shiny app). However, I get this error:

> install.packages("processx")
/usr/bin/ld: /tmp/cci4NPhZ.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making un objeto PIE; recompile con -fPIC
/usr/bin/ld: falló el enlace final: nonrepresentable section on output
collect2: error: ld devolvió el estado de salida 1
make: *** [Makevars:14: tools/px] Error 1
ERROR: compilation failed for package ‘processx’

My info is:

> sessionInfo()
R version 3.6.3 (2020-02-29)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: Fedora 30 (Workstation Edition)

Matrix products: default
BLAS/LAPACK: /usr/lib64/R/lib/libRblas.so

locale:
 [1] LC_CTYPE=es_ES.UTF-8       LC_NUMERIC=C               LC_TIME=es_ES.UTF-8        LC_COLLATE=es_ES.UTF-8    
 [5] LC_MONETARY=es_ES.UTF-8    LC_MESSAGES=es_ES.UTF-8    LC_PAPER=es_ES.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=es_ES.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] compiler_3.6.3    tools_3.6.3       rstudioapi_0.15.0

Could you please help me? Many thanks.

That does not seem like an error with processx, but a broken or misconfigured R installation or system, possibly. Can you compile other packages from source?

In any case, it seems to work fine OOTB on Fedora 30 (unsupported for more than 3 years now, btw.), with the same R version. Example Dockerfile:

FROM fedora:30
RUN yum install -y R
RUN R -q -e 'install.packages("ps", repos = "https://cloud.r-project.org")'
RUN R -q -e 'install.packages("processx", repos = "https://cloud.r-project.org")'
RUN R -q -e 'processx::run("true")'
docker build -t fedora:processx .
docker run fedora:processx R -q -e 'processx::run("true")'
> processx::run("true")
$status
[1] 0

$stdout
[1] ""

$stderr
[1] ""

$timeout
[1] FALSE

Many thanks for the quick response. I have tried for example to install the stringi package from the source and it was successfully installed. I just ran the following:

> install.packages("stringi_1.8.2.tar.gz", repos = NULL, type = "source")

However, I tried the following both without success (the same error that I indicated in the first message appears):

install.packages("processx_3.8.2.tar.gz", repos = NULL, type = "source")
install.packages("processx", repos = "https://cloud.r-project.org")

Would you have any insight about that possible R misconfiguration?

I don't have a lot of ideas, unfortunately. Do you have an ~/.R/Makevars file? If yes, then try it without that file.

Yes, I have it. This is its content:

# Settings from /etc/R/Makeconf with "non-portable flag(s):"
# ‘-Wdate-time’ ‘-Werror=format-security’ ‘-Wformat’ replaced by -Wall -pedantic
# and without -fdebug-prefix-map=... 
CFLAGS = -g -O2 -Wall -pedantic -fstack-protector-strong -D_FORTIFY_SOURCE=2 $(LTO)
CXXFLAGS = -g -O2 -Wall -pedantic -fstack-protector-strong -D_FORTIFY_SOURCE=2 $(LTO)
CXX98FLAGS = -g -O2 -Wall -pedantic -fstack-protector-strong -D_FORTIFY_SOURCE=2
CXX11FLAGS = -g -O2 -Wall -pedantic -fstack-protector-strong -D_FORTIFY_SOURCE=2
CXX14FLAGS = -g -O2 -Wall -pedantic -fstack-protector-strong -D_FORTIFY_SOURCE=2

How can I try without that file? Do I have to remove it?

It seems harmless, so I don't think this is the problem, but it is worth a try:

mv ~/.R/Makevars ~/.R/Makevars.bak

You can move it back later if you want to:

mv ~/.R/Makevars.bak ~/.R/Makevars

By running mv ~/.R/Makevars ~/.R/Makevars.bak in the terminal, indeed I have been able to install processx, then callr and finally to update my shiny app in the server.
Many thanks for your help.