[R] build CONTENTS or 00Index.html without installing whole package
To maintain my R site, I'm trying to install html help files only, but also keep track of the version (with DESCRIPTION). I have the following bash script, which works except for 00Index.html. That is not a huge problem because the help files are still searchable, but I'd like to fix it. A long time ago I asked the same question, and Brian Ripley said to use --index as an option to build-help.pl, but that isn't an option anymore. It seems that the 00Index.html file is built from the CONTENTS file, but I can't find how to construct that either. Here's the script so far. It works pretty much. (I'm not sure what happens if the pdf vignettes don't exist already: so far they have all existed and it works for those. And the last line doesn't work, so I just install a package and then the indices get rebuilt.) #!/bin/bash # makes indexable help files for R packages, including pdf vignettes # usage inst.bat "[files]" for PKG in `ls $1` do echo $PKG tar xfz $PKG PK=`echo $PKG | /bin/sed -e 's/.tar.gz//' | cut -d"_" -f1` echo $PK mkdir -pv /usr/lib/R/library/$PK mkdir -pv /usr/lib/R/library/$PK/html # copy description (which contains version number) and CONTENTS (for index) cp $PK/DESCRIPTION /usr/lib/R/library/$PK # build and move vignettes if present if [ -d $PK/inst/doc ]; then mkdir -pv /usr/lib/R/library/$PK/doc R CMD buildVignettes\($PK,$PK\) cp $PK/inst/doc/* /usr/lib/R/library/$PK/doc fi # make html files R CMD perl /usr/share/R/perl/build-help.pl --html /home/baron/$PK /usr/lib/R/library rm -rf $PK done # rebuild indices (doesn't work) R CMD make.packages.html __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] build CONTENTS or 00Index.html without installing whole package
Replying to my own message, I've now fixed up the bash script so that it works (below). I don't think that buildVignettes does anything I need, so I commented it out (but now runs). Rscript, and not R CMD (which I was mistakenly using before), seems to be the way to run arbitrary R functions from a script like this, although R CMD works for the perl script. But the main problem remains. Still no 00Index.html filles or CONTENTS. I suppose I could write a script to generate the 00Index.html file from the Rd files, but I'm sure I'd be reinventing the wheel. Reminder: The main purpose of this is to set up a site with all the help files of all the packages available in html format, and pdf files of vignettes. Once I figure this out, it will be much easier for someone else to reproduce the site I have at http://finzi.psych.upenn.edu, and easier for me to maintain it. #!/bin/bash # makes indexable help files for R packages, including pdf vignettes # usage inst.bat "[files]" (in quotes, if wildcards) for PKG in `ls $1` do tar xfz $PKG PK=`echo $PKG | /bin/sed -e 's/.tar.gz//' | cut -d"_" -f1` echo $PK mkdir -pv /usr/lib/R/library/$PK mkdir -pv /usr/lib/R/library/$PK/html # copy description (which contains version number) cp $PK/DESCRIPTION /usr/lib/R/library/$PK # move vignettes if present if [ -d $PK/inst/doc ]; then mkdir -pv /usr/lib/R/library/$PK/doc cp $PK/inst/doc/* /usr/lib/R/library/$PK/doc # Rscript --default-packages="tools" --no-init-file --no-save \ #-e "buildVignettes('$PK','/usr/lib/R/library/$PK')" fi # make html files R CMD perl /usr/share/R/perl/build-help.pl --html \ /home/baron/$PK /usr/lib/R/library rm -rf $PK done Rscript --no-init-file --no-save -e "make.packages.html()" __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] build CONTENTS or 00Index.html without installing whole package
Replying to myself again, I've now figured out how to build all the help files, including 00Index.html, without actually building the package. The point is to construct a complete list of all html help files for searching. The one thing I cannot figure out is how to build the index of all packages which (for me) is at /usr/share/doc/R-2.9.0/html/packages.html Apparently this requires something other than DESCRIPTION and 00Index.html files in each package, which is all I have. Here is the script: #!/bin/bash # makes indexable help files for R packages, including pdf vignettes # usage inst.bat "[files]" --- quotes needed for wildcards like "*.tar.gz" for PKG in `ls $1` do tar xfz $PKG PK=`echo $PKG | /bin/sed -e 's/.tar.gz//' | cut -d"_" -f1` echo $PK mkdir -pv /usr/lib/R/library/$PK mkdir -pv /usr/lib/R/library/$PK/html # copy description (which contains version number) cp $PK/DESCRIPTION /usr/lib/R/library/$PK # move vignettes if present if [ -d $PK/inst/doc ]; then mkdir -pv /usr/lib/R/library/$PK/doc cp $PK/inst/doc/* /usr/lib/R/library/$PK/doc fi # make html files R CMD perl /usr/share/R/perl/build-help.pl --html /home/baron/$PK /usr/lib/R/library/ # make indices Rscript --vanilla -e "tools:::.writePkgIndices('$PK','/usr/lib/R/library/$PK')" rm -rf $PK done # try to build package list, doesn't work # Rscript --no-init-file --no-save -e "make.packages.html(packages=FALSE)" -- Jonathan Baron, Professor of Psychology, University of Pennsylvania Home page: http://www.sas.upenn.edu/~baron __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] build CONTENTS or 00Index.html without installing whole package
OK, one more for the records. This script is now written so that it uses Rscript instead of bash. The last line still does not work. I don't know what make.packages.html requires, but apparently it requires more than DESCRIPTION and 00Index.html in order to include a package. (The line about buildVignettes seems useless, so I commented it out.) The command line can include *. So I use this after download.packages(), with inst.R *.tar.gz. (inst.R is what i call the script.) #!/usr/bin/Rscript --vanilla # makes indexable help files for R packages, including pdf vignettes # usage inst.R [files] FILES <- commandArgs(TRUE) print(FILES) for (PKG in FILES) { system(paste("tar xfz",PKG)) PK <- strsplit(PKG,"_")[[1]][1] print(PK) system(paste("mkdir -pv /usr/lib/R/library/",PK,"/html",sep="")) # copy description (which contains version number) system(paste("cp ",PK,"/DESCRIPTION /usr/lib/R/library/",PK,sep="")) # move vignettes if present system(paste("cp -r ",PK,"/inst/doc /usr/lib/R/library/",PK," >& /dev/null",sep="")) #buildVignettes(PK,paste("/usr/lib/R/library/",PK,sep="")) # make html files system(paste("cd /usr/share/R/perl; ","perl build-help.pl --html /home/baron/", PK," /usr/lib/R/library/","; cd /home/baron",sep="")) # make indices tools:::.writePkgIndices(PK,paste("/usr/lib/R/library/",PK,sep="")) system(paste("rm -rf",PK)) } # try to build package list, doesn't work # make.packages.html() -- Jonathan Baron, Professor of Psychology, University of Pennsylvania Home page: http://www.sas.upenn.edu/~baron __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] build CONTENTS or 00Index.html without installing whole package
Problem solved. Current script is at http://finzi.psych.upenn.edu/~baron/inst.R This makes all the help files in html format without installing any packages. __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.