Merge pull request #16317 from github/redsun82/go

Go: add bazel build
This commit is contained in:
Paolo Tranquilli 2024-05-06 16:55:58 +02:00 коммит произвёл GitHub
Родитель d85f81d699 73df4fa920
Коммит 5c74bebe6c
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
48 изменённых файлов: 979 добавлений и 2 удалений

Просмотреть файл

@ -14,6 +14,10 @@ build:linux --cxxopt=-std=c++20
build:macos --cxxopt=-std=c++20 --cpu=darwin_x86_64
build:windows --cxxopt=/std:c++20 --cxxopt=/Zc:preprocessor
# this requires developer mode, but is required to have pack installer functioning
startup --windows_enable_symlinks
common --enable_runfiles
common --registry=file:///%workspace%/misc/bazel/registry
common --registry=https://bcr.bazel.build

Просмотреть файл

@ -29,6 +29,13 @@ repos:
entry: bazel run //misc/bazel:buildifier
pass_filenames: false
- id: go-gen
name: Check checked in generated files in go
files: ^go/.*
language: system
entry: bazel run //go:gen
pass_filenames: false
- id: codeql-format
name: Fix QL file formatting
files: \.qll?$

Просмотреть файл

@ -13,7 +13,8 @@ local_path_override(
# see https://registry.bazel.build/ for a list of available packages
bazel_dep(name = "platforms", version = "0.0.8")
bazel_dep(name = "platforms", version = "0.0.9")
bazel_dep(name = "rules_go", version = "0.47.0")
bazel_dep(name = "rules_pkg", version = "0.10.1")
bazel_dep(name = "rules_nodejs", version = "6.0.3")
bazel_dep(name = "rules_python", version = "0.31.0")
@ -21,6 +22,7 @@ bazel_dep(name = "bazel_skylib", version = "1.5.0")
bazel_dep(name = "abseil-cpp", version = "20240116.0", repo_name = "absl")
bazel_dep(name = "nlohmann_json", version = "3.11.3", repo_name = "json")
bazel_dep(name = "fmt", version = "10.0.0")
bazel_dep(name = "gazelle", version = "0.36.0")
bazel_dep(name = "buildifier_prebuilt", version = "6.4.0", dev_dependency = True)
@ -52,6 +54,9 @@ node.toolchain(
)
use_repo(node, "nodejs", "nodejs_toolchains")
go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
go_sdk.download(version = "1.22.2")
register_toolchains(
"@nodejs_toolchains//:all",
)

93
go/BUILD.bazel Normal file
Просмотреть файл

@ -0,0 +1,93 @@
load("@bazel_skylib//rules:native_binary.bzl", "native_binary")
load("@rules_pkg//pkg:install.bzl", "pkg_install")
load("@rules_pkg//pkg:mappings.bzl", "pkg_attributes", "pkg_filegroup", "pkg_files")
load("//:defs.bzl", "codeql_platform")
native_binary(
name = "gazelle",
src = "@gazelle//cmd/gazelle",
out = "gazelle.exe",
args = ["go/extractor"],
)
_gen_binaries = [
"@rules_go//go",
":gazelle",
"//go/extractor/cli/go-gen-dbscheme",
]
py_binary(
name = "gen",
srcs = ["gen.py"],
args = ["$(rlocationpath %s)" % bin for bin in _gen_binaries],
data = _gen_binaries,
deps = ["@rules_python//python/runfiles"],
)
# this is an instance of the dbscheme kept in the bazel build tree
# this allows everything that bazel builds to be up-to-date,
# independently from whether //go:gen was already run to update the checked in files
genrule(
name = "dbscheme",
outs = ["go.dbscheme"],
cmd = "$(execpath //go/extractor/cli/go-gen-dbscheme) $@",
tools = ["//go/extractor/cli/go-gen-dbscheme"],
)
pkg_files(
name = "resources",
srcs = [
"LICENSE",
"codeql-extractor.yml",
"ql/lib/go.dbscheme.stats",
":dbscheme",
],
)
pkg_filegroup(
name = "extractor-pack-generic",
srcs = [
":resources",
"//go/codeql-tools",
"//go/downgrades",
"//go/extractor:tokenizer",
],
visibility = ["//visibility:public"],
)
pkg_files(
name = "extractor-pack-arch",
srcs = [
"//go/extractor/cli/go-autobuilder",
"//go/extractor/cli/go-bootstrap",
"//go/extractor/cli/go-build-runner",
"//go/extractor/cli/go-extractor",
"//go/extractor/cli/go-gen-dbscheme",
"//go/extractor/cli/go-tokenizer",
],
attributes = pkg_attributes(mode = "0755"),
prefix = "tools/" + codeql_platform,
visibility = ["//visibility:public"],
)
pkg_filegroup(
name = "extractor-pack",
srcs = [
":extractor-pack-arch",
":extractor-pack-generic",
],
visibility = ["//visibility:public"],
)
pkg_install(
name = "_extractor_pack",
srcs = [":extractor-pack"],
)
py_binary(
name = "create-extractor-pack",
srcs = ["create_extractor_pack.py"],
env = {"REPO_NAME": repo_name()},
main = "create_extractor_pack.py",
deps = ["_extractor_pack"],
)

Просмотреть файл

@ -0,0 +1,28 @@
load("@rules_pkg//pkg:mappings.bzl", "pkg_attributes", "pkg_filegroup", "pkg_files")
pkg_files(
name = "sh-files",
srcs = glob(["*.sh"]),
attributes = pkg_attributes(mode = "0755"),
)
pkg_files(
name = "non-sh-files",
srcs = glob(
["*"],
exclude = [
"*.sh",
"BUILD.bazel",
],
),
)
pkg_filegroup(
name = "codeql-tools",
srcs = [
":non-sh-files",
":sh-files",
],
prefix = "tools",
visibility = ["//go:__pkg__"],
)

26
go/create_extractor_pack.py Executable file
Просмотреть файл

@ -0,0 +1,26 @@
#!/usr/bin/env python3
import os
import pathlib
import shutil
import sys
import subprocess
try:
workspace_dir = pathlib.Path(os.environ['BUILD_WORKSPACE_DIRECTORY'])
except KeyError:
res = subprocess.run(["bazel", "run", ":create-extractor-pack"], cwd=pathlib.Path(__file__).parent)
sys.exit(res.returncode)
from go._extractor_pack_install_script import main
build_dir = workspace_dir / 'go' / 'build'
if not build_dir.exists():
# we probably are in the internal repo
workspace_dir /= 'ql'
build_dir = workspace_dir / 'go' / 'build'
dest_dir = build_dir / 'codeql-extractor-pack'
shutil.rmtree(dest_dir, ignore_errors=True)
os.environ['DESTDIR'] = str(dest_dir)
main(sys.argv)

12
go/downgrades/BUILD.bazel Normal file
Просмотреть файл

@ -0,0 +1,12 @@
load("@rules_pkg//pkg:mappings.bzl", "pkg_files", "strip_prefix")
pkg_files(
name = "downgrades",
srcs = glob(
["**"],
exclude = ["BUILD.bazel"],
),
prefix = "downgrades",
strip_prefix = strip_prefix.from_pkg(),
visibility = ["//go:__pkg__"],
)

1
go/extractor/.gitattributes поставляемый Normal file
Просмотреть файл

@ -0,0 +1 @@
/*/**/BUILD.bazel linguist-generated=true

60
go/extractor/BUILD.bazel Normal file
Просмотреть файл

@ -0,0 +1,60 @@
load("@rules_go//go:def.bzl", "go_library")
load("@rules_pkg//pkg:mappings.bzl", "pkg_files")
# gazelle:prefix github.com/github/codeql-go/extractor
# gazelle:map_kind go_binary codeql_go_binary //go:rules.bzl
# the immediately following `extractor` target is kept up to date by `bazel run //go:gen`, do not edit directly
go_library(
name = "extractor",
srcs = [
"extractor.go",
"gomodextractor.go",
"semaphore.go",
],
importpath = "github.com/github/codeql-go/extractor",
visibility = ["//visibility:public"],
deps = [
"//go/extractor/dbscheme",
"//go/extractor/diagnostics",
"//go/extractor/srcarchive",
"//go/extractor/trap",
"//go/extractor/util",
"//go/extractor/vendor/golang.org/x/mod/modfile",
"//go/extractor/vendor/golang.org/x/tools/go/packages",
],
)
# the other targets are not generated by gazelle
# this is separate from `tokenizer-jar` below because we don't want these compiled class files in the pack
java_library(
name = "tokenizer-deps",
srcs = [
"net/sourceforge/pmd/cpd/AbstractLanguage.java",
"net/sourceforge/pmd/cpd/SourceCode.java",
"net/sourceforge/pmd/cpd/TokenEntry.java",
"net/sourceforge/pmd/cpd/Tokenizer.java",
],
)
# we only need these compiled class files in the pack
java_library(
name = "tokenizer-jar",
srcs = [
"net/sourceforge/pmd/cpd/GoLanguage.java",
"opencsv/CSVParser.java",
"opencsv/CSVReader.java",
],
deps = [":tokenizer-deps"],
)
pkg_files(
name = "tokenizer",
srcs = [":tokenizer-jar"],
prefix = "tools",
renames = {
":tokenizer-jar": "tokenizer.jar", # name is `libtokenizer.jar` by default
},
visibility = ["//go:__pkg__"],
)

26
go/extractor/autobuilder/BUILD.bazel сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,26 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library", "go_test")
go_library(
name = "autobuilder",
srcs = [
"autobuilder.go",
"build-environment.go",
],
importpath = "github.com/github/codeql-go/extractor/autobuilder",
visibility = ["//visibility:public"],
deps = [
"//go/extractor/diagnostics",
"//go/extractor/project",
"//go/extractor/toolchain",
"//go/extractor/util",
"//go/extractor/vendor/golang.org/x/mod/semver",
],
)
go_test(
name = "autobuilder_test",
srcs = ["build-environment_test.go"],
embed = [":autobuilder"],
)

25
go/extractor/cli/go-autobuilder/BUILD.bazel сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,25 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
load("//go:rules.bzl", "codeql_go_binary")
go_library(
name = "go-autobuilder_lib",
srcs = ["go-autobuilder.go"],
importpath = "github.com/github/codeql-go/extractor/cli/go-autobuilder",
visibility = ["//visibility:private"],
deps = [
"//go/extractor/autobuilder",
"//go/extractor/diagnostics",
"//go/extractor/project",
"//go/extractor/toolchain",
"//go/extractor/util",
"//go/extractor/vendor/golang.org/x/mod/semver",
],
)
codeql_go_binary(
name = "go-autobuilder",
embed = [":go-autobuilder_lib"],
visibility = ["//visibility:public"],
)

Просмотреть файл

@ -487,7 +487,9 @@ func extract(workspace project.GoWorkspace) bool {
// Build the project and run the extractor.
func installDependenciesAndBuild() {
log.Printf("Autobuilder was built with %s, environment has %s\n", runtime.Version(), toolchain.GetEnvGoVersion())
// do not print experiments the autobuilder was built with if any, only the version
version := strings.SplitN(runtime.Version(), " ", 2)[0]
log.Printf("Autobuilder was built with %s, environment has %s\n", version, toolchain.GetEnvGoVersion())
srcdir := getSourceDir()

17
go/extractor/cli/go-bootstrap/BUILD.bazel сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,17 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
load("//go:rules.bzl", "codeql_go_binary")
go_library(
name = "go-bootstrap_lib",
srcs = ["go-bootstrap.go"],
importpath = "github.com/github/codeql-go/extractor/cli/go-bootstrap",
visibility = ["//visibility:private"],
)
codeql_go_binary(
name = "go-bootstrap",
embed = [":go-bootstrap_lib"],
visibility = ["//visibility:public"],
)

21
go/extractor/cli/go-build-runner/BUILD.bazel сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,21 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
load("//go:rules.bzl", "codeql_go_binary")
go_library(
name = "go-build-runner_lib",
srcs = ["go-build-runner.go"],
importpath = "github.com/github/codeql-go/extractor/cli/go-build-runner",
visibility = ["//visibility:private"],
deps = [
"//go/extractor/autobuilder",
"//go/extractor/util",
],
)
codeql_go_binary(
name = "go-build-runner",
embed = [":go-build-runner_lib"],
visibility = ["//visibility:public"],
)

21
go/extractor/cli/go-extractor/BUILD.bazel сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,21 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
load("//go:rules.bzl", "codeql_go_binary")
go_library(
name = "go-extractor_lib",
srcs = ["go-extractor.go"],
importpath = "github.com/github/codeql-go/extractor/cli/go-extractor",
visibility = ["//visibility:private"],
deps = [
"//go/extractor",
"//go/extractor/diagnostics",
],
)
codeql_go_binary(
name = "go-extractor",
embed = [":go-extractor_lib"],
visibility = ["//visibility:public"],
)

18
go/extractor/cli/go-gen-dbscheme/BUILD.bazel сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,18 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
load("//go:rules.bzl", "codeql_go_binary")
go_library(
name = "go-gen-dbscheme_lib",
srcs = ["go-gen-dbscheme.go"],
importpath = "github.com/github/codeql-go/extractor/cli/go-gen-dbscheme",
visibility = ["//visibility:private"],
deps = ["//go/extractor/dbscheme"],
)
codeql_go_binary(
name = "go-gen-dbscheme",
embed = [":go-gen-dbscheme_lib"],
visibility = ["//visibility:public"],
)

17
go/extractor/cli/go-tokenizer/BUILD.bazel сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,17 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
load("//go:rules.bzl", "codeql_go_binary")
go_library(
name = "go-tokenizer_lib",
srcs = ["go-tokenizer.go"],
importpath = "github.com/github/codeql-go/extractor/cli/go-tokenizer",
visibility = ["//visibility:private"],
)
codeql_go_binary(
name = "go-tokenizer",
embed = [":go-tokenizer_lib"],
visibility = ["//visibility:public"],
)

17
go/extractor/dbscheme/BUILD.bazel сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,17 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "dbscheme",
srcs = [
"dbscheme.go",
"tables.go",
],
importpath = "github.com/github/codeql-go/extractor/dbscheme",
visibility = ["//visibility:public"],
deps = [
"//go/extractor/trap",
"//go/extractor/vendor/golang.org/x/tools/go/packages",
],
)

10
go/extractor/diagnostics/BUILD.bazel сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,10 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "diagnostics",
srcs = ["diagnostics.go"],
importpath = "github.com/github/codeql-go/extractor/diagnostics",
visibility = ["//visibility:public"],
)

24
go/extractor/project/BUILD.bazel сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,24 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library", "go_test")
go_library(
name = "project",
srcs = ["project.go"],
importpath = "github.com/github/codeql-go/extractor/project",
visibility = ["//visibility:public"],
deps = [
"//go/extractor/diagnostics",
"//go/extractor/toolchain",
"//go/extractor/util",
"//go/extractor/vendor/golang.org/x/mod/modfile",
"//go/extractor/vendor/golang.org/x/mod/semver",
],
)
go_test(
name = "project_test",
srcs = ["project_test.go"],
embed = [":project"],
deps = ["//go/extractor/vendor/golang.org/x/mod/modfile"],
)

19
go/extractor/srcarchive/BUILD.bazel сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,19 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library", "go_test")
go_library(
name = "srcarchive",
srcs = [
"projectlayout.go",
"srcarchive.go",
],
importpath = "github.com/github/codeql-go/extractor/srcarchive",
visibility = ["//visibility:public"],
)
go_test(
name = "srcarchive_test",
srcs = ["projectlayout_test.go"],
embed = [":srcarchive"],
)

20
go/extractor/toolchain/BUILD.bazel сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,20 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library", "go_test")
go_library(
name = "toolchain",
srcs = ["toolchain.go"],
importpath = "github.com/github/codeql-go/extractor/toolchain",
visibility = ["//visibility:public"],
deps = [
"//go/extractor/util",
"//go/extractor/vendor/golang.org/x/mod/semver",
],
)
go_test(
name = "toolchain_test",
srcs = ["toolchain_test.go"],
embed = [":toolchain"],
)

25
go/extractor/trap/BUILD.bazel сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,25 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library", "go_test")
go_library(
name = "trap",
srcs = [
"labels.go",
"trapwriter.go",
"util.go",
],
importpath = "github.com/github/codeql-go/extractor/trap",
visibility = ["//visibility:public"],
deps = [
"//go/extractor/srcarchive",
"//go/extractor/util",
"//go/extractor/vendor/golang.org/x/tools/go/packages",
],
)
go_test(
name = "trap_test",
srcs = ["trapwriter_test.go"],
embed = [":trap"],
)

16
go/extractor/util/BUILD.bazel сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,16 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library", "go_test")
go_library(
name = "util",
srcs = ["util.go"],
importpath = "github.com/github/codeql-go/extractor/util",
visibility = ["//visibility:public"],
)
go_test(
name = "util_test",
srcs = ["util_test.go"],
embed = [":util"],
)

11
go/extractor/vendor/golang.org/x/mod/internal/lazyregexp/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,11 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "lazyregexp",
srcs = ["lazyre.go"],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/mod/internal/lazyregexp",
importpath = "golang.org/x/mod/internal/lazyregexp",
visibility = ["//go/extractor/vendor/golang.org/x/mod:__subpackages__"],
)

