mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +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
|
# links created by bazel
|
||||||
/bazel-*
|
/bazel-*
|
||||||
|
|
||||||
|
# local bazel options
|
||||||
|
/local.bazelrc
|
||||||
|
|
||||||
# CLion project files
|
# CLion project files
|
||||||
/.clwb
|
/.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,
|
_swift_prebuilt_version,
|
||||||
repo_arch,
|
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,
|
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",
|
"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//:mappings.bzl", "pkg_attributes", "pkg_filegroup", "pkg_files", "strip_prefix")
|
||||||
load("@rules_pkg//:install.bzl", "pkg_install")
|
load("@rules_pkg//:install.bzl", "pkg_install")
|
||||||
load("//:defs.bzl", "codeql_platform")
|
load("//:defs.bzl", "codeql_platform")
|
||||||
|
load("//misc/bazel:pkg_runfiles.bzl", "pkg_runfiles")
|
||||||
|
|
||||||
filegroup(
|
filegroup(
|
||||||
name = "dbscheme",
|
name = "dbscheme",
|
||||||
@@ -45,24 +46,15 @@ pkg_filegroup(
|
|||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
)
|
)
|
||||||
|
|
||||||
pkg_files(
|
pkg_runfiles(
|
||||||
name = "extractor",
|
name = "extractor",
|
||||||
srcs = ["//swift/extractor"],
|
srcs = ["//swift/extractor"],
|
||||||
attributes = pkg_attributes(mode = "0755"),
|
|
||||||
prefix = "tools/" + codeql_platform,
|
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(
|
pkg_files(
|
||||||
name = "swift-test-sdk-arch",
|
name = "swift-test-sdk-arch",
|
||||||
srcs = [":swift-test-sdk"],
|
srcs = ["//swift/tools/prebuilt:swift-test-sdk"],
|
||||||
prefix = "qltest/" + codeql_platform,
|
prefix = "qltest/" + codeql_platform,
|
||||||
strip_prefix = strip_prefix.from_pkg(),
|
strip_prefix = strip_prefix.from_pkg(),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,13 +1,5 @@
|
|||||||
load("//swift:rules.bzl", "swift_cc_binary")
|
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(
|
swift_cc_binary(
|
||||||
name = "extractor",
|
name = "extractor",
|
||||||
srcs = [
|
srcs = [
|
||||||
@@ -18,7 +10,7 @@ swift_cc_binary(
|
|||||||
],
|
],
|
||||||
visibility = ["//swift:__pkg__"],
|
visibility = ["//swift:__pkg__"],
|
||||||
deps = [
|
deps = [
|
||||||
":swift-llvm-support",
|
"//swift/tools/prebuilt:swift-llvm-support",
|
||||||
"//swift/extractor/trap",
|
"//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
|
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
|
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