[#5743] refactor: use gradle plugin to build rust sub-project
What changes were proposed in this pull request?
Refer to #5743 , we need a more gradle native way to build the rust fuse-filesystem subproject.
In this PR, I use plugin io.github.liurenjie1024.gradle.rust as the gradle rust plugin.
Why are the changes needed?
Close: #5743
Does this PR introduce any user-facing change?
None
How was this patch tested?
It has been passed CI checks in my own GitHub Actions with no other configuration changed except the subproject's gradle config file.
Comment
The check step which leveraging some tools installed by cargo but can't be directly invoked by cargo command seems hard to migrate to gradle plugin.
So, I kept these checking steps.
The build, test and doc tasks are migrated to the new plugin.
Hi @xunliu , @yuqi1129 ,
Sorry to bother you for my delay of this issue. 😊 I'm not so familiar with gradle so I took some time to learn about it.
Please help take a look and let me know if there is anything need to be improved.
Best Regards, Edward
@diqiu50 Please take some time on this issue.
Basically, there are no issues. Please check whether this plugin has a function to verify if Rust is installed. If not, check whether the error message is acceptable.
Hi @diqiu50 ,
I have checked the logic of this plugin, it assumes the cargo command provided to the plugin is available.
So, it doesn't validate the cargo command.
To keep same behavior as previous configuration, I make all tasks depend on checkRustEnvironment task. 😊
Best Regards, Edward
There are some problems on run the command of ./gradlew :clients:filesystem-fuse:build -PenableFuse=true
The task sequence are:
Task :clients:filesystem-fuse:checkRustEnvironment --> Task :clients:filesystem-fuse:cargoBuild -->Task :clients:filesystem-fuse:checkRustProject
- It is not correct. I think the check task should run before the build task.
- The test task is missing.
Please confirm behaviours of commands: ./gradlew :clients:filesystem-fuse:build -PenableFuse=true -x test ./gradlew :clients:filesystem-fuse:test -PenableFuse=true ./gradlew :clients:filesystem-fuse:check -PenableFuse=true ./gradlew :clients:filesystem-fuse:clean -PenableFuse=true
There are some problems on run the command of
./gradlew :clients:filesystem-fuse:build -PenableFuse=trueThe task sequence are:
Task :clients:filesystem-fuse:checkRustEnvironment --> Task :clients:filesystem-fuse:cargoBuild -->Task :clients:filesystem-fuse:checkRustProject
It is not correct. I think the check task should run before the build task.
The test task is missing.
Please confirm behaviours of commands:
./gradlew :clients:filesystem-fuse:build -PenableFuse=true -x test
./gradlew :clients:filesystem-fuse:test -PenableFuse=true
./gradlew :clients:filesystem-fuse:check -PenableFuse=true
./gradlew :clients:filesystem-fuse:clean -PenableFuse=true
Hi @diqiu50 ,
Thanks very much for your kind correction!❤️
I will check the task dependency sequence and update it today.
Best Regards, Edward
Hi @diqiu50 ,
Thanks for your kind review! 😊
I have update the dependency of tasks and make build, test and doc all depends on checkRustProject task.
Please let me know if there is anything need to be improved.
Best Regards, Edward
You can use the --dry-run parameter to determine which tasks will run: ./gradlew :clients:filesystem-fuse:build -PenableFuse=true --dry-run
You can compare the task order before you changed. main branch:
:spotlessInternalRegisterDependencies SKIPPED
:clients:filesystem-fuse:spotlessJava SKIPPED
:clients:filesystem-fuse:spotlessJavaCheck SKIPPED
:clients:filesystem-fuse:spotlessKotlinGradle SKIPPED
:clients:filesystem-fuse:spotlessKotlinGradleCheck SKIPPED
:clients:filesystem-fuse:spotlessCheck SKIPPED
:clients:filesystem-fuse:compileJava SKIPPED
:clients:filesystem-fuse:processResources SKIPPED
:clients:filesystem-fuse:classes SKIPPED
:clients:filesystem-fuse:jar SKIPPED
:clients:filesystem-fuse:assemble SKIPPED
:clients:filesystem-fuse:checkRustEnvironment SKIPPED
:clients:filesystem-fuse:checkRustProject SKIPPED
:clients:filesystem-fuse:testRustProject SKIPPED
:clients:filesystem-fuse:buildRustProject SKIPPED
:clients:filesystem-fuse:check SKIPPED
:clients:filesystem-fuse:build SKIPPED
Your branch:
:spotlessInternalRegisterDependencies SKIPPED
:clients:filesystem-fuse:spotlessJava SKIPPED
:clients:filesystem-fuse:spotlessJavaCheck SKIPPED
:clients:filesystem-fuse:spotlessKotlinGradle SKIPPED
:clients:filesystem-fuse:spotlessKotlinGradleCheck SKIPPED
:clients:filesystem-fuse:spotlessCheck SKIPPED
:clients:filesystem-fuse:compileJava SKIPPED
:clients:filesystem-fuse:processResources SKIPPED
:clients:filesystem-fuse:classes SKIPPED
:clients:filesystem-fuse:jar SKIPPED
:clients:filesystem-fuse:assemble SKIPPED
:clients:filesystem-fuse:checkRustEnvironment SKIPPED
:clients:filesystem-fuse:checkRustProject SKIPPED
:clients:filesystem-fuse:cargoBuild SKIPPED
:clients:filesystem-fuse:check SKIPPED
:clients:filesystem-fuse:build SKIPPED
Hi @diqiu50 ,
Thanks a lot for your guidance! 😊
It will be very efficient to check the behavior. I will try to keep the behaviors between main and this PR with same logic today.
Best Regards, Edward
Hi @diqiu50 ,
Sorry for delay update due to some personal circumstances.
I have updated the dependencies of tasks and test it with the provided command.
Here are outputs of commands. Please help take a review.
Thanks very much for your kind help! 😊
./gradlew :clients:filesystem-fuse:build -PenableFuse=true --dry-run
main:
:spotlessInternalRegisterDependencies SKIPPED
:clients:filesystem-fuse:spotlessJava SKIPPED
:clients:filesystem-fuse:spotlessJavaCheck SKIPPED
:clients:filesystem-fuse:spotlessKotlinGradle SKIPPED
:clients:filesystem-fuse:spotlessKotlinGradleCheck SKIPPED
:clients:filesystem-fuse:spotlessCheck SKIPPED
:clients:filesystem-fuse:compileJava SKIPPED
:clients:filesystem-fuse:processResources SKIPPED
:clients:filesystem-fuse:classes SKIPPED
:clients:filesystem-fuse:jar SKIPPED
:clients:filesystem-fuse:assemble SKIPPED
:clients:filesystem-fuse:checkRustEnvironment SKIPPED
:clients:filesystem-fuse:checkRustProject SKIPPED
:clients:filesystem-fuse:testRustProject SKIPPED
:clients:filesystem-fuse:buildRustProject SKIPPED
:clients:filesystem-fuse:check SKIPPED
:clients:filesystem-fuse:build SKIPPED
---
PR:
:spotlessInternalRegisterDependencies SKIPPED
:clients:filesystem-fuse:spotlessJava SKIPPED
:clients:filesystem-fuse:spotlessJavaCheck SKIPPED
:clients:filesystem-fuse:spotlessKotlinGradle SKIPPED
:clients:filesystem-fuse:spotlessKotlinGradleCheck SKIPPED
:clients:filesystem-fuse:spotlessCheck SKIPPED
:clients:filesystem-fuse:compileJava SKIPPED
:clients:filesystem-fuse:processResources SKIPPED
:clients:filesystem-fuse:classes SKIPPED
:clients:filesystem-fuse:jar SKIPPED
:clients:filesystem-fuse:assemble SKIPPED
:clients:filesystem-fuse:checkRustEnvironment SKIPPED
:clients:filesystem-fuse:checkRustProject SKIPPED
:clients:filesystem-fuse:cargoTest SKIPPED
:clients:filesystem-fuse:cargoBuild SKIPPED
:clients:filesystem-fuse:check SKIPPED
:clients:filesystem-fuse:build SKIPPED
./gradlew :clients:filesystem-fuse:check -PenableFuse=true --dry-run
main:
:clients:filesystem-fuse:checkRustEnvironment SKIPPED
:clients:filesystem-fuse:checkRustProject SKIPPED
:spotlessInternalRegisterDependencies SKIPPED
:clients:filesystem-fuse:spotlessJava SKIPPED
:clients:filesystem-fuse:spotlessJavaCheck SKIPPED
:clients:filesystem-fuse:spotlessKotlinGradle SKIPPED
:clients:filesystem-fuse:spotlessKotlinGradleCheck SKIPPED
:clients:filesystem-fuse:spotlessCheck SKIPPED
:clients:filesystem-fuse:check SKIPPED
---
PR:
:clients:filesystem-fuse:checkRustEnvironment SKIPPED
:clients:filesystem-fuse:checkRustProject SKIPPED
:spotlessInternalRegisterDependencies SKIPPED
:clients:filesystem-fuse:spotlessJava SKIPPED
:clients:filesystem-fuse:spotlessJavaCheck SKIPPED
:clients:filesystem-fuse:spotlessKotlinGradle SKIPPED
:clients:filesystem-fuse:spotlessKotlinGradleCheck SKIPPED
:clients:filesystem-fuse:spotlessCheck SKIPPED
:clients:filesystem-fuse:check SKIPPED
./gradlew :clients:filesystem-fuse:test -PenableFuse=true --dry-run
main:
:spotlessInternalRegisterDependencies SKIPPED
:clients:filesystem-fuse:spotlessJava SKIPPED
:clients:filesystem-fuse:spotlessJavaCheck SKIPPED
:clients:filesystem-fuse:spotlessKotlinGradle SKIPPED
:clients:filesystem-fuse:spotlessKotlinGradleCheck SKIPPED
:clients:filesystem-fuse:spotlessCheck SKIPPED
:clients:filesystem-fuse:compileJava SKIPPED
:clients:filesystem-fuse:processResources SKIPPED
:clients:filesystem-fuse:classes SKIPPED
:clients:filesystem-fuse:compileTestJava SKIPPED
:clients:filesystem-fuse:processTestResources SKIPPED
:clients:filesystem-fuse:testClasses SKIPPED
:clients:filesystem-fuse:checkRustEnvironment SKIPPED
:clients:filesystem-fuse:testRustProject SKIPPED
:clients:filesystem-fuse:test SKIPPED
:clients:filesystem-fuse:jacocoTestReport SKIPPED
---
PR:
:clients:filesystem-fuse:checkRustEnvironment SKIPPED
:clients:filesystem-fuse:cargoTest SKIPPED
:spotlessInternalRegisterDependencies SKIPPED
:clients:filesystem-fuse:spotlessJava SKIPPED
:clients:filesystem-fuse:spotlessJavaCheck SKIPPED
:clients:filesystem-fuse:spotlessKotlinGradle SKIPPED
:clients:filesystem-fuse:spotlessKotlinGradleCheck SKIPPED
:clients:filesystem-fuse:spotlessCheck SKIPPED
:clients:filesystem-fuse:compileJava SKIPPED
:clients:filesystem-fuse:processResources SKIPPED
:clients:filesystem-fuse:classes SKIPPED
:clients:filesystem-fuse:compileTestJava SKIPPED
:clients:filesystem-fuse:processTestResources SKIPPED
:clients:filesystem-fuse:testClasses SKIPPED
:clients:filesystem-fuse:test SKIPPED
:clients:filesystem-fuse:jacocoTestReport SKIPPED
./gradlew :clients:filesystem-fuse:clean -PenableFuse=true --dry-run
main:
:clients:filesystem-fuse:checkRustEnvironment SKIPPED
:clients:filesystem-fuse:cleanRustProject SKIPPED
:clients:filesystem-fuse:clean SKIPPED
---
PR:
:clients:filesystem-fuse:checkRustEnvironment SKIPPED
:clients:filesystem-fuse:cargoClean SKIPPED
:clients:filesystem-fuse:clean SKIPPED
Best Regards, Edward
Hi @diqiu50 ,
Sorry to bother you again.😊
Could you help take a review if you don't mind? Please let me know if there's anything need to be improved.😊
Best Regards, Edward