-
Notifications
You must be signed in to change notification settings - Fork 49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
vendor path #353
base: main
Are you sure you want to change the base?
vendor path #353
Changes from 1 commit
71c2dcc
10d3565
da1c84e
e2df430
8845015
6778095
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,13 +9,14 @@ | |
#' cpp11 currently installed on your machine. | ||
#' | ||
#' If you choose to vendor the headers you should _remove_ `LinkingTo: | ||
#' cpp11` from your DESCRIPTION. | ||
#' cpp11` from your DESCRIPTION. This is done automatically by this function. | ||
#' | ||
#' **Note**: vendoring places the responsibility of updating the code on | ||
#' **you**. Bugfixes and new features in cpp11 will not be available for your | ||
#' code until you run `cpp_vendor()` again. | ||
#' | ||
#' @inheritParams cpp_register | ||
#' @param path The path to vendor the code into. The default is | ||
#' `./inst/include/`. | ||
#' @return The file path to the vendored code (invisibly). | ||
#' @export | ||
#' @examples | ||
|
@@ -30,13 +31,15 @@ | |
#' | ||
#' # cleanup | ||
#' unlink(dir, recursive = TRUE) | ||
cpp_vendor <- function(path = ".") { | ||
new <- file.path(path, "inst", "include", "cpp11") | ||
cpp_vendor <- function(path = "./inst/include/") { | ||
new <- file.path(path, "cpp11") | ||
|
||
if (dir.exists(new)) { | ||
stop("'", new, "' already exists\n * run unlink('", new, "', recursive = TRUE)", call. = FALSE) | ||
} | ||
|
||
# Vendor cpp11 ---- | ||
|
||
dir.create(new , recursive = TRUE, showWarnings = FALSE) | ||
|
||
current <- system.file("include", "cpp11", package = "cpp11") | ||
|
@@ -48,16 +51,37 @@ cpp_vendor <- function(path = ".") { | |
|
||
cpp11_header <- sprintf("// cpp11 version: %s\n// vendored on: %s", cpp11_version, Sys.Date()) | ||
|
||
files <- list.files(current, full.names = TRUE) | ||
write_header(path, "cpp11.hpp", "cpp11", cpp11_header) | ||
|
||
copy_files(list.files(current, full.names = TRUE), path, "cpp11", cpp11_header) | ||
|
||
# Additional steps to make vendoring work ---- | ||
|
||
message(paste( | ||
"Makevars and/or Makevars.win should have a line such as", | ||
"'PKG_CPPFLAGS = -I../inst/include'" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Does this now need to show the new path? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. that line is added automatically, and uses the path the user wants There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. i reallize i never pushed that change, done now |
||
)) | ||
|
||
message("DESCRIPTION should not have lines such as 'LinkingTo: cpp11'") | ||
|
||
invisible(new) | ||
} | ||
|
||
write_header <- function(path, header, pkg, cpp11_header) { | ||
writeLines( | ||
c(cpp11_header, readLines(system.file("include", "cpp11.hpp", package = "cpp11"))), | ||
file.path(dirname(new), "cpp11.hpp") | ||
c( | ||
cpp11_header, | ||
readLines(system.file("include", header, package = pkg)) | ||
), | ||
file.path(path, header) | ||
) | ||
} | ||
|
||
copy_files <- function(files, path, out, cpp11_header) { | ||
for (f in files) { | ||
writeLines(c(cpp11_header, readLines(f)), file.path(new, basename(f))) | ||
writeLines( | ||
c(cpp11_header, readLines(f)), | ||
file.path(path, out, basename(f)) | ||
) | ||
} | ||
|
||
invisible(new) | ||
} | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this true?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes! I added the changes for that, because I am a dummy