08ef7d7187
## What changes were proposed in this pull request?
This PR proposes to use https://rversions.r-pkg.org/r-release-win instead of https://rversions.r-pkg.org/r-release to check R's version for Windows correctly.
We met a syncing problem with Windows release (see #15709) before. To cut this short, it was ...
- 3.3.2 release was released but not for Windows for few hours.
- `https://rversions.r-pkg.org/r-release` returns the latest as 3.3.2 and the download link for 3.3.1 becomes `windows/base/old` by our script
- 3.3.2 release for WIndows yet
- 3.3.1 is still not in `windows/base/old` but `windows/base` as the latest
- Failed to download with `windows/base/old` link and builds were broken
I believe this problem is not only what we met. Please see 01ce943929
and also this `r-release-win` API came out between 3.3.1 and 3.3.2 (assuming to deal with this issue), please see `https://github.com/metacran/rversions.app/issues/2`.
Using this API will prevent the problem although it looks quite rare assuming from the commit logs in https://github.com/metacran/rversions.app/commits/master. After 3.3.2, both `r-release-win` and `r-release` are being updated together.
## How was this patch tested?
AppVeyor tests.
Author: hyukjinkwon <gurwls223@gmail.com>
Closes #18859 from HyukjinKwon/use-reliable-link.
128 lines
3.7 KiB
PowerShell
128 lines
3.7 KiB
PowerShell
<#
|
|
Licensed to the Apache Software Foundation (ASF) under one
|
|
or more contributor license agreements. See the NOTICE file
|
|
distributed with this work for additional information
|
|
regarding copyright ownership. The ASF licenses this file
|
|
to you under the Apache License, Version 2.0 (the
|
|
"License"); you may not use this file except in compliance
|
|
with the License. You may obtain a copy of the License at
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
Unless required by applicable law or agreed to in writing,
|
|
software distributed under the License is distributed on an
|
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
KIND, either express or implied. See the License for the
|
|
specific language governing permissions and limitations
|
|
under the License.
|
|
#>
|
|
|
|
$CRAN = "https://cloud.r-project.org"
|
|
|
|
Function InstallR {
|
|
if ( -not(Test-Path Env:\R_ARCH) ) {
|
|
$arch = "i386"
|
|
}
|
|
Else {
|
|
$arch = $env:R_ARCH
|
|
}
|
|
|
|
$urlPath = ""
|
|
$latestVer = $(ConvertFrom-JSON $(Invoke-WebRequest http://rversions.r-pkg.org/r-release-win).Content).version
|
|
If ($rVer -ne $latestVer) {
|
|
$urlPath = ("old/" + $rVer + "/")
|
|
}
|
|
|
|
$rurl = $CRAN + "/bin/windows/base/" + $urlPath + "R-" + $rVer + "-win.exe"
|
|
|
|
# Downloading R
|
|
Start-FileDownload $rurl "R-win.exe"
|
|
|
|
# Running R installer
|
|
Start-Process -FilePath .\R-win.exe -ArgumentList "/VERYSILENT /DIR=C:\R" -NoNewWindow -Wait
|
|
|
|
$RDrive = "C:"
|
|
echo "R is now available on drive $RDrive"
|
|
|
|
$env:PATH = $RDrive + '\R\bin\' + $arch + ';' + 'C:\MinGW\msys\1.0\bin;' + $env:PATH
|
|
|
|
# Testing R installation
|
|
Rscript -e "sessionInfo()"
|
|
}
|
|
|
|
Function InstallRtools {
|
|
$rtoolsver = $rToolsVer.Split('.')[0..1] -Join ''
|
|
$rtoolsurl = $CRAN + "/bin/windows/Rtools/Rtools$rtoolsver.exe"
|
|
|
|
# Downloading Rtools
|
|
Start-FileDownload $rtoolsurl "Rtools-current.exe"
|
|
|
|
# Running Rtools installer
|
|
Start-Process -FilePath .\Rtools-current.exe -ArgumentList /VERYSILENT -NoNewWindow -Wait
|
|
|
|
$RtoolsDrive = "C:"
|
|
echo "Rtools is now available on drive $RtoolsDrive"
|
|
|
|
if ( -not(Test-Path Env:\GCC_PATH) ) {
|
|
$gccPath = "gcc-4.6.3"
|
|
}
|
|
Else {
|
|
$gccPath = $env:GCC_PATH
|
|
}
|
|
$env:PATH = $RtoolsDrive + '\Rtools\bin;' + $RtoolsDrive + '\Rtools\MinGW\bin;' + $RtoolsDrive + '\Rtools\' + $gccPath + '\bin;' + $env:PATH
|
|
$env:BINPREF=$RtoolsDrive + '/Rtools/mingw_$(WIN)/bin/'
|
|
}
|
|
|
|
# create tools directory outside of Spark directory
|
|
$up = (Get-Item -Path ".." -Verbose).FullName
|
|
$tools = "$up\tools"
|
|
if (!(Test-Path $tools)) {
|
|
New-Item -ItemType Directory -Force -Path $tools | Out-Null
|
|
}
|
|
|
|
# ========================== Maven
|
|
Push-Location $tools
|
|
|
|
$mavenVer = "3.3.9"
|
|
Start-FileDownload "https://archive.apache.org/dist/maven/maven-3/$mavenVer/binaries/apache-maven-$mavenVer-bin.zip" "maven.zip"
|
|
|
|
# extract
|
|
Invoke-Expression "7z.exe x maven.zip"
|
|
|
|
# add maven to environment variables
|
|
$env:Path += ";$tools\apache-maven-$mavenVer\bin"
|
|
$env:M2_HOME = "$tools\apache-maven-$mavenVer"
|
|
$env:MAVEN_OPTS = "-Xmx2g -XX:ReservedCodeCacheSize=512m"
|
|
|
|
Pop-Location
|
|
|
|
# ========================== Hadoop bin package
|
|
$hadoopVer = "2.6.4"
|
|
$hadoopPath = "$tools\hadoop"
|
|
if (!(Test-Path $hadoopPath)) {
|
|
New-Item -ItemType Directory -Force -Path $hadoopPath | Out-Null
|
|
}
|
|
Push-Location $hadoopPath
|
|
|
|
Start-FileDownload "https://github.com/steveloughran/winutils/archive/master.zip" "winutils-master.zip"
|
|
|
|
# extract
|
|
Invoke-Expression "7z.exe x winutils-master.zip"
|
|
|
|
# add hadoop bin to environment variables
|
|
$env:HADOOP_HOME = "$hadoopPath/winutils-master/hadoop-$hadoopVer"
|
|
$env:Path += ";$env:HADOOP_HOME\bin"
|
|
|
|
Pop-Location
|
|
|
|
# ========================== R
|
|
$rVer = "3.4.1"
|
|
$rToolsVer = "3.4.0"
|
|
|
|
InstallR
|
|
InstallRtools
|
|
|
|
$env:R_LIBS_USER = 'c:\RLibrary'
|
|
if ( -not(Test-Path $env:R_LIBS_USER) ) {
|
|
mkdir $env:R_LIBS_USER
|
|
}
|
|
|