21
go/extractor/vendor/golang.org/x/mod/modfile/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,21 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "modfile",
srcs = [
"print.go",
"read.go",
"rule.go",
"work.go",
],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/mod/modfile",
importpath = "golang.org/x/mod/modfile",
visibility = ["//visibility:public"],
deps = [
"//go/extractor/vendor/golang.org/x/mod/internal/lazyregexp",
"//go/extractor/vendor/golang.org/x/mod/module",
"//go/extractor/vendor/golang.org/x/mod/semver",
],
)

18
go/extractor/vendor/golang.org/x/mod/module/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,18 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "module",
srcs = [
"module.go",
"pseudo.go",
],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/mod/module",
importpath = "golang.org/x/mod/module",
visibility = ["//visibility:public"],
deps = [
"//go/extractor/vendor/golang.org/x/mod/internal/lazyregexp",
"//go/extractor/vendor/golang.org/x/mod/semver",
],
)

11
go/extractor/vendor/golang.org/x/mod/semver/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,11 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "semver",
srcs = ["semver.go"],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/mod/semver",
importpath = "golang.org/x/mod/semver",
visibility = ["//visibility:public"],
)

15
go/extractor/vendor/golang.org/x/tools/go/gcexportdata/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,15 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "gcexportdata",
srcs = [
"gcexportdata.go",
"importer.go",
],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/tools/go/gcexportdata",
importpath = "golang.org/x/tools/go/gcexportdata",
visibility = ["//visibility:public"],
deps = ["//go/extractor/vendor/golang.org/x/tools/internal/gcimporter"],
)

