diff --git a/R/remerge_binaries.R b/R/remerge_binaries.R new file mode 100644 index 0000000..7715577 --- /dev/null +++ b/R/remerge_binaries.R @@ -0,0 +1,30 @@ +#' @title Remerge the binaries with the library files for macGLM +#' +#' @description This function remerges the macGLM binary file with +#' the libraries present in inst/extbin/macGLM/bin +#' +#' @author Arianna Krinos +#' @importFrom utils packageName +remerge_binaries <- function() { + lib_path = system.file('extbin/macGLM/bin/', package=packageName()) + glm_path = system.file("exec/macGLM", package = packageName()) + files = list.files(lib_path) + try ( system(paste0("install_name_tool -add_rpath ",lib_path, " ", + glm_path)), silent = TRUE) # First try separate because possible + # rpath added without libraries linked + try ( + { + for (g in 1:length(files)) { + system(paste0("install_name_tool -change ", "@executable_path/", + files[g]," ", lib_path, files[g], " ", glm_path)) + system(paste0("install_name_tool -change ", "/opt/local/lib/hdf5-18/", + files[g]," ", lib_path, files[g], " ", glm_path)) + for (h in 1:length(files)) { + system(paste0("install_name_tool -change ", "@executable_path/", + files[h]," ", lib_path, files[h], " ", lib_path,"/", files[g])) + system(paste0("install_name_tool -change ", "/opt/local/lib/hdf5-18/", + files[h]," ", lib_path, files[h], " ", lib_path,"/", files[g])) + } + } + } , silent = TRUE) +} diff --git a/R/run_glm.R b/R/run_glm.R index ee081dc..2668ce5 100644 --- a/R/run_glm.R +++ b/R/run_glm.R @@ -35,8 +35,7 @@ run_glm <- function(sim_folder = '.', verbose=TRUE, args=character()){ return(run_glmWin(sim_folder, verbose, args)) - }else if(.Platform$pkgType == "mac.binary" || - .Platform$pkgType == "mac.binary.mavericks"){ + }else if(length(grep("mac", .Platform$pkgType, ignore.case = TRUE)) > 0){ maj_v_number <- as.numeric(strsplit( Sys.info()["release"][[1]],'.', fixed = TRUE)[[1]][1]) if (maj_v_number < 13.0){ @@ -84,32 +83,43 @@ run_glmWin <- function(sim_folder, verbose = TRUE, args){ run_glmOSx <- function(sim_folder, verbose = TRUE, args){ lib_path <- system.file('extbin/macGLM/bin', package=packageName()) - glm_path <- system.file('exec/macglm', package=packageName()) # ship glm and libs to sim_folder - Sys.setenv(DYLD_FALLBACK_LIBRARY_PATH=lib_path) + #remerge_binaries() # tries to remerge binaries; if they are + # already merged, nothing occurs origin <- getwd() setwd(sim_folder) - - tryCatch({ - if (verbose){ - out <- system2(glm_path, wait = TRUE, stdout = "", - stderr = "", args = args) - - } else { - out <- system2(glm_path, wait = TRUE, stdout = NULL, - stderr = NULL, args=args) + count = 1 + + while (count <= 2) { + if (count == 2) { + try(remerge_binaries(), silent = TRUE) } - - setwd(origin) - return(out) - }, error = function(err) { - print(paste("GLM_ERROR: ",err)) - - setwd(origin) - }) + tryCatch({ + if (verbose){ + out <- system2(glm_path, wait = TRUE, stdout = "", + stderr = "", args = args) + + } else { + out <- system2(glm_path, wait = TRUE, stdout = NULL, + stderr = NULL, args=args) + } + + setwd(origin) + if (out == 0) { + return(out) + } + }, error = function(err) { + if (count != 1) { + print(paste("GLM_ERROR: ",err)) + + setwd(origin) + } + }) + count = count + 1 + } } run_glmNIX <- function(sim_folder, verbose=TRUE, args){ diff --git a/exec/macglm b/exec/macglm index 4aec149..f5c1beb 100755 Binary files a/exec/macglm and b/exec/macglm differ diff --git a/exec/macglm_old b/exec/macglm_old new file mode 100644 index 0000000..4aec149 Binary files /dev/null and b/exec/macglm_old differ diff --git a/inst/extbin/macGLM/bin - Copy/libX11.6.dylib b/inst/extbin/macGLM/bin - Copy/libX11.6.dylib new file mode 100644 index 0000000..824a22c Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libX11.6.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libXau.6.dylib b/inst/extbin/macGLM/bin - Copy/libXau.6.dylib new file mode 100644 index 0000000..20cd0dc Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libXau.6.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libXdmcp.6.dylib b/inst/extbin/macGLM/bin - Copy/libXdmcp.6.dylib new file mode 100644 index 0000000..e0bf6c3 Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libXdmcp.6.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libXpm.4.dylib b/inst/extbin/macGLM/bin - Copy/libXpm.4.dylib new file mode 100644 index 0000000..f2914e7 Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libXpm.4.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libbz2.1.0.dylib b/inst/extbin/macGLM/bin - Copy/libbz2.1.0.dylib new file mode 100644 index 0000000..6cc92c7 Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libbz2.1.0.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libcrypto.1.0.0.dylib b/inst/extbin/macGLM/bin - Copy/libcrypto.1.0.0.dylib new file mode 100644 index 0000000..cf0f06e Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libcrypto.1.0.0.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libcurl.4.dylib b/inst/extbin/macGLM/bin - Copy/libcurl.4.dylib new file mode 100644 index 0000000..11d3a6a Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libcurl.4.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libexpat.1.dylib b/inst/extbin/macGLM/bin - Copy/libexpat.1.dylib new file mode 100644 index 0000000..d0f0272 Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libexpat.1.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libfontconfig.1.dylib b/inst/extbin/macGLM/bin - Copy/libfontconfig.1.dylib new file mode 100644 index 0000000..3944821 Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libfontconfig.1.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libfreetype.6.dylib b/inst/extbin/macGLM/bin - Copy/libfreetype.6.dylib new file mode 100644 index 0000000..c64d21e Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libfreetype.6.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libgd.3.dylib b/inst/extbin/macGLM/bin - Copy/libgd.3.dylib new file mode 100644 index 0000000..df60408 Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libgd.3.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libhdf5.10.dylib b/inst/extbin/macGLM/bin - Copy/libhdf5.10.dylib new file mode 100644 index 0000000..c358916 Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libhdf5.10.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libhdf5.7.dylib b/inst/extbin/macGLM/bin - Copy/libhdf5.7.dylib new file mode 100644 index 0000000..7258f9a Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libhdf5.7.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libhdf5_hl.10.dylib b/inst/extbin/macGLM/bin - Copy/libhdf5_hl.10.dylib new file mode 100644 index 0000000..2bbc23d Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libhdf5_hl.10.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libhdf5_hl.7.dylib b/inst/extbin/macGLM/bin - Copy/libhdf5_hl.7.dylib new file mode 100644 index 0000000..357f401 Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libhdf5_hl.7.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libiconv.2.dylib b/inst/extbin/macGLM/bin - Copy/libiconv.2.dylib new file mode 100644 index 0000000..029e7fa Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libiconv.2.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libifcore.dylib b/inst/extbin/macGLM/bin - Copy/libifcore.dylib new file mode 100644 index 0000000..b6f01a6 Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libifcore.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libimf.dylib b/inst/extbin/macGLM/bin - Copy/libimf.dylib new file mode 100644 index 0000000..517b8ed Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libimf.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libintl.8.dylib b/inst/extbin/macGLM/bin - Copy/libintl.8.dylib new file mode 100644 index 0000000..40744e0 Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libintl.8.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libintlc.dylib b/inst/extbin/macGLM/bin - Copy/libintlc.dylib new file mode 100644 index 0000000..84a43e7 Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libintlc.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libjpeg.9.dylib b/inst/extbin/macGLM/bin - Copy/libjpeg.9.dylib new file mode 100644 index 0000000..696791e Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libjpeg.9.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/liblzma.5.dylib b/inst/extbin/macGLM/bin - Copy/liblzma.5.dylib new file mode 100644 index 0000000..92b2fe0 Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/liblzma.5.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libnetcdf.11.dylib b/inst/extbin/macGLM/bin - Copy/libnetcdf.11.dylib new file mode 100644 index 0000000..5314ef0 Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libnetcdf.11.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libpng16.16.dylib b/inst/extbin/macGLM/bin - Copy/libpng16.16.dylib new file mode 100644 index 0000000..2d877e7 Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libpng16.16.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libssl.1.0.0.dylib b/inst/extbin/macGLM/bin - Copy/libssl.1.0.0.dylib new file mode 100644 index 0000000..a126c73 Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libssl.1.0.0.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libsvml.dylib b/inst/extbin/macGLM/bin - Copy/libsvml.dylib new file mode 100644 index 0000000..fbdcacc Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libsvml.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libtiff.5.dylib b/inst/extbin/macGLM/bin - Copy/libtiff.5.dylib new file mode 100644 index 0000000..aefa026 Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libtiff.5.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libxcb.1.dylib b/inst/extbin/macGLM/bin - Copy/libxcb.1.dylib new file mode 100644 index 0000000..3904767 Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libxcb.1.dylib differ diff --git a/inst/extbin/macGLM/bin - Copy/libz.1.dylib b/inst/extbin/macGLM/bin - Copy/libz.1.dylib new file mode 100644 index 0000000..a4c484a Binary files /dev/null and b/inst/extbin/macGLM/bin - Copy/libz.1.dylib differ diff --git a/inst/extbin/macGLM/bin/libchkp.dylib b/inst/extbin/macGLM/bin/libchkp.dylib new file mode 100644 index 0000000..4554be5 Binary files /dev/null and b/inst/extbin/macGLM/bin/libchkp.dylib differ diff --git a/inst/extbin/macGLM/bin/libcilkrts.5.dylib b/inst/extbin/macGLM/bin/libcilkrts.5.dylib new file mode 100644 index 0000000..5b8b047 Binary files /dev/null and b/inst/extbin/macGLM/bin/libcilkrts.5.dylib differ diff --git a/inst/extbin/macGLM/bin/libcilkrts.dylib b/inst/extbin/macGLM/bin/libcilkrts.dylib new file mode 100644 index 0000000..b80012a Binary files /dev/null and b/inst/extbin/macGLM/bin/libcilkrts.dylib differ diff --git a/inst/extbin/macGLM/bin/libifcore.dylib b/inst/extbin/macGLM/bin/libifcore.dylib index b6f01a6..5e0e514 100755 Binary files a/inst/extbin/macGLM/bin/libifcore.dylib and b/inst/extbin/macGLM/bin/libifcore.dylib differ diff --git a/inst/extbin/macGLM/bin/libifcoremt.dylib b/inst/extbin/macGLM/bin/libifcoremt.dylib new file mode 100644 index 0000000..a5fb8e4 Binary files /dev/null and b/inst/extbin/macGLM/bin/libifcoremt.dylib differ diff --git a/inst/extbin/macGLM/bin/libifport.dylib b/inst/extbin/macGLM/bin/libifport.dylib new file mode 100644 index 0000000..4793693 Binary files /dev/null and b/inst/extbin/macGLM/bin/libifport.dylib differ diff --git a/inst/extbin/macGLM/bin/libifportmt.dylib b/inst/extbin/macGLM/bin/libifportmt.dylib new file mode 100644 index 0000000..b1b57ed Binary files /dev/null and b/inst/extbin/macGLM/bin/libifportmt.dylib differ diff --git a/inst/extbin/macGLM/bin/libimf.dylib b/inst/extbin/macGLM/bin/libimf.dylib index 517b8ed..28d2a70 100755 Binary files a/inst/extbin/macGLM/bin/libimf.dylib and b/inst/extbin/macGLM/bin/libimf.dylib differ diff --git a/inst/extbin/macGLM/bin/libintlc.dylib b/inst/extbin/macGLM/bin/libintlc.dylib index 84a43e7..cca5785 100755 Binary files a/inst/extbin/macGLM/bin/libintlc.dylib and b/inst/extbin/macGLM/bin/libintlc.dylib differ diff --git a/inst/extbin/macGLM/bin/libiomp5.dylib b/inst/extbin/macGLM/bin/libiomp5.dylib new file mode 100644 index 0000000..cfac9a1 Binary files /dev/null and b/inst/extbin/macGLM/bin/libiomp5.dylib differ diff --git a/inst/extbin/macGLM/bin/libiompstubs5.dylib b/inst/extbin/macGLM/bin/libiompstubs5.dylib new file mode 100644 index 0000000..ed2c7ae Binary files /dev/null and b/inst/extbin/macGLM/bin/libiompstubs5.dylib differ diff --git a/inst/extbin/macGLM/bin/libirc.dylib b/inst/extbin/macGLM/bin/libirc.dylib new file mode 100644 index 0000000..f484a16 Binary files /dev/null and b/inst/extbin/macGLM/bin/libirc.dylib differ diff --git a/inst/extbin/macGLM/bin/libirng.dylib b/inst/extbin/macGLM/bin/libirng.dylib new file mode 100644 index 0000000..701e542 Binary files /dev/null and b/inst/extbin/macGLM/bin/libirng.dylib differ diff --git a/inst/extbin/macGLM/bin/libistrconv.dylib b/inst/extbin/macGLM/bin/libistrconv.dylib new file mode 100644 index 0000000..c89a4e2 Binary files /dev/null and b/inst/extbin/macGLM/bin/libistrconv.dylib differ diff --git a/inst/extbin/macGLM/bin/libnetcdff.6.dylib b/inst/extbin/macGLM/bin/libnetcdff.6.dylib new file mode 100644 index 0000000..bc9ee26 Binary files /dev/null and b/inst/extbin/macGLM/bin/libnetcdff.6.dylib differ diff --git a/inst/extbin/macGLM/bin/libnetcdff.dylib b/inst/extbin/macGLM/bin/libnetcdff.dylib new file mode 100644 index 0000000..bc9ee26 Binary files /dev/null and b/inst/extbin/macGLM/bin/libnetcdff.dylib differ diff --git a/inst/extbin/macGLM/bin/libsvml.dylib b/inst/extbin/macGLM/bin/libsvml.dylib index fbdcacc..2f4de69 100755 Binary files a/inst/extbin/macGLM/bin/libsvml.dylib and b/inst/extbin/macGLM/bin/libsvml.dylib differ