#!/bin/sh # # sa-nightly -> svn up -> rsr # -> sa-build $1 : configure + make + check # -> sa-fixup $1 : install, fix-up, tar-up # + build Mac GUI # -> pkg $1 : package # + sign : ${BASE=/Builds/R-builds/nightly} : ${RDIRS=`cat $BASE/builds`} ## make sure we run in C locale due to a bug in sed export LANG=C RBUILDS=$BASE XCODEBLD=/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild . $BASE/common ## EL Capitan uses Xcode 8 with 10.12 SDK so we have to force 10.11 target if [ "$oscode" = el-capitan ]; then XCODEBLD="$XCODEBLD MACOSX_DEPLOYMENT_TARGET=10.11" fi date > $BASE/nightly.log if [ "$1" = cron ]; then $BASE/nightly.update >> $BASE/nightly.log fi rm -f $BASE/GUIs $BASE/R-GUI-*.tar.gz : ${rebuild=yes} if [ ! -e "$HOME/.subversion" -a -e $BASE/home/.subversion ]; then export HOME="$BASE/home" echo "Using custom build HOME: $HOME" >> $BASE/nightly.log fi for RD in $RDIRS; do echo "$RD" ok=yes if [ $rebuild = yes ]; then if [ -e $BASE/$RD/.svn ]; then # make sure there is no stray read-only home hdiutil detach -force $HOME 2>/dev/null echo "SVN update on $RD" >> $BASE/nightly.log cd $BASE/$RD svn cleanup ## sometimes locks get in the way svn up 2>> $BASE/nightly.log tools/rsync-recommended 2>> $BASE/nightly.log fi cd $BASE ./sa-build $RD fi if [ $ok = yes ]; then if [ $rebuild = yes ]; then cd $BASE ./sa-fixup $RD fi ## sync log files into "deploy" for file in build check conf; do rm -f "$BASE/deploy/$oscode/$RD/$ARCH/$file" cp -p "$BASE/$oscode-$ARCH/$RD.$file" "$BASE/deploy/$oscode/$RD/$ARCH/$file" 2> /dev/null done rm -f "$BASE/deploy/$oscode/$RD/$ARCH/FAILED" "$BASE/deploy/$oscode/$RD/$ARCH/SUCCESS" if [ -e "$BASE/$oscode-$ARCH/$RD.FAILED" ]; then cp -p "$BASE/$oscode-$ARCH/$RD.FAILED" "$BASE/deploy/$oscode/$RD/$ARCH/FAILED"; fi if [ -e "$BASE/$oscode-$ARCH/$RD.SUCCESS" ]; then cp -p "$BASE/$oscode-$ARCH/$RD.SUCCESS" "$BASE/deploy/$oscode/$RD/$ARCH/SUCCESS"; fi if [ -e $BASE/$oscode-sa-$ARCH/$RD.SUCCESS ]; then echo "Universal framework built successfully." >> $BASE/nightly.log cd $BASE/Mac-GUI echo "Updating Mac-GUI" >> $BASE/nightly.log svn cleanup svn up $GUI_SVN_UP_FLAGS 2>> $BASE/nightly.log mkdir -p "$BASE/deploy/$oscode/$RD" 2>/dev/null SVNREV=`svn info | sed -n 's/Revision: //p'` CURRENT_R_VER=`readlink /Library/Frameworks/R.framework/Versions/Current` SHORTVER=`echo ${CURRENT_R_VER} | sed 's/^\([0-9]\{1,\}\.[0-9]\).*/\1/'` BLD=$BASE/Mac-GUI/build BSTYLES="Debug Release" for bst in $BSTYLES; do cd $BASE/Mac-GUI rm -rf $BLD/$bst $BLD/R.build echo "Mac-GUI for $SHORTVER, $bst" >> $BASE/nightly.log LANG=en_US.UTF-8 $XCODEBLD -alltargets -configuration $bst 2>> $BASE/nightly.log if [ -e $BLD/$bst/R.app/Contents/MacOS/R ]; then cd $BLD/$bst chgrp -Rh admin R.app chmod -R g+w R.app find R.app -name .svn |xargs rm -rf # sign the GUI # not yet - it doesn't verify ... # $BASE/unlock-sign # xcrun codesign --force --sign "Developer ID Application" R.app GUINAME="R-GUI-$SVNREV-$SHORTVER-$oscode-$bst" tar fcz $BASE/$GUINAME.tar.gz R.app mv $BASE/$GUINAME.tar.gz "$BASE/deploy/$oscode/$RD/" rm -rf $GUINAME mkdir $GUINAME mv R.app $GUINAME/ rm -f $BASE/$GUINAME.dmg hdiutil create -srcfolder $GUINAME $BASE/$GUINAME.dmg rm -rf $GUINAME echo "$GUINAME" >> $BASE/GUIs mv $BASE/$GUINAME.dmg "$BASE/deploy/$oscode/$RD/" fi rm -rf $BLD/$bst $BLD/R.build done rm -f $BASE/deploy/$oscode/$RD/$RD-$oscode.pkg $BASE/deploy/$oscode/$RD/$RD-$oscode-signed.pkg # make sure there is no stray read-only home hdiutil detach -force $HOME 2>/dev/null ## run packaging step cd $BASE ./runpkg $RD if [ -e "$BASE/deploy/$oscode/$RD/$RD-$oscode.pkg" ]; then ## sign the package $BASE/unlock-sign > $BASE/deploy/$oscode/$RD/sign 2>&1 xcrun productsign --sign 'Developer ID Installer' $BASE/deploy/$oscode/$RD/$RD-$oscode.pkg $BASE/deploy/$oscode/$RD/$RD-$oscode-signed.pkg >> $BASE/deploy/$oscode/$RD/sign 2>&1 fi fi fi done if [ "$1" = cron ]; then # make sure there is no stray read-only home since we'll need keys hdiutil detach -force $HOME 2>/dev/null cd $BASE ./old2new ./upindex ./upweb ./upindex if [ -e "$BASE/$oscode-x86_64/R-devel/doc/manual/R-admin.html" ]; then scp "$BASE/$oscode"-x86_64/R-devel/doc/manual/*.html r:wwwfiles/man/ >/dev/null fi fi