-
Notifications
You must be signed in to change notification settings - Fork 1.7k
/
Copy pathload.bzl
124 lines (109 loc) · 3.8 KB
/
load.bzl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
load("@bazel_skylib//rules:write_file.bzl", "write_file")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file")
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
load("//misc/bazel:lfs.bzl", "lfs_archive", "lfs_files")
_override = {
# these are used to test new artifacts. Must be empty before merging to main
}
_staging_url = "https://github.com/dsp-testing/codeql-swift-artifacts/releases/download/staging-{}/{}"
def _get_override(file):
prefix, _, _ = file.partition(".")
for key, value in _override.items():
if key.startswith(prefix):
return {"url": _staging_url.format(prefix, key), "sha256": value}
return None
def _load_resource_dir(plat):
name = "swift-resource-dir-%s" % plat.lower()
file = "resource-dir-%s.zip" % plat
override = _get_override(file)
if override:
http_file(
name = name,
downloaded_file_path = file.lower(),
**override
)
else:
lfs_files(
name = name,
srcs = ["//swift/third_party/resources:%s" % file.lower()],
)
def _load_prebuilt(plat):
name = "swift-prebuilt-%s" % plat.lower()
file = "swift-prebuilt-%s.tar.zst" % plat
override = _get_override(file)
build = _build % "swift-llvm-support"
if override:
http_archive(
name = name,
build_file = build,
**override
)
# this is for `//swift/third_party/resources:update-prebuilt-*` support
http_file(
name = name + "-download-only",
**override
)
else:
lfs_archive(
name = name,
src = "//swift/third_party/resources:%s" % file.lower(),
build_file = build,
)
# unused, but saves us some bazel mod tidy dance when in override mode
lfs_files(
name = name + "-download-only",
srcs = ["//swift/third_party/resources:%s" % file.lower()],
)
def _github_archive(*, name, repository, commit, build_file = None, sha256 = None):
github_name = repository[repository.index("/") + 1:]
maybe(
repo_rule = http_archive,
name = name,
url = "https://github.com/%s/archive/%s.zip" % (repository, commit),
strip_prefix = "%s-%s" % (github_name, commit),
build_file = build_file,
sha256 = sha256,
)
_build = "//swift/third_party:BUILD.%s.bazel"
def load_dependencies(module_ctx):
for plat in ("macOS", "Linux"):
_load_prebuilt(plat)
_load_resource_dir(plat)
_github_archive(
name = "picosha2",
build_file = _build % "picosha2",
repository = "okdshin/PicoSHA2",
commit = "27fcf6979298949e8a462e16d09a0351c18fcaf2",
sha256 = "d6647ca45a8b7bdaf027ecb68d041b22a899a0218b7206dee755c558a2725abb",
)
_github_archive(
name = "binlog",
build_file = _build % "binlog",
repository = "morganstanley/binlog",
commit = "3fef8846f5ef98e64211e7982c2ead67e0b185a6",
sha256 = "f5c61d90a6eff341bf91771f2f465be391fd85397023e1b391c17214f9cbd045",
)
return module_ctx.extension_metadata(
root_module_direct_deps = "all",
root_module_direct_dev_deps = [],
)
swift_deps = module_extension(load_dependencies)
def test_no_override():
test_body = ["#!/bin/bash", ""]
test_body += [
'echo \\"%s\\" override in swift/third/party/load.bzl' % key
for key in _override
]
if _override:
test_body.append("exit 1")
write_file(
name = "test-no-override-gen",
out = "test-no-override.sh",
content = test_body,
is_executable = True,
)
native.sh_test(
name = "test-no-override",
srcs = [":test-no-override-gen"],
tags = ["override"],
)