Open mzz2017 opened 4 days ago
Forgive my frankness, but this PR is adding unprecedented complexity to the build. For proprietary builds of various distributions, using CGO is a given fact. This PR wants to cover all possible CGO builds, which doesn't seem very necessary. I think it's unnecessary to make a big fuss over a rare DNS resolution issue; a document explanation or emphasis would suffice.
@douglarek 从用户的角度来说,如果没有安装两个工具,行为是和之前一样的,不是强制的。只是尽量在工具存在的情况下绕过glibc进行静态编译
@douglarek CGO_ENABLED=0 可能会带来其他潜在问题,另外由关闭 cgo 导致的 dns 解析失败的问题很难排查,考虑到用户的环境复杂度,使用 libc 而不是 pure go 实现将问题复杂度从用户转移给更为专业的打包者我认为是可接受的。 欢迎大家进行讨论,特别是用户和打包者等不同角色的参与。
另外由关闭 cgo 导致的 dns 解析失败的问题很难排查
How about outputting whether a cgo is enabled in the version information? like this:
dae version 0.7.0rc1.r5.g64ebfea
go runtime go1.22.4 linux/amd64
CGO: enabled
Copyright (c) 2022-2024 @daeuniverse
License GNU AGPLv3 <https://github.com/daeuniverse/dae/blob/main/LICENSE>
if not:
dae version 0.7.0rc1.r5.g64ebfea
go runtime go1.22.4 linux/amd64
CGO: disabled (perhaps it will cause some dns issues)
Copyright (c) 2022-2024 @daeuniverse
License GNU AGPLv3 <https://github.com/daeuniverse/dae/blob/main/LICENSE>
@douglarek What about the following compromise:
Only statically link in CI/Dockerfile instead of make manually
I think this is quite good; the binary released by the project can make such guarantees. However, when it comes to users compiling on their own, they can decide for themselves. For actual distribution packaging, relying on glibc to enable cgo is a very normal operation(dae-git).
Background
根据 #557 所述,应尽量开启 CGO。对于跨平台移植性,使用 static link 来保证。因此检查 musl-gcc 和 zig 的可用性并调整 CC 进行 static link。
Checklist
Full Changelogs
Issue Reference
Closes #557
Test Result