From 56e84d35deef8aea2b0beda2ec14ca22334a7f0f Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Fri, 6 Jun 2025 08:03:15 -0400 Subject: wrap: wraps from subprojects can replace directories found with no wrap If main project finds a directory subprojects/foo with no corresponding foo.wrap, it creates a dummy PackageDefinition for it. If we later find a subproject that has foo.wrap, replace the dummy wrap with it. This happens for example when wrap-redirect have been deleted. It also happens for subprojects downloaded from some Cargo.lock which does not create a wrap-redirect. Avoid loading the same location twice, which can happen when preparing cargo subprojects. --- test cases/common/282 wrap override/meson.build | 8 ++++++++ test cases/common/282 wrap override/subprojects/sub/meson.build | 7 +++++++ .../282 wrap override/subprojects/sub/subprojects/subsub.wrap | 5 +++++ .../common/282 wrap override/subprojects/subsub/meson.build | 5 +++++ 4 files changed, 25 insertions(+) create mode 100644 test cases/common/282 wrap override/meson.build create mode 100644 test cases/common/282 wrap override/subprojects/sub/meson.build create mode 100644 test cases/common/282 wrap override/subprojects/sub/subprojects/subsub.wrap create mode 100644 test cases/common/282 wrap override/subprojects/subsub/meson.build (limited to 'test cases/common') diff --git a/test cases/common/282 wrap override/meson.build b/test cases/common/282 wrap override/meson.build new file mode 100644 index 000000000..76c84d6a1 --- /dev/null +++ b/test cases/common/282 wrap override/meson.build @@ -0,0 +1,8 @@ +project('wrap override') + + +subproject('sub') + +# sub has subsub.wrap that provides subsub-1.0 dependency. Even if sub itself +# does not use it, that dependency should now be available. +dependency('subsub-1.0') diff --git a/test cases/common/282 wrap override/subprojects/sub/meson.build b/test cases/common/282 wrap override/subprojects/sub/meson.build new file mode 100644 index 000000000..abefb30fc --- /dev/null +++ b/test cases/common/282 wrap override/subprojects/sub/meson.build @@ -0,0 +1,7 @@ +project('sub') + +# Simulate an optional feature that requires subsub.wrap, but that feature is +# not enabled. +if false + dependency('subsub-1.0') +endif diff --git a/test cases/common/282 wrap override/subprojects/sub/subprojects/subsub.wrap b/test cases/common/282 wrap override/subprojects/sub/subprojects/subsub.wrap new file mode 100644 index 000000000..85a1a7c51 --- /dev/null +++ b/test cases/common/282 wrap override/subprojects/sub/subprojects/subsub.wrap @@ -0,0 +1,5 @@ +[wrap-file] + + +[provide] +dependency_names = subsub-1.0 diff --git a/test cases/common/282 wrap override/subprojects/subsub/meson.build b/test cases/common/282 wrap override/subprojects/subsub/meson.build new file mode 100644 index 000000000..668dcb3b0 --- /dev/null +++ b/test cases/common/282 wrap override/subprojects/subsub/meson.build @@ -0,0 +1,5 @@ +project('sub') + +# This simulates a subproject we previously downloaded using +# subproject/sub/subproject/subsub.wrap +meson.override_dependency('subsub-1.0', declare_dependency()) -- cgit v1.2.3