12
go/extractor/vendor/golang.org/x/tools/go/internal/packagesdriver/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,12 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "packagesdriver",
srcs = ["sizes.go"],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/tools/go/internal/packagesdriver",
importpath = "golang.org/x/tools/go/internal/packagesdriver",
visibility = ["//go/extractor/vendor/golang.org/x/tools/go:__subpackages__"],
deps = ["//go/extractor/vendor/golang.org/x/tools/internal/gocommand"],
)

27
go/extractor/vendor/golang.org/x/tools/go/packages/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,27 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "packages",
srcs = [
"doc.go",
"external.go",
"golist.go",
"golist_overlay.go",
"loadmode_string.go",
"packages.go",
"visit.go",
],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/tools/go/packages",
importpath = "golang.org/x/tools/go/packages",
visibility = ["//visibility:public"],
deps = [
"//go/extractor/vendor/golang.org/x/tools/go/gcexportdata",
"//go/extractor/vendor/golang.org/x/tools/go/internal/packagesdriver",
"//go/extractor/vendor/golang.org/x/tools/internal/gocommand",
"//go/extractor/vendor/golang.org/x/tools/internal/packagesinternal",
"//go/extractor/vendor/golang.org/x/tools/internal/typesinternal",
"//go/extractor/vendor/golang.org/x/tools/internal/versions",
],
)

