diff --git a/bin/cron/osh-encrypt-rsync.pl b/bin/cron/osh-encrypt-rsync.pl index e0de5d0..6ee251e 100755 --- a/bin/cron/osh-encrypt-rsync.pl +++ b/bin/cron/osh-encrypt-rsync.pl @@ -3,7 +3,7 @@ use strict; use warnings; -use GnuPG; +use GnuPG; # pragma optional module use File::Temp; use File::Basename; use File::Find; diff --git a/bin/dev/perl-check.sh b/bin/dev/perl-check.sh index ad863f1..4d008ad 100755 --- a/bin/dev/perl-check.sh +++ b/bin/dev/perl-check.sh @@ -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 diff --git a/bin/dev/perl-use-all.pl b/bin/dev/perl-use-all.pl deleted file mode 100755 index a34f1b9..0000000 --- a/bin/dev/perl-use-all.pl +++ /dev/null @@ -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"; diff --git a/bin/dev/perl-use-all.sh b/bin/dev/perl-use-all.sh new file mode 100755 index 0000000..dbb9cf0 --- /dev/null +++ b/bin/dev/perl-use-all.sh @@ -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 diff --git a/bin/shell/connect.pl b/bin/shell/connect.pl index fa188f4..e7bf334 100755 --- a/bin/shell/connect.pl +++ b/bin/shell/connect.pl @@ -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); diff --git a/bin/shell/osh.pl b/bin/shell/osh.pl index a932bef..37a54dd 100755 --- a/bin/shell/osh.pl +++ b/bin/shell/osh.pl @@ -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::) {