@flun/nodejs-mobile-gyp 1.1.2 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/CHANGELOG.md +10 -75
  2. package/LICENSE +9 -4
  3. package/README.md +198 -132
  4. package/addon.gypi +1 -1
  5. package/bin/node-gyp.js +6 -5
  6. package/gyp/README.md +5 -3
  7. package/gyp/data/win/large-pdb-shim.cc +1 -1
  8. package/gyp/gyp +1 -1
  9. package/gyp/gyp.bat +1 -1
  10. package/gyp/gyp_main.py +1 -1
  11. package/gyp/pylib/gyp/MSVSNew.py +1 -1
  12. package/gyp/pylib/gyp/MSVSProject.py +1 -1
  13. package/gyp/pylib/gyp/MSVSSettings.py +1 -1
  14. package/gyp/pylib/gyp/MSVSToolFile.py +1 -1
  15. package/gyp/pylib/gyp/MSVSUserFile.py +1 -1
  16. package/gyp/pylib/gyp/MSVSUtil.py +1 -1
  17. package/gyp/pylib/gyp/MSVSVersion.py +1 -1
  18. package/gyp/pylib/gyp/__init__.py +1 -1
  19. package/gyp/pylib/gyp/common.py +1 -1
  20. package/gyp/pylib/gyp/easy_xml.py +1 -1
  21. package/gyp/pylib/gyp/flock_tool.py +1 -1
  22. package/gyp/pylib/gyp/generator/analyzer.py +1 -1
  23. package/gyp/pylib/gyp/generator/android.py +1 -1
  24. package/gyp/pylib/gyp/generator/cmake.py +1 -1
  25. package/gyp/pylib/gyp/generator/compile_commands_json.py +1 -1
  26. package/gyp/pylib/gyp/generator/dump_dependency_json.py +1 -1
  27. package/gyp/pylib/gyp/generator/eclipse.py +1 -1
  28. package/gyp/pylib/gyp/generator/gypd.py +1 -1
  29. package/gyp/pylib/gyp/generator/gypsh.py +1 -1
  30. package/gyp/pylib/gyp/generator/make.py +23 -12
  31. package/gyp/pylib/gyp/generator/msvs.py +3 -3
  32. package/gyp/pylib/gyp/generator/ninja.py +1 -1
  33. package/gyp/pylib/gyp/generator/xcode.py +1 -1
  34. package/gyp/pylib/gyp/input.py +1 -1
  35. package/gyp/pylib/gyp/mac_tool.py +1 -1
  36. package/gyp/pylib/gyp/msvs_emulation.py +1 -1
  37. package/gyp/pylib/gyp/ninja_syntax.py +1 -1
  38. package/gyp/pylib/gyp/simple_copy.py +1 -1
  39. package/gyp/pylib/gyp/win_tool.py +1 -1
  40. package/gyp/pylib/gyp/xcode_emulation.py +5 -5
  41. package/gyp/pylib/gyp/xcode_ninja.py +1 -1
  42. package/gyp/pylib/gyp/xcodeproj_file.py +1 -1
  43. package/gyp/pylib/gyp/xml_fix.py +1 -1
  44. package/gyp/pylib/packaging/LICENSE +1 -1
  45. package/gyp/pylib/packaging/LICENSE.APACHE +1 -1
  46. package/gyp/pylib/packaging/LICENSE.BSD +1 -1
  47. package/gyp/pylib/packaging/__init__.py +1 -1
  48. package/gyp/pylib/packaging/_elffile.py +1 -1
  49. package/gyp/pylib/packaging/_manylinux.py +1 -1
  50. package/gyp/pylib/packaging/_musllinux.py +1 -1
  51. package/gyp/pylib/packaging/_parser.py +1 -1
  52. package/gyp/pylib/packaging/_structures.py +1 -1
  53. package/gyp/pylib/packaging/_tokenizer.py +1 -1
  54. package/gyp/pylib/packaging/markers.py +1 -1
  55. package/gyp/pylib/packaging/metadata.py +1 -1
  56. package/gyp/pylib/packaging/requirements.py +1 -1
  57. package/gyp/pylib/packaging/specifiers.py +1 -1
  58. package/gyp/pylib/packaging/tags.py +1 -1
  59. package/gyp/pylib/packaging/utils.py +1 -1
  60. package/gyp/pylib/packaging/version.py +1 -1
  61. package/lib/Find-VisualStudio.cs +1 -1
  62. package/lib/build.js +16 -16
  63. package/lib/clean.js +2 -2
  64. package/lib/configure.js +20 -17
  65. package/lib/create-config-gypi.js +8 -8
  66. package/lib/download.js +3 -3
  67. package/lib/find-node-directory.js +9 -9
  68. package/lib/find-python.js +14 -14
  69. package/lib/find-visualstudio.js +19 -19
  70. package/lib/install.js +22 -21
  71. package/lib/list.js +1 -1
  72. package/lib/log.js +2 -2
  73. package/lib/node-gyp.js +7 -7
  74. package/lib/process-release.js +14 -14
  75. package/lib/rebuild.js +1 -1
  76. package/lib/remove.js +2 -2
  77. package/lib/util.js +5 -4
  78. package/package.json +3 -3
  79. package/src/win_delay_load_hook.cc +1 -1