12
go/extractor/vendor/golang.org/x/tools/go/types/objectpath/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,12 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "objectpath",
srcs = ["objectpath.go"],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/tools/go/types/objectpath",
importpath = "golang.org/x/tools/go/types/objectpath",
visibility = ["//visibility:public"],
deps = ["//go/extractor/vendor/golang.org/x/tools/internal/typeparams"],
)

19
go/extractor/vendor/golang.org/x/tools/internal/event/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,19 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "event",
srcs = [
"doc.go",
"event.go",
],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/tools/internal/event",
importpath = "golang.org/x/tools/internal/event",
visibility = ["//go/extractor/vendor/golang.org/x/tools:__subpackages__"],
deps = [
"//go/extractor/vendor/golang.org/x/tools/internal/event/core",
"//go/extractor/vendor/golang.org/x/tools/internal/event/keys",
"//go/extractor/vendor/golang.org/x/tools/internal/event/label",
],
)

19
go/extractor/vendor/golang.org/x/tools/internal/event/core/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,19 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "core",
srcs = [
"event.go",
"export.go",
"fast.go",
],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/tools/internal/event/core",
importpath = "golang.org/x/tools/internal/event/core",
visibility = ["//go/extractor/vendor/golang.org/x/tools:__subpackages__"],
deps = [
"//go/extractor/vendor/golang.org/x/tools/internal/event/keys",
"//go/extractor/vendor/golang.org/x/tools/internal/event/label",
],
)

16
go/extractor/vendor/golang.org/x/tools/internal/event/keys/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,16 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "keys",
srcs = [
"keys.go",
"standard.go",
"util.go",
],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/tools/internal/event/keys",
importpath = "golang.org/x/tools/internal/event/keys",
visibility = ["//go/extractor/vendor/golang.org/x/tools:__subpackages__"],
deps = ["//go/extractor/vendor/golang.org/x/tools/internal/event/label"],
)

11
go/extractor/vendor/golang.org/x/tools/internal/event/label/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,11 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "label",
srcs = ["label.go"],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/tools/internal/event/label",
importpath = "golang.org/x/tools/internal/event/label",
visibility = ["//go/extractor/vendor/golang.org/x/tools:__subpackages__"],
)

12
go/extractor/vendor/golang.org/x/tools/internal/event/tag/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,12 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "tag",
srcs = ["tag.go"],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/tools/internal/event/tag",
importpath = "golang.org/x/tools/internal/event/tag",
visibility = ["//go/extractor/vendor/golang.org/x/tools:__subpackages__"],
deps = ["//go/extractor/vendor/golang.org/x/tools/internal/event/keys"],
)

29
go/extractor/vendor/golang.org/x/tools/internal/gcimporter/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,29 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "gcimporter",
srcs = [
"bimport.go",
"exportdata.go",
"gcimporter.go",
"iexport.go",
"iimport.go",
"newInterface10.go",
"newInterface11.go",
"support_go117.go",
"support_go118.go",
"unified_no.go",
"ureader_no.go",
"ureader_yes.go",
],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/tools/internal/gcimporter",
importpath = "golang.org/x/tools/internal/gcimporter",
visibility = ["//go/extractor/vendor/golang.org/x/tools:__subpackages__"],
deps = [
"//go/extractor/vendor/golang.org/x/tools/go/types/objectpath",
"//go/extractor/vendor/golang.org/x/tools/internal/pkgbits",
"//go/extractor/vendor/golang.org/x/tools/internal/tokeninternal",
],
)

