]> git.donarmstrong.com Git - cran2deb.git/blob - trunk/exec/build
a2e17352f3ad1dd1392cc5fccb480cace2de731e
[cran2deb.git] / trunk / exec / build
1 #!/usr/bin/env r
2 ## DOC: cran2deb build [-d] [-D extra_dep1,extra_dep2,...] package1 package2 ...
3 ## DOC:     builds a particular package.
4 ## DOC:         -d   leave the staging directory around for debugging.
5 ## DOC:
6 suppressPackageStartupMessages(library(cran2deb))
7
8 if (exists('argv')) { # check for littler
9     argc <- length(argv)
10     extra_deps = list()
11     extra_deps$deb = c()
12     extra_deps$r = c()
13     do_cleanup = T
14     opts = c('-D','-R','-d')
15     # first argument is the root --- this is dealt with elsewhere.
16     for (i in 2:argc) {
17         if (!(argv[i] %in% opts)) {
18             if (argc >= i) {
19                 argv <- argv[i:argc]
20             } else {
21                 argv <- list()
22             }
23             argc = argc - i + 1
24             break
25         }
26         if (i == argc) {
27             err('missing argument')
28         }
29         if (argv[i] == '-D') {
30             extra_deps$deb = c(extra_deps$deb,strsplit(chomp(argv[i+1]),',')[[1]])
31         }
32         if (argv[i] == '-R') {
33             extra_deps$r = c(extra_deps$r,strsplit(chomp(argv[i+1]),',')[[1]])
34             extra_deps$deb = c(extra_deps$deb,lapply(extra_deps$r,pkgname_as_debian))
35         }
36         if (argv[i] == '-d') { #debug
37             do_cleanup = F
38         }
39     }
40     if (argc == 0) {
41         err('usage: cran2deb build [-d] [-D extra_dep1,extra_dep2,...] package package ...')
42     }
43     build_order <- r_dependency_closure(c(extra_deps$r,argv))
44     #cat("build_order: "); print(build_order);
45     notice('build order',ifelse(0<length(build_order),paste(build_order,collapse=', ',sep="")," nothing to be built"))
46     for (pkg in build_order) {
47         #cat("Invoking build of '",pkg,"'\n",sep="")
48         build(pkg,extra_deps,force=pkg %in% argv, do_cleanup)
49     }
50 } else {
51    cat("exec/build: argv not existing.\n")
52 }