package/CHANGELOG.md CHANGED
@@ -1,81 +1,16 @@
1
- # Changelog
1
+ # 变更日志
2
2
 
3
- ## [1.1.2] - 2026-09-28 21:49
4
-
5
- ### 修复
6
-
7
- - **action 目标的路径分隔符**:`make.py` 中 `self.output` 由 `ComputeOutput` 产出,Windows 上带反斜杠(如 `$(obj).target\../node-addon-api\foo.stamp`),导致 `sh` 把 `\.` 当转义、目录不存在。现统一转正斜杠;非 Windows 平台为 no-op。
8
-
9
- ## [1.1.1] - 2026-09-28 09:23
10
-
11
- ### 修复
12
-
13
- - **Windows 路径分隔符**:gyp 生成的 Makefile 中,`Absolutify` 与 `self.output` 产出的路径带 Windows 反斜杠(如 `src\bufferutil.o`),导致 `sh` / `sed` / `make` 解析失败。现在统一转成正斜杠;该改动在非 Windows 平台上是 no-op。
14
- - **`mkdir` 目标路径**:`mkdir -p "$(dir $@)"` 在 Windows 上因路径尾部反斜杠被 `sh` 当转义符,导致目录未创建、编译器无法写产物。新增 `slashpath` 辅助函数,把路径转正斜杠后再传给 `mkdir`。
15
- - **超长路径依赖**:Windows 下 Makefile 会因 gypi 依赖路径超过 260 字符而报 `No rule to make target`。现在过滤掉 `node_modules` 中的此类依赖——仅影响 Makefile 自动重新生成,不影响编译。
16
-
17
- ### 文档
18
-
19
- 全面核对并修正 README,消除前后矛盾、过时表述与硬编码:
20
-
21
- - **系统要求**:
22
- - iOS 构建前置工具从「Command Line Tools」修正为「**完整 Xcode**」——`xcodebuild` 必须完整 Xcode,CLT 单独不够;
23
- - Visual Studio 从「仅 VS2026」放宽为「**VS2019 / VS2022 / VS2026**」——VS2017 及更早受 Node 版本上限限制,故不在支持范围;VS2026 为已验证版本;
24
- - Android NDK 从「27.x」修正为「**23–27**」,与实测验证范围一致;
25
- - Git for Windows 的说明从「提供 `sh.exe` / `printf` / `xargs`」扩写为「**自带整套 MSYS2 POSIX 工具集**」,避免读者低估其必要性。
26
- - **自动探测**:
27
- - 「无需手动配置」改为「**无需手动指定路径**(前提:工具已安装)」,区分「必须安装」与「位置自动定位」;
28
- - 「POSIX shell(`sh.exe`)」项改为「**Git for Windows 的 `usr/bin` 目录**(以 `sh.exe` 是否存在作为判据)」,与实际探测逻辑一致。
29
- - **顶部引言**:适用范围从仅官方 `nodejs-mobile` 改为「官方及兼容的社区发行版(如 OpenFlun/nodejs-mobile)」。
30
- - 修正若干失效链接。
31
-
32
- ## [1.1.0] - 2026-09-27 16:01
33
-
34
- ### 新增
35
-
36
- - **Windows 宿主平台支持**:此前 Windows 上无法完成 Android 原生模块的交叉编译全流程,本版起支持。
3
+ ## [1.1.4] - 2026-10-24 09:20
4
+ ### 优化
5
+ - 项目标点已改为以英文标点为主;
6
+ - 行宽改为以 123 为主,部分超宽表格改为了列表;
37
7
 
