Skip to content

Allow passing defines such as -- -DFOO=bar #1540

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 46 commits into from

Conversation

ilatypov
Copy link

Checklist
  • npm install && npm test passes
  • tests are included
  • documentation is changed or added
  • commit message follows commit guidelines
Description of change

My small change in node-pre-gyp hit a wall because node-gyp configure .. -- -DFOO=bar results in creating an msbuild option /t:-DFOO=bar, thank you very much.

mapbox/node-pre-gyp#416

isaacs and others added 30 commits June 6, 2017 06:56
Tar version 3 performs better and is more well tested than its
predecessor.  npm will be using this in the near future, so there is no
benefit in shipping a node-gyp that uses the slower and less reliable
fstream-based tar.

This drops support for node 0.x, and thus should be considered a
breaking semver-major change.

PR-URL: nodejs#1212
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
* dropping support for node < 4
* signal the CI not to test node < 4
If you're providing a path to a header tarball to install, you probably
want it to always be re-installed.

PR-URL: nodejs#1220
Fixes: nodejs#1216
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Refael Ackermann <refack@gmail.com>
* test: build simple addon in path with non-ascii characters
* test: add test-charmap.py

PR-URL: nodejs#1203
Reviewed-By: Refael Ackermann <refack@gmail.com>
Enable linking to the platform specific installation instructions

PR-URL: nodejs#1225
Reviewed-By: Refael Ackermann <refack@gmail.com>
Lifted verbatim from
https://github.com/nodejs/node/blob/master/CONTRIBUTING.md
then `s/Node.js/node-gyp/`.

PR-URL: nodejs#1229
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
Give users reporting bugs a clearer idea of the info that will be
helpful when reporting issues.

PR-URL: nodejs#1228
Refs: https://github.com/nodejs/node/tree/master/.github
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
PR-URL: nodejs#1292
Refs: nodejs#1195 (comment)
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Initial work to add z/OS support to node-gyp.


PR-URL: nodejs#1276
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
GYP automatically turns variables ending in _dir, _file or _path into
absolute paths but didn't check for empty strings.

It interacted badly with variables inherited through the environment
from npm, the `scripts-prepend-node-path=false` setting in particular
because it is turned into `npm_config_script_prepend_node_path=`.

Fixes: nodejs#1217
PR-URL: nodejs#1267
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
The description erroneously stated that it should point the node binary.
It needs to point to the node source code.

PR-URL: nodejs#1372
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Retry the download+install dance only once after encountering an EACCES.

That only happens when both the devdir (usually: `$HOME/.node-gyp`) and
the current working directory aren't writable.  Users won't often hit
that except through `sudo npm install` because npm drops privileges
before executing node-gyp.

Fixes: nodejs#1383
PR-URL: nodejs#1384
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
As node-gyp rebuild doesn't seem to need xcodebuild, we don't need to be
printing the error every time GYP is run.

PR-URL: nodejs#1370
Fixes: nodejs#569
Refs: nodejs#1057
Refs: https://chromium-review.googlesource.com/c/492046/
PR-URL: nodejs#1323
Fixes: nodejs#1295
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
This fixes the regular expression matching in `xcode_emulation`
to also handle version numbers with multiple-digit major versions
which would otherwise break under use of XCode 10

Fixes: nodejs#1454
PR-URL: nodejs#1455
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Node.js on z/OS uses shared dll (libnode.so). When linking native
addons, node-gyp needs to find the corresponding libnode.x during
the link step.

PR-URL: nodejs#1451
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Refael Ackermann <refack@gmail.com>
PR-URL: nodejs#1451
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Refael Ackermann <refack@gmail.com>
PR-URL: nodejs#1167
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Currently, on non-Windows platforms, it is possible to have
a multi-target native module and specify building just some
of the targets using `node-gyp build my_target`.

On Windows, however, specifying the targets to build requires the `/t:`
or `/target:` flag. Without this change you will get an `MSB1008` error
because MSBuild thinks you are trying to specify multiple solutions.

