I want build a hello-world kotlin, but failed. The error msg:
D:\repo (HEAD)> buck2 log what-failed
Showing commands from: "D:\\bin\\buck2.exe" build //buck-hello/kotlin:hello
build root//buck-hello/kotlin:hello_lib (prelude//platforms:default#97667764a66ee3d4) (kotlincd_jar) local env --chdir="$(buck2 root --kind project)" -- "TEMP=D:\\repo\\buck-out\\v2\\tmp\\root\\0fb9d7d3017e3330\\kotlincd_jar" "TMP=D:\\repo\\buck-out\\v2\\tmp\\root\\0fb9d7d3017e3330\\kotlincd_jar" "BUCK_CLASSPATH=buck-out\\v2\\gen\\prelude\\97667764a66ee3d4\\toolchains\\android\\src\\com\\facebook\\buck\\jvm\\kotlin\\cd\\workertool\\__kotlincd_tool__\\kotlincd_tool.jar" "BUCK_SCRATCH_PATH=buck-out\\v2\\tmp\\root\\0fb9d7d3017e3330\\kotlincd_jar" 'JAVACD_ABSOLUTE_PATHS_ARE_RELATIVE_TO_CWD=1' 'BUCK2_DAEMON_UUID=ee027bd7-52a3-4370-9ca1-cdae13bce432' 'BUCK_BUILD_ID=b06e3abc-0820-44af-b5a4-2128e9de2edf' C:/Users/huhua/AppData/Local/mise/installs/java/21.0.2/bin/java -XX:-MaxFDLimit '--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED' -cp "buck-out\\v2\\gen\\prelude\\97667764a66ee3d4\\toolchains\\android\\src\\com\\facebook\\buck\\jvm\\kotlin\\cd\\workertool\\__kotlincd_tool__\\kotlincd_tool.jar" -jar "buck-out\\v2\\gen\\prelude\\97667764a66ee3d4\\toolchains\\android\\src\\com\\facebook\\buck\\cli\\bootstrapper\\__bootstrapper__\\bootstrapper.jar" com.facebook.buck.jvm.kotlin.cd.workertool.KotlinCDMain --action-id root//buck-hello/kotlin:hello_lib --command-file "buck-out\\v2\\gen\\root\\97667764a66ee3d4\\buck-hello\\kotlin\\__hello_lib__\\jar_command.proto.json"
And my bzl:
kotlin_library(
name = "hello_lib",
srcs = glob(["*.kt"])
)
java_binary(
name="hello",
main_class = "HelloKt",
deps = [
":hello_lib"
]
)
toolchain:
load("@prelude//toolchains:demo.bzl", "system_demo_toolchains")
# All the default toolchains, suitable for a quick demo or early prototyping.
# Most real projects should copy/paste the implementation to configure them.
system_demo_toolchains()
.buckconfig.local
[java]
java_home = C:/Users/xxx/some_installed/java/21.0.2
After some check, I found that it use -cp "buck-out\\v2\\gen\\prelude\\97667764a66ee3d4\\toolchains\\android\\src\\com\\facebook\\buck\\jvm\\kotlin\\cd\\workertool\\__kotlincd_tool__\\kotlincd_tool.jar" with main class: com.facebook.buck.jvm.kotlin.cd.workertool.KotlinCDMain
But com.facebook.buck.jvm.kotlin.cd.workertool.KotlinCDMain is in kotilncd_tool-main.jar not kotlincd_tool.jar, prelude/toolchains/android/src/com/facebook/buck/jvm/toolchain/cd/worktool/BUCK:
buck_java_binary(
name = "kotlincd_tool-main",
main_class = "com.facebook.buck.jvm.kotlin.cd.workertool.KotlinCDMain",
visibility = [
"PUBLIC",
],
deps = [
":main_lib",
],
)
buck_java_binary(
name = "kotlincd_tool",
main_class = "com.facebook.buck.jvm.kotlin.cd.workertool.KotlinCDGrpcWorkerToolMain",
visibility = [
"PUBLIC",
],
deps = [
":grpc_worker_tool_lib",
],
)
And prelude/toolchains/kotlin.bzl:
def kotlincd_toolchain(
name,
visibility = None):
_kotlin_toolchain_rule(
name = name,
annotation_processing_jar = "prelude//toolchains/android/third-party:kotlin-annotation-processing-embeddable",
class_loader_bootstrapper = "prelude//toolchains/android/src/com/facebook/buck/cli/bootstrapper:bootstrapper",
compile_kotlin = "prelude//kotlin/tools/compile_kotlin:compile_kotlin",
dep_files = "none",
kapt_base64_encoder = "prelude//kotlin/tools/kapt_base64_encoder:kapt_base64_encoder",
kotlin_stdlib = "prelude//toolchains/android/third-party:kotlin-stdlib",
kotlin_version = "2.0.0",
kotlin_home_libraries = [
"prelude//toolchains/android/third-party:kotlin-annotations",
"prelude//toolchains/android/third-party:kotlin-build-tools-impl",
"prelude//toolchains/android/third-party:kotlin-daemon-client",
"prelude//toolchains/android/third-party:kotlin-compiler-embeddable",
"prelude//toolchains/android/third-party:kotlin-reflect",
"prelude//toolchains/android/third-party:kotlin-script-runtime",
"prelude//toolchains/android/third-party:kotlin-stdlib",
"prelude//toolchains/android/third-party:trove",
"prelude//toolchains/android/third-party:kotlinx-coroutines-core-jvm",
],
kotlinc = "prelude//toolchains/android/third-party:kotlin-compiler-binary",
kotlincd = "prelude//toolchains/android/src/com/facebook/buck/jvm/kotlin/cd/workertool:kotlincd_tool",
kotlinc_protocol = "kotlincd",
kotlincd_main_class = "com.facebook.buck.jvm.kotlin.cd.workertool.KotlinCDMain",
visibility = visibility,
)
It used kotlincd = "prelude//toolchains/android/src/com/facebook/buck/jvm/kotlin/cd/workertool:kotlincd_tool", with main kotlincd_main_class = "com.facebook.buck.jvm.kotlin.cd.workertool.KotlinCDMain", seems like mismatch.
So how can I fix the error...
I want build a
hello-worldkotlin, but failed. The error msg:And my
bzl:toolchain:
.buckconfig.local
After some check, I found that it use
-cp "buck-out\\v2\\gen\\prelude\\97667764a66ee3d4\\toolchains\\android\\src\\com\\facebook\\buck\\jvm\\kotlin\\cd\\workertool\\__kotlincd_tool__\\kotlincd_tool.jar"with main class:com.facebook.buck.jvm.kotlin.cd.workertool.KotlinCDMainBut
com.facebook.buck.jvm.kotlin.cd.workertool.KotlinCDMainis inkotilncd_tool-main.jarnotkotlincd_tool.jar,prelude/toolchains/android/src/com/facebook/buck/jvm/toolchain/cd/worktool/BUCK:And
prelude/toolchains/kotlin.bzl:It used
kotlincd = "prelude//toolchains/android/src/com/facebook/buck/jvm/kotlin/cd/workertool:kotlincd_tool",with mainkotlincd_main_class = "com.facebook.buck.jvm.kotlin.cd.workertool.KotlinCDMain",seems like mismatch.So how can I fix the error...