Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: add windows binaries #610

Merged
merged 6 commits into from
Oct 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .bazeliskrc

This file was deleted.

10 changes: 0 additions & 10 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -103,16 +103,6 @@ jobs:
# Don't test Windows with Bazel 7 to minimize Windows minutes (billed at 2X)
- bazelversion: 7.0.0-pre.20230530.3
os: windows-latest
# TODO: fix or disable the following build & test on Windows
# //lib/tests/coreutils:test_sha256sum FAILED in 2 out of 2 in 0.2s
# //lib/tests/coreutils:test_sha512sum FAILED in 2 out of 2 in 0.2s
# //docs:update_0_test FAILED TO BUILD
# //docs:update_10_test FAILED TO BUILD
# //docs:update_11_test FAILED TO BUILD
# //docs:update_12_test FAILED TO BUILD
# //docs:update_13_test FAILED TO BUILD
- folder: .
os: windows-latest

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
Expand Down
2 changes: 1 addition & 1 deletion lib/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -238,11 +238,11 @@ bzl_library(
name = "testing",
srcs = ["testing.bzl"],
deps = [
":diff_test",
":jq",
":params_file",
":utils",
"@bazel_skylib//lib:types",
"@bazel_skylib//rules:diff_test",
"@bazel_skylib//rules:write_file",
],
)
Expand Down
6 changes: 6 additions & 0 deletions lib/private/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,12 @@ bzl_library(
visibility = ["//lib:__subpackages__"],
)

bzl_library(
name = "extension_utils",
srcs = ["extension_utils.bzl"],
visibility = ["//lib:__subpackages__"],
)

