1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
|
commit 42c2e3daa2a2858720dbce2cc328610b1a89f928
Author: Igor Pashev <pashev.igor@gmail.com>
Date: Sat Oct 5 09:37:14 2019 +0200
Patch for building from source with Nix
diff --git a/build.js b/build.js
deleted file mode 100755
index 7a93f0e..0000000
--- a/build.js
+++ /dev/null
@@ -1,110 +0,0 @@
-#!/usr/bin/env node
-var cp = require('child_process'),
- fs = require('fs'),
- path = require('path'),
- detectLibc = require('detect-libc');
-
-// Parse args
-var force = false, debug = false;
-var
- arch = process.arch,
- platform = process.platform;
-var args = process.argv.slice(2).filter(function(arg) {
- if (arg === '-f') {
- force = true;
- return false;
- } else if (arg.substring(0, 13) === '--target_arch') {
- arch = arg.substring(14);
- } else if (arg === '--debug') {
- debug = true;
- }
- return true;
-});
-if (!debug) {
- args.push('--release');
-}
-if (!{ia32: true, x64: true, arm: true, arm64: true, ppc: true, ppc64: true, s390: true, s390x: true}.hasOwnProperty(arch)) {
- console.error('Unsupported (?) architecture: `'+ arch+ '`');
- process.exit(1);
-}
-
-// Test for pre-built library
-var modPath = platform+ '-'+ arch+ '-'+ process.versions.modules+ ((platform === 'linux') ? '-'+ detectLibc.family : '');
-if (!force) {
- try {
- fs.statSync(path.join(__dirname, 'bin', modPath, 'fibers.node'));
- console.log('`'+ modPath+ '` exists; testing');
- cp.execFile(process.execPath, ['quick-test'], function(err, stdout, stderr) {
- if (err || stdout !== 'pass' || stderr) {
- console.log('Problem with the binary; manual build incoming');
- build();
- } else {
- console.log('Binary is fine; exiting');
- }
- });
- } catch (ex) {
- // Stat failed
- build();
- }
-} else {
- build();
-}
-
-// Build it
-function build() {
- if (process.versions.electron) {
- args.push('--target='+ process.versions.electron, '--dist-url=https://atom.io/download/atom-shell');
- }
- cp.spawn(
- process.platform === 'win32' ? 'node-gyp.cmd' : 'node-gyp',
- ['rebuild'].concat(args),
- {stdio: [process.stdin, process.stdout, process.stderr]})
- .on('exit', function(err) {
- if (err) {
- console.error(
- 'node-gyp exited with code: '+ err+ '\n'+
- 'Please make sure you are using a supported platform and node version. If you\n'+
- 'would like to compile fibers on this machine please make sure you have setup your\n'+
- 'build environment--\n'+
- 'Windows + OS X instructions here: https://github.com/nodejs/node-gyp\n'+
- 'Ubuntu users please run: `sudo apt-get install g++ build-essential`\n'+
- 'RHEL users please run: `yum install gcc-c++` and `yum groupinstall \'Development Tools\'` \n'+
- 'Alpine users please run: `sudo apk add python make g++`'
- );
- return process.exit(err);
- }
- afterBuild();
- })
- .on('error', function(err) {
- console.error(
- 'node-gyp not found! Please ensure node-gyp is in your PATH--\n'+
- 'Try running: `sudo npm install -g node-gyp`'
- );
- console.log(err.message);
- process.exit(1);
- });
-}
-
-// Move it to expected location
-function afterBuild() {
- var targetPath = path.join(__dirname, 'build', debug ? 'Debug' : 'Release', 'fibers.node');
- var installPath = path.join(__dirname, 'bin', modPath, 'fibers.node');
-
- try {
- fs.mkdirSync(path.join(__dirname, 'bin', modPath));
- } catch (ex) {}
-
- try {
- fs.statSync(targetPath);
- } catch (ex) {
- console.error('Build succeeded but target not found');
- process.exit(1);
- }
- fs.renameSync(targetPath, installPath);
- console.log('Installed in `'+ installPath+ '`');
- if (process.versions.electron) {
- process.nextTick(function() {
- require('electron').app.quit();
- });
- }
-}
diff --git a/fibers.js b/fibers.js
index 960d311..78d83e6 100644
--- a/fibers.js
+++ b/fibers.js
@@ -1,27 +1,11 @@
if (process.fiberLib) {
module.exports = process.fiberLib;
} else {
- var fs = require('fs'), path = require('path'), detectLibc = require('detect-libc');
// Seed random numbers [gh-82]
Math.random();
- // Look for binary for this platform
- var modPath = path.join(__dirname, 'bin', process.platform+ '-'+ process.arch+ '-'+ process.versions.modules+
- ((process.platform === 'linux') ? '-'+ detectLibc.family : ''), 'fibers');
- try {
- // Pull in fibers implementation
- process.fiberLib = module.exports = require(modPath).Fiber;
- } catch (ex) {
- // No binary!
- console.error(
- '## There is an issue with `node-fibers` ##\n'+
- '`'+ modPath+ '.node` is missing.\n\n'+
- 'Try running this to fix the issue: '+ process.execPath+ ' '+ __dirname.replace(' ', '\\ ')+ '/build'
- );
- console.error(ex.stack || ex.message || ex);
- throw new Error('Missing binary. See message above.');
- }
+ process.fiberLib = module.exports = require('./build/Release/fibers.node').Fiber;
setupAsyncHacks(module.exports);
}
diff --git a/package.json b/package.json
index 4f491b1..c887684 100644
--- a/package.json
+++ b/package.json
@@ -6,10 +6,9 @@
"fiber", "fibers", "coroutine", "thread", "async", "parallel", "worker", "future", "promise"],
"homepage": "https://github.com/laverdet/node-fibers",
"author": "Marcel Laverdet <marcel@laverdet.com> (https://github.com/laverdet/)",
- "main": "fibers",
+ "main": "fibers.js",
"scripts": {
- "install": "node build.js || nodejs build.js",
- "test": "node test.js || nodejs test.js"
+ "test": "node test.js"
},
"repository": {
"type": "git",
@@ -19,7 +18,8 @@
"engines": {
"node": ">=10.0.0"
},
- "dependencies": {
- "detect-libc": "^1.0.3"
- }
+ "files": [
+ "build/Release/fibers.node",
+ "fibers.js"
+ ]
}
|