summaryrefslogtreecommitdiff
path: root/tools/gyp
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2016-05-28 00:10:28 +0200
committerAnna Henningsen <anna@addaleax.net>2016-08-08 22:49:11 +0200
commit5111e789e62174a72cdbe6963ed5c6e9210a7049 (patch)
tree05d7861f8039c72fca207f7b55b90f6173f02b56 /tools/gyp
parenteb172feebf994c904c5f940498f491c9bc64e7a8 (diff)
downloadandroid-node-v8-5111e789e62174a72cdbe6963ed5c6e9210a7049.tar.gz
android-node-v8-5111e789e62174a72cdbe6963ed5c6e9210a7049.tar.bz2
android-node-v8-5111e789e62174a72cdbe6963ed5c6e9210a7049.zip
deps: float gyp patch for long filenames
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: https://github.com/nodejs/node/issues/7959 Ref: https://github.com/nodejs/node/issues/7510 PR-URL: https://github.com/nodejs/node/pull/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>
Diffstat (limited to 'tools/gyp')
-rw-r--r--tools/gyp/pylib/gyp/generator/make.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/tools/gyp/pylib/gyp/generator/make.py b/tools/gyp/pylib/gyp/generator/make.py
index a81f639e38..4a6b283f15 100644
--- a/tools/gyp/pylib/gyp/generator/make.py
+++ b/tools/gyp/pylib/gyp/generator/make.py
@@ -31,6 +31,8 @@ import gyp.xcode_emulation
from gyp.common import GetEnvironFallback
from gyp.common import GypError
+import hashlib
+
generator_default_variables = {
'EXECUTABLE_PREFIX': '',
'EXECUTABLE_SUFFIX': '',
@@ -1743,7 +1745,10 @@ $(obj).$(TOOLSET)/$(TARGET)/%%.o: $(obj)/%%%s FORCE_DO_CMD
# actual command.
# - The intermediate recipe will 'touch' the intermediate file.
# - The multi-output rule will have an do-nothing recipe.
- intermediate = "%s.intermediate" % (command if command else self.target)
+
+ # Hash the target name to avoid generating overlong filenames.
+ cmddigest = hashlib.sha1(command if command else self.target).hexdigest()
+ intermediate = "%s.intermediate" % cmddigest
self.WriteLn('%s: %s' % (' '.join(outputs), intermediate))
self.WriteLn('\t%s' % '@:');
self.WriteLn('%s: %s' % ('.INTERMEDIATE', intermediate))