f6deb3493d
The test container is failing to execute ping on environments that do not allow containers to run as root user (e.g. OpenShift 4.6). This commit fixes the issue by ensuring iputils package from Alpine is installed. Also, it upgrades packages versions. Change-Id: I1f429110c888103734ce6657fea729529389eb1f
118 lines
2.8 KiB
Bash
Executable File
118 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Names of latest versions of each package
|
|
export VERSION_MUSL=musl-1.2.0
|
|
export VERSION_ZLIB=zlib-1.2.11
|
|
export VERSION_LIBRESSL=libressl-3.2.1
|
|
export VERSION_CURL=curl-7.72.0
|
|
|
|
# URLs to the source directories
|
|
export SOURCE_MUSL=http://www.musl-libc.org/releases/
|
|
export SOURCE_LIBRESSL=http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/
|
|
export SOURCE_CURL=https://curl.haxx.se/download/
|
|
export SOURCE_ZLIB=http://zlib.net/
|
|
|
|
# Path to local build
|
|
export BUILD_DIR=/tmp/curl-static-libressl/build
|
|
# Path for libressl
|
|
export STATICLIBSSL="${BUILD_DIR}/${VERSION_LIBRESSL}"
|
|
|
|
function setup() {
|
|
# create and clean build directory
|
|
mkdir -p ${BUILD_DIR}
|
|
rm -Rf ${BUILD_DIR}/*
|
|
# install build environment tools
|
|
apk add linux-headers perl
|
|
}
|
|
|
|
function download_sources() {
|
|
# todo: verify checksum / integrity of downloads!
|
|
echo "Download sources"
|
|
|
|
pushd ${BUILD_DIR}
|
|
|
|
curl -sSLO "${SOURCE_MUSL}${VERSION_MUSL}.tar.gz"
|
|
curl -sSLO "${SOURCE_ZLIB}${VERSION_ZLIB}.tar.gz"
|
|
curl -sSLO "${SOURCE_LIBRESSL}${VERSION_LIBRESSL}.tar.gz"
|
|
curl -sSLO "${SOURCE_CURL}${VERSION_CURL}.tar.gz"
|
|
|
|
popd
|
|
}
|
|
|
|
function extract_sources() {
|
|
echo "Extracting sources"
|
|
|
|
pushd ${BUILD_DIR}
|
|
|
|
tar -xf "${VERSION_MUSL}.tar.gz"
|
|
tar -xf "${VERSION_LIBRESSL}.tar.gz"
|
|
tar -xf "${VERSION_CURL}.tar.gz"
|
|
tar -xf "${VERSION_ZLIB}.tar.gz"
|
|
|
|
popd
|
|
}
|
|
|
|
function compile_musl() {
|
|
echo "Configure & build static musl"
|
|
|
|
pushd "${BUILD_DIR}/${VERSION_MUSL}"
|
|
|
|
make clean
|
|
./configure --prefix=/usr/local --disable-shared
|
|
make -j4
|
|
make install
|
|
}
|
|
|
|
function compile_zlib() {
|
|
echo "Configure & build static zlib"
|
|
|
|
pushd "${BUILD_DIR}/${VERSION_ZLIB}"
|
|
|
|
make clean
|
|
./configure --static --prefix=/usr/local
|
|
make -j4
|
|
make install
|
|
}
|
|
|
|
function compile_libressl() {
|
|
echo "Configure & build static libressl"
|
|
|
|
pushd "${BUILD_DIR}/${VERSION_LIBRESSL}"
|
|
|
|
make clean
|
|
./configure --prefix=/usr/local --enable-shared=no
|
|
make -j4
|
|
make install
|
|
}
|
|
|
|
function compile_curl() {
|
|
echo "Configure & Build curl"
|
|
|
|
pushd "${BUILD_DIR}/${VERSION_CURL}"
|
|
|
|
make clean
|
|
|
|
LIBS="-ldl -lpthread" LDFLAGS="-static" CFLAGS="-no-pie" PKG_CONFIG_FLAGS="--static" PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ ./configure --disable-shared --enable-static
|
|
|
|
make -j4
|
|
make install
|
|
|
|
popd
|
|
}
|
|
|
|
echo "Building ${VERSION_CURL} with static ${VERSION_LIBRESSL}, and ${VERSION_ZLIB} ..."
|
|
|
|
setup && download_sources && extract_sources && compile_musl && compile_zlib && compile_libressl && compile_curl
|
|
|
|
retval=$?
|
|
echo ""
|
|
if [ $retval -eq 0 ]; then
|
|
echo "Your curl binary is located at ${BUILD_DIR}/${VERSION_CURL}/src/curl."
|
|
echo "Listing dynamically linked libraries ..."
|
|
ldd ${BUILD_DIR}/${VERSION_CURL}/src/curl
|
|
echo ""
|
|
${BUILD_DIR}/${VERSION_CURL}/src/curl --version
|
|
else
|
|
echo "Ooops, build failed. Check output!"
|
|
fi
|