[
https://issues.apache.org/jira/browse/CB-9278?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14636692#comment-14636692
]
ASF GitHub Bot commented on CB-9278:
------------------------------------
Github user vladimir-kotikov commented on a diff in the pull request:
https://github.com/apache/cordova-lib/pull/266#discussion_r35200567
--- Diff: cordova-lib/src/cordova/restore-util.js ---
@@ -56,24 +57,23 @@ function installPlatformsFromConfigXML(platforms) {
if (!targets || !targets.length) {
return Q.all('No platforms are listed in config.xml to restore');
}
- // Run platform add for all the platforms seperately
+
+
+ // Run `platform add` for all the platforms separately
// so that failure on one does not affect the other.
- var promises = targets.map(function (target) {
+
+ // CB-9278 : Run `platform add` serially, one platform after another
+ // Otherwise, we get a bug where the following line:
https://github.com/apache/cordova-lib/blob/0b0dee5e403c2c6d4e7262b963babb9f532e7d27/cordova-lib/src/util/npm-helper.js#L39
+ // gets executed simultaneously by each platform and leads to an
exception being thrown
+ return promiseutil.Q_chainmap_graceful(targets, function(target) {
if (target) {
--- End diff --
nit: I wonder if `target` can be falsy? Probably this condition is not
required.
> Restoring multiple platforms fails
> ----------------------------------
>
> Key: CB-9278
> URL: https://issues.apache.org/jira/browse/CB-9278
> Project: Apache Cordova
> Issue Type: Bug
> Components: CordovaLib
> Affects Versions: Master
> Environment: OS X
> Reporter: Dmitry Blotsky
> Assignee: Omar Mefire
> Labels: cordova-lib, platform, restore, save
> Original Estimate: 48h
> Remaining Estimate: 48h
>
> Steps to reproduce:
> 1. Create a blank app: {{cordova create test com.app.test test}}
> 2. Add and save a platform: {{cordova platform add --save ios}}
> 3. Add and save another platform: {{cordova platform add --save android}}
> 4. Remove the platforms: {{cordova platform remove android ios}}
> 5. Try to restore platforms automatically: {{cordova prepare}}
> Expected: both platforms installed and prepared
> Actual:
> {noformat}
> Error: Trying to initialize npm when settings have not been restored from a
> previous initialization.
> {noformat}
> Running {{cordova prepare}} again fixes the issue.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]