Merge pull request #111 from ovh/perluseall

chore: perl-use-all: dynamically find required modules
This commit is contained in:
Stéphane Lesimple 2021-01-05 18:51:25 +01:00 committed by GitHub
commit e8d60810f1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 44 additions and 62 deletions

View file

@ -3,7 +3,7 @@
use strict;
use warnings;
use GnuPG;
use GnuPG; # pragma optional module
use File::Temp;
use File::Basename;
use File::Find;

View file

@ -35,9 +35,8 @@ do
grep -q '^use common::sense;' "$i" || echo "(missing common::sense in $i)"
fi
done
if [ -x "$basedir/bin/dev/perl-use-all.pl" ] ; then
action_detail "Trying to \`use' all required perl modules"
"$basedir/bin/dev/perl-use-all.pl" || (( fails++ ))
if [ -x "$basedir/bin/dev/perl-use-all.sh" ] ; then
"$basedir/bin/dev/perl-use-all.sh" || (( fails++ ))
fi
if [ "$fails" -ne 0 ] ; then

View file

@ -1,56 +0,0 @@
#! /usr/bin/env perl
# vim: set filetype=perl ts=4 sw=4 sts=4 et:
use strict;
use warnings;
use Carp;
use CGI;
use common::sense;
use Config;
use Cwd;
use Data::Dumper;
use DBD::SQLite;
use Digest::MD5;
use Digest::SHA;
use Exporter;
use Fcntl;
use File::Basename;
use File::Copy;
use File::Find;
use File::Path;
use File::Temp;
use Getopt::Long;
use HTTP::Headers;
use HTTP::Message;
use HTTP::Request;
use IO::Compress::Gzip;
use IO::Handle;
use IO::Pipe;
use IO::Select;
use IO::Socket::SSL;
use IPC::Open2;
use IPC::Open3;
use JSON;
use List::Util;
use LWP::UserAgent;
use MIME::Base64;
use Net::IP;
use Net::Netmask;
use Net::Server::PreFork;
use Net::Server::PreForkSimple;
use POSIX;
use Scalar::Util;
use Socket;
use Storable;
use Symbol;
use Sys::Hostname;
use Sys::Syslog;
use Term::ANSIColor;
use Term::ReadKey;
use Term::ReadLine;
use Time::HiRes;
use Time::Piece;
use URI;
print "OK: all required Perl modules are present\n";

39
bin/dev/perl-use-all.sh Executable file
View file

@ -0,0 +1,39 @@
#! /usr/bin/env bash
# vim: set filetype=sh ts=4 sw=4 sts=4 et:
basedir=$(readlink -f "$(dirname "$0")"/../..)
# shellcheck source=lib/shell/functions.inc
. "$basedir"/lib/shell/functions.inc
action_doing "Checking list of needed Perl modules..."
missing=""
# shellcheck disable=SC2013
for module in $(grep -RhEw '(use|require) ([a-zA-Z][a-zA-Z0-9_:]+)' "$basedir/lib/perl/" "$basedir/bin/" | \
grep -v -e '"' -e "'" -e '# pragma optional module' -e OVH:: | \
sed -re 's/#.*//' | \
grep -Eo '(use|require) ([a-zA-Z][a-zA-Z0-9_:]+)' | \
awk '{print $2}' | \
sort -u | \
grep -Ev '^[a-z0-9_]+$')
do
if [ "$1" != "corelist" ]; then
action_detail "$module"
if ! perl -M"$module" -e 1; then
action_detail "... failed!"
missing="$missing $module"
fi
else
if corelist "$module" | grep -q 'not in CORE'; then
action_detail "$module"
fi
fi
done
if [ -n "$missing" ]; then
action_error "Missing modules:$missing"
else
# shellcheck disable=SC2119
action_done
fi

View file

@ -44,7 +44,7 @@ local $0 = '' . __FILE__ . ' ' . join(' ', @command);
# set signal for when my parent dies (Linux only)
eval {
require Linux::Prctl;
require Linux::Prctl; # pragma optional module
# 1 is SIGHUP
Linux::Prctl::set_pdeathsig(1);

View file

@ -1431,7 +1431,7 @@ sub exit_sig {
sub help {
=cut just to debug memory fingerprint
use Devel::Size qw[total_size];
use Devel::Size qw[total_size]; # pragma optional module
my %siz;
foreach (keys %::main::main::)
{