Skip to content

Commit

Permalink
tools: update gyp-next to 0.19.0
Browse files Browse the repository at this point in the history
PR-URL: #56158
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Rafael Gonzaga <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Jiawen Geng <[email protected]>
  • Loading branch information
nodejs-github-bot authored and aduh95 committed Dec 10, 2024
1 parent efcc829 commit e20eef6
Show file tree
Hide file tree
Showing 11 changed files with 53 additions and 36 deletions.
7 changes: 7 additions & 0 deletions tools/gyp/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog

## [0.19.0](https://github.com/nodejs/gyp-next/compare/v0.18.3...v0.19.0) (2024-12-03)


### Features

* provide escaped version of `PRODUCT_DIR_ABS` ([#271](https://github.com/nodejs/gyp-next/issues/271)) ([3bf3b1c](https://github.com/nodejs/gyp-next/commit/3bf3b1cda26f16c645e0fdd5582ffbf49d9a2580))

## [0.18.3](https://github.com/nodejs/gyp-next/compare/v0.18.2...v0.18.3) (2024-10-08)


Expand Down
2 changes: 1 addition & 1 deletion tools/gyp/pylib/gyp/MSVSSettings.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ def ValidateMSBuild(self, value):
int(value, self._msbuild_base)

def ConvertToMSBuild(self, value):
msbuild_format = (self._msbuild_base == 10) and "%d" or "0x%04x"
msbuild_format = ((self._msbuild_base == 10) and "%d") or "0x%04x"
return msbuild_format % int(value)


Expand Down
2 changes: 1 addition & 1 deletion tools/gyp/pylib/gyp/MSVSVersion.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def UsesVcxproj(self):

def ProjectExtension(self):
"""Returns the file extension for the project."""
return self.uses_vcxproj and ".vcxproj" or ".vcproj"
return (self.uses_vcxproj and ".vcxproj") or ".vcproj"

def Path(self):
"""Returns the path to Visual Studio installation."""
Expand Down
33 changes: 23 additions & 10 deletions tools/gyp/pylib/gyp/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.


from __future__ import annotations
import copy
import gyp.input
import argparse
Expand All @@ -24,6 +24,18 @@
DEBUG_VARIABLES = "variables"
DEBUG_INCLUDES = "includes"

def EscapeForCString(string: bytes | str) -> str:
if isinstance(string, str):
string = string.encode(encoding='utf8')

backslash_or_double_quote = {ord('\\'), ord('"')}
result = []
for char in string:
if char in backslash_or_double_quote or not 32 <= char < 127:
result += '\\%03o' % char
else:
result += chr(char)
return result

def DebugOutput(mode, message, *args):
if "all" in gyp.debug or mode in gyp.debug:
Expand Down Expand Up @@ -106,18 +118,19 @@ def Load(

output_dir = params["options"].generator_output or params["options"].toplevel_dir
if default_variables["GENERATOR"] == "ninja":
default_variables.setdefault(
"PRODUCT_DIR_ABS",
os.path.join(
output_dir, "out", default_variables.get("build_type", "default")
),
product_dir_abs = os.path.join(
output_dir, "out", default_variables.get("build_type", "default")
)
else:
default_variables.setdefault(
"PRODUCT_DIR_ABS",
os.path.join(output_dir, default_variables["CONFIGURATION_NAME"]),
product_dir_abs = os.path.join(
output_dir, default_variables["CONFIGURATION_NAME"]
)

default_variables.setdefault("PRODUCT_DIR_ABS", product_dir_abs)
default_variables.setdefault(
"PRODUCT_DIR_ABS_CSTR", EscapeForCString(product_dir_abs)
)

# Give the generator the opportunity to set additional variables based on
# the params it will receive in the output phase.
if getattr(generator, "CalculateVariables", None):
Expand Down Expand Up @@ -253,7 +266,7 @@ def Noop(value):
for name, metadata in options._regeneration_metadata.items():
opt = metadata["opt"]
value = getattr(options, name)
value_predicate = metadata["type"] == "path" and FixPath or Noop
value_predicate = (metadata["type"] == "path" and FixPath) or Noop
action = metadata["action"]
env_name = metadata["env_name"]
if action == "append":
Expand Down
12 changes: 6 additions & 6 deletions tools/gyp/pylib/gyp/generator/make.py
Original file line number Diff line number Diff line change
Expand Up @@ -788,7 +788,7 @@ def __init__(self, generator_flags, flavor):
self.suffix_rules_objdir2 = {}

# Generate suffix rules for all compilable extensions.
for ext in COMPILABLE_EXTENSIONS:
for ext, value in COMPILABLE_EXTENSIONS.items():
# Suffix rules for source folder.
self.suffix_rules_srcdir.update(
{
Expand All @@ -797,7 +797,7 @@ def __init__(self, generator_flags, flavor):
$(obj).$(TOOLSET)/$(TARGET)/%%.o: $(srcdir)/%%%s FORCE_DO_CMD
\t@$(call do_cmd,%s,1)
"""
% (ext, COMPILABLE_EXTENSIONS[ext])
% (ext, value)
)
}
)
Expand All @@ -810,7 +810,7 @@ def __init__(self, generator_flags, flavor):
$(obj).$(TOOLSET)/$(TARGET)/%%.o: $(obj).$(TOOLSET)/%%%s FORCE_DO_CMD
\t@$(call do_cmd,%s,1)
"""
% (ext, COMPILABLE_EXTENSIONS[ext])
% (ext, value)
)
}
)
Expand All @@ -821,7 +821,7 @@ def __init__(self, generator_flags, flavor):
$(obj).$(TOOLSET)/$(TARGET)/%%.o: $(obj)/%%%s FORCE_DO_CMD
\t@$(call do_cmd,%s,1)
"""
% (ext, COMPILABLE_EXTENSIONS[ext])
% (ext, value)
)
}
)
Expand Down Expand Up @@ -1779,13 +1779,13 @@ def WriteTarget(
# using ":=".
self.WriteSortedXcodeEnv(self.output, self.GetSortedXcodePostbuildEnv())

for configname in target_postbuilds:
for configname, value in target_postbuilds.items():
self.WriteLn(
"%s: TARGET_POSTBUILDS_%s := %s"
% (
QuoteSpaces(self.output),
configname,
gyp.common.EncodePOSIXShellList(target_postbuilds[configname]),
gyp.common.EncodePOSIXShellList(value),
)
)

Expand Down
11 changes: 4 additions & 7 deletions tools/gyp/pylib/gyp/input.py
Original file line number Diff line number Diff line change
Expand Up @@ -2469,11 +2469,8 @@ def SetUpConfigurations(target, target_dict):
merged_configurations[configuration] = new_configuration_dict

# Put the new configurations back into the target dict as a configuration.
for configuration in merged_configurations:
target_dict["configurations"][configuration] = merged_configurations[
configuration
]

for configuration, value in merged_configurations.items():
target_dict["configurations"][configuration] = value
# Now drop all the abstract ones.
configs = target_dict["configurations"]
target_dict["configurations"] = {
Expand Down Expand Up @@ -3020,8 +3017,8 @@ def Load(
del target_dict[key]
ProcessListFiltersInDict(target_name, tmp_dict)
# Write the results back to |target_dict|.
for key in tmp_dict:
target_dict[key] = tmp_dict[key]
for key, value in tmp_dict.items():
target_dict[key] = value

# Make sure every dependency appears at most once.
RemoveDuplicateDependencies(targets)
Expand Down
4 changes: 2 additions & 2 deletions tools/gyp/pylib/gyp/xcode_emulation.py
Original file line number Diff line number Diff line change
Expand Up @@ -1127,8 +1127,8 @@ def _GetIOSPostbuilds(self, configname, output_binary):
be deployed to a device. This should be run as the very last step of the
build."""
if not (
self.isIOS
and (self.spec["type"] == "executable" or self._IsXCTest())
(self.isIOS
and (self.spec["type"] == "executable" or self._IsXCTest()))
or self.IsIosFramework()
):
return []
Expand Down
8 changes: 4 additions & 4 deletions tools/gyp/pylib/gyp/xcodeproj_file.py
Original file line number Diff line number Diff line change
Expand Up @@ -3017,10 +3017,10 @@ def _AllSymrootsUnique(self, target, inherit_unique_symroot):
symroots = self._DefinedSymroots(target)
for s in self._DefinedSymroots(target):
if (
s is not None
and not self._IsUniqueSymrootForTarget(s)
or s is None
and not inherit_unique_symroot
(s is not None
and not self._IsUniqueSymrootForTarget(s))
or (s is None
and not inherit_unique_symroot)
):
return False
return True if symroots else inherit_unique_symroot
Expand Down
2 changes: 1 addition & 1 deletion tools/gyp/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "gyp-next"
version = "0.18.3"
version = "0.19.0"
authors = [
{ name="Node.js contributors", email="[email protected]" },
]
Expand Down
4 changes: 2 additions & 2 deletions tools/gyp/tools/pretty_sln.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,10 @@ def ParseSolution(solution_file):
continue

# Change all dependencies clsid to name instead.
for project in dependencies:
for project, deps in dependencies.items():
# For each dependencies in this project
new_dep_array = []
for dep in dependencies[project]:
for dep in deps:
# Look for the project name matching this cldis
for project_info in projects:
if projects[project_info][1] == dep:
Expand Down
4 changes: 2 additions & 2 deletions tools/gyp/tools/pretty_vcproj.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,8 @@ def FixFilenames(filenames, current_directory):
new_list = []
for filename in filenames:
if filename:
for key in REPLACEMENTS:
filename = filename.replace(key, REPLACEMENTS[key])
for key, value in REPLACEMENTS.items():
filename = filename.replace(key, value)
os.chdir(current_directory)
filename = filename.strip("\"' ")
if filename.startswith("$"):
Expand Down

0 comments on commit e20eef6

Please sign in to comment.