CB-7518 Don't run "android update lib-project" for android 3.6.0 It's no longer required.
Project: http://git-wip-us.apache.org/repos/asf/cordova-lib/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-lib/commit/1fba040a Tree: http://git-wip-us.apache.org/repos/asf/cordova-lib/tree/1fba040a Diff: http://git-wip-us.apache.org/repos/asf/cordova-lib/diff/1fba040a Branch: refs/heads/cb-7219 Commit: 1fba040aca7dda41c3aa197bb083241034f036f8 Parents: c2f3a73 Author: Andrew Grieve <[email protected]> Authored: Wed Sep 10 21:55:46 2014 -0400 Committer: Andrew Grieve <[email protected]> Committed: Wed Sep 10 21:57:08 2014 -0400 ---------------------------------------------------------------------- cordova-lib/package.json | 2 +- .../spec-plugman/install-browserify.spec.js | 6 +++-- cordova-lib/spec-plugman/install.spec.js | 5 +++- .../projects/android_install/cordova/version | 24 +++++++++++++++++++- .../projects/android_one/cordova/version.bat | 2 ++ .../projects/android_uninstall/cordova/version | 23 ++++++++++++++++++- cordova-lib/src/cordova/platform.js | 17 +++----------- cordova-lib/src/cordova/superspawn.js | 7 ++++++ cordova-lib/src/plugman/util/action-stack.js | 15 +++++++----- cordova-lib/src/plugman/util/android-project.js | 15 ++++++++---- 10 files changed, 86 insertions(+), 30 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/1fba040a/cordova-lib/package.json ---------------------------------------------------------------------- diff --git a/cordova-lib/package.json b/cordova-lib/package.json index d227154..0c7e380 100644 --- a/cordova-lib/package.json +++ b/cordova-lib/package.json @@ -31,7 +31,7 @@ "rc": "0.3.0", "request": "2.22.0", "semver": "2.0.x", - "shelljs": "0.1.x", + "shelljs": "0.3.x", "tar": "0.1.x", "underscore": "1.4.4", "xcode": "0.6.7", http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/1fba040a/cordova-lib/spec-plugman/install-browserify.spec.js ---------------------------------------------------------------------- diff --git a/cordova-lib/spec-plugman/install-browserify.spec.js b/cordova-lib/spec-plugman/install-browserify.spec.js index 1731707..356b7a4 100644 --- a/cordova-lib/spec-plugman/install-browserify.spec.js +++ b/cordova-lib/spec-plugman/install-browserify.spec.js @@ -53,7 +53,8 @@ var install = require('../src/plugman/install'), }, promise, results = {}, - dummy_id = 'com.phonegap.plugins.dummyplugin'; + dummy_id = 'com.phonegap.plugins.dummyplugin', + superspawn = require('../src/cordova/superspawn'); // Pre-crete the temp dir, without it the test fails. @@ -150,14 +151,15 @@ describe('start', function() { describe('install', function() { var chmod, exec, proc, add_to_queue, prepare, actions_push, c_a, mkdir, cp, rm, fetchSpy, emit; + var spawnSpy; beforeEach(function() { prepare = spyOn(plugman, 'prepare').andReturn( Q(true) ); prepareBrowserify = spyOn(plugman, 'prepareBrowserify'); exec = spyOn(child_process, 'exec').andCallFake(function(cmd, cb) { - cb(false, '', ''); }); + spawnSpy = spyOn(superspawn, 'spawn').andReturn(Q('3.1.0')); spyOn(fs, 'mkdirSync').andReturn(true); spyOn(shell, 'mkdir').andReturn(true); spyOn(platforms, 'copyFile').andReturn(true); http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/1fba040a/cordova-lib/spec-plugman/install.spec.js ---------------------------------------------------------------------- diff --git a/cordova-lib/spec-plugman/install.spec.js b/cordova-lib/spec-plugman/install.spec.js index 3fe8428..7b83d2a 100644 --- a/cordova-lib/spec-plugman/install.spec.js +++ b/cordova-lib/spec-plugman/install.spec.js @@ -52,7 +52,8 @@ var install = require('../src/plugman/install'), }, promise, results = {}, - dummy_id = 'com.phonegap.plugins.dummyplugin'; + dummy_id = 'com.phonegap.plugins.dummyplugin', + superspawn = require('../src/cordova/superspawn'); // Pre-crete the temp dir, without it the test fails. @@ -147,6 +148,7 @@ describe('start', function() { describe('install', function() { var chmod, exec, proc, add_to_queue, prepare, actions_push, c_a, mkdir, cp, rm, fetchSpy, emit; + var spawnSpy; beforeEach(function() { prepare = spyOn(plugman, 'prepare').andReturn( Q(true) ); @@ -154,6 +156,7 @@ describe('install', function() { exec = spyOn(child_process, 'exec').andCallFake(function(cmd, cb) { cb(false, '', ''); }); + spawnSpy = spyOn(superspawn, 'spawn').andReturn(Q('3.1.0')); spyOn(fs, 'mkdirSync').andReturn(true); spyOn(shell, 'mkdir').andReturn(true); spyOn(platforms, 'copyFile').andReturn(true); http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/1fba040a/cordova-lib/spec-plugman/projects/android_install/cordova/version ---------------------------------------------------------------------- diff --git a/cordova-lib/spec-plugman/projects/android_install/cordova/version b/cordova-lib/spec-plugman/projects/android_install/cordova/version old mode 100644 new mode 100755 index 01f68fd..3c331da --- a/cordova-lib/spec-plugman/projects/android_install/cordova/version +++ b/cordova-lib/spec-plugman/projects/android_install/cordova/version @@ -1 +1,23 @@ -echo 9.0.0 \ No newline at end of file +#!/usr/bin/env node + +/* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +*/ + +console.log('9.0.0'); + http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/1fba040a/cordova-lib/spec-plugman/projects/android_one/cordova/version.bat ---------------------------------------------------------------------- diff --git a/cordova-lib/spec-plugman/projects/android_one/cordova/version.bat b/cordova-lib/spec-plugman/projects/android_one/cordova/version.bat new file mode 100644 index 0000000..c637d7c --- /dev/null +++ b/cordova-lib/spec-plugman/projects/android_one/cordova/version.bat @@ -0,0 +1,2 @@ +@ECHO OFF +echo 9.0.0 \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/1fba040a/cordova-lib/spec-plugman/projects/android_uninstall/cordova/version ---------------------------------------------------------------------- diff --git a/cordova-lib/spec-plugman/projects/android_uninstall/cordova/version b/cordova-lib/spec-plugman/projects/android_uninstall/cordova/version old mode 100644 new mode 100755 index 01f68fd..3b8e2c5 --- a/cordova-lib/spec-plugman/projects/android_uninstall/cordova/version +++ b/cordova-lib/spec-plugman/projects/android_uninstall/cordova/version @@ -1 +1,22 @@ -echo 9.0.0 \ No newline at end of file +#!/usr/bin/env node + +/* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +*/ + +console.log('9.0.0'); http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/1fba040a/cordova-lib/src/cordova/platform.js ---------------------------------------------------------------------- diff --git a/cordova-lib/src/cordova/platform.js b/cordova-lib/src/cordova/platform.js index c206f37..487803e 100644 --- a/cordova-lib/src/cordova/platform.js +++ b/cordova-lib/src/cordova/platform.js @@ -46,17 +46,6 @@ for (var p in platforms) { module.exports[p] = platforms[p]; } -function getVersionFromScript(script, defaultValue) { - var versionPromise = Q(defaultValue); - if (fs.existsSync(script)) { - versionPromise = superspawn.spawn(script); - } else { - /* if you are here, it's probably because you're in Jasmine: fix your existsSync stub */ - versionPromise = Q(defaultValue); - } - return versionPromise; -} - function add(hooks, projectRoot, targets, opts) { var msg; if ( !targets || !targets.length ) { @@ -222,7 +211,7 @@ function check(hooks, projectRoot) { d_cur = Q.defer(); add(h, scratch, [p], {spawnoutput: {stdio: 'ignore'}}) .then(function() { - getVersionFromScript(path.join(scratch, 'platforms', p, 'cordova', 'version'), null) + superspawn.maybeSpawn(path.join(scratch, 'platforms', p, 'cordova', 'version')) .then(function(avail) { if (!avail) { /* Platform version script was silent, we can't work with this */ @@ -240,7 +229,7 @@ function check(hooks, projectRoot) { d_avail.resolve('install-failed'); }); - getVersionFromScript(path.join(projectRoot, 'platforms', p, 'cordova', 'version'), null) + superspawn.maybeSpawn(path.join(projectRoot, 'platforms', p, 'cordova', 'version')) .then(function(v) { d_cur.resolve(v || ''); }).catch(function () { @@ -303,7 +292,7 @@ function list(hooks, projectRoot) { .then(function() { // Acquire the version number of each platform we have installed, and output that too. return Q.all(platforms_on_fs.map(function(p) { - return getVersionFromScript(path.join(projectRoot, 'platforms', p, 'cordova', 'version'), null) + return superspawn.maybeSpawn(path.join(projectRoot, 'platforms', p, 'cordova', 'version')) .then(function(v) { if (!v) return p; return p + ' ' + v; http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/1fba040a/cordova-lib/src/cordova/superspawn.js ---------------------------------------------------------------------- diff --git a/cordova-lib/src/cordova/superspawn.js b/cordova-lib/src/cordova/superspawn.js index b35e311..51a4d6b 100644 --- a/cordova-lib/src/cordova/superspawn.js +++ b/cordova-lib/src/cordova/superspawn.js @@ -141,3 +141,10 @@ exports.spawn = function(cmd, args, opts) { return d.promise; }; +exports.maybeSpawn = function(cmd, args, opts) { + if (fs.existsSync(cmd)) { + return exports.spawn(cmd, args, opts); + } + return Q(null); +}; + http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/1fba040a/cordova-lib/src/plugman/util/action-stack.js ---------------------------------------------------------------------- diff --git a/cordova-lib/src/plugman/util/action-stack.js b/cordova-lib/src/plugman/util/action-stack.js index 376b397..d2508de 100644 --- a/cordova-lib/src/plugman/util/action-stack.js +++ b/cordova-lib/src/plugman/util/action-stack.js @@ -25,6 +25,8 @@ var platforms = require("../platforms"), events = require('../../events'), Q = require('q'); +var superspawn = require('../../cordova/superspawn'); +var path = require('path'); function ActionStack() { this.stack = []; @@ -96,12 +98,13 @@ ActionStack.prototype = { } events.emit('verbose', 'Action stack processing complete.'); - if (project_files) { - events.emit('verbose', 'Writing out ' + platform + ' project files...'); - project_files.write(); - } - - return Q(); + return superspawn.maybeSpawn(path.join(project_dir, 'cordova', 'version')) + .then(function(platformVersion) { + if (project_files) { + events.emit('verbose', 'Writing out ' + platform + ' project files...'); + project_files.write(platformVersion); + } + }); } }; http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/1fba040a/cordova-lib/src/plugman/util/android-project.js ---------------------------------------------------------------------- diff --git a/cordova-lib/src/plugman/util/android-project.js b/cordova-lib/src/plugman/util/android-project.js index d13bfe9..bedec6b 100644 --- a/cordova-lib/src/plugman/util/android-project.js +++ b/cordova-lib/src/plugman/util/android-project.js @@ -29,6 +29,7 @@ var fs = require('fs'), path = require('path'), properties_parser = require('properties-parser'), shell = require('shelljs'); +var semver = require('semver'); function addLibraryReference(projectProperties, libraryPath) { @@ -85,16 +86,22 @@ AndroidProject.prototype = { delete this._subProjectDirs[subDir]; this._dirty = true; }, - write: function () { + write: function(platformVersion) { if (!this._dirty) return; for (var filename in this._propertiesEditors) { fs.writeFileSync(filename, this._propertiesEditors[filename].toString()); } - for (var sub_dir in this._subProjectDirs) - { - shell.exec('android update lib-project --path "' + sub_dir + '"'); + // Starting with 3.6.0, the build scripts set ANDROID_HOME, so there is + // no reason to keep run this command. Plus - we really want to avoid + // relying on the presense of native SDKs within plugman. + var needsUpdateProject = !platformVersion || semver.lt(platformVersion, '3.6.0'); + if (needsUpdateProject) { + for (var sub_dir in this._subProjectDirs) + { + shell.exec('android update lib-project --path "' + sub_dir + '"'); + } } this._dirty = false; },
