You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Marcus Pridham (JIRA)" <ji...@apache.org> on 2013/10/16 00:54:41 UTC

[jira] [Created] (CB-5091) Installing a plugin using a relative path may fail

Marcus Pridham created CB-5091:
----------------------------------

             Summary: Installing a plugin using a relative path may fail
                 Key: CB-5091
                 URL: https://issues.apache.org/jira/browse/CB-5091
             Project: Apache Cordova
          Issue Type: Bug
          Components: Plugman
            Reporter: Marcus Pridham


If I use a relative path to install a local plugin with remote and local dependencies it may fail dependent on the order of the dependencies.

My plugin has a "local" dependency and a remote dependency.  The remote is 
<dependency id="org.apache.cordova.dialogs" url="https://git-wip-us.apache.org/repos/asf/cordova-plugin-dialogs.git" />	
and the local is <dependency id="com.blah.plugin2" subdir="plugins/plugin2" url="."/>

You can use this repository to reproduce the issue:
https://github.com/marcuspridham/cordova-dependency-issue

Steps:
1. Install cordova cli version 3.1.0-0.1.0
2. Clone https://github.com/marcuspridham/cordova-dependency-issue
3. Create a project and add a platform with the cordova cli
4. From your cli project try add plugin1 using a relative patch. eg. cordova plugin add ../plugin-relative-issue/plugins/plugin1

Notice the error: cd: no such file or directory: ../cordova-dependency-issue/plugins/plugin1

Also the command cordova plugins returns only [ 'com.blah.plugin1', 'org.apache.cordova.dialogs' ] and not com.blah.plugin2.

Problem:

When the remote dependency is installed plugman changes the working directory so it can run git clone but it does not change it back.
After the remote plugin is installed, the local plugin is installed and plugman will try change the directory to ../cordova-dependency-issue/plugins/plugin1 
but the working directory is now something like /private/var/folders/pl/v5hfl0zn1tn6z9j15l4j0dp8tgcp1t/T.

Possible Fix:

In https://github.com/apache/cordova-plugman/blob/master/src/util/plugins.js:

Remove this around line 43 remove this:
{code}
shell.cd(path.dirname(tmp_dir));
{code}

Around line 47 change this:

{code}
child_process.exec(cmd, function(err, stdout, stderr) {
{code}

To:

{code}	
child_process.exec(cmd, { cwd: tmp_dir }, function(err, stdout, stderr) {
{code}



--
This message was sent by Atlassian JIRA
(v6.1#6144)