From 601d68697c037bddd65ace56451df3deb868127e Mon Sep 17 00:00:00 2001 From: Bensuperpc Date: Fri, 6 Aug 2021 21:42:10 +0200 Subject: [PATCH] Update scripts and fix issues with shellcheck Update scripts and fix issues with shellcheck Signed-off-by: Bensuperpc --- Makefile | 2 +- imagefiles/build-and-install-cmake.sh | 10 ++++---- imagefiles/build-and-install-curl.sh | 2 +- imagefiles/build-and-install-git.sh | 4 +-- imagefiles/build-and-install-openssl.sh | 6 ++--- imagefiles/build-and-install-python.sh | 8 +++--- imagefiles/entrypoint.sh | 4 +-- imagefiles/install-cmake-binary.sh | 2 +- imagefiles/install-crosstool-ng-toolchain.sh | 2 +- imagefiles/install-gosu-binary.sh | 2 +- imagefiles/install-python-packages.sh | 9 +++++-- tools/container-diff.sh | 26 -------------------- tools/dockcross-builder.sh | 24 ++++++++++++++++++ tools/docker-container-diff.sh | 26 ++++++++++++++++++++ 14 files changed, 78 insertions(+), 49 deletions(-) delete mode 100755 tools/container-diff.sh create mode 100755 tools/dockcross-builder.sh create mode 100644 tools/docker-container-diff.sh diff --git a/Makefile b/Makefile index 4a2e0e5..ac93a0f 100644 --- a/Makefile +++ b/Makefile @@ -226,7 +226,7 @@ purge: clean # Check bash syntax bash-check: find . -type f \( -name "*.sh" -o -name "*.bash" \) -print0 | xargs -0 -P"$(shell nproc)" -I{} \ - $(SHELLCHECK) --check-sourced --color=auto --format=gcc --severity=error --shell=bash --enable=all "{}" + $(SHELLCHECK) --check-sourced --color=auto --format=gcc --severity=warning --shell=bash --enable=all "{}" # # testing implicit rule diff --git a/imagefiles/build-and-install-cmake.sh b/imagefiles/build-and-install-cmake.sh index adb4e7a..7a39fea 100755 --- a/imagefiles/build-and-install-cmake.sh +++ b/imagefiles/build-and-install-cmake.sh @@ -22,7 +22,7 @@ if ! command -v git &> /dev/null; then exit 1 fi -if [[ "${CMAKE_VERSION}" == "" ]]; then +if [[ -z "${CMAKE_VERSION}" ]]; then echo >&2 'error: CMAKE_VERSION env. variable must be set to a non-empty value' exit 1 fi @@ -35,9 +35,9 @@ mkdir /usr/src/CMake-build cd /usr/src/CMake-build ${WRAPPER} /usr/src/CMake/bootstrap \ - --parallel=$(nproc) \ + --parallel="$(nproc)" \ -- -DCMAKE_USE_OPENSSL=OFF -${WRAPPER} make -j$(nproc) +${WRAPPER} make -j"$(nproc)" mkdir /usr/src/CMake-ssl-build @@ -50,10 +50,10 @@ ${WRAPPER} /usr/src/CMake-build/bin/cmake \ -DCMAKE_USE_OPENSSL:BOOL=ON \ -DOPENSSL_ROOT_DIR:PATH=/usr/local/ssl \ ../CMake -${WRAPPER} make -j$(nproc) install +${WRAPPER} make -j"$(nproc)" install # Cleanup install tree -cd /usr/src/cmake-$CMAKE_VERSION +cd "/usr/src/cmake-$CMAKE_VERSION" rm -rf doc man # Install files diff --git a/imagefiles/build-and-install-curl.sh b/imagefiles/build-and-install-curl.sh index 54f14f9..e67248b 100755 --- a/imagefiles/build-and-install-curl.sh +++ b/imagefiles/build-and-install-curl.sh @@ -18,7 +18,7 @@ function do_curl_build { # We do this shared to avoid obnoxious linker issues where git couldn't # link properly. If anyone wants to make this build statically go for it. LIBS=-ldl CFLAGS=-Wl,--exclude-libs,ALL ./configure --with-ssl --disable-static > /dev/null - make -j$(nproc) > /dev/null + make -j"$(nproc)" > /dev/null make install > /dev/null } diff --git a/imagefiles/build-and-install-git.sh b/imagefiles/build-and-install-git.sh index b6237ef..976ab09 100755 --- a/imagefiles/build-and-install-git.sh +++ b/imagefiles/build-and-install-git.sh @@ -12,7 +12,7 @@ if ! command -v tar &> /dev/null; then exit 1 fi -if [[ "${GIT_VERSION}" == "" ]]; then +if [[ -z "${GIT_VERSION}" ]]; then echo >&2 'error: GIT_VERSION env. variable must be set to a non-empty value' exit 1 fi @@ -37,7 +37,7 @@ rm -f git-${GIT_VERSION}.tar.gz pushd git-${GIT_VERSION} ./configure --prefix=/usr/local --with-curl -make -j$(nproc) +make -j"$(nproc)" make install popd diff --git a/imagefiles/build-and-install-openssl.sh b/imagefiles/build-and-install-openssl.sh index cc5f7b8..60fd5ee 100755 --- a/imagefiles/build-and-install-openssl.sh +++ b/imagefiles/build-and-install-openssl.sh @@ -53,13 +53,13 @@ OPENSSL_HASH=892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5 OPENSSL_DOWNLOAD_URL=http://www.openssl.org/source/ # a recent enough perl is needed to build openssl -PERL_ROOT=perl-5.32.1 +PERL_ROOT=perl-5.32.2 PERL_HASH=03b693901cd8ae807231b1787798cf1f2e0b8a56218d07b7da44f784a7caeb2c PERL_DOWNLOAD_URL=https://www.cpan.org/src/5.0 function do_perl_build { ${WRAPPER} sh Configure -des -Dprefix=/opt/perl > /dev/null - ${WRAPPER} make -j$(nproc) > /dev/null + ${WRAPPER} make -j"$(nproc)" > /dev/null ${WRAPPER} make install > /dev/null } @@ -84,7 +84,7 @@ function build_perl { function do_openssl_build { ${WRAPPER} ./config no-shared -fPIC $CONFIG_FLAG --prefix=/usr/local/ssl --openssldir=/usr/local/ssl > /dev/null - ${WRAPPER} make -j$(nproc) > /dev/null + ${WRAPPER} make -j"$(nproc)" > /dev/null ${WRAPPER} make install_sw > /dev/null } diff --git a/imagefiles/build-and-install-python.sh b/imagefiles/build-and-install-python.sh index 887ac5a..6a48969 100755 --- a/imagefiles/build-and-install-python.sh +++ b/imagefiles/build-and-install-python.sh @@ -26,12 +26,12 @@ done # Download wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz -tar xvf Python-${PYTHON_VERSION}.tgz +tar xvf "Python-${PYTHON_VERSION}.tgz" # Configure, build and install -cd Python-${PYTHON_VERSION} +cd "Python-${PYTHON_VERSION}" # Disable --enable-shared --enable-optimizations --prefix=/usr/local/python-${PYTHON_VERSION} ./configure --with-ensurepip=install -make -j$(nproc) +make -j"$(nproc)" make install #altinstall ln -s /usr/local/bin/python3 /usr/local/bin/python @@ -39,4 +39,4 @@ ln -s /usr/local/bin/pip3 /usr/local/bin/pip # Clean cd .. -rm -rf Python-${PYTHON_VERSION} +rm -rf "Python-${PYTHON_VERSION}" diff --git a/imagefiles/entrypoint.sh b/imagefiles/entrypoint.sh index 6b24ac8..0897769 100755 --- a/imagefiles/entrypoint.sh +++ b/imagefiles/entrypoint.sh @@ -37,8 +37,8 @@ if [[ -n $BUILDER_UID ]] && [[ -n $BUILDER_GID ]]; then fi # Enable passwordless sudo capabilities for the user - chown root:$BUILDER_GID $(which gosu) - chmod +s $(which gosu); sync + chown root:$BUILDER_GID "$(which gosu)" + chmod +s "$(which gosu)"; sync # Execute project specific pre execution hook if [[ -e /work/.dockcross ]]; then diff --git a/imagefiles/install-cmake-binary.sh b/imagefiles/install-cmake-binary.sh index 2e9fb92..bb15adf 100755 --- a/imagefiles/install-cmake-binary.sh +++ b/imagefiles/install-cmake-binary.sh @@ -28,7 +28,7 @@ if ! command -v tar &> /dev/null; then exit 1 fi -if [[ "${CMAKE_VERSION}" == "" ]]; then +if [[ -z "${CMAKE_VERSION}" ]]; then echo >&2 'error: CMAKE_VERSION env. variable must be set to a non-empty value' exit 1 fi diff --git a/imagefiles/install-crosstool-ng-toolchain.sh b/imagefiles/install-crosstool-ng-toolchain.sh index 098fe42..0e21584 100755 --- a/imagefiles/install-crosstool-ng-toolchain.sh +++ b/imagefiles/install-crosstool-ng-toolchain.sh @@ -89,7 +89,7 @@ BOOTSTRAP_PREFIX="${CTNG}/prefix" ./bootstrap ./configure \ --prefix "${BOOTSTRAP_PREFIX}" -make -j$(nproc) +make -j"$(nproc)" make install ## diff --git a/imagefiles/install-gosu-binary.sh b/imagefiles/install-gosu-binary.sh index 2eb082e..599a0a0 100755 --- a/imagefiles/install-gosu-binary.sh +++ b/imagefiles/install-gosu-binary.sh @@ -14,7 +14,7 @@ if ! command -v gpg &> /dev/null; then fi GOSU_VERSION=1.12 -dpkgArch=$(if test $(uname -m) = "x86_64"; then echo amd64; else echo i386; fi) +dpkgArch=$(if test "$(uname -m)" = "x86_64"; then echo amd64; else echo i386; fi) url="https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-${dpkgArch}" url_key="https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-${dpkgArch}.asc" diff --git a/imagefiles/install-python-packages.sh b/imagefiles/install-python-packages.sh index 2c7b3e0..eaa149e 100755 --- a/imagefiles/install-python-packages.sh +++ b/imagefiles/install-python-packages.sh @@ -22,8 +22,13 @@ cd /tmp # Todo: Need to update base image from Debian Stretch for the required Python # 3.6 or later -curl -# -LO https://bootstrap.pypa.io/pip/get-pip.py -#curl -# -LO https://bootstrap.pypa.io/pip/2.7/get-pip.py +curl --connect-timeout 30 \ + --max-time 10 \ + --retry 5 \ + --retry-delay 10 \ + --retry-max-time 30 \ + -# -LO https://bootstrap.pypa.io/pip/get-pip.py + ${PYTHON} get-pip.py --ignore-installed rm get-pip.py diff --git a/tools/container-diff.sh b/tools/container-diff.sh deleted file mode 100755 index d4c860d..0000000 --- a/tools/container-diff.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -set -euo pipefail - -# More info: https://github.com/GoogleContainerTools/container-diff - -if (( $# < 1 || $# > 2 )); then - echo "Need 1 or 2 arguments: " - exit 1 -fi - -if (( $# == 1 )); then - container-diff analyze $1 --type=history 2>&1 | tee -a analyze-history.txt - container-diff analyze $1 --type=file 2>&1 | tee -a analyze-file.txt - container-diff analyze $1 --type=size 2>&1 | tee -a analyze-size.txt - container-diff analyze $1 --type=apt 2>&1 | tee -a analyze-apt.txt - container-diff analyze $1 --type=pip 2>&1 | tee -a analyze-pip.txt - -fi - -if (( $# == 2 )); then - container-diff diff $1 $2 --type=history 2>&1 | tee -a diff-history.txt - container-diff diff $1 $2 --type=file 2>&1 | tee -a diff-file.txt - container-diff diff $1 $2 --type=size 2>&1 | tee -a diff-size.txt - container-diff diff $1 $2 --type=apt 2>&1 | tee -a diff-apt.txt - container-diff diff $1 $2 --type=pip 2>&1 | tee -a diff-pip.txt -fi diff --git a/tools/dockcross-builder.sh b/tools/dockcross-builder.sh new file mode 100755 index 0000000..2921388 --- /dev/null +++ b/tools/dockcross-builder.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +if (( $# >= 1 )); then + image=$1 + build_file=build-${image%:*} + shift 1 + + cmake_arg=$* + echo "cmake arg: $cmake_arg" + + echo "Pulling dockcross/$image" + docker pull dockcross/"$image" + + echo "Make script dockcross-$image" + docker run --rm dockcross/"$image" > ./dockcross-"$image" + chmod +x ./dockcross-"$image" + + echo "Build $build_file" + ./dockcross-"$image" cmake -B "$build_file" -S . -G Ninja "$cmake_arg" + ./dockcross-"$image" ninja -C "$build_file" +else + echo "Usage: ${0##*/} " + exit 1 +fi diff --git a/tools/docker-container-diff.sh b/tools/docker-container-diff.sh new file mode 100644 index 0000000..4622991 --- /dev/null +++ b/tools/docker-container-diff.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +if (( $# < 1 || $# > 2 )); then + echo "Need 1 or 2 arguments: " + echo "For local image: daemon://" + echo "For remote image: remote://" + echo "More info: https://github.com/GoogleContainerTools/container-diff" + exit 1 +fi + +if (( $# == 1 )); then + container-diff analyze "$1" --type=history 2>&1 | tee -a analyze-history.txt + container-diff analyze "$1" --type=file 2>&1 | tee -a analyze-file.txt + container-diff analyze "$1" --type=size 2>&1 | tee -a analyze-size.txt + container-diff analyze "$1" --type=apt 2>&1 | tee -a analyze-apt.txt + container-diff analyze "$1" --type=pip 2>&1 | tee -a analyze-pip.txt + +fi + +if (( $# == 2 )); then + container-diff diff "$1" "$2" --type=history 2>&1 | tee -a diff-history.txt + container-diff diff "$1" "$2" --type=file 2>&1 | tee -a diff-file.txt + container-diff diff "$1" "$2" --type=size 2>&1 | tee -a diff-size.txt + container-diff diff "$1" "$2" --type=apt 2>&1 | tee -a diff-apt.txt + container-diff diff "$1" "$2" --type=pip 2>&1 | tee -a diff-pip.txt +fi