## ----setup, include=FALSE----------------------------------------------------- knitr::opts_chunk$set(eval = FALSE) ## ---- loadLibraries----------------------------------------------------------- # library(stringr) ## ----------------------------------------------------------------------------- # hdf5_source <- tempfile() # download.file(url = "https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.7/src/hdf5-1.10.7.tar.bz2", dest = hdf5_source) # untar(tarfile = hdf5_source, exdir = tempdir()) # system2("mv", args = c(file.path(tempdir(), "hdf5-1.10.7"), file.path(tempdir(), "hdf5"))) ## ----------------------------------------------------------------------------- # hdf5_dir <- file.path(tempdir(), "hdf5") ## ----------------------------------------------------------------------------- # unlink(x = file.path(hdf5_dir, c("examples", "fortran", "java", # "release_docs", "test", "testpar", "tools", # "c++/examples", "c++/test", # "hl/fortran", "hl/examples", "hl/tools", "hl/test", # "hl/c++/examples", "hl/c++/test")), # recursive = TRUE) ## ----------------------------------------------------------------------------- # configure_ac <- xfun::read_utf8(file.path(hdf5_dir, "configure.ac")) # # ## modify list of build files # start <- which(str_detect(configure_ac, pattern = "AC_CONFIG_FILES")) # end <- which(str_detect(configure_ac[start:(length(configure_ac))], pattern = "\\)$"))[1] + start - 1 # config_files <- configure_ac[start:end] # rm_idx <- which(str_detect(config_files, pattern = "test/|testpar/|tools/|examples/|fortran/|java/|h5c++/")) # config_files <- config_files[-rm_idx] # config_files[length(config_files)] <- paste0(tail(config_files, 1), "])") # configure_ac[start] <- paste(config_files, collapse = "\n") # configure_ac <- configure_ac[-((start+1):(end))] # # ## remove reference to h5cc # h5cc <- str_which(configure_ac, pattern = "chmod 755 [a-z/]*/h5cc") # configure_ac <- configure_ac[-((h5cc):(h5cc+4))] # # ## fortran headers # fortran_inc <- str_which(configure_ac, pattern = "AC_CONFIG_HEADERS\\(\\[fortran/src/H5config_f\\.inc") # configure_ac[fortran_inc:(fortran_inc+1)] <- paste("##", configure_ac[fortran_inc:(fortran_inc+1)]) # # ## write # xfun::write_utf8(configure_ac, con = file.path(hdf5_dir, "configure.ac")) # # ## C++ makefile # make_cplusplus <- xfun::read_utf8(file.path(hdf5_dir, 'c++/Makefile.am')) # idx <- str_which(make_cplusplus, "BUILD_CXX_CONDITIONAL") # make_cplusplus[idx] <- "if BUILD_CXX_CONDITIONAL\n SUBDIRS=src\nendif\nDIST_SUBDIRS = src" # make_cplusplus <- make_cplusplus[-((idx+1):(length(make_cplusplus)-2))] # xfun::write_utf8(make_cplusplus, con = file.path(hdf5_dir, "c++/Makefile.am")) # # ## HL makefile # make_hl <- xfun::read_utf8(file.path(hdf5_dir, 'hl/Makefile.am')) # idx <- str_which(make_hl, "BUILD_HDF5_HL_CONDITIONAL") # make_hl[idx] <- "if BUILD_HDF5_HL_CONDITIONAL\n SUBDIRS=src $(CXX_DIR)\nendif\nDIST_SUBDIRS = src c++" # make_hl <- make_hl[-((idx+1):(length(make_hl)-2))] # xfun::write_utf8(make_hl, con = file.path(hdf5_dir, "hl/Makefile.am")) # # ## HL C++ makefile # make_hl_cpp <- xfun::read_utf8(file.path(hdf5_dir, 'hl/c++/Makefile.am')) # idx <- str_which(make_hl_cpp, "^SUBDIRS=src") # make_hl_cpp[idx] <- "SUBDIRS=src\nDIST_SUBDIRS=src" # make_hl_cpp <- make_hl_cpp[-((idx+1):(length(make_hl_cpp)-2))] # xfun::write_utf8(make_hl_cpp, con = file.path(hdf5_dir, "hl/c++/Makefile.am")) # # ## Primary makefile # make <- xfun::read_utf8(file.path(hdf5_dir, 'Makefile.am')) # idx <- str_which(make, "SUBDIRS = src")[1] # make[idx] <- "SUBDIRS = src . $(CXX_DIR) $(HDF5_HL_DIR)" # make[idx+1] <- "DIST_SUBDIRS = src . c++ hl" # make[idx+2] <- "" # idx <- str_which(make, "# Make all, tests, and \\(un\\)install") # make[(idx+1):(idx+6)] <- paste0("##", make[(idx+1):(idx+6)]) # xfun::write_utf8(make, con = file.path(hdf5_dir, "Makefile.am")) ## ----------------------------------------------------------------------------- # code <- xfun::read_utf8(file.path(hdf5_dir, 'c++', 'src', 'H5Library.cpp')) # code <- str_replace(code, '([ ]{1,})(exit\\()', replacement = '\\1std::\\2' ) # xfun::write_utf8(code, con = file.path(hdf5_dir, 'c++', 'src', 'H5Library.cpp')) ## ----------------------------------------------------------------------------- # system(command = paste0("cd ", hdf5_dir, " && autoconf")) # system(command = paste0("cd ", hdf5_dir, " && aclocal")) # system(command = paste0("cd ", hdf5_dir, " && automake")) # unlink(file.path(hdf5_dir, "autom4te.cache"), recursive = TRUE) ## ----------------------------------------------------------------------------- # szip_source <- tempfile() # download.file(url = "https://support.hdfgroup.org/ftp/lib-external/szip/2.1.1/src/szip-2.1.1.tar.gz", # dest = szip_source) # untar(tarfile = szip_source, exdir = tempdir()) # system2("mv", args = c(file.path(tempdir(), "szip-2.1.1"), file.path(tempdir(), "szip"))) ## ----------------------------------------------------------------------------- # szip_dir <- file.path(tempdir(), "szip") ## ----------------------------------------------------------------------------- # unlink(x = file.path(szip_dir, "test"), # recursive = TRUE) ## ----------------------------------------------------------------------------- # xfun::read_utf8(file.path(szip_dir, "configure.ac")) %>% # str_remove("test/Makefile") %>% # xfun::write_utf8(file.path(szip_dir, "configure.ac")) # # xfun::read_utf8(file.path(szip_dir, "Makefile.am")) %>% # str_replace(pattern = "SUBDIRS=src test", replacement = "SUBDIRS=src") %>% # xfun::write_utf8(file.path(szip_dir, "Makefile.am")) ## ----------------------------------------------------------------------------- # system(command = paste0("cd ", szip_dir, " && autoconf")) # system(command = paste0("cd ", szip_dir, " && aclocal")) # system(command = paste0("cd ", szip_dir, " && automake")) # unlink(file.path(szip_dir, "autom4te.cache"), recursive = TRUE) ## ---- createTarball----------------------------------------------------------- # system2("mv", args = c(szip_dir, file.path(hdf5_dir, "szip"))) # system2("tar", args = c("-C", tempdir(), "-czf", file.path(tempdir(), "hdf5small_cxx_hl_1.10.7.tar.gz"), "hdf5")) ## ----------------------------------------------------------------------------- # if(file.exists("/tmp/hdf5small_cxx_hl_1.10.7.tar.gz")) { file.remove("/tmp/hdf5small_cxx_hl_1.10.7.tar.gz") } # file.copy(file.path(tempdir(), "hdf5small_cxx_hl_1.10.7.tar.gz"), to = "/tmp/")