From e0a6c8aef6695221650c4aaecda763bb8a78f70a Mon Sep 17 00:00:00 2001 From: Ricky Chien Date: Thu, 13 Nov 2014 17:10:09 +0800 Subject: [PATCH] Bug 1022728 - Prevent building gaia when running ./build.sh gecko --- Android.mk | 2 +- Makefile | 11 ++++++++--- apps/operatorvariant/build/build.js | 2 +- build/clean-stage-app.js | 2 +- build/copy-common-files.js | 18 ------------------ build/pre-app.js | 8 ++++---- build/preferences.js | 6 ++---- build/settings.js | 16 ++++++++++++---- build/test/unit/settings.test.js | 19 +++++++++++-------- 9 files changed, 40 insertions(+), 44 deletions(-) diff --git a/Android.mk b/Android.mk index 144c64db5116..61d542b24a84 100644 --- a/Android.mk +++ b/Android.mk @@ -74,7 +74,7 @@ gaia-tests-zip: .PHONY: gaia-prefs gaia-prefs: - $(MAKE) -C $(GAIA_PATH) $(GAIA_MAKE_FLAGS) preferences + $(MAKE) -C $(GAIA_PATH) $(GAIA_MAKE_FLAGS) preferences settings .PHONY: $(LOCAL_PATH)/profile.tar.gz $(LOCAL_PATH)/profile.tar.gz: gaia-prefs diff --git a/Makefile b/Makefile index 32e3985a1c71..7a7de052d32a 100644 --- a/Makefile +++ b/Makefile @@ -563,6 +563,10 @@ LANG=POSIX # Avoiding sort order differences between OSes app: b2g_sdk profile-dir @$(call run-js-command,app) +.PHONY: pre-app +pre-app: b2g_sdk profile-dir + @$(call run-js-command,pre-app) + # Keep old targets just for people/scripts still using it .PHONY: post-manifest post-manifest: app @@ -670,6 +674,9 @@ endif # USE_LOCAL_XULRUNNER_SDK preferences: profile-dir b2g_sdk @$(call run-js-command,preferences) +# Generate profile/settings.json +settings: pre-app + # Generate $(PROFILE_FOLDER)/extensions EXT_DIR=$(PROFILE_FOLDER)/extensions extensions: $(STAGE_DIR)/additional-extensions/downloaded.json @@ -1012,10 +1019,8 @@ purge: $(ADB) shell rm -r $(MSYS_FIX)/system/b2g/webapps $(ADB) shell 'if test -d $(MSYS_FIX)/persist/svoperapps; then rm -r $(MSYS_FIX)/persist/svoperapps; fi' -$(PROFILE_FOLDER)/settings.json: b2g_sdk profile-dir app - # push $(PROFILE_FOLDER)/settings.json and $(PROFILE_FOLDER)/contacts.json (if CONTACTS_PATH defined) to the phone -install-default-data: $(PROFILE_FOLDER)/settings.json contacts +install-default-data: settings contacts app $(ADB) shell stop b2g $(ADB) remount $(ADB) push $(PROFILE_FOLDER)/settings.json $(MSYS_FIX)/system/b2g/defaults/settings.json diff --git a/apps/operatorvariant/build/build.js b/apps/operatorvariant/build/build.js index fb6fe728ea0d..6d6807f767bf 100644 --- a/apps/operatorvariant/build/build.js +++ b/apps/operatorvariant/build/build.js @@ -335,7 +335,7 @@ OperatorAppBuilder.prototype.setOptions = function(options) { this.gaia = utils.gaia.getInstance(options); - var settingsFile = utils.getFile(options.STAGE_DIR, 'settings_stage.json'); + var settingsFile = utils.getFile(options.PROFILE_DIR, 'settings.json'); if (!settingsFile.exists()) { throw new Error('file not found: ' + settingsFile.path); } diff --git a/build/clean-stage-app.js b/build/clean-stage-app.js index 8570195692f6..2bf5addcbd4d 100644 --- a/build/clean-stage-app.js +++ b/build/clean-stage-app.js @@ -17,7 +17,7 @@ exports.execute = function(options) { return; } - options.rebuildAppDirs.forEach(function(appdirPath) { + options.GAIA_APPDIRS.split(' ').forEach(function(appdirPath) { try { var appName = utils.getFile(appdirPath).leafName; remove(options.STAGE_DIR, appName); diff --git a/build/copy-common-files.js b/build/copy-common-files.js index 27e601574bae..08f0ee8e3346 100644 --- a/build/copy-common-files.js +++ b/build/copy-common-files.js @@ -4,20 +4,6 @@ const utils = require('./utils'); -/** - * Copy settings_stage.json under stage to settings.json under profile. - */ -function copySettingsJStoProfile(stageDir, profileDir) { - var settingsFile = stageDir.clone(); - var defaultsDir = profileDir.clone(); - settingsFile.append('settings_stage.json'); - settingsFile.copyTo(profileDir, 'settings.json'); - - defaultsDir.append('defaults'); - utils.ensureFolderExists(defaultsDir); - settingsFile.copyTo(defaultsDir, 'settings.json'); -} - function cleanProfile(webappsDir) { // Profile can contain folders with a generated uuid that need to be deleted // or apps will be duplicated. @@ -52,10 +38,6 @@ function execute(options) { var webappsBaseDir = utils.getFile(options.PROFILE_DIR); var stageDir = gaia.stageDir; - if (options.BUILD_APP_NAME === '*') { - copySettingsJStoProfile(stageDir, webappsBaseDir); - } - var webappsJSONFile = stageDir.clone(); webappsJSONFile.append('webapps_stage.json'); var webappsStageJSON = utils.getJSON(webappsJSONFile); diff --git a/build/pre-app.js b/build/pre-app.js index c169332228ec..ddc85b147028 100644 --- a/build/pre-app.js +++ b/build/pre-app.js @@ -23,6 +23,9 @@ function execute(options) { // A separate step for shared/ folder to generate its content in build time require('./keyboard-layouts').execute(options); + // Generate user.js + require('./preferences').execute(options); + if (options.BUILD_APP_NAME == '*') { require('./settings').execute(options); } @@ -30,10 +33,7 @@ function execute(options) { // Copy shared files to stage folders require('./webapp-shared').execute(options); - // Generate user.js - require('./preferences').execute(options); - - // Copy common files such as settings.json and webapps.json + // Copy common files such as webapps.json require('./copy-common-files').execute(options); } exports.execute = execute; diff --git a/build/preferences.js b/build/preferences.js index a974a0184226..c70cc2051958 100644 --- a/build/preferences.js +++ b/build/preferences.js @@ -52,12 +52,10 @@ PreferencesBuilder.prototype.writeDefaultUserJs = function() { return; } - // create a clean folder to store data for B2G, this folder will copy to + // create a folder to store data for B2G, this folder will copy to // b2g output folder. let defaultsDir = utils.getFile(this.config.PROFILE_DIR, 'defaults'); - if (defaultsDir.exists()) { - defaultsDir.remove(true); - } + defaultsDir.append('pref'); utils.ensureFolderExists(defaultsDir); let userJs = defaultsDir.clone(); diff --git a/build/settings.js b/build/settings.js index bba10013c26f..49f13318b895 100644 --- a/build/settings.js +++ b/build/settings.js @@ -201,11 +201,20 @@ function setHomescreenURL(settings, config) { function writeSettings(settings, config) { // Finally write the settings file - let settingsFile = utils.getFile(config.STAGE_DIR, 'settings_stage.json'); - utils.log('settings.js', 'Writing settings file: ' + settingsFile.path); + let profileDir = utils.getFile(config.PROFILE_DIR); + let settingsFile = utils.getFile(config.PROFILE_DIR, 'settings.json'); + let defaultsSettings = utils.getFile( + config.PROFILE_DIR, 'defaults', 'settings.json'); + + utils.ensureFolderExists(profileDir); let content = JSON.stringify(settings); utils.writeContent(settingsFile, content + '\n'); - utils.log('settings.js', 'Settings file has been written'); + utils.log('settings.js', 'Writing settings file: ' + settingsFile.path); + + profileDir.append('defaults'); + utils.ensureFolderExists(profileDir); + utils.writeContent(defaultsSettings, content + '\n'); + utils.log('settings.js', 'Writing settings file: ' + defaultsSettings.path); } function execute(config) { @@ -292,7 +301,6 @@ function execute(config) { }).then(function() { overrideSettings(settings, config); }).then(function() { - // Set the homescreen URL setHomescreenURL(settings, config); }).then(function() { writeSettings(settings, config); diff --git a/build/test/unit/settings.test.js b/build/test/unit/settings.test.js index 00837fa8346f..04bd327ba15f 100644 --- a/build/test/unit/settings.test.js +++ b/build/test/unit/settings.test.js @@ -30,7 +30,8 @@ suite('settings.js', function() { GAIA_DISTRIBUTION_DIR: 'testDistributionDir', GAIA_DIR: 'testGaia', SETTINGS_PATH: 'testSettingsPath', - STAGE_DIR: 'testStageDir' + STAGE_DIR: 'testStageDir', + PROFILE_DIR: 'testProfileDir' }; mockUtils.resolve = function(file, baseLink) { var fileExist = false; @@ -185,21 +186,22 @@ suite('settings.js', function() { }); test('writeSettings', function () { - var settingsFile = {result: ''}; + var settingsFile = { result: '' }; var settings = { 'testKey': 'testValue' }; - mockUtils.getFile = function(dir, file) { + mockUtils.getFile = function() { + var args = Array.prototype.slice.call(arguments); return { - path: dir + '/' + file + path: args.join('/'), + append: function() {} }; }; mockUtils.writeContent = function(target, string) { - if (target.path === config.STAGE_DIR + '/settings_stage.json') { + if (target.path === config.PROFILE_DIR + '/settings.json') { settingsFile.result = string; } }; app.writeSettings(settings, config); - assert.deepEqual(JSON.parse(settingsFile.result), - settings); + assert.deepEqual(JSON.parse(settingsFile.result), settings); }); test('setHomescreenURL with default homescreen', function() { @@ -247,7 +249,8 @@ suite('settings.js', function() { return { exists: function() { return true; - } + }, + append: function() {} }; }; mockUtils.getJSON = function(json) {