gravitino icon indicating copy to clipboard operation
gravitino copied to clipboard

[#5743] refactor: use gradle plugin to build rust sub-project

Open LindaSummer opened this issue 9 months ago • 10 comments

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.

LindaSummer avatar Mar 23 '25 10:03 LindaSummer

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

LindaSummer avatar Mar 24 '25 11:03 LindaSummer

@diqiu50 Please take some time on this issue.

yuqi1129 avatar Mar 26 '25 01:03 yuqi1129

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

LindaSummer avatar Mar 26 '25 13:03 LindaSummer

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

  1. It is not correct. I think the check task should run before the build task.
  2. 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

diqiu50 avatar Mar 27 '25 06:03 diqiu50

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

  1. It is not correct. I think the check task should run before the build task.

  2. 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

LindaSummer avatar Mar 27 '25 06:03 LindaSummer

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

LindaSummer avatar Mar 27 '25 15:03 LindaSummer

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

diqiu50 avatar Mar 28 '25 03:03 diqiu50

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

LindaSummer avatar Mar 28 '25 06:03 LindaSummer

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! 😊

  1. ./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
  1. ./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
  1. ./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
  1. ./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

LindaSummer avatar Mar 30 '25 13:03 LindaSummer

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

LindaSummer avatar Apr 03 '25 03:04 LindaSummer