blob: 4b449769c99c35559eb09eabcbea1f6f74643f5f [file] [log] [blame]
#! /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
)