On Sun, 21 Jan 2024 16:51:39 +0000 Sameh Abdulah <sameh.abdu...@kaust.edu.sa> wrote:
> However, we cannot access the webpage (page not found) to identify > and address the failures on Fedora systems. > > https://cran-archive.r-project.org/web/checks/2024/2024-01-12_check_results_MPCR.html > > How can we see the failures on these systems? I cannot help you with the exact output from the Fedora system (I think it's lost), but here's how the package fails on mine: * installing *source* package 'MPCR' ... ** using staged installation Linux ------------------------------------------------------------ /tmp/RtmpCSPOGc/Rbuild6043fb1a651/MPCR /usr/bin/cmake CMake is installed in: /usr/bin -- The C compiler identification is GNU 12.2.0 -- The CXX compiler identification is GNU 12.2.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/gcc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/g++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- WORKING ON RELEASE MODE MPCR Install Result : FALSE -- Found OpenMP_C: -fopenmp (found version "4.5") -- Found OpenMP_CXX: -fopenmp (found version "4.5") -- Found OpenMP: TRUE (found version "4.5") OpenMp Found R Include Path : /home/ivan/R-build/include Rcpp Lib Path : /home/ivan/R-build/library/Rcpp R Home Path : /home/ivan/R-build CMake Error at cmake/FindR.cmake:63 (find_library): Could not find R_LIB using the following names: libR.so Call Stack (most recent call first): CMakeLists.txt:70 (FIND_PACKAGE) -- Configuring incomplete, errors occurred! See also "/tmp/RtmpCSPOGc/Rbuild6043fb1a651/MPCR/bin/CMakeFiles/CMakeOutput.log". make: *** No rule to make target 'clean'. Stop. make: *** No rule to make target 'all'. Stop. cp: cannot stat '/tmp/RtmpCSPOGc/Rbuild6043fb1a651/MPCR/bin/src/libmpcr.so': No such file or directory Failed: libmpcr.so -> src ** libs make: Nothing to be done for 'all'. ** R ** inst ** byte-compile and prepare package for lazy loading ** help *** installing help indices ** building package indices ** installing vignettes ** testing if installed package can be loaded from temporary location Error: package or namespace load failed for 'MPCR' in library.dynam(lib, package, package.lib): shared object 'MPCR.so' not found It is not the default to build R as a shared library, and this installation of R has been built without --enable-R-shlib. I'm sure that with enough effort it's possible to propagate the information from R to CMake so that it would make you a shared library in the correct manner, but I think it's easier to separate your code into two parts: 1. One part should contain most of your code, without the dependencies on R. It can be built using CMake if that's what you prefer. It will probably be more convenient to build it as a static library. 2. The other part will be the R interface. Let the R build system (described in WRE 1.2 [*] and below, especially 1.2.6) link the final shared library from the small remaining part of the source files (those that include R-related headers) and the static library from the previous step. If you play your cards right, it will also work on Windows without significant additional effort. Have you considered linking your R package against the BLAS and LAPACK that already come with R? This may not give the user the best possible performance ever, but those who do care about performance have probably installed a copy of BLAS of their own choice and may not prefer an extra copy of OpenBLAS that may or may not match the optimal parameters for their hardware. Same goes for libgfortran (that may be required depending on what you're linking) [**]. This would also make it easier to comply with CRAN policy on external libraries [***]: if you want to download software during package installation, you may be required to host a fixed version of the package on something extra reliable (like Zenodo) and verify a cryptographic hash of the file you download before using it. -- Best regards, Ivan [*] https://cran.r-project.org/doc/manuals/R-exts.html#Configure-and-cleanup [**] https://cran.r-project.org/doc/manuals/R-exts.html#index-FLIBS [***] https://cran.r-project.org/web/packages/using_rust.html https://cran.r-project.org/web/packages/external_libs.html ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel