diff --git a/.lfsconfig b/.lfsconfig deleted file mode 100644 index cb0a8e352e86..000000000000 --- a/.lfsconfig +++ /dev/null @@ -1,5 +0,0 @@ -[lfs] -# codeql is publicly forked by many users, and we don't want any LFS file polluting their working -# copies. We therefore exclude everything by default. -# For files required by bazel builds, use rules in `misc/bazel/lfs.bzl` to download them on demand. -fetchinclude = /nothing diff --git a/misc/bazel/lfs.bzl b/misc/bazel/lfs.bzl deleted file mode 100644 index ab40e6ac3d07..000000000000 --- a/misc/bazel/lfs.bzl +++ /dev/null @@ -1,73 +0,0 @@ -def lfs_smudge(repository_ctx, srcs): - for src in srcs: - repository_ctx.watch(src) - script = Label("//misc/bazel/internal:git_lfs_smudge.py") - python = repository_ctx.which("python3") or repository_ctx.which("python") - if not python: - fail("Neither python3 nor python executables found") - res = repository_ctx.execute([python, script] + srcs, quiet = False) - if res.return_code != 0: - fail("git LFS smudging failed while instantiating @%s:\n%s" % (repository_ctx.name, res.stderr)) - -def _download_and_extract_lfs(repository_ctx): - attr = repository_ctx.attr - src = repository_ctx.path(attr.src) - if attr.build_file_content and attr.build_file: - fail("You should specify only one among build_file_content and build_file for rule @%s" % repository_ctx.name) - lfs_smudge(repository_ctx, [src]) - repository_ctx.extract(src.basename, stripPrefix = attr.strip_prefix) - repository_ctx.delete(src.basename) - if attr.build_file_content: - repository_ctx.file("BUILD.bazel", attr.build_file_content) - elif attr.build_file: - repository_ctx.symlink(attr.build_file, "BUILD.bazel") - -def _download_lfs(repository_ctx): - attr = repository_ctx.attr - if int(bool(attr.srcs)) + int(bool(attr.dir)) != 1: - fail("Exactly one between `srcs` and `dir` must be defined for @%s" % repository_ctx.name) - if attr.srcs: - srcs = [repository_ctx.path(src) for src in attr.srcs] - else: - dir = repository_ctx.path(attr.dir) - if not dir.is_dir: - fail("`dir` not a directory in @%s" % repository_ctx.name) - srcs = [f for f in dir.readdir() if not f.is_dir] - lfs_smudge(repository_ctx, srcs) - - # with bzlmod the name is qualified with `~` separators, and we want the base name here - name = repository_ctx.name.split("~")[-1] - repository_ctx.file("BUILD.bazel", """ -exports_files({files}) - -filegroup( - name = "{name}", - srcs = {files}, - visibility = ["//visibility:public"], -) -""".format(name = name, files = repr([src.basename for src in srcs]))) - -lfs_archive = repository_rule( - doc = "Export the contents from an on-demand LFS archive. The corresponding path should be added to be ignored " + - "in `.lfsconfig`.", - implementation = _download_and_extract_lfs, - attrs = { - "src": attr.label(mandatory = True, doc = "Local path to the LFS archive to extract."), - "build_file_content": attr.string(doc = "The content for the BUILD file for this repository. " + - "Either build_file or build_file_content can be specified, but not both."), - "build_file": attr.label(doc = "The file to use as the BUILD file for this repository. " + - "Either build_file or build_file_content can be specified, but not both."), - "strip_prefix": attr.string(default = "", doc = "A directory prefix to strip from the extracted files. "), - }, -) - -lfs_files = repository_rule( - doc = "Export LFS files for on-demand download. Exactly one between `srcs` and `dir` must be defined. The " + - "corresponding paths should be added to be ignored in `.lfsconfig`.", - implementation = _download_lfs, - attrs = { - "srcs": attr.label_list(doc = "Local paths to the LFS files to export."), - "dir": attr.label(doc = "Local path to a directory containing LFS files to export. Only the direct contents " + - "of the directory are exported"), - }, -)