aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sbolint.1288
-rw-r--r--sbopkglint.1363
2 files changed, 0 insertions, 651 deletions
diff --git a/sbolint.1 b/sbolint.1
deleted file mode 100644
index 8ee2499..0000000
--- a/sbolint.1
+++ /dev/null
@@ -1,288 +0,0 @@
-.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings. \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote. \*(C+ will
-.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-. ds -- \(*W-
-. ds PI pi
-. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
-. ds L" ""
-. ds R" ""
-. ds C` ""
-. ds C' ""
-'br\}
-.el\{\
-. ds -- \|\(em\|
-. ds PI \(*p
-. ds L" ``
-. ds R" ''
-. ds C`
-. ds C'
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\"
-.\" If the F register is >0, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD. Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.\"
-.\" Avoid warning from groff about undefined register 'F'.
-.de IX
-..
-.nr rF 0
-.if \n(.g .if rF .nr rF 1
-.if (\n(rF:(\n(.g==0)) \{\
-. if \nF \{\
-. de IX
-. tm Index:\\$1\t\\n%\t"\\$2"
-..
-. if !\nF==2 \{\
-. nr % 0
-. nr F 2
-. \}
-. \}
-.\}
-.rr rF
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear. Run. Save yourself. No user-serviceable parts.
-. \" fudge factors for nroff and troff
-.if n \{\
-. ds #H 0
-. ds #V .8m
-. ds #F .3m
-. ds #[ \f1
-. ds #] \fP
-.\}
-.if t \{\
-. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-. ds #V .6m
-. ds #F 0
-. ds #[ \&
-. ds #] \&
-.\}
-. \" simple accents for nroff and troff
-.if n \{\
-. ds ' \&
-. ds ` \&
-. ds ^ \&
-. ds , \&
-. ds ~ ~
-. ds /
-.\}
-.if t \{\
-. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-. \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-. \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-. \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-. ds : e
-. ds 8 ss
-. ds o a
-. ds d- d\h'-1'\(ga
-. ds D- D\h'-1'\(hy
-. ds th \o'bp'
-. ds Th \o'LP'
-. ds ae ae
-. ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "SBOLINT 1"
-.TH SBOLINT 1 "2022-04-03" "0.4" "SBoStuff"
-.\" For nroff, turn off justification. Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
-.nh
-.SH "NAME"
-sbolint \- check SlackBuild directories or tarballs for common errors.
-.SH "SYNOPSIS"
-.IX Header "SYNOPSIS"
-\&\fBsbolint\fR [\-a] [\-g] [\-q] [\-u] [\-n] [build [build ...]]
-.SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-sbolint checks for common errors in SlackBuilds.org scripts. It's
-intended for slackbuild authors and maintainers, and can cut down on
-\&\*(L"There was a problem with your upload\*(R" errors from the submission form.
-.PP
-The [build] arguments must be either directories or tarballs, each
-containing a SlackBuild script, slack-desc, \s-1README,\s0 and .info file.
-With no [build] arguments, the current directory is checked.
-.PP
-sbolint will flag errors for problems that would prevent the build from
-being accepted by the upload form (or by the SBo admins, if if passes
-the upload checks). There may also be warnings, which are things that
-(probably) won't stop your build from being accepted, but may cause the
-SBo admins extra work.
-.PP
-sbolint was not written by the SlackBuilds.org team, and shares no code
-with the upload form's submission checker. Lack of errors/warnings from
-sbolint does not guarantee that your build will be accepted!
-.PP
-sbolint doesn't check built packages, and never executes the build
-script. If you want a lint tool for binary Slackware packages, try
-pprkut's \fBlintpkg\fR.
-.SH "OPTIONS"
-.IX Header "OPTIONS"
-.IP "\fB\-a\fR" 4
-.IX Item "-a"
-Check all builds in the git repository. This must be run from within a
-git tree (e.g. one made with \*(L"git clone\*(R").
-.IP "\fB\-q\fR" 4
-.IX Item "-q"
-Quiet. Suppresses 'xxx checks out \s-1OK\s0' and the total errors/warnings summary.
-.IP "\fB\-u\fR" 4
-.IX Item "-u"
-\&\s-1URL\s0 check. Uses \fBcurl\fR to make \s-1HTTP HEAD\s0 requests for the \fB\s-1HOMEPAGE\s0\fR,
-\&\fB\s-1DOWNLOAD\s0\fR, and \fBDOWNLOAD_x86_64\fR links. This won't guarantee that
-the links are good, but some kinds of failure (e.g. site down, 404)
-means they're definitely bad. Unfortunately a lot of sites have stopped
-responding to \s-1HEAD\s0 requests in the name of \*(L"security\*(R", so your mileage
-man vary.
-.IP "\fB\-n\fR" 4
-.IX Item "-n"
-Suppress warnings. Only errors will be listed. This also affects the
-exit status (see below).
-.SH "CHECKS"
-.IX Header "CHECKS"
-For tar files only:
-.IP "\-" 4
-File size must not be bigger than the upload form's limit (currently one
-megabyte).
-.IP "\-" 4
-File must be a tar archive, possibly compressed with gzip, bzip2, or xz,
-extractable by the \fBtar\fR(1) command.
-.IP "\-" 4
-Filename extension must match compression type.
-.IP "\-" 4
-Archive must contain a directory with the same name as the archive's base name,
-e.g. \fIfoo.tar.gz\fR must contain \fIfoo/\fR. Everything else in the archive must be
-inside this directory.
-.IP "\-" 4
-Archive must contain \fIdirname/Idirname.SlackBuild\fR.
-.PP
-For all builds:
-.IP "\-" 4
-The SlackBuild, .info, \s-1README\s0 files must have Unix \en line endings (not
-\&\s-1DOS\s0 \er\en), and the last line of each must have a \en.
-.IP "\-" 4
-The SlackBuild script must exist, with mode 0755 (or 0644, if in a git repo),
-and be a \fI#!/bin/bash\fR script.
-.IP "\-" 4
-The script must contain the standard variable assignments for \s-1PRGNAM,
-VERSION, BUILD,\s0 and \s-1TAG. BUILD\s0 must be numeric.
-.IP "\-" 4
-\&\fI\s-1PRGNAM\s0\fR in the script must match \fI\s-1PRGNAM\s0\fR in the .info file. Both must
-match the script name (\fI\s-1PRGNAM\s0.SlackBuild\fR) and the directory name.
-.IP "\-" 4
-\&\fI\s-1VERSION\s0\fR must match the \fI\s-1VERSION\s0\fR in the .info file.
-.IP "\-" 4
-TAG=${TAG:\-_SBo} must occur in the script.
-.IP "\-" 4
-The \fI\s-1VERSION\s0\fR, \fI\s-1BUILD\s0\fR, and \fI\s-1TAG\s0\fR variables must respect the environment.
-.IP "\-" 4
-The script must install the slack-desc in \fI\f(CI$PKG\fI/install\fR.
-.IP "\-" 4
-If there is a doinst.sh script, the SlackBuild must install it to \fI\f(CI$PKG\fI/install\fR.
-.IP "\-" 4
-Template boilerplate comments should be removed, e.g. \fI\*(L"\s-1REMOVE THIS ENTIRE BLOCK OF TEXT\*(R"\s0\fR
-or \fI\*(L"Automatically determine the architecture we're building on\*(R"\fR.
-.IP "\-" 4
-Script must contain exactly one \fBmakepkg\fR command.
-.IP "\-" 4
-\&\s-1README\s0 must exist, have mode 0644, its character encoding must be
-either \s-1ASCII\s0 or \s-1UTF\-8\s0 without \s-1BOM,\s0 and it may not contain tab characters.
-.IP "\-" 4
-slack-desc must exist, have mode 0644, its character encoding must be \s-1ASCII,\s0
-and it may not contain tab characters.
-.IP "\-" 4
-slack-desc contents must match the SBo template, including the \*(L"handy-ruler\*(R",
-comments, and correct spacing/indentation.
-.IP "\-" 4
-\&.info file must exist, have mode 0644, and match the SBo template.
-.IP "\-" 4
-\&.info file URLs must be valid URLs (for a very loose definition of \*(L"valid\*(R": they
-must begin with \fBftp://\fR, \fBhttp://\fR, or \fBhttps://\fR).
-.IP "\-" 4
-Optionally, .info file URLs can be checked for existence with an \s-1HTTP HEAD\s0
-request (see the \fB\-u\fR option).
-.PP
-The following tests are only done when sbolint's starting directory
-was \s-1NOT\s0 in a git repo:
-.IP "\-" 4
-Any files other than the .SlackBuild, .info, slack-desc, and \s-1README\s0 are
-checked for permissions (should be 0644) and excessive size.
-.IP "\-" 4
-The source archive(s) must not exist. Also sbolint attempts to detect
-extracted source trees (but isn't all that good at it).
-.IP "\-" 4
-Files named 'build.log' or 'strace.out*' must not exist. The \fBsbrun\fR
-tool creates these.
-.PP
-The rationale for skipping the above tests when in a git repo is that
-maintainers will be using git to track files and push changes, so we
-don't need to check them here.
-.SH "EXIT STATUS"
-.IX Header "EXIT STATUS"
-Exit status from sbolint will normally be 0 (success) if there were no
-errors or warnings in any of the builds checked. With the \fB\-n\fR option,
-exit status will be 0 if there are no errors.
-.PP
-Exit status 1 indicates there was at least one warning or error (or, with
-\&\fB\-n\fR, at least one error).
-.PP
-Any other exit status means sbolint itself failed somehow (e.g. called
-with nonexistent filename).
-.SH "BUGS"
-.IX Header "BUGS"
-Probably quite a few. Watch this space for details.
-.SH "AUTHOR"
-.IX Header "AUTHOR"
-B. Watson (yalhcru at gmail dot com, or Urchlay on Libera \s-1IRC\s0)
-.SH "SEE ALSO"
-.IX Header "SEE ALSO"
-\&\fBsbofixinfo\fR(1), \fBsbosearch\fR(1)
diff --git a/sbopkglint.1 b/sbopkglint.1
deleted file mode 100644
index 274cfe2..0000000
--- a/sbopkglint.1
+++ /dev/null
@@ -1,363 +0,0 @@
-.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings. \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote. \*(C+ will
-.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-. ds -- \(*W-
-. ds PI pi
-. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
-. ds L" ""
-. ds R" ""
-. ds C` ""
-. ds C' ""
-'br\}
-.el\{\
-. ds -- \|\(em\|
-. ds PI \(*p
-. ds L" ``
-. ds R" ''
-. ds C`
-. ds C'
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\"
-.\" If the F register is >0, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD. Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.\"
-.\" Avoid warning from groff about undefined register 'F'.
-.de IX
-..
-.nr rF 0
-.if \n(.g .if rF .nr rF 1
-.if (\n(rF:(\n(.g==0)) \{\
-. if \nF \{\
-. de IX
-. tm Index:\\$1\t\\n%\t"\\$2"
-..
-. if !\nF==2 \{\
-. nr % 0
-. nr F 2
-. \}
-. \}
-.\}
-.rr rF
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear. Run. Save yourself. No user-serviceable parts.
-. \" fudge factors for nroff and troff
-.if n \{\
-. ds #H 0
-. ds #V .8m
-. ds #F .3m
-. ds #[ \f1
-. ds #] \fP
-.\}
-.if t \{\
-. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-. ds #V .6m
-. ds #F 0
-. ds #[ \&
-. ds #] \&
-.\}
-. \" simple accents for nroff and troff
-.if n \{\
-. ds ' \&
-. ds ` \&
-. ds ^ \&
-. ds , \&
-. ds ~ ~
-. ds /
-.\}
-.if t \{\
-. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-. \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-. \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-. \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-. ds : e
-. ds 8 ss
-. ds o a
-. ds d- d\h'-1'\(ga
-. ds D- D\h'-1'\(hy
-. ds th \o'bp'
-. ds Th \o'LP'
-. ds ae ae
-. ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "SBOPKGLINT 1"
-.TH SBOPKGLINT 1 "2022-04-04" "0.4" "sbo-maintainer-tools"
-.\" For nroff, turn off justification. Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
-.nh
-.SH "NAME"
-sbopkglint \- check Slackware binary packages for common errrors.
-.SH "SYNOPSIS"
-.IX Header "SYNOPSIS"
-\&\fBsbopkglint\fR [\-k] [\-i] [package.t?z ...]
-.SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-\&\fBsbopkglint\fR installs a Slackware package to a temporary directory, then
-examines the contents. It finds lots of common problems that aren't
-always noticed by SBo script maintainers or the admins.
-.PP
-This is for built packages. If you want to lint your build scripts,
-use \fBsbolint\fR(1) instead.
-.PP
-With no package arguments, it looks for a SlackBuild in the current
-directory, extracts the \s-1PRINT_PACKAGE_NAME\s0 information, and tries
-to find a package in \f(CW$OUTPUT\fR (/tmp by default). If found, it checks
-that package. It's up to you to know whether the package needs to be
-rebuilt (e.g. if you've edited the SlackBuild since the package was
-built).
-.PP
-With arguments, it checks the given packages. These must be
-supported Slackware package files (.tgz, .txz, .tlz, etc). There's no
-requirement that these have to be SBo packages, but a couple of the
-tests (e.g. the check for \f(CW$PRGNAM\fR.SlackBuild in the doc dir) might not
-apply to non-SBo builds.
-.PP
-Diagnostics will be logged to stdout and stderr. Exit status will
-be 0 if all tests passed, non-zero otherwise.
-.PP
-This script must run as root. If you run it as a normal user, it tries
-to re-execute itself via \fBsudo\fR\|(8).
-.SH "OPTIONS"
-.IX Header "OPTIONS"
-.IP "\fB\-k\fR" 4
-.IX Item "-k"
-Keep the temporary package install directory instead of deleting it on exit.
-.IP "\fB\-i\fR" 4
-.IX Item "-i"
-Disable the \*(L"useless-looking install instructions\*(R" test. This is
-intended for SBo admins mass-linting a ton of packages. \s-1INSTALL\s0 in
-the doc dir is something that exists in thousands of existing builds,
-and it's not a major problem. New builds and updates should be linted
-without this option, however.
-.IP "\fB\-\-help\fR" 4
-.IX Item "--help"
-Show the short built-in help.
-.IP "\fB\-\-doc\fR" 4
-.IX Item "--doc"
-View this documentation using \fBperldoc\fR\|(1), which generally uses your
-pager (e.g. \fBless\fR\|(1) or \fBmore\fR\|(1)) to display it.
-.IP "\fB\-\-man\fR" 4
-.IX Item "--man"
-Convert this documentation to a man page, on stdout.
-.SH "EXIT STATUS"
-.IX Header "EXIT STATUS"
-0 (success) if all tests passed for all packages, non-zero if there
-were any test failures (or if installpkg failed for some reason).
-.SH "FILES"
-.IX Header "FILES"
-.IP "\fBsbolint.d/*.t.sh\fR" 4
-.IX Item "sbolint.d/*.t.sh"
-These are the actual tests. They're installed to
-\&\fI\s-1PREFIX\s0\fR/share/sbo\-maintainer\-tools, and they're sourced by
-\&\fBsbopkglint\fR at runtime. Each test script begins with (hopefully)
-useful comments that go into more detail than the documentation here.
-.SH "TESTS"
-.IX Header "TESTS"
-.SS "basic-sanity"
-.IX Subsection "basic-sanity"
-.IP "\fB\-\fR" 4
-.IX Item "-"
-Top-level directories inside the package must be recognized ones,
-such as /bin /etc /usr /opt. Packages shouldn't be installing files
-in /tmp, /dev, or /home... and they really shouldn't be inventing
-new top-level directories.
-.IP "\fB\-\fR" 4
-.IX Item "-"
-The documentation directory must exist and be correctly named, as
-/usr/doc/$PRGNAM\-$VERSION. It must contain \f(CW$PRGNAM\fR.SlackBuild, too.
-.IP "\fB\-\fR" 4
-.IX Item "-"
-The directories /usr/local, /usr/share/doc, /usr/share/man, /usr/etc
-are not allowed in SBo packages.
-.IP "\fB\-\fR" 4
-.IX Item "-"
-Some directories (e.g. /usr/bin) may not contain subdirectories.
-.IP "\fB\-\fR" 4
-.IX Item "-"
-Some directories (e.g. /usr/share) must *only* contain subdirectories.
-.IP "\fB\-\fR" 4
-.IX Item "-"
-Some directories (e.g. /usr/man, /usr/share/applications) must not
-contain files with executable permissions. /usr/doc is not in this
-list; neither is /etc (too many existing packages install +x files
-there).
-.IP "\fB\-\fR" 4
-.IX Item "-"
-Broken symlinks may not exist.
-.IP "\fB\-\fR" 4
-.IX Item "-"
-Absolute symlinks may not exist (they should be converted to
-relative symlinks). This may seem like nitpicking, but packages
-may be installed somewhere besides / (the root dir) with the
-\&\-root option to installpkg. If /usr/bin/foo is a link to /usr/bin/bar,
-it should be a link to just bar.
-.SS "docs"
-.IX Subsection "docs"
-.IP "\fB\-\fR" 4
-.IX Item "-"
-Documentation must be installed to /usr/doc/$PRGNAM\-$VERSION. If
-there's any other directory under /usr/doc, it's incorrect. Some
-builds use mis-named doc directories (if it hasn't been fixed by
-now, an example is gcc5, which installs docs to /usr/doc/gcc\-$VERSION
-when it should be gcc5\-$VERSION).
-.IP "\fB\-\fR" 4
-.IX Item "-"
-Documentation files must be readable by everyone, and owned by root:root.
-.IP "\fB\-\fR" 4
-.IX Item "-"
-Doc dir shouldn't contain empty files (0 bytes in length).
-.IP "\fB\-\fR" 4
-.IX Item "-"
-Doc dir shouldn't contain install instructions. Specifically, files
-named \s-1INSTALL, INSTALL\s0.*, or install.txt are flagged (it's impossible
-to make this test 100% perfect).
-.SS "noarch"
-.IX Subsection "noarch"
-.IP "\fB\-\fR" 4
-.IX Item "-"
-If a package has its architecture set to \*(L"noarch\*(R", it must not contain
-any \s-1ELF\s0 binaries/libraries.
-.SS "arch"
-.IX Subsection "arch"
-.IP "\fB\-\fR" 4
-.IX Item "-"
-If a package has its architecture set to i?86 or x86_64, all \s-1ELF\s0
-binaries/libraries must be for the correct arch (no 32\-bit code in
-64\-bit packages, and vice versa).
-.IP "\fB\-\fR" 4
-.IX Item "-"
-If a package is i?86, it must not contain /usr/lib64.
-.IP "\fB\-\fR" 4
-.IX Item "-"
-If a package is x86_64 and contains shared libraries, they must be
-in /lib64 or /usr/lib64 (not /lib or /usr/lib).
-.SS "lafiles"
-.IX Subsection "lafiles"
-.IP "\fB\-\fR" 4
-.IX Item "-"
-Packages are no longer allowed to contain libtool archive files (.la)
-in /lib, /lib64, /usr/lib, or /usr/lib64. However, subdirectories
-such as /usr/lib64/someprogram/ are not checked, since some applications
-which use plugins actually use the .la files.
-.SS "manpages"
-.IX Subsection "manpages"
-.IP "\fB\-\fR" 4
-.IX Item "-"
-All man pages must be readable by everyone, and owned by root:root.
-.IP "\fB\-\fR" 4
-.IX Item "-"
-All man pages must be gzipped.
-.IP "\fB\-\fR" 4
-.IX Item "-"
-All man pages must be in /usr/man/man[1\-9n] or /usr/man/<lang>/man[1\-9n].
-.IP "\fB\-\fR" 4
-.IX Item "-"
-Man page directories must be mode 755, owned by root:root.
-.IP "\fB\-\fR" 4
-.IX Item "-"
-The section numbers in man page filenames must match the section number
-in the directory name (e.g. /usr/man/man1/ls.1.gz is \s-1OK,\s0
-/usr/man/man1/tetris.6.gz is an error).
-.IP "\fB\-\fR" 4
-.IX Item "-"
-Man pages must actually be man pages (troff markup).
-.SS "desktop"
-.IX Subsection "desktop"
-.IP "\fB\-\fR" 4
-.IX Item "-"
-If there are .desktop files, doinst.sh must run update-desktop-database.
-.IP "\fB\-\fR" 4
-.IX Item "-"
-\&.desktop files must be mode 644, owned by root:root. Slackware's \s-1KDE\s0
-packages actually break this rule (they install executable .desktop
-files), but SBo packages are not allowed to.
-.IP "\fB\-\fR" 4
-.IX Item "-"
-Only .desktop files are allowed in /usr/share/applications.
-.IP "\fB\-\fR" 4
-.IX Item "-"
-\&.desktop files must be valid, according to the desktop-file-validate
-command. Only actual errors count; warnings don't cause this test to
-fail.
-.SS "newconfig"
-.IX Subsection "newconfig"
-.IP "\fB\-\fR" 4
-.IX Item "-"
-Any files (outside of /usr/doc) with names ending in .new are flagged.
-This might be a bit too restrictive (possibly only check /etc and
-/usr/share?)
-.SS "doinst"
-.IX Subsection "doinst"
-.IP "\fB\-\fR" 4
-.IX Item "-"
-If there are icons in /usr/share/icons, .desktop files in /usr/share/applications,
-or glib2 schemas in /usr/share/glib\-2.0/schemas, there must be a doinst.sh
-with appropriate command(s), e.g. update-desktop-database, gtk-update-icon-cache,
-glib-compile-schemas.
-.SH "BUGS"
-.IX Header "BUGS"
-Probably many. This is still a work in progress.
-.PP
-One known problem is that the same file can fail multiple tests. E.g.
-if you have a man page that's installed executable, it will fail both
-the basic-sanity test and the manpages test. This isn't really a huge
-problem, so it might not be fixed any time soon.
-.SH "AUTHOR"
-.IX Header "AUTHOR"
-B. Watson <urchlay@slackware.uk>, \s-1AKA\s0 Urchlay on Libera \s-1IRC.\s0
-.SH "SEE ALSO"
-.IX Header "SEE ALSO"
-\&\fBsbolint\fR(1)