[jira] [Updated] (CB-13853) cordova prepare fails to install plugins

2018-02-23 Thread Valentin Haloiu (JIRA)

 [ 
https://issues.apache.org/jira/browse/CB-13853?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Valentin Haloiu updated CB-13853:
-
Summary: cordova prepare fails to install plugins  (was: Plugin 
installation is not deterministic)

> cordova prepare fails to install plugins
> 
>
> Key: CB-13853
> URL: https://issues.apache.org/jira/browse/CB-13853
> Project: Apache Cordova
>  Issue Type: Bug
>  Components: cordova-lib
>Affects Versions: cordova@8.0.0
> Environment: * Node {{9.5.0}}
>  * NPM {{5.6.0}}
>  * Cordova {{8.0.0}}
>Reporter: Valentin Haloiu
>Priority: Major
>
> h2. Demo cordova project
> [cordova-plugin-install-bug-demo|https://github.com/vially/cordova-plugin-install-bug-demo]
> h2. Steps to reproduce
> After cloning the repo {{cd}} into the root directory of the project and run:
>  * {{npm install}}
>  * {{cordova prepare ios --verbose}}
> The plugins will fail to install correctly and the contents of the generated 
> {{plugins/fetch.json}} file is messed up:
> {noformat}
> {
>   "cordova-plugin-whitelist": {
> "source": {
>   "type": "registry",
>   "id": "cordova-plugin-whitelist@1.3.1"
> },
> "is_top_level": true,
> "variables": {}
>   },
>   "cordova-plugin-splashscreen": {
> "source": {
>   "type": "registry",
>   "id": "cordova-plugin-customurlscheme@^4.3.0"
> },
> "is_top_level": true,
> "variables": {
>   "URL_SCHEME": "io.cordova.hellocordova"
> }
>   }
> }
> {noformat}
>  Also, the output of the {{cordova prepare ios --verbose}} makes it quite 
> clear that something went wrong during the installation:
> {noformat}
> ...
> Discovered plugin "cordova-plugin-customurlscheme" in config.xml. Adding it 
> to the project
> No scripts found for hook "before_plugin_add".
> Calling plugman.fetch on plugin "cordova-plugin-customurlscheme@^4.3.0"
> Running command: npm install cordova-plugin-customurlscheme@^4.3.0 
> --production --no-save
> Command finished with error code 0: npm 
> install,cordova-plugin-customurlscheme@^4.3.0,-production,-no-save
> Copying plugin 
> "/path-to-project/cordova-install-plugin-bug/node_modules/cordova-plugin-splashscreen"
>  => 
> "/path-to-project/cordova-install-plugin-bug/plugins/cordova-plugin-splashscreen"
> Calling plugman.install on plugin 
> "/path-to-project/cordova-install-plugin-bug/plugins/cordova-plugin-splashscreen"
>  for platform "ios
> Plugin "cordova-plugin-splashscreen" already installed on ios.
> ...
> {noformat}
> The installation process seems to mess up the installation of the 
> {{customurlscheme}} plugin with that of the {{splashscreen}} plugin.
> h2. Underlying code issue
> The root of the problem seems to be in the 
> [add.js|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js]
>  {{cordova-lib}} file.
> [Line 
> 97|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js#L97]
>  prints the {{Calling plugman.fetch on plugin "customurlscheme"}} line, while 
> [line 
> 131|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js#L131]
>  prints {{Calling plugman.install on plugin "splashscreen"}}.
> This seems to suggest that somewhere between these two lines cordova messes 
> up the plugins somehow.
> The code is somewhat difficult to understand but the root cause seems to be 
> this 
> [pluginInfo|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js#L52]
>  global variable. Its value is [assigned in the callback of a 
> promise|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js#L103],
>  read from [another callback of a 
> promise|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js#L131],
>  while [a whole chain of 
> promises|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js#L74]
>  is set using a {{reduce}} function.
> h2. Further information
> Replacing {{"cordova-plugin-splashscreen": "^5.0.1"}} with 
> {{"cordova-plugin-splashscreen": "5.0.1"}} in {{package.json}} makes the 
> {{prepare}} command complete succesfully ([demo 
> branch|https://github.com/vially/cordova-plugin-install-bug-demo/tree/no-fail]).
>  This is a small example of the volatility of the bug.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

-
To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org
For additional commands, e-mail: issues-h...@cordova.apache.org



[jira] [Created] (CB-13853) Plugin installation is not deterministic

2018-02-06 Thread Valentin Haloiu (JIRA)
Valentin Haloiu created CB-13853:


 Summary: Plugin installation is not deterministic
 Key: CB-13853
 URL: https://issues.apache.org/jira/browse/CB-13853
 Project: Apache Cordova
  Issue Type: Bug
  Components: cordova-lib
Affects Versions: cordova@8.0.0
 Environment: * Node {{9.5.0}}
 * NPM {{5.6.0}}
 * Cordova {{8.0.0}}
Reporter: Valentin Haloiu


h2. Demo cordova project

[cordova-plugin-install-bug-demo|https://github.com/vially/cordova-plugin-install-bug-demo]
h2. Steps to reproduce

After cloning the repo {{cd}} into the root directory of the project and run:
 * {{npm install}}
 * {{cordova prepare ios --verbose}}

The plugins will fail to install correctly and the contents of the generated 
{{plugins/fetch.json}} file is messed up:
{noformat}
{
  "cordova-plugin-whitelist": {
"source": {
  "type": "registry",
  "id": "cordova-plugin-whitelist@1.3.1"
},
"is_top_level": true,
"variables": {}
  },
  "cordova-plugin-splashscreen": {
"source": {
  "type": "registry",
  "id": "cordova-plugin-customurlscheme@^4.3.0"
},
"is_top_level": true,
"variables": {
  "URL_SCHEME": "io.cordova.hellocordova"
}
  }
}
{noformat}
 Also, the output of the {{cordova prepare ios --verbose}} makes it quite clear 
that something went wrong during the installation:
{noformat}
...
Discovered plugin "cordova-plugin-customurlscheme" in config.xml. Adding it to 
the project
No scripts found for hook "before_plugin_add".
Calling plugman.fetch on plugin "cordova-plugin-customurlscheme@^4.3.0"
Running command: npm install cordova-plugin-customurlscheme@^4.3.0 --production 
--no-save
Command finished with error code 0: npm 
install,cordova-plugin-customurlscheme@^4.3.0,-production,-no-save
Copying plugin 
"/path-to-project/cordova-install-plugin-bug/node_modules/cordova-plugin-splashscreen"
 => 
"/path-to-project/cordova-install-plugin-bug/plugins/cordova-plugin-splashscreen"
Calling plugman.install on plugin 
"/path-to-project/cordova-install-plugin-bug/plugins/cordova-plugin-splashscreen"
 for platform "ios
Plugin "cordova-plugin-splashscreen" already installed on ios.
...
{noformat}
The installation process seems to mess up the installation of the 
{{customurlscheme}} plugin with that of the {{splashscreen}} plugin.
h2. Underlying code issue

The root of the problem seems to be in the 
[add.js|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js]
 {{cordova-lib}} file.

[Line 
97|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js#L97]
 prints the {{Calling plugman.fetch on plugin "customurlscheme"}} line, while 
[line 
131|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js#L131]
 prints {{Calling plugman.install on plugin "splashscreen"}}.

This seems to suggest that somewhere between these two lines cordova messes up 
the plugins somehow.

The code is somewhat difficult to understand but the root cause seems to be 
this 
[pluginInfo|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js#L52]
 global variable. Its value is [assigned in the callback of a 
promise|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js#L103],
 read from [another callback of a 
promise|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js#L131],
 while [a whole chain of 
promises|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js#L74]
 is set using a {{reduce}} function.
h2. Further information

Replacing {{"cordova-plugin-splashscreen": "^5.0.1"}} with 
{{"cordova-plugin-splashscreen": "5.0.1"}} in {{package.json}} makes the 
{{prepare}} command complete succesfully ([demo 
branch|https://github.com/vially/cordova-plugin-install-bug-demo/tree/no-fail]).
 This is a small example of the volatility of the bug.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

-
To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org
For additional commands, e-mail: issues-h...@cordova.apache.org