diff --git a/imagefiles/build-and-install-curl.sh b/imagefiles/build-and-install-curl.sh index c015c05..4086bd4 100755 --- a/imagefiles/build-and-install-curl.sh +++ b/imagefiles/build-and-install-curl.sh @@ -2,8 +2,11 @@ set -ex -MY_DIR=$(dirname "${BASH_SOURCE[0]}") -source $MY_DIR/utils.sh +# Get script directory +SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}") + +# Get build utilities +source $SCRIPT_DIR/utils.sh # # Function 'do_curl_build' and 'build_curl' @@ -20,6 +23,7 @@ if [[ -z "${CURL_HASH}" ]]; then exit 1 fi +CURL_ROOT="${CURL_VERSION}" CURL_DOWNLOAD_URL=https://curl.haxx.se/download function do_curl_build { @@ -30,28 +34,16 @@ function do_curl_build { make install > /dev/null } - -function build_curl { - local curl_fname=$1 - check_var ${curl_fname} - local curl_sha256=$2 - check_var ${curl_sha256} - check_var ${CURL_DOWNLOAD_URL} - curl --connect-timeout 30 \ - --max-time 10 \ - --retry 5 \ - --retry-delay 10 \ - --retry-max-time 30 \ - -fsSLO ${CURL_DOWNLOAD_URL}/${curl_fname}.tar.gz - - check_sha256sum ${curl_fname}.tar.gz ${curl_sha256} - tar -zxf ${curl_fname}.tar.gz - (cd curl-*/ && do_curl_build) - rm -rf curl-* -} - cd /usr/src -build_curl "${CURL_VERSION}" "${CURL_HASH}" + +fetch_source "${CURL_ROOT}.tar.gz" "${CURL_DOWNLOAD_URL}" +check_sha256sum "${CURL_ROOT}.tar.gz" "${CURL_HASH}" + +tar -zxf "${CURL_ROOT}.tar.gz" +pushd "${CURL_ROOT}" +do_curl_build +popd +rm -rf "${CURL_ROOT}" "${CURL_ROOT}.tar.gz" (cat /etc/ld.so.conf.d/usr-local.conf 2> /dev/null | grep -q "^/usr/local/lib$") || echo '/usr/local/lib' >> /etc/ld.so.conf.d/usr-local.conf diff --git a/imagefiles/build-and-install-git.sh b/imagefiles/build-and-install-git.sh index 662dbe1..4d95f46 100755 --- a/imagefiles/build-and-install-git.sh +++ b/imagefiles/build-and-install-git.sh @@ -2,10 +2,12 @@ set -ex -if ! command -v curl &> /dev/null; then - echo >&2 'error: "curl" not found!' - exit 1 -fi +# Get script directory +SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}") + +# Get build utilities +source $SCRIPT_DIR/utils.sh + if ! command -v tar &> /dev/null; then echo >&2 'error: "tar" not found!' @@ -23,27 +25,20 @@ ldconfig cd /usr/src -url="https://mirrors.edge.kernel.org/pub/software/scm/git/git-${GIT_VERSION}.tar.gz" -echo "Downloading $url" -curl --connect-timeout 20 \ - --max-time 10 \ - --retry 5 \ - --retry-delay 10 \ - --retry-max-time 40 \ - -# -LO $url +GIT_ROOT="git-${GIT_VERSION}" +GIT_DOWNLOAD_URL="https://mirrors.edge.kernel.org/pub/software/scm/git" -tar xvzf "git-${GIT_VERSION}.tar.gz" --no-same-owner -rm -f "git-${GIT_VERSION}.tar.gz" +fetch_source "${GIT_ROOT}.tar.gz" "${GIT_DOWNLOAD_URL}" +tar xvzf "${GIT_ROOT}.tar.gz" --no-same-owner -pushd "git-${GIT_VERSION}" +pushd "${GIT_ROOT}" ./configure --prefix=/usr/local --with-curl make -j"$(nproc)" make install popd +rm -rf "${GIT_ROOT}" "${GIT_ROOT}.tar.gz" ldconfig -rm -rf "git-${GIT_VERSION}" - # turn the detached message off git config --global advice.detachedHead false diff --git a/imagefiles/build-and-install-ninja.sh b/imagefiles/build-and-install-ninja.sh index 64d3b68..a19a9f2 100755 --- a/imagefiles/build-and-install-ninja.sh +++ b/imagefiles/build-and-install-ninja.sh @@ -10,6 +10,12 @@ set -e set -o pipefail +# Get script directory +SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}") + +# Get build utilities +source $SCRIPT_DIR/utils.sh + PYTHON=python while [ $# -gt 0 ]; do case "$1" in @@ -31,25 +37,22 @@ if [[ -z "${NINJA_VERSION}" ]]; then fi # Download -url="https://github.com/ninja-build/ninja/archive/v${NINJA_VERSION}.tar.gz" +NINJA_DOWNLOAD_URL="https://github.com/ninja-build/ninja/archive/" +NINJA_ROOT="v${NINJA_VERSION}" -curl --connect-timeout 30 \ - --max-time 10 \ - --retry 5 \ - --retry-delay 10 \ - --retry-max-time 30 \ - -# -o ninja.tar.gz -LO "$url" +fetch_source "${NINJA_ROOT}.tar.gz" "${NINJA_DOWNLOAD_URL}" -mkdir ninja -tar -xzvf ./ninja.tar.gz --strip-components=1 -C ./ninja +# Since the archive name doesn't match the top-level directory, explicitly specify it. +mkdir -p "${NINJA_ROOT}" +tar xvzf "${NINJA_ROOT}.tar.gz" --strip-components=1 -C "${NINJA_ROOT}" # Configure, build and install -pushd ./ninja +pushd "${NINJA_ROOT}" echo "Configuring ninja using [$PYTHON]" $PYTHON ./configure.py --bootstrap && ./ninja cp ./ninja /usr/bin/ popd # Clean -rm -rf ./ninja* +rm -rf "${NINJA_ROOT}" "${NINJA_ROOT}.tar.gz" diff --git a/imagefiles/build-and-install-openssl.sh b/imagefiles/build-and-install-openssl.sh index 8df66c2..76e7e0b 100755 --- a/imagefiles/build-and-install-openssl.sh +++ b/imagefiles/build-and-install-openssl.sh @@ -39,8 +39,11 @@ while [ $# -gt 0 ]; do shift done -MY_DIR=$(dirname "${BASH_SOURCE[0]}") -source $MY_DIR/utils.sh +# Get script directory +SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}") + +# Get build utilities +source $SCRIPT_DIR/utils.sh # # Function 'do_openssl_build' and 'build_openssl' @@ -84,13 +87,8 @@ function build_perl { local perl_sha256=$2 check_var ${perl_sha256} check_var ${PERL_DOWNLOAD_URL} - curl --connect-timeout 30 \ - --max-time 10 \ - --retry 5 \ - --retry-delay 10 \ - --retry-max-time 30 \ - -fsSLO ${PERL_DOWNLOAD_URL}/${perl_fname}.tar.gz + fetch_source "${perl_fname}.tar.gz" "${PERL_DOWNLOAD_URL}" check_sha256sum ${perl_fname}.tar.gz ${perl_sha256} tar -xzf ${perl_fname}.tar.gz --no-same-owner (cd ${perl_fname} && do_perl_build) @@ -109,13 +107,8 @@ function build_openssl { local openssl_sha256=$2 check_var ${openssl_sha256} check_var ${OPENSSL_DOWNLOAD_URL} - curl --connect-timeout 30 \ - --max-time 10 \ - --retry 5 \ - --retry-delay 10 \ - --retry-max-time 30 \ - -fsSLO ${OPENSSL_DOWNLOAD_URL}/${openssl_fname}.tar.gz + fetch_source "${openssl_fname}.tar.gz" "${OPENSSL_DOWNLOAD_URL}" check_sha256sum ${openssl_fname}.tar.gz ${openssl_sha256} tar -xzf ${openssl_fname}.tar.gz (cd ${openssl_fname} && PATH=/opt/perl/bin:${PATH} do_openssl_build) diff --git a/imagefiles/install-cmake-binary.sh b/imagefiles/install-cmake-binary.sh index 35113d1..61fed0b 100755 --- a/imagefiles/install-cmake-binary.sh +++ b/imagefiles/install-cmake-binary.sh @@ -3,6 +3,12 @@ set -ex set -o pipefail +# Get script directory +SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}") + +# Get build utilities +source $SCRIPT_DIR/utils.sh + ARCH="x86_64" while [ $# -gt 0 ]; do @@ -18,11 +24,6 @@ while [ $# -gt 0 ]; do shift done -if ! command -v curl &> /dev/null; then - echo >&2 'error: "curl" not found!' - exit 1 -fi - if ! command -v tar &> /dev/null; then echo >&2 'error: "tar" not found!' exit 1 @@ -35,16 +36,12 @@ fi cd /usr/src -CMAKE_ROOT=cmake-${CMAKE_VERSION}-Centos5-${ARCH} -url=https://github.com/dockbuild/CMake/releases/download/v${CMAKE_VERSION}/${CMAKE_ROOT}.tar.gz -echo "Downloading $url" -curl --connect-timeout 30 \ - --max-time 10 \ - --retry 5 \ - --retry-delay 10 \ - --retry-max-time 30 \ - -# -LO $url +CMAKE_ROOT=cmake-${CMAKE_VERSION}-linux-${ARCH} +CMAKE_DOWNLOAD_URL=https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION} +echo "Downloading ${CMAKE_DOWNLOAD_URL}/${CMAKE_ROOT}.tar.gz" + +fetch_source "${CMAKE_ROOT}.tar.gz" "${CMAKE_DOWNLOAD_URL}" tar -xzvf "${CMAKE_ROOT}.tar.gz" rm -f "${CMAKE_ROOT}.tar.gz" diff --git a/imagefiles/utils.sh b/imagefiles/utils.sh index 52fa08e..a30c264 100644 --- a/imagefiles/utils.sh +++ b/imagefiles/utils.sh @@ -22,3 +22,20 @@ function check_sha256sum { rm -f ${fname}.sha256 } +function fetch_source { + if ! command -v curl &> /dev/null; then + echo >&2 'error: "curl" not found!' + exit 1 + fi + local file=$1 + check_var "${file}" + local url=$2 + check_var "${url}" + curl --fail \ + --location \ + --silent \ + --show-error \ + --connect-timeout 30 --max-time 10 \ + --retry 5 --retry-delay 10 --retry-max-time 30 \ + -o "${file}" ${url}/${file} +}