Commit 73bf575901a7d56a23cbffa4ddf35aa2c9814156
Build and compress executables with pkg
cel committed on 12/31/2019, 12:21:50 AMParent: c6af1255614edad2eb11c34162f437d9e2be31c1
Files changed
bin/git-ssb | changed |
build.js | changed |
package.json | changed |
.gitignore | added |
bin/git-ssb | ||
---|---|---|
@@ -1,12 +1,12 @@ | ||
1 | 1 … | #!/usr/bin/env node |
2 | 2 … | |
3 | -// Install sodium-native prebuild | |
4 | -if (process.env.SODIUM_NATIVE_PREBUILD == null) { | |
3 … | +// Install sodium-native prebuild if in pkg's environment | |
4 … | +var isInPkg = __dirname.startsWith('/snapshot/') | |
5 … | +if (isInPkg && process.env.SODIUM_NATIVE_PREBUILD == null) { | |
5 | 6 … | var fs = require('fs') |
6 | 7 … | var os = require('os') |
7 | 8 … | var path = require('path') |
8 | - var mkdirp = require('mkdirp') | |
9 | 9 … | var home = os.homedir() |
10 | 10 … | var pkgJson = require('../package') |
11 | 11 … | var sodiumDir = path.join(home, '.local', 'lib', 'sodium-native') |
12 | 12 … | // Copy sodium-native prebuild and libsodium shared library into local dir. |
@@ -25,13 +25,14 @@ | ||
25 | 25 … | try { |
26 | 26 … | fs.accessSync(libsodiumFile) |
27 | 27 … | fs.accessSync(sodiumNativeFile) |
28 | 28 … | } catch(e) { |
29 … | + var mkdirp = require('mkdirp') | |
29 | 30 … | mkdirp.sync(archDir) |
30 | 31 … | fs.writeFileSync(libsodiumFile, |
31 | - fs.readFileSync(path.join(__dirname, '../libsodium.so'))) | |
32 … | + fs.readFileSync(path.join(__dirname, '../dist/libsodium.so'))) | |
32 | 33 … | fs.writeFileSync(sodiumNativeFile, |
33 | - fs.readFileSync(path.join(__dirname, '../sodium.foolpkg'))) | |
34 … | + fs.readFileSync(path.join(__dirname, '../dist/sodium.node.bin'))) | |
34 | 35 … | } |
35 | 36 … | } |
36 | 37 … | |
37 | 38 … | var u = require('../lib/util') |
build.js | ||
---|---|---|
@@ -1,24 +1,48 @@ | ||
1 | 1 … | var os = require('os') |
2 | 2 … | var proc = require('child_process') |
3 | 3 … | var path = require('path') |
4 | 4 … | var fs = require('fs') |
5 … | +var mkdirp = require('mkdirp') | |
5 | 6 … | var pkgJson = require('./package') |
6 | 7 … | |
7 | 8 … | var arch = os.arch() |
8 | 9 … | var platform = os.platform() |
9 | 10 … | var abi = process.versions.modules |
10 | 11 … | |
11 | -var prebuildsDir = path.join(__dirname, | |
12 | - 'node_modules/sodium-native/prebuilds/' + platform + '-' + arch) | |
13 | -fs.writeFileSync(path.join(__dirname, 'libsodium.so'), | |
14 | - fs.readFileSync(path.join(prebuildsDir, 'libsodium.so.' + pkgJson.libsodiumVersion))) | |
15 | -fs.writeFileSync(path.join(__dirname, 'sodium.foolpkg'), | |
16 | - fs.readFileSync(path.join(prebuildsDir, 'node.abi' + abi + '.node'))) | |
12 … | +process.chdir(__dirname) | |
13 … | +mkdirp.sync('dist') | |
17 | 14 … | |
18 | -proc.spawn('pkg', [ | |
19 | - path.join(__dirname, 'bin/git-ssb'), | |
15 … | +function cp(src, dest) { | |
16 … | + proc.execFileSync('/bin/cp', ['-v', src, dest], {'stdio': 'inherit'}) | |
17 … | +} | |
18 … | + | |
19 … | +var prebuildsDir = 'node_modules/sodium-native/prebuilds/' + platform + '-' + arch | |
20 … | +console.log('Copying binaries...') | |
21 … | +cp(path.join(prebuildsDir, 'libsodium.so.' + pkgJson.libsodiumVersion), | |
22 … | + 'dist/libsodium.so') | |
23 … | +// pkg doesn't bundle files with .node extension | |
24 … | +cp(path.join(prebuildsDir, 'node.abi' + abi + '.node'), | |
25 … | + 'dist/sodium.node.bin') | |
26 … | +cp('bin/git-remote-ssb', 'dist/') | |
27 … | + | |
28 … | +console.log('Building pkg executable...') | |
29 … | +var pkg = proc.spawnSync('pkg', [ | |
30 … | + 'bin/git-ssb', | |
20 | 31 … | '-c', 'package.json', |
21 | 32 … | '--public', |
22 | - '-t', 'node10.15.3-linux-arm64', | |
23 | - '-o', 'git-ssb' | |
33 … | + '-t', 'node' + pkgJson.nodeVersion + '-' + platform + '-' + arch, | |
34 … | + '-o', 'dist/git-ssb' | |
24 | 35 … | ], {stdio: 'inherit'}) |
36 … | +if (pkg.status) process.exit(1) | |
37 … | + | |
38 … | +process.chdir('dist') | |
39 … | +console.log('Compressing...') | |
40 … | +var tarFile = 'git-ssb-' + pkgJson.version + '-' + platform + '-' + arch + '.tgz' | |
41 … | +proc.spawnSync('tar', [ | |
42 … | + '-czvf', | |
43 … | + tarFile, | |
44 … | + 'git-remote-ssb', | |
45 … | + 'git-ssb' | |
46 … | +], {stdio: 'inherit'}) | |
47 … | + | |
48 … | +console.log('Built:', tarFile) |
package.json | ||
---|---|---|
@@ -9,16 +9,20 @@ | ||
9 | 9 … | "main": "bin.js", |
10 | 10 … | "pkg": { |
11 | 11 … | "scripts": "lib/*.js", |
12 | 12 … | "assets": [ |
13 | - "libsodium.so", | |
14 | - "sodium.foolpkg" | |
13 … | + "dist/libsodium.so", | |
14 … | + "dist/sodium.node.bin", | |
15 … | + "node_modules/git-ssb-web/static/*", | |
16 … | + "node_modules/git-ssb-web/locales/*.json", | |
17 … | + "node_modules/emoji-named-characters/pngs/*.png" | |
15 | 18 … | ] |
16 | 19 … | }, |
17 | 20 … | "scripts": { |
18 | 21 … | "build": "node build.js" |
19 | 22 … | }, |
20 | 23 … | "libsodiumVersion": "23", |
24 … | + "nodeVersion": "10.15.3", | |
21 | 25 … | "dependencies": { |
22 | 26 … | "git-remote-ssb": "^2.1.1", |
23 | 27 … | "git-ssb-web": "^2.11.4", |
24 | 28 … | "mkdirp": "^0.5.1", |
@@ -36,8 +40,9 @@ | ||
36 | 40 … | "ssb-mentions": "^0.4.1", |
37 | 41 … | "ssb-msg-schemas": "^6.3.0", |
38 | 42 … | "ssb-pull-requests": "^1.0.0", |
39 | 43 … | "ssb-ref": "^2.11.1", |
44 … | + "sodium-native": "^2.4.6", | |
40 | 45 … | "stream-to-pull-stream": "^1.7.2" |
41 | 46 … | }, |
42 | 47 … | "devDependencies": { |
43 | 48 … | "pkg": "*" |
Built with git-ssb-web