8
+ ## [1.1.3] - 2026-10-20 13:55
38
9
  ### 修复
10
+ - 一些细节优化
39
11
 
40
- - **GNU make 缺 POSIX shell**:Android 原生模块通过 GNU make 构建,Makefile 会调用 `printf` / `xargs` / `sed` 等 Unix 命令。Windows 上原本因找不到 `sh.exe` 而报 `CreateProcess(NULL, printf ...) failed`。现在自动定位 Git for Windows 的 `usr/bin` 并前置到 PATH。
41
- - **Python 探测漏检**:`find-python.js` 原本硬编码 `3.11 / 3.10 / 3.9 / 3.8` 等安装目录,装在非标准位置(如 `C:\Python314`)或更新版本时无法识别。现在改为动态探测,见下方「变更」。
42
- - **工具集写死**:`configure` 阶段原本硬编码 `-Gmsvs_toolset=v145`,仅 VS2026 可用,VS2022 等会失败。现在从 `find-visualstudio` 的探测结果动态取用。
43
- - **路径分隔符**:gyp 生成的 Makefile 中路径带 Windows 反斜杠(如 `src\bufferutil.o`),导致 `sh` / `sed` / `make` 解析失败。现在统一转正斜杠;该改动在非 Windows 平台为 no-op。
44
- - **超长路径依赖**:Windows 下 Makefile 会因 gypi 依赖路径超过 260 字符而报 `No rule to make target`。现在过滤掉 `node_modules` 中的此类依赖——仅影响 Makefile 自动重新生成,不影响编译。
45
-
46
- ### 变更
47
-
48
- - **`lib/find-python.js`**:重写。移除硬编码版本列表,改为 `py.exe` 候选(PATH / `%SystemRoot%`)+ `py -0p` 枚举 + `%LOCALAPPDATA%\Programs\Python` 与 `%ProgramFiles%\Python` 目录扫描。`run()` 显式检查 `execFile` 的 err,避免失败被当成空输出。
49
- - **`lib/build.js`**:区分「宿主平台」与「交叉编译目标」。Windows 宿主编译 Android 目标时走 GNU make(而非 MSBuild);自动探测 `sh.exe`;为 Python 创建 `python3.cmd` shim(Windows 上无需符号链接权限)。
50
- - **`lib/configure.js`**:`-Gmsvs_toolset` 从探测结果动态生成,不再写死。
51
- - **`gyp/pylib/gyp/common.py`、`gyp/pylib/gyp/generator/make.py`**:路径统一输出正斜杠;新增 `slashpath` 辅助供 `mkdir` 使用。
52
-
53
- ### 验证
54
-
55
- - Windows + VS2026 BuildTools + Python + Node + NDK 27.x 环境下,`configure` + `build` 全流程通过,生成的 `.node` 可被 Node 正常加载。
56
- - WSL Ubuntu 24.04 环境下,改动不改变生成的 Makefile 路径,非 Windows 平台行为不变。
57
-
58
- ### 说明
59
-
60
- - 本版无破坏性变更,向后兼容。
61
-
62
-
63
- ## [1.0.2] - 2026-09-26 22:00
64
-
12
+ ## [1.1.2] - 2026-09-28 21:49
65
13
  ### 修复
