Merge pull request #1179 from kitematic/unified-build

Ability to build windows binaries on Mac
This commit is contained in:
Jeffrey Morgan 2015-11-04 18:31:40 -08:00
Родитель e533ed35d2 ee819f8725
Коммит ea0f607965
2 изменённых файлов: 10 добавлений и 41 удалений

Просмотреть файл

@ -20,7 +20,8 @@ Before you file an issue or a pull request, read the following tips on how to ke
### Prerequisites for developing Kitematic on Mac
You will need to install:
- The [Docker Toolbox](https://docker.com/toolbox)
- [Node.js](https://nodejs.org/)
- [Node.js](https://nodejs.org/)
- Wine `brew install wine` (only if you want to generate a Windows release on OS X)
- The latest Xcode from the Apple App Store.
### Prerequisites for developing Kitematic on Windows
@ -30,7 +31,6 @@ You will need to install:
- Open a command prompt (`cmd`) and run the command `mkdir ~/AppData/Roaming/npm`
- [Visual Studio 2013 Community](https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx) (or similar) - You do not need to install any optional packages during install.
- [Python](https://www.python.org/downloads/release/python-2710/)
- [Temporary] Set the `DOCKER_TOOLBOX_INSTALL_PATH` environment variable as follows:
![Toolbox Env Var](https://cloud.githubusercontent.com/assets/251292/10656552/adaedb20-7834-11e5-8881-d5402d3fee37.png)

Просмотреть файл

@ -20,25 +20,14 @@ module.exports = function (grunt) {
};
var BASENAME = 'Kitematic';
var APPNAME = BASENAME;
if (alpha) {
APPNAME += ' (Alpha)';
} else if (beta) {
APPNAME += ' (Beta)';
}
var OSX_APPNAME = BASENAME + ' (Beta)';
var WINDOWS_APPNAME = BASENAME + ' (Alpha)';
var OSX_OUT = './dist';
var OSX_OUT_X64 = OSX_OUT + '/' + APPNAME + '-darwin-x64';
var OSX_FILENAME = OSX_OUT_X64 + '/' + APPNAME + '.app';
var OSX_OUT_X64 = OSX_OUT + '/' + OSX_APPNAME + '-darwin-x64';
var OSX_FILENAME = OSX_OUT_X64 + '/' + OSX_APPNAME + '.app';
grunt.initConfig({
IDENTITY: 'Developer ID Application: Docker Inc',
APPNAME: APPNAME,
APPNAME_ESCAPED: APPNAME.replace(/ /g, '\\ ').replace(/\(/g,'\\(').replace(/\)/g,'\\)'),
OSX_OUT: OSX_OUT,
OSX_OUT_ESCAPED: OSX_OUT.replace(/ /g, '\\ ').replace(/\(/g,'\\(').replace(/\)/g,'\\)'),
OSX_OUT_X64: OSX_OUT_X64,
OSX_FILENAME: OSX_FILENAME,
OSX_FILENAME_ESCAPED: OSX_FILENAME.replace(/ /g, '\\ ').replace(/\(/g,'\\(').replace(/\)/g,'\\)'),
@ -58,7 +47,7 @@ module.exports = function (grunt) {
},
osx: {
options: {
name: APPNAME,
name: OSX_APPNAME,
dir: 'build/',
out: 'dist',
version: packagejson['electron-version'],
@ -85,8 +74,8 @@ module.exports = function (grunt) {
'version-string': {
'CompanyName': 'Docker',
'ProductVersion': packagejson.version,
'ProductName': APPNAME,
'FileDescription': APPNAME,
'ProductName': WINDOWS_APPNAME,
'FileDescription': WINDOWS_APPNAME,
'InternalName': BASENAME + '.exe',
'OriginalFilename': BASENAME + '.exe',
'LegalCopyright': 'Copyright 2015 Docker Inc. All rights reserved.'
@ -95,21 +84,6 @@ module.exports = function (grunt) {
}
},
'create-windows-installer': {
config: {
appDirectory: path.join(__dirname, 'dist/' + BASENAME + '-win32-x64'),
outputDirectory: path.join(__dirname, 'dist'),
authors: 'Docker Inc.',
loadingGif: 'util/loading.gif',
setupIcon: 'util/setup.ico',
iconUrl: 'https://raw.githubusercontent.com/kitematic/kitematic/master/util/kitematic.ico',
description: APPNAME,
title: APPNAME,
exe: BASENAME + '.exe',
version: packagejson.version
}
},
// images
copy: {
dev: {
@ -269,12 +243,7 @@ module.exports = function (grunt) {
});
grunt.registerTask('default', ['newer:babel', 'less', 'newer:copy:dev', 'shell:electron', 'watchChokidar']);
if (process.platform === 'win32') {
grunt.registerTask('release', ['clean:release', 'babel', 'less', 'copy:dev', 'electron:windows', 'copy:windows', 'rcedit:exes', 'compress']);
} else {
grunt.registerTask('release', ['clean:release', 'babel', 'less', 'copy:dev', 'electron:osx', 'copy:osx', 'shell:sign', 'shell:zip']);
}
grunt.registerTask('release', ['clean:release', 'babel', 'less', 'copy:dev', 'electron', 'copy:osx', 'shell:sign', 'shell:zip', 'copy:windows', 'rcedit:exes', 'compress']);
process.on('SIGINT', function () {
grunt.task.run(['shell:electron:kill']);