diff options
author | Daniel Bevenius <daniel.bevenius@gmail.com> | 2020-07-08 08:05:43 +0200 |
---|---|---|
committer | Daniel Bevenius <daniel.bevenius@gmail.com> | 2020-07-14 05:48:29 +0200 |
commit | 8da0ae2526ffcd8981d4d0f0a9d3888ec398fbb9 (patch) | |
tree | 239c887fa63502f743443f7efb39fce244e366e3 /tools/gyp_node.py | |
parent | f902170af6e19ab0f2d5cefdf7111580238cbeb7 (diff) | |
download | node-new-8da0ae2526ffcd8981d4d0f0a9d3888ec398fbb9.tar.gz |
build,tools: fix cmd_regen_makefile
Currently, after having configured and built node and then updating a
dependent target the following error is produced when trying to rebuild
the project:
$ ./configure && make -j8
$ touch node.gypi
$ make -j8
configure: error: no such option: -f
make[1]: *** [Makefile:685: Makefile] Error 2
The reason for this is that the target 'cmd_regen_makefile' is using the
command 'configure' instead of 'gyp_node.py' in out/Makefile:
cmd_regen_makefile = cd $(srcdir); /work/nodejs/node/configure -fmake
As far as I can tell gyp is using sys.argv[0] as the 'gyp_binary' in
__init__.py:
params = {'options': options,
...
'gyp_binary': sys.argv[0],
But when called via 'configure' sys.argv[0] is 'configure' instead of
gyp_node.py leading to the above error.
This commit suggests setting the program name explicitly in
gyp_node.py. Alternatively perhaps this could be done in configure.py
instead but I was not sure what would be best.
PR-URL: https://github.com/nodejs/node/pull/34255
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'tools/gyp_node.py')
-rwxr-xr-x | tools/gyp_node.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/tools/gyp_node.py b/tools/gyp_node.py index 831d2ef155..333c89f5ae 100755 --- a/tools/gyp_node.py +++ b/tools/gyp_node.py @@ -51,6 +51,12 @@ def run_gyp(args): args.append('-Dlinux_use_bundled_gold=0') args.append('-Dlinux_use_gold_flags=0') + # Set the current program to this module. This is done because gyp + # will use the program path in targets it generates. If this script was called + # by another script the program name will not be gyp_node.py but whatever + # the name of the script that called it is, leading to incorrect commands + # in generated targets (for example cmd_regen_makefile). + sys.argv[0] = os.path.abspath(__file__) rc = gyp.main(args) if rc != 0: print('Error running GYP') |