From: Eugene Syromiatnikov Date: Fri, 29 Aug 2025 07:11:23 +0000 (+0200) Subject: util/find-doc-nits: do not check files in submodules in check_env_vars X-Git-Tag: openssl-3.6.0-beta1~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=943b4943192c698fe63ee85f738fea1219aaeb0e;p=thirdparty%2Fopenssl.git util/find-doc-nits: do not check files in submodules in check_env_vars The reports about undocumented environment variables coming from files in submodules are superfluous; get the list of directories from .gitmodules and exclude them from processing. Resolves: https://github.com/openssl/openssl/issues/28109 Signed-off-by: Eugene Syromiatnikov Reviewed-by: Richard Levitte Reviewed-by: Tomas Mraz Reviewed-by: Neil Horman (Merged from https://github.com/openssl/openssl/pull/28378) (cherry picked from commit 876188d8a308babf1d24f27f5a838bca044d1d32) --- diff --git a/util/find-doc-nits b/util/find-doc-nits index b23d68f861a..9bc24a27e2b 100755 --- a/util/find-doc-nits +++ b/util/find-doc-nits @@ -1281,6 +1281,10 @@ sub check_env_vars { # initialized with the list of "untracable" variables my %env_list = ("SSL_CERT_FILE" => 1); my @env_files; + my @except_dirs = ( + "$config{sourcedir}/demos", + "$config{sourcedir}/test", + ); my @except_env_files = ( "$config{sourcedir}/providers/implementations/keymgmt/template_kmgmt.c", "$config{sourcedir}/providers/implementations/kem/template_kem.c", @@ -1289,12 +1293,42 @@ sub check_env_vars { my @env_headers; my @env_macro; + # Add submodules to the except_dirs + my $git_ok = 0; + open my $gs_pipe, '-|', "git config get --all " + . "--file \"$config{sourcedir}/.gitmodules\" " + . "--regexp '.*.path\$'"; + while (<$gs_pipe>) { + $git_ok = 1; + s/\R$//; # better chomp + print STDERR "DEBUG[check_env_vars]: adding \"$config{sourcedir}/$_\"" + . " to except_dirs\n" + if $debug; + push @except_dirs, "$config{sourcedir}/$_"; + } + # git call has failed, trying to parse .gitmodules manually + if (!$git_ok) { + print STDERR "DEBUG[check_env_vars]: .gitmodules parsing fallback\n" + if $debug; + if (open my $gs_file, '<', "$config{sourcedir}/.gitmodules") { + while (<$gs_file>) { + s/\R$//; # better chomp + if ($_ =~ /\s*path\s*=\s*(.*)$/) { + print STDERR "DEBUG[check_env_vars]: adding " + . "\"$config{sourcedir}/$1\" to except_dirs\n" + if $debug; + push @except_dirs, "$config{sourcedir}/$1"; + } + } + } + } + # look for source files find(sub { push @env_files, $File::Find::name if /\.c$|\.in$/; }, $config{sourcedir}); foreach my $filename (@env_files) { - next if $filename =~ /test\/|demos\// + next if (grep { $filename =~ /^$_\// } @except_dirs) || grep { $_ eq $filename } @except_env_files; open my $fh, '<', $filename or die "Can't open $filename: $!";