Hello. I am at my wits end as to how to comply with CRAN regarding my Delaporte package which uses Fortran and OpenMP [1].
Recently, it was announced [2] that going forward, OpenMP should be linked with SHLIB_OPENMP_CFLAGS. Moreover, I received an email from Professor Ripley, stating: -------START Prof. Ripley------ There are two issues - Linking in R-devel is done by C or C++ even for F95 code, so PKG_LIBS needs to contain the appropriate macro, SHLIB_OPENMP_CFLAGS for all these packages. - SHLIB_OPENMP_FFLAGS is preferred to SHLIB_OPENMP_FCFLAGS There are two possibilities to correct this: A) Make a version of the package depending on R(>=3.6.0) and submit stating it is intended for the 3.6.0/Others area. B) With both points changed the package should still work under R 3.5.x as for current platforms SHLIB_OPENMP_FFLAGS, SHLIB_OPENMP_FCFLAGS and SHLIB_OPENMP_CFLAGS have the same value. So it could be submitted for the main CRAN area. -------STOP Prof. Riple------ My first attempt had the following Makevars submitted the to CRAN: PKG_FFLAGS = $(SHLIB_OPENMP_CFLAGS) PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) $(SHLIB_OPENMP_CFLAGS) Granted, this would not have had OpenMP for other reasons (FFLAGS will only be recognized for free-form Fortran in R 3.6+) but the submission was denied with the following note: -----START CRAN----- Flavor: r-devel-linux-x86_64-debian-gcc, r-devel-windows-ix86+x86_64 Check: use of SHLIB_OPENMP_*FLAGS in Makefiles, Result: NOTE src/Makevars: incorrect macro SHLIB_OPENMP_CFLAGS included in PKG_FFLAGS src/Makevars: SHLIB_OPENMP_CFLAGS is included in PKG_LIBS but not in PKG_CFLAGS -----STOP CRAN----- Uwe Ligges was kind enough to clarify: -----START Prof. Ligges----- Sun, Jan 13, 12:16 PM (8 days ago) to me, CRAN-submissions Pls re-read Brian's comment and note that we already check with R-devel. He daid: " PKG_LIBS needs to contain the appropriate macro, SHLIB_OPENMP_CFLAGS " but you have it in PKG_FFLAGS now? (first) and then " SHLIB_OPENMP_CFLAGS is included in PKG_LIBS but not in PKG_CFLAGS", si please declare it there, too. -----STOP Prof. Ligges----- So, I declared CFLAGS too. However, When I passed (substituting FCFLAGS so that OpenMP will work in R-release): PKG_CFLAGS = $(SHLIB_OPENMP_CFLAGS) PKG_FCFLAGS = $(SHLIB_OPENMP_CFLAGS) PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) $(SHLIB_OPENMP_CFLAGS) I got: -----START CRAN----- Flavor: r-devel-linux-x86_64-debian-gcc, r-devel-windows-ix86+x86_64 Check: use of SHLIB_OPENMP_*FLAGS in Makefiles, Result: NOTE src/Makevars: incorrect macro SHLIB_OPENMP_CFLAGS included in PKG_FCFLAGS -----STOP CRAN----- If I give up and focus just on R-release by passing: PKG_FCFLAGS = $(SHLIB_OPENMP_FCFLAGS) PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) $(SHLIB_OPENMP_FCFLAGS) I get: -----START CRAN----- Flavor: r-devel-linux-x86_64-debian-gcc, r-devel-windows-ix86+x86_64 Check: use of SHLIB_OPENMP_*FLAGS in Makefiles, Result: NOTE src/Makevars: SHLIB_OPENMP_FFLAGS is preferred to SHLIB_OPENMP_FCFLAGS in PKG_FCFLAGS src/Makevars: SHLIB_OPENMP_FCFLAGS is included in PKG_FCFLAGS but not SHLIB_OPENMP_CFLAGS in PKG_LIBS src/Makevars: SHLIB_OPENMP_FCFLAGS is included in PKG_LIBS but linking is by C -----STOP CRAN----- If I really give up and pass Depend: R <= 3.5.2 in the DESCRIPTION, *noting in the comments that I will submit a new R 3.6+ only version when it is released* I still get a failure: -----START CRAN----- Flavor: r-devel-windows-ix86+x86_64 Check: whether package can be installed, Result: ERROR Installation failed. See 'd:/RCompile/CRANincoming/R-devel/Delaporte.Rcheck/00install.out' for details. Flavor: r-devel-linux-x86_64-debian-gcc Check: whether package can be installed, Result: ERROR Installation failed. See '/srv/hornik/tmp/CRAN/Delaporte.Rcheck/00install.out' for details -----STOP CRAN----- Which actually was the point, to be honest. It wasn't supposed to pass R-devel. I cannot pass JUST: PKG_CFLAGS = $(SHLIB_OPENMP_CFLAGS) PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) $(SHLIB_OPENMP_CFLAGS) AS OpenMP would not be compiled into the Fortran. I really would like to have oe version of the package that is CRAN compliant, but at this point, I cannot see how to do that based on the various rejection messages I got. Maybe I'm missing something simple, in which case, please explain. Any guidance would be much appreciated. Thank you, Avi [1] https://cran.r-project.org/package=Delaporte [2] https://developer.r-project.org/blosxom.cgi/R-devel/NEWS/2018/12/04#n2018-12-04 ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel