aboutsummaryrefslogtreecommitdiff
path: root/sbopkglint.d/10-docs.t.sh
blob: e1bb8d8b42a4d7fbbe894815e8ce308e9efa7901 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/sh

# sbopkglint test, must be sourced by sbopkglint (not run standalone).

# PKG, PRGNAM, VERSION, ARCH are set by sbopkglint. also the current
# directory is the root of the installed package tree.

########################################################################
# checks file permissions and ownership in the package doc dir. files
# should all be mode 644, directories should be 755. everything should
# be owned by root:root. also checks for empty files or (possibly)
# install instructions.


# ideally, we'd require all files under the doc dir to be mode 0644.
# however, too many existing packages (including core Slackware ones)
# break that rule. so check for the minimum set of desired permissions:
# a doc file should be readable by all users (at least 444).

DOCDIR=usr/doc/$PRGNAM-$VERSION

# existence of the doc dir was already checked by a previous test,
# so just don't do anything if it's missing.

if [ -d "$DOCDIR" ]; then
	badpermfiles="$( find $DOCDIR -mindepth 1 -type f -a \! -perm -444 )"
	 badpermdirs="$( find $DOCDIR -mindepth 1 -type d -a \! -perm 0755 )"
	   badowners="$( find $DOCDIR -mindepth 1 -user root -a -group root -o -print )"
	       empty="$( find $DOCDIR -mindepth 1 -empty )"
	       bogus="$( find $DOCDIR -mindepth 1 -maxdepth 1 -type f -a \( -name INSTALL -o -name INSTALL.\* \) )"

	[ -n "$badpermfiles" ] && warn "bad file perms (should be 644, or at least 444) in doc dir:" && ls -l $badpermfiles
	[ -n "$badpermdirs"  ] && warn "bad directory perms (should be 755) in doc dir:" && ls -ld $badpermdirs
	[ -n "$badowners"  ]   && warn "bad ownership (should be root:root) in doc dir:" && ls -ld $badowners
	[ -n "$empty"      ]   && warn "empty files/dirs in doc dir: $empty"
	[ -n "$bogus"      ]   && [ -z "$INSTALL_DOCS_OK" ] && warn "useless-looking install instructions in doc dir: $bogus"
fi

baddocs="$( find usr/doc -mindepth 1 -maxdepth 1 \! -name $PRGNAM-$VERSION )"
[ -n "$baddocs" ]  && warn "docs outside of $DOCDIR:" && ls -ld $baddocs