From fb85c8fca49731ebd890bd4add4bd935c73342b5 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Mon, 8 Dec 2025 10:33:15 -0500 Subject: [PATCH 1/4] Distinguish between with-sanitizer and without-sanitizer dependencies --- src/Dependencies.jl | 3 ++- test/dependencies.jl | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Dependencies.jl b/src/Dependencies.jl index 2e52ad32..eb218a44 100644 --- a/src/Dependencies.jl +++ b/src/Dependencies.jl @@ -267,9 +267,10 @@ getname(x::AbstractDependency) = getname(getpkg(x)) filter_platforms(deps::AbstractVector{<:AbstractDependency}, p::AbstractPlatform) Filter the dependencies `deps` which are compatible with platform `p`. +Here "compatible" includes whether and which sanitizer is enabled. """ filter_platforms(deps::AbstractVector{<:AbstractDependency}, p::AbstractPlatform) = - [dep for dep in deps if any(x -> platforms_match(x, p), dep.platforms)] + [dep for dep in deps if any(x -> platforms_match_with_sanitize(x, p), dep.platforms)] # Wrapper around `Pkg.Types.registry_resolve!` which keeps the type of the # dependencies. TODO: improve this diff --git a/test/dependencies.jl b/test/dependencies.jl index be9542db..cf29bbd5 100644 --- a/test/dependencies.jl +++ b/test/dependencies.jl @@ -120,9 +120,13 @@ end top_level_dep = RuntimeDependency(PackageSpec(; name = top_level_name); top_level=true) @test is_top_level_dependency(top_level_dep) + dep_no_sanitizer = Platform("x86_64", "linux") + dep_with_sanitizer = Platform("x86_64", "linux"; sanitizer="memory") @testset "Filter dependencies by platform" begin @test filter_platforms([dep, dep_buildver, dep_compat], Platform("x86_64", "linux"; cxxstring_abi="cxx03")) == [dep_compat] @test filter_platforms([dep, dep_buildver, dep_compat], Platform("x86_64", "macos")) == [dep, dep_compat] + @test filter_platforms([dep_no_sanitizer, dep_with_sanitizer], dep_no_sanitizer) == [dep_no_sanitizer] + @test filter_platforms([dep_no_sanitizer, dep_with_sanitizer], dep_with_sanitizer) == [dep_with_sanitizer] end @testset "JSON (de)serialization" begin From 6007c7fb82918d9723c280fdcfb201164d5c907b Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Mon, 8 Dec 2025 10:52:20 -0500 Subject: [PATCH 2/4] More filter_platform tests --- test/dependencies.jl | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/test/dependencies.jl b/test/dependencies.jl index cf29bbd5..06c5a46d 100644 --- a/test/dependencies.jl +++ b/test/dependencies.jl @@ -120,13 +120,19 @@ end top_level_dep = RuntimeDependency(PackageSpec(; name = top_level_name); top_level=true) @test is_top_level_dependency(top_level_dep) - dep_no_sanitizer = Platform("x86_64", "linux") - dep_with_sanitizer = Platform("x86_64", "linux"; sanitizer="memory") + plat_nosan = Platform("x86_64", "linux") + plat_msan = Platform("x86_64", "linux"; sanitizer="memory") + plat_asan = Platform("x86_64", "linux"; sanitizer="address") + dep_nosan = Dependency(name; platforms[plat_nosan]) + dep_msan = Dependency(name; platforms[plat_msan]) + dep_asan = Dependency(name; platforms[plat_asan]) + dep_allsans = Dependency(name; platforms[plat_nosan, plat_msan, plat_asan]) @testset "Filter dependencies by platform" begin @test filter_platforms([dep, dep_buildver, dep_compat], Platform("x86_64", "linux"; cxxstring_abi="cxx03")) == [dep_compat] @test filter_platforms([dep, dep_buildver, dep_compat], Platform("x86_64", "macos")) == [dep, dep_compat] - @test filter_platforms([dep_no_sanitizer, dep_with_sanitizer], dep_no_sanitizer) == [dep_no_sanitizer] - @test filter_platforms([dep_no_sanitizer, dep_with_sanitizer], dep_with_sanitizer) == [dep_with_sanitizer] + @test filter_platforms([dep_nosan, dep_msan, dep_asan, dep_allsans], plat_nosan) == [dep_nosan, dep_allsans] + @test filter_platforms([dep_nosan, dep_msan, dep_asan, dep_allsans], plat_msan) == [dep_msan, dep_allsans] + @test filter_platforms([dep_nosan, dep_msan, dep_asan, dep_allsans], plat_asan) == [dep_asan, dep_allsans] end @testset "JSON (de)serialization" begin From a5b4f5101f3684eb425a897e440e11428d81d590 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Mon, 8 Dec 2025 11:00:08 -0500 Subject: [PATCH 3/4] Correct code --- test/dependencies.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/dependencies.jl b/test/dependencies.jl index 06c5a46d..f177291d 100644 --- a/test/dependencies.jl +++ b/test/dependencies.jl @@ -123,10 +123,10 @@ end plat_nosan = Platform("x86_64", "linux") plat_msan = Platform("x86_64", "linux"; sanitizer="memory") plat_asan = Platform("x86_64", "linux"; sanitizer="address") - dep_nosan = Dependency(name; platforms[plat_nosan]) - dep_msan = Dependency(name; platforms[plat_msan]) - dep_asan = Dependency(name; platforms[plat_asan]) - dep_allsans = Dependency(name; platforms[plat_nosan, plat_msan, plat_asan]) + dep_nosan = Dependency(name; platforms=[plat_nosan]) + dep_msan = Dependency(name; platforms=[plat_msan]) + dep_asan = Dependency(name; platforms=[plat_asan]) + dep_allsans = Dependency(name; platforms=[plat_nosan, plat_msan, plat_asan]) @testset "Filter dependencies by platform" begin @test filter_platforms([dep, dep_buildver, dep_compat], Platform("x86_64", "linux"; cxxstring_abi="cxx03")) == [dep_compat] @test filter_platforms([dep, dep_buildver, dep_compat], Platform("x86_64", "macos")) == [dep, dep_compat] From 5fe02f0ae7e72c3167ca60848c112caeff4dd8c4 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Mon, 8 Dec 2025 11:27:00 -0500 Subject: [PATCH 4/4] Correct `sanitize` keyword --- test/dependencies.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/dependencies.jl b/test/dependencies.jl index f177291d..4e23172d 100644 --- a/test/dependencies.jl +++ b/test/dependencies.jl @@ -121,8 +121,8 @@ end @test is_top_level_dependency(top_level_dep) plat_nosan = Platform("x86_64", "linux") - plat_msan = Platform("x86_64", "linux"; sanitizer="memory") - plat_asan = Platform("x86_64", "linux"; sanitizer="address") + plat_msan = Platform("x86_64", "linux"; sanitize="memory") + plat_asan = Platform("x86_64", "linux"; sanitize="address") dep_nosan = Dependency(name; platforms=[plat_nosan]) dep_msan = Dependency(name; platforms=[plat_msan]) dep_asan = Dependency(name; platforms=[plat_asan])