files/testdata/Makefile.am:7:5: double brackets: if [[ cond ]]; then :; fi The keyword [[ is only available in bash, not in other shells. Since it is typically used inside an if statement, if that command is missing, it is interpreted as a "no". An error message of the form "[[: command not found" is logged, but that is easy to overlook in the large output of the build process. To fix this message, decide whether this file is necessary for the package to build. Then choose any of these variants: 1. Add a patch for the file (see https://www.netbsd.org/docs/pkgsrc/pkgsrc.html#components.patches) 2. Add a SUBST block for the file to the package Makefile (see mk/subst.mk) 3. Add CHECK_PORTABILITY_SKIP+= shell/glob to the package Makefile (see mk/check/check-portability.mk) files/testdata/Makefile.am:8:5: double brackets: if [[ ${COND} ]] || [[ $(COND) ]]; then :; fi files/testdata/double-brackets:8:4: double brackets: if [[ test ]]; then files/testdata/double-brackets:10:1: double brackets: [[ test ]] files/testdata/double-brackets:12:1: double brackets: [[ test ]] || echo files/testdata/env-sh:8:5: found test ... == ...: [ a == b ] The "test" command, as well as the "[" command, are not required to know the "==" operator. Only a few implementations like bash and some versions of ksh support it. When you run "test foo == foo" on a platform that does not support the "==" operator, the result will be "false" instead of "true". This can lead to unexpected behavior. files/testdata/random:7:1: $RANDOM: $RANDOM The variable $RANDOM is not required for a POSIX-conforming shell, and many implementations of /bin/sh do not support it. It should therefore not be used in shell programs that are meant to be portable across a large number of POSIX-like systems. files/testdata/test-eqeq:7:8: found test ... == ...: test a == b # bad files/testdata/test-eqeq:10:5: found test ... == ...: [ a == b ] # bad files/testdata/test-eqeq:14:5: found test ... == ...: [ a == b -a c == d ]