22
go/extractor/vendor/golang.org/x/tools/internal/gocommand/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,22 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "gocommand",
srcs = [
"invoke.go",
"vendor.go",
"version.go",
],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/tools/internal/gocommand",
importpath = "golang.org/x/tools/internal/gocommand",
visibility = ["//go/extractor/vendor/golang.org/x/tools:__subpackages__"],
deps = [
"//go/extractor/vendor/golang.org/x/mod/semver",
"//go/extractor/vendor/golang.org/x/tools/internal/event",
"//go/extractor/vendor/golang.org/x/tools/internal/event/keys",
"//go/extractor/vendor/golang.org/x/tools/internal/event/label",
"//go/extractor/vendor/golang.org/x/tools/internal/event/tag",
],
)

11
go/extractor/vendor/golang.org/x/tools/internal/packagesinternal/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,11 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "packagesinternal",
srcs = ["packages.go"],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/tools/internal/packagesinternal",
importpath = "golang.org/x/tools/internal/packagesinternal",
visibility = ["//go/extractor/vendor/golang.org/x/tools:__subpackages__"],
)

23
go/extractor/vendor/golang.org/x/tools/internal/pkgbits/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,23 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "pkgbits",
srcs = [
"codes.go",
"decoder.go",
"doc.go",
"encoder.go",
"flags.go",
"frames_go1.go",
"frames_go17.go",
"reloc.go",
"support.go",
"sync.go",
"syncmarker_string.go",
],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/tools/internal/pkgbits",
importpath = "golang.org/x/tools/internal/pkgbits",
visibility = ["//go/extractor/vendor/golang.org/x/tools:__subpackages__"],
)

