diff --git a/extensions/machine-learning/config.json b/extensions/machine-learning/config.json index ab363773d5..a206e4b3e7 100644 --- a/extensions/machine-learning/config.json +++ b/extensions/machine-learning/config.json @@ -9,12 +9,25 @@ "requiredRPackages": [ { "name": "RODBCext", - "repository": "https://cran.microsoft.com" + "repository": "https://mran.microsoft.com/snapshot/2019-02-01/" }, { "name": "sqlmlutils", "fileName": "sqlmlutils_0.7.1.zip", - "downloadUrl": "https://github.com/microsoft/sqlmlutils/blob/master/R/dist/sqlmlutils_0.7.1.zip?raw=true" + "downloadUrl": "https://github.com/microsoft/sqlmlutils/blob/master/R/dist/sqlmlutils_0.7.1.zip?raw=true", + "platform" : "win32" + }, + { + "name": "sqlmlutils", + "fileName": "sqlmlutils_0.7.1.tar.gz", + "downloadUrl": "https://github.com/microsoft/sqlmlutils/blob/master/R/dist/sqlmlutils_0.7.1.tar.gz?raw=true", + "platform" : "darwin" + }, + { + "name": "sqlmlutils", + "fileName": "sqlmlutils_0.7.1.tar.gz", + "downloadUrl": "https://github.com/microsoft/sqlmlutils/blob/master/R/dist/sqlmlutils_0.7.1.tar.gz?raw=true", + "platform" : "linux" } ], "rPackagesRepository": "https://cran.r-project.org" diff --git a/extensions/machine-learning/src/configurations/packageConfigModel.ts b/extensions/machine-learning/src/configurations/packageConfigModel.ts index b582ee4744..b96319afa5 100644 --- a/extensions/machine-learning/src/configurations/packageConfigModel.ts +++ b/extensions/machine-learning/src/configurations/packageConfigModel.ts @@ -32,4 +32,9 @@ export interface PackageConfigModel { * Package file name if package has download url */ fileName?: string; + + /** + * Package platform (Windows, Mac, Linux) + */ + platform?: string; } diff --git a/extensions/machine-learning/src/packageManagement/packageManager.ts b/extensions/machine-learning/src/packageManagement/packageManager.ts index 54b0c23ecc..b474b4deca 100644 --- a/extensions/machine-learning/src/packageManagement/packageManager.ts +++ b/extensions/machine-learning/src/packageManagement/packageManager.ts @@ -67,7 +67,6 @@ export class PackageManager { */ public async managePackages(): Promise { try { - await this.enableExternalScript(); // Only execute the command if there's a valid connection with ml configuration enabled // @@ -129,7 +128,8 @@ export class PackageManager { } await utils.createFolder(utils.getRPackagesFolderPath(this._rootFolder)); - await Promise.all(this._config.requiredSqlRPackages.map(x => this.installRPackage(x))); + const packages = this._config.requiredSqlRPackages.filter(p => !p.platform || p.platform === process.platform); + await Promise.all(packages.map(x => this.installRPackage(x))); } /** diff --git a/extensions/machine-learning/src/packageManagement/sqlRPackageManageProvider.ts b/extensions/machine-learning/src/packageManagement/sqlRPackageManageProvider.ts index c40560e4b8..cc20d599ca 100644 --- a/extensions/machine-learning/src/packageManagement/sqlRPackageManageProvider.ts +++ b/extensions/machine-learning/src/packageManagement/sqlRPackageManageProvider.ts @@ -75,7 +75,7 @@ export class SqlRPackageManageProvider extends SqlPackageManageProviderBase impl let scripts: string[] = [ 'formals(quit)$save <- formals(q)$save <- "no"', 'library(sqlmlutils)', - `connection <- connectionInfo(${connectionParts})`, + `connection <- connectionInfo(driver= "ODBC Driver 17 for SQL Server", ${connectionParts})`, `r = getOption("repos")`, `r["CRAN"] = "${this._config.rPackagesRepository}"`, `options(repos = r)`,