1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
PKGNAME := $(shell sed -n "s/Package: *\([^ ]*\)/\1/p" DESCRIPTION)
PKGVERS := $(shell sed -n "s/Version: *\([^ ]*\)/\1/p" DESCRIPTION)
PKGSRC := $(shell basename $(PWD))
TGZ := $(PKGSRC)_$(PKGVERS).tar.gz
TGZVNR := $(PKGSRC)_$(PKGVERS)-vignettes-not-rebuilt.tar.gz
WINBIN := $(PKGSRC)_$(PKGVERS).zip
# Specify the directory holding R binaries. To use an alternate R build (say a
# pre-prelease version) use `make RBIN=/path/to/other/R/` or `export RBIN=...`
# If no alternate bin folder is specified, the default is to use the folder
# containing the first instance of R on the PATH.
RBIN ?= $(shell dirname "`which R`")
RDEVBIN=/home/jranke/svn/R/r-devel/build/bin
# Specify package and static documentation directories for subversion on r-forge
RFSVN ?= $(HOME)/svn/r-forge/kinfit
RFDIR ?= $(RFSVN)/pkg/mkin
SDDIR ?= $(RFSVN)/www/mkin_static
# Vignettes are listed in the build target
pkgfiles = \
.Rbuildignore \
data/* \
DESCRIPTION \
inst/WORDLIST \
inst/testdata/fit_old_FOCUS_D.rda \
man/* \
NAMESPACE \
NEWS.md \
R/* \
tests/* \
tests/testthat* \
TODO
all: build
$(TGZ): $(pkgfiles) vignettes
$(RM) -r vignettes/*_cache
$(RM) -r vignettes/*_files
$(RM) -r vignettes/*.R
$(RM) -r vignettes/web_only/*.R
$(RM) Rplots.pdf
"$(RBIN)/R" CMD build . 2>&1 | tee build.log
roxygen:
"$(RBIN)/Rscript" -e 'devtools::document()'
$(TGZVNR): $(pkgfiles)
"$(RBIN)/R" CMD build . --no-build-vignettes;\
mv $(TGZ) $(TGZVNR)
build: roxygen $(TGZ)
build-no-vignettes: $(TGZVNR)
install: build
"$(RBIN)/R" CMD INSTALL $(TGZ)
quickinstall: build-no-vignettes
"$(RBIN)/R" CMD INSTALL $(TGZVNR)
check: roxygen build
_R_CHECK_CRAN_INCOMING_REMOTE_=false "$(RBIN)/R" CMD check --as-cran --no-tests $(TGZ) 2>&1 | tee check.log
devcheck: roxygen build
_R_CHECK_CRAN_INCOMING_REMOTE_=false "$(RDEVBIN)/R" CMD check --as-cran --no-tests $(TGZ) 2>&1 | tee check_dev.log
quickcheck: roxygen build-no-vignettes
mv $(TGZVNR) $(TGZ)
"$(RBIN)/R" CMD check --no-tests --no-build-vignettes --no-vignettes $(TGZ)
mv $(TGZ) $(TGZVNR)
clean:
$(RM) -r vignettes/*_cache
$(RM) -r vignettes/*_files
$(RM) -r vignettes/*.R
$(RM) -r vignettes/web_only/*.R
$(RM) Rplots.pdf
test: install
"$(RBIN)/Rscript" -e 'devtools::test()' 2>&1 | tee test.log
sed -i -e "s/\r.*\r//" test.log
devtest: install
"$(RDEVBIN)/Rscript" -e 'devtools::test()' 2>&1 | tee test_dev.log
sed -i -e "s/\r.*\r//" test_dev.log
slowtests: install
NOT_CRAN=true "$(RBIN)/Rscript" -e 'library(mkin); testthat::test_dir("tests/testthat/slow")' 2>&1 | tee tests_slow.log
sed -i -e "s/\r.*\r//" tests_slow.log
vdiffr:
"$(RDEVBIN)/Rscript" -e 'vdiffr::manage_cases(filter = "plot|nafta")'
testcheck: test check
README.html: README.md
"$(RBIN)/Rscript" -e "rmarkdown::render('README.md', output_format = 'html_document', output_options = list(mathjax = NULL))"
vignettes/%.html: vignettes/mkin_vignettes.css vignettes/references.bib vignettes/%.rmd
"$(RBIN)/Rscript" -e "tools::buildVignette(file = 'vignettes/$*.rmd', dir = 'vignettes')"
vignettes: vignettes/mkin.html vignettes/FOCUS_D.html vignettes/FOCUS_L.html vignettes/twa.html
vignettes/web_only/%.html: vignettes/references.bib vignettes/web_only/%.rmd
"$(RBIN)/Rscript" -e "tools::buildVignette(file = 'vignettes/web_only/$*.rmd', dir = 'vignettes/web_only')"
articles: vignettes/web_only/FOCUS_Z.html vignettes/web_only/compiled_models.html vignettes/web_only/benchmarks.html
pd: roxygen
"$(RBIN)/Rscript" -e "pkgdown::build_site(run_dont_run = TRUE, lazy = TRUE)"
git add -A
pd_release: roxygen
"$(RBIN)/Rscript" -e "pkgdown::build_site(run_dont_run = TRUE)"
git add -A
r-forge:
git archive master > $(HOME)/git/mkin/mkin.tar;\
cd $(RFDIR) && rm -r `ls` && tar -xf $(HOME)/git/mkin/mkin.tar;\
rm -r $(SDDIR)/*;\
cp -a docs/* $(SDDIR);\
svn add --force .; svn rm --force `svn status | grep "\!" | cut -d " " -f 8`; cd $(RFSVN) && svn commit -m 'sync with git'
winbuilder: build
date
@echo "Uploading to R-release on win-builder"
curl -T $(TGZ) ftp://anonymous@win-builder.r-project.org/R-release/
@echo "Uploading to R-devel on win-builder"
curl -T $(TGZ) ftp://anonymous@win-builder.r-project.org/R-devel/
drat: build
"$(RBIN)/Rscript" -e "drat::insertPackage('$(TGZ)', commit = TRUE)"
$(WINBIN): build
@echo "Building windows binary package..."
"$(RBIN)/R" CMD INSTALL $(TGZ) --build
@echo "DONE."
winbin: $(WINBIN)
dratwin: winbin
"$(RBIN)/Rscript" -e "drat::insertPackage('$(WINBIN)', '~/git/drat/', commit = TRUE)"
submit:
@echo "\nHow about make test, make check, make pd, make winbuilder"
@echo "\nIs the DESCRIPTION file up to date?"
@echo "\nIs the NEWS.md file up to date?"
@echo "\nAre you sure you want to release to CRAN?"
@echo "\nThen make r-forge, commit leftover changes if any, tag the release and use the form at http://cran.r-project.org/submit.html"
|