11
go/extractor/vendor/golang.org/x/tools/internal/tokeninternal/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,11 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "tokeninternal",
srcs = ["tokeninternal.go"],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/tools/internal/tokeninternal",
importpath = "golang.org/x/tools/internal/tokeninternal",
visibility = ["//go/extractor/vendor/golang.org/x/tools:__subpackages__"],
)

17
go/extractor/vendor/golang.org/x/tools/internal/typeparams/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,17 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "typeparams",
srcs = [
"common.go",
"coretype.go",
"normalize.go",
"termlist.go",
"typeterm.go",
],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/tools/internal/typeparams",
importpath = "golang.org/x/tools/internal/typeparams",
visibility = ["//go/extractor/vendor/golang.org/x/tools:__subpackages__"],
)

16
go/extractor/vendor/golang.org/x/tools/internal/typesinternal/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,16 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "typesinternal",
srcs = [
"errorcode.go",
"errorcode_string.go",
"types.go",
"types_118.go",
],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/tools/internal/typesinternal",
importpath = "golang.org/x/tools/internal/typesinternal",
visibility = ["//go/extractor/vendor/golang.org/x/tools:__subpackages__"],
)

17
go/extractor/vendor/golang.org/x/tools/internal/versions/BUILD.bazel сгенерированный поставляемый Normal file
Просмотреть файл

@ -0,0 +1,17 @@
# generated running `bazel run //go/gazelle`, do not edit
load("@rules_go//go:def.bzl", "go_library")
go_library(
name = "versions",
srcs = [
"gover.go",
"types.go",
"types_go121.go",
"types_go122.go",
"versions.go",
],
importmap = "github.com/github/codeql-go/extractor/vendor/golang.org/x/tools/internal/versions",
importpath = "golang.org/x/tools/internal/versions",
visibility = ["//go/extractor/vendor/golang.org/x/tools:__subpackages__"],
)

1
go/extractor/vendor/modules.txt поставляемый
Просмотреть файл

@ -1,3 +1,4 @@
## workspace
# golang.org/x/mod v0.15.0
## explicit; go 1.18
golang.org/x/mod/internal/lazyregexp

