1
Fork 0

add explicit platforms

nix
Motiejus Jakštys 2021-06-08 06:56:37 +03:00 committed by Motiejus Jakštys
parent 236cb178d1
commit 51b8a382e7
3 changed files with 47 additions and 20 deletions

View File

@ -10,9 +10,14 @@ tasks:
curl -L https://github.com/bazelbuild/bazelisk/releases/download/v1.9.0/bazelisk-linux-amd64 \
-o bazel
chmod +x bazel
- test_default: |
cd bazel-zig-cc; ../bazel run --toolchain_resolution_debug=true \
//test:gognu
- test_musl: |
cd bazel-zig-cc
../bazel run --platforms @com_github_ziglang_zig//:platform_linux-x86_64-musl //test:gomusl
cd bazel-zig-cc; ../bazel run --toolchain_resolution_debug=true \
--platforms @com_github_ziglang_zig//:platform_linux-x86_64-musl \
//test:gomusl
- test_gnu: |
cd bazel-zig-cc
../bazel run --platforms @com_github_ziglang_zig//:platform_linux-x86_64-gnu //test:gognu
cd bazel-zig-cc; ../bazel run --toolchain_resolution_debug=true \
--platforms @com_github_ziglang_zig//:platform_linux-x86_64-gnu \
//test:gognu

View File

@ -6,12 +6,24 @@ libraries:
- glibc 2.19
- musl
glibc 2.19 is the default. That means, glibc 2.19 toolchain is registered with
these basic constraints:
```
[
"@platforms//os:linux",
"@platforms//cpu:x86_64",
]
```
# Testing
## cgo + glibc 2.19
Using the default toolchain:
```
$ bazel build //test:gognu
$ bazel build --toolchain_resolution_debug=true //test:gognu
...
$ ../bazel-bin/test/gognu_/gognu
hello, world
@ -19,10 +31,15 @@ $ file ../bazel-bin/test/gognu_/gognu
../bazel-bin/test/gognu_/gognu: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.0.0, Go BuildID=redacted, with debug_info, not stripped
```
Explicitly specifying `-gnu`:
```
$ bazel run --platforms @com_github_ziglang_zig//:platform_x86_64-linux-gnu //test:gognu
```
## cgo + musl
```
$ bazel build --platforms @com_github_ziglang_zig//:platform_linux-x86_64-musl :gomusl
$ bazel build --platforms @com_github_ziglang_zig//:platform_x86_64-linux-musl :gomusl
...
$ file ../bazel-out/k8-fastbuild-ST-d17813c235ce/bin/test/gomusl_/gomusl
../bazel-out/k8-fastbuild-ST-d17813c235ce/bin/test/gomusl_/gomusl: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID=redacted, with debug_info, not stripped
@ -36,6 +53,7 @@ hello, world
$ docker run -ti --rm -v $(pwd):/x -w /x debian:buster-slim
# apt update && apt install curl ca-certificates -y && curl -L https://github.com/bazelbuild/bazelisk/releases/download/v1.7.5/bazelisk-linux-amd64 > /usr/local/bin/bazel && chmod +x /usr/local/bin/bazel
# export CC=/usr/bin/false
# bazel run --platforms @com_github_ziglang_zig//:platform_linux-x86_64-musl //test:gomusl
# bazel run --platforms @com_github_ziglang_zig//:platform_linux-x86_64-gnu //test:gognu
```
And run the `bazel build` commands above. Take a look at `.build.yml` and see
how CI does it.

View File

@ -32,7 +32,10 @@ TARGET_CONFIGS = [
linkopts=[],
copts=[],
bazel_target_cpu="darwin",
constraint_values=["@platforms//os:macos", "@platforms//cpu:x86_64"],
constraint_values=[
"@platforms//os:macos",
"@platforms//cpu:x86_64",
],
tool_paths={"ld": "ld64.lld"},
),
struct(
@ -50,7 +53,6 @@ TARGET_CONFIGS = [
constraint_values=[
"@platforms//os:linux",
"@platforms//cpu:x86_64",
":gnu_2_19",
],
tool_paths={"ld": "ld.lld"},
),
@ -122,11 +124,6 @@ zig_build_macro(absolute_path={absolute_path}, zig_include_root={zig_include_roo
constraint_setting(name = "libc")
constraint_value(
name = "gnu_2_19",
constraint_setting = ":libc",
)
constraint_value(
name = "musl",
constraint_setting = ":libc",
@ -134,20 +131,27 @@ constraint_value(
platform(
name = "platform_linux-x86_64-musl",
name = "platform_x86_64-macos-gnu",
constraint_values = [
"@platforms//os:linux",
"@platforms//os:macos",
"@platforms//cpu:x86_64",
":musl",
],
)
platform(
name = "platform_linux-x86_64-gnu",
name = "platform_x86_64-linux-gnu",
constraint_values = [
"@platforms//os:linux",
"@platforms//cpu:x86_64",
":gnu_2_19",
],
)
platform(
name = "platform_x86_64-linux-musl",
constraint_values = [
"@platforms//os:linux",
"@platforms//cpu:x86_64",
":musl",
],
)