summaryrefslogtreecommitdiff
path: root/mk/check/check-portability.awk
diff options
context:
space:
mode:
authorrillig <rillig@pkgsrc.org>2020-03-13 08:04:08 +0000
committerrillig <rillig@pkgsrc.org>2020-03-13 08:04:08 +0000
commitabc339854d734519b6ea7528a062a89f9e163ec1 (patch)
tree9ec7efebdf6e205dcd0195a3c4d9c541daaaa5de /mk/check/check-portability.awk
parentf63e49bce39d9a92350ef7751f9671527a025947 (diff)
downloadpkgsrc-abc339854d734519b6ea7528a062a89f9e163ec1.tar.gz
mk/check/check-perms: allow packages to skip the check completely
When all files are skipped, the tool dependency is not added as well. This allows packages to skip the check without defining the user-settable variable CHECK_PERMS.
Diffstat (limited to 'mk/check/check-portability.awk')
-rw-r--r--mk/check/check-portability.awk89
1 files changed, 0 insertions, 89 deletions
diff --git a/mk/check/check-portability.awk b/mk/check/check-portability.awk
deleted file mode 100644
index 277f0e67388..00000000000
--- a/mk/check/check-portability.awk
+++ /dev/null
@@ -1,89 +0,0 @@
-# $NetBSD: check-portability.awk,v 1.9 2016/02/24 08:54:23 jklos Exp $
-#
-# Checks a shell file for possible portability problems.
-#
-# ENVIRONMENT
-# (See check-subr.awk)
-#
-
-BEGIN {
- found_random = no;
- found_test_eqeq = no;
-}
-
-# Check for $RANDOM, which is specific to ksh and bash.
-function check_random(line) {
-
- # $RANDOM together with the PID is often found in GNU-style
- # configure scripts and is considered acceptable.
- if (line ~ /\$\$-\$RANDOM/ || line ~ /\$RANDOM-\$\$/) {
- # Assume that this is ok.
-
- } else if (line ~ /\$RANDOM[A-Z_]+/) {
- # That's ok, too.
-
- } else if (line ~ /\$RANDOM/) {
- found_random = yes;
- cs_warning_heading("Found $RANDOM:");
- cs_warning_msg(cs_fname ": " $0);
- }
-}
-
-function check_test_eqeq(line, n, word, i) {
-
- if (length(line) == 0)
- return;
- n = split(line, word);
- for (i = 3; i < n; i++) {
- if (word[i] == "==") {
- if (word[i-2] == "test" || word[i-2] == "[") {
- found_test_eqeq = yes;
- cs_error_heading("Found test ... == ...:");
- cs_error_msg(cs_fname ": " $0);
- }
- }
- }
-}
-
-/./ {
- # Note: This code does not find _all_ instances of
- # unportable code. If a single line contains an unsafe and
- # a safe usage of $RANDOM, it will pass the test.
-
- # Strip comments
- line = $0;
- gsub(/^#.*/, "", line);
- gsub(/[[:space:]]#.*/, "", line);
-
- check_random(line);
- check_test_eqeq(line);
-}
-
-END {
- if (found_random) {
- h = "The variable $RANDOM is not required for a POSIX-conforming shell, and\n";
- h = h "many implementations of /bin/sh do not support it. It should therefore\n";
- h = h "not be used in shell programs that are meant to be portable across a\n";
- h = h "large number of POSIX-like systems.\n"
- cs_explain(h);
- }
-
- if (found_test_eqeq) {
- h = "The \"test\" command, as well as the \"[\" command, are not required to know\n";
- h = h "the \"==\" operator. Only a few implementations like bash and some\n";
- h = h "versions of ksh support it.\n";
- h = h "\n";
- h = h "When you run \"test foo == foo\" on a platform that does not support the\n";
- h = h "\"==\" operator, the result will be \"false\" instead of \"true\". This can\n";
- h = h "lead to unexpected behavior.\n";
- h = h "\n";
- h = h "There are two ways to fix this error message. If the file that contains\n";
- h = h "the \"test ==\" is needed for building the package, you should create a\n";
- h = h "patch for it, replacing the \"==\" operator with \"=\". If the file is not\n";
- h = h "needed, add its name to the CHECK_PORTABILITY_SKIP variable in the\n";
- h = h "package Makefile.\n";
- cs_explain(h);
- }
-
- cs_exit();
-}