From 7d2aac91ed5d414fb409660a7149f1fd55ba3598 Mon Sep 17 00:00:00 2001 From: msojocs Date: Sat, 29 Jan 2022 15:28:34 +0800 Subject: [PATCH] fix(node modules): spdlog watchdog --- .github/workflows/release.yml | 9 ++++++++- .gitignore | 1 + bin/wechat-devtools-test | 28 +++++++++++++--------------- docker-compose.yml | 1 + docker/entrypoint | 11 ++++++++++- readme.md | 14 +++++++------- test/fix-watchdog | 11 +++++++++++ test/test | 12 +++--------- test/test1 | 6 ------ tools/rebuild-node-modules | 8 +++++--- 10 files changed, 59 insertions(+), 42 deletions(-) create mode 100644 test/fix-watchdog delete mode 100644 test/test1 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e135d7a..6e72a1a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -54,8 +54,15 @@ jobs: name: 'release-${{ github.ref_name }}' - name: Release - uses: fnkr/github-action-ghr@v1 + uses: Wandalen/wretry.action@v1.0.11 if: startsWith(github.ref, 'refs/tags/') + with: + action: fnkr/github-action-ghr@v1 + with: | + node-version: 14.x + architecture: x64 + attempt_limit: 3 + attempt_delay: 2000 env: GHR_COMPRESS: xz GHR_PATH: /github/workspace diff --git a/.gitignore b/.gitignore index 1297eea..721b1bd 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ tmp/ mew/ node_modules test/mini-ci +crash-server \ No newline at end of file diff --git a/bin/wechat-devtools-test b/bin/wechat-devtools-test index 431ad38..2578d2f 100644 --- a/bin/wechat-devtools-test +++ b/bin/wechat-devtools-test @@ -1,27 +1,25 @@ #!/bin/bash -SOURCE="${BASH_SOURCE[0]}" -while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink - DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )" - SOURCE="$(readlink "$SOURCE")" - [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located -done -DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )" +root_dir=$(cd `dirname $0`/.. && pwd -P) -cd $DIR/.. - -export WECHAT_DEVTOOLS_DIR="$DIR/../nwjs" +export WECHAT_DEVTOOLS_DIR="$root_dir/nwjs" export APPDATA="$( echo ~ )/.config/wechat_devtools" -export PATH="$DIR/../wine:$DIR/../node/bin:$DIR/../nwjs:$PATH" +export PATH="$root_dir/wine:$root_dir/node/bin:$root_dir/nwjs:$PATH" # LANG=zh_CN.UTF-8 exec "$DIR"/../nwjs/nw --load-extension="$DIR"/../nwjs/package.nw/js/ideplugin "$@" -EXTENSION1="--load-extension=$DIR/../nwjs/package.nw/js/ideplugin" +EXTENSION1="--load-extension=$root_dir/nwjs/package.nw/js/ideplugin" EXTENSION2="--load-extension=$( echo ~ )/.config/wechat_devtools/WeappPlugin" # 调试器AppData与Storage可用 -INSPECTOR1="--custom-devtools-frontend=$DIR/../nwjs/package.nw/js/ideplugin/inspector" -INSPECTOR2="--custom-devtools-frontend=$( echo ~ )/.config/wechat_devtools/WeappPlugin/inspector" +INSPECTOR1="--custom-devtools-frontend=file://$root_dir/package.nw/js/ideplugin/inspector" # 要加file://指明为本地文件路径 +INSPECTOR2="--custom-devtools-frontend=file://$( echo ~ )/.config/wechat_devtools/WeappPlugin/inspector/" USERDATADIR="$( echo ~ )/.config/wechat_devtools" # "$@"参数 LANG=zh_CN.UTF-8 -exec "$DIR"/../nwjs/nw $DIR/../package.nw $EXTENSION2 $INSPECTOR2 --user-data-dir=tmp/data "$@" \ No newline at end of file +"$root_dir/nwjs/nw" $root_dir/package.nw $EXTENSION2 $INSPECTOR2 --crash --crash-dumps-dir=/mnt/disk1/GitHub/wechat-devtools/tmp --remote-debugging-port=9999 "$@" + +# https://crashpad.chromium.org/doxygen/classcrashpad_1_1InitialClientData.html#details +# "$root_dir/nwjs/nw" --type=crashpad-handler "--user-data-dir=$USERDATADIR" /prefetch:7 --monitor-self --monitor-self-argument=--type=crashpad-handler "--monitor-self-argument=--user-data-dir=$USERDATADIR" --monitor-self-argument=/prefetch:7 --monitor-self-annotation=ptype=crashpad-handler "--database=$USERDATADIR/Crashpad" "--metrics-dir=$USERDATADIR" --annotation=plat=Linux --annotation=prod=微信开发者工具 --annotation=ver=1.05.2201240 --initial-client-data=0x220,0x224,0x228,0x1fc,0x22c,0x7ffae66ebeb8,0x7ffae66ebec8,0x7ffae66ebed8 & + + +# "$root_dir/nwjs/nw" --type=crashpad-handler "--user-data-dir=$USERDATADIR" /prefetch:7 --no-periodic-tasks --monitor-self-annotation=ptype=crashpad-handler "--database=$USERDATADIR/Crashpad" --annotation=plat=Linux --annotation=prod=微信开发者工具 --annotation=ver=1.05.2201240 --initial-client-data=0x1b0,0x1b4,0x1b8,0x188,0x1c0,0x7ff67c6f8e50,0x7ff67c6f8e60,0x7ff67c6f8e70 & diff --git a/docker-compose.yml b/docker-compose.yml index cd303aa..500157e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,6 +4,7 @@ services: image: node:16.13.1 volumes: - .:/workspace + - ./cache/.npm:/root/.npm environment: - ACTION=${ACTION_MODE:-false} - https_proxy=${https_proxy:-} diff --git a/docker/entrypoint b/docker/entrypoint index 794c714..f77f107 100644 --- a/docker/entrypoint +++ b/docker/entrypoint @@ -22,11 +22,21 @@ fail() { echo "start" python --version node --version +# export http_proxy="http://192.168.249.236:7890" ACTION_MODE=$( export ACTION_MODE ) if [ $ACTION_MODE!='true' ]; then npm set registry https://r.npm.taobao.org # 注册模块镜像 npm set disturl https://npm.taobao.org/dist # node-gyp 编译依赖的 node 源码镜像 + ## 以下选择添加 + npm set sass_binary_site https://npm.taobao.org/mirrors/node-sass # node-sass 二进制包镜像 + npm set electron_mirror https://npm.taobao.org/mirrors/electron/ # electron 二进制包镜像 + npm set puppeteer_download_host https://npm.taobao.org/mirrors # puppeteer 二进制包镜像 + npm set chromedriver_cdnurl https://npm.taobao.org/mirrors/chromedriver # chromedriver 二进制包镜像 + npm set operadriver_cdnurl https://npm.taobao.org/mirrors/operadriver # operadriver 二进制包镜像 + npm set phantomjs_cdnurl https://npm.taobao.org/mirrors/phantomjs # phantomjs 二进制包镜像 + npm set selenium_cdnurl https://npm.taobao.org/mirrors/selenium # selenium 二进制包镜像 + npm set node_inspector_cdnurl https://npm.taobao.org/mirrors/node-inspector # node-inspector 二进制包镜像 npm cache clean --force # 清空缓存 echo "\ deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free\ @@ -60,5 +70,4 @@ node-gyp list # end test cd /workspace -# export https_proxy="http://192.168.249.236:7890" exec ./tools/setup-wechat-devtools-bash diff --git a/readme.md b/readme.md index a70515d..ef85735 100644 --- a/readme.md +++ b/readme.md @@ -14,7 +14,7 @@ # 使用方法 -可以在本项目的[发布](https://github.com/dragonation/wechat-devtools/releases)中,寻找已经构筑好了的`.tar.gz`包(发布里也有度盘链接),下载解压后,运行其中的`bin/wechat-devtools`即可运行。 +可以在本项目的[发布](https://github.com/jiyeme/wechat-devtools/releases)中,寻找已经构筑好了的`.tar.gz`包(发布里也有度盘链接),下载解压后,运行其中的`bin/wechat-devtools`即可运行。 注:gitee上原来我也想放发布包的,但是文件太大了,附件最大只允许100M,而且总体积不能超过1G。所以目前暂时先只放github,如果大家发现下载速度慢的话,可以考虑科学上网或者度盘链接,速度快也稳定上传和下载。 @@ -44,6 +44,8 @@ Docker容器启动方法 # 构筑方法0(推荐,支持断点续传) +理论上此方法99%成功;在网络不稳定时容易失败(原因懂得都懂) + 1. 请先在Linux环境中自行安装`wine`和`wine-binfmt`; 2. 请安装`docker` `docker-compose` 3. 克隆本项目: @@ -63,6 +65,8 @@ docker-compose up # 构筑方法1(支持断点续传) +由于使用到`node-gyp`,此方法会受`python`、`node`版本影响出现一些难以预料的异常(比如使用`node15.0.1`时,大部分模块构建会被忽略,但没有任何报错信息)。但是,`Docker`构建方式会帮你处理好这些问题。 + 1. 请先在Linux环境中自行安装`wine`和`wine-binfmt`; 2. 请安装nodejs,并配置到PATH环境变量中; 3. 克隆本项目: @@ -73,10 +77,6 @@ git clone https://github.com/jiyeme/wechat-devtools.git ``` ./tools/setup-wechat-devtools-bash ``` -或者 -``` -./tools/setup-wechat-devtools-node -``` 5. 在本地项目目录中执行如下的语句,可以安装应用图标(非必须): ``` ./tools/install-desktop-icon-node @@ -84,7 +84,7 @@ git clone https://github.com/jiyeme/wechat-devtools.git 之后即可通过点击应用图标启动微信开发者工具,也可以运行`bin/wechat-devtools`通过命令行启动 -# 构筑方法2 +# 构筑方法2 (不再维护,未来将被移除) 1. 请先在Linux环境中自行安装`wine`和`wine-binfmt`; 2. 请到[Mewchan第三方仓库](https://github.com/wangjunjie1996/-.git)上下载最新的运行时, @@ -119,7 +119,7 @@ git clone https://github.com/jiyeme/wechat-devtools.git # 后续计划 1. 增加Docker镜像的稳定性(对Host要求比较高) -2. 将`rebuild-node-modules`工具也改为`mew_js`代码 +2. [处理计划](https://github.com/jiyeme/wechat-devtools/projects?type=beta) # FAQ [GO](docs/FAQ.MD) diff --git a/test/fix-watchdog b/test/fix-watchdog new file mode 100644 index 0000000..fb65b89 --- /dev/null +++ b/test/fix-watchdog @@ -0,0 +1,11 @@ +#!/bin/bash + +root_dir=$(cd `dirname $0`/.. && pwd -P) +export PATH="$root_dir/node/bin:$PATH" + +cd "$root_dir/tmp" +mkdir node_test +cd node_test +npm install native-watchdog --save +rm -rf "$root_dir/package.nw/node_modules/native-watchdog" +cp -f "$root_dir/node_modules/native-watchdog" "$root_dir/package.nw/node_modules" diff --git a/test/test b/test/test index cb02bff..262c64c 100644 --- a/test/test +++ b/test/test @@ -1,11 +1,5 @@ #!/usr/bin/env node -console.log("12312") -// console.log(process.platform); // linux -// const cmdPaths = []; -// cmdPaths.push("/System/Applications/Utilities/Terminal.app", -// "/Applications/Utilities/Terminal.app" -// ) - -// console.log(cmdPaths); -console.log(process.env.comspec) +const sl = require("spdlog") +console.log(sl) +// sl.setAsyncMode(5000, 1000); diff --git a/test/test1 b/test/test1 deleted file mode 100644 index 0971dd0..0000000 --- a/test/test1 +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -root_dir=$(cd `dirname $0`/.. && pwd -P) -export comspec="/bin/bash" -echo "test" -exec $root_dir/test/test \ No newline at end of file diff --git a/tools/rebuild-node-modules b/tools/rebuild-node-modules index 34a05e3..7b20307 100755 --- a/tools/rebuild-node-modules +++ b/tools/rebuild-node-modules @@ -32,6 +32,7 @@ cp -fr "${package_dir}/node_modules" "${package_dir}/node_modules_tmp/node_modul rm -fr "${package_dir}/node_modules_tmp/node_modules/node-pty-node" rm -fr "${package_dir}/node_modules_tmp/node_modules/oniguruma-node" +rm -fr "${package_dir}/node_modules_tmp/node_modules/spdlog" rm -fr "${package_dir}/node_modules_tmp/node_modules/spdlog-node" # npm install @vscode/ripgrep --registry=https://registry.npm.taobao.org @@ -39,15 +40,13 @@ rm -fr "${package_dir}/node_modules_tmp/node_modules/spdlog-node" (cd "${package_dir}/node_modules_tmp" && npm install \ extract-file-icon \ native-keymap \ - native-watchdog \ node-pty \ oniguruma \ - spdlog \ + spdlog@0.11.1 \ trash \ vscode-oniguruma \ vscode-ripgrep \ nodegit \ - --registry=https://registry.npm.taobao.org \ --nodegit_binary_host_mirror=https://npm.taobao.org/mirrors/nodegit/v0.27.0/) # reinstall modules (cp -fr "${package_dir}/node_modules_tmp/node_modules/node-pty" "${package_dir}/node_modules_tmp/node_modules/node-pty-node") @@ -59,6 +58,9 @@ rm -fr "${package_dir}/node_modules_tmp/node_modules/spdlog-node" mkdir -p "${package_dir}/node_modules/vscode-ripgrep/bin" cp -fr "${package_dir}/node_modules_tmp/node_modules/vscode-ripgrep/bin/rg" "${package_dir}/node_modules/vscode-ripgrep/bin/rg" +cd "${package_dir}/node_modules_tmp" && npm install native-watchdog --save +rm -rf "${package_dir}/node_modules/native-watchdog" && cp -fr "${package_dir}/node_modules_tmp/node_modules/native-watchdog" "${package_dir}/node_modules" + rm -rf "${package_dir}/node_modules_tmp" # 移除旧配置