#! /bin/sh # # ${R_HOME}/tools/rsync-recommended : ${CRAN_RSYNC='cran.r-project.org::CRAN'} ## The intention here is infer TOOLS_DIR from an explicit path. ## but the user might have called it from tools, so test that case ## separately. TOOLS_DIR=`echo ${0} | sed 's%/[^/][^/]*$%%'` if test ${TOOLS_DIR} = ${0} ; then TOOLS_DIR="." fi (cd "${TOOLS_DIR}"/.. version=`cut -f1 -d' ' VERSION` if test "`cut -f2 -d' ' VERSION`" = "Patched"; then version=`echo ${version} | sed 's/\.[0-9]*$//'` version="${version}-patched" fi PKGS=`grep '^R_PKGS_RECOMMENDED *=' share/make/vars.mk | \ sed 's/.*=//'` cd src/library/Recommended ## The purpose of the rsync options is to get the timestamps on the ## downloaded files to reflect time of download. ## We can't use '-t' because then we could download a changed file ## that was older the last build and therefore would not be installed. ## The '-c' (checksum first) is necessary because otherwise all the ## files get their mtime changed whether updated or not. ## We would like to use '-C' to prevent '--delete' from removing the ## CVS subdirectory, but in some versions of rsync this adds the ## exclude patterns from .cvsignore without a way to override, so we ## try using an exclude pattern. rsync -rcIz --timeout=60 --verbose --delete --include="*.tar.gz" \ --exclude=Makefile.in --exclude=Makefile.win --exclude=Makefile --exclude=".svn" \ --exclude="CVS*" --exclude=.cvsignore --exclude="*.tgz" \ "${CRAN_RSYNC}"/src/contrib/${version}/Recommended/ . || \ { echo "*** rsync failed to update Recommended files ***" && exit 1; } ## Link each package to a simplified name so that Make has an easier ## time. Notice that as far as Make is concerned, the symlinks have ## the same timestamp as the file they point to. Don't remove the ## existing links until now in case rsync fails. echo "Creating links" rm -f *.tgz for i in ${PKGS} ; do ln -s $i*.tar.gz ${i}.tgz done )