File 0369-Fix-update_deprecations-script.patch of Package erlang
From 824b51973fdb3847e237c511794bddd7831b129d Mon Sep 17 00:00:00 2001
From: Rickard Green <rickard@erlang.org>
Date: Mon, 24 Feb 2025 17:33:29 +0100
Subject: [PATCH] Fix update_deprecations script
The script didn't produce results for an OTP release unless there was an MFA
deprecated, scheduled for release, or removed for the release.
---
lib/stdlib/scripts/update_deprecations | 66 ++++++++++++++++++++------
1 file changed, 52 insertions(+), 14 deletions(-)
diff --git a/lib/stdlib/scripts/update_deprecations b/lib/stdlib/scripts/update_deprecations
index 24de61076e..579b7bd316 100755
--- a/lib/stdlib/scripts/update_deprecations
+++ b/lib/stdlib/scripts/update_deprecations
@@ -248,7 +248,7 @@ make_markdown(Top, Type, OutFile, InfoText0) ->
end,
InfoTextMap = maps:from_list(make_markdown_info(InfoText0, AttrTag)),
- Collected = make_markdown_collect(Depr, RelKey, InfoTextMap, []),
+ CollectedMFAs = make_markdown_collect(Depr, RelKey, InfoTextMap, []),
case Type of
"removed" ->
@@ -266,12 +266,13 @@ make_markdown(Top, Type, OutFile, InfoText0) ->
false ->
ok
end
- end, Collected);
+ end, CollectedMFAs);
_ ->
ok
end,
-
- All = make_markdown_gen(lists:reverse(Collected), Type, OutDir),
+ TemplCollected = collect_template_rels(OutDir, Type),
+ MergedCollected = merge_collected(TemplCollected, CollectedMFAs),
+ All = make_markdown_gen(lists:reverse(MergedCollected), Type, OutDir),
ok = file:write_file(OutFile, All).
make_markdown_info([{Tag,M,F,A,Text} | Attributes], Tag) ->
@@ -308,17 +309,21 @@ make_markdown_gen(Collected, Type, Dir) ->
make_gen_list([{Rel,MFAs}|T], Type, Dir) ->
RelStr = lists:concat(["OTP ",Rel]),
Head = ["## ",RelStr,"\n\n"],
- SubTitle = case Type of
- "deprecations" ->
- ["Functions Deprecated in ",RelStr];
- "scheduled_for_removal" ->
- ["Functions Scheduled for Removal in ",RelStr];
- "removed" ->
- ["Functions Removed in ",RelStr]
- end,
- SubHead = ["### ",SubTitle,"\n\n"],
[string:trim([Head, get_template(Dir, Type, Rel)]), "\n\n",
- string:trim([SubHead, make_gen_mfas(MFAs)]), "\n\n" |
+ [if MFAs == [] ->
+ [];
+ true ->
+ SubTitle = case Type of
+ "deprecations" ->
+ ["Functions Deprecated in ",RelStr];
+ "scheduled_for_removal" ->
+ ["Functions Scheduled for Removal in ",RelStr];
+ "removed" ->
+ ["Functions Removed in ",RelStr]
+ end,
+ SubHead = ["### ",SubTitle,"\n\n"],
+ [string:trim([SubHead, make_gen_mfas(MFAs)]), "\n\n"]
+ end] |
make_gen_list(T, Type, Dir)];
make_gen_list([], _, _) ->
[].
@@ -339,6 +344,39 @@ get_template(Dir, Prefix, Key) ->
[]
end.
+collect_template_rels(Dir, Prefix) ->
+ FileNamePrefix = Prefix++"_",
+ {ok, FileNames} = file:list_dir(Dir),
+ TemplRels = lists:foldl(fun (FileName, Acc) ->
+ try
+ Suffix = string:prefix(FileName,
+ FileNamePrefix),
+ [RelStr, "md"] = string:split(Suffix,
+ "."),
+ Rel = list_to_integer(RelStr),
+ [{Rel, []}|Acc]
+ catch
+ _ : _ ->
+ Acc
+ end
+ end,
+ [],
+ FileNames),
+ lists:keysort(1, TemplRels).
+
+merge_collected([{Rel, []} | WithoutMFAs], [{Rel, _} = Use | WithMFAs]) ->
+ [Use | merge_collected(WithoutMFAs, WithMFAs)];
+merge_collected([{RelA, []} = Use | WithoutMFAs],
+ [{RelB, _} | _] = WithMFAs) when RelA < RelB ->
+ [Use | merge_collected(WithoutMFAs, WithMFAs)];
+merge_collected([{_RelA, []} | _] = WithoutMFAs,
+ [{_RelB, _} = Use | WithMFAs]) ->
+ [Use | merge_collected(WithoutMFAs, WithMFAs)];
+merge_collected([], WithMFAs) ->
+ WithMFAs;
+merge_collected(WithoutMFAs, []) ->
+ WithoutMFAs.
+
%%%
%%% Cross-checks deprecations against DEPRECATIONS file.
%%%
--
2.43.0