Thinking again about how we could get RStan onto CRAN, if we made boost a
system requirement to build stanc (only) and created a dependency on
the BH package
http://cran.r-project.org/web/packages/BH/index.htmlin
order to build both libstan and the user models, then I think we could
avoid the purported reason (excessive size) that RStan was rejected the
first time. There is an issue that the BH package is based on boost
1.51, but presumably we could ask Jay to update it and presumably we
want Stan to stick with boost 1.51 for a while due to the ongoing
modularization / git-ification of boost.
However, the BH package
currently does not include enough of boost to build libstan or the user
models. AFAICT, these headers (plus whatever they pull in) are needed by
some part of (the master branch of) Stan but are not included in the BH
package
goodrich@CYBERPOWERPC:/opt/stan$ cat /tmp/missing_boost_headers.txt
boost/accumulators/accumulators.hpp
boost/algorithm/string.hpp
boost/exception/all.hpp
boost/fusion/include/adapt_struct.hpp
boost/math/constants/constants.hpp
boost/math/distributions.hpp
boost/math/policies/error_handling.hpp
boost/math/special_functions/acosh.hpp
boost/math/special_functions/asinh.hpp
boost/math/special_functions/atanh.hpp
boost/math/special_functions/beta.hpp
boost/math/special_functions/cbrt.hpp
boost/math/special_functions/digamma.hpp
boost/math/special_functions/erf.hpp
boost/math/special_functions/gamma.hpp
boost/math/special_functions/hypot.hpp
boost/math/special_functions/owens_t.hpp
boost/math/special_functions/round.hpp
boost/math/special_functions/trunc.hpp
boost/multi_array.hpp
boost/random/additive_combine.hpp
boost/random/bernoulli_distribution.hpp
boost/random/binomial_distribution.hpp
boost/random/cauchy_distribution.hpp
boost/random/chi_squared_distribution.hpp
boost/random/exponential_distribution.hpp
boost/random/gamma_distribution.hpp
boost/random/lognormal_distribution.hpp
boost/random/negative_binomial_distribution.hpp
boost/random/normal_distribution.hpp
boost/random/poisson_distribution.hpp
boost/random/student_t_distribution.hpp
boost/random/uniform_01.hpp
boost/random/uniform_real_distribution.hpp
boost/random/weibull_distribution.hpp
boost/spirit/include/qi.hpp
boost/variant/apply_visitor.hpp
boost/variant/recursive_variant.hpp
I obtained this list by moving my /usr/include/boost out of the way and calling
make clean-all && make O=0 CC=clang++ BOOST=/tmp/BH/inst/include/ -j7 -k test-all 2> /tmp/boost_errors.txt
grep -F "file not found" /tmp/boost_errors.txt | sed 's/^.*error: //g' | sed 's/ file not found//g' | sort | uniq | sed s/\'//g > /tmp/missing_boost_headers.txt
Of the above, I suspect the following are "stanc only"
boost/fusion/include/adapt_struct.hpp
boost/spirit/include/qi.hpp
boost/variant/apply_visitor.hpp
boost/variant/recursive_variant.hpp
Is that correct? If I exclude those and use bcp to copy everything that the remaining headers pull in, it adds 8M of files that were not already in the BH package, which could be a problem for them so if it is possible to cut down further that would be good.
Ben