PR-URL: nodejs#1164
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Header files for deps are in a different location in the Node.js
source tree compared to the release tarballs.

PR-URL: nodejs#1055
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
PR-URL: nodejs#1158
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Refael Ackermann <refack@gmail.com>
PR-URL: nodejs#1436
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Shrinks node-gyp's size by about 100 kB.

PR-URL: nodejs#1458
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Fixes grammar, removes extra lines and spaces, etc. Also removes a few
references to `node-waf`, which was removed ~6 years ago now. Happy to
add back if people still need that information.

PR-URL: nodejs#1498
Reviewed-By: Vse Mozhet Byt <vsemozhetbyt@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
- Removes "module dependencies" comments and things that, IMHO, don't add
too much value. Happy to add back if helps some people when reading
through `node-gyp`.
- DRY up `lib/process-release.js`.
- Removes a bunch of extra blank lines, as well as random spaces.

PR-URL: nodejs#1508
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
- Uses `.eslintrc.yaml` for configuration
- `npm run lint` is part of `npm test`

PR-URL: nodejs#1497
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
Reviewed-By: João Reis <reis@janeasystems.com>
This makes the parsing more robust and fixes the additional issue
related to USB Device Connectivity component.

Fixes: nodejs#1466
PR-URL: nodejs#1516
Reviewed-By: João Reis <reis@janeasystems.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
This is cleaner than filtering additional strings from
platform.python_version().

PR-URL: nodejs#1504
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Jon Moss <me@jonathanmoss.me>
Reviewed-By: Rod Vagg <rod@vagg.org>
Fixes: nodejs#1472
PR-URL: nodejs#1490
Reviewed-By: Jon Moss <me@jonathanmoss.me>
jhermsmeier and others added 16 commits August 9, 2018 10:32
This updates the link to the commit guidelines in the
`PULL_REQUEST_TEMPLATE.md`, as they have moved from the
`CONTRIBUTING.md` to `doc/guides/contributing/pull-requests.md`

PR-URL: nodejs#1456
Reviewed-By: Jon Moss <me@jonathanmoss.me>
PR-URL: nodejs#1330
Reviewed-By: Jon Moss <me@jonathanmoss.me>
Required for "node < 4" compatibility and is congruent with `npm`

minimum for passing `npm test` >= 2.9.0
setting < 2.82.0 allows deduping

PR-URL: nodejs#1300
Fixes: nodejs#1299
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
PR-URL: nodejs#1492
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Matheus Marchini <matheus@sthima.com>
Reviewed-By: Jon Moss <me@jonathanmoss.me>
Reviewed-By: Rod Vagg <rod@vagg.org>
…lable.

PR-URL: nodejs#1492
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Matheus Marchini <matheus@sthima.com>
Reviewed-By: Jon Moss <me@jonathanmoss.me>
Reviewed-By: Rod Vagg <rod@vagg.org>
PR-URL: nodejs#1521
Reviewed-By: Jon Moss <me@jonathanmoss.me>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Required to support the shared library builds on AIX - this sets the
shared library suffix within GYP to .a instead of .so on AIX
My patch: https://codereview.chromium.org/2492233002/ was landed as
as part of this one which fixed some other (not required, but
included for completeness of the backport) changes:

PR-URL: https://github.com/nodejs/node/pull9675
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Ref: https://codereview.chromium.org/2511733005/
Pulling in https://codereview.chromium.org/2019133002/ in its current
state, as gyp seems to be largely abandoned as a project.

Original commit message:

    Hash intermediate file name to avoid ENAMETOOLONG

    Hash the intermediate Makefile target used for multi-output rules
    so that it still works when the involved file names are very long.

    Since the intermediate file's name is effectively arbitrary, this
    does not come with notable behavioural changes.

    The `import hashlib` boilerplate is taken directly
    from `xcodeproj_file.py`.

Concretely, this makes the V8 inspector build currently fail when long
pathnames are involved, notably when using ecryptfs which has a lower
file name length limit.

