From 985efdfa0929b803a526755fe035cf1b71448889 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Sat, 17 Oct 2020 09:46:49 +0200 Subject: [PATCH] tools: update gyp-next to v0.6.2 PR-URL: https://github.com/nodejs/node/pull/35690 Reviewed-By: Antoine du Hamel Reviewed-By: Rich Trott --- tools/gyp/.github/workflows/node-gyp.yml | 40 +++++++++ .../gyp/.github/workflows/nodejs-windows.yml | 2 +- .../gyp/.github/workflows/release-please.yml | 16 ++++ tools/gyp/CHANGELOG.md | 89 ++++++++++--------- tools/gyp/pylib/gyp/generator/msvs.py | 32 ++++--- tools/gyp/setup.py | 2 +- 6 files changed, 128 insertions(+), 53 deletions(-) create mode 100644 tools/gyp/.github/workflows/node-gyp.yml create mode 100644 tools/gyp/.github/workflows/release-please.yml diff --git a/tools/gyp/.github/workflows/node-gyp.yml b/tools/gyp/.github/workflows/node-gyp.yml new file mode 100644 index 00000000000000..78fe502bda062f --- /dev/null +++ b/tools/gyp/.github/workflows/node-gyp.yml @@ -0,0 +1,40 @@ +name: node-gyp integration + +on: [push, pull_request] + +jobs: + test: + strategy: + fail-fast: false + matrix: + os: [macos-latest, ubuntu-latest, windows-latest] + runs-on: ${{ matrix.os }} + steps: + - name: Clone gyp-next + uses: actions/checkout@v2 + with: + path: gyp-next + - name: Clone nodejs/node-gyp + uses: actions/checkout@v2 + with: + repository: nodejs/node-gyp + path: node-gyp + - uses: actions/setup-node@v1 + with: + node-version: 14.x + - uses: actions/setup-python@v2 + with: + python-version: 3.9 + - name: Install dependencies + run: | + cd node-gyp + npm install --no-progress + - name: Replace gyp in node-gyp + shell: bash + run: | + rm -rf node-gyp/gyp + cp -r gyp-next node-gyp/gyp + - name: Run tests + run: | + cd node-gyp + npm test diff --git a/tools/gyp/.github/workflows/nodejs-windows.yml b/tools/gyp/.github/workflows/nodejs-windows.yml index 48a42372c2f0b0..fffe96e33b815e 100644 --- a/tools/gyp/.github/workflows/nodejs-windows.yml +++ b/tools/gyp/.github/workflows/nodejs-windows.yml @@ -6,7 +6,7 @@ jobs: build-windows: runs-on: windows-latest steps: - - name: Clone node-gyp + - name: Clone gyp-next uses: actions/checkout@v2 with: path: gyp-next diff --git a/tools/gyp/.github/workflows/release-please.yml b/tools/gyp/.github/workflows/release-please.yml new file mode 100644 index 00000000000000..a414c10e156360 --- /dev/null +++ b/tools/gyp/.github/workflows/release-please.yml @@ -0,0 +1,16 @@ +on: + push: + branches: + - master + +name: release-please +jobs: + release-please: + runs-on: ubuntu-latest + steps: + - uses: GoogleCloudPlatform/release-please-action@v2.5.6 + with: + token: ${{ secrets.GITHUB_TOKEN }} + release-type: python + package-name: gyp-next + bump-minor-pre-major: Yes diff --git a/tools/gyp/CHANGELOG.md b/tools/gyp/CHANGELOG.md index 0bfcab0f69aca2..53c922b6c903f8 100644 --- a/tools/gyp/CHANGELOG.md +++ b/tools/gyp/CHANGELOG.md @@ -1,61 +1,70 @@ # Changelog -All notable changes to this project will be documented in this file. +### [0.6.2](https://www.github.com/nodejs/gyp-next/compare/v0.6.1...v0.6.2) (2020-10-16) -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). -## [Unreleased] +### Bug Fixes -## [0.6.0] - 2020-10-13 +* do not rewrite absolute paths to avoid long paths ([#74](https://www.github.com/nodejs/gyp-next/issues/74)) ([c2ccc1a](https://www.github.com/nodejs/gyp-next/commit/c2ccc1a81f7f94433a94f4d01a2e820db4c4331a)) +* only include MARMASM when toolset is target ([5a2794a](https://www.github.com/nodejs/gyp-next/commit/5a2794aefb58f0c00404ff042b61740bc8b8d5cd)) -### Added -- The Makefile generator will now output shared libraries directly to the product - directory on all platforms (previously only macOS). +### [0.6.1](https://github.com/nodejs/gyp-next/compare/v0.6.0...v0.6.1) (2020-10-14) -## [0.5.0] - 2020-09-30 -### Added -- Extended compile_commands_json generator to consider more file extensions than - just `c` and `cc`. `cpp` and `cxx` are now supported. -- Source files with duplicate basenames are now supported. +### Bug Fixes + +* Correctly rename object files for absolute paths in MSVS generator. + +## [0.6.0](https://github.com/nodejs/gyp-next/compare/v0.5.0...v0.6.0) (2020-10-13) + + +### Features + +* The Makefile generator will now output shared libraries directly to the product directory on all platforms (previously only macOS). + +## [0.5.0](https://github.com/nodejs/gyp-next/compare/v0.4.0...v0.5.0) (2020-09-30) + + +### Features + +* Extended compile_commands_json generator to consider more file extensions than just `c` and `cc`. `cpp` and `cxx` are now supported. +* Source files with duplicate basenames are now supported. ### Removed -- The `--no-duplicate-basename-check` option was removed. -- The `msvs_enable_marmasm` configuration option was removed in favor of - auto-inclusion of the "marmasm" sections for Windows on ARM. -## [0.4.0] - 2020-07-14 +* The `--no-duplicate-basename-check` option was removed. +* The `msvs_enable_marmasm` configuration option was removed in favor of auto-inclusion of the "marmasm" sections for Windows on ARM. + +## [0.4.0](https://github.com/nodejs/gyp-next/compare/v0.3.0...v0.4.0) (2020-07-14) + + +### Features + +* Added support for passing arbitrary architectures to Xcode builds, enables `arm64` builds. + +### Bug Fixes + +* Fixed a bug on Solaris where copying archives failed. + +## [0.3.0](https://github.com/nodejs/gyp-next/compare/v0.2.1...v0.3.0) (2020-06-06) + -### Added -- Added support for passing arbitrary architectures to Xcode builds, enables `arm64` builds. +### Features -### Fixed -- Fixed a bug on Solaris where copying archives failed. +* Added support for MSVC cross-compilation. This allows compilation on x64 for a Windows ARM target. -## [0.3.0] - 2020-06-06 +### Bug Fixes -### Added -- Added support for MSVC cross-compilation. This allows compilation on x64 for - a Windows ARM target. +* Fixed XCode CLT version detection on macOS Catalina. -### Fixed -- Fixed XCode CLT version detection on macOS Catalina. +### [0.2.1](https://github.com/nodejs/gyp-next/compare/v0.2.0...v0.2.1) (2020-05-05) -## [0.2.1] - 2020-05-05 -### Fixed -- Relicensed to Node.js contributors. -- Fixed Windows bug introduced in v0.2.0. +### Bug Fixes -## [0.2.0] - 2020-04-06 +* Relicensed to Node.js contributors. +* Fixed Windows bug introduced in v0.2.0. -This is the first release of this project, based on https://chromium.googlesource.com/external/gyp -with changes made over the years in Node.js and node-gyp. +## [0.2.0](https://github.com/nodejs/gyp-next/releases/tag/v0.2.0) (2020-04-06) -[Unreleased]: https://github.com/nodejs/gyp-next/compare/v0.6.0...HEAD -[0.6.0]: https://github.com/nodejs/gyp-next/compare/v0.5.0...v0.6.0 -[0.5.0]: https://github.com/nodejs/gyp-next/compare/v0.4.0...v0.5.0 -[0.4.0]: https://github.com/nodejs/gyp-next/compare/v0.3.0...v0.4.0 -[0.3.0]: https://github.com/nodejs/gyp-next/compare/v0.2.1...v0.3.0 -[0.2.1]: https://github.com/nodejs/gyp-next/compare/v0.2.0...v0.2.1 -[0.2.0]: https://github.com/nodejs/gyp-next/releases/tag/v0.2.0 +This is the first release of this project, based on https://chromium.googlesource.com/external/gyp with changes made over the years in Node.js and node-gyp. diff --git a/tools/gyp/pylib/gyp/generator/msvs.py b/tools/gyp/pylib/gyp/generator/msvs.py index fadd932f1e958f..32bf4746a179cb 100644 --- a/tools/gyp/pylib/gyp/generator/msvs.py +++ b/tools/gyp/pylib/gyp/generator/msvs.py @@ -2177,7 +2177,12 @@ def GenerateOutput(target_list, target_dicts, data, params): def _GenerateMSBuildFiltersFile( - filters_path, source_files, rule_dependencies, extension_to_rule_name, platforms + filters_path, + source_files, + rule_dependencies, + extension_to_rule_name, + platforms, + toolset, ): """Generate the filters file. @@ -2197,6 +2202,7 @@ def _GenerateMSBuildFiltersFile( rule_dependencies, extension_to_rule_name, platforms, + toolset, filter_group, source_group, ) @@ -2222,6 +2228,7 @@ def _AppendFiltersForMSBuild( rule_dependencies, extension_to_rule_name, platforms, + toolset, filter_group, source_group, ): @@ -2257,13 +2264,14 @@ def _AppendFiltersForMSBuild( rule_dependencies, extension_to_rule_name, platforms, + toolset, filter_group, source_group, ) else: # It's a source. Create a source entry. _, element = _MapFileToMsBuildSourceType( - source, rule_dependencies, extension_to_rule_name, platforms + source, rule_dependencies, extension_to_rule_name, platforms, toolset ) source_entry = [element, {"Include": source}] # Specify the filter it is part of, if any. @@ -2273,7 +2281,7 @@ def _AppendFiltersForMSBuild( def _MapFileToMsBuildSourceType( - source, rule_dependencies, extension_to_rule_name, platforms + source, rule_dependencies, extension_to_rule_name, platforms, toolset ): """Returns the group and element type of the source file. @@ -2301,9 +2309,8 @@ def _MapFileToMsBuildSourceType( elif ext in [".s", ".asm"]: group = "masm" element = "MASM" - for platform in platforms: - if platform.lower() in ["arm", "arm64"]: - element = "MARMASM" + if "arm64" in platforms and toolset == "target": + element = "MARMASM" elif ext == ".idl": group = "midl" element = "Midl" @@ -3613,14 +3620,16 @@ def _AddSources2( rule_dependencies, extension_to_rule_name, _GetUniquePlatforms(spec), + spec["toolset"], ) - if group == "compile": - # Always add an value to support duplicate - # source file basenames. + if group == "compile" and not os.path.isabs(source): + # Add an value to support duplicate source + # file basenames, except for absolute paths to avoid paths + # with more than 260 characters. file_name = os.path.splitext(source)[0] + ".obj" - if (file_name.startswith("..\\")): + if file_name.startswith("..\\"): file_name = re.sub(r"^(\.\.\\)+", "", file_name) - elif (file_name.startswith("$(")): + elif file_name.startswith("$("): file_name = re.sub(r"^\$\([^)]+\)\\", "", file_name) detail.append(["ObjectFileName", "$(IntDir)\\" + file_name]) grouped_sources[group].append([element, {"Include": source}] + detail) @@ -3728,6 +3737,7 @@ def _GenerateMSBuildProject(project, options, version, generator_flags, spec): rule_dependencies, extension_to_rule_name, platforms, + toolset, ) missing_sources = _VerifySourcesExist(sources, project_dir) diff --git a/tools/gyp/setup.py b/tools/gyp/setup.py index 3ee802d6714fba..d1869c1b52055f 100755 --- a/tools/gyp/setup.py +++ b/tools/gyp/setup.py @@ -15,7 +15,7 @@ setup( name="gyp-next", - version="0.6.0", + version="0.6.2", description="A fork of the GYP build system for use in the Node.js projects", long_description=long_description, long_description_content_type="text/markdown",