From 053a2c74463c0fba4aee21763d815dd1bb860f4e Mon Sep 17 00:00:00 2001 From: Leila Lali Date: Wed, 12 Aug 2020 14:29:07 -0700 Subject: [PATCH] ML - Updating sqlmlutil to fix R package management (#11432) Updating sqlmlutil to fix R package management --- extensions/machine-learning/config.json | 20 +++++++++++-------- .../src/configurations/config.ts | 4 ++-- .../src/packageManagement/packageManager.ts | 8 +++++++- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/extensions/machine-learning/config.json b/extensions/machine-learning/config.json index 84fe9414cc..4d27d97d32 100644 --- a/extensions/machine-learning/config.json +++ b/extensions/machine-learning/config.json @@ -8,25 +8,29 @@ ], "requiredRPackages": [ { - "name": "RODBCext", - "repository": "https://mran.microsoft.com/snapshot/2019-02-01/" + "name": "vctrs", + "repository": "https://cran.r-project.org" + }, + { + "name": "odbc", + "repository": "https://cran.r-project.org" }, { "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", + "fileName": "sqlmlutils_0.7.3.zip", + "downloadUrl": "https://github.com/microsoft/sqlmlutils/releases/download/R-0.7.3/sqlmlutils_0.7.3.zip", "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", + "fileName": "sqlmlutils_0.7.3.tar.gz", + "downloadUrl": "https://github.com/microsoft/sqlmlutils/releases/download/R-0.7.3/sqlmlutils_0.7.3.tar.gz", "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", + "fileName": "sqlmlutils_0.7.3.tar.gz", + "downloadUrl": "https://github.com/microsoft/sqlmlutils/releases/download/R-0.7.3/sqlmlutils_0.7.3.tar.gz", "platform" : "linux" } ], diff --git a/extensions/machine-learning/src/configurations/config.ts b/extensions/machine-learning/src/configurations/config.ts index 9171a62d71..600a7a9a68 100644 --- a/extensions/machine-learning/src/configurations/config.ts +++ b/extensions/machine-learning/src/configurations/config.ts @@ -35,14 +35,14 @@ export class Config { } /** - * Returns the config value of required python packages + * Returns the config value of required python packages. The order of the packages is based on the order they should install */ public get requiredSqlPythonPackages(): PackageConfigModel[] { return this._configValues.sqlPackageManagement.requiredPythonPackages; } /** - * Returns the config value of required r packages + * Returns the config value of required r packages. The order of the packages is based on the order they should install */ public get requiredSqlRPackages(): PackageConfigModel[] { return this._configValues.sqlPackageManagement.requiredRPackages; diff --git a/extensions/machine-learning/src/packageManagement/packageManager.ts b/extensions/machine-learning/src/packageManagement/packageManager.ts index 10ef6713c8..42bdfcd48b 100644 --- a/extensions/machine-learning/src/packageManagement/packageManager.ts +++ b/extensions/machine-learning/src/packageManagement/packageManager.ts @@ -133,7 +133,13 @@ export class PackageManager { await utils.createFolder(utils.getRPackagesFolderPath(this._rootFolder)); const packages = this._config.requiredSqlRPackages.filter(p => !p.platform || p.platform === process.platform); - await Promise.all(packages.map(x => this.installRPackage(x))); + + // Installs packages in order of listed in the config. The order specifies the dependency of the packages and + // packages cannot install as parallel because of the dependency for each other + for (let index = 0; index < packages.length; index++) { + const packageName = packages[index]; + await this.installRPackage(packageName); + } } /**