[R-pkg-devel] Win-builder not finding binaries provided by LinkingTo: cargo?

David Norris d@v|d @end|ng |rom prec|@|onmethod@@guru
Tue Apr 6 21:09:02 CEST 2021


For version 0.2-2 of my ‘precautionary’ package, I have added fast numerical routines implemented in Rust.
In my DESCRIPTION file, I am “LinkingTo: cargo (>= 0.1.28)”, but fail incoming check on Win-builder as follows:
https://win-builder.r-project.org/incoming_pretest/precautionary_0.2-2_20210406_142130/Windows/00install.out

* installing *source* package 'precautionary' ...
** using staged installation
** libs

*** arch - i386
rm -Rf precautionary.dll ./rust/target/i686-pc-windows-gnu/release/libprecautionary.a entrypoint.o
d:/Compiler/rtools40/mingw32/bin/gcc  -I"D:/RCompile/recent/R/include" -DNDEBUG  -I'd:/RCompile/CRANpkg/lib/4.1/cargo/include'   -I"d:/Compiler/gcc-4.9.3/local330/include"     -pedantic -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c entrypoint.c -o entrypoint.o
cargo build --target=i686-pc-windows-gnu --lib --release --manifest-path=./rust/Cargo.toml
make: cargo: Command not found
make: *** [Makevars.win:11: rust/target/-pc-windows-gnu/release/libprecautionary.a] Error 127
ERROR: compilation failed for package 'precautionary'
* removing 'd:/RCompile/CRANincoming/R-devel/lib/precautionary'

As I understand the intention of package cargo https://CRAN.R-project.org/package=cargo, it aims to solve precisely this problem.
Other platforms check my package just fine.
Is the solution to be found in configuration of Win-builder, in my Makevars.win, or elsewhere?
I have taken my Makevars.win straight from https://github.com/extendr/helloextendr/blob/main/src/Makevars.win as follows:


TARGET = $(subst 64,x86_64,$(subst 32,i686,$(WIN)))-pc-windows-gnu

LIBDIR = ./rust/target/$(TARGET)/release

STATLIB = $(LIBDIR)/libprecautionary.a

PKG_LIBS = -L$(LIBDIR) -lprecautionary -lws2_32 -ladvapi32 -luserenv



all: C_clean



$(SHLIB): $(STATLIB)



$(STATLIB):

        cargo build --target=$(TARGET) --lib --release --manifest-path=./rust/Cargo.toml



C_clean:

        rm -Rf $(SHLIB) $(STATLIB) $(OBJECTS)



clean:

        rm -Rf $(SHLIB) $(STATLIB) $(OBJECTS) rust/target


	[[alternative HTML version deleted]]



More information about the R-package-devel mailing list