commit
6787107a88
105
addon-rpm.gypi
Normal file
105
addon-rpm.gypi
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
{
|
||||||
|
'target_defaults': {
|
||||||
|
'type': 'loadable_module',
|
||||||
|
'win_delay_load_hook': 'true',
|
||||||
|
'product_prefix': '',
|
||||||
|
|
||||||
|
'include_dirs': [
|
||||||
|
'/usr/include/node',
|
||||||
|
'/usr/include'
|
||||||
|
],
|
||||||
|
'defines': [
|
||||||
|
'NODE_GYP_MODULE_NAME=>(_target_name)'
|
||||||
|
],
|
||||||
|
|
||||||
|
'target_conditions': [
|
||||||
|
['_type=="loadable_module"', {
|
||||||
|
'product_extension': 'node',
|
||||||
|
'defines': [
|
||||||
|
'BUILDING_NODE_EXTENSION'
|
||||||
|
],
|
||||||
|
'xcode_settings': {
|
||||||
|
'OTHER_LDFLAGS': [
|
||||||
|
'-undefined dynamic_lookup'
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}],
|
||||||
|
|
||||||
|
['_type=="static_library"', {
|
||||||
|
# set to `1` to *disable* the -T thin archive 'ld' flag.
|
||||||
|
# older linkers don't support this flag.
|
||||||
|
'standalone_static_library': '<(standalone_static_library)'
|
||||||
|
}],
|
||||||
|
|
||||||
|
['_win_delay_load_hook=="true"', {
|
||||||
|
# If the addon specifies `'win_delay_load_hook': 'true'` in its
|
||||||
|
# binding.gyp, link a delay-load hook into the DLL. This hook ensures
|
||||||
|
# that the addon will work regardless of whether the node/iojs binary
|
||||||
|
# is named node.exe, iojs.exe, or something else.
|
||||||
|
'conditions': [
|
||||||
|
[ 'OS=="win"', {
|
||||||
|
'sources': [
|
||||||
|
'<(node_gyp_dir)/src/win_delay_load_hook.c',
|
||||||
|
],
|
||||||
|
'msvs_settings': {
|
||||||
|
'VCLinkerTool': {
|
||||||
|
'DelayLoadDLLs': [ 'iojs.exe', 'node.exe' ],
|
||||||
|
# Don't print a linker warning when no imports from either .exe
|
||||||
|
# are used.
|
||||||
|
'AdditionalOptions': [ '/ignore:4199' ],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}],
|
||||||
|
],
|
||||||
|
}],
|
||||||
|
],
|
||||||
|
|
||||||
|
'conditions': [
|
||||||
|
[ 'OS=="mac"', {
|
||||||
|
'defines': [
|
||||||
|
'_DARWIN_USE_64_BIT_INODE=1'
|
||||||
|
],
|
||||||
|
'xcode_settings': {
|
||||||
|
'DYLIB_INSTALL_NAME_BASE': '@rpath'
|
||||||
|
},
|
||||||
|
}],
|
||||||
|
[ 'OS=="aix"', {
|
||||||
|
'ldflags': [
|
||||||
|
'-Wl,-bimport:<(node_exp_file)'
|
||||||
|
],
|
||||||
|
}],
|
||||||
|
[ 'OS=="win"', {
|
||||||
|
'libraries': [
|
||||||
|
'-lkernel32.lib',
|
||||||
|
'-luser32.lib',
|
||||||
|
'-lgdi32.lib',
|
||||||
|
'-lwinspool.lib',
|
||||||
|
'-lcomdlg32.lib',
|
||||||
|
'-ladvapi32.lib',
|
||||||
|
'-lshell32.lib',
|
||||||
|
'-lole32.lib',
|
||||||
|
'-loleaut32.lib',
|
||||||
|
'-luuid.lib',
|
||||||
|
'-lodbc32.lib',
|
||||||
|
'-lDelayImp.lib',
|
||||||
|
'-l"<(node_root_dir)/$(ConfigurationName)/<(node_lib_file)"'
|
||||||
|
],
|
||||||
|
'msvs_disabled_warnings': [
|
||||||
|
# warning C4251: 'node::ObjectWrap::handle_' : class 'v8::Persistent<T>'
|
||||||
|
# needs to have dll-interface to be used by
|
||||||
|
# clients of class 'node::ObjectWrap'
|
||||||
|
4251
|
||||||
|
],
|
||||||
|
}, {
|
||||||
|
# OS!="win"
|
||||||
|
'defines': [
|
||||||
|
'_LARGEFILE_SOURCE',
|
||||||
|
'_FILE_OFFSET_BITS=64'
|
||||||
|
],
|
||||||
|
}],
|
||||||
|
[ 'OS=="freebsd" or OS=="openbsd" or OS=="solaris" or (OS=="linux" and target_arch!="ia32")', {
|
||||||
|
'cflags': [ '-fPIC' ],
|
||||||
|
}]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
node-gyp-3.6.0.tar.gz
Normal file
BIN
node-gyp-3.6.0.tar.gz
Normal file
Binary file not shown.
62
node-gyp-addon-gypi.patch
Normal file
62
node-gyp-addon-gypi.patch
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
commit 4daac6e35e1ea8e886a823785e7b06e80c933ac2
|
||||||
|
Author: Tom Hughes <tom@compton.nu>
|
||||||
|
Date: Mon Jan 18 17:06:18 2016 +0000
|
||||||
|
|
||||||
|
Use custom addon.gypi by default instead of downloading node source
|
||||||
|
|
||||||
|
diff --git a/lib/configure.js b/lib/configure.js
|
||||||
|
index 4e06529..046c12f 100644
|
||||||
|
--- a/lib/configure.js
|
||||||
|
+++ b/lib/configure.js
|
||||||
|
@@ -59,24 +59,26 @@ function configure (gyp, argv, callback) {
|
||||||
|
if ('v' + release.version !== process.version) {
|
||||||
|
// if --target was given, then determine a target version to compile for
|
||||||
|
log.verbose('get node dir', 'compiling against --target node version: %s', release.version)
|
||||||
|
- } else {
|
||||||
|
- // if no --target was specified then use the current host node version
|
||||||
|
- log.verbose('get node dir', 'no --target version specified, falling back to host node version: %s', release.version)
|
||||||
|
- }
|
||||||
|
|
||||||
|
- if (!release.semver) {
|
||||||
|
- // could not parse the version string with semver
|
||||||
|
- return callback(new Error('Invalid version number: ' + release.version))
|
||||||
|
- }
|
||||||
|
+ if (!release.semver) {
|
||||||
|
+ // could not parse the version string with semver
|
||||||
|
+ return callback(new Error('Invalid version number: ' + release.version))
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- // ensure that the target node version's dev files are installed
|
||||||
|
- gyp.opts.ensure = true
|
||||||
|
- gyp.commands.install([ release.version ], function (err, version) {
|
||||||
|
- if (err) return callback(err)
|
||||||
|
- log.verbose('get node dir', 'target node version installed:', release.versionDir)
|
||||||
|
- nodeDir = path.resolve(gyp.devDir, release.versionDir)
|
||||||
|
+ // ensure that the target node version's dev files are installed
|
||||||
|
+ gyp.opts.ensure = true
|
||||||
|
+ gyp.commands.install([ release.version ], function (err, version) {
|
||||||
|
+ if (err) return callback(err)
|
||||||
|
+ log.verbose('get node dir', 'target node version installed:', release.versionDir)
|
||||||
|
+ nodeDir = path.resolve(gyp.devDir, release.versionDir)
|
||||||
|
+ createBuildDir()
|
||||||
|
+ })
|
||||||
|
+ } else {
|
||||||
|
+ // if no --target was specified then use RPM installed headers
|
||||||
|
+ log.verbose('get node dir', 'no --target version specified, falling back to RPM installed headers')
|
||||||
|
+ nodeDir = '/usr/share/node'
|
||||||
|
createBuildDir()
|
||||||
|
- })
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -248,7 +250,8 @@ function configure (gyp, argv, callback) {
|
||||||
|
|
||||||
|
// this logic ported from the old `gyp_addon` python file
|
||||||
|
var gyp_script = path.resolve(__dirname, '..', 'gyp', 'gyp_main.py')
|
||||||
|
- var addon_gypi = path.resolve(__dirname, '..', 'addon.gypi')
|
||||||
|
+ var addon_gypi_file = gyp.opts.target || gyp.opts.nodeDir ? 'addon.gypi' : 'addon-rpm.gypi'
|
||||||
|
+ var addon_gypi = path.resolve(__dirname, '..', addon_gypi_file)
|
||||||
|
var common_gypi = path.resolve(nodeDir, 'include/node/common.gypi')
|
||||||
|
fs.stat(common_gypi, function (err, stat) {
|
||||||
|
if (err)
|
||||||
32
node-gyp-python.patch
Normal file
32
node-gyp-python.patch
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
commit 6d43ce52005c977ce8df57440a82bb346d3fc4cc
|
||||||
|
Author: Tom Hughes <tom@compton.nu>
|
||||||
|
Date: Sat Jul 14 19:32:14 2018 +0100
|
||||||
|
|
||||||
|
Don't test that python exists
|
||||||
|
|
||||||
|
diff --git a/test/test-find-python.js b/test/test-find-python.js
|
||||||
|
index 30ba6df..2581a8e 100644
|
||||||
|
--- a/test/test-find-python.js
|
||||||
|
+++ b/test/test-find-python.js
|
||||||
|
@@ -5,21 +5,6 @@ var configure = require('../lib/configure')
|
||||||
|
var execFile = require('child_process').execFile
|
||||||
|
var PythonFinder = configure.test.PythonFinder
|
||||||
|
|
||||||
|
-test('find python', function (t) {
|
||||||
|
- t.plan(4)
|
||||||
|
-
|
||||||
|
- configure.test.findPython('python', function (err, found) {
|
||||||
|
- t.strictEqual(err, null)
|
||||||
|
- var proc = execFile(found, ['-V'], function (err, stdout, stderr) {
|
||||||
|
- t.strictEqual(err, null)
|
||||||
|
- t.strictEqual(stdout, '')
|
||||||
|
- t.ok(/Python 2/.test(stderr))
|
||||||
|
- })
|
||||||
|
- proc.stdout.setEncoding('utf-8')
|
||||||
|
- proc.stderr.setEncoding('utf-8')
|
||||||
|
- })
|
||||||
|
-})
|
||||||
|
-
|
||||||
|
function poison(object, property) {
|
||||||
|
function fail() {
|
||||||
|
throw new Error('Property ' + property + ' should not have been accessed.')
|
||||||
19
node-gyp-system-gyp.patch
Normal file
19
node-gyp-system-gyp.patch
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
commit 31b5c191833a9c122de1c52ad53220da4ccd4589
|
||||||
|
Author: Tom Hughes <tom@compton.nu>
|
||||||
|
Date: Mon Jan 18 17:07:41 2016 +0000
|
||||||
|
|
||||||
|
Use the system gyp
|
||||||
|
|
||||||
|
diff --git a/lib/configure.js b/lib/configure.js
|
||||||
|
index 046c12f..65e78b4 100644
|
||||||
|
--- a/lib/configure.js
|
||||||
|
+++ b/lib/configure.js
|
||||||
|
@@ -249,7 +249,7 @@ function configure (gyp, argv, callback) {
|
||||||
|
}
|
||||||
|
|
||||||
|
// this logic ported from the old `gyp_addon` python file
|
||||||
|
- var gyp_script = path.resolve(__dirname, '..', 'gyp', 'gyp_main.py')
|
||||||
|
+ var gyp_script = '/usr/bin/gyp'
|
||||||
|
var addon_gypi_file = gyp.opts.target || gyp.opts.nodeDir ? 'addon.gypi' : 'addon-rpm.gypi'
|
||||||
|
var addon_gypi = path.resolve(__dirname, '..', addon_gypi_file)
|
||||||
|
var common_gypi = path.resolve(nodeDir, 'include/node/common.gypi')
|
||||||
54
node-gyp.spec
Normal file
54
node-gyp.spec
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
%{?nodejs_find_provides_and_requires}
|
||||||
|
Name: node-gyp
|
||||||
|
Version: 3.6.0
|
||||||
|
Release: 1
|
||||||
|
Summary: Node.js native addon build tool
|
||||||
|
License: MIT
|
||||||
|
URL: https://github.com/nodejs/node-gyp
|
||||||
|
Source0: https://github.com/nodejs/node-gyp/archive/v%{version}/node-gyp-%{version}.tar.gz
|
||||||
|
Source1: addon-rpm.gypi
|
||||||
|
Patch1: node-gyp-addon-gypi.patch
|
||||||
|
Patch2: node-gyp-system-gyp.patch
|
||||||
|
Patch3: node-gyp-python.patch
|
||||||
|
BuildArch: noarch
|
||||||
|
ExclusiveArch: %{nodejs_arches} noarch
|
||||||
|
Requires: gyp nodejs-devel libuv-devel http-parser-devel gcc-c++
|
||||||
|
BuildRequires: gyp nodejs-devel libuv-devel http-parser-devel gcc-c++
|
||||||
|
BuildRequires: npm(tape) npm(bindings) npm(fstream) npm(glob) npm(graceful-fs) npm(minimatch)
|
||||||
|
BuildRequires: npm(mkdirp) npm(nan) npm(nopt) npm(npmlog) npm(osenv) npm(path-array)
|
||||||
|
BuildRequires: npm(request) npm(require-inject) npm(rimraf) npm(semver) npm(tar) npm(which)
|
||||||
|
%description
|
||||||
|
node-gyp is a cross-platform command-line tool written in Node.js for compiling
|
||||||
|
native addon modules for Node.js, which takes away the pain of dealing with the
|
||||||
|
various differences in build platforms. It is the replacement to the node-waf
|
||||||
|
program which is removed for node v0.8.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -p1
|
||||||
|
cp -p %{SOURCE1} addon-rpm.gypi
|
||||||
|
%nodejs_fixdep glob "^6.0.4"
|
||||||
|
%nodejs_fixdep minimatch "^3.0.0"
|
||||||
|
rm -rf gyp
|
||||||
|
|
||||||
|
%build
|
||||||
|
|
||||||
|
%install
|
||||||
|
mkdir -p %{buildroot}%{nodejs_sitelib}/node-gyp
|
||||||
|
cp -pr addon*.gypi bin lib package.json %{buildroot}%{nodejs_sitelib}/node-gyp
|
||||||
|
mkdir -p %{buildroot}%{_bindir}
|
||||||
|
ln -sf ../lib/node_modules/node-gyp/bin/node-gyp.js %{buildroot}%{_bindir}/node-gyp
|
||||||
|
%nodejs_symlink_deps
|
||||||
|
|
||||||
|
%check
|
||||||
|
%{nodejs_symlink_deps} --check
|
||||||
|
%{nodejs_sitelib}/tape/bin/tape test/test-*.js
|
||||||
|
|
||||||
|
%files
|
||||||
|
%doc README.md CHANGELOG.md
|
||||||
|
%license LICENSE
|
||||||
|
%{nodejs_sitelib}/node-gyp
|
||||||
|
%{_bindir}/node-gyp
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Mon Aug 17 2020 Shaoqiang Kang <kangshaoqiang1@huawei.com> - 3.6.0-1
|
||||||
|
- Package init
|
||||||
4
node-gyp.yaml
Normal file
4
node-gyp.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
version_control: github
|
||||||
|
src_repo: nodejs/node-gyp
|
||||||
|
tag_prefix: "v"
|
||||||
|
seperator: "."
|
||||||
Loading…
x
Reference in New Issue
Block a user