From: Daniel Stenberg Date: Sat, 12 Feb 2022 21:54:27 +0000 (+0100) Subject: scripts/ciconfig: show CI job config info X-Git-Tag: curl-7_82_0~82 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ae5e57c3042011d7aee64621a19fc01dfa2d1193;p=thirdparty%2Fcurl.git scripts/ciconfig: show CI job config info Closes #8446 --- diff --git a/scripts/ciconfig.pl b/scripts/ciconfig.pl new file mode 100755 index 0000000000..b74bc9529f --- /dev/null +++ b/scripts/ciconfig.pl @@ -0,0 +1,176 @@ +#!/usr/bin/perl +#*************************************************************************** +# _ _ ____ _ +# Project ___| | | | _ \| | +# / __| | | | |_) | | +# | (__| |_| | _ <| |___ +# \___|\___/|_| \_\_____| +# +# Copyright (C) 2022, Daniel Stenberg, , et al. +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. The terms +# are also available at https://curl.se/docs/copyright.html. +# +# You may opt to use, copy, modify, merge, publish, distribute and/or sell +# copies of the Software, and permit persons to whom the Software is +# furnished to do so, under the terms of the COPYING file. +# +# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +# KIND, either express or implied. +# +########################################################################### + +# these options are enabled by default in the sense that they will attempt to +# check for and use this feature without the configure flag +my %defaulton = ( + # --enable- + 'shared' => 1, + 'static' => 1, + 'fast-install' => 1, + 'silent-rules' => 1, + 'optimize' => 1, + 'http' => 1, + 'ftp' => 1, + 'file' => 1, + 'ldap' => 1, + 'ldaps' => 1, + 'rtsp' => 1, + 'proxy' => 1, + 'dict' => 1, + 'telnet' => 1, + 'tftp' => 1, + 'pop3' => 1, + 'imap' => 1, + 'smb' => 1, + 'smtp' => 1, + 'gopher' => 1, + 'mqtt' => 1, + 'manual' => 1, + 'libcurl-option' => 1, + 'libgcc' => 1, + 'ipv6' => 1, + 'openssl-auto-load-config' => 1, + 'versioned-symbols' => 1, + 'symbol-hiding' => 1, + 'threaded-resolver' => 1, + 'pthreads' => 1, + 'verbose' => 1, + 'crypto-auth' => 1, + 'ntlm' => 1, + 'ntlm-wb' => 1, + 'tls-srp' => 1, + 'unix-sockets' => 1, + 'cookies' => 1, + 'socketpair' => 1, + 'http-auth' => 1, + 'doh' => 1, + 'mime' => 1, + 'dateparse' => 1, + 'netrc' => 1, + 'progress-meter' => 1, + 'dnsshuffle' => 1, + 'get-easy-options' => 1, + 'alt-svc' => 1, + 'hsts' => 1, + + # --with- + 'aix-soname' => 1, + 'pic' => 1, + 'zlib' => 1, + 'zstd' => 1, + 'brotli' => 1, + 'random' => 1, + 'egd-socket' => 1, + 'ca-bundle' => 1, + 'ca-path' => 1, + 'libssh2' => 1, + 'nghttp2' => 1, + 'librtmp' => 1, + 'libidn2' => 1, + 'sysroot' => 1, + 'lber-lib' => 1, + 'ldap-lib' => 1, + + ); + + +sub configureopts { + my ($opts)=@_; + my %thisin; + my %thisout; + + while($opts =~ s/--with-([^ =]*)//) { + $with{$1}++; + $used{$1}++; + $thisin{$1}++; + } + while($opts =~ s/--enable-([^ =]*)//) { + $with{$1}++; + $used{$1}++; + $thisin{$1}++; + } + + while($opts =~ s/--without-([^ =]*)//) { + $without{$1}++; + $used{$1}++; + $thisout{$1}++; + } + while($opts =~ s/--disable-([^ =]*)//) { + $without{$1}++; + $used{$1}++; + $thisout{$1}++; + } + return join(" ", sort(keys %thisin), "/", sort(keys %thisout)); +} + +# run configure --help and check what available WITH/ENABLE options that exist +sub configurehelp { + open(C, "./configure --help|"); + while() { + if($_ =~ /^ --(with|enable)-([a-z0-9-]+)/) { + $avail{$2}++; + } + } + close(C); +} + +sub scanjobs { + + my $jobs; + open(CI, "./scripts/cijobs.pl|"); + while() { + if($_ =~ /^\#\#\#/) { + $jobs++; + } + if($_ =~ /^configure: (.*)/) { + my $c= configureopts($1); + #print "C: $c\n"; + } + } + close(CI); +} + +configurehelp(); +scanjobs(); + +print "Used configure options (with / without)\n"; +for my $w (sort keys %used) { + printf " %s: %d %d%s\n", $w, $with{$w}, $without{$w}, + $defaulton{$w} ? " (auto)":""; +} + +print "Never used configure options\n"; +for my $w (sort keys %avail) { + if(!$used{$w}) { + printf " %s%s\n", $w, + $defaulton{$w} ? " (auto)":"";; + } +} + +print "Never ENABLED configure options that aren't on by default\n"; +for my $w (sort keys %avail) { + if(!$with{$w} && !$defaulton{$w}) { + printf " %s\n", $w; + } +}