bzl_library(
name = "glob_match",
srcs = ["glob_match.bzl"],
Expand Down
17 changes: 14 additions & 3 deletions lib/private/tar_toolchain.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ BSDTAR_PLATFORMS = {
"@platforms//cpu:aarch64",
],
),
# TODO(alexeagle): download from libarchive github releases.
"windows_amd64": struct(
release_platform = "win64",
compatible_with = [
Expand All @@ -30,6 +29,11 @@ BSDTAR_PLATFORMS = {
),
}

WINDOWS_DEPS = (
"e06f10043b1b148eb38ad06cff678af05beade0bdd2edd8735a198c521fa3993",
"https://github.com/libarchive/libarchive/releases/download/v3.7.2/libarchive-v3.7.2-amd64.zip",
)

# note, using Ubuntu Focal packages as they link with older glibc versions.
# Ubuntu Jammy packages will fail on ubuntu 20.02 with
# bsdtar: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found
Expand Down Expand Up @@ -124,11 +128,18 @@ package(default_visibility = ["//visibility:public"])
rctx.file("BUILD.bazel", build_header + """tar_toolchain(name = "bsdtar_toolchain", binary = "tar")""")
return

if repo_utils.is_windows(rctx):
rctx.download_and_extract(
url = WINDOWS_DEPS[1],
type = "zip",
sha256 = WINDOWS_DEPS[0],
)
rctx.file("BUILD.bazel", build_header + """tar_toolchain(name = "bsdtar_toolchain", binary = "libarchive/bin/bsdtar.exe")""")
return

# Other platforms, we have more work to do.
libs_dir = "usr/lib/x86_64-linux-gnu" if rctx.attr.platform.endswith("amd64") else "usr/lib/aarch64-linux-gnu"

# TODO: windows

for lib in LINUX_LIB_DEPS[rctx.attr.platform]:
rctx.download_and_extract(
url = lib[1],
Expand Down
1 change: 1 addition & 0 deletions lib/tar.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ def tar(name, mtree = "auto", **kwargs):
out = "{}.txt".format(mtree_target),
# Ensure there's a trailing newline, as bsdtar will ignore a last line without one
content = mtree + [""],
newline = "unix",
)
else:
mtree_target = mtree
Expand Down
2 changes: 1 addition & 1 deletion lib/testing.bzl
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
"Helpers for making test assertions"

load("@bazel_skylib//lib:types.bzl", "types")
load("@bazel_skylib//rules:diff_test.bzl", "diff_test")
load("@bazel_skylib//rules:write_file.bzl", "write_file")
load("//lib:diff_test.bzl", "diff_test")
load("//lib:jq.bzl", "jq")
load("//lib:params_file.bzl", "params_file")
load("//lib:utils.bzl", "default_timeout")
Expand Down
9 changes: 9 additions & 0 deletions lib/tests/copy_directory_bin_action/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,16 +1,25 @@
load("//lib:diff_test.bzl", "diff_test")
load(":pkg.bzl", "pkg")

not_windows = select({
# 2023/10/10 18:59:00 lstat lib\tests\copy_directory_bin_action\d\d\s1 failed:
# CreateFile .\1: The system cannot find the file specified.
"@platforms//os:windows": ["@platforms//:incompatible"],
"//conditions:default": [],
})

pkg(
name = "pkg",
src = "d",
out = "d2",
target_compatible_with = not_windows,
)

pkg(
name = "pkg2",
src = "pkg",
out = "d3",
target_compatible_with = not_windows,
)

diff_test(
Expand Down
6 changes: 6 additions & 0 deletions lib/tests/copy_to_directory_bin_action/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,12 @@ pkg(
":tree_artifact",
],
out = "pkg",
target_compatible_with = select({
# D:/a/bazel-lib/bazel-lib/lib/tests/copy_to_directory_bin_action/BUILD.bazel:36:4:
# declared output 'lib/tests/copy_to_directory_bin_action/pkg_symlink_0' is not a symlink
"@platforms//os:windows": ["@platforms//:incompatible"],
"//conditions:default": [],
}),
use_declare_symlink = select({
"//lib/tests:experimental_allow_unresolved_symlinks": True,
"//conditions:default": False,
Expand Down
8 changes: 8 additions & 0 deletions lib/tests/coreutils/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ assert_contains(
name = "test_sha256sum",
actual = "sha256sum.txt",
expected = """9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 lib/tests/coreutils/test.bin""",
target_compatible_with = select({
"@platforms//os:windows": ["@platforms//:incompatible"],
"//conditions:default": [],
}),
)

genrule(
Expand All @@ -40,6 +44,10 @@ assert_contains(
name = "test_sha512sum",
actual = "sha512sum.txt",
expected = """ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff lib/tests/coreutils/test.bin""",
target_compatible_with = select({
"@platforms//os:windows": ["@platforms//:incompatible"],
"//conditions:default": [],
}),
)

genrule(
Expand Down
15 changes: 13 additions & 2 deletions lib/tests/tar/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
load("@aspect_bazel_lib//lib:diff_test.bzl", "diff_test")
load("@aspect_bazel_lib//lib:tar.bzl", "mtree_spec", "tar")
load("@aspect_bazel_lib//lib:testing.bzl", "assert_archive_contains")
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load("@bazel_skylib//rules:diff_test.bzl", "diff_test")
load("@bazel_skylib//rules:write_file.bzl", "write_file")
load(":asserts.bzl", "assert_tar_listing")

Expand All @@ -20,6 +20,11 @@ genrule(
],
outs = ["1.tar"],
cmd = "$(BSDTAR_BIN) --create --dereference --file $@ -s '#$(BINDIR)##' $(execpath :fixture1) $(execpath src_file)",
target_compatible_with = select({
# bsdtar.exe: -s is not supported by this version of bsdtar
"@platforms//os:windows": ["@platforms//:incompatible"],
"//conditions:default": [],
}),
toolchains = ["@bsd_tar_toolchains//:resolved_toolchain"],
)

Expand Down Expand Up @@ -149,7 +154,7 @@ bzl_library(
srcs = ["asserts.bzl"],
visibility = ["//visibility:public"],
deps = [
"@bazel_skylib//rules:diff_test",
"//lib:diff_test",
"@bazel_skylib//rules:write_file",
],
)
Expand Down Expand Up @@ -179,6 +184,12 @@ genrule(
./lib/tests/tar/cat_src_file
) > $@
""",
target_compatible_with = select({
# requires runfiles tree, otherwise get
# ERROR: cannot find bazel_tools/tools/bash/runfiles/runfiles.bash
"@platforms//os:windows": ["@platforms//:incompatible"],
"//conditions:default": [],
}),
toolchains = ["@bsd_tar_toolchains//:resolved_toolchain"],
)

Expand Down
3 changes: 2 additions & 1 deletion lib/tests/tar/asserts.bzl
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"Make shorter assertions"

load("@bazel_skylib//rules:diff_test.bzl", "diff_test")
load("@bazel_skylib//rules:write_file.bzl", "write_file")
load("//lib:diff_test.bzl", "diff_test")

# buildifier: disable=function-docstring
def assert_tar_listing(name, actual, expected):
Expand All @@ -20,6 +20,7 @@ def assert_tar_listing(name, actual, expected):
name = expected_listing,
out = "_{}.expected".format(name),
content = expected + [""],
newline = "unix",
)

diff_test(
Expand Down