66
14
 
67
- - **lib/log.js**:新版 `proc-log` 的日志级别函数与 `pause` / `resume` 挂在默认导出的 `log` 对象下,而非包顶层。之前误用 `procLog.pause()` 等写法,导致 `configure` 阶段直接抛出 `TypeError`,全流程无法启动。
68
- - **lib/process-release.js**:弃用 `url.resolve()` / `url.parse()`,改用 WHATWG `URL`,消除新版 Node 的 `DEP0169` 弃用警告。
69
- - **Windows 外部头警告抑制**:Node 官方 V8 头文件会触发 `warning C4018` 等噪音。现在在 gyp 中注册 `ExternalWarningLevel` 属性,并在 `addon.gypi` 中使用 `/external:anglebrackets` + `ExternalWarningLevel: TurnOffAllWarnings`。只对 `#include <...>` 的外部头(Node / V8)静音,不影响下游自己代码的警告;且通过 MSBuild 属性而非命令行 `/external:W0`,避免与默认的 `/external:W3` 冲突产生 `D9025`。
70
-
71
- ### 变更
72
-
73
- - **package.json**
74
- - `bin` 改为对象形式 `{ "nodejs-mobile-gyp": "./bin/node-gyp.js" }`,与上游命令名保持一致,避免与 `node-gyp` 包混淆。
75
- - `engines.node` 提升到匹配依赖链(`make-fetch-happen`、`nopt`、`proc-log`、`which` 等)的最低版本要求。
76
- - **README.md**:CLI 调用命令修正为 `npx @flun/nodejs-mobile-gyp`;补充 Node 版本要求;移除对内部 `Gyp` API 的示例承诺。
77
-
78
- ### 验证
79
-
80
- - 在 Windows + VS2026 BuildTools + Python 3.14 + Node 26.8.1 环境下,`configure` + `build` 全流程通过,0 warning / 0 error。
81
- - 生成的 `.node` 可被 Node 正常 `require()` 加载并调用。
15
+ - **action 目标的路径分隔符**:`make.py` 中 `self.output` 由 `ComputeOutput` 产出,Windows 上带反斜杠(如
16
+ `$(obj).target\../node-addon-api\foo.stamp`),导致 `sh` 把 `\.` 当转义、目录不存在;现统一转正斜杠;非 Windows 平台为 no-op;
package/LICENSE CHANGED
@@ -1,12 +1,17 @@
1
1
  ISC 许可证 (ISC License)
2
2
 
3
- 版权所有 (c) 2026, flun <open@flun.top>
3
+ Copyright (c) 2026, flun <open@flun.top>
4
4
 
5
- 特此免费授予任何获得本软件及相关文档文件(“软件”)副本的人,不受限制地处理本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件副本的权利,并允许向其提供本软件的人这样做,但须满足以下条件:
5
+ 特此免费授予任何获得本软件及相关文档文件("软件")副本的人,不受限制地处理本软件的权利,
6
+ 包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件副本的权利,
7
+ 并允许向其提供本软件的人这样做,但须满足以下条件:
6
8
 
7
9
  上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中;
8
10
 
9
- 本软件按“原样”提供,不作任何形式的明示或暗示的保证,包括但不限于适销性、特定用途的适用性和不侵权的保证;在任何情况下,作者或版权持有人均不对因本软件或本软件的使用或其他交易而产生的任何索赔、损害或其他责任负责,无论是合同之诉、侵权之诉还是其他行为之诉;
11
+ 本软件按"原样"提供,不作任何形式的明示或暗示的保证,
12
+ 包括但不限于适销性、特定用途的适用性和不侵权的保证;
13
+ 在任何情况下,作者或版权持有人均不对因本软件或本软件的使用或其它交易而产生的
14
+ 任何索赔、损害或其它责任负责,无论是合同之诉、侵权之诉还是其它行为之诉;
10
15
 
11
16
  ---
12
17
 
@@ -26,4 +31,4 @@ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
26
31
  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
27
32
  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
28
33
  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
29
- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
34
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.