diff --git a/tools/wafadmin/Build.py b/tools/wafadmin/Build.py index 10700ec20..07904868c 100644 --- a/tools/wafadmin/Build.py +++ b/tools/wafadmin/Build.py @@ -773,7 +773,7 @@ class BuildContext(Utils.Context): try: shutil.copy2(src, tgt) - os.chmod(tgt, chmod) + if chmod < 0: os.chmod(tgt, chmod) except IOError: try: os.stat(src) diff --git a/wscript b/wscript index f72a33e37..3c5bda4ee 100644 --- a/wscript +++ b/wscript @@ -969,6 +969,20 @@ def build(bld): bld.install_files('${PREFIX}/bin/', 'tools/node-waf', chmod=0755) bld.install_files('${LIBDIR}/node/wafadmin', 'tools/wafadmin/*.py') bld.install_files('${LIBDIR}/node/wafadmin/Tools', 'tools/wafadmin/Tools/*.py') + install_npm(bld) + +def install_npm(bld): + start_dir = bld.path.find_dir('deps/npm') + # The chmod=-1 is a Node hack. We changed WAF so that when chmod was set to + # -1 that the same permission in this tree are used. Necessary to get + # npm-cli.js to be executable without having to list every file in NPM. + bld.install_files('${LIBDIR}/node_modules/npm', + start_dir.ant_glob('**/*'), + cwd=start_dir, + relative_trick=True, + chmod=0) + bld.symlink_as('${PREFIX}/bin/npm', + '../lib/node_modules/npm/bin/npm-cli.js') def shutdown(): Options.options.debug