mirror of
https://github.com/github/codeql.git
synced 2025-12-16 08:43:11 +01:00
Swift: enable dynamic mode
Providing `--dynamic_mode=fully` (for example setting it in `local.bazelrc`) will now work. All runfiles are now copied in the extractor pack: in dynamic mode, those will be the executable and the dynamic libraries, while in static mode only the executable will be part of the runfiles. Setting the correct `LD_LIBRARY_PATH` in `qltest.sh` then allows to run tests with this pakcage. If we need something more, we can switch to a wrapper script in place of `extractor` in the future. Notice that `LD_LIBRARY_PATH` is also set in static mode, but that has no consequence.
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -37,5 +37,8 @@ csharp/extractor/Semmle.Extraction.CSharp.Driver/Properties/launchSettings.json
|
||||
# links created by bazel
|
||||
/bazel-*
|
||||
|
||||
# local bazel options
|
||||
/local.bazelrc
|
||||
|
||||
# CLion project files
|
||||
/.clwb
|
||||
|
||||
33
misc/bazel/pkg_runfiles.bzl
Normal file
33
misc/bazel/pkg_runfiles.bzl
Normal file
@@ -0,0 +1,33 @@
|
||||
load("@rules_pkg//:mappings.bzl", "pkg_attributes", "pkg_files")
|
||||
|
||||
def _runfiles_group_impl(ctx):
|
||||
files = []
|
||||
for src in ctx.attr.srcs:
|
||||
rf = src[DefaultInfo].default_runfiles
|
||||
if rf != None:
|
||||
files.append(rf.files)
|
||||
return [
|
||||
DefaultInfo(
|
||||
files = depset(transitive = files),
|
||||
),
|
||||
]
|
||||
|
||||
_runfiles_group = rule(
|
||||
implementation = _runfiles_group_impl,
|
||||
attrs = {
|
||||
"srcs": attr.label_list(),
|
||||
},
|
||||
)
|
||||
|
||||
def pkg_runfiles(*, name, srcs, **kwargs):
|
||||
internal_name = "_%s_runfiles" % name
|
||||
_runfiles_group(
|
||||
name = internal_name,
|
||||
srcs = srcs,
|
||||
)
|
||||
kwargs.setdefault("attributes", pkg_attributes(mode = "0755"))
|
||||
pkg_files(
|
||||
name = name,
|
||||
srcs = [internal_name],
|
||||
**kwargs
|
||||
)
|
||||
@@ -22,7 +22,7 @@ def codeql_workspace(repository_name = "codeql"):
|
||||
_swift_prebuilt_version,
|
||||
repo_arch,
|
||||
),
|
||||
build_file = "@%s//swift/extractor:BUILD.swift-prebuilt.bazel" % repository_name,
|
||||
build_file = "@%s//swift/tools/prebuilt:BUILD.swift-prebuilt.bazel" % repository_name,
|
||||
sha256 = sha256,
|
||||
)
|
||||
|
||||
@@ -55,4 +55,3 @@ def codeql_workspace(repository_name = "codeql"):
|
||||
"https://github.com/bazelbuild/rules_python/archive/refs/tags/0.8.1.tar.gz",
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
load("@rules_pkg//:mappings.bzl", "pkg_attributes", "pkg_filegroup", "pkg_files", "strip_prefix")
|
||||
load("@rules_pkg//:install.bzl", "pkg_install")
|
||||
load("//:defs.bzl", "codeql_platform")
|
||||
load("//misc/bazel:pkg_runfiles.bzl", "pkg_runfiles")
|
||||
|
||||
filegroup(
|
||||
name = "dbscheme",
|
||||
@@ -45,24 +46,15 @@ pkg_filegroup(
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
||||
pkg_files(
|
||||
pkg_runfiles(
|
||||
name = "extractor",
|
||||
srcs = ["//swift/extractor"],
|
||||
attributes = pkg_attributes(mode = "0755"),
|
||||
prefix = "tools/" + codeql_platform,
|
||||
)
|
||||
|
||||
alias(
|
||||
name = "swift-test-sdk",
|
||||
actual = select({
|
||||
"@bazel_tools//src/conditions:%s" % arch: "@swift_prebuilt_%s//:swift-test-sdk" % arch
|
||||
for arch in ("linux", "darwin_x86_64", "darwin_arm64")
|
||||
}),
|
||||
)
|
||||
|
||||
pkg_files(
|
||||
name = "swift-test-sdk-arch",
|
||||
srcs = [":swift-test-sdk"],
|
||||
srcs = ["//swift/tools/prebuilt:swift-test-sdk"],
|
||||
prefix = "qltest/" + codeql_platform,
|
||||
strip_prefix = strip_prefix.from_pkg(),
|
||||
)
|
||||
|
||||
@@ -1,13 +1,5 @@
|
||||
load("//swift:rules.bzl", "swift_cc_binary")
|
||||
|
||||
alias(
|
||||
name = "swift-llvm-support",
|
||||
actual = select({
|
||||
"@bazel_tools//src/conditions:%s" % arch: "@swift_prebuilt_%s//:swift-llvm-support" % arch
|
||||
for arch in ("linux", "darwin_x86_64", "darwin_arm64")
|
||||
}),
|
||||
)
|
||||
|
||||
swift_cc_binary(
|
||||
name = "extractor",
|
||||
srcs = [
|
||||
@@ -18,7 +10,7 @@ swift_cc_binary(
|
||||
],
|
||||
visibility = ["//swift:__pkg__"],
|
||||
deps = [
|
||||
":swift-llvm-support",
|
||||
"//swift/tools/prebuilt:swift-llvm-support",
|
||||
"//swift/extractor/trap",
|
||||
],
|
||||
)
|
||||
|
||||
11
swift/tools/prebuilt/BUILD.bazel
Normal file
11
swift/tools/prebuilt/BUILD.bazel
Normal file
@@ -0,0 +1,11 @@
|
||||
package(default_visibility = ["//swift:__subpackages__"])
|
||||
|
||||
[
|
||||
alias(
|
||||
name = name,
|
||||
actual = select({
|
||||
"@bazel_tools//src/conditions:%s" % arch: "@swift_prebuilt_%s//:%s" % (arch, name)
|
||||
for arch in ("linux", "darwin_x86_64", "darwin_arm64")
|
||||
}),
|
||||
) for name in ("swift-llvm-support", "swift-test-sdk")
|
||||
]
|
||||
@@ -4,4 +4,6 @@ mkdir -p "$CODEQL_EXTRACTOR_SWIFT_TRAP_DIR"
|
||||
|
||||
QLTEST_LOG="$CODEQL_EXTRACTOR_SWIFT_LOG_DIR"/qltest.log
|
||||
|
||||
export LD_LIBRARY_PATH="$CODEQL_EXTRACTOR_SWIFT_ROOT/tools/$CODEQL_PLATFORM"
|
||||
|
||||
exec "$CODEQL_EXTRACTOR_SWIFT_ROOT/tools/$CODEQL_PLATFORM/extractor" -sdk "$CODEQL_EXTRACTOR_SWIFT_ROOT/qltest/$CODEQL_PLATFORM/sdk" -c *.swift >> $QLTEST_LOG 2>&1
|
||||
|
||||
Reference in New Issue
Block a user