Skip to content

[manylinux2014] Split automake build in runtime_base image #968

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 6, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,15 @@ COPY manylinux-entrypoint /usr/local/bin/manylinux-entrypoint
ENTRYPOINT ["manylinux-entrypoint"]

COPY build_scripts/install-runtime-packages.sh /build_scripts/
RUN manylinux-entrypoint /build_scripts/install-runtime-packages.sh && rm /build_scripts/install-runtime-packages.sh

COPY build_scripts/build_utils.sh /build_scripts/
COPY build_scripts/build_env_runtime.sh /build_scripts/
RUN manylinux-entrypoint /build_scripts/install-runtime-packages.sh

COPY build_scripts/install-automake.sh /build_scripts/
RUN export AUTOMAKE_ROOT=automake-1.16.2 && \
export AUTOMAKE_HASH=b2f361094b410b4acbf4efba7337bdb786335ca09eb2518635a09fb7319ca5c1 && \
export AUTOMAKE_DOWNLOAD_URL=http://ftp.gnu.org/gnu/automake && \
manylinux-entrypoint /build_scripts/install-automake.sh

COPY build_scripts/install-libtool.sh /build_scripts/
RUN export LIBTOOL_ROOT=libtool-2.4.6 && \
Expand Down
6 changes: 0 additions & 6 deletions docker/build_scripts/build_env_runtime.sh

This file was deleted.

28 changes: 0 additions & 28 deletions docker/build_scripts/build_utils.sh
Original file line number Diff line number Diff line change
Expand Up @@ -117,31 +117,3 @@ function do_standard_install {
make -j$(nproc) > /dev/null
make -j$(nproc) install > /dev/null
}


function build_autoconf {
local autoconf_fname=$1
check_var ${autoconf_fname}
local autoconf_sha256=$2
check_var ${autoconf_sha256}
check_var ${AUTOCONF_DOWNLOAD_URL}
fetch_source ${autoconf_fname}.tar.gz ${AUTOCONF_DOWNLOAD_URL}
check_sha256sum ${autoconf_fname}.tar.gz ${autoconf_sha256}
tar -zxf ${autoconf_fname}.tar.gz
(cd ${autoconf_fname} && do_standard_install)
rm -rf ${autoconf_fname} ${autoconf_fname}.tar.gz
}


function build_automake {
local automake_fname=$1
check_var ${automake_fname}
local automake_sha256=$2
check_var ${automake_sha256}
check_var ${AUTOMAKE_DOWNLOAD_URL}
fetch_source ${automake_fname}.tar.gz ${AUTOMAKE_DOWNLOAD_URL}
check_sha256sum ${automake_fname}.tar.gz ${automake_sha256}
tar -zxf ${automake_fname}.tar.gz
(cd ${automake_fname} && do_standard_install)
rm -rf ${automake_fname} ${automake_fname}.tar.gz
}
38 changes: 38 additions & 0 deletions docker/build_scripts/install-automake.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/bin/bash
# Top-level build script called from Dockerfile

# Stop at any error, show all commands
set -exuo pipefail

# Get script directory
MY_DIR=$(dirname "${BASH_SOURCE[0]}")

# Get build utilities
source $MY_DIR/build_utils.sh

# Install newest automake
check_var ${AUTOMAKE_ROOT}
check_var ${AUTOMAKE_HASH}
check_var ${AUTOMAKE_DOWNLOAD_URL}

AUTOMAKE_VERSION=${AUTOMAKE_ROOT#*-}
if automake --version > /dev/null 2>&1; then
INSTALLED=$(automake --version | head -1 | awk '{ print $NF }')
SMALLEST=$(echo -e "${INSTALLED}\n${AUTOMAKE_VERSION}" | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | head -1)
if [ "${SMALLEST}" == "${AUTOMAKE_VERSION}" ]; then
echo "skipping installation of automake ${AUTOMAKE_VERSION}, system provides automake ${INSTALLED}"
exit 0
fi
fi

fetch_source ${AUTOMAKE_ROOT}.tar.gz ${AUTOMAKE_DOWNLOAD_URL}
check_sha256sum ${AUTOMAKE_ROOT}.tar.gz ${AUTOMAKE_HASH}
tar -zxf ${AUTOMAKE_ROOT}.tar.gz
pushd ${AUTOMAKE_ROOT}
do_standard_install
popd
rm -rf ${AUTOMAKE_ROOT} ${AUTOMAKE_ROOT}.tar.gz


hash -r
automake --version
13 changes: 0 additions & 13 deletions docker/build_scripts/install-runtime-packages.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,6 @@ set -exuo pipefail

# Set build environment variables
MY_DIR=$(dirname "${BASH_SOURCE[0]}")
source $MY_DIR/build_env_runtime.sh

# Get build utilities
source $MY_DIR/build_utils.sh

# Libraries that are allowed as part of the manylinux2014 profile
# Extract from PEP: https://www.python.org/dev/peps/pep-0599/#the-manylinux2014-policy
Expand Down Expand Up @@ -120,12 +116,3 @@ fi
if [ -d /usr/local/share/man ]; then
rm -rf /usr/local/share/man
fi


# Install newest automake
build_automake $AUTOMAKE_ROOT $AUTOMAKE_HASH
automake --version

# Strip what we can -- and ignore errors, because this just attempts to strip
# *everything*, including non-ELF files:
find /usr/local -type f -print0 | xargs -0 -n1 strip --strip-unneeded 2>/dev/null || true