Fixes: nodejs/node#7959
Ref: nodejs/node#7510
PR-URL: nodejs/node#7963
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
this is a re-base of the gyp part of
3c46bb9931ecea71167342322e09121ee48cde8e
after bumping GYP version to
https://chromium.googlesource.com/external/gyp/+/eb296f67da078ec01f5e3a9ea9cdc6d26d680161

Original-Review-By: James M Snell <jasnell@gmail.com>
Ref: nodejs/node#7986
PR-URL: nodejs/node#12450
Reviewed-By: João Reis <reis@janeasystems.com>
this is a re-base of the gyp part of
6a09a69ec9d36b705e9bde2ac1a193566a702d96
after bumping GYP version to
https://chromium.googlesource.com/external/gyp/+/eb296f67da078ec01f5e3a9ea9cdc6d26d680161

Original-PR-URL: nodejs/node#11956
Original-Ref: nodejs/node#9163
Original-Reviewed-By: James M Snell <jasnell@gmail.com>

PR-URL: nodejs/node#12450
Reviewed-By: João Reis <reis@janeasystems.com>
The ability to set the link rule is used for FIPS, and needs to set
both the `ld =` and `ldxx =` variables in the ninja build file to link
c++ (node) and c (openssl-cli, etc.) executables.

URL: nodejs/node#14227
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: James M Snell <jasnell@gmail.com>
PR-URL: nodejs/node#20716
Fixes: nodejs/node#20682
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Previously running ./configure with only the Xcode Command Line Tools
installed would give:

xcrun: error: unable to lookup item 'PlatformPath' from command line tools installation
xcrun: error: unable to lookup item 'PlatformPath' in SDK '/'

Co-authored-by: Ben Noordhuis <info@bnoordhuis.nl>
Fixes: nodejs/node#12531

PR-URL: nodejs/node#21520
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Currently the files specified in libraries in node.gyp `cctest` target are
getting a '.lib' extension on windows when generated with ninja.
This commit adds a check to see if a file has a '.obj' extension and in
that case no '.lib' extension will be added.

Also, the LIBS specified in the 'libraries' section are not
being included in the --start-group --end-group section which
means that these libraries will not be searched causing issue
with linkers where the order matters.

PR-URL: nodejs/node#12484
Fixes: nodejs/node#12448
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
@ilatypov
Copy link
Author

Sorry I do not know how to run tests. I see some added in the change that exposed my issue.

#1164

@refack
Copy link
Contributor

refack commented Oct 20, 2018

Hello @ilatypov and thank you for the contribution.
Could you write a test for this change? An example can be:

test('build simple addon', function (t) {
t.plan(3)
// Set the loglevel otherwise the output disappears when run via 'npm test'
var cmd = [nodeGyp, 'rebuild', '-C', addonPath, '--loglevel=verbose']
var proc = execFile(process.execPath, cmd, function (err, stdout, stderr) {
var logLines = stderr.toString().trim().split(/\r?\n/)
var lastLine = logLines[logLines.length-1]
t.strictEqual(err, null)
t.strictEqual(lastLine, 'gyp info ok', 'should end in ok')
t.strictEqual(runHello().trim(), 'world')
})
proc.stdout.setEncoding('utf-8')
proc.stderr.setEncoding('utf-8')
})

(BTW: you run the test suite with a simple npm install; npm test)

@kewde
Copy link

kewde commented Nov 26, 2018

Hmm, this is an issue that does not only affect the the configure options but also overloading of properties.

/p:FOO=bar

becomes

/t:/p:FOO=bar

This fix wouldn't apply in all cases :/

@rvagg
Copy link
Member

rvagg commented Jun 21, 2019

@ilatypov would still like to pursue this? if so, please rebase to the current master and let's see if we can figure out a test for it.

@cclauss
Copy link
Contributor

cclauss commented Jun 22, 2021

Too many conflicts.

@cclauss cclauss closed this Jun 22, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.