diff --git a/src/content/posts/2024-01/wyj_17999824_02.md b/src/content/posts/2024-01/wyj_17999824_02.md index 5c7a5cbff533b49b82d99f4c96cc980eabfe4674..230a5ecd5c52f0c88e43383f5b0076d902855649 100644 --- a/src/content/posts/2024-01/wyj_17999824_02.md +++ b/src/content/posts/2024-01/wyj_17999824_02.md @@ -112,17 +112,17 @@ mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dver 在使用 `protoc --version` 时,打印出来的信息,都是类似于:`libprotoc 25.4` 的,它不带有前面的 `3`,所以此命令打印出来的,都是 `b.c` 的格式。至于 `a`,可以在其[官网](https://central.sonatype.com/artifact/com.google.protobuf/protobuf-java/versions)上查到: -![](./resources/版本说明.png) +![](./imgs/wyj_17999824_02/版本说明.png) 可以看到,`3.25.4` 是 `a=3` 的最后一个版本,而对于 `a=4`,后续的一个插件是暂不支持的,下图是该插件`(protoc-jar)`的[官方 issues](https://github.com/os72/protoc-jar/issues/106): -![](./resources/issue.png) +![](./imgs/wyj_17999824_02/issue.png) 而 3.25.4 可行的理由是: 1. 原先的 3.23.4 版本,目前来看无法直接编译,会遇到两个问题,其中一个,是因为其的依赖:`abseil-cpp` 的版本**过高**。目前知道,3.23.4 是 23 年 7 月发布的,`abseil-cpp` 23 年 1 月 lts 的版本就已经过高了。同时,官方也有人提出此问题,但得到的答复是,`用最新的protobuf不就好啦?` 2. 3.25.4 是较新的,且 Google 官方说它们的程序具有兼容性。 - ![](./resources/后向兼容.png) + ![](./imgs/wyj_17999824_02/后向兼容.png) 3. 最开始,我想着能编译最新版,就直接用最新版,所以我编译的是 `protoc 3.27.3`,编译成功了,但因为 `a应该是4`,但命名是 `a=3` 导致后续下载某资源时报错。 4. 我将 `27.3` 的 `a` 改为 `a=4`,但遇到了上面的`protobuf4不支持`问题。 @@ -200,7 +200,7 @@ vi buildscripts/kokoro/linux_artifacts.sh SKIP_TESTS=true ARCH=risv64 /grpc-java/buildscripts/kokoro/unix.sh ``` -![](./resources/linux-architects修改.png) +![](./imgs/wyj_17999824_02/linux-architects修改.png) #### 3- buildscripts/kokoro/unix.sh @@ -224,10 +224,10 @@ vi buildscripts/kokoro/unix.sh 修改 1 的内容为: -![](./resources/unix修改1.png) +![](./imgs/wyj_17999824_02/unix修改1.png) 修改 2 的内容为: -![](./resources/unix修改2.png) +![](./imgs/wyj_17999824_02/unix修改2.png) #### 4- buildscripts/kokoro/upload_artifacts.sh @@ -240,7 +240,7 @@ vi buildscripts/kokoro/upload_artifacts.sh [[ "$(find "$LOCAL_MVN_ARTIFACTS" -type f -iname 'protoc-gen-grpc-java-*-linux-riscv64.exe' | wc -l)" != '0' ]] ``` -![](./resources/upload修改.png) +![](./imgs/wyj_17999824_02/upload修改.png) #### 5- buildscripts/make_dependencies.sh @@ -269,10 +269,10 @@ INSTALL_DIR="/var/tmp/protobuf-cache/$PROTOBUF_VERSION/$(uname -s)-$ARCH" ``` 修改 2 的内容为: -![](./resources/depend修改2.png) +![](./imgs/wyj_17999824_02/depend修改2.png) 修改 3 的内容为: -![](./resources/depend修改3.png) +![](./imgs/wyj_17999824_02/depend修改3.png) #### 6- compiler/build.gradle @@ -300,13 +300,13 @@ cppCompiler.args "--std=c++20" ``` 修改 1 的内容为: -![](./resources/compiler修改1.png) +![](./imgs/wyj_17999824_02/compiler修改1.png) 修改 2 的内容为: -![](./resources/compiler修改2.png) +![](./imgs/wyj_17999824_02/compiler修改2.png) 修改 3 的内容为: -![](./resources/compiler修改3.png) +![](./imgs/wyj_17999824_02/compiler修改3.png) #### 7- compiler/check-artifact.sh @@ -328,10 +328,10 @@ vi compiler/check-artifact.sh ``` 修改 1 的内容为: -![](./resources/check修改1.png) +![](./imgs/wyj_17999824_02/check修改1.png) 修改 2 的内容为: -![](./resources/check修改2.png) +![](./imgs/wyj_17999824_02/check修改2.png) ### iii. 再次准备 protobuf @@ -375,7 +375,7 @@ mvn install:install-file -DgroupId=io.grpc -DartifactId=protoc-gen-grpc-java -Dv 如果不进行修改,会报错: -![](./resources/Spark编译报错.png) +![](./imgs/wyj_17999824_02/Spark编译报错.png) 经过排查,问题出现在 Spark 源码目录的 connector 目录下。具体出错位置为:`spark-3.5.1/connector/connect/common/pom.xml`。可以调用下面脚本找到: @@ -540,7 +540,7 @@ dev/make-distribution.sh --name riscv64 --tgz -Pyarn,hive,hive-thriftserver,spar 以下是适用我的情况的,最优编译命令: ```bash -nohup dev/make-distribution.sh --name riscv64 --tgz -Pyarn,hive,hive-thriftserver,sparkr -DskipTests -Dmaven.compiler.optimize=false -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dmaven.scaladoc.skip=true -T 32 >>build.log & +nohup dev/make-distribution.sh --name riscv64 --tgz -Pyarn,hive,hive-thriftserver,sparkr -DskipTests -Dmaven.compiler.optimize=false -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dmaven.scaladoc.skip=true -T 32 > build.log & ``` **注[1]**:运行我的命令后,请记一下进程的 id 号,后续如果发生登出操作,需要此 id 号来判断是否流程进行完毕。