mirror of
https://github.com/iNavFlight/inav-configurator.git
synced 2025-07-25 17:25:14 +03:00
Complete migration to Gulp 4, add linux32 support
- Remove usages of runSequence(), which doesn't work with Gulp 4, using gulp.series() instead. - Add support for linux32 builds - Add new --platform argument for building only for a single platform (e.g. --platform=osx64). Fixes build problems introduced in #527 Fixes #531
This commit is contained in:
parent
b8fd9578c3
commit
321d704675
3 changed files with 41 additions and 125 deletions
92
gulpfile.js
92
gulpfile.js
|
@ -3,6 +3,7 @@
|
||||||
var child_process = require('child_process');
|
var child_process = require('child_process');
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var path = require('path');
|
var path = require('path');
|
||||||
|
var minimist = require('minimist');
|
||||||
|
|
||||||
var archiver = require('archiver');
|
var archiver = require('archiver');
|
||||||
var del = require('del');
|
var del = require('del');
|
||||||
|
@ -10,8 +11,6 @@ var NwBuilder = require('nw-builder');
|
||||||
|
|
||||||
var gulp = require('gulp');
|
var gulp = require('gulp');
|
||||||
var concat = require('gulp-concat');
|
var concat = require('gulp-concat');
|
||||||
var runSequence = require('run-sequence');
|
|
||||||
|
|
||||||
|
|
||||||
// Each key in the *sources* variable must be an array of
|
// Each key in the *sources* variable must be an array of
|
||||||
// the source files that will be combined into a single
|
// the source files that will be combined into a single
|
||||||
|
@ -159,6 +158,18 @@ function get_task_name(key) {
|
||||||
return 'build-' + key.replace(/([A-Z])/g, function($1){return "-"+$1.toLowerCase();});
|
return 'build-' + key.replace(/([A-Z])/g, function($1){return "-"+$1.toLowerCase();});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getPlatforms() {
|
||||||
|
var defaultPlatforms = ['win32', 'osx64', 'linux32', 'linux64'];
|
||||||
|
var argv = minimist(process.argv.slice(2));
|
||||||
|
if (argv.platform) {
|
||||||
|
if (defaultPlatforms.indexOf(argv.platform) < 0) {
|
||||||
|
throw "Invalid platform '" + argv.platform + "'. Available ones are: " + defaultPlatforms;
|
||||||
|
}
|
||||||
|
return [argv.platform];
|
||||||
|
}
|
||||||
|
return defaultPlatforms;
|
||||||
|
}
|
||||||
|
|
||||||
// Define build tasks dynamically based on the sources
|
// Define build tasks dynamically based on the sources
|
||||||
// and output variables.
|
// and output variables.
|
||||||
var buildCssTasks = [];
|
var buildCssTasks = [];
|
||||||
|
@ -192,7 +203,7 @@ gulp.task('clean', function() { return del(['./build/**', './dist/**'], {force:
|
||||||
|
|
||||||
// Real work for dist task. Done in another task to call it via
|
// Real work for dist task. Done in another task to call it via
|
||||||
// run-sequence.
|
// run-sequence.
|
||||||
gulp.task('dist-build', gulp.series('build'), function() {
|
gulp.task('dist-build', gulp.series('build', function() {
|
||||||
var distSources = [
|
var distSources = [
|
||||||
'./package.json', // For NW.js
|
'./package.json', // For NW.js
|
||||||
'./manifest.json', // For Chrome app
|
'./manifest.json', // For Chrome app
|
||||||
|
@ -211,18 +222,16 @@ gulp.task('dist-build', gulp.series('build'), function() {
|
||||||
];
|
];
|
||||||
return gulp.src(distSources, { base: '.' })
|
return gulp.src(distSources, { base: '.' })
|
||||||
.pipe(gulp.dest(distDir));
|
.pipe(gulp.dest(distDir));
|
||||||
});
|
}));
|
||||||
|
|
||||||
gulp.task('dist', function(done) {
|
gulp.task('dist', gulp.series('clean', 'dist-build'));
|
||||||
return runSequence('clean', 'dist-build', done);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Create app directories in ./apps
|
// Create app directories in ./apps
|
||||||
gulp.task('apps', gulp.series('dist'), function(done) {
|
gulp.task('apps', gulp.series('dist', function(done) {
|
||||||
var builder = new NwBuilder({
|
var builder = new NwBuilder({
|
||||||
files: './dist/**/*',
|
files: './dist/**/*',
|
||||||
buildDir: appsDir,
|
buildDir: appsDir,
|
||||||
platforms: ['win32', 'osx64', 'linux64'],
|
platforms: getPlatforms(),
|
||||||
flavor: 'normal',
|
flavor: 'normal',
|
||||||
macIcns: './images/inav.icns',
|
macIcns: './images/inav.icns',
|
||||||
winIco: './images/inav.ico',
|
winIco: './images/inav.ico',
|
||||||
|
@ -237,14 +246,14 @@ gulp.task('apps', gulp.series('dist'), function(done) {
|
||||||
// Package apps as .zip files
|
// Package apps as .zip files
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
}));
|
||||||
|
|
||||||
function get_release_filename(platform, ext) {
|
function get_release_filename(platform, ext) {
|
||||||
var pkg = require('./package.json');
|
var pkg = require('./package.json');
|
||||||
return 'INAV-Configurator_' + platform + '_' + pkg.version + '.' + ext;
|
return 'INAV-Configurator_' + platform + '_' + pkg.version + '.' + ext;
|
||||||
}
|
}
|
||||||
|
|
||||||
gulp.task('release-windows', function() {
|
gulp.task('release-win32', function() {
|
||||||
var pkg = require('./package.json');
|
var pkg = require('./package.json');
|
||||||
var src = path.join(appsDir, pkg.name, 'win32');
|
var src = path.join(appsDir, pkg.name, 'win32');
|
||||||
var output = fs.createWriteStream(path.join(appsDir, get_release_filename('win32', 'zip')));
|
var output = fs.createWriteStream(path.join(appsDir, get_release_filename('win32', 'zip')));
|
||||||
|
@ -258,7 +267,7 @@ gulp.task('release-windows', function() {
|
||||||
return archive.finalize();
|
return archive.finalize();
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('release-macos', function() {
|
gulp.task('release-osx64', function() {
|
||||||
var pkg = require('./package.json');
|
var pkg = require('./package.json');
|
||||||
var src = path.join(appsDir, pkg.name, 'osx64', pkg.name + '.app');
|
var src = path.join(appsDir, pkg.name, 'osx64', pkg.name + '.app');
|
||||||
// Check if we want to sign the .app bundle
|
// Check if we want to sign the .app bundle
|
||||||
|
@ -277,49 +286,28 @@ gulp.task('release-macos', function() {
|
||||||
return archive.finalize();
|
return archive.finalize();
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('release-linux64', function() {
|
function releaseLinux(bits) {
|
||||||
var pkg = require('./package.json');
|
return function() {
|
||||||
var src = path.join(appsDir, pkg.name, 'linux64');
|
var dirname = 'linux' + bits;
|
||||||
var output = fs.createWriteStream(path.join(appsDir, get_release_filename('linux64', 'zip')));
|
var pkg = require('./package.json');
|
||||||
var archive = archiver('zip', {
|
var src = path.join(appsDir, pkg.name, dirname);
|
||||||
zlib: { level: 9 }
|
var output = fs.createWriteStream(path.join(appsDir, get_release_filename(dirname, 'zip')));
|
||||||
});
|
var archive = archiver('zip', {
|
||||||
archive.on('warning', function(err) { throw err; });
|
zlib: { level: 9 }
|
||||||
archive.on('error', function(err) { throw err; });
|
});
|
||||||
archive.pipe(output);
|
archive.on('warning', function(err) { throw err; });
|
||||||
archive.directory(src, 'INAV Configurator');
|
archive.on('error', function(err) { throw err; });
|
||||||
return archive.finalize();
|
archive.pipe(output);
|
||||||
});
|
archive.directory(src, 'INAV Configurator');
|
||||||
|
return archive.finalize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//For build only linux, without install Wine
|
gulp.task('release-linux32', releaseLinux(32));
|
||||||
//run task `apps` get error
|
gulp.task('release-linux64', releaseLinux(64));
|
||||||
//Error building NW apps:Error while updating the Windows icon. Wine (winehq.org) must be installed to add custom icons from Mac and Linux.
|
|
||||||
gulp.task('release-only-linux', gulp.series('dist'), function (done) {
|
|
||||||
var builder = new NwBuilder({
|
|
||||||
files: './dist/**/*',
|
|
||||||
buildDir: appsDir,
|
|
||||||
platforms: ['linux64'],
|
|
||||||
flavor: 'normal',
|
|
||||||
});
|
|
||||||
builder.on('log', console.log);
|
|
||||||
builder.build().then(function(){
|
|
||||||
//Start zip app after complete
|
|
||||||
runSequence('release-linux64');
|
|
||||||
}).catch(function(err){
|
|
||||||
if (err) {
|
|
||||||
console.log("Error building NW apps:" + err);
|
|
||||||
done();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Package apps as .zip files
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Create distributable .zip files in ./apps
|
// Create distributable .zip files in ./apps
|
||||||
gulp.task('release', function() {
|
gulp.task('release', gulp.series('apps', getPlatforms().map(function(v) { return 'release-' + v; })));
|
||||||
return runSequence('apps', 'release-macos', 'release-windows', 'release-linux64');
|
|
||||||
});
|
|
||||||
|
|
||||||
gulp.task('watch', function () {
|
gulp.task('watch', function () {
|
||||||
for(var k in output) {
|
for(var k in output) {
|
||||||
|
|
72
package-lock.json
generated
72
package-lock.json
generated
|
@ -109,14 +109,6 @@
|
||||||
"ansi-wrap": "^0.1.0"
|
"ansi-wrap": "^0.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ansi-cyan": {
|
|
||||||
"version": "0.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz",
|
|
||||||
"integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
|
|
||||||
"requires": {
|
|
||||||
"ansi-wrap": "0.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ansi-gray": {
|
"ansi-gray": {
|
||||||
"version": "0.1.1",
|
"version": "0.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
|
||||||
|
@ -125,14 +117,6 @@
|
||||||
"ansi-wrap": "0.1.0"
|
"ansi-wrap": "0.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ansi-red": {
|
|
||||||
"version": "0.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
|
|
||||||
"integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
|
|
||||||
"requires": {
|
|
||||||
"ansi-wrap": "0.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ansi-regex": {
|
"ansi-regex": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
|
||||||
|
@ -5415,52 +5399,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"plugin-error": {
|
|
||||||
"version": "0.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz",
|
|
||||||
"integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
|
|
||||||
"requires": {
|
|
||||||
"ansi-cyan": "^0.1.1",
|
|
||||||
"ansi-red": "^0.1.1",
|
|
||||||
"arr-diff": "^1.0.1",
|
|
||||||
"arr-union": "^2.0.1",
|
|
||||||
"extend-shallow": "^1.1.2"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"arr-diff": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz",
|
|
||||||
"integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
|
|
||||||
"requires": {
|
|
||||||
"arr-flatten": "^1.0.1",
|
|
||||||
"array-slice": "^0.2.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"arr-union": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz",
|
|
||||||
"integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0="
|
|
||||||
},
|
|
||||||
"array-slice": {
|
|
||||||
"version": "0.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
|
|
||||||
"integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU="
|
|
||||||
},
|
|
||||||
"extend-shallow": {
|
|
||||||
"version": "1.1.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz",
|
|
||||||
"integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
|
|
||||||
"requires": {
|
|
||||||
"kind-of": "^1.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"kind-of": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
|
|
||||||
"integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ="
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"posix-character-classes": {
|
"posix-character-classes": {
|
||||||
"version": "0.1.1",
|
"version": "0.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
|
||||||
|
@ -6026,16 +5964,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"run-sequence": {
|
|
||||||
"version": "2.2.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/run-sequence/-/run-sequence-2.2.1.tgz",
|
|
||||||
"integrity": "sha512-qkzZnQWMZjcKbh3CNly2srtrkaO/2H/SI5f2eliMCapdRD3UhMrwjfOAZJAnZ2H8Ju4aBzFZkBGXUqFs9V0yxw==",
|
|
||||||
"requires": {
|
|
||||||
"chalk": "^1.1.3",
|
|
||||||
"fancy-log": "^1.3.2",
|
|
||||||
"plugin-error": "^0.1.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"safe-buffer": {
|
"safe-buffer": {
|
||||||
"version": "5.1.2",
|
"version": "5.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||||
|
|
|
@ -31,10 +31,10 @@
|
||||||
"jquery": "2.1.4",
|
"jquery": "2.1.4",
|
||||||
"jquery-ui-npm": "1.12.0",
|
"jquery-ui-npm": "1.12.0",
|
||||||
"marked": "^0.3.17",
|
"marked": "^0.3.17",
|
||||||
|
"minimist": "^1.2.0",
|
||||||
"nw": "^0.31.4-sdk",
|
"nw": "^0.31.4-sdk",
|
||||||
"nw-builder": "^3.5.4",
|
"nw-builder": "^3.5.4",
|
||||||
"openlayers": "^4.6.5",
|
"openlayers": "^4.6.5",
|
||||||
"run-sequence": "^2.2.0",
|
|
||||||
"temp": "^0.8.3",
|
"temp": "^0.8.3",
|
||||||
"three": "0.72.0"
|
"three": "0.72.0"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue