X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=tags%2Fpre-dual%2Fexec%2Fbuild;fp=tags%2Fpre-dual%2Fexec%2Fbuild;h=6feaf5d7d49cd9a4a1a8b03407b288a113228409;hb=ab9547f1dd3779e34528a7a638ed085d5b9c5e26;hp=0000000000000000000000000000000000000000;hpb=4baac28764128067cb2fd6343321e7e0f522bdfd;p=cran2deb.git diff --git a/tags/pre-dual/exec/build b/tags/pre-dual/exec/build new file mode 100755 index 0000000..6feaf5d --- /dev/null +++ b/tags/pre-dual/exec/build @@ -0,0 +1,48 @@ +#!/usr/bin/env r +## DOC: cran2deb build [-d] [-D extra_dep1,extra_dep2,...] package1 package2 ... +## DOC: builds a particular package. +## DOC: -d leave the staging directory around for debugging. +## DOC: +suppressPackageStartupMessages(library(cran2deb)) + +if (exists('argv')) { # check for littler + argc <- length(argv) + extra_deps = list() + extra_deps$deb = c() + extra_deps$r = c() + do_cleanup = T + opts = c('-D','-R','-d') + # first argument is the root --- this is dealt with elsewhere. + for (i in 2:argc) { + if (!(argv[i] %in% opts)) { + if (argc >= i) { + argv <- argv[i:argc] + } else { + argv <- list() + } + argc = argc - i + 1 + break + } + if (i == argc) { + err('missing argument') + } + if (argv[i] == '-D') { + extra_deps$deb = c(extra_deps$deb,strsplit(chomp(argv[i+1]),',')[[1]]) + } + if (argv[i] == '-R') { + extra_deps$r = c(extra_deps$r,strsplit(chomp(argv[i+1]),',')[[1]]) + extra_deps$deb = c(extra_deps$deb,lapply(extra_deps$r,pkgname_as_debian)) + } + if (argv[i] == '-d') { #debug + do_cleanup = F + } + } + if (argc == 0) { + err('usage: cran2deb build [-d] [-D extra_dep1,extra_dep2,...] package package ...') + } + build_order <- r_dependency_closure(c(extra_deps$r,argv)) + notice('build order',paste(build_order,collapse=', ')) + for (pkg in build_order) { + build(pkg,extra_deps,force=pkg %in% argv, do_cleanup) + } +}