aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2023-07-19 13:22:20 -0700
committerXavier Claessens <xclaesse@gmail.com>2023-07-20 14:20:46 -0400
commitd7acccd36dcf1b62f144eb7389a5e221fe824be4 (patch)
treef3a3dd25423dd52e44c12f0df994f3bd22be96e9
parenta62a42b272923f95b7aeb30f0196cfdf3b251264 (diff)
downloadmeson-d7acccd36dcf1b62f144eb7389a5e221fe824be4.zip
meson-d7acccd36dcf1b62f144eb7389a5e221fe824be4.tar.gz
meson-d7acccd36dcf1b62f144eb7389a5e221fe824be4.tar.bz2
interpreter: deprecate 'jar' value of build_target(target_type)
Jar has a very low set of overlap with other target types, including that jar sources *must* be .java, and no other target allows .java sources. As such, the difficulty in crafting a useful `build_target` invocation that allows both `jar` and anything else is high, and the usefulness is dubious. Just use `jar()` directly instead. This depends on the changes to make all of the jar() specific keyword arguments be handled by typed_kwargs so that the deprecation messages are correct and consistent.
-rw-r--r--docs/markdown/snippets/deprecate_build_target_jar.md8
-rw-r--r--docs/yaml/functions/build_target.yaml7
-rw-r--r--mesonbuild/interpreter/type_checking.py6
3 files changed, 18 insertions, 3 deletions
diff --git a/docs/markdown/snippets/deprecate_build_target_jar.md b/docs/markdown/snippets/deprecate_build_target_jar.md
new file mode 100644
index 0000000..992903e
--- /dev/null
+++ b/docs/markdown/snippets/deprecate_build_target_jar.md
@@ -0,0 +1,8 @@
+## Deprecate 'jar' as a build_target type
+
+The point of `build_target()` is that what is produced can be conditionally
+changed. However, `jar()` has a significant number of non-overlapping arguments
+from other build_targets, including the kinds of sources it can include. Because
+of this crafting a `build_target` that can be used as a Jar and as something
+else is incredibly hard to do. As such, it has been deprecated, and using
+`jar()` directly is recomended.
diff --git a/docs/yaml/functions/build_target.yaml b/docs/yaml/functions/build_target.yaml
index 48385f2..74d45f0 100644
--- a/docs/yaml/functions/build_target.yaml
+++ b/docs/yaml/functions/build_target.yaml
@@ -12,7 +12,7 @@ description: |
- `static_library` (see [[static_library]])
- `both_libraries` (see [[both_libraries]])
- `library` (see [[library]])
- - `jar` (see [[jar]])
+ - `jar` (see [[jar]])*
This declaration:
@@ -32,6 +32,9 @@ description: |
The returned object also has methods that are documented in [[@build_tgt]].
+ *"jar" is deprecated because it is fundementally a different thing than the
+ other build_target types.
+
posargs_inherit: _build_target_base
varargs_inherit: _build_target_base
kwargs_inherit:
@@ -42,4 +45,4 @@ kwargs_inherit:
kwargs:
target_type:
type: str
- description: The actual target to build
+ description: The actual target type to build
diff --git a/mesonbuild/interpreter/type_checking.py b/mesonbuild/interpreter/type_checking.py
index 7c615c2..206a2e6 100644
--- a/mesonbuild/interpreter/type_checking.py
+++ b/mesonbuild/interpreter/type_checking.py
@@ -555,7 +555,8 @@ LIBRARY_KWS = [
BUILD_TARGET_KWS = [
*LIBRARY_KWS,
*_EXCLUSIVE_EXECUTABLE_KWS,
- *_EXCLUSIVE_JAR_KWS,
+ *[a.evolve(deprecated='1.3.0', deprecated_message='The use of "jar" in "build_target()" is deprecated, and this argument is only used by jar()')
+ for a in _EXCLUSIVE_JAR_KWS],
KwargInfo(
'target_type',
str,
@@ -566,6 +567,9 @@ BUILD_TARGET_KWS = [
}),
since_values={
'shared_module': '0.51.0',
+ },
+ deprecated_values={
+ 'jar': ('1.3.0', 'use the "jar()" function directly'),
}
)
]