75
go/gen.py Normal file
Просмотреть файл

@ -0,0 +1,75 @@
"""
Update generated files related to Go in the repo. Using --force will regenerate all files from scratch.
In particular the script will:
1. update the `vendor` dir with `go work vendor` (using a go toolchain provided by bazel)
2. update `BUILD.bazel` files using gazelle
3. update `ql/lib/go.dbscheme` using a compiled `go-dbschemegen`
"""
import sys
import pathlib
import subprocess
import os
import argparse
import shutil
from python.runfiles import runfiles
def options():
p = argparse.ArgumentParser(description="Update generated files related to Go in the repo")
p.add_argument("--force", "-f", action="store_true", help="Regenerate all files from scratch rather than updating them")
p.add_argument("executables", nargs=3, help="Internally provided executables")
return p.parse_args()
opts = options()
try:
workspace_dir = pathlib.Path(os.environ.pop('BUILD_WORKSPACE_DIRECTORY'))
except KeyError:
print("this should be run with bazel run", file=sys.stderr)
sys.exit(1)
go_extractor_dir = workspace_dir / "go" / "extractor"
if not go_extractor_dir.exists():
# internal repo?
workspace_dir /= "ql"
go_extractor_dir = workspace_dir / "go" / "extractor"
go_dbscheme = workspace_dir / "go" / "ql" / "lib" / "go.dbscheme"
r = runfiles.Create()
go, gazelle, go_gen_dbscheme = map(r.Rlocation, opts.executables)
if opts.force:
print("clearing vendor directory")
shutil.rmtree(go_extractor_dir / "vendor")
existing_build_files = set(go_extractor_dir.glob("*/**/BUILD.bazel"))
print("updating vendor directory")
subprocess.check_call([go, "-C", go_extractor_dir, "work", "vendor"])
if opts.force:
print("clearing generated BUILD files")
for build_file in existing_build_files:
build_file.unlink()
print("running gazelle", gazelle, go_extractor_dir)
subprocess.check_call([gazelle, "go/extractor"], cwd=workspace_dir)
# we want to stamp all newly generated `BUILD.bazel` files with a header
build_files_to_update = set(go_extractor_dir.glob("*/**/BUILD.bazel"))
# if --force, all files are new
if not opts.force:
# otherwise, subtract the files that existed at the start
build_files_to_update -= existing_build_files
# but bring back the `vendor` ones, as the vendor update step always clears them
build_files_to_update.update(go_extractor_dir.glob("vendor/**/BUILD.bazel"))
print("adding header to newly generated BUILD files")
for build_file in build_files_to_update:
contents = build_file.read_text()
build_file.write_text(f"# generated running `bazel run //go/gazelle`, do not edit\n\n{contents}")
subprocess.check_call([go_gen_dbscheme, go_dbscheme])

37
go/rules.bzl Normal file
Просмотреть файл

@ -0,0 +1,37 @@
load("@rules_go//go:def.bzl", "go_binary", "go_cross_binary")
def codeql_go_binary(*, name, visibility = None, **kwargs):
def internal(prefix = "internal"):
return "%s/%s" % (prefix, name)
go_binary(
name = internal(),
visibility = ["//visibility:private"],
**kwargs
)
macos_targets = ("darwin_arm64", "darwin_amd64")
for target in macos_targets:
go_cross_binary(
name = internal(target),
platform = "@rules_go//go/toolchain:%s" % target,
target = internal(),
target_compatible_with = ["@platforms//os:macos"],
visibility = ["//visibility:private"],
)
native.genrule(
name = internal("universal"),
outs = [internal("universal_")],
srcs = [internal(t) for t in macos_targets],
target_compatible_with = ["@platforms//os:macos"],
executable = True,
visibility = ["//visibility:private"],
cmd = "lipo -create $(SRCS) -output $@",
)
native.alias(
name = name,
actual = select({
"@platforms//os:macos": internal("universal"),
"//conditions:default": internal(),
}),
visibility = visibility,
)