Skip to content

Instantly share code, notes, and snippets.

@gregorp
Last active January 31, 2019 15:39
Show Gist options
  • Save gregorp/3b7e20309a894f4aa9ca0927e55ad98a to your computer and use it in GitHub Desktop.
Save gregorp/3b7e20309a894f4aa9ca0927e55ad98a to your computer and use it in GitHub Desktop.
Check R package dependency tree for GPL-3 package
get_license_info = function() {
lic_info = available.packages(filters = c("CRAN", "duplicates"),
fields = "License")[, c("Package", "License")]
lic_info = as.data.frame(lic_info, stringsAsFactors = FALSE)
# take a stab at identifying GPL 3 packages without other license options
lic_info$GPL3 = grepl("GPL.*3", lic_info$License) & !grepl("\\|", lic_info$License)
return(lic_info)
}
cran_licenses = get_license_info()
check_gpl3_deps = function(package, license_info) {
deps = package_dependencies(package, recursive = TRUE)
gpl3_deps = lapply(deps, function(x) {
# base packages are listed as dependencies
# but not in the licensing info
found = license_info[intersect(row.names(license_info), x), ]
found = found[order(found$GPL3, decreasing = TRUE), ]
rownames(found) = NULL
return(found)
})
return(gpl3_deps)
}
check_gpl3_deps(c("data.table", "tidyverse", "rstanarm"), cran_licenses)
# $data.table
# [1] Package License GPL3
# <0 rows> (or 0-length row.names)
#
# $tidyverse
# Package License GPL3
# 1 assertthat GPL-3 TRUE
# 2 clipr GPL-3 TRUE
# 3 forcats GPL-3 TRUE
# 4 fs GPL-3 TRUE
# 5 hms GPL-3 TRUE
# 6 lazyeval GPL-3 TRUE
# 7 modelr GPL-3 TRUE
# 8 pillar GPL-3 TRUE
# 9 readxl GPL-3 TRUE
# 10 rlang GPL-3 TRUE
# 11 rmarkdown GPL-3 TRUE
# 12 rvest GPL-3 TRUE
# 13 tidyselect GPL-3 TRUE
# 14 whisker GPL-3 TRUE
# 15 askpass MIT + file LICENSE FALSE
# 16 backports GPL-2 FALSE
# 17 base64enc GPL-2 | GPL-3 FALSE
# 18 BH BSL-1.0 FALSE
# 19 bindr MIT + file LICENSE FALSE
# 20 bindrcpp MIT + file LICENSE FALSE
# 21 broom MIT + file LICENSE FALSE
# 22 callr MIT + file LICENSE FALSE
# 23 cellranger MIT + file LICENSE FALSE
# 24 cli MIT + file LICENSE FALSE
# 25 colorspace BSD_3_clause + file LICENSE FALSE
# 26 crayon MIT + file LICENSE FALSE
# 27 curl MIT + file LICENSE FALSE
# 28 DBI LGPL (>= 2) FALSE
# 29 dbplyr MIT + file LICENSE FALSE
# 30 digest GPL (>= 2) FALSE
# 31 dplyr MIT + file LICENSE FALSE
# 32 evaluate MIT + file LICENSE FALSE
# 33 fansi GPL (>= 2) FALSE
# 34 generics GPL-2 FALSE
# 35 ggplot2 GPL-2 | file LICENSE FALSE
# 36 glue MIT + file LICENSE FALSE
# 37 gtable GPL-2 FALSE
# 38 haven MIT + file LICENSE FALSE
# 39 highr GPL FALSE
# 40 htmltools GPL (>= 2) FALSE
# 41 httr MIT + file LICENSE FALSE
# 42 jsonlite MIT + file LICENSE FALSE
# 43 knitr GPL FALSE
# 44 labeling MIT + file LICENSE | Unlimited FALSE
# 45 lattice GPL (>= 2) FALSE
# 46 lubridate GPL (>= 2) FALSE
# 47 magrittr MIT + file LICENSE FALSE
# 48 markdown GPL-2 FALSE
# 49 MASS GPL-2 | GPL-3 FALSE
# 50 Matrix GPL (>= 2) | file LICENCE FALSE
# 51 mgcv GPL (>= 2) FALSE
# 52 mime GPL FALSE
# 53 munsell MIT + file LICENSE FALSE
# 54 nlme GPL (>= 2) | file LICENCE FALSE
# 55 openssl MIT + file LICENSE FALSE
# 56 pkgconfig MIT + file LICENSE FALSE
# 57 plogr MIT + file LICENSE FALSE
# 58 plyr MIT + file LICENSE FALSE
# 59 prettyunits MIT + file LICENSE FALSE
# 60 processx MIT + file LICENSE FALSE
# 61 progress MIT + file LICENSE FALSE
# 62 ps BSD_3_clause + file LICENSE FALSE
# 63 purrr GPL-3 | file LICENSE FALSE
# 64 R6 MIT + file LICENSE FALSE
# 65 RColorBrewer Apache License 2.0 FALSE
# 66 Rcpp GPL (>= 2) FALSE
# 67 readr GPL (>= 2) | file LICENSE FALSE
# 68 rematch MIT + file LICENSE FALSE
# 69 reprex MIT + file LICENSE FALSE
# 70 reshape2 MIT + file LICENSE FALSE
# 71 rstudioapi MIT + file LICENSE FALSE
# 72 scales MIT + file LICENSE FALSE
# 73 selectr BSD_3_clause + file LICENCE FALSE
# 74 stringi file LICENSE FALSE
# 75 stringr GPL-2 | file LICENSE FALSE
# 76 sys MIT + file LICENSE FALSE
# 77 tibble MIT + file LICENSE FALSE
# 78 tidyr MIT + file LICENSE FALSE
# 79 tinytex MIT + file LICENSE FALSE
# 80 utf8 Apache License (== 2.0) | file LICENSE FALSE
# 81 viridisLite MIT + file LICENSE FALSE
# 82 withr GPL (>= 2) FALSE
# 83 xfun MIT + file LICENSE FALSE
# 84 xml2 GPL (>= 2) FALSE
# 85 yaml BSD_3_clause + file LICENSE FALSE
#
# $rstanarm
# Package License GPL3
# 1 assertthat GPL-3 TRUE
# 2 bayesplot GPL (>= 3) TRUE
# 3 lazyeval GPL-3 TRUE
# 4 loo GPL (>= 3) TRUE
# 5 miniUI GPL-3 TRUE
# 6 nloptr LGPL-3 TRUE
# 7 pillar GPL-3 TRUE
# 8 pkgbuild GPL-3 TRUE
# 9 rlang GPL-3 TRUE
# 10 rprojroot GPL-3 TRUE
# 11 rstan GPL (>= 3) TRUE
# 12 rstantools GPL (>= 3) TRUE
# 13 shinyjs AGPL-3 TRUE
# 14 shinystan GPL (>= 3) TRUE
# 15 tidyselect GPL-3 TRUE
# 16 askpass MIT + file LICENSE FALSE
# 17 backports GPL-2 FALSE
# 18 base64enc GPL-2 | GPL-3 FALSE
# 19 BH BSL-1.0 FALSE
# 20 bindr MIT + file LICENSE FALSE
# 21 bindrcpp MIT + file LICENSE FALSE
# 22 bitops GPL (>= 2) FALSE
# 23 callr MIT + file LICENSE FALSE
# 24 cli MIT + file LICENSE FALSE
# 25 colorspace BSD_3_clause + file LICENSE FALSE
# 26 colourpicker MIT + file LICENSE FALSE
# 27 crayon MIT + file LICENSE FALSE
# 28 crosstalk MIT + file LICENSE FALSE
# 29 desc MIT + file LICENSE FALSE
# 30 digest GPL (>= 2) FALSE
# 31 dplyr MIT + file LICENSE FALSE
# 32 DT GPL-3 | file LICENSE FALSE
# 33 dygraphs MIT + file LICENSE FALSE
# 34 fansi GPL (>= 2) FALSE
# 35 ggplot2 GPL-2 | file LICENSE FALSE
# 36 ggridges GPL-2 | file LICENSE FALSE
# 37 glue MIT + file LICENSE FALSE
# 38 gridExtra GPL (>= 2) FALSE
# 39 gtable GPL-2 FALSE
# 40 gtools GPL-2 FALSE
# 41 htmltools GPL (>= 2) FALSE
# 42 htmlwidgets MIT + file LICENSE FALSE
# 43 httpuv GPL (>= 2) | file LICENSE FALSE
# 44 igraph GPL (>= 2) FALSE
# 45 inline LGPL FALSE
# 46 jsonlite MIT + file LICENSE FALSE
# 47 labeling MIT + file LICENSE | Unlimited FALSE
# 48 later GPL (>= 2) FALSE
# 49 lattice GPL (>= 2) FALSE
# 50 lme4 GPL (>= 2) FALSE
# 51 magrittr MIT + file LICENSE FALSE
# 52 markdown GPL-2 FALSE
# 53 MASS GPL-2 | GPL-3 FALSE
# 54 Matrix GPL (>= 2) | file LICENCE FALSE
# 55 matrixStats Artistic-2.0 FALSE
# 56 mgcv GPL (>= 2) FALSE
# 57 mime GPL FALSE
# 58 minqa GPL-2 FALSE
# 59 munsell MIT + file LICENSE FALSE
# 60 nlme GPL (>= 2) | file LICENCE FALSE
# 61 openssl MIT + file LICENSE FALSE
# 62 packrat GPL-2 FALSE
# 63 pkgconfig MIT + file LICENSE FALSE
# 64 plogr MIT + file LICENSE FALSE
# 65 plyr MIT + file LICENSE FALSE
# 66 prettyunits MIT + file LICENSE FALSE
# 67 processx MIT + file LICENSE FALSE
# 68 promises MIT + file LICENSE FALSE
# 69 ps BSD_3_clause + file LICENSE FALSE
# 70 purrr GPL-3 | file LICENSE FALSE
# 71 R6 MIT + file LICENSE FALSE
# 72 RColorBrewer Apache License 2.0 FALSE
# 73 Rcpp GPL (>= 2) FALSE
# 74 RcppEigen GPL (>= 2) | file LICENSE FALSE
# 75 RCurl BSD FALSE
# 76 reshape2 MIT + file LICENSE FALSE
# 77 rsconnect GPL-2 FALSE
# 78 rstudioapi MIT + file LICENSE FALSE
# 79 scales MIT + file LICENSE FALSE
# 80 shiny GPL-3 | file LICENSE FALSE
# 81 shinythemes GPL-3 | file LICENSE FALSE
# 82 sourcetools MIT + file LICENSE FALSE
# 83 StanHeaders BSD_3_clause + file LICENSE FALSE
# 84 stringi file LICENSE FALSE
# 85 stringr GPL-2 | file LICENSE FALSE
# 86 survival LGPL (>= 2) FALSE
# 87 sys MIT + file LICENSE FALSE
# 88 threejs MIT + file LICENSE FALSE
# 89 tibble MIT + file LICENSE FALSE
# 90 utf8 Apache License (== 2.0) | file LICENSE FALSE
# 91 viridisLite MIT + file LICENSE FALSE
# 92 withr GPL (>= 2) FALSE
# 93 xtable GPL (>= 2) FALSE
# 94 xts GPL (>= 2) FALSE
# 95 yaml BSD_3_clause + file LICENSE FALSE
# 96 zoo GPL-2 | GPL-3 FALSE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment