From 85b1492555d765b14864e0d2d59db7a50cdccaf0 Mon Sep 17 00:00:00 2001 From: Guillaume Lambert Date: Fri, 12 Mar 2021 13:53:18 +0100 Subject: [PATCH] [COMMON] Enforce checkbashisms tox profile - add checkbahims to tox.ini default profiles - remove -f options to unforce bashisms detection in explicit bash scripts and to differentiate treatments between bash and sh - migrate #!/bin/bash shebangs to #!/bin/sh for scripts without bashisms The following scripts have not been migrated since they still use bashisms difficult to migrate (mostly arrays - more details below) ./kubernetes/common/mariadb-init/resources/config/db_init.sh ./kubernetes/portal/components/portal-mariadb/resources/config/ \ mariadb/docker-entrypoint.sh ./kubernetes/helm/plugins/deploy/deploy.sh ./kubernetes/helm/plugins/undeploy/undeploy.sh ./kubernetes/sdnc/components/sdnc-prom/resources/bin/ensureSdncActive.sh $ find . -not -path '*/\.*' -name *.sh -exec checkbashisms -f {} + 2>&1\ | grep line | cut -d' ' -f 7- | sort | uniq -c | sort -k1,1nr 18 (bash arrays, ${name[0|*|@]}): 2 (declare): 1 ($FUNCNAME): 1 (shopt): 1 (trap with ERR|DEBUG|RETURN): https://mywiki.wooledge.org/Bashism#Arrays https://mywiki.wooledge.org/Bashism#Special_Variables https://mywiki.wooledge.org/Bashism#Builtins https://www.oilshell.org/release/0.5.alpha2/test/spec.wwz/builtin-trap.html Issue-ID: OOM-2643 Signed-off-by: Guillaume Lambert Change-Id: Id06ad1d45004321a293bdd26038d8da5f7b6b4ac --- docs/slave_nfs_node.sh | 2 +- .../resources/config/appc/opt/onap/appc/bin/health_check.sh | 3 ++- .../resources/config/appc/opt/onap/appc/bin/startODL.sh | 4 ++-- .../config/appc/opt/onap/ccsdk/bin/installSdncDb.sh | 3 ++- .../common/cassandra/resources/config/docker-entrypoint.sh | 2 +- kubernetes/common/music/resources/config/startup.sh | 4 ++-- kubernetes/common/timescaledb/resources/init/init-schema.sh | 2 +- kubernetes/config/prepull_docker.sh | 2 +- .../contrib/components/ejbca/resources/ejbca-config.sh | 2 +- .../dns-server-for-vhost-ingress-testing/deploy_dns.sh | 5 +++-- .../metallb-loadbalancer-inst/install-metallb-on-cluster.sh | 6 ++++-- kubernetes/contrib/tools/check-for-staging-images.sh | 2 +- kubernetes/contrib/tools/rke/rke_setup.sh | 3 ++- .../components/msb-consul/resources/docker-entrypoint.sh | 13 ++++--------- .../oof/components/oof-has/resources/config/healthy.sh | 2 +- kubernetes/robot/demo-k8s.sh | 3 ++- kubernetes/robot/ete-k8s.sh | 2 +- kubernetes/robot/eteHelm-k8s.sh | 2 +- kubernetes/robot/instantiate-k8s.sh | 2 +- kubernetes/robot/scripts/etescript/hvves-etescript.sh | 2 +- kubernetes/robot/scripts/etescript/security-etescript.sh | 2 +- kubernetes/robot/scripts/etescript/vnfsdk-etescript.sh | 2 +- kubernetes/sdnc/components/sdnc-prom/resources/bin/prom.sh | 4 ++-- kubernetes/sdnc/resources/config/bin/installSdncDb.sh | 4 ++-- tox.ini | 3 ++- 25 files changed, 42 insertions(+), 39 deletions(-) diff --git a/docs/slave_nfs_node.sh b/docs/slave_nfs_node.sh index fb2e230b7a..1035ff5ad6 100644 --- a/docs/slave_nfs_node.sh +++ b/docs/slave_nfs_node.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh usage () { echo "Usage:" diff --git a/kubernetes/appc/resources/config/appc/opt/onap/appc/bin/health_check.sh b/kubernetes/appc/resources/config/appc/opt/onap/appc/bin/health_check.sh index f2675b0404..424074aa8c 100755 --- a/kubernetes/appc/resources/config/appc/opt/onap/appc/bin/health_check.sh +++ b/kubernetes/appc/resources/config/appc/opt/onap/appc/bin/health_check.sh @@ -1,4 +1,5 @@ -#!/bin/bash -x +#!/bin/sh -x + {{/* # Copyright © 2018 AT&T, Amdocs, Bell Canada Intellectual Property. All rights reserved. # diff --git a/kubernetes/appc/resources/config/appc/opt/onap/appc/bin/startODL.sh b/kubernetes/appc/resources/config/appc/opt/onap/appc/bin/startODL.sh index 97df772ba7..789f1b38a1 100755 --- a/kubernetes/appc/resources/config/appc/opt/onap/appc/bin/startODL.sh +++ b/kubernetes/appc/resources/config/appc/opt/onap/appc/bin/startODL.sh @@ -1,6 +1,6 @@ -#!/bin/bash -x -{{/* +#!/bin/sh -x +{{/* ### # ============LICENSE_START======================================================= # APPC diff --git a/kubernetes/appc/resources/config/appc/opt/onap/ccsdk/bin/installSdncDb.sh b/kubernetes/appc/resources/config/appc/opt/onap/ccsdk/bin/installSdncDb.sh index 29761a0200..7257d186e6 100755 --- a/kubernetes/appc/resources/config/appc/opt/onap/ccsdk/bin/installSdncDb.sh +++ b/kubernetes/appc/resources/config/appc/opt/onap/ccsdk/bin/installSdncDb.sh @@ -1,4 +1,5 @@ -#!/bin/bash +#!/bin/sh + {{/* ### diff --git a/kubernetes/common/cassandra/resources/config/docker-entrypoint.sh b/kubernetes/common/cassandra/resources/config/docker-entrypoint.sh index 2d30f2e068..4dcebc8883 100644 --- a/kubernetes/common/cassandra/resources/config/docker-entrypoint.sh +++ b/kubernetes/common/cassandra/resources/config/docker-entrypoint.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh set -e diff --git a/kubernetes/common/music/resources/config/startup.sh b/kubernetes/common/music/resources/config/startup.sh index e3cee36f1f..eb84b084d0 100755 --- a/kubernetes/common/music/resources/config/startup.sh +++ b/kubernetes/common/music/resources/config/startup.sh @@ -1,6 +1,6 @@ -#!/bin/bash +#!/bin/sh + {{/* -# # ============LICENSE_START========================================== # org.onap.music # =================================================================== diff --git a/kubernetes/common/timescaledb/resources/init/init-schema.sh b/kubernetes/common/timescaledb/resources/init/init-schema.sh index ab83cffae2..9cc0f5ff9f 100644 --- a/kubernetes/common/timescaledb/resources/init/init-schema.sh +++ b/kubernetes/common/timescaledb/resources/init/init-schema.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # ============LICENSE_START======================================================= # Copyright (c) 2021 Bell Canada. diff --git a/kubernetes/config/prepull_docker.sh b/kubernetes/config/prepull_docker.sh index 54d7a2d7ff..596ace6ad5 100755 --- a/kubernetes/config/prepull_docker.sh +++ b/kubernetes/config/prepull_docker.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh #function to provide help #desc: this function provide help menu diff --git a/kubernetes/contrib/components/ejbca/resources/ejbca-config.sh b/kubernetes/contrib/components/ejbca/resources/ejbca-config.sh index 2c672e2f07..94c95d6c30 100755 --- a/kubernetes/contrib/components/ejbca/resources/ejbca-config.sh +++ b/kubernetes/contrib/components/ejbca/resources/ejbca-config.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh waitForEjbcaToStart() { until $(curl -kI https://localhost:8443/ejbca/publicweb/healthcheck/ejbcahealth --output /dev/null --silent --head --fail) diff --git a/kubernetes/contrib/dns-server-for-vhost-ingress-testing/deploy_dns.sh b/kubernetes/contrib/dns-server-for-vhost-ingress-testing/deploy_dns.sh index 7e9077d972..3c66feeb46 100755 --- a/kubernetes/contrib/dns-server-for-vhost-ingress-testing/deploy_dns.sh +++ b/kubernetes/contrib/dns-server-for-vhost-ingress-testing/deploy_dns.sh @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/sh -e # Copyright 2020 Samsung Electronics Co., Ltd. # @@ -33,7 +33,8 @@ $0 --info Display howto configure target machine } -target_machine_notice_info() { +target_machine_notice_info() +{ cat << ==infodeploy Extra DNS server already deployed: 1. You can add the DNS server to the target machine using following commands: diff --git a/kubernetes/contrib/metallb-loadbalancer-inst/install-metallb-on-cluster.sh b/kubernetes/contrib/metallb-loadbalancer-inst/install-metallb-on-cluster.sh index ce5a19ba25..c62e2a51bd 100755 --- a/kubernetes/contrib/metallb-loadbalancer-inst/install-metallb-on-cluster.sh +++ b/kubernetes/contrib/metallb-loadbalancer-inst/install-metallb-on-cluster.sh @@ -1,4 +1,5 @@ -#!/bin/bash -e +#!/bin/sh -e + # # Copyright 2020 Samsung Electronics Co., Ltd. # @@ -15,7 +16,8 @@ # limitations under the License. # -usage() { +usage() +{ cat << ==usage $0 Automatic configuration using external addresess from nodes $0 --help This message diff --git a/kubernetes/contrib/tools/check-for-staging-images.sh b/kubernetes/contrib/tools/check-for-staging-images.sh index 543e918cfa..9705ee6ea8 100755 --- a/kubernetes/contrib/tools/check-for-staging-images.sh +++ b/kubernetes/contrib/tools/check-for-staging-images.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright © 2020 Samsung Electronics # diff --git a/kubernetes/contrib/tools/rke/rke_setup.sh b/kubernetes/contrib/tools/rke/rke_setup.sh index 2ee123b36a..a8938a96ee 100755 --- a/kubernetes/contrib/tools/rke/rke_setup.sh +++ b/kubernetes/contrib/tools/rke/rke_setup.sh @@ -1,4 +1,5 @@ -#!/bin/bash +#!/bin/sh + ############################################################################# # Copyright © 2019 Bell. # diff --git a/kubernetes/msb/components/msb-consul/resources/docker-entrypoint.sh b/kubernetes/msb/components/msb-consul/resources/docker-entrypoint.sh index 2b42402102..18692d8afa 100755 --- a/kubernetes/msb/components/msb-consul/resources/docker-entrypoint.sh +++ b/kubernetes/msb/components/msb-consul/resources/docker-entrypoint.sh @@ -1,16 +1,11 @@ +#!/bin/sh + #!/usr/bin/dumb-init /bin/sh +# As of docker 1.13, using docker run --init achieves the same outcome than dumb-init. + set -e set -x -# Note above that we run dumb-init as PID 1 in order to reap zombie processes -# as well as forward signals to all processes in its session. Normally, sh -# wouldn't do either of these functions so we'd leak zombies as well as do -# unclean termination of all our sub-processes. -# As of docker 1.13, using docker run --init achieves the same outcome. - -# You can set CONSUL_BIND_INTERFACE to the name of the interface you'd like to -# bind to and this will look up the IP and pass the proper -bind= option along -# to Consul. CONSUL_BIND= if [ -n "$CONSUL_BIND_INTERFACE" ]; then CONSUL_BIND_ADDRESS=$(ip -o -4 addr list $CONSUL_BIND_INTERFACE | head -n1 | awk '{print $4}' | cut -d/ -f1) diff --git a/kubernetes/oof/components/oof-has/resources/config/healthy.sh b/kubernetes/oof/components/oof-has/resources/config/healthy.sh index 21296ff22a..5495e4271b 100755 --- a/kubernetes/oof/components/oof-has/resources/config/healthy.sh +++ b/kubernetes/oof/components/oof-has/resources/config/healthy.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh {{/* # Copyright © 2017 Amdocs, Bell Canada diff --git a/kubernetes/robot/demo-k8s.sh b/kubernetes/robot/demo-k8s.sh index 37631bc673..439390525f 100755 --- a/kubernetes/robot/demo-k8s.sh +++ b/kubernetes/robot/demo-k8s.sh @@ -1,4 +1,5 @@ -#!/bin/bash +#!/bin/sh + # Copyright (C) 2018 Amdocs, Bell Canada # Modifications Copyright (C) 2019 Samsung # Modifications Copyright (C) 2020 Nokia diff --git a/kubernetes/robot/ete-k8s.sh b/kubernetes/robot/ete-k8s.sh index 01cf0922fa..4ef8f462f0 100755 --- a/kubernetes/robot/ete-k8s.sh +++ b/kubernetes/robot/ete-k8s.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright © 2018 Amdocs, Bell Canada # diff --git a/kubernetes/robot/eteHelm-k8s.sh b/kubernetes/robot/eteHelm-k8s.sh index 8b74da77f8..1b31c16e81 100755 --- a/kubernetes/robot/eteHelm-k8s.sh +++ b/kubernetes/robot/eteHelm-k8s.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright (c) 2017 AT&T Intellectual Property. All rights reserved. # diff --git a/kubernetes/robot/instantiate-k8s.sh b/kubernetes/robot/instantiate-k8s.sh index 623870b9f3..aef812b143 100755 --- a/kubernetes/robot/instantiate-k8s.sh +++ b/kubernetes/robot/instantiate-k8s.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright 2019 AT&T Intellectual Property. All rights reserved. # diff --git a/kubernetes/robot/scripts/etescript/hvves-etescript.sh b/kubernetes/robot/scripts/etescript/hvves-etescript.sh index eb04e07fa1..16fec57b15 100755 --- a/kubernetes/robot/scripts/etescript/hvves-etescript.sh +++ b/kubernetes/robot/scripts/etescript/hvves-etescript.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright © 2019 Nokia # diff --git a/kubernetes/robot/scripts/etescript/security-etescript.sh b/kubernetes/robot/scripts/etescript/security-etescript.sh index bf51329431..a114cf59ea 100755 --- a/kubernetes/robot/scripts/etescript/security-etescript.sh +++ b/kubernetes/robot/scripts/etescript/security-etescript.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/bin/sh # Copyright 2019 Samsung Electronics Co., Ltd. # diff --git a/kubernetes/robot/scripts/etescript/vnfsdk-etescript.sh b/kubernetes/robot/scripts/etescript/vnfsdk-etescript.sh index a93f109085..e23e5ed83b 100755 --- a/kubernetes/robot/scripts/etescript/vnfsdk-etescript.sh +++ b/kubernetes/robot/scripts/etescript/vnfsdk-etescript.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # SPDX-License-Identifier: Apache-2.0 diff --git a/kubernetes/sdnc/components/sdnc-prom/resources/bin/prom.sh b/kubernetes/sdnc/components/sdnc-prom/resources/bin/prom.sh index fa76a9ee40..6d7ada618d 100755 --- a/kubernetes/sdnc/components/sdnc-prom/resources/bin/prom.sh +++ b/kubernetes/sdnc/components/sdnc-prom/resources/bin/prom.sh @@ -1,6 +1,6 @@ -#!/bin/bash -{{/* +#!/bin/sh +{{/* # Copyright © 2018 Amdocs # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/kubernetes/sdnc/resources/config/bin/installSdncDb.sh b/kubernetes/sdnc/resources/config/bin/installSdncDb.sh index 3c08dd6c01..2406a48c37 100755 --- a/kubernetes/sdnc/resources/config/bin/installSdncDb.sh +++ b/kubernetes/sdnc/resources/config/bin/installSdncDb.sh @@ -1,6 +1,6 @@ -#!/bin/bash -{{/* +#!/bin/sh +{{/* ### # ============LICENSE_START======================================================= # ONAP : SDN-C diff --git a/tox.ini b/tox.ini index 01e9953617..7339601b92 100644 --- a/tox.ini +++ b/tox.ini @@ -4,6 +4,7 @@ envlist = docs, docs-linkcheck, gitlint, + checkbashisms, skipsdist=true [doc8] @@ -52,7 +53,7 @@ commands = sh -c 'which checkbashisms>/dev/null || sudo yum install devscripts-minimal || sudo apt-get install devscripts \ || (echo "checkbashisms command not found - please install it (e.g. sudo apt-get install devscripts | \ yum install devscripts-minimal )" >&2 && exit 1)' - find . -not -path '*/\.*' -name *.sh -exec checkbashisms -f \{\} + + find . -not -path '*/\.*' -name *.sh -exec checkbashisms \{\} + [testenv:autopep8] deps = autopep8 -- 2.16.6