aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsbolint10
-rwxr-xr-xsbopkglint59
2 files changed, 52 insertions, 17 deletions
diff --git a/sbolint b/sbolint
index fd7dd57..7972a8f 100755
--- a/sbolint
+++ b/sbolint
@@ -1,5 +1,8 @@
#!/usr/bin/perl -w
+# note to self: keep this in sync with VER in sbopkglint and VERSION in Makefile.
+$VERSION="0.5";
+
# ChangeLog:
# 0.4 20220314 bkw: add -a option to check all builds in the git repo.
@@ -24,8 +27,6 @@
# 0.1 20141114 bkw, Initial release.
-$VERSION="0.5";
-
# This script is meant to be fairly self-contained, prefer not to
# require a huge pile of perl module dependencies. In some cases this
# means using system() or backticks or such (e.g. to run tar, instead of
@@ -268,7 +269,7 @@ Probably quite a few. Watch this space for details.
=head1 AUTHOR
-B. Watson (yalhcru at gmail dot com, or Urchlay on Libera IRC)
+B. Watson <urchlay@slackware.uk>, aka Urchlay on Libera IRC.
=head1 SEE ALSO
@@ -325,6 +326,7 @@ while(@ARGV && ($ARGV[0] =~ /^-/)) {
$opt =~ /^--?q(uiet)?/ && do { $quiet = 1; next; };
$opt =~ /^-$/ && do { $stdin = 1; next; };
$opt =~ /^--?h(elp)?/ && do { usage(); exit 0; };
+ $opt =~ /^--?ver(sion)?/ && do { print "$VERSION\n"; exit 0; };
$opt =~ /^-n$/ && do { $nowarn = 1; next; };
$opt =~ /^-r$/ && do { $suppress_readme_len = 1; next; };
$opt =~ /^--doc$/ && do { exec("perldoc $0"); };
@@ -430,7 +432,7 @@ sub usage {
warn <<EOF;
-$SELF - check SlackBuilds.org scripts for common problems.
+$SELF v$VERSION - check SlackBuilds.org scripts for common problems.
Usage: $SELF [-q] [-u] [-n] [-r] <build <build ...>>
Usage: $SELF --help | --man
diff --git a/sbopkglint b/sbopkglint
index 16965b4..970816c 100755
--- a/sbopkglint
+++ b/sbopkglint
@@ -1,5 +1,10 @@
#!/bin/bash
+# 20220408 bkw: note to self: VER must be in sync with VERSION in sbolint
+# and the Makefile.
+
+VER=0.5
+
: <<EOF
=pod
@@ -37,7 +42,8 @@ Diagnostics will be logged to stdout and stderr. Exit status will
be 0 if all tests passed, non-zero otherwise.
This script must run as root. If you run it as a normal user, it tries
-to re-execute itself via sudo(8).
+to re-execute itself via sudo(8) before installing any packages. If
+you dislike sudo, you can always run it as root.
=head1 OPTIONS
@@ -73,6 +79,10 @@ pager (e.g. less(1) or more(1)) to display it.
Convert this documentation to a man page, on stdout.
+=item B<--version>
+
+Print the B<sbopkglint> version number on stdout and exit.
+
=back
=head1 EXIT STATUS
@@ -341,7 +351,7 @@ problem, so it might not be fixed any time soon.
=head1 AUTHOR
-B. Watson <urchlay@slackware.uk>, AKA Urchlay on Libera IRC.
+B. Watson <urchlay@slackware.uk>, aka Urchlay on Libera IRC.
=head1 SEE ALSO
@@ -350,18 +360,11 @@ B<sbolint>(1)
=cut
EOF
-# lint a binary Slackware package. primarily intended for use with
-# SBo packages, but could be used for any Slack pkg.
-
-# this must be run as root, as it installs the package in a temp dir,
-# with "installpkg -root". if it's not running as root, it tries to
-# run itself via sudo.
-
SELF="$( basename $0 )"
usage() {
cat 1>&2 <<EOF
-$SELF - check SBo binary packages for various problems
+$SELF v$VER - check SBo binary packages for various problems
Usage:
$0 [-k] [-i] [-s] [/path/to/package-file] [...]
@@ -370,8 +373,11 @@ Usage:
Options:
-k Keep (don't delete) the package install directory at exit.
-i Do not check for INSTALL in the doc dir.
+-s Do not check for \$PRGNAM.SlackBuild in doc dir.
+--help Show short help message (you're looking at it now).
--doc See the full documentation in your pager.
--man Convert the full documentation to a man page, on stdout.
+--version Print the sbopkglint version number on stdout and exit.
With no package arguments, it looks for a SlackBuild in the current
directory, extracts the PRINT_PACKAGE_NAME information, and tries to
@@ -384,14 +390,16 @@ Diagnostics will be logged to stdout and stderr. Exit status will
be 0 if all tests passed, non-zero otherwise.
This script must run as root. If you run it as a normal user, it tries
-to re-execute itself via sudo(8).
+to re-execute itself via sudo(8) before installing any packages. If
+you dislike sudo, you can always run it as root.
EOF
}
while true; do
case "$1" in
+ --version) echo $VER ; exit 0 ;;
--doc) exec perldoc "$0" ;;
- --man) exec pod2man --stderr -s1 -csbo-maintainer-tools -r0.5 "$0" ;;
+ --man) exec pod2man --stderr -s1 -csbo-maintainer-tools -r$VER "$0" ;;
-k) KEEP=1 ; shift ;;
-i) INSTALL_DOCS_OK=1 ; shift;;
-s) SLACKBUILD_MISSING_OK=1 ; shift;;
@@ -461,6 +469,14 @@ done
echo "Using tests from $testdir"
+if echo "$packages" | grep -q ' '; then
+ want_summary=1
+fi
+
+faillist=""
+passcount=0
+failcount=0
+
for package in $packages; do
filename="$( basename $package )"
@@ -469,7 +485,7 @@ for package in $packages; do
VERSION="$( echo $filename | rev | cut -d- -f3 | rev )"
PKG="$( mktemp -d $TMP/sbopkglint.XXXXXX )"
- echo -n "Installing $package to $PKG..."
+ echo -n "Installing $package to $PKG ..."
/sbin/installpkg -root "$PKG" "$package" &> $PKG/.tmp.$$
S="$?"
@@ -520,10 +536,27 @@ for package in $packages; do
if [ "$totalwarns" = "0" ]; then
echo "=== $filename: All tests passed"
+ : $(( passcount ++ ))
else
exit_status=1
echo "!!! $filename: $totalwarns failures"
+ : $(( failcount ++ ))
+ faillist+="$filename "
fi
+ [ "$want_summary" = "1" ] && echo
done
+if [ "$want_summary" = "1" ]; then
+ count=$(( failcount + passcount ))
+ echo "=== $count packages linted, $passcount passed, $failcount failed"
+ if [ "$failcount" = "0" ]; then
+ echo "=== All packages check out OK"
+ else
+ echo "!!! Failed packages:"
+ for i in $faillist; do
+ echo $i
+ done
+ fi
+fi
+
exit $exit_status